Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt. <markdown> # Das Rumgewürge mit Rootless Docker auf einem RaspberryPi 4 Verwendet als OS wird DietPi auf Debian Bookworm (12) Basis. ## Ziele * Headless Server mit Rootless Docker. * Unprivileged User docker * mit gocryptfs-verschlüsseltem Home-Verzeichnis * damit die Daten bei physischem Raub des Geräts zumindest unzugänglich bleiben. ## Probleme * Das automatische Einhängen des gocryptfs-verschlüsselten Verzeichnissen auf die Home-Partition funktioniert nicht * Einerseits unter Headless eh nicht, weil das mit ssh-logins nicht einfach so funktioniert * Und ich will nirgends das Passwort ablegen. * Also logge ich mich mit sudo -su docker als docker ein. * Mit `gocryptfs -nonempty -allow_other /home/docker.cipher /home/docker` hänge ich das Verzeichnis ein * -nonempty ist superwichtig, weil natürlich die ganzen Dot-Files sonst das Einhängen verhindern. * -allow_other war zwischenzeitlich jedenfalls notwendig, weil Docker sonst nicht startete. Aber vielleicht ist das nach Lösung all der folgenden Probleme auch schon nicht mehr notwendig ... * ABER! Mit sudo -su einloggen geht nicht, weil dann nicht auf systemctl zugegriffen werden kann und Docker nicht funktioniert. * stattdessen mit `machinectl shell docker@` einloggen, dann geht's. * Was aber auch zunächst nicht klappte, weil ich docker ohne Shell angelegt hatte * Also in /etc/shadow docker /bin/bash gegeben und schon geht's. * Rootless Docker scheint zu funktionieren bricht aber bei docker pull ab. * Denn mit gocryptfs (wie mit NFS) funktioniert das notwendige overlayfs nicht richtig. * Das Standard-Verzeichnis für das lokale Docker muss von ~/.local/share/docker verlegt werden. * Also außerhalb von /home/docker ein Verzeichnis docker-share angelegt * und /home/docker/.config/docker/deamon.json angelegt und dort `{"data-root":"/docker-share"}` eingetragen. * WICHTIG: Jetzt noch mit `systemctl --user restart docker` den Docker Dienst neustarten. Dann sollte alles wie geplant gehen. * Fast alles. Der Nginx Proxy Manager Container möchte gern die Ports 80-443 verwenden können - das geht aber ohne Rootrechte zunächst nicht. * Darum einmal mit Systemrechten `sysctl net.ipv4.ip_unprivileged_port_start=80` eingeben * und den überflüssigen Portbereich mit `iptables -I INPUT -p tcp --dport 444:1024 -j DROP; iptables -I INPUT -p udp --dport 444:1024 -j DROP` blockieren. Das war sicher noch nicht alles, aber zumindest den Rotz muss ich jetzt erstmal nicht mehr nachsehen ... </markdown>