Archiv der Kategorie: IT

Rund um InformationsTechnologie (IT)

TailScale Cert automatisieren

Dank Reddit und dem User gellenberg gibt es das hier:

nano /etc/systemd/system/tailscale-cert.service

[Unit]
Description=Tailscale SSL Service Renewal
After=network.target
After=syslog.target

[Service]
Type=oneshot
User=root
Group=root
WorkingDirectory=/etc/ssl/private/
Environment="HOSTNAME=[your device's hostname]"
Environment="DOMAIN=[your tailnet].ts.net"
ExecStart=tailscale cert ${HOSTNAME}.${DOMAIN}

[Install]
WantedBy=multi-user.target

/etc/systemd/system/tailscale-cert.timer

[Unit]
Description=Renew Tailscale cert

[Timer]
OnCalendar=weekly
Unit=%i.service
Persistent=true

[Install]
WantedBy=timers.target

systemctl daemon-reload

systemctl start tailscale-cert.service

systemctl enable tailscale-cert.timer

Your SSL certs will be in /etc/ssl/private.

Tailscale und die NodeKeys

Da ich sowohl unter Proxmox als auch unter UnRaid mit LXC Containern arbeite und diese auch recht gerne clone / kopiere gibt es unschöne Duplikate der NodeKeys wenn tailscale up versucht, sich im TailNet zu verbinden.

Bisher hatte ich immer mit apt purge tailscale das ganze Paket deinstalliert, um es sogleich wieder mit apt install tailscale zu installieren.

Aber es gibt einen eleganteren Weg ohne Neu-Installation, den Denton Gentry beschrieben hat:

sudo systemctl stop tailscaled

sudo rm /var/lib/tailscale/tailscaled.state

sudo systemctl start tailscaled

tailscale up

Und schon musst du dich erneut einloggen und die neue Maschine annehmen.

Docker mit Rootrechten installieren

# Alte Installationsreste entfenen:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt remote $pkg; done

# Alte Docker-Images etc. löschen
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# Docker apt-REpository
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/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Installation Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

#Check mit Hello World
sudo docker run hello-world

Sollten Fehler auftreten, beheben. Sonst war es das.

Vorbereitungen für OpenCloud:

Wir starten mit einem Debian 12 (bookworm) System. Auf dem System gilt es, noch ein paar Vorbereitungen zu treffen. Diese ganzen Installationen führen wir noch als root durch. Erst später arbeiten wir ausschliesslich mit dem neu eingerichteten User admin.

Allgemein:

# Update Pakete sammeln
apt update -y
# Upgrade durchführen
apt upgrade -y
# Texteditor nano
apt install -y nano
# Curl für diverse Installationen
apt install -y curl unzip xz-utils
# Hardware bei Bedarf checken
apt install -y lshw
# Sudo für admin
apt install -y sudo
# Einhängen von Netzlaufwerken
apt install -y samba smbclient cifs-utils

Für Docker und Portainer:

# Für das Usermapping bei Docker
apt install -y uidmap
apt install -y slirp4netns
apt install -y dbus-user-session
# Für modprobe
apt install -y kmod

Benutzer admin einrichten:

# Benutzer admin anlegen
adduser admin
# In die Gruppe admin aufnehmen
groups admin
#Passwort für admin setzen
# falls noch nicht geschehen!
passwd admin
(linux User -PW merken!)
#Passwort für Samba setzen
smbpasswd -a admin
(smb User -PW merken!))
# SSH Login für User admin erlauben
nano /etc/ssh/sshd_config
#ganz unten mit tab einfuegen
AllowUsers admin
# Sudo Rechte einräumen
sudo usermod -aG sudo admin

Samba-Shares:

# Docker Ordner erstellen
mkdir /docker
# Berechtigungen neu setzen
chown 1000:1000 /docker
# Erster Login als admin!
login admin
cd /docker
# Verzeichnis für Opencloud vorbereiten
mkdir opencloud
# Verzeichnis für Portainer anlegen
mkdir portainer
# Samba-Freigabe
sudo nano /etc/samba/smb.conf
# Ganz unten folgende Zeilen einfügen
###
[docker]
path = /docker
read only = no
guest ok = no
valid users = admin
###
# Samba neustarten
sudo systemctl restart smbd.service
# Check, ob der Share funktioniert
smbclient -U admin //[IP_address|Server_name]/docker -c ‚ls‘
# per UNC
\\Debian_server_IP\docker
# Nun auf einem beliebigen Server Festplattenplatz per Samba bereitstellen. Hier bspw. auf einem lokalen Server unter dem Sharenamen cloud – freigegben für den Benutzer cloud:
# Test, ob Zugriff möglich ist
smbclient -U cloud //[IP_address|Server_name]/cloud -c ‚ls‘
#Ergebnis:
. D 0 Fri Apr 11 10:20:59 2025
.. D 0 Fri Apr 11 10:20:59 2025

5858435620 blocks of size 1024. 2073083928 blocks available
# smbcredentials eintragen
nano /home/admin/.smbcredentials
username=cloud
password=XXXX
domain=workgroup
# sichern
chmod 0600 ~/.smbcredentials
#Dort folgende Zeile eintragen:
//[IP_address|Server_name]/cloud /mnt/cloud cifs credentials=/home/admin/.smbcredentials,uid=admin,gid=admin 0 0
# Dauerhaften Zugriff auf diesen Share
sudo mkdir /mnt/cloud
sudo nano /etc/fstab
#Samba Service restarten
sudo systemctl restart smbd.service
# Check:
sudo mount -a

Vorüberlegungen zu OpenCloud

Debian 12 als Host:

Die Installation setzt voraus, dass ein Linux-Host-System genutzt wird. In diesem Fall ist es Debian 12. Diese Anleitung lässt sich mit geringen Abweichungen aber sicher auch mit Ubuntu durchführen.

LXContainer, Docker und Portainer:

Ich habe das Ganze unter Proxmox und unter Unraid 7 als LXContainer getestet. Du kannst dir überlegen, ob du LXCs verwendest und Docker nicht-privilegiert / rootless laufen lassen möchtest. Aus verschiedenen Überlegungen habe ich mich für den Weg entschieden, LXCs und Docker privilegiert laufen zu lassen. Solltest du dich anders entscheiden, nimm nicht-privilegierte LXCs und/oder Docker ohne Root-Berechtigung. Ich habe zu Docker noch Portainer in der Community Edition installiert. Warum, wirst du im Lauf der Anleitung verstehen. Abweichend von der sehr praktikablen Anleitung von der OpenCloud GmbH habe ich einen Portainer Stack gebildet, der auch über Portainer administrierbar ist.

Collabora ohne ClamAV und KeyCloak;

Überlege dir in Ruhe, ob du OnlyOffice oder Collabora nutzen willst, um Dateien online erstellen und bearbeiten zu können. Hier wird Collabora genutzt. Aus der angebotenen Beispielkonfiguration der OpenCloud GmbH auf GitHub lassen sich individuell angepasste Installationen durchführen. Der Antivirus-Schutz von ClamAV und noch mehr die OIDC-Lösung von KeyCloak sind recht umfangreiche mächtige Programmteile. Ob du sie wirklich brauchst, entscheidest du. Hier verzichte ich auf beide Programme, um die Installation nicht noch umfangreicher zu machen, als sie schon so ist. Nachträglich zu KeyCloak zu wechseln ist wahrscheinlich nicht ganz so einfach. Aber wenn du das Ganze für vielleicht 10-20 User aufsetzt, ist KeyCloak auch wirklich nicht notwendig.

TailScale als VPN-Lösung:

Sicherheit der gesamten Installation kannst du bspw. dadurch sicherstellen, dass der Zugriff nur über verschlüsselte private Netze erfolgen kann – also VPN. Ob du das über WireGuard, Zerotier, Freebird, TailScale oder Cloudflare löst: Das weisst du am Besten. Ich habe mich für TailScale entschieden.

NetCup oder Cloudflare als Nameserver;

Du brauchst einen voll qualifizierten Domainnamen (FQDN). Wo du den registrierst, ist letztlich egal – wichtig nur, dass du volle Kontrolle über die NameServer-Einträge hast. Denn dort müssen wir einige Einträge machen. Und für die DNS-Challenge von traefik als Reverse-Proxy brauchen wir einen API-Zugriff auf den Nameserver. Suche nach LEGO und DNS. Dort findest du eine umfangreiche Liste von Anbietern, die per DNS-Challenge Modifikationen via API zulassen. Ich habe sowohl mit Cloudflare als auch mit NetCup Tests durchgeführt und bin zum Schluss gekommen, dass ich für diese Doku NetCup verwende. Einfach deshalb, weil ich dort viele Domains hoste und der Zugriff auf den DNS vergleichsweise leicht funktioniert. Das PollingIntervall bei Netcup solltest du auf 1000 setzen, sonst wird es schwierig. Mit Cloudflare gab es keine Zeitverzögerungen beim Neuladen der NS-Einträge.

Ausreichenden Festplattenspeicher:

Ein letzter Gendanke: Beachte, dass du Festplattenspeicher brauchst, um OpenCloud sinnvoll einsetzen zu können, schon die Installation ist umfangreich. Es ist daher überlebenswert, die OpenCloud auf einem Rechner laufen zu lassen, von dem du Zugriff auf entsprechend grosse Festplatten-Kontingente herstellen kannst. 

Vaultwarden mit Tailscale in Docker auf der Synology

Worum geht es?

Sich Passwörter auszudenken, sie sich zu merken und sinnvoll auf sie zuzugreifen ist für Menschen, die wirklich viele Zugänge zu unterschiedlichen Anwendungen, Shops oder Servern haben, gar nicht so leicht. Im Folgenden beschreibe ich die Installation einer ganzen Umgebung dafür, diese Aufgabe in die eigene Hand zu nehmen. Jemand, der sensible Inhalte wie Passwörter gerne auf eigenen Systemen sicher verwahren will und dazu nicht mit Portfreigaben, SSL-Zertifikaten etc. hantieren will, kann sich mit etwas technischem Verständnis und dieser Anleitung sein selbst gehostetes System aufbauen. Zunächst kläre ich die 4 Begriffe aus dem Titel. Dann beschreibe ich Schritt für Schritt, was zu tun ist.


Vaultwarden

Vaultwarden ist eine freie Software, die selbst gehostet werden kann, um mit bitwarden-Clients zentral seine Passwörter zu verwalten und zu nutzen. Ausserdem lassen sich in dem dabei verwendeten ”Tresor“ Kartendaten, TOTP-Zugangsdaten etc. speichern. Sichere Passwörter können generiert werden, alle Daten können gruppiert und ggbfalls geteilt werden.

Tailscale

Tailscale ermöglicht den Aufbau eines VPN-Mesh-Netzwerks auf der Grundlage von Wireguard. Die einzelnen Maschinen (Nodes) sind via MagicDNS mit FQDN adressier- und nutzbar innerhalb des ts.net Raums. Ports müssen dazu weder geöffnet, weitergeleitet werden. Selbst gehostete Applikationen können ohne Reverse-Proxies bereitgestellt werden. Zugriff zum VPN-Mesh ist nur für Berechtigte möglich.

Docker

Docker ist eine für viele Host-Betriebssysteme verfügbare Virtualisierungslösung, die in Stacks aus Containern ganze Applikationen bereitstellen lässt. Teilweise sind wenige Zeilen Code ausreichend, um bspw. einen Webserver anzulegen und online zu bringen. Das schont Ressourcen und ermöglicht mit vergleichsweise geringem Aufwand das Hosting von unterschiedlichen Apps.

Synology

Die Firma Synology stellt so genannte Network Attached Storage (NAS) Systeme her, die sie Diskstation (oder in einem anderen Format Rackstation etc. nennen). Über den DiskStationManager (DSM) lassen sich diverse Systemeinstellungen administrieren und es können Pakete zusätzlicher Software installiert werden. Bis hin zu Virtuellen Maschinen (VM) und eigenen Mailservern lassen sich die Synologies erweitern. Unter anderem lässt sich auch Docker auf der Synology einrichten.


Auswahl der Hardware

Um es kurz zu machen: Es gibt unzählige Synology-Modelle. Für unsere Zwecke reicht eine DS220+ (oder DS224+) mit 10 GB RAM Speicher und zwei 6 TB HDD. Zu den 2 GB RAM lassen sich weitere 8 GB aufrüsten (nicht nur 4 GB wie Synology sagt!). Das sollte man auch tun. Je mehr RAM die DS hat, desto besser. Wer auf Virtuelle Maschinen (VM) Wert legt, muss natürlich eine bessere Version mit leistungsfähigerer CPU und mit mehr RAM kaufen. Man kann sich ja auf der Website von Synology anschauen, was es gibt.

Installation von Docker auf der Synology

Ich habe zunächst einen User docker eingerichtet samt eigenem Verzeichnis, in dem dann nach und nach alle persistenten Datenspeicher der Container abgelegt werden. Die einfachsten und verständlichsten englischsprachigen Anleitungen für viele Installationen auf Synology findest du unter MariusHosting. Ich fände es müssig, gute Anleitungen zu übersetzen und im Grunde zu kopieren. Daher verweise ich gerne auf funktionierende Quellen. Ich empfehle daher zunächst, Portainer bis zu Step 13 zu installieren. Der Rest ist für unsere Zwecke nicht wichtig im Moment.