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