Backup Server::Configureren
Package management op de Raspberry Pi OS
Package management op de Raspberry Pi verschilt niet zoveel met andere linux software package management.
Raspberry PiOS (
voorheen Raspbian) is tenslotte gebaseerd op de Debian Linux distributie.
Software toevoegen aan het Raspberry Pi OS
Eén manier om software toe te voegen is het downloaden van de bronbestanden, deze te compileren en de software installeren. Dit kan gecompliceerd zijn omdat veel software aanvullende 'dependencies' nodig heeft, zoals ondersteunende librairy software die geïnstalleerd moet worden vóór het compileren.
Alternatief, kun je pre-compiled binairy bestanden downloaden. Deze binairy bestanden hebben ook dependencies die geïnstalleerd moeten worden.
Er zijn twee algemeen gebruikte package systemen voor de Raspberry Pi OS
- Advanced Package Tool (APT) : APT is een commandolijn tool en standaard onderdeel van Raspberry Pi OS.
Het wordt gebruikt voor installeren, updating en managment van packages op Debian-based OS's.
- PIP (Package Installer for Python) : PIP is een commandolijn tool gebruikt voor installeren, beheren en verwijderen van Python packages van de Python Package Index (PyPI) repositorie.
PIP wordt gebruikt om Python libraries en packages en hun dependencies in Python projecten te installeren.
Management van packages met APT
APT commando's voor het managen van packages
- # apt update
Update wordt gebruikt om de repository database te updaten met package informatie van alle geconfigureerde bronnen.
Andere commando's operen op deze data om bijv. package upgrades uit te voeren en details weer te geven van alle packages die voor installatie beschikbaar zijn.
- # apt upgrade
Upgrade wordt gebruikt voor het downloaden van beschikbare upgrades van geïnstalleerde software.
Nieuwe packages zullen geïnstalleerd worden voor dependencies, maar bestaande packages worden nooit verwijderd.
Als voor een upgrade een geïnstalleerde package verwijderd moet worden dan wordt de upgrade niet uitgevoerd.
- # apt full-upgrade
Full-upgrade voert de functie van Upgrade uit, maar verwijderd ook geïnstalleerde packages als dit nodig is het complete systeem te upgraden.
- # apt install, reinstall, remove, purge
Voert de gevraagde actie uit op 1 of meer packages gespecificeerd via regex, glob of exacte match.
De gevraagde actie kan overschreven worden voor specifieke packages door toevoeging van + aan de packagenaam om deze te installeren of een - om deze te verwijderen.
- # apt search
Search kan gebruikt worden voor het zoeken naar gegeven regex term(en) in de lijst van beschikbare packages.
- # apt show
Show informatie van een package incl. dependencies, installatie- en download grootte, etc
- # apt list
List is gelijk aan dpkg-query --list zijnde dat het een lijst produceert van packages met bepaalde criteria.
Het ondersteunt zowel 'glob' patronen voor het matchen van packagenamen als opties als installed (--installed), upgradable (--upgradable) of alle beschikbare (--all-versions) versies.
Aanvullende Software
- Locate
Locate vindt alle bestanden op het systeem met een match met het gegeven patroon (of alle gegeven patronen).
Dit wordt gedaan met een index gemaakt met commando # updatedb.
Installeer: # apt install mlocate
Maak database: # updatedb
Zoek: # locate (e.g. # locate samba)
Upgrades van OS en packages
Zie https://thenewstack.io/enable-automatic-updates-for-ubuntu-server/
Wanneer was het de laatste keer dat de BackupServer een upgrade heeft gehad?
Als een server jaren achtereen draait zonder een reboot kan inhouden dat al die tijd er geen upgrade gedaan wordt.
Unpatched software wordt kwetsbaar voor aanvallen
Tenzij je alle tijd hebt om dagelijks upgrades uit te voeren is het raadzaam upgrades automatisch te laten plaatsvinden.
Canonical (de firma achter Ubuntu) is zo zeker over de onbeheerde upgrades voor de server, dat zij het OS verzenden met de noodzakelijke package al voorgeïnstalleerd.
Dit is echter niet het geval met
Raspberry Pi OS Lite
We installeren nu zelf het 'unattended-upgrades' package
Unattended Upgrades
Zie Unattended Upgrades - Keeping Your Raspberry Pi Secure
Vindt de package in de RaspberryPi repository
root@pi-nas:~# apt list unattended-upgrades Listing... Done unattended-upgrades/stable 2.9.1+nmu3 all
Installeer Unattended-Upgrades:
root@pi-nas:~# apt install unattended-upgrades
Configureer Unattended-Upgrades
root@pi-nas:~# dpkg-reconfigure --priority=low unattended-upgrades
Na bovenstaand commando opent er een window met de vraag of je automatische download en installatie van stabiele upgrades wenst.
Kies: <TAB> naar <YES> en klik <ENTER> en hiermee is de onbeheerde utomatische upgrade geactiveerd.
Check van de configuratie
Om te zien wat de unattended-upgrade configuratie doet, open als eerste het configuratiebestand /etc/apt/apt.conf.d/20auto-upgrades, deze bevat 2 regels:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";
Dit houdt in dat de interval tussen de updates/upgrades minimaal 1 dag is.
Wijzig naar 'always' als er geen tijd tussen de opeenvolgende updates hoeft te zijn:
APT::Periodic::Update-Package-Lists "always"; APT::Periodic::Unattended-Upgrade "always";
Configuratie opties
Er is een tweede bestand op de zelfde locatie, /etc/apt/apt.conf.d/50unattended-upgrades. Deze kan/moet door editing nader geconfigureerd worden.
Het meeste van dit bestand is uitgemarkeerd, maar als je door het bestand gaat zul je zekere regels en/of secties vinden die aktief zijn.
Bijvoorbeeld de volgende sectie:
Unattended-Upgrade::Origins-Pattern { // Codename based matching: // This will follow the migration of a release through different // archives (e.g. from testing to stable and later oldstable). // Software will be the latest available for the named release, // but the Debian release itself will not be automatically upgraded. // "origin=Debian,codename=${distro_codename}-updates"; // "origin=Debian,codename=${distro_codename}-proposed-updates"; // "origin=Debian,codename=${distro_codename},label=Debian"; "origin=Debian,codename=${distro_codename},label=Debian-Security"; "origin=Debian,codename=${distro_codename}-security,label=Debian-Security"; // Send email to this address for problems or packages upgrades // If empty or unset then no email is sent, make sure that you // have a working mail setup on your system. A package that provides // 'mailx' must be installed. E.g. "user@example.com" Unattended-Upgrade::Mail "ben@makkink.eu"; // Set this value to one of: // "always", "only-on-error" or "on-change" // If this is not set, then any legacy MailOnlyOnError (boolean) value // is used to chose between "only-on-error" and "on-change" Unattended-Upgrade::MailReport "always";
Op 26-4-2025 is de laatste regel gewijzigd naar;
Unattended-Upgrade::MailReport "only-on-error";
In bovenstaande regels staan de toegestane bronnen.
De regel met -updates, -proposed-updates en label=Debian zijn uitgemarkeerd omdat deze updates kunnen bevatten die problemen veroorzaken met al geïnstalleerde packages.
Deze voeren we later zelf op de hand uit.
Verder in het bestand is een sectie met de opties "true" of "false" bijvoorbeeld:
88 // Do automatic removal of unused packages after the upgrade 89 // (equivalent to apt-get autoremove) 90 //Unattended-Upgrade::Remove-Unused-Dependencies "false";
Als je geen ongebruikte dependencies wilt behouden, verwijder de uitmarkereing '//' en wijzig "false" naar "true".
Een andere configuratie optie is:
92 // Automatically reboot *WITHOUT CONFIRMATION* if
93 // the file /var/run/reboot-required is found after the upgrade
94 Unattended-Upgrade::Automatic-Reboot "true";
Deze optie activeren is niet aan te raden omdat het niet bekend is wanneer een onbeheerde upgrade zal starten en eindigen en tot onverwachtte downtimes kan leiden.
Als we toch een automatic reboot instellen dan specificeren we ook het tijdstip:
100 // If automatic reboot is enabled and needed, reboot at the specific
101 // time instead of immediately
102 // Default: "now"
103 Unattended-Upgrade::Automatic-Reboot-Time "03:00";
Herstart na configuratie-wijziging
Als er wijzigingen aangebracht zijn in /etc/apt/apt.conf.d/50unattended-upgrades dan moet unattend-upgrades opnieuw geladen worden.
root@testserver:~# systemctl restart unattended-upgrades
Logfile
Als er zich problemen voordoen kijk dan in de unattended-upgrades log
# less /var/log/unattended-upgrades/unattended-upgrades.log
Schedule
Zie ook How is unattended-upgrades started and how can I modify its schedule?
De timers (schedulers) worden bij de installatie van het 'unattended-upgrades' package geinstalleerd in /lib/systemd/system/ en gelinkt naar /etc/systemd/system/ zijnde apt-daily.timer en apt-daily-upgrade.timer
Zie ook:
root@pi-nas:~# systemctl list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES > Fri 2025-03-14 20:48:51 CET 3h 48min left Fri 2025-03-14 11:44:44 CET 5h 16min ago apt-daily.timer apt-daily.service Fri 2025-03-14 22:09:50 CET 5h 9min left Tue 2025-03-11 12:19:32 CET 3 days ago man-db.timer man-db.service Sat 2025-03-15 00:00:00 CET 6h left Fri 2025-03-14 10:05:33 CET 6h ago dpkg-db-backup.timer dpkg-db-backup.servi> Sat 2025-03-15 00:00:00 CET 6h left Fri 2025-03-14 10:05:33 CET 6h ago logrotate.timer logrotate.service Sat 2025-03-15 06:53:12 CET 13h left Fri 2025-03-14 10:47:17 CET 6h ago apt-daily-upgrade.timer apt-daily-upgrade.se> Sat 2025-03-15 11:41:13 CET 18h left Fri 2025-03-14 10:49:27 CET 6h ago plocate-updatedb.timer plocate-updatedb.ser> Sat 2025-03-15 14:00:00 CET 20h left Fri 2025-03-14 14:00:02 CET 3h 0min ago motd-update.timer motd-update.service Sat 2025-03-15 15:20:16 CET 22h left Fri 2025-03-14 15:20:16 CET 1h 40min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-cle> Sun 2025-03-16 03:10:17 CET 1 day 10h left Sun 2025-03-09 12:01:14 CET 5 days ago e2scrub_all.timer e2scrub_all.service Mon 2025-03-17 01:18:36 CET 2 days left Mon 2025-03-10 17:37:50 CET 3 days ago fstrim.timer fstrim.service 10 timers listed.
De tijd voor de 'updates check' is gespecificeerd in apt-daily.timer en voor upgrades in apt-daily.timer
Deze tijden zijn niet echt interessant omdat de BackupServer elke dag om 15:00 uur uitschakeld en de volgende ochtend opnieuw boot om 12:00 uur.
Dit is dan ook de tijd dat de timers de apt-daily.service en de apt-daily-upgrade.service starten.
In de apt-daily-upgrade.service staat vervolgens dat deze pas mag starten als de
apt-daily.service beeindigd is.
root@pi-nas:~# less /lib/systemd/system/apt-daily-upgrade.service [Unit] Description=Daily apt upgrade and clean activities Documentation=man:apt(8) ConditionACPower=true After=apt-daily.service network.target network-online.target systemd-networkd.service NetworkManager.service connman.service [Service] Type=oneshot ExecStartPre=-/usr/lib/apt/apt-helper wait-online ExecStart=/usr/lib/apt/apt.systemd.daily install KillMode=process
Handmatige upgrades voor packages en dependencies
In de vorige secties zijn de unattended security upgrades ingesteld.
Voor de reguliere upgrades van geïnstalleerde packages en dependencies geven we de voorkeur aan het op de hand upgraden om te voorkomen dat mogelijkse bugs de goede werking verstoren.
Backup!
Voordat we deze upgrades uitvoeren maken we eerst een OS systeembackup, zodat als er zich problemen voordoen het systeem van vóór de upgrades teruggezet kan worden.
Check voor Updates
root@pi-nas:~# apt update
Hit:1 http://archive.raspberrypi.com/debian bookworm InRelease
Hit:2 http://raspbian.raspberrypi.com/raspbian bookworm InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
8 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@pi-nas:~# apt list --upgradable
Listing... Done
firmware-atheros/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
firmware-brcm80211/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
firmware-libertas/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
firmware-misc-nonfree/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
firmware-realtek/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
linux-image-rpi-v8/stable 1:6.6.74-1+rpt1 arm64 [upgradable from: 1:6.6.20-1+rpt1]
raspi-firmware/stable,stable 1:1.20250305-1 all [upgradable from: 1:1.20241126-1]
rpi-eeprom/stable,stable 27.5-1 all [upgradable from: 27.4-1]
Upgrade
Voer alleen 'stable' upgrades van packages uit!
- Alle beschikbare upgrades
root@pi-nas:~# apt upgrade
- Specifieke upgrade bijv. raspi-firmware
root@pi-nas:~# apt upgrade raspi-firmware
Reboot
Reboot na upgrades
Dynamic Message Of The Day (MOTD)
Zie https://github.com/ar51an/raspberrypi-motd voor de scripts
Intro
De Raspberry Pi wordt meestal 'headless' gebruikt en wordt SSH gebruikt om te verbinden met de Raspberry Pi.
Zodra we een SSH verbinding maken wordt als eerste de MOTD weergegeven met informatie van het OS.
Bij Raspberry
Pi OS Lite is de hoeveelheid informatie zeer beperkt en ontbreekt onder andere, zoals bij Ubuntu Server, de informatie hoeveel upgrades beschikbaar zijn.
Het ontbreken van de 'update' count heeft geleid tot de ontwikkeling van de hierna volgende MOTD
Het gebruikte process voor de nieuwe MOTD is hetzelfde als die van RaspiOS of Ubuntu Server. Er is geen extra package of tool nodig.
Het is geschreven in bash en gebruikt hetzelfde mechanisme als de standaard RaspiOS MOTD.
Download github bash bestanden raspberrypi-mod
Maak download folder
root@pi-nas:~# mkdir /srv/raspberrypi-motd
Maak backup-folder voor te verwijderen bestanden
root@pi-nas:~# mkdir /srv/raspberrypi-motd/original-motd-files
Download van github
(url van webpagina is: https://github.com/ar51an/raspberrypi-motd )
root@pi-nas:~# cd /srv/raspberrypi-motd root@pi-nas:/srv/raspberrypi-motd# git clone https://github.com/ar51an/raspberrypi-motd.git
Verify gedownloade bestanden
root@pi-nas:/srv/raspberrypi-motd# ls -l /srv/raspberrypi-motd -rwxr-xr-x 1 root root 1059 Mar 13 14:08 LICENSE drwxr-xr-x 2 root root 4096 Mar 13 14:02 original-motd-files drwxr-xr-x 2 root root 4096 Mar 13 14:08 putty -rwxr-xr-x 1 root root 9213 Mar 13 14:08 README.md drwxr-xr-x 2 root root 4096 Mar 13 14:08 systemd-timer drwxr-xr-x 2 root root 4096 Mar 13 14:08 update-motd.d drwxr-xr-x 2 root root 4096 Mar 13 14:08 update-motd-static.d drwxr-xr-x 2 root root 4096 Mar 13 14:08 update-os
Verifieer dat van de folder ‘/srv/raspberrypi-motd’ en de files daarin root eigenaar is en dat ze executable zijn
Verwijder de default MOTD met static tekst (en sla elders op)
root@pi-nas:~# mv /etc/motd /srv/raspberrypi-motd/original-motd-files
Verwijder /etc/update-motd.d/10-uname met dynamische weergave van de OS versie (en sla elders op).
De nieuwe MOTD print een getrimde OS versie
root@pi-nas:~# mv /etc/update-motd.d/10-uname /srv/raspberrypi-motd/original-motd-files
Edit /etc/ssh/sshd_config
Dit bestand print timestamp en locatie van laatste login. Dit wordt gebruikt door de nieuwe MOTD
Zet PrintLastLog naar 'No'
root@pi-nas:~# vi /etc/ssh/sshd_config
....
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
PrintLastLog no
#TCPKeepAlive yes
#PermitUserEnvironment no
....
Herstart SSHD om nieuwe configuratie te laden
root@pi-nas:~# systemctl restart sshd
NOTE:
De default MOTD is nu volledig verwijderd.
Implementeer de nieuwe MOTD
Kopieer gedownloade scripts 10-welcome, 15-system en 20-update van /srv/raspberrypi-motd/update-motd.d naar /etc/ update-motd.d en zorg dat ze executable zijn.
root@pi-nas:~# cd /etc/update-motd.d
root@pi-nas:~# cp -a /srv/raspberrypi-motd/update-motd.d/* .
root@pi-nas:~# ls -l
-rwxr-xr-x 1 root root 980 Mar 13 14:08 10-welcome
-rwxr-xr-x 1 root root 3135 Mar 13 14:08 15-system
-rwxr-xr-x 1 root root 0 Mar 13 14:08 20-update
-rwxr-xr-x 1 root root 165 Dec 31 2022 92-unattended-upgrades
Scripts Info
Bovenstaande bestanden vormen samen de inhoud van de nieuwe MOTD
(De nummers zorgen voor het lezen in de gewenste volgorde)
- /etc/update-motd.d/10-welcome
Geeft het Raspberry Model, welkom aan gebruiker, de huidige tijd en de kernel versie weer.
- /etc/update-motd.d/15-system
Toont de verschillende details van het systeem zoals temperatuur, geheugen, aantal actieve processen, dataopslag, etc.
- /etc/update-motd.d/20-update.
Dit bestand geeft het aantal beschikbare upgrades weer.
Dit bestand is statisch en de inhoud wordt dynamisch bijgewerkt met het script /etc/update-motd-static.d/20-update.
- /etc/update-motd.d/92-unattended-upgrades
Als er bij de unattended upgrades 1 of meer upgrades niet automatisch uitgevoerd konden worden,
wordt dit door dit script in de MOTD vermeld met verwijzing naar het /var/log/unattended-upgrades/unattended-upgrades.log
Creëer nieuwe statische inhoud voor de MOTD
Maak nieuwe map /etc/update-motd-static.d
En
kopieer /srv/raspberrypi-motd/update-motd-static.d/20-update
root@pi-nas:~# mkdir /etc/update-motd-static.d/ root@pi-nas:~# cd /etc/update-motd-static.d root@pi-nas:~# cp -a /srv/raspberrypi-motd/update-motd-static.d/20-update /etc/update-motd-static.d/20-update
Zorg er voor dat het script root permissies heeft en executable is.
Dit script 20-upgrade haalt het aantal upgrades die klaar staan en plaatst dit aantal in bestand /etc/update-motd.d/20-update
Bewerk het script 20-upgrade zodat een e-mail naar admin gestuurd wordt als er meer dan 10 upgrades klaar staan.
...
# Count
apt-get update --quiet=2
pkgCount="$(apt-get -s dist-upgrade | grep -Po '^\d+(?= upgraded)')"
if [ $pkgCount -gt 10 ]; then
cat /home/ben/updates-beschikbaar.txt | msmtp ben@makkink.eu;
fi
...
(Re)set aantal beschikbare upgrades
Voor het aanmaken of verversen van het MOTD bestand /etc/update-motd.d/20-update met het aantal beschikbare updates voeren we volgend commando uit:
root@pi-nas:~# run-parts /etc/update-motd-static.d
Zie volgende sectie Automatisering voor het dagelijks resetten van het aantal beschikbare upgrades
Maak content MOTD
Elke keer als er ingelogd wordt runt de PAM (Pluggable Authentication Module) de scripts in de map /etc/update-motd.d waarmee het MOTD weergegeven wordt.
We testen nu het aanmaken van de MOTD met het commando:
root@pi-nas:~# run-parts /etc/update-motd.d
Met als resultaat:
Automatisering MOTD
Zoals hierboven beschreven wordt het aantal beschikbare upgrades naar /etc/update-motd.d/20-update geschreven door het script /etc/update-motd-static.d/20-update.
Dit script wordt uitgevoerd met het commando: # run-parts /etc/update-motd.d
Dit proces duurt enkele seconden en zou elke keer onnodige vertraging opleveren bij het inloggen.
Daarom
beperken we het vaststellen van het aantal beschikbare upgrades tot 1 keer per dag, automatisch d.m.v. een timer.
Kopiëer motd-update.timer en motd-update.service van /srv/raspberrypi-motd/ naar /etc/systemd/system/
Verifieer dat root eigenaar en groep is.
root@pi-nas:~# cp -a /srv/raspberrypi-motd/* /etc/systemd/system root@pi-nas:~# ls -l /etc/systemd/system/motd* -rwxr-xr-x 1 root root 135 Mar 13 14:08 motd-update.service -rwxr-xr-x 1 root root 156 Mar 13 14:08 motd-update.timer
Edit motd-update.timer
root@pi-nas:~# vi /etc/systemd/system/motd-update.timer
[Unit]
Description=Motd upgradable package count timer - Daily at 08:00
[Timer]
OnCalendar=*-*-* 08:00
Persistent=true
[Install]
WantedBy=timers.target
Zet OnCalendar naar dagelijks 08:00.
Persistent= : Als true dan wordt de tijd wanneer de service het laatst getriggerd werd op disk opgeslagen.
Wanneer de timer na een (re)boot geactiveerd wordt dan wordt de service onmiddelijk getriggerd alsof het minstens 1 keer getriggerd zou zijn gedurende de tijd dat de timer niet actief was.
Hiermee worden tijdens OS shutdown gemiste runs opgevangen.
Enable timer :
root@pi-nas:~# systemctl enable motd-update.timer Created symlink /etc/systemd/system/timers.target.wants/ → /etc/systemd/system/motd-update.timer.
Start timer:
root@pi-nas:~# systemctl start motd-update.timer
Verifieer timer:
root@pi-nas:~# systemctl status motd-update.timer
motd-update.timer - Motd upgradable package count timer - Daily at 08:00
Loaded: loaded (/etc/systemd/system/motd-update.timer; enabled; preset: enabled)
Active: active (waiting) since Sat 2025-03-29 17:30:49 CET; 20h ago
Trigger: Mon 2025-03-31 08:00:00 CEST; 17h left
Triggers: motd-update.service
[Unit] Description=Motd upgradable package count service After=network.target [Service] ExecStart=run-parts /etc/update-motd-static.d
Packages toevoegen
De default teksteditor VIM in Raspberry Pi OS is vim
2:9.0.1378-2 armhf. Deze functioneert niet met het systeem clipboard van Windows.
De package vim-gtk3 bevat een berg onnodige dependencies maar werkt uitstekend samen met Windows clipboard.
Installeer: # apt install vim-gtk3
Kopie en paste
Er zijn bepaalde shortcuts vereist voor het kopiëren en plakken van- en naar VIM:
- Kopieer en plak binnen VIM : selecteer + 'y'(ank) en op bestemming 'p'
- Kopieer van VIM 1 en plak VIM 2: Shift Select tekst + 'y' --> plak: insertmode +shift-rightclick
- Kopieer van Windows en plak VIM: Select tekst + Ctrl-C --> plak: insertmode +shift-rightclick
- Kopieer van puTTY en plak VIM: Select tekst --> plak: insertmode +shift-rightclick
Kleurenschema
Raspberry OS heeft een nieuwere versie van de editor VIM, o.a. met Color Syntax Highlighting.
Met een donkere achtergrond is sommige tekst moeilijk te lezen.
Edit bestand /etc/vim/vimrc en verwijder de uitmarkering voor de regels:
.....
" All Debian-specific settings are defined in $VIMRUNTIME/debian.vim and
" sourced by the call to :runtime you can find below. If you wish to change " any of those settings, you should do it in this file or " /etc/vim/vimrc.local, since debian.vim will be overwritten everytime an " upgrade of the vim packages is performed. It is recommended to make changes
" after sourcing debian.vim so your settings take precedence. runtime! debian.vim ..... ..... " If using a dark background within the editing area and syntax highlighting " turn on this option as well set background=dark
Sshpass is een utility ontworpen om ssh te runnen waarbij een wachtwoord gevraagd wordt. Met SSHPASS verstrekken we dit wachtwoord 'prefetched' uit een bestand met dit wachtwoord.
Installeer: # apt install sshpass
Om met bijvoorbeeld RSYNC data te synchroniseren tussen de Backup Server op de Raspberry Pi en de Thuisserver zou je de volgende code op de Backup-Server gebruiken:
# rsync -avzh ububen@thuisserver:/vault/backup /store
Nu wordt het thuisserver wachtwoord gevraagd.
Als deze synchronisatie vanuit een script
plaats vindt moet dit wachtwoord op één of andere manier samen met bovenstaand commando gestuurd worden.
Hiervoor gebruiken we sshpass
- Voor het verstrekken van het wachtwoord maken we een nieuw bestand aan:
ben@pi-nas:~ $ vi ~/.rsync_pass_thuisserver - Zet de permissies:
ben@pi-nas:~ $ chmod 644 ~/.rsync_pass_thuisserver - Edit bestand en plaats wachtwoord van homeserver user 'ububen'
- rsync /vault/backup van thuisserver naar Raspberry Pi /store
ben@pi-nas:~ $ sudo sshpass -f ~/.rsync_pass_thuisserver rsync -avzh ububen@thuisserver:/vault/backup /store
Voor uitvoering in script
Scripts worden uitgevoerd als root dus het bestand .rsync_pass_thuisserver verplaatsen we naar root
ben@pi-nas:~ $ sudo mv ~/.rsync_pass_homeserver /root
Creëer een script in /usr/local/bin
#!/bin/bash sshpass -f ~/.rsync_pass_thuisserver rsync ububen@thuisserver:/vault/test /backup;
Denk aan spatie vóór sshpass! Hierdoor wordt het commando en het wachtwoord niet in historie opgeslagen.
MSMTP e-mail van commandline
Voor het sturen van een e-mail van de commandlijn gebruiken we in Debian de MSMTP methode.
Gebruik hiervoor een (nieuwe) GMail account, speciaal voor de Backup-Server op de Raspberry Pi.
Maak een nieuwe GMail account en zet 2FA aan
- Maak account detmersweg@gmail.com en activeer 2FA
- Ga vervolgens naar Google Account beheren
- Selecteer Beveiliging
- Type in zoekbalk: "app-wachtwoorden"
- Genereer het 16 tekens lange wachtwoord
Installeer MSMTP app
# sudo apt install msmtp msmtp-mta mailutils mpack ca-certificates
Setup default instellingen voor MSMTP
Creëer en edit bestand /etc/msmtprc (chmod 644)
Inhoud /etc/msmprc:
account default host smtp.gmail.com port 587 logfile /tmp/msmtp.log tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt auth login user detmersweg@gmail.com password <zie lastpass detmersweg@gmail.com> from Raspberry Admin
Note: De logfile /tmp/msmtp.log wordt verwijderd na een shutdown/reboot
Maak e-mailbestand /home/ben/thuisserver-ransom-mail.txt
To: ben@makkink.eu
Subject: Ransomware?
Het controlebestand '/vault/thuisserver-ransom.txt' op de thuisserver bestaat niet (meer), is gewijzigd en/of versleuteld.
Omdat dit mogelijk duidt op ransomware, worden nu geen backups naar de backup-server gemaakt.
Door deze ransomware-check wordt geprobeerd te voorkomen dat de ‘schone’ backups op de BackupServer ook versleuteld worden.
De raspberry BackupServer is nu volledig uitgeschakeld.
Houdt de BackupServer off-line tot dat het hele thuisnetwerk vrij van ransomware is!
Check op de BackupServer of er een bestand in /home/ben/tmp/ staat en of deze al dan niet versleuteld is.
Admin
Stuur de e-mail van de commandlijn
# cat /home/ben/thuisserver-ransom-mail.txt | msmtp --debug ben@makkink.eu
Als alle goed werkt verwijder dan --debug uit het commando.
BMON Netwerk Monitor
Bmon is een Ubuntu commandlijn monitor van Netwerkverkeer (Portable Bandwidth monitor and Rate estimator is een commandline)
# sudo apt install bmon
Start monitor:
# bmon
Stop Monitor:
# Ctrl-C
Opslagmedium toevoegen
Het Operating System (OS) bevindt zich op de SD-kaart in 2 partities
ben@pi-nas:~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS mmcblk0 179:0 0 58G 0 disk ├ mmcblk0p1 179:1 0 512M 0 part /boot/firmware └ mmcblk0p2 179:2 0 57.4G 0 part /
Alle data (backupdata) gaan we op een externe USB-SSD plaatsen.
Formatteer met Ext4
- Sluit USB drive aan op RaspBerry Pi en vindt de drive
ben@pi-nas:~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 3.6T 0 disk
└ sda1 8:1 0 3.6T 0 part
mmcblk0 179:0 0 58G 0 disk
├ mmcblk0p1 179:1 0 512M 0 part /boot/firmware
└ mmcblk0p2 179:2 0 57.4G 0 part /
- Partitioneer drive SDA
ben@pi-nas:~ $ sudo fdisk /dev/sda Command (m for help): p Disk /dev/sda: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors Disk model: CT4000X10PROSSD9 Disklabel type: gpt Disk identifier: 0D3925F3-B6C7-4948-87A9-352ED9D6AD6E Device Start End Sectors Size Type /dev/sda1 34 262177 262144 128M Microsoft reserved /dev/sda2 264192 7814035455 7813771264 3.6T Microsoft basic data
De nieuwe CT4000 X10 PRO SSD9 blijkt al 2 microsoft partities te hebben, delete deze
Command (m for help): d Partition number (1,2, default 2): 2 Partition 2 has been deleted. Command (m for help): d Selected partition 1 Partition 1 has been deleted.
Toon niet gepartitieoneerde ruimte
Command (m for help): F Unpartitioned space /dev/sda: 3.64 TiB, 4000785964544 bytes, 7814035087 sectors Start End Sectors Size 2048 7814037134 7814035087 3.6T
Maak en schrijf nieuwe partitie en print details
Command (m for help): n Gebruik default opties voor alle prompts Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. Command (m for help): p Disk /dev/sda: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors Disk model: CT4000X10PROSSD9 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 0D3925F3-B6C7-4948-87A9-352ED9D6AD6E Device Start End Sectors Size Type /dev/sda1 2048 7814035455 7814033408 3.6T Linux filesystem
- Formatteer partitie sda1
ben@pi-nas:~ $ sudo mkfs.ext4 /dev/sda1 mke2fs 1.47.0 (5-Feb-2023) Discarding device blocks: done Creating filesystem with 976754176 4k blocks and 244195328 inodes Filesystem UUID: 105c8fa8-a129-4029-bdc8-badce75915b1 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done
- Mount externe USB-SSD
Maak mountpoint
ben@pi-nas:~ $ sudo mkdir /store ben@pi-nas:~ $ ls -l /store total 0
Nu niet mounten!
We willen niet dat de externe USB-SSD per default gemount is, dus niet beschikbaar.
Wanneer we op een gegeven moment willen mounten dan doen we dat middels een script.
Omdat het een externe USB-disk is. is het niet verstandig er van uit te gaan dat de USB-disk altijd SDA1 is. Als er meer aangesloten worden kan het zo maar zijn dat het SDB1 blijkt te zijn.
Het mounten met een script doen we daarom met de UUID van de externe USB-SSD
Vindt de UUID van SDA1:
ben@pi-nas:~ $ sudo blkid /dev/sda1 /dev/sda1: UUID="138d237d-dae1-4c0f-8246-b766b1d33737" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8a5323fb-7ee9-b546-9e08-74bff95e2e25"
Later mounten
Voor het mounten vanuit een script voegen we de volgende regel toe in het script:
mount UUID=138d237d-dae1-4c0f-8246-b766b1d33737 /store;