Upgrade helyett újra kellett telepítenem a Debiant (11) az othoni szerveren. Alapvetően ugyanazt kellett csinálni, mint egy VPS esetében, és Busterhez van Ansible playbookom is, amely most Bullseye-jal is jól működött.

Mail

A root mail továbbításához nullmailert használunk.

Belső meghajtók

$ lsblk -o model,name,uuid,type,pttype
MODEL                NAME   UUID TYPE PTTYPE FSSIZE
WDC WD40EFPX-68C6CN0 sda         disk gpt
                     └─sda1 ID30 part gpt      3,6T
PNY CS900 120GB SSD  sdb         disk gpt
                     ├─sdb1 ID10 part gpt      475M
                     └─sdb2 ID11 part gpt      109G
WDC WD10EZEX-22MFCA0 sdc         disk gpt
                     └─sdc1 ID20 part gpt    915,8G

$ findmnt --fstab -o source,target,fstype,options
SOURCE    TARGET           FSTYPE OPTIONS
UUID=ID11 /                ext4   errors=remount-ro,noatime
UUID=ID10 /boot/efi        vfat   umask=0077
UUID=ID30 /srv/smb/data    ext4   defaults,noexec
UUID=ID20 /var/lib/backups ext4   defaults,noexec
/swapfile none             swap   sw

Emlékeztetőül:

If your machine has more than one drive sharing a naming scheme, the order in which their corresponding device nodes are added is arbitrary. This may result in block device names (e.g. /dev/sda and /dev/sdb) switching around on each boot. Persistent naming solves these issues. – Persistent block device naming (ArchWiki)

SMART

A S.M.A.R.T. egy adattárolókba épített felügyeleti rendszer, a smartmontools pedig egy szabad szoftver e rendszer eléréséhez. A használatáról lásd ezt a Random Bits cikket és az ArchWikit. Az egyik eleme a smartctl parancs:

# apt install smartmontools
# # capabilities: print which tests a device supports
# smartctl -c /dev/sdb
# # test: run a test
# smartctl -t short /dev/sdb
# # list: print recent test results
# smartctl -l selftest /dev/sdb
# # health: print overall health status
# smartctl -H /dev/sdb

Az alábbiak általános, hasznos infókat adnak egy meghajtóról:

# # info: print device information
# smartctl -i /dev/sdb
# # attributes: print vendor specific SMART attributes with thresholds
# smartctl -A /dev/sdb
# # célzott kérdés 1: van-e SMART képesség és be van-e kapcsolva?
# smartctl -i /dev/sdb | grep "SMART support"
# # célzott kérdés 2: hány Celsius-fok a meghajtó hőmérséklete?
# smartctl -A /dev/sdb | grep "Temperature_Celsius" | awk '{print $2 ": " $10}'

A másik elem pedig a smartd.service, amely lehetővé teszi a tesztek automatizálását, probléma esetén pedig értesítést küld. Mi a root-nak küldünk mailt, amelyet a beállításainknak köszönhetően emailben is megkapunk.

# systemctl status smartd.service

Az /etc/smartd.conf tartalma legyen az alábbi:

DEVICESCAN -a -s (S/../.././02|L/../(01|15)/./03) -m root -M exec /usr/share/smartmontools/smartd-runner

Ez minden felismert meghajtóra mindennap 2-kor futtat short, minden hó 1. és 15. napján 3-kor long teszteket. A sor végére beszúrhatunk egy -M test opciót az emailküldés tesztelésére, aztán ezt töröljük. DEVICESCAN helyett megadhatunk meghajtót (pl. /dev/disk/by-id/wwn-*), és több sort is felvehetünk, ha más-más időpontban vagy eltérő teszteket akarunk futtatni a meghajtóinkra.

A konfigfájl módosítása után indítsuk újra a smartd-t:

# systemctl restart smartd.service

Külső meghajtók

Ezek gyakran NTFS fájlrendszerűek, újabban exFAT. A Debian 11 5.10 kernellel jön, és 5.4 óta van beépített exFAT-támogatás, így már nincs szükség a korábbi exfat-fuse és exfat-utils csomagokra. Az ntfs-3g viszont kell NTFS-re íráshoz:

# apt install ntfs-3g

Lásd még: formázás és mountolás.

Samba

Fájlmegosztáshoz nálam jól bevált a Samba (régebben próbálkoztam NFS-sel is), és az Windows klienssel (pl. File Explorerrel) is működik.

A mappát és a konfigot lásd lentebb.

# mkdir -p /srv/smb/myuser/
# chown myuser:myuser /srv/smb/myuser/
# chmod 2770 /srv/smb/myuser/
# nano /etc/samba/smb.conf
$ testparm /etc/samba/smb.conf

A [homes] és [printers] szekciókat kikommenteltem, a [myuser]-t hozzáadtam:

[myuser]
comment = Private share
path = /srv/smb/myuser
browseable = no
read only = no
public = no
guest ok = no
valid users = myuser
create mask = 0600
directory mask = 0700

User hozzáadása és a tűzfal beállítása:

# smbpasswd -a myuser
# systemctl restart smbd.service
# ufw allow samba

Figyelem, a megfelelő systemd unit neve smbd, de létezik samba is (Samba AD Daemon). Linux kliens PC-n használjunk autofs-t vagy systemd automount-ot a távoli mappa csatolásához.

VPN-kapcsolat

Nem VPN-szerverre van szükségünk, hanem kliensre, az internetkapcsolatunkat akarjuk maszkolni egy VPN-szolgáltatás segítségével. Az 5.6 kernel óta van beépített Wireguard-támogatás, így az új Debiannal már nem akarunk openVPN-t használni.

Ha a kapcsolat konfigja /etc/wireguard/provider-at.conf:

# apt install openresolv wireguard
# systemctl enable --now wg-quick@provider-at

Gondolkodhatunk mesh VPN használatában is, amely szintén Wireguard-ra épül. Lásd a Tailscale telepítési útmutatóját és a saját bejegyzésünket.

Docker

Ha valami nem érhető el Debian-repóból, és összetettebb, mint egy szkript vagy egy parancsfájl, akkor Docker-konténerként akarjuk majd használni. Ehhez először is telepítsük a Dockert.

A Docker-képek frissíthetőségének követéséhez jól jöhet a Diun.

Backup

Bár egy külön bejegyzés is foglalkozik a Borg Backup-pal, itt is végigvesszük a beállítását. Bookworm-ön így telepíthető a Borg 1.4 és a Borgmatic:

$ echo "deb http://deb.debian.org/debian/ bookworm-backports main" | sudo tee -a /etc/apt/sources.list
# apt update
# apt install borgbackup/bookworm-backports borgmatic
$ borg --version
borg 1.4.0
$ borgmatic --version
1.7.7

Hozzuk létre a ~/.config/borgmatic.d/home.yml konfigot:

location:
    source_directories:
        - /home/myuser
    repositories:
        - /var/lib/backups/myuser/home.borg
    exclude_if_present:
        - .nobackup
storage:
    compression: zstd
retention:
    keep_daily: 10
    keep_weekly: 5
    keep_monthly: 12

A választott tömörítő a zstd. Menjünk végig a mappáinkon, és tegyünk egy üres .nobackup fájlt abba, amelyet nem akarunk megőrizni. Majd hozzuk létre a repót:

$ borgmatic --config ~/.config/borgmatic.d/home.yml init --encryption none
$ borgmatic --config ~/.config/borgmatic.d/home.yml

Tegyünk a felhasználónk crontab-jába egy időzítést:

27 23 * * * /usr/bin/borgmatic --verbosity -1 --syslog-verbosity 1

A legegyszerűbben mountolással böngészhetjük a repót:

$ REPO=home.borg
$ mkdir $REPO && borg mount /var/lib/backups/myuser/$REPO $REPO
$ borg umount $REPO && rmdir $REPO