FedoraRHEL Based

How To Install Immich on Fedora 43

Install Immich on Fedora 43

Privacy matters. In an era where cloud storage providers have access to your most personal moments, self-hosting your photo library offers complete control over your data. Immich emerges as a powerful, open-source alternative to Google Photos, delivering enterprise-grade features without sacrificing your privacy or requiring expensive subscriptions. This comprehensive guide walks you through installing Immich on Fedora 43, transforming your server into a private photo management powerhouse.

Fedora 43 provides an excellent foundation for hosting Immich, combining cutting-edge technology with robust security features. Whether you’re managing thousands of family photos or building a complete media archive, this tutorial covers everything from initial system preparation to mobile app configuration. By the end, you’ll have a fully functional, self-hosted photo management solution that rivals commercial alternatives.

Understanding Immich

Immich stands out as a high-performance, self-hosted photo and video management platform designed for privacy-conscious users. Unlike traditional cloud services, every photo, video, and piece of metadata remains under your complete control.

Core Features and Capabilities

The platform delivers an impressive feature set that competes directly with Google Photos. Facial recognition powered by machine learning automatically identifies and clusters faces across your entire library. The timeline view presents your memories chronologically, while the “memories” feature resurfaces photos from previous years, creating those nostalgic moments you’d expect from premium services.

Map-based navigation lets you explore photos by location, utilizing GPS metadata embedded in your images. Partner sharing enables you to create shared libraries with family members, while the duplicate detection system prevents storage waste. Support for RAW formats, Live Photos, and motion photos ensures professional photographers and casual users alike find everything they need.

Mobile applications for both iOS and Android provide seamless backup functionality. The auto-upload feature mirrors Google Photos’ convenience, automatically backing up new photos whenever you open the app. Advanced search capabilities leverage CLIP-based machine learning, allowing natural language queries like “beach sunset” or “birthday cake” to find relevant photos instantly.

Prerequisites and System Requirements

Before diving into installation, ensure your system meets the necessary requirements for optimal Immich performance.

Hardware Specifications

A minimum of 4GB RAM allows Immich to function, though 6GB or more delivers noticeably smoother performance, especially during initial photo processing. The machine learning features benefit from at least 2 CPU cores, with 4 cores recommended for larger libraries exceeding 10,000 photos.

Storage requirements depend entirely on your photo collection size. Plan for at least 20% more space than your current library to accommodate thumbnails, metadata, and future growth. A 1TB photo library might require 1.2TB of available storage.

Software Dependencies

Fedora 43 should be freshly updated before installation. Root or sudo privileges are essential for installing system packages and managing services. Basic command-line familiarity helps troubleshoot issues, though this guide provides complete commands.

Internet connectivity during setup enables package downloads and Docker image pulls. For remote access, consider configuring a domain name or dynamic DNS service, though this remains optional for initial setup.

Pre-Installation Verification

Update your system packages first. This ensures compatibility and security:

sudo dnf upgrade --refresh -y

Verify your Fedora version matches the expected release:

cat /etc/fedora-release

Check available disk space to confirm sufficient room for your photo library:

df -h

These preliminary checks prevent issues during installation and ensure smooth deployment.

Installing Docker Engine on Fedora 43

Docker serves as the foundation for Immich, containerizing all required services for simplified deployment and management.

Removing Conflicting Packages

Older Docker versions or Podman conflicts can cause installation issues. Remove any existing installations:

sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc

This command ensures a clean slate for the official Docker installation.

Adding Docker’s Official Repository

Install the dnf-plugins-core package to enable repository management:

sudo dnf install dnf-plugins-core -y

Add Docker’s official Fedora repository:

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

This repository provides the latest stable Docker releases optimized for Fedora.

Installing Docker Components

Install Docker Engine along with its associated packages:

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

The docker-ce package contains the core Docker engine, while docker-ce-cli provides the command-line interface. The containerd.io package handles container runtime, and docker-compose-plugin enables Docker Compose functionality.

Configuring Docker Service

Start the Docker daemon:

sudo systemctl start docker

Enable Docker to start automatically on system boot:

sudo systemctl enable docker

Verify the installation succeeded:

sudo docker --version

You should see output displaying the Docker version, confirming successful installation.

Managing User Permissions

Add your user account to the docker group to run Docker commands without sudo:

sudo usermod -aG docker $USER

Log out and log back in for group membership changes to take effect. Alternatively, activate the changes immediately:

newgrp docker

Test Docker functionality without sudo:

docker run hello-world

This command downloads a test image and runs a simple container. Success confirms proper configuration.

Setting Up Docker Compose

Docker Compose orchestrates multiple containers as a unified application, essential for Immich’s multi-service architecture.

Install the Docker Compose plugin via Fedora’s package manager:

sudo dnf install docker-compose-plugin -y

Verify the installation:

docker compose version

Note that Fedora 43 uses the newer “docker compose” (v2) syntax rather than the legacy “docker-compose” command. The plugin-based approach integrates directly with Docker, providing better performance and compatibility.

Creating the Directory Structure

Organized directory structure simplifies management and backups.

Create a dedicated directory for Immich:

mkdir -p ~/immich-app
cd ~/immich-app

Alternatively, use a system-wide location:

sudo mkdir -p /opt/immich
cd /opt/immich

Create subdirectories for persistent data:

mkdir -p ./library
mkdir -p ./postgres

The library directory stores uploaded photos, while postgres contains database files. These directories persist data across container restarts and updates.

Downloading Immich Configuration Files

Immich provides official Docker Compose configurations that simplify deployment.

Download the docker-compose.yml file:

wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

Download the environment variable template:

wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Verify successful downloads:

ls -la

You should see both docker-compose.yml and .env files in your directory.

The docker-compose.yml file defines four primary services: immich_server (the main application), immich_machine_learning (AI features), immich_postgres (database), and immich_redis (caching). These services work together to deliver full Immich functionality.

Configuring Environment Variables

The .env file contains critical configuration parameters that customize your Immich installation.

Open the environment file with your preferred text editor:

nano .env

Essential Configuration Parameters

Locate the UPLOAD_LOCATION variable and set it to your photo storage path:

UPLOAD_LOCATION=/home/yourusername/immich-app/library

Replace “yourusername” with your actual username. Use absolute paths, not relative references. The directory must exist and have proper permissions.

Generate a secure database password:

openssl rand -base64 32

Copy the generated password and set it in your .env file:

DB_PASSWORD=your_generated_password_here

Never use simple passwords for database security. Strong passwords prevent unauthorized access.

Optional Configuration Settings

Set your timezone for accurate timestamps:

TZ=America/New_York

Replace with your local timezone from the IANA timezone database.

The default PostgreSQL configuration typically works well:

DB_DATABASE_NAME=immich
DB_USERNAME=postgres

Only modify these if you have specific requirements.

Save the file (Ctrl+X, then Y, then Enter in nano) and verify your changes:

cat .env | grep -v '^#' | grep -v '^$'

This command displays only active configuration lines, excluding comments and blank lines.

Deploying Immich with Docker Compose

With configuration complete, deploy the Immich services.

Pull the required Docker images:

docker compose pull

This downloads all necessary container images from Docker Hub. Depending on your internet speed, this may take several minutes. The images total approximately 2-3GB.

Start all Immich services in detached mode:

docker compose up -d

The -d flag runs containers in the background, freeing your terminal for other tasks. Initial startup takes 2-3 minutes as databases initialize and services connect.

Monitor the deployment progress:

docker compose logs -f

Press Ctrl+C to exit log viewing. Look for messages indicating successful service startup. The machine learning service may take longer to initialize as it downloads AI models.

Verify all containers are running:

docker compose ps

All services should show “Up” status. If any service shows “Exited” or “Restarting,” investigate the logs for that specific service:

docker compose logs immich_server

Replace “immich_server” with the problematic service name.

Configuring Firewall Access

Fedora’s firewalld requires explicit port permissions for external access.

Open port 2283 for Immich web interface:

sudo firewall-cmd --permanent --add-port=2283/tcp

Reload firewall rules to apply changes:

sudo firewall-cmd --reload

Verify the rule was added:

sudo firewall-cmd --list-ports

Port 2283 should appear in the output.

For production deployments, consider placing Immich behind a reverse proxy like Nginx or Caddy. This enables HTTPS encryption and allows using standard ports (80/443). The reverse proxy configuration falls outside this tutorial’s scope but significantly improves security.

Initial Immich Setup and Configuration

Access your new Immich installation through a web browser.

Navigate to:

http://your-server-ip:2283

Replace “your-server-ip” with your Fedora server’s IP address. For local testing, use:

http://localhost:2283

Creating Your Administrator Account

The first account created automatically receives administrator privileges. Enter a valid email address (used for login, not verification) and a strong password meeting Immich’s complexity requirements.

Click “Sign Up” to create your account. You’ll immediately log in to the main dashboard.

Install Immich on Fedora 43

Configuring Initial Settings

Navigate to Administration Settings (gear icon) to configure core functionality. The Storage Template setting determines how Immich organizes uploaded photos in your library directory. The default template works well for most users, organizing by year and month.

Enable machine learning features for facial recognition and smart search. The default CLIP model provides excellent performance on CPU-only systems, though GPU acceleration improves processing speed for large libraries.

Configure thumbnail generation quality based on your preferences. Higher quality thumbnails consume more storage but provide better preview experiences.

Installing and Configuring Mobile Applications

Mobile apps transform Immich into a true Google Photos replacement, enabling automatic photo backup from your smartphone.

Download the Immich mobile app from the Apple App Store (iOS) or Google Play Store (Android). Both apps offer identical core functionality.

Connecting to Your Server

Open the app and enter your server URL:

http://your-server-ip:2283

For secure connections, use HTTPS if you’ve configured a reverse proxy with SSL certificates. Self-signed certificates require accepting security warnings on mobile devices.

Enter your email and password created during web setup. The app connects to your Immich server and displays your (currently empty) library.

Enabling Automatic Backup

Navigate to the Backup settings within the mobile app. Enable “Background Backup” to automatically upload new photos. Configure backup to occur only on WiFi to avoid mobile data charges.

Select which albums or folders to back up. Many users exclude screenshots or temporary photos from automatic backup. The selective backup feature provides granular control over what uploads.

Configure battery optimization settings on Android to prevent the system from limiting Immich’s background activity. iOS typically handles background uploads without additional configuration.

Addressing SELinux Permission Challenges

Fedora’s SELinux security module sometimes prevents Docker from accessing mounted volumes, a common issue when deploying Immich.

Identifying SELinux Issues

If Immich fails to access your upload directory, check for SELinux denials:

sudo ausearch -m avc -ts recent

Permission denied errors in Docker logs often indicate SELinux blocking volume access.

Applying Correct SELinux Context

Set the appropriate SELinux context for your Immich directories:

sudo chcon -Rt svirt_sandbox_file_t ~/immich-app/library
sudo chcon -Rt svirt_sandbox_file_t ~/immich-app/postgres

This command grants Docker containers permission to read and write these directories while maintaining SELinux protection.

For persistent SELinux policies, use semanage:

sudo semanage fcontext -a -t svirt_sandbox_file_t "~/immich-app/library(/.*)?"
sudo restorecon -Rv ~/immich-app/library

Alternative Volume Mounting Options

Docker Compose supports the :Z suffix for automatic SELinux labeling:

volumes:
  - /path/to/library:/usr/src/app/upload:Z

Add :Z to volume definitions in docker-compose.yml, then recreate containers:

docker compose up -d --force-recreate

This approach automatically applies correct SELinux contexts without manual intervention.

Post-Installation Optimization

Fine-tuning your installation ensures long-term reliability and performance.

Implementing Backup Strategies

Database backups protect against data loss. Create a simple backup script:

#!/bin/bash
docker compose exec -T immich_postgres pg_dump -U postgres immich > backup_$(date +%Y%m%d).sql

Save this script and schedule it with cron:

crontab -e

Add a line to run daily backups at 2 AM:

0 2 * * * /path/to/backup-script.sh

Don’t forget to back up your photo library directory and .env file. Consider using rsync or dedicated backup solutions for comprehensive protection.

Monitoring System Resources

Watch resource usage to identify potential bottlenecks:

docker stats

This command displays real-time CPU, memory, and network statistics for all containers. The machine learning service typically consumes the most resources during photo processing.

Updating Immich

Regular updates provide security patches and new features. The update process is straightforward:

cd ~/immich-app
docker compose pull
docker compose up -d

Docker Compose automatically recreates containers with updated images while preserving your data. Always review the changelog before updating to identify potential breaking changes.

Troubleshooting Common Issues

Despite careful configuration, occasional issues may arise.

Container Startup Failures

If containers fail to start, examine service-specific logs:

docker compose logs immich_postgres

Database initialization errors often stem from incorrect environment variables. Verify DB_PASSWORD matches across your .env file.

Port conflicts prevent services from binding to their assigned ports. Check if port 2283 is already in use:

sudo ss -tlnp | grep 2283

If another process occupies the port, either stop that service or modify Immich’s port in docker-compose.yml.

Mobile App Connection Problems

Connection failures typically involve incorrect server URLs. Ensure your URL includes the protocol (http:// or https://) and correct port number. Firewalls on your server or network might block mobile device access.

Test connectivity from your mobile device’s browser before troubleshooting the app. If the web interface loads in the browser, the app should connect successfully.

Machine Learning Performance

CPU-based machine learning works adequately for most users, processing photos at 1-2 seconds per image. Large libraries may require patience during initial facial recognition.

The default CLIP model balances quality and performance. Alternative models offer different trade-offs between speed and accuracy. Experiment with models in the Administration settings to find optimal configuration for your hardware.

Database Connection Errors

PostgreSQL connection failures often indicate the database container isn’t ready when the application starts. Wait 2-3 minutes for full initialization, then check container status:

docker compose ps immich_postgres

If the database repeatedly crashes, examine its logs for specific error messages:

docker compose logs immich_postgres

Insufficient disk space, corrupted data files, or incorrect permissions commonly cause database failures.

Congratulations! You have successfully installed Immich. Thanks for using this tutorial for installing Immich self-hosted on Fedora 43 Linux system. For additional help or useful information, we recommend you check the official Immich website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button