Schlagwort: Featured

Docker Befehle für den Alltag

docker-befehle

Um Docker im Alltag zu meisten, ist es ratsam sich ein paar Docker Befehle anzueignen und diese anwenden zu können. Ich möchte dir ein paar meiner alltäglichen Helfer in diesem Beitrag vorstellen.

Docker hat sich in den letzten Jahren immer mehr entwickelt und ist aus vielen Homelabs nicht mehr weg zu denken. Einige recht umfangreiche Infrastrukturen basieren vollständig auf dieser Art der Containerisierung. Im Laufe der Zeit wird man immer mehr zum Profi und kann auch komplexe Probleme schnell löschen. Als Anfänger allerdings steht man häufig vor Problemen.

Informationen über Docker Container

Wir starten mit einem Docker Befehl um die Informationen eines Containers, heißt IP-Adresse, Konfiguration und ähnliche Dinge einsehen zu können.

docker inspect {container name}

Log des Containers einsehen

Sollten alle Container immer problemlos laufen, bräuchten wir diesen Beitrag nicht. Aber wir wissen alle, dass das nicht der Fall ist. Um sich die Log Dateien bzw. das STDOUT des Containers anzuschauen gibt es den Befehl

docker logs {container name}

Dieser listet alle Loginformationen seit dem letzten Start des Containers auf. Dies kann also schon mal recht lang werden. Einfacher ist es dann den Befehl um ein -f zu erweitern

docker logs -f {container name}

Jetzt haben wir die Chance das Logfile dauerhaft anschauen zu können. Sobald der Container also etwas protokolliert, wird dies direkt angezeigt. Mit STRG+C können wir das abbrechen.

docker-befehle
Docker Befehle für den Alltag helfen wir bei deiner Arbeit

Alle Container stoppen

Manchmal muss man alle Container auf einmal beenden. Zum Beispiel wenn man Update am Hostsystem einspielen, das Hostsystem kontrolliert herunterfahren oder andere Wartungsarbeiten durchführen möchte.

Wer mit Docker Compose arbeitet und nur eine große Datei hat – davon sei übrigens abzuraten – hat es einfach. Allerdings ist das nur sehr selten der Fall.

docker stop $(docker ps -a -q)

Der Befehl stoppt alle Container (docker stop) die mit dem Befehl (docker -ps -a -q) gefunden werden. Also alle Container, egal welchen Status diese derzeit haben. Hier werden also Docker Befehle zusammen gefasst um dir das Leben direkt zu erleichtern.

Alle Container löschen

Ab und zu ist es auch notwendig alle Docker Container zu löschen. Zum Beispiel um neue Environment-Variablen einzulesen. Allerdings müssen wir erst alle Container stoppen, z. B. mit dem Befehl weiter oben.

Anschließend bedienen wir uns einer sehr ähnlichen Technik und löschen alle Container die mit docker ps gefunden werden

docker rm $(docker ps -a -q)

Ich hoffe ich konnte dir ein paar nützliche Docker Befehle mit an die Hand geben. Mich würde es noch interessieren, was deine Empfehlung für diese Liste wäre.

Wireguard unter Ubuntu 20.04 installieren

Wireguard ist eines der populärsten VPN Verfahren die wir zur Zeit auf dem Markt haben. Zumindest für den Privatgebrauch. In diesem Tutorial installieren wir Wireguard unter Ubuntu 20.04.

Voraussetzungen

  • System mit Ubuntu 20.04 (am besten eine virtuelle Maschine)
  • Router/Firewall mit konfigurierbaren NAT Regeln
  • VPN Client

NAT Regeln konfigurieren

Ich habe eine Firewall der Firma Ubiquity und zwar eine USG-3P. Dort gehen wir in die Einstellungen -> Routing und Firewall -> Port Forwarding und legen eine neue Regel an.

Name: Wireguard (natürlich kannst du auch einen anderen nehmen)
Enabled: Häkchen setzen
From: Anywhere
Port: 51820
Forward IP: {IP Adresse deiner VM}
Forward Port: 51820
Protocol: UDP

Wireguard NAT Konfiguration
Wireguard NAT Konfiguration

Wireguard unter Ubuntu 20.04 installieren

Nun können wir uns an die eigentliche Installation wagen. Ich gehe davon aus, dass du ein System mit Ubuntu 20.04 installiert hast, das SUDO Passwort kennst und das System alle Updates erhalten hat.

Als erstes fügen wir das Repository von Wireguard zu den Paketquellen hinzu:

sudo add-apt-repository ppa:wireguard/wireguard

Durch das hinzufügen werden auch direkt die Paketquellen eingelesen. Wir starten also direkt mit in der Installation:

sudo apt install wireguard -y

Nach ein paar Sekunden ist Wireguard auch schon installiert. Damit wir später auch den Server als „Router“ missbrauchen können, bedarf es eine Anpassung am System. Wir öffnen die sysctl Datei

vim /etc/sysctl.conf

und entfernen das #-Symbol vor der Zeile

net.ipv4.ip_forward=1

:wq! um abzuspeichern und die Datei zu verlassen. Anschließend muss diese noch neu eingelesen werden

sysctl -p

Nun können konfigurieren wir den „Server“. Eigentlich ist jedes System Server und Client gleichzeitig und wird als sogenannte Peer-Node betrieben.

sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'

Legt das notwendige Config File an und gibt ihm die richtigen Rechte.

Anschließend wechseln wir zum root Benutzer mit

sudo -s

Und wir wechseln in das Wireguard Verzeichnis

cd /etc/wireguard

Für jeden Peer werden ein Private Key sowie ein Public Key verwendet. Dieser lässt sich recht schnell mit dem Wireguard Tool erstellen.

umask 077; wg genkey | tee server_priv | wg pubkey > server_pub

Für die Konfiguration benötigen wir gleich den Private Key. Wir lassen uns den also anzeigen und kopieren diesen in die Zwischenablage

cat server_priv

Jetzt können wir die eigentlich Konfigurationsdatei einrichten

vim wg0.conf

Ich verwende für mein Tutorial diese Konfiguration. Eventuell musst du sie an deine Bedürfnisse anpassen:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens160 -j MASQUERADE
ListenPort = 51820
PrivateKey = gIbyfBnNH56ZRwp+vq2R4f2yO6PK7EM7lSrnLyxw9nI=

Unter „Address“ ist das VPN Netzwerk angegeben. Ich verwendet hier ein Class-A Netz um direkt optisch die IP-Adressen unterscheiden zu können. Natürlich kannst du auch gewohnt ein Class-C Netz (z. B. 192.168.100.0/24) verwenden.

Das war es quasi schon mit der Konfiguration. Nun aktivieren wir die Konfiguration, starten sie und schauen uns den Output an:

systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0

Jetzt sollte eine Ausgabe ähnlich zu dieser erscheinen:

● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2020-06-03 17:05:28 CEST; 40min ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 112602 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 112602 (code=exited, status=0/SUCCESS)

Jun 03 17:05:28 wireguard systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] ip link add wg0 type wireguard
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] wg setconf wg0 /dev/fd/63
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] ip -4 address add 10.0.0.1/24 dev wg0
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] ip link set mtu 1420 up dev wg0
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
Jun 03 17:05:28 wireguard systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Wichtig ist der Punkt „Active: active“. Das zeigt uns an, dass der „VPN-Server“ korrekt hoch gefahren wurde.

Client Konfiguration einrichten

Als Client soll in meinem Fall ein Mobiltelefon herhalten. Ich nehme dafür mein iPhone. Die Wireguard App ist aber die gleiche und lässt sich entsprechend leicht adaptieren. Ich nutze ein split tunneling. Heißt, ich möchte nur Zugriff auf meine Netze zuhause haben.

Zuerst erstellen wir uns wieder einen private und public Key für den Client:

umask 077; wg genkey | tee iphone_priv | wg pubkey > iphone_pub

Auch hierfür kopieren wir uns den Private Key in die Zwischenablage:

cat iphone_priv

Natürlich benötigen wir auch eine Konfigurationsdatei für den Client:

vim iphone.conf

Dann packen folgendes da rein (evtl. an deine Wünsche anpassen).

[Interface]
PrivateKey = WEmfArJoJ8BZW01hONF5FPpAHsrM+PpMMRM4/xMCGng=
Address = 10.0.0.2/32

[Peer]
PublicKey = zDubCWfjdKiklSJIiCZeCWDfZq94eAJWBG/9wVyIaSE=
Endpoint = {Deine public ip}:51820
AllowedIPs = 10.0.0.0/24
AllowedIPs = 192.168.10.0/24

Möchtest du, dass der gesamte Trafik durch den VPN Tunnel geht, ersetzt du die zwei Zeilen der AllowedIPs durch

AllowedIPs = 0.0.0.0/8

Natürlich müssen wir dem „Server“ noch sagen, dass er einen „Client“ hat. Vorher die config stoppen

systemctl stop wg-quick@wg0

Dann öffnen wir nochmal die wg.conf Datei und fügen am Ende ein:

[Peer]
PublicKey = 6pLqvUO8nEbGevwhiV4/VY9jWet4XHqCoRNZR0jFSCQ=
AllowedIPs = 10.0.0.2/32

Und starten nun wieder Wireguard

systemctl start wg-quick@wg0

Konfiguration an Client übertragen

Jetzt muss der Client ja noch irgendwie wissen wohin er sich verbinden soll. Du installierst also am besten die offizielle Wireguard App aus dem AppStore oder PlayStore.

Am Server installieren wir uns noch ein Paket mit dem wir QR-Codes erzeugen können. Damit lässt sich die Konfiguration spielend einfach übertragen.

apt install qrencode -y

Dann erzeugen wir den QR-Code mit

qrencode -t ansiutf8 < iphone.conf
Ersteller Wireguard QR Code
Ersteller Wireguard QR Code

In der App auf dem Mobiltelefon fügen wir ein neues VPN hinzu und scannen den QR Code ein. Die Anwendung konfiguriert die notwendigen Schritte. Gegebenenfalls benötigt diese noch Rechte Einstellungen an eurem Telefon machen zu dürfen.

Nextcloud Docker Tutorial – Step by step zum Erfolg

Vor einiger Zeit gab es von mir ein Nextcloud Docker Tutorial bereits auf meinem YouTube Kanal. Dies ist soweit auch weiterhin aktuell. Allerdings bedarf es für eine gute Nextcloud Installation noch weiterer Konfiguration.

Um Nextcloud immer von überall aus erreichen zu können, empfehle ich dir die Installation auf einem virtuellen Server bei einem Hosting Provider. Ich nutze hierfür Netcup, welche ich sehr empfehlen kann.

Weiterlesen