PhotoStructure can run on “headless” servers (systems without an addressable graphics display) running Docker hosting Linux x64 images, or directly if running macOS, Debian, or Ubuntu 18.04 or 20.04 LTS.
PhotoStructure for Servers requires command-line and networking expertise. If you want an easy point-and-click installation, you should try out PhotoStructure for Desktops.
There are two ways to run PhotoStructure on headless systems: either with PhotoStructure for Docker, or with PhotoStructure for Node. There are pros and cons to both approaches.
PhotoStructure for Docker #
- PhotoStructure can run on any docker server that hosts x64 Linux images.
- You don’t need to install anything other than Docker on your computer.
- Running PhotoStructure within a Docker container provides a layer of security for your host system.
- “Scan all volumes” doesn’t work: you’ll need to explicitly export volumes you want to import into your PhotoStructure docker container.
- You’ll need to install Docker on your host machine. This may require enabling VT-x or AMD-V in your BIOS.
- PhotoStructure won’t have access to physical volume metadata, so it may interfere with Volume UUIDs.
- PhotoStructure’s commands to add, inspect, and debug your library, like
logcatare a bit more involved to run when using Docker rather than Node.
- Upgrades require manual intervention.
Here are the instructions for PhotoStructure for Docker.
PhotoStructure for Node #
- “Scan all volumes” works automatically. You don’t have to export drives manually from your host machine into your container, like you do with Docker.
- Volume UUIDs are supported.
- Upgrades are automatic.
- Only Ubuntu LTS and macOS are officially supported.
- You’ll need to install several other packages (but it’s just
- The layer of security offered by Docker isn’t present in this solution.
Here are the instructions for PhotoStructure for Node.
See advanced-settings for information about PhotoStructures settings files.
- By default, see
- The log directory, verbosity, and formatting are all configurable via
~/.config/PhotoStructure/settings.toml. Search for
- You can run
photostructure logtailto view log messages as they are emitted from all current running processes.
- You can run
photostructure logcat <path-to-logfile.log>...to pretty-print
Library files #
$PS_LIBRARY_PATH/.photostructure contains your library database, as well as
image and video previews of all the assets in your library. Opening your model
DB in another application (like DB Browser for
SQLite) should only be done when PhotoStructure is
Service architecture #
This section is only provided to explain what processes you should expect on your system.
This process manages
sync processes, restarting them if they crash
or are unresponsive, and restarting
sync if the library settings change.
This process hosts the web-based user interface.
This process scans directories for potential library assets and asks a cluster
sync-file processes to import those files.
Expect several of these processes (correlated to the number of CPU cores your system has). These processes do all the work necessary to import files into your library, including building preview images and asking FFmpeg or VLC to transcode videos.
ExifTool, jpegtran, dcraw, FFmpeg, VLC, SQLite, PowerShell, wmic, df, gio, diskutil #
These tools will be spawned as needed for
- Extracting photo and video metadata (ExifTool)
- Losslessly rotating images (jpegtran)
- Extracting RAW images (dcraw)
- Transcoding videos to be viewable on a browser (FFmpeg or VLC)
- Compressing and validating library databases (SQLite)
- Extracting volume metadata (PowerShell, wmic, df)
- Notifying PhotoStructure when volumes are mounted or unmounted (gio, diskutil)
See also: #
Photo by Martijn Baudoin