Archiv der Kategorie: OpenCloud

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.