Fotoserver Immich: Einfach installieren, sofort nutzen

Immich ist eine selbstgehostete Foto- und Videoverwaltung, die dir volle Kontrolle über deine Daten gibt. Die Plattform ermöglicht es, Bilder und Videos automatisch von Mobilgeräten hochzuladen, sie zu organisieren, zu durchsuchen und mit Funktionen wie Gesichtserkennung und Standortdaten zu versehen.

Im Gegensatz zu großen Cloud‑Anbietern läuft Immich auf deinem eigenen Server und kombiniert eine moderne Benutzeroberfläche mit starker Datenschutzorientierung. Damit erhältst du den Komfort von Diensten wie Google Fotos, aber ohne deine Inhalte einem externen Anbieter anvertrauen zu müssen


🚀 Immich-Installationsskript

Dieses Skript richtet die Fotoverwaltungssoftware Immich automatisch auf eurem Server ein. Es aktualisiert das System, installiert Docker und Docker Compose, legt einen eigenen Benutzer für Immich an und erstellt die nötigen Verzeichnisse. Anschließend werden die aktuellen Konfigurationsdateien (docker-compose.yml und .env) heruntergeladen, angepasst und die Container gestartet. Am Ende erhaltet ihr die Zugriffsadresse sowie das generierte Datenbank-Passwort – Immich ist sofort einsatzbereit im Browser erreichbar.

#!/bin/bash

set -euo pipefail  # robustere Fehlerbehandlung

# Variablen definieren
INSTALL_DIR="/mnt/hidrive/immich-app"
IMMICH_USER="immich"
DOCKER_COMPOSE_YML_URL="https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml"
ENV_FILE_URL="https://github.com/immich-app/immich/releases/latest/download/example.env"

# Passwort für den Immich-Benutzer abfragen
echo "Bitte ein Passwort für den Benutzer '$IMMICH_USER' eingeben:"
read -s IMMICH_PASSWORD
echo "Bitte das Passwort erneut eingeben:"
read -s IMMICH_PASSWORD_CONFIRM

if [ "$IMMICH_PASSWORD" != "$IMMICH_PASSWORD_CONFIRM" ]; then
    echo "Passwörter stimmen nicht überein. Abbruch."
    exit 1
fi

# Separates Datenbank-Passwort generieren
DB_PASSWORD=$(pwgen -s 16 1)

# System aktualisieren
sudo apt update && sudo apt upgrade -y

# Notwendige Pakete installieren
sudo apt install -y curl wget apt-transport-https ca-certificates gnupg lsb-release pwgen

# Docker installieren, falls nicht vorhanden
if ! command -v docker &> /dev/null; then
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
        | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
    sudo usermod -aG docker $USER
    echo "Docker wurde installiert. Bitte abmelden oder 'newgrp docker' ausführen, um die Gruppe sofort zu aktivieren."
fi

# Docker Compose installieren (falls weder 'docker compose' noch 'docker-compose' vorhanden)
if ! docker compose version &>/dev/null && ! docker-compose version &>/dev/null; then
    sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \
        -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
fi

# Benutzer für Immich erstellen
if ! id "$IMMICH_USER" &>/dev/null; then
    sudo useradd -m -s /bin/bash "$IMMICH_USER"
    echo "$IMMICH_USER:$IMMICH_PASSWORD" | sudo chpasswd
    echo "Benutzer $IMMICH_USER wurde erstellt."
fi

# Benutzer zur Docker- und Sudo-Gruppe hinzufügen
sudo usermod -aG docker "$IMMICH_USER"
sudo usermod -aG sudo "$IMMICH_USER"

# Installationsverzeichnis erstellen
sudo mkdir -p "$INSTALL_DIR"
sudo chown -R "$IMMICH_USER:$IMMICH_USER" "$INSTALL_DIR"
cd "$INSTALL_DIR"

# docker-compose.yml und .env herunterladen
sudo -u "$IMMICH_USER" wget -O docker-compose.yml "$DOCKER_COMPOSE_YML_URL"
sudo -u "$IMMICH_USER" wget -O .env "$ENV_FILE_URL"

# Standardwerte in der .env Datei setzen
sudo -u "$IMMICH_USER" sed -i "s|UPLOAD_LOCATION=./library|UPLOAD_LOCATION=$INSTALL_DIR/library|g" .env
sudo -u "$IMMICH_USER" sed -i "s|DB_DATA_LOCATION=./postgres|DB_DATA_LOCATION=$INSTALL_DIR/postgres|g" .env
sudo -u "$IMMICH_USER" sed -i "s|DB_PASSWORD=postgres|DB_PASSWORD=$DB_PASSWORD|g" .env

# Container starten mit neuem Benutzer
sudo -u "$IMMICH_USER" docker compose up -d

# IP-Adresse und Port ausgeben
IP_ADDRESS=$(hostname -I | awk '{print $1}')
PORT=$(grep -oP 'IMMICH_SERVER_PORT=\K\d+' .env || echo "2283")

# Abschlussmeldung
echo "Installation abgeschlossen! Immich läuft nun im Hintergrund unter dem Benutzer $IMMICH_USER."
echo "Installationsverzeichnis: $INSTALL_DIR"
echo "Datenbank-Passwort (einmalig anzeigen): $DB_PASSWORD"
echo "Immich kann unter folgender Adresse erreicht werden: http://$IP_ADDRESS:$PORT"

© 2025 MaDe-Online