Sichere Server-Schaltflächen mit OliveTin erstellen¶
Veröffentlicht am 12. August 2026 · Geschätzte Lesezeit: 5 Minuten
OliveTin zeigt vorher festgelegte Shell-Befehle als große Schaltflächen im Browser. So kannst du zum Beispiel einen bestimmten Docker-Container neu starten, ohne auf dem Handy lange Befehle einzutippen. Mit lokaler Anmeldung und einer ersten Aktion ist OliveTin in etwa 20 Minuten eingerichtet.
Voraussetzungen
- Ein Linux-Server mit Docker und Docker Compose
- Eine feste private IP-Adresse für den Server
- Port 1337/TCP ist im Heimnetz frei
- SSH-Zugriff und ein Benutzer mit
sudo-Rechten
1. Arbeitsordner und Docker-Gruppe vorbereiten¶
Führe die Befehle auf dem Docker-Server aus. Sie erstellen den Konfigurationsordner und wechseln direkt hinein:
Ermittle die numerische Gruppen-ID des Docker-Sockets:
Notiere die ausgegebene Zahl als <docker-gid>. OliveTin benötigt diese Gruppe,
damit der Docker-Befehl im Container auf den Socket zugreifen kann.
2. Passwort-Hash erzeugen¶
Der folgende Befehl fragt das gewünschte OliveTin-Passwort verdeckt ab und erzeugt in einem kurzlebigen, netzwerklosen Container einen Argon2id-Hash. Das Klartext- Passwort landet dadurch nicht in der Shell-Historie:
read -rsp "OliveTin-Passwort: " OLIVETIN_PASSWORD; echo
printf '%s' "$OLIVETIN_PASSWORD" | docker run --rm -i --net=none leplusorg/hash sh -c 'argon2 "$(openssl rand -base64 16)" -id -t 4 -m 16 -p 6 -l 32 -e'
unset OLIVETIN_PASSWORD
Kopiere die vollständige Ausgabe, die mit $argon2id$ beginnt. Sie wird im
nächsten Schritt als <argon2id-hash> eingesetzt und ist nicht das Klartextpasswort.
3. OliveTin sicher konfigurieren¶
Erstelle /opt/olivetin/config/config.yaml. Ersetze <argon2id-hash> durch die
Ausgabe aus Schritt 2 und <container-name> durch den exakten Namen eines
unkritischen Testcontainers, zum Beispiel uptime-kuma.
logLevel: "INFO"
authRequireGuestsToLogin: true
authLocalUsers:
enabled: true
users:
- username: admin
usergroup: admins
password: "<argon2id-hash>"
accessControlLists:
- name: admins
addToEveryAction: true
matchUsergroups:
- admins
permissions:
view: true
exec: true
logs: true
actions:
- title: "Docker-Container anzeigen"
shell: "docker ps"
timeout: 10
- title: "<container-name> neu starten"
shell: "docker restart <container-name>"
timeout: 30
Der Benutzer admin muss sich anmelden. Die ACL erlaubt nur Mitgliedern der
Gruppe admins, Aktionen zu sehen und auszuführen. Befehle sind fest vorgegeben;
es gibt kein frei beschreibbares Terminalfeld.
Nur exakt benötigte Befehle freigeben
Veröffentliche OliveTin niemals direkt im Internet. Befehle wie rm, frei
einsetzbare Benutzereingaben oder eine allgemeine Shell-Schaltfläche gehören
nicht in die Konfiguration. Jede Aktion läuft mit den Rechten des Containers.
4. Compose-Datei erstellen¶
Erstelle /opt/olivetin/compose.yaml. Ersetze <server-ip> durch die private IP
des Servers und <docker-gid> durch die Zahl aus Schritt 1.
services:
olivetin:
image: jamesread/olivetin:latest
container_name: olivetin
restart: unless-stopped
ports:
- "<server-ip>:1337:1337"
group_add:
- "<docker-gid>"
volumes:
- ./config:/config:ro
- /var/run/docker.sock:/var/run/docker.sock
Die Konfiguration wird schreibgeschützt eingebunden. Der Docker-Socket ermöglicht die beiden Container-Aktionen, verleiht aber weitreichenden Zugriff auf Docker.
Docker-Socket entspricht praktisch Administratorzugriff
Wer OliveTin-Aktionen oder die Konfiguration kontrolliert, kann über Docker den gesamten Host beeinflussen. Beschränke Port 1337 auf das vertrauenswürdige Heimnetz, nutze ein starkes Passwort und sichere den Server zusätzlich mit einer Firewall.
5. Konfiguration prüfen und starten¶
Prüfe zuerst die Compose-Datei:
Starte OliveTin und kontrolliere die Protokolle:
Die Datei muss exakt config.yaml heißen. Bei einem YAML-Fehler nennt das
Protokoll meist die betroffene Zeile.
6. Anmeldung und erste Aktion testen¶
Öffne http://<server-ip>:1337/login und ersetze <server-ip> durch die private
Server-IP. Melde dich als admin mit dem Passwort aus Schritt 2 an.
Klicke zuerst auf Docker-Container anzeigen. Die Ausgabe sollte die laufenden Container zeigen. Prüfe danach den Zielnamen der Neustart-Schaltfläche noch einmal und teste sie nur mit einem Dienst, dessen kurzer Neustart keine Daten gefährdet.
Kontrolliere parallel im Terminal den Status:
7. Weitere Aktionen vorsichtig ergänzen¶
Bearbeite config/config.yaml und füge nur einzelne, vollständig festgelegte
Befehle hinzu. Eine harmlose Diagnoseaktion kann zum Beispiel den freien Platz
des OliveTin-Konfigurationsordners anzeigen:
Starte OliveTin nach jeder Änderung neu und prüfe die Protokolle:
Eine Änderung nach der anderen
Teste jede Aktion zuerst direkt im passenden Container oder auf einem Testsystem. So erkennst du fehlende Programme, falsche Namen und unerwünschte Nebenwirkungen, bevor jemand die Schaltfläche verwendet.
8. Backup und Rückweg¶
Stoppe OliveTin kurz und sichere Compose-Datei und Konfiguration:
Erstelle ein datiertes, nur für Administratoren lesbares Archiv:
sudo mkdir -p /var/backups
sudo tar -czf "/var/backups/olivetin-$(date +%F).tar.gz" -C /opt olivetin
sudo chmod 600 "/var/backups/olivetin-$(date +%F).tar.gz"
Starte OliveTin wieder:
Für den sofortigen Rückweg stoppst du den Stack mit docker compose down. Die
anderen Container laufen weiter. Entferne bei einem Sicherheitsverdacht außerdem
die Freigabe von Port 1337 und prüfe alle definierten Aktionen.
9. Aktualisieren und Fehler finden¶
Lege vor einem Update ein Backup an. Aktualisiere anschließend den Container:
- OliveTin startet nicht: Dateiname
config.yaml, YAML-Einrückung und Protokollmeldungen prüfen. - Anmeldung schlägt fehl: Den vollständigen Argon2id-Hash einschließlich aller
$-Zeichen kontrollieren und bei Bedarf einen neuen Hash erzeugen. permission deniedam Docker-Socket:<docker-gid>erneut mitstatermitteln und Container neu erstellen.No such container: Exakten Namen mitdocker ps --format '{{.Names}}'anzeigen und in beiden Stellen der Aktion ersetzen.- Befehl endet nach drei Sekunden: Für die Aktion einen passenden
timeout- Wert setzen; nie unbegrenzt lange Aktionen verwenden.
10. Quellen und Video¶
- Offizielle OliveTin-Installation mit Docker Compose
- Offizielle lokale Benutzeranmeldung
- Offizielle Zugriffskontrolllisten
- Video: OliveTin mit Docker Compose installieren
Fertig¶
OliveTin stellt nun nur angemeldeten Administratoren die festgelegten Server-Schaltflächen bereit. Die Funktionsprüfung ist bestanden, wenn die Containerliste angezeigt wird, der gewählte Testcontainer sauber neu startet und kein nicht angemeldeter Browser auf die Aktionen zugreifen kann.