sphings-dev.de

AmberChest mit Docker installieren

AmberChest als Docker-Container auf einem Linux-Server einrichten: Docker installieren, Compose-Datei anlegen, erstes Postfach hinzufügen und automatische Sicherung aktivieren.

Diese Anleitung bringt AmberChest als Docker-Container auf einen Linux-Server. Am Ende läuft die Weboberfläche auf Port 8484, und deine IMAP-Postfächer werden automatisch als .eml-Dateien gesichert. Die Befehle gelten für Debian und Ubuntu; mit Docker und dem Compose-Plugin funktioniert der Rest auch auf anderen Distributionen.

Vorbereitung

Du brauchst ein Terminal auf dem Server, entweder direkt am Rechner oder per SSH (Fernzugriff über die Kommandozeile). Zuerst prüfst du, ob Docker mit Compose schon vorhanden ist.

  1. Öffne ein Terminal auf dem Server.
  2. Gib den folgenden Befehl ein und bestätige mit Enter.
docker compose version

Erscheint eine Zeile mit einer Versionsnummer, ist alles installiert und du kannst bei „Installation“ weitermachen. Meldet der Server „command not found“ oder „unknown command“, installierst du Docker wie im nächsten Abschnitt.

Docker installieren (Debian und Ubuntu)

Docker empfiehlt für Server die Installation über das eigene Paket-Repository. Die Befehle unten sind für Ubuntu; für Debian ersetzt du in den ersten beiden Befehlsblöcken jedes ubuntu durch debian (je einmal in der Schlüssel-URL und in der Zeile URIs:) und in der Zeile Suites: den Ausdruck ${UBUNTU_CODENAME:-$VERSION_CODENAME} durch $VERSION_CODENAME.

  1. Installiere die Hilfspakete und lege den Schlüsselordner an.
  2. Lade den Docker-Schlüssel herunter.
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
  1. Trage das Docker-Repository ein. Kopiere den ganzen Block, einschließlich der letzten Zeile EOF.
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
  1. Installiere Docker Engine und das Compose-Plugin.
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Unter Debian und Ubuntu startet der Docker-Dienst nach der Installation von selbst und auch bei jedem Neustart des Servers. Zum Testen:

sudo docker run hello-world

Die Ausgabe enthält „Hello from Docker!“. Damit du künftig ohne sudo arbeiten kannst, nimmst du deinen Benutzer in die Gruppe docker auf und meldest dich danach ab und wieder an. Beachte: Wer in dieser Gruppe ist, hat auf dem Server praktisch Root-Rechte.

sudo groupadd docker
sudo usermod -aG docker $USER

Meldet groupadd „group docker already exists“, ist das in Ordnung. Nach dem erneuten Anmelden sollte docker compose version ohne sudo die Versionsnummer zeigen.

Projektordner anlegen

  1. Lege einen Ordner für AmberChest an und wechsle hinein.
  2. Der Ordner archive darin nimmt später die gesicherten Mails auf. Liegt dein großer Datenträger woanders (zum Beispiel unter /mnt/backup), trägst du später in der Compose-Datei stattdessen diesen Pfad ein.
mkdir -p ~/amberchest
cd ~/amberchest

Installation

Alle Einstellungen stehen in einer Datei namens compose.yaml. Sie beschreibt den Container: welches Image, welche Ordner und welche Passwörter.

  1. Öffne den Editor mit dem folgenden Befehl.
  2. Füge den Inhalt aus dem nächsten Kasten ein (im Terminal meist Strg+Umschalt+V).
  3. Ersetze in der Datei HIER-MASTER-PASSWORT durch ein eigenes langes Passwort. Es verschlüsselt alle Zugangsdaten deiner Postfächer, und es gibt keine Wiederherstellung – bewahre es an einem sicheren Ort auf
  4. Ersetze HIER-PASSWORT-FUER-DIE-OBERFLAECHE durch das Passwort, mit dem du dich später an der Weboberfläche anmeldest
  5. Speichere die Datei mit Strg+O, bestätige mit Enter und beende den Editor mit Strg+X.
nano compose.yaml
# AmberChest – sichert deine IMAP-Postfächer als .eml-Dateien
services:
  amberchest:
    image: ghcr.io/sphings79/amberchest:latest   # fertiges Image (amd64 und arm64)
    container_name: amberchest
    restart: unless-stopped                      # startet nach einem Neustart des Servers wieder
    ports:
      - "8484:8484"                              # Weboberfläche: http://IP-DES-SERVERS:8484
    volumes:
      - ./config:/config
      - ./archive:/archive
    environment:
      AMBERCHEST_MASTER_PASSWORD: "HIER-MASTER-PASSWORT"             # verschlüsselt deine Zugangsdaten, keine Wiederherstellung!
      AMBERCHEST_UI_PASSWORD: "HIER-PASSWORT-FUER-DIE-OBERFLAECHE"   # Anmeldung an der Weboberfläche
      AMBERCHEST_CRON: "0 3 * * *"               # automatische Sicherung jeden Tag um 03:00 Uhr (Zeile entfernen = nur manuell)
      TZ: Europe/Berlin                          # Zeitzone, nach der sich der Zeitplan richtet

Enthält ein Passwort ein Dollarzeichen, schreibe es in der Compose-Datei doppelt ($$), sonst liest Compose es als Variable. Passwörter mit Sonderzeichen setzt du in Anführungszeichen, wie in der Vorlage. Die Ordner config (verschlüsselte Einstellungen und Suchindex) und archive (die gesicherten Mails) legt Docker beim ersten Start an. Willst du keine automatische Sicherung, entfernst du die Zeile mit AMBERCHEST_CRON; dann sicherst du per Knopfdruck.

  1. Starte den Container im Hintergrund.
docker compose up -d

Docker lädt das Image herunter (Chromium für den PDF-Export macht es recht groß) und startet den Container. Am Ende stehen Zeilen wie „Container amberchest Started“.

Einrichtung in der Weboberfläche

Beim ersten Öffnen verlangt die Oberfläche das Passwort, das du als AMBERCHEST_UI_PASSWORD eingetragen hast. Das Master-Passwort kommt im Container aus der Compose-Datei und wird nicht in der Oberfläche abgefragt. Danach legst du dein erstes Postfach an.

  1. Öffne im Browser http://IP-DES-SERVERS:8484 (Platzhalter: die IP-Adresse deines Servers, im Beispiel 192.168.1.50).
  2. Gib bei „Anmelden“ das Oberflächen-Passwort ein und klicke auf „Anmelden“.
  3. Klicke in der Seitenleiste auf „Konto hinzufügen“.
  4. Trage bei „Anzeigename“ eine Bezeichnung ein, zum Beispiel „Privat“.
  5. Trage bei „E-Mail-Adresse“ deine Adresse ein.
  6. Trage bei „Server“ den IMAP-Server deines Anbieters ein (steht in der Hilfe deines Mailanbieters, meist so ähnlich wie imap.anbieter.de).
  7. Wähle bei „Verschlüsselung“ „SSL/TLS (993)“, sofern dein Anbieter nichts anderes vorgibt.
  8. Trage „Benutzername“ und „Passwort“ deines Postfachs ein.
  9. Klicke auf „Verbindung testen“.

Bei Erfolg erscheint „Verbindung erfolgreich“ und die Zahl der gefundenen Ordner. Bei Fehlern stimmt meist Server, Port oder Passwort nicht. Gmail und Microsoft 365 nehmen für IMAP kein normales Passwort mehr an; für sie gibt es die Anmeldeart OAuth, die in der Projektdokumentation beschrieben ist.

  1. Klicke auf „Speichern“.
  2. Wähle im Dialog „Ordner auswählen“ die Ordner, die gesichert werden sollen. Papierkorb, Spam und Entwürfe sind zunächst abgewählt.
  3. Klicke auf „Speichern und sichern“.

Jetzt läuft die erste Sicherung. Der Fortschritt erscheint live in der Oberfläche; bei großen Postfächern dauert sie entsprechend lange. Auf dem Server wird nichts gelöscht und nichts als gelesen markiert. Ab jetzt sichert AmberChest nach dem Zeitplan aus AMBERCHEST_CRON automatisch, im Beispiel täglich um 03:00 Uhr.

Kontrolle

  1. Prüfe den Status des Containers.
  2. Sieh dir bei Bedarf das Protokoll an und beende die Anzeige mit Strg+C.
docker compose ps
docker compose logs -f

In der Spalte „STATUS“ steht „Up“, nach einer halben Minute zusätzlich „(healthy)“. Nach der ersten Sicherung findest du im Ordner archive ein Verzeichnis pro Postfach. Pro Postfach legt AmberChest im Archivordner ein Verzeichnis an, darin liegt jede Nachricht als eigene .eml-Datei im Ordnerbaum des Postfachs. Die Dateien lassen sich mit Thunderbird, Apple Mail oder Outlook öffnen.

ls ~/amberchest/archive

Updates

Neue Versionen erscheinen als neues Image. Deine Einstellungen und das Archiv liegen in den Ordnern config und archive und bleiben beim Update erhalten.

  1. Wechsle in den Projektordner.
  2. Lade das neue Image und starte den Container damit neu.
cd ~/amberchest
docker compose pull
docker compose up -d

Zeigt docker compose up -d „Recreated“ oder „Started“, läuft die neue Version. Optional räumst du das alte Image mit docker image prune auf.

Wenn etwas nicht klappt

  • Die Seite lädt nicht: Prüfe mit docker compose ps, ob der Container läuft, und ob du die richtige IP-Adresse und den Port 8484 verwendest. Blockiert eine Firewall (zum Beispiel ufw) den Port, gib ihn für dein Heimnetz frei. Docker veröffentlichte Ports umgehen ufw-Regeln allerdings unter Umständen, wie die Docker-Dokumentation warnt.
  • Fehler „port is already allocated“: Der Port 8484 wird schon benutzt. Ändere in der Compose-Datei "8484:8484" zu "8485:8484" und rufe die Seite danach auf Port 8485 auf.
  • Der Container startet immer wieder neu: Die Ausgabe von docker compose logs nennt den Grund. Häufig sind es Rechte am Ordner; setze dann in der Compose-Datei unter environment die Zeilen PUID: "1000" und PGID: "1000" auf die Nummern deines Benutzers (id im Terminal zeigt sie).
  • Master-Passwort vergessen: Es gibt keine Wiederherstellung. Ohne das Passwort lässt sich die verschlüsselte Konfiguration nicht entsperren; die bereits gesicherten .eml-Dateien bleiben aber lesbar.
  • „Verbindung testen“ schlägt fehl: Prüfe Servername, Port, Verschlüsselung und ob dein Anbieter für IMAP ein App-Passwort verlangt.
  • Der Download des Images scheitert: Der Server braucht Internetzugang zu ghcr.io.

Voraussetzungen

  • Ein Linux-Server (Debian oder Ubuntu) mit Internetzugang
  • Zugriff auf die Kommandozeile des Servers, direkt oder per SSH
  • Ein Benutzer mit sudo-Rechten
  • IMAP-Zugangsdaten deines Postfachs (Server, Benutzername, Passwort)
  • Ausreichend freier Speicherplatz für die gesicherten Mails

Andere Systeme

Unterstützen

Diese Tools entstehen in meiner Freizeit und bleiben kostenlos, offen und cloud-frei. Wenn dir eins davon einen Nachmittag gespart hat, freue ich mich über einen Kaffee oder ein Stück Pizza.

Kaffee oder Pizza