Replacement for Synology Photos/Photostation?

Currently reading
Replacement for Synology Photos/Photostation?

Looks like the UI is pretty configurable. Never bothered to look at geotagging (DSLR shooter here).
Looks like the UI is pretty configurable. Never bothered to look at geotagging (DSLR shooter here).
There are several apps that will geotag your DSLR photos for you. From what I understand, you open the phone app before shooting pics and take a photo of a barcode or something it displays. From then on the app takes timestamped geotags independently of your DSLR photos until you tell it to stop. When you get home, you run your photos through the apps desktop version where it pulls the timestamps off your photos, compares it to the timestamped geotag library from your phone, and then loads the corresponding geotag info into the exif data of your photos. So, you end up with geotagged photos without adding a gps to your camera. I haven't had the chance to play with these apps at all, but they look interesting.
I'm aware of the apps, just never found geotagging worth the effort, never thought they'd be more useful than the other tags I use. YMMV of course.
gotcha. I'm experimenting with photoprism. It is kind of cool to take a virtual tour of past trips based on the map, but you could probably accomplish the same thing with your tags. Personally I like having the map as a background as it gives reference to where a photo was taken without having to add a bunch of tags. I don't use it all the time but it is fun to take a virtual trip down memory lane sometimes.
gotcha. I'm experimenting with photoprism. ...
Do you have it installed in Docker? Which image did you use? Did it have some kind of how-to? I'm something of a docker noob. Got homeassistant installed & it seems to be working, but HA had a how-to for their container.
Yes, it is in docker. Below is my compose file. I'm very green to docker too, but have a BIL who works with it daily. He helped me set it up. We did have some big problems initially, but finally realized that we didn't have the firewall rules set up correctly on the NAS and now it works. replace all the XXXX's with your own data. They also do fairly frequent updates on github, so you might start there too.

version: '3.5'

# Example Docker Compose config file for PhotoPrism (Linux / AMD64)
# Documentation : PhotoPrism - Docker Compose
# Docker Hub URL: Docker Hub
# Please run behind a reverse proxy like Caddy, Traefik or Nginx if you need HTTPS / SSL support
# e.g. when running PhotoPrism on a public server outside your home network.
# ------------------------------------------------------------------
# ------------------------------------------------------------------
# Start | docker-compose up -d
# Stop | docker-compose stop
# Update | docker-compose pull
# Logs | docker-compose logs --tail=25 -f
# Terminal | docker-compose exec photoprism bash
# Help | docker-compose exec photoprism photoprism help
# Config | docker-compose exec photoprism photoprism config
# Reset | docker-compose exec photoprism photoprism reset
# Backup | docker-compose exec photoprism photoprism backup -a -i
# Restore | docker-compose exec photoprism photoprism restore -a -i
# Index | docker-compose exec photoprism photoprism index
# Reindex | docker-compose exec photoprism photoprism index -a
# Import | docker-compose exec photoprism photoprism import
# -------------------------------------------------------------------
# Note: All commands may have to be prefixed with "sudo" when not running as root.
# This will change the home directory "~" to "/root" in your configuration.

# Use photoprism/photoprism:preview instead for testing preview builds:
image: photoprism/photoprism:latest
# Only enable automatic restarts once your installation is properly
# configured as it otherwise may get stuck in a restart loop:
# PhotoPrism - FAQ
# restart: unless-stopped
- seccomp:unconfined
- apparmor:unconfined
- XXXXXX:2342 # [local port]:[container port]
PHOTOPRISM_ADMIN_PASSWORD: "XXXXX" # PLEASE CHANGE: Your initial admin password (min 4 characters)
PHOTOPRISM_HTTP_PORT: 2342 # Built-in Web server port
PHOTOPRISM_HTTP_COMPRESSION: "gzip" # Improves transfer speed and bandwidth utilization (none or gzip)
PHOTOPRISM_DEBUG: "false" # Run in debug mode (shows additional log messages)
PHOTOPRISM_PUBLIC: "false" # No authentication required (disables password protection)
PHOTOPRISM_READONLY: "false" # Don't modify originals directory (reduced functionality)
PHOTOPRISM_EXPERIMENTAL: "true" # Enables experimental features
PHOTOPRISM_DISABLE_WEBDAV: "false" # Disables built-in WebDAV server
PHOTOPRISM_DISABLE_SETTINGS: "false" # Disables Settings in Web UI
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # Disables using TensorFlow for image classification
PHOTOPRISM_DARKTABLE_PRESETS: "false" # Enables Darktable presets and disables concurrent RAW conversion
PHOTOPRISM_DETECT_NSFW: "false" # Flag photos as private that MAY be offensive (requires TensorFlow)
PHOTOPRISM_UPLOAD_NSFW: "true" # Allow uploads that MAY be offensive
#PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server
PHOTOPRISM_DATABASE_DRIVER: "mysql" # Use MariaDB (or MySQL) instead of SQLite for improved performance
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB database server (hostname:port)
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB database schema name
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB database user name
PHOTOPRISM_DATABASE_PASSWORD: "XXXXX" # MariaDB database user password
PHOTOPRISM_SITE_URL: "http://localhost:2342/" # Public PhotoPrism URL
# You may optionally set a user / group id using environment variables if your Docker version or NAS does not
# support this natively (see next example):
# UMASK: 0000
# Uncomment and edit the following line to set a specific user / group id (native):
# user: "XXXX:XXX"
# Yur photo and video files ([local path]:[container path]):
- "./Pictures:/photoprism/originals"
# Multiple folders can be indexed by mounting them as sub-folders of /photoprism/originals:
# - "/mnt/Family:/photoprism/originals/Family" # [folder_1]:/photoprism/originals/[folder_1]
# - "/mnt/Friends:/photoprism/originals/Friends" # [folder_2]:/photoprism/originals/[folder_2]
# Mounting an import folder is optional (see docs):
- "./Import:/photoprism/import"
# Permanent storage for settings, index & sidecar files (DON'T REMOVE):
# "./storage:/photoprism/storage"

image: mariadb:10.5
restart: unless-stopped
- seccomp:unconfined
- apparmor:unconfined
command: mysqld --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=50
volumes: # Don't remove permanent storage for index database files!
- "./database:/var/lib/mysql"
MYSQL_DATABASE: photoprism
MYSQL_USER: photoprism

# Uncomment the following lines to upgrade automatically, whenever there is a new Docker image available:
# watchtower:
# image: containrrr/watchtower
# restart: unless-stopped
# volumes:
# - "/var/run/docker.sock:/var/run/docker.sock"
I came across these two to add to the list. Didn’t try any:

I came across these two to add to the list. Didn’t try any:

I have tried Lychee. Not bad platform. Very minimalistic. Haven’t tried Chevereto
Tried a little bit with Lychee, too much work to setup in Docker for a newbie like myself. It seems to use some kind of custom folderstructure aswell which doesn't suit me.
Yes, it is in docker. Below is my compose file. [lots snipped]
Got it running (had some docker-config stuff bass-ackward).
Any idea if there's a way to disable raw-file conversion? Or a forum?
BTW, there's help available if you run photoprism --help
But you have to run docker container ls, then attach a terminal to that container, and finally run the --help command.
On the off chance anyone else is stuck on those steps, I'm pasting the output below - and no there doesn't seem to be a way to tell it to ignore raw files (sigh)

root@11d1dd226060:/photoprism# photoprism --help
   PhotoPrism - Browse Your Life in Pictures

   photoprism [global options] command [command options] [arguments...]


   start, up         Starts web server
   stop, down        Stops web server (only in daemon mode)
   index             Indexes media files in originals folder
   import, mv        Moves files to originals folder, converts and indexes them as needed
   moments           Creates albums based on popular locations, dates and labels
   optimize          Starts metadata check and optimization
   purge             Removes missing files from search results
   cleanup           Removes orphan index entries and thumbnails
   copy, cp          Copies files to originals folder, converts and indexes them as needed
   convert           Converts originals in other formats to JPEG and AVC sidecar files
   resample, thumbs  Pre-renders thumbnails (significantly reduces memory and cpu usage)
   migrate           Initializes the index database if needed
   backup            Creates album and index backups
   restore           Restores album and index backups
   reset             Resets the index and removes sidecar files after confirmation
   config            Displays global configuration values
   passwd            Changes the admin password
   version           Shows version information
   status            Performs a server health check
   help, h           Shows a list of commands or help for one command

   --debug                                  run in debug mode, shows additional log messages [$PHOTOPRISM_DEBUG]
   --public, -p                             no authentication required, disables password protection [$PHOTOPRISM_PUBLIC]
   --read-only, -r                          don't modify originals folder; disables import, upload, and delete [$PHOTOPRISM_READONLY]
   --experimental, -e                       enable experimental features [$PHOTOPRISM_EXPERIMENTAL]
   --admin-password PASSWORD                initial admin PASSWORD, min 4 characters [$PHOTOPRISM_ADMIN_PASSWORD]
   --config-file FILENAME, -c FILENAME      load initial config options from FILENAME [$PHOTOPRISM_CONFIG_FILE]
   --config-path PATH                       config PATH containing application settings [$PHOTOPRISM_CONFIG_PATH]
   --originals-path PATH                    originals PATH containing your photo and video collection [$PHOTOPRISM_ORIGINALS_PATH]
   --originals-limit MB                     file size limit for originals in MB (default: 1000) [$PHOTOPRISM_ORIGINALS_LIMIT]
   --import-path PATH                       optional PATH for importing files to originals [$PHOTOPRISM_IMPORT_PATH]
   --storage-path PATH                      storage PATH for cache, database and sidecar files [$PHOTOPRISM_STORAGE_PATH]
   --sidecar-path PATH                      relative or absolute storage PATH for sidecar files [$PHOTOPRISM_SIDECAR_PATH]
   --cache-path PATH                        cache storage PATH for sessions and thumbnails [$PHOTOPRISM_CACHE_PATH]
   --temp-path PATH                         temporary PATH for storing uploads and downloads [$PHOTOPRISM_TEMP_PATH]
   --backup-path PATH                       backup storage PATH [$PHOTOPRISM_BACKUP_PATH]
   --assets-path PATH                       assets PATH for static resources like models and templates [$PHOTOPRISM_ASSETS_PATH]
   --workers MAX, -w MAX                    adjusts MAX number of indexing workers (default: 2) [$PHOTOPRISM_WORKERS]
   --wakeup-interval SECONDS                background worker wakeup interval in SECONDS (default: 0) [$PHOTOPRISM_WAKEUP_INTERVAL]
   --auto-index SECONDS                     auto indexing safety delay in SECONDS (WebDAV) (default: 0) [$PHOTOPRISM_AUTO_INDEX]
   --auto-import SECONDS                    auto importing safety delay in SECONDS (WebDAV) (default: 0) [$PHOTOPRISM_AUTO_IMPORT]
   --disable-backups                        don't backup photo and album metadata to YAML files [$PHOTOPRISM_DISABLE_BACKUPS]
   --disable-webdav                         disable built-in WebDAV server [$PHOTOPRISM_DISABLE_WEBDAV]
   --disable-settings                       users can not view or change settings [$PHOTOPRISM_DISABLE_SETTINGS]
   --disable-places                         disables reverse geocoding and maps [$PHOTOPRISM_DISABLE_PLACES]
   --disable-exiftool                       don't create ExifTool JSON files for enhanced metadata extraction [$PHOTOPRISM_DISABLE_EXIFTOOL]
   --disable-tensorflow                     don't use TensorFlow for image classification [$PHOTOPRISM_DISABLE_TENSORFLOW]
   --detect-nsfw                            flag photos as private that may be offensive (requires TensorFlow) [$PHOTOPRISM_DETECT_NSFW]
   --upload-nsfw                            allow uploads that may be offensive [$PHOTOPRISM_UPLOAD_NSFW]
   --log-level value, -l value              trace, debug, info, warning, error, fatal or panic (default: "info") [$PHOTOPRISM_LOG_LEVEL]
   --log-filename FILENAME                  server log FILENAME [$PHOTOPRISM_LOG_FILENAME]
   --pid-filename FILENAME                  server process id FILENAME [$PHOTOPRISM_PID_FILENAME]
   --site-url URL                           public site URL (default: "http://localhost:2342/") [$PHOTOPRISM_SITE_URL]
   --site-preview URL                       public preview image URL [$PHOTOPRISM_SITE_PREVIEW]
   --site-title value                       site title (default: "PhotoPrism") [$PHOTOPRISM_SITE_TITLE]
   --site-caption value                     short site caption (default: "Browse Your Life") [$PHOTOPRISM_SITE_CAPTION]
   --site-description value                 long site description [$PHOTOPRISM_SITE_DESCRIPTION]
   --site-author value                      site artist or copyright [$PHOTOPRISM_SITE_AUTHOR]
   --http-port NUMBER                       http server port NUMBER (default: 2342) [$PHOTOPRISM_HTTP_PORT]
   --http-host IP                           http server IP address [$PHOTOPRISM_HTTP_HOST]
   --http-mode value, -m value              debug, release or test [$PHOTOPRISM_HTTP_MODE]
   --http-compression value, -z value       improves transfer speed and bandwidth utilization (none or gzip) [$PHOTOPRISM_HTTP_COMPRESSION]
   --database-driver NAME                   database driver NAME (sqlite or mysql) (default: "sqlite") [$PHOTOPRISM_DATABASE_DRIVER]
   --database-dsn DSN                       sqlite file name, specifying a DSN is optional for mariadb and mysql [$PHOTOPRISM_DATABASE_DSN]
   --database-server HOST                   database server HOST, specifying a :port is optional [$PHOTOPRISM_DATABASE_SERVER]
   --database-name NAME                     database schema NAME (default: "photoprism") [$PHOTOPRISM_DATABASE_NAME]
   --database-user NAME                     database user NAME (default: "photoprism") [$PHOTOPRISM_DATABASE_USER]
   --database-password PASSWORD             database user PASSWORD [$PHOTOPRISM_DATABASE_PASSWORD]
   --database-conns LIMIT                   LIMIT the number of open database connections (default: 0) [$PHOTOPRISM_DATABASE_CONNS]
   --database-conns-idle LIMIT              LIMIT the number of idle database connections (default: 0) [$PHOTOPRISM_DATABASE_CONNS_IDLE]
   --rawtherapee-bin COMMAND                RawTherapee CLI COMMAND for raw image conversion (default: "rawtherapee-cli") [$PHOTOPRISM_RAWTHERAPEE_BIN]
   --darktable-bin COMMAND                  Darktable CLI COMMAND for raw image conversion (default: "darktable-cli") [$PHOTOPRISM_DARKTABLE_BIN]
   --darktable-presets                      enables Darktable presets and disables concurrent RAW conversion [$PHOTOPRISM_DARKTABLE_PRESETS]
   --sips-bin COMMAND                       Scriptable Image Processing System COMMAND (default: "sips") [$PHOTOPRISM_SIPS_BIN]
   --heifconvert-bin COMMAND                HEIC/HEIF image convert COMMAND (default: "heif-convert") [$PHOTOPRISM_HEIFCONVERT_BIN]
   --ffmpeg-bin COMMAND                     FFmpeg COMMAND for video transcoding and cover images (default: "ffmpeg") [$PHOTOPRISM_FFMPEG_BIN]
   --ffmpeg-encoder NAME                    FFmpeg AVC encoder NAME (default: "libx264") [$PHOTOPRISM_FFMPEG_ENCODER]
   --ffmpeg-bitrate LIMIT                   FFmpeg encoding bitrate LIMIT in Mbit/s (default: 50) [$PHOTOPRISM_FFMPEG_BITRATE]
   --ffmpeg-buffers value                   FFmpeg capture buffers (default: 32) [$PHOTOPRISM_FFMPEG_BUFFERS]
   --exiftool-bin COMMAND                   ExifTool COMMAND for enhanced metadata extraction (default: "exiftool") [$PHOTOPRISM_EXIFTOOL_BIN]
   --download-token SECRET                  optional static SECRET url token for file downloads [$PHOTOPRISM_DOWNLOAD_TOKEN]
   --preview-token SECRET                   optional static SECRET url token for preview images and video streaming [$PHOTOPRISM_PREVIEW_TOKEN]
   --thumb-filter NAME, -f NAME             downscaling filter NAME (best to worst: blackman, lanczos, cubic, linear) (default: "lanczos") [$PHOTOPRISM_THUMB_FILTER]
   --thumb-size PIXELS, -s PIXELS           static thumbnail size limit in PIXELS (720-7680) (default: 2048) [$PHOTOPRISM_THUMB_SIZE]
   --thumb-uncached, -u                     enable dynamic thumbnail rendering (high memory and cpu usage) [$PHOTOPRISM_THUMB_UNCACHED]
   --thumb-size-uncached PIXELS, -x PIXELS  dynamic rendering size limit in PIXELS (720-7680) (default: 7680) [$PHOTOPRISM_THUMB_SIZE_UNCACHED]
   --jpeg-size PIXELS                       size limit for converted image files in PIXELS (720-30000) (default: 7680) [$PHOTOPRISM_JPEG_SIZE]
   --jpeg-quality value, -q value           > 90 for high-quality thumbnails (25-100) (default: 92) [$PHOTOPRISM_JPEG_QUALITY]
   --help, -h                               show help
   --version, -v                            print the version

   (c) 2018-2021 Michael Mayer <[email protected]>
If you're starting out with a very organized folder organization (top folders by year, ones below that named YYY.MM.DD - shoot details, below that, a folder for raw, then various JPG.resolution folders, plus TIFF ones for lossless panoramas, and...
PhotoPrism 'index' throws all that away. Just a bunch of folders named JPG.resolution or NEF.
I'm going to try 'import' instead - but it doesn't seem like this one is a replacement for PhotoShow.
Guess I got my hopes too far up. Sigh.
Bright side: I have a much better handle on docker-container and portainer. Woo?
As a photographer who's been doing things my own way for (ahem) a few decades now, I find that the part pf Photo Show that I need is the ability to put folders of already-processed images on the web. I don't even care about linking to social media. I find my self uninterested in learning a new DAM, changing the way I organize everything. I don't care about geolocation
PhotoShow does all I want. It's dead easy to set up. It has upload capabilities in the WebGUI, but you can just stick folders of images in its 'Pictures' folder, and it'll do the necessary.
I used docker-compose as I haven't 100% figured out WTH is going on with the Synology GUI (it's pretty cryptic about mapping folders) and I'm not sure it's worth the bother.
1) create a folder named 'photoshow' in your docker folder.
2) in the photoshow folder, create folders config, Pictures, and Thumbs
3) in the photoshow folder, create a .yml file with the following contents
version: "2.1"

    container_name: photoshow
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - ./config:/config
      - ./Pictures:/Pictures
      - ./Thumbs:/Thumbs
      - 81:80
    restart: unless-stopped
4) SSH into your synology box
5) raise your privileges with sudo -i
6) change to your photoshow folder: cd /volume1/docker/photoshow
7) start it up: docker-compose up -d
9) With a browser, go to http://[your synology box IP]:81
10) you should get a webpage with a prompt to create a user.
11) create user "admin" (the actual name seems to matter, even though it lets you enter some other name
12) copy any folder of images into docker/photoshow/Pictures - and photoshow puts it up

Note that if you've made any changes in the yml, to get it to take effect: stop photoshow (steps 1-6), then docker-compose stop, then docker-compose up -d

Also, you could point photoshow right at your Photo Station folder by changing the line
- ./Pictures:/Pictures
- ./Photos:/Pictures :ro
Note I've set this to read-only so you don't mess up PhotoStation with an upload

Changing to a different port should be pretty obvious.

Hope this helps someone - also, if you're someone who knows this stuff better than me (I'm a noob here), if I got something wrong, could you please correct me? Nothing worse than following a step-by-step that doesn't work :-(
Last edited:
Tried to find screenshots. But no cigar. Seems it's not been updated in nearly seven years.

Wondering how it compares w/PhotoStructure.
It's just an app that takes image files in whatever folder you've pointed Pictures at - and puts them onto a webpage. Pretty simple - and IMO a decent fallback for anybody using Photo Show to do that. It's not a DAM, no fancy searching, certainly no face recognition.
If you can SSH into your syno-box, it'll take maybe ten minutes to have a working version.
PhotoStructure looks interesting - as a DAM. I'll check it out, and if it fits my workflow, I might start using it.
Synology Photostation is no more with DSM 7 as you all know. "Photos" is a huge disappointment, I really try to like "Photos" but I can't at the moment.
So, here comes the question.. is there a decent replacement? I liked Photostation alot so something similar to that would be nice. And something easy to install aswell that doesn't require "hacking" using Putty or similar..
What does people use? A simple system for browsing/tagging/sharing photos.
I agree, the Photostation replacement sucks big time. I am not sure what they were smoking in Synology when they thought it would be a good idea to replace Photostation. All the personal folders don't show up so they can be used, the administration is childish and seems to be cognitively missing some bits.
I still haven't seen a clean replacement yet.
As a photographer, I'm satisfied with Piwigo.
You can use your existing & commonly used & meaningful data structure (maintained by Exiftool/FolderSizes) = this is my mandatory requirement = you don't need to change this behaviour.
Based on defined symlinks (to core photo structure or user-defined path), you can automatically update your folder structure just by "add new photos there".
I don't care about social networks.
There you can find plenty of useful and also pointless features (plugins). It is up to your time and target.
Advanced search features .... "find panoramas from august 2019" (import file date or creation photo date can be chosen).
Available as the smart app clients also.

And the most crucial factor - it's the official container from Piwigo, maintained by them.
OFC, when you like to create your one container, there is also a way:
include all the tested add-ons that you need for such an operation.

So there is another, more flexible step-in .... use sandboxed jail for your own Piwigo host running on the NAS. But, this is a story, not related Synology environment. This is how it works in TrueNAS. Sometimes it is excellent to use containers, and sometimes it's better to use another point of view.

... but I understand that "touch and play" is much more important for most photo creators
A brief update on Synology Photos, it seems to me, it's on the right path:
  • the latest update brings back star-rating (old ratings show up again correctly now)
  • search/filter is significantly enhanced (tho for now it doesn't work for subfolders but for timeline view and folders)
  • map view will come back (a product manager mailed me)
For me, the show-stoppers are resolved - I'll probably update to Synology Photos.
just wanted to let you know,
all the best, paradeiser
A brief update on Synology Photos, it seems to me, it's on the right path:
  • the latest update brings back star-rating (old ratings show up again correctly now)
  • search/filter is significantly enhanced (tho for now it doesn't work for subfolders but for timeline view and folders)
  • map view will come back (a product manager mailed me)
For me, the show-stoppers are resolved - I'll probably update to Synology Photos.
just wanted to let you know,
all the best, paradeiser

I bit the bullet and upgraded. The reason I did was because photo station outside my network /remotely Would take a very long time to connect. According to a virtual dsm 7 test vm I spun up, photos was so much faster. It outweighed the benefit of the shortfalls and holding off.
According to a virtual dsm 7 test vm I spun up, photos was so much faster. It outweighed the benefit of the shortfalls and holding off
Nothing to stop you keeping a vDSM 6 for Photo Station, provided you can spare the resources. Duplicated files not withstanding.

I keep one running on my DS218+ in case someone asks a question about DSM 6, but it's not often that I'm accessing it now.

Create an account or login to comment

You must be a member in order to leave a comment

Create account

Create an account on our community. It's easy!

Log in

Already have an account? Log in here.

Similar threads

A few months old. Migration went ok but I had to reinstall a few packages which was slightly annoying but...
Welcome to the forum. Occam's razor suggest that you moved, not copied the data that would explain this...
  • Question
You can only have one backup task configured in the Mac/PC Drive client. Since I’ve never done it, I can...
Thank you, Rusty, for your reply. I especially appreciate the photo of the HDD brackets with 2.5” drives...
  • Question
I was trying to say not in the incompatible list, that’s linked from the compatibility list.
  • Question
How do I reset my Synology NAS? You can test RAM using Synology Assistant (PC Application) Note...

Welcome to! is an unofficial Synology forum for NAS owners and enthusiasts.

Registration is free, easy and fast!

Trending threads