computer:neuaufbau_hermes

This is an old revision of the document!


Neuaufbau Backup- und Medienserver 'hermes'

Hardware: Intel-MiniITX mit 4-Kern-Atom
OS: Ubuntu 20.03 Server

  • Minimum-Installation nur SSD, 8TB-Platte nachträglich hinzugefügt
  • Alle Updates
  • docker.io installiert
  • springm zur Gruppe docker hinzugefügt

siehe auch https://wiki.zalmoxis.aberdoch.de/doku.php?id=computer:ubuntu:keyfile-based_luks_decryption

sudo dd if=/dev/urandom of=/root/.keyfile bs=1024 count=4
chmod 0400 /root/.keyfile
cryptsetup luksOpen /dev/sdb1 backupdisk --key-file /root/.keyfile

/etc/crypttab erweitern ( UUID mit blkid ermitteln)

backupdisk UUID=efb4986f-ad45-4b80-af4d-13c2782393a8 /root/.keyfile luks,discard

/etc/fstab erweitern:

/dev/mapper/backupdisk /backupdisk btrfs defaults 0 2
mkdir /backupdisk
mount -a

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 hermes.fritz.box (IP: 192.168.2.252)

Create an empty file to prevent the service from starting

sudo touch /etc/cloud/cloud-init.disabled

Disable all services (uncheck everything except “None”):

sudo dpkg-reconfigure cloud-init

Uninstall the package and delete the folders

sudo apt-get purge cloud-init
sudo rm -rf /etc/cloud/ && sudo rm -rf /var/lib/cloud/
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.2.3/docker-compose-`uname -s`-`uname -m` \
   -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v

from https://github.com/linuxserver/docker-rsnapshot/pkgs/container/rsnapshot / https://docs.linuxserver.io/images/docker-rsnapshot

  • Backup-Platte gemounted auf /backupdisk
  • Benötigte Pakete awake und ssmtp werden von cron mittels @reboot beim Start aus /config/install_packages installiert
  • config-, exclude- und pre_rsnapshot-Dateien in ~springm/docker/rsnapshot/config abgelegt, Pfade angepasst
  • run_rsnapshot ebenfalls in /config abgelegt

Todo

  • (rsnapshot-diffs könnten regelmäßig abgelegt werden.)

Alle Docker-Server-Daten sind in /srv. Docker-Konfiguration ist in ~springm/docker. Traefik-Logs sind in /srv/logs/traefik.log

cd docker
docker network create proxy
sudo touch acme.json
sudo chmod 0600 acme.json
cryptsetup luksErase /dev/sdc1
# erstes Passwort
cryptsetup -y -v luksFormat /dev/sdc1
# zweites Passwort
cryptsetup -y -v luksAddkey /dev/sdc1
# Keyfile
cryptsetup -v luksAddKey /dev/sdc1 /root/.keyfile 
cryptsetup luksOpen /dev/sdc1 enc-backupCopy1 --key-file=/root/.keyfile

( https://wiki.ubuntuusers.de/NFS/ )

/home/springm/docker/web/data kudell.fritz.box(rw,async,no_subtree_check,crossmnt) denkbrett.fritz.box(rw,async,no_subtree_check,crossmnt)

Neben der /etc/fetchmailrc noch eine /etc/fetchmailrc.yahoo, die nur alle 30 Minuten aus der crontab aufgerufen wird

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

enablen und starten:

systemctl enable fail2ban
systemctl start fail2ban

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/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.

  • computer/neuaufbau_hermes.1647625596.txt.gz
  • Last modified: 2022/03/18 17:46
  • by springm