Verschlüsselter Docker-Server thinc
Hardware: HP t520 thin client mit 120GB SSD
OS: Ubuntu Focal Fossa
- Minimum-Installation
- Alle Updates
- docker.io installiert
- springm zur Gruppe docker hinzugefügt
Netzwerk: *.zalmoxis.aberdoch.de registriert
Boot-Disk verschlüsseln
Entsprechend c't-Artikel luks_verschluesselte_linux-systeme_ueber_ssh_entsperren_c_t_magazin.pdf
apt install dropbear-initramfs
Die ssh-public-keys liegen in /etc/dropbear-initramfs/authorized_keys. Nach Änderung muss das initramfs aktualisiert werden:
update‐initramfs ‐u
Entsperren mit ssh -v -p 20022 thinc.fritz.box
U.U. ist die ip 192.168.2.52, je nachdem wie die Fritzbox gelaunt ist…
Snap entfernen
snap list # alle gelisteten Pakete snap remove apt purge snapd rm -rf /var/snap /var/lib/snapd
Statische IP
/etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: no
addresses:
- 192.168.2.251/24
gateway4: 192.168.2.254
nameservers:
addresses: [192.168.2.253, 9.9.9.9]
Aktivieren mit netplan apply
Docker-Compose
apt update && apt upgrade && apt install docker.io sudo systemctl enable --now docker usermod -aG docker springm reboot
# check for latest version curl -L https://github.com/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` \ -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose -v
fail2ban
Nach https://tkaefer.de/blog/2021/12/07/follow-up-docker-and-fail2ban-how-i-solved-it-for-me/
sudo apt install sqlite3 sudo apt install fail2ban ipset
Konfiguration für dokuwiki in '/etc/fail2ban/jail.d/dokuwiki-403.conf'
[nginx-403] enabled = true port = http,https filter = nginx-403 logpath = /home/springm/docker/dokuwiki/dokuwiki-data/log/nginx/access.log maxretry = 3 findtime = 300 bantime = 300 banaction = iptables-mangle-allports[name="nginx-403"]
und '/etc/fail2ban/filter.d/nginx-403.conf'
[Definition] failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 403 .*(login|start) ignoreregex =
Das Logging in dokuwiki muss so geändert sein, dass die echte IP und nicht die von traefik geloggt wird.
postfix
Installieren aus Repository apt install postfix bsd-mailx libsasl2-2 sasl2-bin libsasl2-modules
- “Internet mit Smarthost”
- E-Mail-Name des Systems: “thinc.fritz.box”
- SMTP-Relay-Host: “mail.gmx.net”
Weitere Anweisungen von https://speefak.spdns.de/oss_lifestyle/debian-9-postfix-installation
dovecot
Installieren aus Repository apt install dovecot-imapd dovecot-sieve dovecot-managesieved
Traefik2
Entsprechend c't-Artikeln
- zalmoxis.aberdoch.de als A-Name registriert, IP-Adressupdate initialisiert durch Fritzbox, automatisch durchgeführt durch http://192.168.2.253/dyn/dns.php
- *.zalmoxis.aberdoch.de als Wildcard-Domainname registriert
- Zertifikate werden von traefik-certs-dumper exportiert.
TODO: automatischer Transport an die Stelle, von der sie dovecot und postfix nutzen können - Traefik Dashboard basic-auth geschützt
- TCP-Weiterleitung für dovecot
Für einen weiteren Versuch interessant: https://zrezai-dev.de/projekt/traefik-nextcloud-docker-swarm/
Dokuwiki
Container von lscr.io/linuxserver/dokuwiki
Daten und Konfiguration in /home/springm/docker/dokuwiki/data
Nextcloud
Temporäre Superuser-Privilegien in der Datenbank
ALTER USER oc_owncloud WITH SUPERUSER; ALTER USER oc_owncloud WITH NOSUPERUSER;
DB Restore
'docker exec -it nextcloud-db-1 bash'
su - postgres psql -U nextcloud nextcloud DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO nextcloud; \q cat /database_dump/nextcloud-db-1.sql.gz | gunzip | psql -U nextcloud nextcloud
Preview Generation
UptimeKuma
Rsnapshot
from https://github.com/linuxserver/docker-rsnapshot/pkgs/container/rsnapshot / https://docs.linuxserver.io/images/docker-rsnapshot
Todo:
- Backup-Platte mounten
- mailx im Container installieren mit apk install mailx - kann evtl auch im bash-skript vor dem ausführen von rsnapshot passieren
Abfrage mit ''apk list mailx | wc -l''
* rsnapshot-bundle.sh kann man in's config-Verzeichnis legen
- (rsnapshot-diffs könnten regelmäßig abgelegt werden.)