PhotoPrism (AI-Powered Photo Manager) on AlmaLinux 9

PhotoPrism is an open-source, self-hosted AI-powered photo and video management platform built to organize, browse, and search large media libraries intelligently. By using built-in machine learning, PhotoPrism can automatically classify images, detect objects and scenes, recognize faces, and extract EXIF/GPS metadata, turning massive photo collections into a fast, searchable visual archive.

Unlike cloud-based photo services, PhotoPrism runs entirely on your own infrastructure. Your photos and videos never leave your server, making it an ideal solution for privacy-conscious users, photographers, home labs, and organizations that want modern AI features without giving up data ownership.

Running PhotoPrism on AlmaLinux 9, a RHEL-compatible, enterprise-grade Linux distribution, provides long-term stability, security updates, and predictable performance. AlmaLinux 9 is well suited for production workloads and pairs perfectly with Docker, PostgreSQL, Nginx, and HTTPS for a secure, scalable, and maintainable PhotoPrism deployment.


Architecture Overview

LayerComponentRole
OSAlmaLinux 9Enterprise-grade, RHEL-compatible Linux base
Container RuntimeDocker / Docker ComposeRuns PhotoPrism and supporting services
ApplicationPhotoPrism (Go + TensorFlow Lite)AI-powered photo and video management
DatabasePostgreSQLStores metadata, search indexes, and user data
StorageLocal filesystem / NASOriginal photos and videos
Reverse ProxyNginxHTTPS termination, routing, compression
TLSLet’s Encrypt / PKISecure access to the PhotoPrism web interface

PhotoPrism scales well from small personal libraries to very large collections containing hundreds of thousands of photos, depending on available CPU, RAM, and storage performance.


Why Use PhotoPrism?

  • AI-powered search – find photos by objects, scenes, locations, or keywords
  • Face recognition – automatically group photos by people
  • Privacy-first – fully self-hosted, no cloud dependency
  • Modern, responsive UI – works smoothly on desktop and mobile
  • Advanced metadata handling – EXIF, GPS, camera info, RAW support
  • Video support – manage and preview videos alongside photos
  • Multi-user support – shared libraries with access control
  • Open-source & actively developed – transparent and extensible

PhotoPrism delivers a Google Photos–like experience while keeping full control of your data.


PhotoPrism vs Other Photo Management Solutions

Feature / CapabilityPhotoPrismGoogle PhotosNextcloud PhotosPiwigo
HostingSelf-hostedCloud onlySelf-hosted / CloudSelf-hosted
AI search✅ Yes✅ Yes❌ No❌ Limited
Face recognition✅ Yes✅ Yes❌ No❌ No
PrivacyFull controlGoogle-controlledPartialFull
RAW support✅ YesLimitedLimitedLimited
CostFree / Open-sourceFree / PaidFree / PaidFree / Paid

PhotoPrism is the best choice for users who want advanced AI features combined with complete data ownership.


Security & Best Practices on AlmaLinux 9

  • Run PhotoPrism behind Nginx with HTTPS enabled.
  • Keep PhotoPrism and PostgreSQL on internal Docker networks only.
  • Store secrets (database passwords, admin credentials) using environment variables.
  • Enable SELinux enforcing mode and use proper Docker volume labels.
  • Configure firewalld to allow only ports 80 and 443.
  • Automate SSL certificate renewal using Certbot or another ACME client.
  • Regularly update AlmaLinux, Docker, and PhotoPrism images.
  • Back up:
    • original photos and videos
    • PostgreSQL database
    • PhotoPrism configuration and index
  • Mount original photo directories as read-only when possible.
  • Create separate user roles and limit admin access.

Typical Use Cases

  • Personal photo libraries – replace Google Photos or iCloud Photos
  • Family media servers – shared albums with private hosting
  • Photographers – manage large RAW and JPEG collections
  • Home labs & NAS setups – centralized photo and video management
  • Privacy-focused users – AI features without cloud tracking
  • Small organizations – internal photo archives and media catalogs

Deploying PhotoPrism on AlmaLinux 9 with Docker, PostgreSQL, Nginx, and SSL gives you a powerful, AI-driven photo management platform that combines modern machine learning capabilities with enterprise stability, privacy, and long-term reliability.


Create an AlmaLinux 9 Instance on Shape.Host

Go to https://shape.host and log in

Click Create

Choose Instance

Shape.host Resources dashboard with Create > Instance highlighted.

Select a server location

Shape.host instance form with the data center location selector highlighted.

Choose AlmaLinux 9 (64-bit)

Pick a plan (recommended minimum for PhotoPrism):

2 vCPU

4 GB RAM (8 GB recommended for large photo libraries)

40 GB NVMe SSD or more

Shape.host instance form with the operating system image selector highlighted.

Click Create Instance

Shape.host instance form with the Create Instance button highlighted.

Copy the public IP address

Shape.host Resources dashboard with the server IP address highlighted.

Step 1: Connect to the Server via SSH

From your local machine:

ssh root@YOUR_SERVER_IP

You are now logged in as the root user.


Step 2: Update the System

dnf update

Updates all installed packages to the latest versions.

Terminal showing DNF/YUM package management commands and output.

Step 3: Install Required System Packages

dnf install ca-certificates curl gnupg2 dnf-utils

These packages are required to securely add external repositories and download Docker components.

Terminal showing DNF/YUM package management commands and output.

Step 4: Add Docker Repository

dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Adds the official Docker repository compatible with AlmaLinux 9.


Step 5: Refresh Package Cache

dnf makecache

Loads metadata from the newly added Docker repository.

Terminal showing dnf commands or output during Refresh Package Cache.

Step 6: Install Docker and Docker Compose

dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Installs Docker Engine and Docker Compose v2.

Terminal showing DNF/YUM package management commands and output.

Step 7: Enable and Start Docker

systemctl enable docker
systemctl start docker

Ensures Docker starts automatically at boot.


Step 8: Verify Docker Installation

docker --version
docker compose version

Confirms Docker and Docker Compose are installed correctly.


Step 9: Create PhotoPrism Directory

mkdir -p /opt/photoprism
cd /opt/photoprism

This directory will store PhotoPrism configuration and data.

Terminal showing systemd service management commands or output.

Step 10: Download PhotoPrism Docker Compose Template

wget https://dl.photoprism.app/docker/compose.yaml -O docker-compose.yml

Downloads the official PhotoPrism Docker Compose file.

Terminal showing systemd service management commands or output.

Step 11: Edit Docker Compose Configuration

nano docker-compose.yml

Adjust the file as follows:

services:
  photoprism:
    image: photoprism/photoprism:latest
    restart: unless-stopped
    ports:
      - "2342:2342"
    environment:
      PHOTOPRISM_ADMIN_PASSWORD: "StrongAdminPasswordHere"
      PHOTOPRISM_ORIGINALS_PATH: "/photoprism/originals"
      PHOTOPRISM_STORAGE_PATH: "/photoprism/storage"
    volumes:
      - /opt/photoprism/originals:/photoprism/originals
      - /opt/photoprism/storage:/photoprism/storage

Explanation:

  • The admin password secures the PhotoPrism web interface
  • Originals directory stores your photos
  • Storage directory contains thumbnails, metadata, and AI indexes

Save and exit the file.

Terminal showing web server configuration text.

Step 12: Create Required Data Directories

mkdir -p /opt/photoprism/originals
mkdir -p /opt/photoprism/storage

Ensures data persists across container restarts.

Terminal showing docker commands or output during Create Required Data Directories.

Step 13: Pull PhotoPrism Image

docker compose pull

Downloads the latest PhotoPrism Docker image.

Terminal showing container image download progress.

Step 14: Start PhotoPrism

docker compose up -d

Starts PhotoPrism in the background.

Terminal showing container image download progress.

Step 15: Verify Running Containers

docker compose ps

Confirms that the PhotoPrism container is running.

Terminal showing docker commands or output during Verify Running Containers.

Step 16: Install Nginx

dnf install nginx

Nginx will be used as a reverse proxy.

Terminal showing DNF/YUM package management commands and output.

Step 17: Enable and Start Nginx

systemctl enable nginx
systemctl start nginx
systemctl status nginx
Terminal showing systemd service management commands or output.

Step 18: Create Nginx Configuration

nano /etc/nginx/conf.d/photoprism.conf

Paste the following configuration:

server {
    listen 80;
    server_name photos.example.com;

    client_max_body_size 500M;

    location / {
        proxy_pass http://127.0.0.1:2342;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_buffering off;
    }
}

Explanation:

  • Allows large photo uploads
  • Supports WebSocket connections
  • Proxies traffic securely to PhotoPrism
Terminal showing web server configuration text.

Step 19: Test and Reload Nginx

nginx -t
systemctl reload nginx
Terminal showing Nginx configuration test output.

Step 20: Install Certbot for SSL

dnf install epel-release
dnf install certbot python3-certbot-nginx
Terminal showing DNF/YUM package management commands and output.
Terminal showing DNF/YUM package management commands and output.

Step 21: Enable HTTPS

certbot --nginx -d almalinux-tutorials.shape.host

Certbot automatically configures HTTPS and renewals.

Terminal showing Certbot certificate commands and messages.

https://yourdomain.com

Log in using the admin password configured in docker-compose.yml.

PhotoPrism sign-in form.
PhotoPrism photo library with an empty results area.

PhotoPrism performs best on fast storage and reliable CPU resources, especially during AI indexing.

Shape.Host Cloud VPS offers:

  • NVMe SSD storage
  • Instant AlmaLinux 9 deployments
  • Clean and minimal OS images
  • Stable networking
  • Excellent performance for Docker workloads

Deploy your next self-hosted media platform at https://shape.host.