FreeBSD jako serwer
FreeBSD to kompletny system operacyjny z rodziny BSD, a nie dystrybucja Linuksa. Kernel, system bazowy, narzędzia administracyjne i dokumentacja powstają jako spójna całość, natomiast aplikacje dodatkowe trafiają zwykle do hierarchii /usr/local przez Packages lub Ports.
Kiedy ten materiał jest przydatny: przy budowie i utrzymaniu serwera FreeBSD, pracy z rc.conf i usługami rc.d, ZFS, jailami, PF, SSH, aktualizacjami oraz podczas diagnozowania problemów z siecią i usługami.
Punkt odniesienia: FreeBSD 15.1-RELEASE, aktualne wydanie Production w chwili audytu. Wiele opisanych mechanizmów administracyjnych pozostaje również wspólnych dla wspieranych wydań gałęzi 14.
Dalsze tematy: FreeBSD - shell oraz SSH i zdalna administracja. Dla porównania z kontenerami linuksowymi przydatne jest także kompendium Docker.
Mapa kompendium
- Model systemu FreeBSD
- Pakiety i Ports
- Usługi, rc.conf i sysrc
- Aktualizacje systemu
- Sieć
- SSH i firewall
- ZFS
- Cron
- Jails
- Diagnostyka usług
- Dokumentacja i źródła
1. Jak myśleć o FreeBSD
FreeBSD nie jest dystrybucją Linuksa. To kompletny system operacyjny rozwijany jako spójna całość:
- kernel,
- podstawowe narzędzia systemowe,
- biblioteki,
- system startowy,
- narzędzia sieciowe,
- dokumentacja,
- mechanizmy aktualizacji.
To, co w Linuksie często pochodzi z wielu osobnych projektów, we FreeBSD w dużej części należy do jednego base system.
Oprogramowanie dodatkowe - nginx, PostgreSQL, Git, Vim, Samba itd. - pochodzi natomiast z systemu Packages/Ports.
To rozróżnienie jest fundamentalne:
FreeBSD base system
├── kernel
├── /bin
├── /sbin
├── /usr/bin
├── /usr/sbin
├── /etc
└── podstawowe biblioteki
Pakiety dodatkowe
├── /usr/local/bin
├── /usr/local/sbin
├── /usr/local/etc
├── /usr/local/lib
└── /usr/local/etc/rc.d
Dlatego typowa konfiguracja wygląda tak:
/etc/ssh/sshd_config
dla OpenSSH należącego do systemu bazowego, ale:
/usr/local/etc/nginx/nginx.conf
dla nginx zainstalowanego przez pkg.
Ta reguła bardzo często pomaga odnaleźć konfigurację usługi.
2. Wersja systemu
Podstawowe polecenia:
freebsd-version
Pokazuje wersję zainstalowanego userlandu.
uname -r
Pokazuje wersję uruchomionego kernela.
uname -a
Pokazuje więcej informacji o systemie.
Po aktualizacji może się zdarzyć, że:
freebsd-version
i:
uname -r
pokazują różne wersje.
Najczęściej oznacza to, że kernel został zaktualizowany, ale system nie został jeszcze zrestartowany.
3. Najważniejsze katalogi
/etc
Konfiguracja systemu bazowego.
Najważniejsze pliki:
/etc/rc.conf
/etc/sysctl.conf
/etc/fstab
/etc/hosts
/etc/resolv.conf
/etc/ssh/
/etc/pf.conf
/etc/jail.conf
/etc/jail.conf.d/
/usr/local
Tutaj trafia oprogramowanie instalowane z Packages/Ports.
Najważniejsze miejsca:
/usr/local/bin
/usr/local/sbin
/usr/local/etc
/usr/local/etc/rc.d
/usr/local/lib
Przykładowo:
/usr/local/etc/nginx/nginx.conf
/usr/local/etc/postgresql.conf
/var
Dane zmienne:
/var/log
/var/db
/var/run
/var/tmp
W szczególności:
/var/log/messages
jest jednym z najważniejszych logów systemowych.
/home i /usr/home
W FreeBSD katalogi domowe użytkowników często znajdują się fizycznie pod:
/usr/home
a /home może być dowiązaniem.
/boot
Kernel, moduły i konfiguracja startu systemu.
Ważne:
/boot/loader.conf
Nie należy tam wpisywać rzeczy, które mogą być ustawione przez sysctl, jeśli nie ma ku temu powodu.
4. Minimalny shell administratora
Nie jest to kurs shella. Poniższe polecenia wystarczą jednak do większości prostych zadań administracyjnych.
Poruszanie się
pwd
ls
ls -la
cd /katalog
cd ..
cd ~
Pliki
cp plik kopia
mv stary nowy
rm plik
mkdir katalog
rmdir katalog
Rekurencyjne usuwanie:
rm -r katalog
Używać ostrożnie.
Podgląd plików
cat plik
less plik
tail plik
head plik
Śledzenie logu na żywo:
tail -f /var/log/messages
Wyszukiwanie
grep tekst plik
grep -R tekst /usr/local/etc
find /usr/local -name "*.conf"
Procesy
ps aux
top
pgrep nginx
pkill proces
Pomoc
Najważniejsze narzędzie FreeBSD:
man polecenie
Przykłady:
man service
man rc.conf
man sysrc
man pf.conf
man zfs
man jail
Sekcję manuala można wskazać jawnie:
man 5 rc.conf
man 8 service
5. Root i uprawnienia
Konto root ma pełne prawa do systemu.
Przejście na roota:
su -
Zwykły użytkownik musi zwykle należeć do grupy:
wheel
Sprawdzenie grup:
id
Dodanie użytkownika do grupy:
pw groupmod wheel -m user
Można również zainstalować sudo:
pkg install sudo
i skonfigurować:
/usr/local/etc/sudoers
Bezpieczniej edytować przez:
visudo
6. Użytkownicy i grupy
Lista użytkowników
cat /etc/passwd
Dodanie użytkownika
Interaktywnie:
adduser
Usunięcie użytkownika
rmuser nazwa
Narzędzie pw
Bardziej skryptowalne:
pw useradd nazwa
pw usermod nazwa
pw userdel nazwa
pw groupshow wheel
Przykład:
pw useradd webapp -m -s /bin/sh
7. Pakiety - pkg
pkg jest podstawowym narzędziem do instalacji oprogramowania.
Jeśli nie jest jeszcze zainstalowane, pierwsze uruchomienie:
pkg
zaproponuje bootstrap.
Aktualizacja katalogu pakietów
pkg update
Aktualizacja wszystkich pakietów
pkg upgrade
Typowy zestaw:
pkg update
pkg upgrade
Instalacja
pkg install nginx
Kilka pakietów:
pkg install nginx git vim
Usuwanie
pkg delete nginx
Lista zainstalowanych pakietów
pkg info
Informacje o konkretnym pakiecie:
pkg info nginx
Wyszukiwanie
pkg search nginx
Dokładniejsze:
pkg search -f nginx
Zależności, które nie są już potrzebne
pkg autoremove
Najpierw zawsze przeczytaj, co pkg chce usunąć.
Audyt podatności
Bardzo przydatne na serwerze:
pkg audit -F
-F pobiera świeżą bazę podatności.
Informacja, skąd pochodzi plik
pkg which /usr/local/bin/nginx
Pliki należące do pakietu
pkg info -l nginx
8. Packages a Ports
FreeBSD posiada dwa sposoby instalowania oprogramowania:
- Packages - gotowe binaria,
- Ports - kompilacja ze źródeł.
Na zwykłym serwerze najczęściej używaj:
pkg
Ports mają sens, gdy potrzebujesz:
- nietypowych opcji kompilacji,
- własnych patchy,
- wersji/konfiguracji niedostępnej jako standardowy pakiet.
Drzewo Ports zwykle znajduje się w:
/usr/ports
Na typowym serwerze nie ma powodu komplikować życia bez potrzeby.
9. Najważniejsza rzecz: system usług FreeBSD
FreeBSD nie używa systemd.
Usługi obsługuje klasyczny mechanizm:
rc(8)
rc.conf
rc.d
service
sysrc
To trzeba znać dobrze.
10. Gdzie znajdują się skrypty usług
Usługi systemowe:
/etc/rc.d
Usługi zainstalowane z pakietów:
/usr/local/etc/rc.d
Przykład:
/etc/rc.d/sshd
/usr/local/etc/rc.d/nginx
Nie trzeba uruchamiać tych skryptów bezpośrednio.
Używaj:
service
11. Lista usług
Wszystkie skrypty usług:
service -l
Usługi włączone:
service -e
Usługi uporządkowane zgodnie z kolejnością startu:
service -r
Bardziej szczegółowo:
service -rv
12. Uruchamianie usług
Schemat:
service NAZWA AKCJA
Przykład:
service sshd status
service sshd start
service sshd stop
service sshd restart
service nginx restart
Najczęstsze akcje:
start
stop
restart
reload
status
rcvar
Nie każda usługa obsługuje wszystkie.
13. Dlaczego service nginx start czasem nie działa
We FreeBSD zwykłe:
service nginx start
zakłada, że usługa jest włączona w konfiguracji startowej.
Jeżeli nie jest, zobaczysz komunikat sugerujący ustawienie odpowiedniej zmiennej.
Dla nginx:
nginx_enable="YES"
14. rc.conf - centrum konfiguracji systemu
Najważniejszy plik:
/etc/rc.conf
Przykład:
hostname="server.example"
sshd_enable="YES"
nginx_enable="YES"
pf_enable="YES"
Nie edytuj:
/etc/defaults/rc.conf
To plik z wartościami domyślnymi systemu.
Własne ustawienia umieszczaj w:
/etc/rc.conf
15. sysrc - najlepszy sposób zmiany rc.conf
Zamiast ręcznie dopisywać:
nginx_enable="YES"
można zrobić:
sysrc nginx_enable="YES"
To bezpieczne i wygodne.
Odczyt wartości
sysrc nginx_enable
Sama wartość
sysrc -n nginx_enable
Włączenie usługi
sysrc nginx_enable="YES"
Wyłączenie
sysrc nginx_enable="NO"
Usunięcie zmiennej
sysrc -x nginx_enable
16. Typowy cykl instalacji nowej usługi
Przykład nginx.
1. Instalacja
pkg install nginx
2. Sprawdzenie plików
pkg info -l nginx
3. Sprawdzenie skryptu usługi
service nginx rcvar
Najczęściej zobaczysz informację w rodzaju:
nginx_enable="NO"
4. Włączenie autostartu
sysrc nginx_enable="YES"
5. Uruchomienie
service nginx start
6. Status
service nginx status
7. Sprawdzenie portu
sockstat -4 -6 -l
8. Logi
Zależnie od aplikacji:
/var/log
/usr/local/var/log
lub ścieżka skonfigurowana przez usługę.
17. onestart, onestop i onerestart
Czasem chcesz uruchomić usługę bez włączania jej na stałe.
Wtedy:
service nginx onestart
Zatrzymanie:
service nginx onestop
Restart:
service nginx onerestart
To omija wymóg:
nginx_enable="YES"
Bardzo przydatne podczas testów.
18. force*
Istnieją również warianty typu:
service nginx forcestart
service nginx forcestop
Nie należy ich używać jako standardowego sposobu administracji.
force* ignoruje część normalnych zabezpieczeń mechanizmu rc.
Najpierw rozwiąż przyczynę problemu.
19. Restart wszystkich lokalnych usług
Można wykonać:
service -R
Polecenie restartuje włączone lokalne usługi.
Nie jest to coś, co należy robić bezmyślnie na produkcji.
20. Autostart usług - zasada
Jeśli usługa ma wystartować po reboot:
sysrc nazwa_enable="YES"
Przykłady:
sysrc sshd_enable="YES"
sysrc nginx_enable="YES"
sysrc postgresql_enable="YES"
Następnie:
service nazwa start
21. Konfiguracja usług
Dobra reguła:
usługa systemowa
szukaj w:
/etc
usługa z pakietu
szukaj w:
/usr/local/etc
Przykłady:
/etc/ssh/sshd_config
/usr/local/etc/nginx/nginx.conf
Pakiety często instalują:
plik.conf.sample
który trzeba skopiować:
cp plik.conf.sample plik.conf
22. Sprawdzenie konfiguracji przed restartem
To bardzo ważny nawyk.
Przykłady:
nginx -t
sshd -t
pfctl -vnf /etc/pf.conf
Najpierw test konfiguracji, dopiero potem:
service nginx reload
lub:
service nginx restart
Na zdalnym serwerze może to uratować dostęp.
23. Własna aplikacja jako usługa
Załóżmy, że masz program:
/usr/local/bin/myapp
który działa ciągle w tle.
Najlepiej utworzyć dla niego skrypt:
/usr/local/etc/rc.d/myapp
Minimalny przykład:
#!/bin/sh
# PROVIDE: myapp
# REQUIRE: NETWORKING
# KEYWORD: shutdown
. /etc/rc.subr
name="myapp"
rcvar="${name}_enable"
pidfile="/var/run/${name}.pid"
command="/usr/sbin/daemon"
command_args="-f -S -p ${pidfile} -u myapp /usr/local/bin/myapp"
load_rc_config "$name"
: ${myapp_enable:="NO"}
run_rc_command "$1"
Nadaj wykonywalność:
chmod +x /usr/local/etc/rc.d/myapp
Włącz:
sysrc myapp_enable="YES"
Uruchom:
service myapp start
Sprawdź:
service myapp status
W tym przykładzie daemon(8):
- odłącza aplikację od terminala,
- uruchamia ją jako użytkownik
myapp, - zapisuje PID,
- może kierować wyjście do sysloga.
Dla własnych aplikacji Go jest to bardzo wygodny sposób integracji z FreeBSD.
24. daemon(8)
daemon uruchamia zwykły program jak proces serwerowy.
Przykład:
daemon -u webapp /usr/local/bin/webapp
Można włączyć logowanie do sysloga:
daemon -S -u webapp /usr/local/bin/webapp
PID:
daemon -p /var/run/webapp.pid /usr/local/bin/webapp
Automatyczny restart po zakończeniu:
daemon -r /usr/local/bin/webapp
To bardzo przydatne dla małych własnych usług.
25. Aktualizacje systemu
FreeBSD należy aktualizować w dwóch warstwach:
- base system,
- pakiety.
To nie jest to samo.
26. Aktualizacja pakietów
Standardowo:
pkg update
pkg upgrade
Potem:
pkg audit -F
27. Aktualizacja systemu bazowego
Tradycyjna instalacja FreeBSD używa:
freebsd-update
Aktualizacje bezpieczeństwa:
freebsd-update fetch
freebsd-update install
Po aktualizacji kernela:
shutdown -r now
Po restarcie sprawdź:
freebsd-version
uname -r
28. Uwaga: pkgbase
FreeBSD 15 rozwija również mechanizm zarządzania systemem bazowym przez pakiety - pkgbase.
Nie mieszaj metod aktualizacji bez zrozumienia, w jaki sposób system został zainstalowany.
Typowa instalacja klasyczna:
freebsd-update → system bazowy
pkg → aplikacje
Instalacja używająca pkgbase może zarządzać systemem bazowym przez repozytorium pakietów.
Jeśli administrujesz istniejącym serwerem, najpierw ustal sposób instalacji i aktualizacji, zamiast automatycznie przełączać go na inną metodę.
29. Boot Environments - jedna z najlepszych rzeczy przy ZFS
Jeśli root znajduje się na ZFS, możesz korzystać z boot environments.
Polecenie:
bectl
Lista:
bectl list
Przed dużą aktualizacją:
bectl create before-upgrade
Jeżeli coś pójdzie źle, można uruchomić wcześniejsze środowisko.
Aktywacja:
bectl activate before-upgrade
To bardzo dobry nawyk przed:
- dużym upgradem,
- zmianą kernela,
- ryzykowną modyfikacją systemu.
30. Sieć - najważniejsze narzędzia
Lista interfejsów:
ifconfig
Konkretny:
ifconfig igc0
Routing:
netstat -rn
Trasa domyślna:
route -n get default
Otwarte porty:
sockstat -4 -6 -l
To polecenie jest jednym z najważniejszych podczas administracji serwerem.
Przykład:
USER COMMAND PID FD PROTO LOCAL ADDRESS
root sshd ... tcp4 *:22
www nginx ... tcp4 *:80
31. Konfiguracja interfejsu w rc.conf
DHCP:
sysrc ifconfig_igc0="DHCP"
Statyczny adres:
sysrc ifconfig_igc0="inet 192.168.10.20 netmask 255.255.255.0"
Brama:
sysrc defaultrouter="192.168.10.1"
Hostname:
sysrc hostname="server.example"
Po zmianach sieci można restartować odpowiednie elementy, ale na zdalnym serwerze rób to bardzo ostrożnie.
Pełny restart sieci może odciąć SSH.
Często bezpieczniejszy jest reboot, jeśli masz pewny dostęp konsolowy/IPMI.
32. DNS
Konfiguracja resolvera:
/etc/resolv.conf
Przykład:
nameserver 1.1.1.1
nameserver 9.9.9.9
Test DNS:
host freebsd.org
Jeżeli host nie jest dostępny, przydatne mogą być pakiety zawierające dig.
33. /etc/hosts
Lokalne mapowanie nazw:
127.0.0.1 localhost
192.168.10.20 server
192.168.10.30 nas
Sprawdzenie:
getent hosts server
34. SSH
FreeBSD posiada OpenSSH w systemie bazowym.
Usługa:
service sshd status
Włączenie:
sysrc sshd_enable="YES"
Uruchomienie:
service sshd start
Konfiguracja:
/etc/ssh/sshd_config
35. SSH - klucze
Na komputerze klienta:
ssh-keygen
Klucz publiczny trafia na serwer do:
~/.ssh/authorized_keys
Uprawnienia:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
36. SSH - podstawowe utwardzenie
Rozważ:
PermitRootLogin no
Po upewnieniu się, że logowanie kluczem działa:
PasswordAuthentication no
Przed restartem SSH:
sshd -t
Dopiero potem:
service sshd reload
Nie wyłączaj logowania hasłem zdalnie, zanim nie sprawdzisz w osobnej sesji, że logowanie kluczem rzeczywiście działa.
37. Firewall
FreeBSD zawiera kilka firewalli:
- PF,
- IPFW,
- IPFILTER.
Na nowym serwerze sensownym wyborem jest najczęściej PF albo IPFW.
W tym kompendium używamy PF.
38. PF - włączenie
Konfiguracja:
/etc/pf.conf
Test konfiguracji:
pfctl -vnf /etc/pf.conf
Włączenie przy starcie:
sysrc pf_enable="YES"
Start:
service pf start
39. Minimalny PF dla serwera
Przykład:
ext_if="igc0"
set skip on lo0
block return all
pass out all keep state
pass in on $ext_if proto tcp to ($ext_if) port 22 keep state
To:
- blokuje przychodzący ruch domyślnie,
- pozwala na ruch wychodzący,
- pozwala na SSH.
Jeśli serwer ma nginx:
pass in on $ext_if proto tcp to ($ext_if) port { 80 443 } keep state
40. PF - test przed przeładowaniem
Zawsze:
pfctl -vnf /etc/pf.conf
Jeśli poprawne:
pfctl -f /etc/pf.conf
Podgląd reguł:
pfctl -sr
Stany:
pfctl -ss
Statystyki:
pfctl -si
Na zdalnym serwerze błędna reguła PF może odciąć SSH. Dobrze mieć konsolę awaryjną.
41. Procesy i zasoby
top
top
Pokazuje:
- CPU,
- pamięć,
- load average,
- procesy.
ps
ps aux
Wyszukiwanie:
ps aux | grep nginx
Lepiej:
pgrep -fl nginx
Pamięć
sysctl hw.physmem
Informacje o VM:
vmstat
CPU
sysctl hw.model
Liczba CPU:
sysctl hw.ncpu
42. Dyski
Lista urządzeń:
geom disk list
Prościej:
camcontrol devlist
Zajętość filesystemów:
df -h
43. ZFS - dlaczego warto
ZFS jest bardzo dobrym wyborem dla FreeBSD jako serwera.
Zapewnia:
- checksums,
- snapshoty,
- pule,
- mirrory,
- RAID-Z,
- kompresję,
- klony,
- send/receive,
- scrub,
- boot environments.
44. Podstawowe pojęcia ZFS
Pool
Najwyższy poziom magazynu:
zroot
tank
storage
Polecenie:
zpool
Dataset
Logiczny filesystem wewnątrz puli:
tank/media
tank/backups
tank/jails
Polecenie:
zfs
45. ZFS - najważniejsze polecenia
Lista pul:
zpool list
Stan:
zpool status
Bardzo ważne:
zpool status -x
Jeżeli wszystko jest zdrowe, ZFS poinformuje, że wszystkie pule są zdrowe.
Datasety
zfs list
Utworzenie
zfs create tank/data
Kompresja
zfs set compression=lz4 tank/data
Sprawdzenie:
zfs get compression tank/data
46. ZFS snapshoty
Snapshot:
zfs snapshot tank/data@before-upgrade
Lista:
zfs list -t snapshot
Usunięcie:
zfs destroy tank/data@before-upgrade
Rollback:
zfs rollback tank/data@before-upgrade
Rollback usuwa późniejsze zmiany. Zawsze upewnij się, co robisz.
47. ZFS scrub
Scrub sprawdza integralność danych.
Uruchomienie:
zpool scrub tank
Status:
zpool status tank
Zatrzymanie:
zpool scrub -s tank
Na serwerze z ważnymi danymi okresowy scrub jest dobrą praktyką.
48. ZFS send / receive
Snapshot można wysłać do drugiej puli:
zfs send tank/data@snap | zfs receive backup/data
Przez SSH:
zfs send tank/data@snap | ssh backup-server zfs receive backup/data
To potężna baza do backupu ZFS.
49. ZFS to nie backup
Mirror ZFS:
dysk A + dysk B
chroni przed awarią pojedynczego dysku.
Nie chroni przed:
- przypadkowym usunięciem,
- błędem administratora,
- ransomware,
- pożarem,
- kradzieżą,
- uszkodzeniem całej maszyny.
RAID ≠ backup.
50. SMART
Zainstaluj:
pkg install smartmontools
Sprawdzenie dysku:
smartctl -a /dev/ada0
Test krótki:
smartctl -t short /dev/ada0
Test długi:
smartctl -t long /dev/ada0
Potem ponownie:
smartctl -a /dev/ada0
Nazwy urządzeń zależą od kontrolera i typu dysku.
51. Montowanie filesystemów
Aktualnie zamontowane:
mount
Zajętość:
df -h
Konfiguracja montowania przy starcie:
/etc/fstab
Przykład:
/dev/ada1p1 /data ufs rw 2 2
Przed rebootem warto sprawdzić:
mount -a
Błąd w fstab może utrudnić boot.
52. Logi
Najważniejsze miejsce:
/var/log
Typowe pliki:
/var/log/messages
/var/log/security
/var/log/auth.log
/var/log/cron
Nie każda instalacja musi mieć dokładnie ten sam zestaw.
53. Logi na żywo
tail -f /var/log/messages
Kilka ostatnich linii:
tail -100 /var/log/messages
Wyszukanie błędów:
grep -i error /var/log/messages
54. Syslog
Systemowy daemon:
service syslogd status
Konfiguracja:
/etc/syslog.conf
Po zmianie:
service syslogd reload
55. Rotacja logów
FreeBSD używa:
newsyslog
Konfiguracja:
/etc/newsyslog.conf
/usr/local/etc/newsyslog.conf.d/
Możesz wymusić rotację zgodnie z konfiguracją:
newsyslog
Aplikacje instalowane z pakietów mogą dostarczać własne wpisy konfiguracyjne.
56. Cron
Edycja crona bieżącego użytkownika:
crontab -e
Lista:
crontab -l
Format:
minuta godzina dzień_miesiąca miesiąc dzień_tygodnia polecenie
Przykład codziennie o 03:30:
30 3 * * * /usr/local/bin/backup.sh
57. Cron roota
Jako root:
crontab -e
Zadania roota wykonują się z uprawnieniami administratora.
Nie wpisuj tam skryptów, których właścicielem może być zwykły użytkownik.
58. periodic
FreeBSD ma dodatkowy mechanizm:
periodic
Standardowe zadania:
periodic daily
periodic weekly
periodic monthly
Konfiguracja:
/etc/periodic.conf
Jeżeli chcesz poznać dostępne opcje:
man periodic.conf
periodic wykonuje typowe prace konserwacyjne systemu i generuje raporty.
59. sysctl
sysctl pozwala odczytywać i zmieniać wiele parametrów kernela podczas pracy systemu.
Lista:
sysctl -a
Przykład:
sysctl hw.ncpu
sysctl hw.physmem
60. Tymczasowa zmiana sysctl
Przykład:
sysctl net.inet.ip.forwarding=1
Po restarcie zmiana znika.
61. Trwała zmiana sysctl
Plik:
/etc/sysctl.conf
Przykład:
net.inet.ip.forwarding=1
Nie kopiuj losowych „tuningów FreeBSD” z blogów.
Najpierw zrozum parametr i sprawdź:
man 4 ...
man 5 sysctl.conf
62. /boot/loader.conf
Używany głównie do ustawień wymaganych podczas startu kernela.
Przykład ładowania modułu:
foo_load="YES"
Nie wrzucaj tam każdego tuningu znalezionego w Internecie.
Jeżeli parametr można ustawić po starcie przez sysctl, zazwyczaj powinien trafić do:
/etc/sysctl.conf
63. Moduły kernela
Lista:
kldstat
Załadowanie:
kldload modul
Usunięcie:
kldunload modul
Informacje:
kldstat -v
64. Jails - podstawowa idea
Jail to natywna izolacja FreeBSD.
Można myśleć o niej jak o bardzo lekkim kontenerze systemowym.
Jail:
- korzysta z kernela hosta,
- ma własny filesystem/userland,
- może mieć własny adres IP,
- może mieć własne procesy i usługi,
- jest izolowany od hosta.
To jeden z najmocniejszych elementów FreeBSD jako serwera.
65. Do czego używać jails
Przykładowy serwer:
host FreeBSD
├── jail: reverse-proxy
├── jail: aplikacja
├── jail: postgres
└── jail: monitoring
Korzyści:
- separacja usług,
- łatwiejsze backupy,
- prostsze migracje,
- ograniczenie skutków włamania,
- porządek w konfiguracji.
66. Konfiguracja jails
Główne miejsca:
/etc/jail.conf
/etc/jail.conf.d/
Dobrą praktyką jest osobny plik:
/etc/jail.conf.d/www.conf
67. Minimalna definicja jail
Zakładamy, że system jail znajduje się już w:
/usr/local/jails/www
Przykład:
www {
host.hostname = "www.local";
path = "/usr/local/jails/www";
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
mount.devfs;
ip4.addr = "192.168.10.50";
interface = "igc0";
}
Szczegóły sieci zależą od architektury serwera.
68. Autostart jails
sysrc jail_enable="YES"
Opcjonalnie równoległy start:
sysrc jail_parallel_start="YES"
69. Zarządzanie jail
Lista:
jls
Start wszystkich:
service jail start
Start konkretnego:
service jail start www
Stop:
service jail stop www
Restart:
service jail restart www
70. Wejście do jail
jexec www /bin/sh
lub:
jexec www /bin/csh
Wtedy pracujesz wewnątrz jail.
71. Usługi w jail
Można używać:
service -j www nginx status
Przykład:
service -j www nginx restart
To pozwala zarządzać usługami jail bez ręcznego jexec.
72. ZFS i jails
Bardzo wygodny układ:
zroot/jails
zroot/jails/www
zroot/jails/db
Daje to możliwość:
- snapshotów pojedynczego jail,
- backupu
zfs send, - quota,
- klonowania.
Przykład:
zfs create zroot/jails
zfs create zroot/jails/www
73. Service Jails w FreeBSD 15
FreeBSD 15 wprowadził service jails.
Pozwalają uruchomić pojedynczą usługę w automatycznie tworzonej izolacji jail bez budowania kompletnego tradycyjnego jail.
Przykładowa idea:
service syslogd stop
sysrc syslogd_svcj="YES"
service syslogd start
To rozwiązanie bardziej zaawansowane.
Najpierw dobrze opanuj klasyczne:
rc.conf
service
jails
dopiero potem eksperymentuj z service jails.
74. Backup
Backup powinien obejmować co najmniej:
/etc
/usr/local/etc
/home lub /usr/home
ważne datasety
bazy danych
klucze SSH
konfigurację aplikacji
Nie wystarczy backup plików aplikacji.
75. Backup baz danych
Nie kopiuj na żywo plików bazy PostgreSQL/MySQL jako zwykłych plików i nie zakładaj, że backup będzie spójny.
Używaj narzędzi bazy:
PostgreSQL:
pg_dump
pg_dumpall
lub kontrolowanego snapshotu przy poprawnie przygotowanej procedurze.
76. ZFS jako mechanizm backupu
Dobry schemat:
snapshot
↓
zfs send
↓
drugi serwer / drugi pool / backup off-site
Przykład:
zfs snapshot tank/data@2026-09-19
zfs send tank/data@2026-09-19 | ssh backup zfs receive backups/server/data
77. Aktualizacje - rozsądna procedura
Dla domowego lub małego serwera:
- sprawdź backup,
- sprawdź stan ZFS,
- utwórz boot environment,
- zaktualizuj base system,
- zrestartuj jeśli trzeba,
- zaktualizuj pakiety,
- sprawdź usługi,
- sprawdź logi,
- sprawdź porty,
- wykonaj podstawowe testy aplikacji.
Przykład:
zpool status -x
bectl create before-update
freebsd-update fetch
freebsd-update install
shutdown -r now
Po restarcie:
pkg update
pkg upgrade
pkg audit -F
Następnie:
service -e
sockstat -4 -6 -l
tail -100 /var/log/messages
78. Monitoring podstawowy
Bez instalowania ciężkich systemów monitoringu warto regularnie sprawdzać:
uptime
top
df -h
zpool status
sockstat -4 -6 -l
service -e
pkg audit -F
79. uptime
uptime
Pokazuje między innymi:
- jak długo działa system,
- ilu jest użytkowników,
- load average.
Load average nie oznacza bezpośrednio procentów CPU.
80. dmesg
Komunikaty kernela:
dmesg
Przydatne przy:
- problemach z dyskami,
- siecią,
- sterownikami,
- USB,
- błędach sprzętowych.
Ostatnie linie:
dmesg | tail
81. Porty i nasłuchujące procesy
Najważniejsze:
sockstat -4 -6 -l
Tylko TCP:
sockstat -4 -6 -l -P tcp
Jeżeli aplikacja „działa”, ale nie można się z nią połączyć:
service app statussockstat -4 -6 -l- sprawdź firewall,
- sprawdź bind address,
- sprawdź logi.
82. Typowy problem: localhost zamiast wszystkich interfejsów
Aplikacja może nasłuchiwać tylko:
127.0.0.1:8080
Wtedy z innego komputera nie będzie dostępna.
Sprawdź:
sockstat -4 -6 -l
Jeśli ma być dostępna z sieci, aplikacja musi nasłuchiwać na odpowiednim adresie, np.:
0.0.0.0:8080
albo konkretnym IP serwera.
Nie wystawiaj jednak bazy danych czy paneli administracyjnych na wszystkie interfejsy bez potrzeby.
83. Reverse proxy
Typowy serwer może wyglądać tak:
Internet
↓
PF
↓
nginx :80/:443
↓
aplikacja :8080
Aplikacja może wtedy nasłuchiwać wyłącznie na:
127.0.0.1:8080
a nginx wystawia ją na zewnątrz.
To często lepsze niż bezpośrednie wystawianie aplikacji.
84. Nginx - szybki przykład
Instalacja:
pkg install nginx
Włączenie:
sysrc nginx_enable="YES"
Test konfiguracji:
nginx -t
Start:
service nginx start
Reload:
service nginx reload
Konfiguracja:
/usr/local/etc/nginx/nginx.conf
85. Reverse proxy nginx
Przykładowa sekcja:
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Po zmianie:
nginx -t
service nginx reload
86. Bazy danych jako usługi
Pakiet zwykle instaluje:
- binaria,
- konfigurację,
- skrypt rc.d.
Schemat pozostaje ten sam:
pkg install pakiet
service nazwa rcvar
sysrc nazwa_enable="YES"
service nazwa start
service nazwa status
Część baz wymaga dodatkowej inicjalizacji katalogu danych przed pierwszym startem.
Zawsze czytaj komunikaty wyświetlane przez pkg install.
87. WireGuard
FreeBSD posiada obsługę WireGuarda.
W zależności od sposobu konfiguracji możesz używać narzędzi:
wg
wg-quick
oraz interfejsów FreeBSD.
Kluczowa zasada administracyjna:
po uruchomieniu sprawdź:
ifconfig
wg show
netstat -rn
Routing jest równie ważny jak sama konfiguracja tunelu.
88. System DNS, routing i firewall - diagnostyka warstwami
Jeżeli „sieć nie działa”, nie zgaduj.
Sprawdzaj po kolei:
1. Interfejs
ifconfig
2. Adres IP
Czy interfejs ma poprawny adres?
3. Routing
netstat -rn
4. Brama
route -n get default
5. IP bez DNS
ping 1.1.1.1
6. DNS
host freebsd.org
7. Firewall
pfctl -sr
8. Nasłuch
sockstat -4 -6 -l
Takie podejście jest znacznie skuteczniejsze niż losowe restartowanie usług.
89. Diagnostyka usługi - uniwersalny schemat
Załóżmy, że nginx nie działa.
1. Czy usługa istnieje?
service -l | grep nginx
2. Czy jest włączona?
service nginx rcvar
lub:
sysrc nginx_enable
3. Status
service nginx status
4. Test konfiguracji
nginx -t
5. Próba startu
service nginx start
6. Logi
tail -100 /var/log/messages
plus log aplikacji.
7. Proces
pgrep -fl nginx
8. Port
sockstat -4 -6 -l
9. Firewall
pfctl -sr
90. Co uruchamia się podczas bootowania
W uproszczeniu:
loader
↓
kernel
↓
init
↓
rc
↓
rc.conf
↓
skrypty /etc/rc.d
↓
skrypty /usr/local/etc/rc.d
Kolejność usług ustalana jest przez zależności w skryptach rc.d.
Nie musisz ręcznie tworzyć kolejności typu:
01-database
02-web
03-app
Mechanizm rc potrafi zależności uporządkować.
91. Zależności w skryptach rc.d
Własny skrypt może zawierać:
# PROVIDE: myapp
# REQUIRE: NETWORKING
# BEFORE: LOGIN
# KEYWORD: shutdown
Znaczenie:
PROVIDE- co skrypt zapewnia,REQUIRE- czego wymaga wcześniej,BEFORE- przed czym ma wystartować,KEYWORD- dodatkowe właściwości.
Kolejność można zobaczyć:
service -r
92. Awaryjny start i problemy z bootem
Jeśli system nie bootuje poprawnie, FreeBSD pozwala wejść w tryb single-user.
Po uruchomieniu mogą być potrzebne:
fsck
dla UFS lub diagnostyka ZFS.
Root filesystem może być tylko do odczytu.
Remount:
mount -u /
mount -a
Nie wykonuj fsck na zamontowanym do zapisu filesystemie.
93. Reboot i shutdown
Restart:
shutdown -r now
Wyłączenie:
shutdown -p now
Można też:
reboot
ale shutdown daje czytelniejszą kontrolę.
94. Sprawdzanie startu po reboot
Po restarcie:
uptime
service -e
sockstat -4 -6 -l
zpool status -x
tail -100 /var/log/messages
To szybki sanity check.
95. Bezpieczeństwo - minimum dla serwera
Przynajmniej:
- regularne aktualizacje,
pkg audit -F,- SSH na kluczach,
- root bez logowania po SSH,
- firewall,
- nie wystawiać niepotrzebnych usług,
- osobni użytkownicy dla aplikacji,
- backup poza maszyną,
- regularna kontrola logów,
- sprawdzanie otwartych portów.
96. Najważniejsza reguła bezpieczeństwa usług
Nie uruchamiaj aplikacji jako root, jeżeli nie musi działać jako root.
Przykład użytkownika:
pw useradd webapp -d /nonexistent -s /usr/sbin/nologin
Następnie aplikację uruchamiaj przez:
daemon -u webapp ...
Jeżeli proces zostanie przejęty, atakujący nie uzyskuje automatycznie praw roota.
97. Użytkownik bez logowania
Dla usług dobry shell to:
/usr/sbin/nologin
Sprawdzenie:
grep nologin /etc/shells
Konta aplikacyjne nie potrzebują interaktywnego logowania.
98. Uprawnienia plików
Zmiana właściciela:
chown user:group plik
Rekurencyjnie:
chown -R webapp:webapp /usr/local/webapp
Zmiana trybu:
chmod 640 config.conf
chmod 750 katalog
Nie rozwiązuj problemów przez:
chmod -R 777
To niemal zawsze zły pomysł.
99. Proces instalacji nowego serwera
Praktyczna kolejność:
1. Instalacja FreeBSD
Preferuj:
- ZFS jako root,
- rozsądny hostname,
- poprawną sieć,
- konto administratora.
2. Aktualizacja
freebsd-update fetch
freebsd-update install
pkg update
pkg upgrade
3. SSH
- klucze,
- test,
- ograniczenie logowania.
4. Firewall
- minimalny ruleset,
- test składni,
- dopiero potem aktywacja.
5. ZFS
- datasety,
- snapshoty,
- plan scrub,
- backup.
6. Usługi
Każda według schematu:
pkg install
→ konfiguracja
→ test konfiguracji
→ sysrc *_enable=YES
→ service start
→ status
→ port
→ log
100. Serwer aplikacji - przykładowa architektura
Prosty i czytelny układ:
FreeBSD host
│
├── PF
│
├── nginx
│ ├── :80
│ └── :443
│
├── aplikacja Go
│ └── 127.0.0.1:8080
│
├── PostgreSQL
│ └── 127.0.0.1:5432
│
└── ZFS
├── zroot/app
├── zroot/db
└── zroot/backups
Można to później rozdzielić na jails:
FreeBSD host
│
├── jail nginx
├── jail app
└── jail postgres
Nie trzeba zaczynać od najbardziej złożonej architektury.
101. Co warto instalować na nowym serwerze
Przykładowy zestaw:
pkg install vim git curl rsync smartmontools
Opcjonalnie:
pkg install sudo tmux htop
Nie instaluj narzędzi tylko dlatego, że „wszyscy je mają”.
FreeBSD base system zawiera bardzo dużo użytecznych narzędzi.
102. Dokumentacja systemowa
Najważniejszą dokumentacją FreeBSD są manuale.
Przykład:
man service
Jeśli chcesz wiedzieć, jak działa konfiguracja:
man rc.conf
Jeśli nie pamiętasz nazwy polecenia:
apropos service
lub:
man -k jail
103. Jak czytać nazwy manuali
W dokumentacji zobaczysz zapis:
service(8)
rc.conf(5)
zfs(8)
Liczba oznacza sekcję manuala.
Typowo:
1 - polecenia użytkownika
2 - syscall
3 - biblioteki
4 - sterowniki/kernel
5 - formaty plików konfiguracyjnych
8 - administracja systemem
Przykład:
man 8 service
man 5 rc.conf
104. Najważniejsze komendy administratora
System
freebsd-version
uname -a
uptime
dmesg
sysctl
Pakiety
pkg update
pkg upgrade
pkg install
pkg delete
pkg info
pkg audit -F
Usługi
service -l
service -e
service nazwa status
service nazwa start
service nazwa stop
service nazwa restart
service nazwa reload
service nazwa rcvar
Autostart
sysrc nazwa_enable="YES"
Sieć
ifconfig
netstat -rn
route -n get default
sockstat -4 -6 -l
Procesy
top
ps aux
pgrep -fl nazwa
Dyski
df -h
zpool list
zpool status
zfs list
Jails
jls
jexec
service jail
service -j jail usluga
Logi
tail -f /var/log/messages
grep
105. Codzienna kontrola serwera
Nie trzeba wykonywać jej codziennie ręcznie, ale warto znać schemat:
uptime
zpool status -x
df -h
sockstat -4 -6 -l
pkg audit -F
Jeżeli coś wygląda źle:
tail -100 /var/log/messages
106. Kontrola po zmianie konfiguracji
Po każdej większej zmianie:
- test składni,
- reload zamiast restartu, jeśli możliwe,
- sprawdzenie statusu,
- sprawdzenie portu,
- sprawdzenie logu.
Schemat:
nginx -t
service nginx reload
service nginx status
sockstat -4 -6 -l
tail -50 /var/log/messages
107. Kontrola raz na tydzień / miesiąc
Warto sprawdzać:
pkg audit -F
pkg upgrade
zpool status
zfs list
df -h
SMART:
smartctl -a /dev/ada0
Okresowo:
zpool scrub tank
oraz przede wszystkim:
czy backup naprawdę da się odtworzyć.
Backup, którego nigdy nie testowano, jest tylko nadzieją.
108. Najczęstsze różnice względem Debiana/Linuxa
| Debian/Linux | FreeBSD |
|---|---|
apt |
pkg |
systemctl |
service |
| systemd units | rc.d scripts |
/etc/default/... |
zwykle rc.conf + config aplikacji |
/etc/systemd/system |
/usr/local/etc/rc.d dla własnych usług |
/etc dla pakietów |
często /usr/local/etc |
| Linux namespaces/containers | jails |
ip addr |
ifconfig |
ss -lntp |
sockstat -4 -6 -l |
/proc intensywnie używane |
dużo danych przez sysctl |
| distro + kernel | spójny base system |
To nie znaczy, że FreeBSD jest „lepszym Linuksem”.
To inny system z inną filozofią.
109. Czego nie robić
Nie edytuj:
/etc/defaults/rc.conf
Edytuj:
/etc/rc.conf
Nie instaluj wszystkiego ze źródeł
Jeśli:
pkg install
wystarcza, użyj pakietu.
Nie uruchamiaj wszystkiego jako root
Twórz użytkowników usług.
Nie otwieraj każdego portu w firewallu
Otwieraj tylko to, co rzeczywiście potrzebne.
Nie rób chmod 777, żeby „zadziałało”
Znajdź problem z uprawnieniami.
Nie restartuj całej maszyny przy każdym problemie
Najpierw:
service nazwa restart
lub:
service nazwa reload
Nie zakładaj, że mirror jest backupem
Nie jest.
110. Gdy usługa nie chce wystartować
Uniwersalne pytania:
Czy pakiet jest zainstalowany?
pkg info | grep nazwa
Czy skrypt istnieje?
service -l | grep nazwa
Czy jest włączona?
service nazwa rcvar
Czy config jest poprawny?
Użyj testera aplikacji.
Co mówi start?
service nazwa start
Co mówią logi?
tail -100 /var/log/messages
Czy proces istnieje?
pgrep -fl nazwa
Czy port jest otwarty?
sockstat -4 -6 -l
Czy firewall przepuszcza?
pfctl -sr
111. Przykład: instalacja własnej aplikacji Go
Załóżmy:
/usr/local/myapp/myapp
1. Użytkownik
pw useradd myapp -d /nonexistent -s /usr/sbin/nologin
2. Katalog
mkdir -p /usr/local/myapp
chown -R myapp:myapp /usr/local/myapp
3. Konfiguracja
/usr/local/etc/myapp.conf
Ustaw właściciela i prawa odpowiednio do tego, czy plik zawiera sekrety.
4. Skrypt rc.d
/usr/local/etc/rc.d/myapp
5. Włączenie
sysrc myapp_enable="YES"
6. Start
service myapp start
7. Kontrola
service myapp status
pgrep -fl myapp
sockstat -4 -6 -l
8. Reverse proxy
nginx kieruje:
app.example.com
do:
127.0.0.1:8080
112. Przykład: bezpieczna zmiana nginx
Edytujesz:
/usr/local/etc/nginx/nginx.conf
Następnie:
nginx -t
Jeżeli test jest OK:
service nginx reload
Kontrola:
service nginx status
sockstat -4 -6 -l
Jeśli coś nie działa:
tail -100 /var/log/messages
plus log nginx.
113. Przykład: pakiet został zaktualizowany i usługa nie działa
Sprawdź:
pkg info nginx
service nginx status
nginx -t
tail -100 /var/log/messages
Sprawdź także:
/usr/local/etc
Pakiet może zainstalować nowy plik:
*.sample
z nowymi opcjami konfiguracji.
Nie zakładaj automatycznie, że stary config jest kompatybilny.
114. Przykład: po reboot aplikacja nie wystartowała
Najpierw:
service myapp status
Potem:
service myapp rcvar
Jeżeli:
myapp_enable="NO"
to brak autostartu.
Włącz:
sysrc myapp_enable="YES"
Uruchom:
service myapp start
115. Przykład: serwer odpowiada lokalnie, ale nie z LAN
Na serwerze:
curl http://127.0.0.1:8080
działa.
Z innej maszyny nie działa.
Sprawdź:
sockstat -4 -6 -l
Jeżeli widzisz:
127.0.0.1:8080
to aplikacja celowo słucha tylko lokalnie.
Jeżeli powinna być dostępna bezpośrednio w LAN, zmień bind address.
Jeżeli ma być za nginx, nie zmieniaj - skonfiguruj reverse proxy.
116. Przykład: brak miejsca na dysku
Sprawdź:
df -h
Dla ZFS:
zfs list
Snapshoty:
zfs list -t snapshot
Pakiety:
pkg clean
Nie zaczynaj od losowego kasowania plików w:
/var
Najpierw ustal, co zajmuje miejsce.
Pomocne:
du -sh /*
oraz bardziej lokalnie:
du -sh /var/*
Na dużych filesystemach du może działać długo.
117. Przykład: podejrzenie problemu z dyskiem
Sprawdź:
zpool status
dmesg | tail -100
smartctl -a /dev/ada0
Nie ignoruj:
- checksum errors,
- read errors,
- write errors,
- urządzeń DEGRADED/FAULTED.
ZFS potrafi wykryć problemy, ale nie naprawi fizycznie umierającego dysku.
118. Dobra filozofia administracji FreeBSD
FreeBSD najlepiej administruje się spokojnie i deklaratywnie:
/etc/rc.conf
/usr/local/etc
/etc/pf.conf
/etc/jail.conf.d
/etc/sysctl.conf
Zamiast wykonywać serię losowych komend, staraj się tak skonfigurować system, żeby po reboot sam odtworzył poprawny stan.
To znaczy:
- usługi mają autostart,
- sieć ma trwałą konfigurację,
- firewall ładuje swoje reguły,
- jails startują automatycznie,
- filesystemy montują się automatycznie,
- zadania są w cron/periodic,
- aplikacje nie zależą od ręcznego uruchamiania.
119. Minimalny workflow administratora
Jeżeli masz zapamiętać tylko jeden schemat pracy:
1. zmień konfigurację
2. sprawdź składnię
3. uruchom/reloaduj usługę
4. sprawdź status
5. sprawdź port
6. sprawdź log
7. upewnij się, że zmiana przetrwa reboot
Czyli:
edytor config
tester config
service app reload
service app status
sockstat -4 -6 -l
tail /var/log/...
sysrc ...
120. Ściąga: usługi
service -l
service -e
service nginx rcvar
service nginx status
service nginx start
service nginx stop
service nginx restart
service nginx reload
sysrc nginx_enable="YES"
sysrc nginx_enable="NO"
service nginx onestart
service nginx onestop
121. Ściąga: system
freebsd-version
uname -a
uptime
dmesg
top
ps aux
sysctl hw.model
sysctl hw.ncpu
122. Ściąga: pakiety
pkg update
pkg upgrade
pkg search nazwa
pkg install nazwa
pkg delete nazwa
pkg info
pkg info nazwa
pkg info -l nazwa
pkg which /sciezka/do/pliku
pkg autoremove
pkg audit -F
123. Ściąga: sieć
ifconfig
netstat -rn
route -n get default
sockstat -4 -6 -l
host freebsd.org
ping 1.1.1.1
124. Ściąga: ZFS
zpool list
zpool status
zpool status -x
zfs list
zfs create tank/data
zfs snapshot tank/data@snap
zfs list -t snapshot
zfs destroy tank/data@snap
zpool scrub tank
125. Ściąga: jails
jls
service jail status
service jail start
service jail stop
service jail start www
service jail stop www
jexec www /bin/sh
service -j www nginx status
service -j www nginx restart
126. Ściąga: PF
pfctl -vnf /etc/pf.conf
pfctl -f /etc/pf.conf
pfctl -sr
pfctl -ss
pfctl -si
sysrc pf_enable="YES"
service pf start
service pf status
127. Ściąga: logi
tail -100 /var/log/messages
tail -f /var/log/messages
grep -i error /var/log/messages
service syslogd status
128. Ściąga: diagnostyka usługi
service app status
service app rcvar
pgrep -fl app
sockstat -4 -6 -l
tail -100 /var/log/messages
Plus własny test konfiguracji aplikacji.
129. Co warto opanować po tym kompendium
W tej kolejności:
pkg,rc.conf,sysrc,service,sockstat,- SSH,
- PF,
- ZFS,
- cron/periodic,
- jails,
- własne skrypty rc.d,
- backup przez ZFS send/receive.
Jeżeli te elementy masz opanowane, jesteś w stanie samodzielnie utrzymywać mały lub średni serwer FreeBSD.
130. Dokumentacja i źródła
Oficjalna dokumentacja powinna być pierwszym źródłem informacji.
FreeBSD Handbook
https://docs.freebsd.org/en/books/handbook/
Configuration, Services, Logging and Power Management
https://docs.freebsd.org/en/books/handbook/config/
Packages and Ports
https://docs.freebsd.org/en/books/handbook/ports/
Updating and Upgrading FreeBSD
https://docs.freebsd.org/en/books/handbook/cutting-edge/
ZFS
https://docs.freebsd.org/en/books/handbook/zfs/
Jails and Containers
https://docs.freebsd.org/en/books/handbook/jails/
Firewalls
https://docs.freebsd.org/en/books/handbook/firewalls/
Manual pages
https://man.freebsd.org/
Informacje o wydaniach
https://www.freebsd.org/releases/
FreeBSD 15.1-RELEASE:
https://www.freebsd.org/releases/15.1R/announce/
Release Notes:
https://www.freebsd.org/releases/15.1R/relnotes/
Errata:
https://www.freebsd.org/releases/15.1R/errata/
Informacje o wsparciu i bezpieczeństwie
https://www.freebsd.org/security/
131. Ostatnia rzecz do zapamiętania
FreeBSD jako serwer robi się znacznie prostszy, kiedy zrozumiesz pięć elementów:
pkg → instalacja aplikacji
sysrc → trwała konfiguracja systemu/usług
service → sterowanie usługami
ZFS → magazyn danych i snapshoty
jails → izolacja usług
I najważniejszy wzorzec:
pkg install aplikacja
sysrc aplikacja_enable="YES"
service aplikacja start
service aplikacja status
sockstat -4 -6 -l
To jest odpowiednik dużej części codziennej administracji serwerem FreeBSD.