By default, the built in Photos sync job works as you describe. It essentially just has the "Backup" flag set (send, ignore remote deletes set on both ends). Even manually configuring that (send/no delete) in a job works fine for me.
I don't use that job because I like to use my computer to manage photos (all files really) on my phone. So I have numerous 2-way jobs, so I can move files around on my server, and those changes get reflected back to the phone. (There are a couple send-only jobs for other things).
My storage has a folder structure for users that reflects the folder structure on a phone:
Users//Phone
SD_Internal
SD_External
The sync jobs then keep those folders in sync in their respective phone structure. Makes it easier to manage a phone, especially when I switch phones, just export the config from the old phone, install ST, import the config, and my files all come back.
I also configure versioning on each folder based on what it does. Most folders have no versioning, important stuff gets a 30 day trash can (for example, on my "server", for photos).
I currently run SyncTrayzor on a Windows desktop that's always on, so any pics I take with my phone get synced nearly instantly. I'm currently moving ST to a Linux Container on a new Proxmox server. There's a container available from Turnkey (think it's turnkeylinux.org)