Immich - Getting Started Guide

Immich - Getting Started Guide

Immich is a self-hosted photo and video management platform - a privacy-focused alternative to Google Photos. It features automatic backup from mobile devices, facial recognition, smart search and shared albums. Everything runs on your server via Docker Compose, giving you full control over your data.


Step 1 - Verify Immich Works

Your server's IP address and root password are shown on the Server Details page in your client panel. Immich is already running after the server starts. Open your browser and go to:

http://your.server.ip:2283

You should see the Immich registration page. If the page does not load, wait 1-2 minutes for all containers to start.

On first access, fill in the form to create your administrator account:

  • Email - your email address (used as login)
  • Password - choose a strong password
  • First Name and Last Name

Click Sign Up to create the account. After registration, the sign-up page is disabled - only the admin can create additional users from the Administration panel.

If you placed the server behind a VyOS router on a private network, either connect over a VPN and reach Immich on the server's private IP (recommended for a personal service), or configure port forwarding (port 22 for SSH, port 2283 for Immich web interface, ports 80/443 if you set up a domain with SSL).


Step 2 - Install Mobile App (Optional)

Immich has mobile apps for automatic photo and video backup:

  • iOS - download Immich from the App Store
  • Android - download Immich from Google Play or F-Droid

In the app, enter your server URL and log in with the account you created:

http://your.server.ip:2283

Enable Background Backup in the app settings to automatically upload new photos and videos.


Step 3 - Configure Domain and SSL (Optional)

To access Immich via your own domain with HTTPS:

  1. Create an A record in your DNS settings pointing your domain to the server IP
  2. Wait for DNS propagation (usually a few minutes)
  3. Connect via SSH and set up Nginx as a reverse proxy with a Let's Encrypt certificate:
ssh root@your.server.ip
apt update && apt install -y nginx certbot python3-certbot-nginx

cat > /etc/nginx/sites-available/immich << 'EOF'
server {
    listen 80;
    server_name your-domain.com;
    client_max_body_size 50000M;

    location / {
        proxy_pass http://127.0.0.1:2283;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}
EOF

ln -s /etc/nginx/sites-available/immich /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

certbot --nginx -d your-domain.com

Replace your-domain.com with your actual domain. Certbot will configure SSL and set up automatic renewal. The client_max_body_size directive allows uploading large video files. After setup, update the server URL in your mobile app to https://your-domain.com.


Post-Installation

Fail2Ban - Brute-Force Protection

Your server comes with Fail2Ban pre-configured to protect SSH from brute-force attacks.

Rule Max Attempts Ban Duration
SSH5 failed logins10 minutes

Useful commands:

# Check banned IPs
fail2ban-client status sshd

# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4

If you accidentally lock yourself out, connect via VNC console in your client panel and unban your IP.

Storage Management

Photos and videos are stored in /opt/immich/upload/. A typical phone photo is 3-5 MB; videos are much larger. Immich also generates thumbnails and ML embeddings (~20% overhead). To check disk usage:

df -h /
du -sh /opt/immich/upload/

Service Management

Immich runs as a systemd service via Docker Compose:

# Check container status
cd /opt/immich && docker compose ps

# View logs
cd /opt/immich && docker compose logs -f

# Restart Immich
systemctl restart immich

Updates

To update Immich to the latest version:

cd /opt/immich
curl -fsSL https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml -o docker-compose.yml
docker compose pull
docker compose down && docker compose up -d

Always check the release notes before updating for any breaking changes.

Backups

Back up two things: the upload folder and the database:

# Database backup
docker exec -t immich_postgres pg_dumpall -c -U postgres > /opt/immich/db_backup.sql

# Database restore (if needed)
cat /opt/immich/db_backup.sql | docker exec -i immich_postgres psql -U postgres

Software Included

Component Version
Ubuntu24.04 LTS
DockerLatest
ImmichLatest
PostgreSQL14 (Docker)
Valkey (Redis)9 (Docker)
Fail2Ban1.0

Troubleshooting

Problem Solution
Web interface not loading after first boot Wait 1-2 minutes for containers to start. Check: cd /opt/immich && docker compose ps
Containers keep restarting Check logs: cd /opt/immich && docker compose logs --tail 50. Verify you have at least 4 GB RAM
Mobile app cannot connect Verify the server URL includes the port: http://your.server.ip:2283
Out of disk space Clean Docker cache: docker system prune -a. Consider resizing the disk in your client panel
Blocked by Fail2Ban Use VNC console in your client panel to unban your IP
Forgot root password Use VNC console in your client panel to reset it


Was this article helpful?

mood_bad Dislike 0
mood Like 0
visibility Views: 25