Best Practice bei Serverumzug

  • Falls Du tailscale nutzen willst, solltest Du den entsprechenden UDP-Port in der nc-Firewall freigeben. Siehe https://tailscale.com/docs/reference/faq/firewall-ports

    Zu bedenken ist, daß man sich mit tailscale eine Abhängigkeit zu deren Control-Servern einhandelt. Das gilt es also abzuwägen.

    Verwendest du Tailscale für den Zugriff oder setzt du stattdessen auf direkten SSH-Zugang mit Key-Authentifizierung bzw. eine andere Absicherungsmethode?

  • Verwendest du Tailscale für den Zugriff oder setzt du stattdessen auf direkten SSH-Zugang mit Key-Authentifizierung bzw. eine andere Absicherungsmethode?

    Ich verwende einen Piko als Jumphost, über den ich per Cloud-VLAN zu den anderen Servern springe. SSH ist auf dem Jumphost nur via zufällig generierter IPv6-Adresse erreichbar und nicht über den Standardport, so daß es sehr unwahrscheinlich ist, daß der Zugang von einem Scanner gefunden wird. Authentifizierung läuft über Public Key + Passwort. Und auf dem Jumphost verwende ich auch noch einen anderen (sehr langen) Benutzernamen als auf den eigentlichen Servern - ein spezieller Jumpuser sozusagen.

    Man könnte auch WireGuard verwenden und SSH darüber laufenlassen, so wie es bei tailscale ja auch der Fall wäre.

  • oh, das klingt interessant. einmalig zufällig beim deploy oder regelmäßig und dann update via dyn dns?

    Aktuell nur einmalig generiert aber es reizt mich, die Adresse z. B. täglich neu zu generieren, auch wenn das vermutlich nicht großartig die Sicherheit erhöht, sondern eher die Gefahr, sich selbst auszusperren. :D

    Da ich aber noch Öffnungszeiten für den Jumphost einführen will und sshd dann nachts runterfahre, könnte ich vor dem Hochfahren eine neue Adresse generieren und in die config reinschreiben. Der Client müsste dann die Adresse nach demselben Verfahren generieren (z. B. Datum + Secret durch sha256 jagen und aus den ersten 16 Zeichen die Host-ID erstellen).

  • Prinzipielle Frage: Nutzt du ausschließlich Docker-Volumes oder arbeitest du auch mit gemappten Host-Pfaden, in denen die Daten abgelegt werden?

    Beides. Lieber gemappte Host Pfade, denn dann ist das Backup leichter, irgendwo hab ich aber mal aufgeschnappt, dass für Datenbanken Docker Volumes besser sind. K.A. ob das so stimmt, aber ich machs so. Allerdings habe ich den Docker Ordner immer auch auf /docker rausgelegt, damit ich dann da leicht Zugriff habe.

    Ich verwende also

    /docker

    /docker_build

    applikationsordner/compose.yaml

    /docker_data

    applikationsordner/ (für die gemappten Hostpfade)

    Die Anpassung des Docker Data Root mache ich mit der Erstellung von /etc/docker/daemon.json ->

    Code
    {
    "data-root": "/docker/",
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      }
    }

    Neben der Ordnerumstellung adressiert das auch noch die max. Größe des Log Files, das sonst leicht den Rechner zumüllen kann. Natürlich muss man dann alle Inhalte aus /var/lib/docker/ auch nach /docker/ bei ausgeschaltetem Docker verschieben.

    Das ist so Standard auf jeder meiner Installationen. Am Besten macht man das natürlich wenn man noch gar keine Container angelegt hat, sollte aber auch danach noch gehen.

    Ich packe nicht alles wie fvbor in einen Ordner, denn den Compose File Ast kann man, wenn man das nicht macht, wunderbar in ein privates (!) Github Repo syncen.

    Fail2Ban kann ich mir nach meinem aktuellen Verständnis dann vermutlich sparen zu übernehmen.

    Wenn kein SSH Port dank NC Firewall nach außen offen ist, brauch ich auch kein fail2ban.

    "Dank" Claude Code habe ich weitere Verbesserungen eingeführt, Claude hat mir bei JEDEM Container auch noch Healthchecks in den Stack eingebaut, damit Docker auch weiß wie der Zustand der Container ist.

    Verwendest du Tailscale für den Zugriff oder setzt du stattdessen auf direkten SSH-Zugang mit Key-Authentifizierung bzw. eine andere Absicherungsmethode?

    Ich verwende SSH mit Keys und nicht Tailscale SSH, dann könnte ich auch einfach nur die FW aufmachen und komme mit der Public IP so auch drauf. Das ist für mich der passende Grad von "Abhängigkeit" von Tailscale (siehe terence ). Für Tailscale könnte man auch https://headscale.net/stable/ selbst installieren, oder man verwendet (auch parallel) Zerotier (auch selbsthostbar), Netbird oder andere. Daher habe ich mit der Abhängigkeit kein Problem.

    RS 2000 G12 Pro BW25 (8C EPYC 9645, 16GB, 1TB) | RS 500 G12 BW25 (2C EPYC 9645, 4GB, 128GB) | RS Cyber Quack (1C,2GB,40GB)

  • Ja... Das ist auch noch ein Projekt was ich mal durchführen muss. Auch mehr mit .env Dateien arbeiten :D

    Den Sync kann man wunderbar mit Claude Code aufsetzen. Und bei der Umstellung auf .env Dateien hilft die GUI von Dockhand sehr, da hat man eine schöne Trennung, aber nebeneinander in Fenstern von Compose File und .env. Und kann wunderbar bisher existente geheime Daten durch Platzhalter ersetzen.

    Beides habe ich erst mit dem Neuaufsetzen im Feb diesen Jahres erstmalig gemacht, kann aber beides absolut empfehlen.

    RS 2000 G12 Pro BW25 (8C EPYC 9645, 16GB, 1TB) | RS 500 G12 BW25 (2C EPYC 9645, 4GB, 128GB) | RS Cyber Quack (1C,2GB,40GB)

  • Den Sync kann man wunderbar mit Claude Code aufsetzen. Und bei der Umstellung auf .env Dateien hilft die GUI von Dockhand sehr, da hat man eine schöne Trennung, aber nebeneinander in Fenstern von Compose File und .env. Und kann wunderbar bisher existente geheime Daten durch Platzhalter ersetzen.

    Beides habe ich erst mit dem Neuaufsetzen im Feb diesen Jahres erstmalig gemacht, kann aber beides absolut empfehlen.

    Dockhand hatte ich in meiner Testumgebung auch schon im Einsatz, muss es noch in die Prod umziehen.

    Derzeit mangelt es aber an Zeit und es löpt halt alles.
    Aber ich werde mir Claude Code mal angucken, so als alternative zu ChatGPT. Du schwärmst da ja schon "ganz" leicht von :D

    Muss auch, nach meine Urlaub, erst mal gucken ob es eine gescheite Lösung geht für sudo-rs und ansible.
    Einer meiner Server ist auf Basis von Ubuntu 25.04 und da setzen die jetzt ja auf sudo-rs und das scheitert mit ansible gerade :(

  • Dockhand hatte ich in meiner Testumgebung auch schon im Einsatz, muss es noch in die Prod umziehen.

    Dockhand kann ich dir auch nur wärmstens empfehlen, hat bei mir Portainer abgelöst. ;)

    Aber ich werde mir Claude Code mal angucken, so als alternative zu ChatGPT. Du schwärmst da ja schon "ganz" leicht von :D

    Nach der ganzen schwärmerei von TBT wegen Claude Code, werde ich mir das auch mal bei Gelegenheit ansehen. ^^

  • Dockhand kann ich dir auch nur wärmstens empfehlen, hat bei mir Portainer abgelöst. ;)

    Portainer habe ich früher auch mal genutzt aber ansonsten lange nicht mehr. Hatte für mich einfach keinerlei Mehrwert gehabt.

    Da ich eh alles mit Compose Files mache (und Portainer mit dennen nicht klar kommt...)

    Und Dockhand zeigt mir auch an ob es neuere Versionen für die Container gibt, das ist für mich ein Mehrwert.

  • Automatische Updates mache ich nicht mehr mit Watchtower (ist EOL), sondern habe dafür https://getwud.github.io/wud/#/ installiert.

    Und ja, probiert Claude Code (kostet leider mindestens einen Monatsbeitrag) aus, ist einfach toll. Habe einen neuen Skill, der mir neue Compose Stacks anlegt und dabei die Volumes und das Netzwerk so organisiert wie ich das haben will. Einfach nur „/neuer-stack <neue Anwendung>“ und das Ergebnis wird nahezu perfekt sein. Man kann auch noch zusätzliche, spezifische Anweisungen auf der Tonspur mitgeben.

    Zudem: Sync aller Claude Code Einstellungen, Plugins etc. (ohne secrets) via privatem Githubrepo gebaut. Unassisted Updates damit konfiguriert, inklusive Restarts und Telegram Nachricht falls neu gestartet werden muss, alles drei natürlich zeitgesteuert mitten in den Nacht.

    Für die Arbeit kooperative Arbeit an Konzepten, sowie Schaubildgenerierung als HTML. Was auch super geht: https://mermaid.ai (auch selbst hostbar) ist ein Diagramm Tool, das das die Diagramme per Text konfiguriert. Ein LLM kann natürlich super mit Text umgehen, insofern kann man mit CC auch ein Mermaid Diagramm erstellen.

    Zudem steht Anthropic auf der m.E. richtigen Seite der AI Diskussion in den USA gerade. OpenAI sind da die Stiefellecker.

    RS 2000 G12 Pro BW25 (8C EPYC 9645, 16GB, 1TB) | RS 500 G12 BW25 (2C EPYC 9645, 4GB, 128GB) | RS Cyber Quack (1C,2GB,40GB)

    Einmal editiert, zuletzt von TBT (2. März 2026 um 10:32)