PhotoStructure for Servers
All server editions share the same UI and are interoperable with each other (and with PhotoStructure for Desktops). You can move your library between any edition on any OS.
Server editions require comfort with the command line. If you want point-and-click, use PhotoStructure for Desktops.
Which edition should I use?
Uncomfortable with the command line: use PhotoStructure for Desktops
NAS or container host (Synology, UnRAID, TrueNAS, or Docker host): use Docker
- Need full control over dependencies, or running on Windows: use Node
Docker
Set up Docker with the wizard | Docker reference
Runs on any linux/amd64 or linux/arm64 Docker host. You only need Docker installed.
Pros:
- Nothing to install besides Docker
- Container security isolation (especially with non-root user)
- Straightforward upgrades:
docker compose pull && docker compose up --build -d
Cons:
- You must explicitly bind-mount directories you want to import
- Docker may need VT-x or AMD-V enabled in BIOS
- Old AMD64 CPUs (e.g. AMD Phenom II) may not work; use Node instead
- No access to physical volume UUIDs
Node
Full Node installation instructions | systemd wizard
The advanced option for headless servers where you want full control over the runtime.
Pros:
- “Scan all volumes” works automatically (no bind-mount management)
- Volume UUIDs are supported
- Automatic upgrade checks on restart
Cons:
- You’ll need to manually install Node.js along with FFmpeg and libheif for video and HEIC support
⚙️ Service architecture
PhotoStructure process architecture
phstr-mainsupervisesphstr-webandphstr-sync, restarting them if they crash or are unresponsivephstr-webhosts the Express HTTP API, Vue SPA, and serves image previewsphstr-syncscans directories for potential library assets, manages the import pipeline and task queuephstr-workerprocesses (scaled to CPU count) handle CPU-intensive tasks offloaded from the web and sync event loops: metadata extraction, preview generation, and file hashing
All three services spawn external processes as needed:
- exiftool reads and writes photo and video metadata
- ffmpeg / ffprobe extract video frames and probe codec information
- dcraw extracts previews from RAW camera files
- heif-dec / heif-thumbnail decode HEIF/HEIC images
- sips converts images on macOS
