We recommend hosting PhotoPrism Pro on a server with at least 4 cores, 8 GB of physical memory, and a 64-bit operating system. Beyond these minimum requirements, the amount of RAM should match the number of CPU cores. Indexing large photo and video collections also benefits greatly from local SSD storage, especially for the database and cache files.
PhotoPrism Pro runs best with Docker Desktop on Windows 10+ and macOS 11+, Podman on Red Hat and compatible Linux distributions such as CentOS, Fedora, AlmaLinux, and Rocky Linux, and Docker on all other Linux distributions such as Ubuntu and Debian.
Our multi-arch Docker image supports 64-bit AMD, Intel and ARM processors. As a result, Raspberry Pi 3 / 4, Apple Silicon and other ARM64-based devices can pull from the same repository, enjoy the exact same functionality and follow the regular installation instructions.
PhotoPrism is compatible with SQLite 3 and MariaDB 10.5.12+. The configuration examples we provide are generally based on the latest MariaDB Server version to take advantage of performance improvements. We recommend using SQLite only for small libraries and test environments where scalability and performance are not important. Also note that support for MySQL 8 has been discontinued due to low demand and missing features.
Built as a Progressive Web App (PWA), the web interface works with most modern browsers and runs best on Chrome, Chromium, Safari, Firefox, and Edge. You can conveniently install it on the home screen of all major operating systems and mobile devices.
Not all video and audio formats can be played with every browser. For example, AAC - the default audio codec for MPEG-4 AVC / H.264 - is supported natively in Chrome, Safari, and Edge, while it is only optionally supported by the OS in Firefox and Opera.
Because PhotoPrism is designed to scale and make maximum use of the hardware provided, hosting it on a server with a more powerful CPU (or allocating more virtual cores) can make a big difference, especially when handling many concurrent requests or indexing large numbers of files. Ultimately, the choice of hardware should depend on your performance expectations and economic considerations.
When in doubt, we recommend to start with 8 cores and to scale up as needed. However, if you already know that high performance is crucial, you may want to start with 16 cores or more and adjust the amount of RAM accordingly.
Entry-level NAS devices may not be suitable for running PhotoPrism, especially if their CPU is optimized for low power consumption. We recommend testing the performance with our freely available Community Edition before purchasing a commercial license.
Indexing large photo and video collections benefits from plenty of memory for caching and processing large media files. Ideally, the amount of RAM should match the number of physical CPU cores. If not, reduce the number of workers by setting
PHOTOPRISM_WORKERS to a reasonably small value in
docker-compose.yml, depending on the CPU performance and number of cores.
Especially the conversion of RAW images and the transcoding of videos are very demanding. High-resolution panoramic images may require additional swap space and/or physical memory above the recommended minimum.
RAW image conversion and TensorFlow are disabled on systems with 1 GB or less memory. We take no responsibility for instability or performance problems if your device does not meet the requirements.
If your server has less than 4 GB of swap space or a manual memory/swap limit is set, this can cause unexpected restarts, for example, when the indexer temporarily needs more memory to process large files.
Actual storage requirements vary and depend, among other things, on file resolutions and formats (RAW, JPEG, video,...). For highly compressed, high-resolution videos in modern formats that cannot be displayed natively by browsers, the storage folder may even be larger than the originals folder, since videos transcoded to AVC are not as heavily compressed. However, most of the space in the storage folder is usually occupied by thumbnails: These are high-quality, scaled-down versions of your originals.
Thumbnails are necessary because web browsers are bad at resizing large images to fit the screen. Using full-resolution originals for slideshows and in search results would also consume a lot of browser memory and significantly reduce indexing performance.
To reduce disk usage, you can choose to render certain thumbnails only on demand if you have a fast CPU and enough memory. On the other hand, if storage space is cheap, it can make more sense to go for better quality and performance.
We recommend that you reserve about 50% of the size of your originals for the storage folder so that you don't run out of space unexpectedly. Actual disk usage should be 25% or less in practice, depending on your individual quality settings and file types.
There are no hard limits for the input and output operations per second (IOPS) that your hard drives should be able to perform. As a rule of thumb, a good M.2 SSD can easily do 100,000 IOPS or more, while conventional hard drives are between 50 and 100. For this reason, we strongly recommend using an SSD for MariaDB and the storage folder, which contains the configuration, thumbnail, cache and generated sidecar files.
Shared network storage or conventional hard drives should only be used for the originals folder. Performance is much less critical in this case, as these files are only accessed when indexing, downloading originals, or streaming videos. The number of concurrent reads depends on the number of cores available for indexing, so throughput is generally more important than IOPS. Thus, a conventional hard disk with 50 to 100 IOPS is sufficient unless you use a very large number of CPU cores for indexing.
Never store database files on an unreliable device such as a USB flash drive, SD card, or shared network folder. These may also have unexpected file size limitations, which is especially problematic for databases that do not split data into smaller files.
Supported File Formats
PhotoPrism Pro supports indexing, viewing, and converting most popular image, video and RAW formats, including JPEG, PNG, GIF, BMP, HEIF, HEIC, MP4, MOV, WebP, and WebM. Our goal is to provide top-notch support for all RAW images, regardless of camera make and model.
For maximum browser compatibility, PhotoPrism can transcode video codecs and containers supported by FFmpeg to MPEG-4 AVC, as well as extract still images for thumbnail creation. AVC, OGV, VP8, VP9, AV1, WebM, and HEVC videos can be streamed directly if they are supported by your browser and do not exceed the configured bitrate limit.
Our dedicated configuration guide explains how to configure Intel Quick Sync, the NVIDIA Container Toolkit and other hardware encoders for accelerated hardware transcoding. Note that older hardware may not support certain video codecs and resolutions. In this case, it is not possible to use hardware transcoding for these videos.
There is no predefined technical limit to the number of concurrent users. PhotoPrism generally scales well with the number of CPU cores, but keep in mind that the available server resources can be significantly reduced when the backend is busy indexing or importing a large number of files.
To reduce the server load, you can limit the number of indexing workers depending on your individual needs. It is also possible to change the file size limit in megabytes and the resolution limit in megapixels.
If you plan to connect your instance to the public Internet, where the number of users can fluctuate greatly and some users may be accessing the service from remote locations with high latency, we additionally recommend configuring a Content Delivery Network (CDN) like bunny.net, as this can effectively reduce server load and improve the user experience:
We recommend testing the performance with our freely available Community Edition before purchasing a commercial license.
In order to successfully set up your installation and view location details in PhotoPrism® Pro, you must allow requests to Docker Hub and our geocoding API if you have a firewall installed, and make sure your internet connection is working.
For detailed information on specific product features, services, and related resources, see our Knowledge Base, or read the User Guide for help using the web user interface: