Running Pluto Photos on Your NAS with Docker
By The Pluto Photos Team · Published · Updated · 6 min read
A guide to self-hosting Pluto Photos as a Docker container on your NAS or home server — no desktop app required.
Why self-host?
If your photos already live on a NAS — a Synology, QNAP, Unraid box, or just a Linux machine in a closet — there's no reason to copy them to a desktop just to organize them. The Docker version of Pluto Photos runs on the NAS itself and gives you browser-based access from any device on your network.
You get the same library management features — browsing, tagging, smart albums, face detection, duplicate finder, search — all through a web interface. No app install needed on your phone, tablet, or laptop. Just open a browser.
Quick setup
Download the real compose file and its env file rather than writing your own from scratch — they're the ones kept in sync with the actual image:
mkdir pluto-photos && cd pluto-photos
wget -O docker-compose.yml https://plutophotos.com/docker/docker-compose.yml
wget -O .env https://plutophotos.com/docker/example.env
Open .env and set two values: UPLOAD_LOCATION (the path to your photo library on the host) and PLUTO_WEB_PASSWORD (a password for the web login — the username defaults to admin). Everything else has a working default.
docker compose up -d
Open https://your-nas-ip:3456 in a browser. It's HTTPS with a self-signed certificate, so you'll get a browser warning the first time — accept it, or put a reverse proxy in front if you want a trusted one. Log in with admin and the password you set. The initial scan of /photos runs in the background after the container starts; progress is logged to stdout, and a large library (10,000+ files) can take several minutes on first run.
What works in Docker
The Docker build is a headless library server, not the full desktop app, so a few things are desktop-only:
- Full photo and video browsing, by folder, album or project
- Smart albums — dynamic filters by type, rating, tag, date, GPS or person
- Viewing people already detected — face detection itself runs in the desktop app; Docker mode displays the results, it doesn't run its own scan
- Search by filename
- Automatic re-scanning of your mounted folders on an interval
- Thumbnail generation for images, videos, PDFs and PSDs
- GPS extraction from EXIF, including Google Takeout sidecar JSON
- Importing photos directly from an Immich server via API key
Not included in Docker mode: the photo and video editor, background removal, portrait blur, object removal, and the duplicate finder. Those are desktop-app features. If your library lives on a NAS and you want them, point the desktop app at the same mounted folder from a machine on your network.
Hardware requirements
You don't need much:
- CPU: A modern x86_64 processor.
- RAM: A gigabyte or two is comfortable for most libraries.
- Storage: Your photos, plus some overhead for the thumbnail cache and database.
Thumbnail generation is the main CPU cost, and it's a one-time job per photo — subsequent scans only touch files that are new since the last one.
Accessing from your phone
Once the container is running, any device on your local network can access it. Just bookmark the URL on your phone. The web interface is responsive and works well on mobile. You can browse, search, and view your full photo library from your couch, your bed, or your kitchen.
If you want access from outside your network, put it behind a reverse proxy (Caddy, Nginx, Traefik) with HTTPS. I'd recommend keeping it local-only unless you know what you're doing with security.
Updates
docker compose pull
docker compose up -d
Your data volume persists between updates. The database schema migrates automatically.
Docker image on Docker Hub — also available with a version tag like plutophotos/server:v2.3.14.
Download Pluto Photos for Windows, macOS or Linux, or read more from the blog.