Debian - desktop i serwer
Debian to stabilna, uniwersalna dystrybucja GNU/Linux używana zarówno na komputerach osobistych, jak i na serwerach. To kompendium zbiera najważniejsze mechanizmy potrzebne do codziennej pracy: pakiety, usługi, logi, sieć, uprawnienia, storage, środowiska GNOME/KDE oraz podstawy administracji serwerem.
Kiedy ten materiał jest przydatny: przy konfiguracji nowego systemu, utrzymaniu stacji roboczej, administracji VPS-em, diagnozowaniu usług i sieci oraz wtedy, gdy trzeba zrozumieć, gdzie Debian przechowuje konfigurację i stan systemu.
Punkt odniesienia: Debian 13 „Trixie”. Na 20 września 2026 aktualnym wydaniem stable jest 13.7. Numer punktowy może się zmieniać, ale opisane tu podstawowe mechanizmy Debiana 13 pozostają te same.
Tematy rozwijane osobno: SSH i zdalna administracja, Docker, systemd, cron i schedulery oraz Linux permissions i bezpieczeństwo serwera.
Mapa kompendium
- Czym jest Debian
- Pakiety i APT
- Debian jako desktop
- Sieć i NetworkManager
- Usługi i logi
- Dyski i systemy plików
- Debian jako serwer
- Diagnostyka
- Dokumentacja i pomoc
1. Czym właściwie jest Debian
Debian to dystrybucja GNU/Linux, która stawia przede wszystkim na:
- stabilność,
- przewidywalność,
- bezpieczeństwo,
- ogromne repozytoria pakietów,
- prostą administrację,
- długie wsparcie,
- brak przywiązania do jednego środowiska graficznego,
- bardzo dobrą dokumentację.
Debian dobrze sprawdza się jednocześnie jako:
- desktop,
- laptop,
- workstation,
- serwer WWW,
- serwer plików,
- host Dockera,
- host maszyn wirtualnych,
- router,
- domowy NAS,
- serwer VPN,
- serwer aplikacji Go / Node.js / Python,
- baza pod homelab.
Debian nie próbuje być „najbardziej nowoczesny za wszelką cenę”. Stabilna gałąź otrzymuje przede wszystkim poprawki błędów i bezpieczeństwa, a nie ciągłe przeskoki do nowych głównych wersji oprogramowania.
2. Gałęzie Debiana
Debian rozwija trzy główne gałęzie.
stable
Wersja produkcyjna.
Przykład:
Debian 13 „Trixie”
To najlepszy wybór dla:
- serwera,
- zwykłego desktopu,
- laptopa do pracy,
- środowiska, które ma po prostu działać.
testing
Pakiety, które mają trafić do następnego stable.
Zalety:
- nowsze oprogramowanie,
- nowsze biblioteki,
- nowsze środowiska graficzne.
Wady:
- możliwe przejściowe konflikty,
- czasem zależności są przez kilka dni niespójne,
- gorszy wybór na serwer produkcyjny.
unstable / Sid
Gałąź rozwojowa.
Nie oznacza, że system cały czas się psuje. „Unstable” oznacza przede wszystkim, że interfejs pakietów i ich wersje stale się zmieniają.
Na serwer produkcyjny - zwykle nie.
3. Jak zbudowany jest system
W dużym uproszczeniu:
sprzęt
↓
firmware / UEFI
↓
bootloader GRUB
↓
kernel Linux
↓
systemd
↓
usługi systemowe
↓
login / display manager
↓
GNOME / KDE albo shell
↓
programy użytkownika
Najważniejszy podział mentalny:
- kernel - obsługa sprzętu, pamięci, procesów, sieci;
- systemd - uruchamianie systemu i usług;
- APT/dpkg - instalacja i aktualizacja oprogramowania;
- NetworkManager / systemd-networkd - sieć;
- GNOME/KDE - interfejs desktopowy;
- OpenSSH - zdalne logowanie;
- journald - logi;
- nftables - firewall.
4. Najważniejsze katalogi
Hierarchia katalogów jest jedną z rzeczy, które trzeba rozumieć.
/
Korzeń całego systemu.
Nie ma odpowiednika „C:, D:, E:” znanego z Windows.
Wszystkie dyski i systemy plików są montowane gdzieś pod /.
/home
Katalogi użytkowników.
Przykład:
/home/user
Zawiera:
- Dokumenty,
- Pobrane,
- konfigurację użytkownika,
- profile aplikacji,
- klucze SSH,
- lokalne dane programów.
Ukryte pliki zaczynają się od kropki:
.bashrc
.profile
.config/
.local/
.ssh/
/root
Katalog domowy użytkownika root.
To nie jest to samo co /.
/etc
Konfiguracja systemu.
To jeden z najważniejszych katalogów administratora.
Przykłady:
/etc/ssh/
/etc/systemd/
/etc/nginx/
/etc/NetworkManager/
/etc/apt/
/etc/fstab
/etc/hosts
Jeśli zastanawiasz się:
„Gdzie Linux trzyma konfigurację tej usługi?”
bardzo często odpowiedź brzmi:
/etc
/var
Dane zmienne.
Przykłady:
/var/log
/var/lib
/var/cache
/var/www
Typowe zastosowania:
- logi,
- bazy danych,
- cache,
- dane usług,
- strony WWW.
/usr
Programy i biblioteki dostarczane przez system.
Przykłady:
/usr/bin
/usr/sbin
/usr/lib
/usr/share
/bin, /sbin, /lib
W nowoczesnym Debianie są zwykle powiązane z odpowiednimi katalogami w /usr.
/tmp
Pliki tymczasowe.
Ich zawartość może zniknąć przy restarcie.
/run
Dane bieżącego uruchomienia systemu.
Np.:
- PID-y,
- sockety,
- informacje o aktywnych usługach.
Po restarcie zawartość jest odtwarzana.
/mnt
Tradycyjne miejsce do ręcznego montowania systemów plików.
Np.:
sudo mount /dev/sdb1 /mnt
/media
Często wykorzystywany przez środowiska desktopowe do automatycznego montowania pendrive'ów i dysków USB.
/opt
Dodatkowe oprogramowanie instalowane poza typowym systemem pakietów.
5. Użytkownicy i uprawnienia
Linux jest od początku systemem wieloużytkownikowym.
Każdy plik ma:
- właściciela,
- grupę,
- uprawnienia.
Sprawdzenie:
ls -l
Przykład:
-rw-r--r-- 1 user user 1240 Sep 19 08:00 notatki.md
Interpretacja:
rw- właściciel
r-- grupa
r-- pozostali
6. root i sudo
root jest administratorem systemu.
Ma praktycznie nieograniczone prawa.
W Debianie administrację najlepiej wykonywać poprzez:
sudo polecenie
Przykład:
sudo apt update
Zamiast pracować cały czas jako root.
Wejście do shella root:
sudo -i
Wyjście:
exit
7. chmod, chown i grupy
zmiana właściciela
sudo chown user:user plik
Rekurencyjnie:
sudo chown -R user:user katalog
zmiana praw
chmod 644 plik
Typowe wartości:
644 - zwykły plik
755 - katalog lub skrypt wykonywalny
600 - plik prywatny
700 - prywatny katalog
Przykład:
chmod 600 ~/.ssh/id_ed25519
dodanie użytkownika do grupy
sudo usermod -aG docker user
Po zmianie grup zwykle należy się wylogować i zalogować ponownie.
Sprawdzenie grup:
groups
8. Zarządzanie pakietami - APT
To jeden z fundamentów Debiana.
APT zarządza:
- repozytoriami,
- zależnościami,
- instalacją,
- aktualizacjami,
- usuwaniem pakietów.
9. Aktualizacja systemu
Najważniejszy duet:
sudo apt update
sudo apt upgrade
apt update:
- nie aktualizuje programów,
- pobiera aktualną listę pakietów.
apt upgrade:
- aktualizuje zainstalowane pakiety.
Bardziej agresywne rozwiązywanie zależności:
sudo apt full-upgrade
Przy normalnym stable najczęściej wystarczy:
sudo apt update
sudo apt upgrade
10. Instalowanie pakietów
sudo apt install nazwa
Przykład:
sudo apt install vim git curl
Kilka jednocześnie:
sudo apt install vim git curl wget htop
11. Usuwanie pakietów
Usunięcie programu:
sudo apt remove nginx
Usunięcie programu i jego konfiguracji systemowej:
sudo apt purge nginx
Usunięcie niepotrzebnych zależności:
sudo apt autoremove
12. Szukanie pakietów
apt search nginx
Informacje:
apt show nginx
Sprawdzenie, czy pakiet jest zainstalowany:
dpkg -l | grep nginx
13. dpkg
APT działa wyżej. dpkg jest narzędziem niższego poziomu.
Instalacja lokalnego .deb:
sudo dpkg -i program.deb
Lepsza metoda:
sudo apt install ./program.deb
APT potrafi wtedy automatycznie dociągnąć zależności.
14. Repozytoria APT
Konfiguracja znajduje się głównie w:
/etc/apt/
Na Debianie 13 spotkasz między innymi pliki typu:
/etc/apt/sources.list.d/debian.sources
Po zmianie repozytoriów:
sudo apt update
15. main, contrib, non-free, non-free-firmware
Repozytoria mogą zawierać różne sekcje.
main
Wolne oprogramowanie spełniające zasady Debiana.
contrib
Wolne oprogramowanie zależne od elementów spoza main.
non-free
Pakiety niewolne.
non-free-firmware
Firmware potrzebny np. do:
- Wi-Fi,
- GPU,
- kart sieciowych,
- części laptopów.
Na współczesnym desktopie sekcja firmware jest często niezbędna.
16. Flatpak
Na desktopie warto znać Flatpaka.
Instalacja:
sudo apt install flatpak
Dodanie Flathub:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Instalowanie:
flatpak install flathub ID.programu
Lista:
flatpak list
Aktualizacja:
flatpak update
Usuwanie:
flatpak uninstall ID.programu
Flatpak jest dobry dla aplikacji desktopowych, które chcemy mieć nowsze niż wersje dostępne w stable.
17. Co instalować przez APT, a co przez Flatpak
Dobra reguła:
APT
Używaj dla:
- bibliotek,
- sterowników,
- serwerów,
- usług,
- CLI,
- narzędzi programistycznych,
- komponentów systemu.
Przykłady:
nginx
git
vim
openssh-server
postgresql
curl
gcc
Flatpak
Dobrze pasuje do:
- komunikatorów,
- aplikacji multimedialnych,
- narzędzi desktopowych,
- aplikacji, których chcesz mieć nowszą wersję.
18. Debian jako desktop
Desktop Linux składa się z kilku warstw.
kernel
↓
sterowniki
↓
Wayland / X11
↓
display manager
↓
GNOME lub KDE
↓
aplikacje
19. GNOME
GNOME stawia na:
- prostotę,
- małą liczbę opcji widocznych na pierwszy rzut oka,
- workflow oparty na Activities,
- wirtualne pulpity,
- Wayland.
Display manager:
gdm3
Pakiety mogą obejmować:
gnome
gnome-core
gdm3
20. KDE Plasma
KDE Plasma jest bardziej konfigurowalne.
Charakterystyka:
- klasyczny pulpit,
- panel,
- menu aplikacji,
- ogromna liczba ustawień,
- rozbudowane skróty,
- bardzo konfigurowalny wygląd.
Display manager najczęściej:
sddm
Pakiety:
kde-standard
kde-plasma-desktop
sddm
21. GNOME kontra KDE
W uproszczeniu:
| Cecha | GNOME | KDE |
|---|---|---|
| filozofia | minimalizm | konfiguracja |
| ustawienia | proste | bardzo rozbudowane |
| workflow | Activities | klasyczny desktop |
| manager logowania | GDM | SDDM |
| menedżer plików | Files / Nautilus | Dolphin |
| terminal | GNOME Console/Terminal | Konsole |
| ustawienia | GNOME Settings | System Settings |
Oba są pełnoprawnymi środowiskami.
Nie istnieje techniczny powód, by Debian „musiał” używać jednego z nich.
22. Można mieć GNOME i KDE jednocześnie
Tak.
Na ekranie logowania można wybrać sesję.
Jednak instalowanie wielu pełnych środowisk powoduje:
- duplikację aplikacji,
- kilka terminali,
- kilka edytorów,
- kilka narzędzi ustawień,
- czasem bałagan z domyślnymi aplikacjami.
Do testów - OK.
Na głównym systemie wygodniej zwykle wybrać jedno.
23. Wayland i X11
Współczesny Debian preferuje Wayland.
Wayland odpowiada za komunikację między aplikacjami a systemem graficznym.
Starszy system:
X11 / Xorg
Wayland daje m.in.:
- lepszą izolację aplikacji,
- nowocześniejszą obsługę ekranów,
- lepszą architekturę bezpieczeństwa.
X11 nadal może być przydatny dla niektórych starszych aplikacji.
Sprawdzenie sesji:
echo $XDG_SESSION_TYPE
Może zwrócić:
wayland
lub:
x11
24. Display manager
Display manager pokazuje ekran logowania.
GNOME:
gdm3
KDE:
sddm
Status:
systemctl status gdm3
albo:
systemctl status sddm
Restart:
sudo systemctl restart gdm3
UWAGA: zakończy to aktywną sesję graficzną.
25. NetworkManager
Na desktopie Debian zwykle korzysta z NetworkManagera.
GUI:
- GNOME Settings,
- KDE System Settings.
CLI:
nmcli
Lista urządzeń:
nmcli device
Połączenia:
nmcli connection show
Aktywne:
nmcli connection show --active
Wi-Fi:
nmcli device wifi list
Połączenie:
nmcli device wifi connect "SSID" password "HASLO"
26. Sprawdzanie adresów IP
Nowoczesne narzędzie:
ip addr
Krócej:
ip a
Routing:
ip route
Typowy wynik:
default via 192.168.1.1 dev enp3s0
oznacza bramę domyślną.
27. Interfejsy sieciowe
Nazwy typu:
enp3s0
wlp2s0
są przewidywalnymi nazwami interfejsów.
Typowo:
en... Ethernet
wl... Wi-Fi
28. DNS
Sprawdzenie resolvera:
resolvectl status
Plik:
/etc/resolv.conf
może być generowany automatycznie.
Nie należy go zawsze ręcznie edytować.
W systemie desktopowym DNS-em zazwyczaj zarządza NetworkManager.
29. Testowanie sieci
Czy działa IP:
ping 1.1.1.1
Czy działa DNS:
ping debian.org
Jeżeli:
ping 1.1.1.1
działa, ale:
ping debian.org
nie działa, problem najprawdopodobniej dotyczy DNS.
30. curl i wget
Pobranie strony:
curl https://example.com
Nagłówki HTTP:
curl -I https://example.com
Pobranie pliku:
wget https://example.com/file.zip
31. Audio - PipeWire
Współczesny Debian korzysta przede wszystkim z PipeWire.
Elementy:
PipeWire
WirePlumber
PulseAudio compatibility layer
Sprawdzenie:
systemctl --user status pipewire
oraz:
systemctl --user status wireplumber
32. Bluetooth
Typowa usługa:
systemctl status bluetooth
Restart:
sudo systemctl restart bluetooth
CLI:
bluetoothctl
33. Sterowniki i firmware
Linux posiada ogromną część sterowników w jądrze.
Dlatego zwykle nie instaluje się osobnych „driver packages” jak w Windows.
Jednak firmware może być dostarczany jako pakiety.
Diagnostyka sprzętu:
lspci
USB:
lsusb
Kernel wykrył urządzenie:
dmesg
34. NVIDIA
NVIDIA jest szczególnym przypadkiem.
Debian może korzystać z:
- otwartego Nouveau,
- oficjalnego sterownika NVIDIA.
Pakiety sterownika zależą od generacji GPU.
Najpierw warto sprawdzić sprzęt:
lspci | grep -i nvidia
Informacje o rekomendowanych sterownikach:
apt search nvidia-driver
35. Intel i AMD
Dla większości współczesnych układów Intel i AMD sterownik graficzny znajduje się bezpośrednio w:
- kernelu,
- Mesa.
Zwykle nic nie trzeba instalować ręcznie.
36. Laptop - bateria i energia
Stan baterii:
upower -i "$(upower -e | grep BAT)"
Informacje z sysfs:
cat /sys/class/power_supply/BAT0/capacity
Nie każdy laptop nazywa baterię BAT0.
37. Uśpienie
Polecenie:
systemctl suspend
Hibernacja:
systemctl hibernate
Dostępność hibernacji zależy m.in. od:
- swap,
- konfiguracji kernela,
- firmware.
38. Drukarki
Linux wykorzystuje CUPS.
Status:
systemctl status cups
Panel WWW lokalnie:
http://localhost:631
Pakiety:
sudo apt install cups
39. Systemd - serce uruchamiania usług
Debian używa systemd.
Systemd uruchamia:
- sieć,
- SSH,
- serwery,
- display manager,
- harmonogramy,
- usługi użytkowników.
Podstawowa jednostka:
unit
Najczęściej spotkasz:
.service
.timer
.socket
.mount
.target
40. systemctl
Status usługi:
systemctl status nginx
Start:
sudo systemctl start nginx
Stop:
sudo systemctl stop nginx
Restart:
sudo systemctl restart nginx
Przeładowanie konfiguracji bez pełnego restartu:
sudo systemctl reload nginx
41. Włączanie przy starcie
sudo systemctl enable nginx
Wyłączenie:
sudo systemctl disable nginx
Start + enable:
sudo systemctl enable --now nginx
To bardzo przydatna konstrukcja.
42. Czy usługa działa
systemctl is-active nginx
Czy startuje automatycznie:
systemctl is-enabled nginx
43. Lista działających usług
systemctl --type=service --state=running
Wszystkie usługi:
systemctl --type=service
44. Usługi użytkownika
Systemd działa także dla zwykłego użytkownika.
Przykład:
systemctl --user status pipewire
Własne jednostki użytkownika można umieszczać w:
~/.config/systemd/user/
45. Logi - journalctl
Jedno z najważniejszych narzędzi administratora.
Ostatnie logi:
journalctl
Logi bieżącego uruchomienia:
journalctl -b
Poprzedniego uruchomienia:
journalctl -b -1
46. Log konkretnej usługi
journalctl -u nginx
Ostatnie wpisy:
journalctl -u nginx -n 50
Śledzenie na żywo:
journalctl -u nginx -f
To odpowiednik:
tail -f
dla journald.
47. Logi kernela
journalctl -k
lub:
dmesg
Przy problemach z:
- dyskiem,
- USB,
- GPU,
- Wi-Fi,
- zasilaniem,
warto zacząć właśnie tutaj.
48. Procesy
Klasyczne:
ps aux
Interaktywne:
top
Wygodniejsze:
htop
Instalacja:
sudo apt install htop
49. PID
Każdy proces ma numer:
PID
Przykład:
ps aux | grep nginx
Zabicie procesu:
kill PID
Wymuszenie:
kill -9 PID
kill -9 używaj dopiero, gdy normalne zakończenie nie działa.
50. pkill i killall
Po nazwie:
pkill firefox
lub:
killall firefox
51. Pamięć RAM
free -h
Przykład:
Mem:
Swap:
Linux wykorzystuje wolny RAM jako cache.
Duża wartość „used” nie oznacza automatycznie problemu.
52. CPU i load average
uptime
Przykład:
load average: 0.22, 0.30, 0.25
To średnie obciążenie z:
- 1 minuty,
- 5 minut,
- 15 minut.
Na maszynie 4-rdzeniowej load 4.0 oznacza mniej więcej pełne wykorzystanie możliwości planowania CPU.
53. Dyski
Lista urządzeń:
lsblk
Z systemami plików:
lsblk -f
Zajętość:
df -h
Rozmiary katalogów:
du -sh katalog
Największe katalogi:
du -h --max-depth=1 /var | sort -h
54. Montowanie dysków
Przykład:
sudo mount /dev/sdb1 /mnt
Odmontowanie:
sudo umount /mnt
Nie:
unmount
lecz:
umount
55. /etc/fstab
Definiuje systemy plików montowane podczas startu.
Przykład:
UUID=xxxx-xxxx /data ext4 defaults 0 2
UUID:
blkid
Po zmianie fstab warto przetestować:
sudo mount -a
Jeżeli polecenie nie zgłasza błędu, konfiguracja zwykle jest poprawna.
56. ext4
Domyślny, konserwatywny wybór.
Zalety:
- stabilny,
- prosty,
- bardzo dobrze wspierany,
- łatwy w administracji.
57. Btrfs
Posiada m.in.:
- snapshoty,
- subvolume,
- checksumming.
Na desktopie może być ciekawy, ale wymaga trochę większej wiedzy.
58. ZFS
Nie jest częścią głównego kernela Linux.
Świetny dla:
- NAS,
- serwerów,
- dużych zbiorów danych,
- snapshotów,
- mirrorów.
Na zwykłym laptopie zwykle nie jest potrzebny.
59. SMART
Stan dysku:
sudo apt install smartmontools
Sprawdzenie:
sudo smartctl -a /dev/sda
Dla NVMe:
sudo smartctl -a /dev/nvme0
60. Debian jako serwer
Serwer Debiana może działać bez GUI.
Typowy minimalny zestaw:
Debian
OpenSSH
systemd
APT
firewall
aplikacje/usługi
Brak GNOME/KDE:
- oszczędza RAM,
- zmniejsza liczbę pakietów,
- zmniejsza powierzchnię ataku,
- upraszcza system.
61. Instalacja SSH
sudo apt install openssh-server
Status:
systemctl status ssh
Włączenie:
sudo systemctl enable --now ssh
62. Łączenie przez SSH
ssh user@192.168.1.20
Na niestandardowym porcie:
ssh -p 2222 user@server
63. Klucze SSH
Generowanie:
ssh-keygen -t ed25519
Domyślne pliki:
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
Klucz prywatny:
id_ed25519
NIE udostępniamy go nikomu.
Klucz publiczny:
id_ed25519.pub
można kopiować na serwery.
64. ssh-copy-id
Najprostsze kopiowanie klucza:
ssh-copy-id user@server
Potem:
ssh user@server
może działać bez hasła.
65. authorized_keys
Serwer przechowuje zaakceptowane klucze w:
~/.ssh/authorized_keys
Uprawnienia powinny być poprawne:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
66. Konfiguracja klienta SSH
Plik:
~/.ssh/config
Przykład:
Host moj-vps
HostName 192.0.2.10
User user
Port 22
IdentityFile ~/.ssh/id_ed25519
Potem:
ssh moj-vps
67. Konfiguracja sshd
Serwer:
/etc/ssh/sshd_config
Po zmianie najpierw:
sudo sshd -t
Jeżeli nie ma błędu:
sudo systemctl reload ssh
Nigdy nie zamykaj aktywnej sesji SSH przed sprawdzeniem, czy nowe ustawienia rzeczywiście działają.
68. Wyłączenie logowania root przez SSH
Typowe bezpieczne ustawienie:
PermitRootLogin no
Administrację wykonujemy przez zwykłego użytkownika + sudo.
69. Logowanie tylko kluczem
Po upewnieniu się, że klucz działa:
PasswordAuthentication no
Następnie:
sudo sshd -t
sudo systemctl reload ssh
Zawsze sprawdź nowe połączenie w drugim terminalu przed zamknięciem obecnej sesji.
70. SCP
Kopiowanie plików przez SSH.
Na serwer:
scp plik.txt user@server:/home/user/
Z serwera:
scp user@server:/home/user/plik.txt .
Katalog:
scp -r katalog user@server:/home/user/
71. rsync
Lepszy do synchronizacji.
rsync -av katalog/ user@server:/srv/katalog/
Po SSH:
rsync -avz katalog/ user@server:/srv/katalog/
Przy dużych transferach rsync jest niezwykle przydatny, ponieważ kopiuje tylko różnice.
72. Porty
Usługi sieciowe słuchają na portach.
Typowe:
22 SSH
53 DNS
80 HTTP
443 HTTPS
5432 PostgreSQL
3306 MySQL/MariaDB
6379 Redis
73. Co słucha na serwerze
ss -tulpn
Bardzo ważna komenda.
Można zobaczyć:
- port,
- adres,
- proces,
- protokół.
74. localhost
Adres:
127.0.0.1
IPv6:
::1
Usługa słuchająca tylko na:
127.0.0.1
nie jest dostępna bezpośrednio z sieci.
To dobre rozwiązanie np. dla:
- PostgreSQL,
- Redis,
- backendu za reverse proxy.
75. 0.0.0.0
Jeżeli aplikacja słucha na:
0.0.0.0
oznacza to wszystkie interfejsy IPv4.
Może być dostępna z sieci, jeśli firewall tego nie blokuje.
76. nftables - firewall
Debian używa nowoczesnego nftables.
Instalacja:
sudo apt install nftables
Start:
sudo systemctl enable --now nftables
Konfiguracja:
/etc/nftables.conf
Sprawdzenie aktywnych reguł:
sudo nft list ruleset
77. Minimalna idea firewalla
Dla publicznego VPS najczęściej chcesz:
- zezwolić na ruch istniejących połączeń,
- zezwolić na loopback,
- otworzyć SSH,
- otworzyć HTTP,
- otworzyć HTTPS,
- resztę ruchu przychodzącego blokować.
Nie kopiuj bezmyślnie reguł firewalla na zdalny serwer - błędna reguła może odciąć SSH.
78. UFW
Jeżeli chcesz prostszą warstwę nad firewallem:
sudo apt install ufw
Przykład:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Status:
sudo ufw status verbose
UFW jest prostszy. nftables daje większą kontrolę.
79. fail2ban
Może czasowo blokować adresy wykonujące wiele błędnych prób logowania.
sudo apt install fail2ban
Status:
systemctl status fail2ban
Nie zastępuje:
- kluczy SSH,
- aktualizacji,
- firewalla.
80. Nginx
Popularny serwer WWW i reverse proxy.
Instalacja:
sudo apt install nginx
Start:
sudo systemctl enable --now nginx
Test:
curl http://localhost
81. Konfiguracja Nginx
Główne miejsca:
/etc/nginx/nginx.conf
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/
Typowy model:
sites-available
↓ symlink
sites-enabled
82. Test konfiguracji Nginx
Zawsze przed restartem:
sudo nginx -t
Jeżeli jest OK:
sudo systemctl reload nginx
To bardzo dobry nawyk administracyjny.
83. Reverse proxy
Załóżmy, że aplikacja Go działa na:
127.0.0.1:8080
Nginx może przyjąć ruch na:
https://example.com
i przekazać go do:
127.0.0.1:8080
Dzięki temu aplikacja:
- nie musi sama obsługiwać TLS,
- nie musi działać na porcie 443,
- może być niewidoczna bezpośrednio z Internetu.
84. Certbot i HTTPS
Let's Encrypt pozwala uzyskać darmowe certyfikaty TLS.
Typowo:
sudo apt install certbot python3-certbot-nginx
Następnie:
sudo certbot --nginx -d example.com
Certbot może też skonfigurować automatyczne odnawianie.
85. Własna aplikacja jako usługa systemd
Załóżmy:
/usr/local/bin/mojserwer
Tworzymy:
/etc/systemd/system/mojserwer.service
Przykład:
[Unit]
Description=Moj serwer Go
After=network.target
[Service]
User=www-data
WorkingDirectory=/opt/mojserwer
ExecStart=/usr/local/bin/mojserwer
Restart=on-failure
[Install]
WantedBy=multi-user.target
Następnie:
sudo systemctl daemon-reload
sudo systemctl enable --now mojserwer
Status:
systemctl status mojserwer
Logi:
journalctl -u mojserwer -f
To jest jeden z najważniejszych wzorców administracji serwerem.
86. /usr/local/bin
Dobre miejsce dla własnych skryptów i programów administratora.
Np.:
/usr/local/bin/backup
/usr/local/bin/workvpn
/usr/local/bin/check-server
Plik musi być wykonywalny:
sudo chmod +x /usr/local/bin/skrypt
Ponieważ /usr/local/bin jest zwykle w $PATH, można uruchamiać:
skrypt
z dowolnego katalogu.
87. PATH
Sprawdzenie:
echo $PATH
Przykład:
/usr/local/bin:/usr/bin:/bin
Shell szuka poleceń właśnie w tych katalogach.
88. which i command -v
Sprawdzenie, jaki program zostanie uruchomiony:
command -v vim
albo:
which vim
Lepszym, bardziej przenośnym wyborem w skryptach jest:
command -v
89. Cron
Klasyczny harmonogram.
Edycja:
crontab -e
Przykład:
30 7 * * * /usr/local/bin/backup
Uruchamia codziennie o 07:30.
90. Timery systemd
Nowocześniejsza alternatywa dla crona.
Tworzymy:
backup.service
backup.timer
Zalety:
- integracja z systemd,
- logi w journalctl,
- zależności,
- łatwy status.
Lista timerów:
systemctl list-timers
91. Aktualizacje bezpieczeństwa
Regularnie:
sudo apt update
sudo apt upgrade
Można skonfigurować automatyczne aktualizacje:
sudo apt install unattended-upgrades
Konfiguracja:
/etc/apt/apt.conf.d/
Na serwerze warto świadomie zdecydować, czy:
- wszystkie aktualizacje instalować automatycznie,
- tylko security,
- wszystko robić ręcznie.
92. Sprawdzanie wersji Debiana
cat /etc/debian_version
Pełniejsze:
cat /etc/os-release
Kernel:
uname -r
Architektura:
uname -m
93. Hostname
Sprawdzenie:
hostname
Pełniej:
hostnamectl
Zmiana:
sudo hostnamectl set-hostname moj-serwer
94. Czas i strefa czasowa
timedatectl
Zmiana strefy:
sudo timedatectl set-timezone Europe/Warsaw
Lista:
timedatectl list-timezones
95. Synchronizacja czasu
System zwykle synchronizuje czas automatycznie.
Sprawdzenie:
timedatectl status
Prawidłowy czas jest bardzo ważny dla:
- TLS,
- logów,
- baz danych,
- Kerberosa,
- uwierzytelniania,
- TOTP.
96. hostname, /etc/hosts i DNS
Przykład /etc/hosts:
127.0.0.1 localhost
127.0.1.1 moj-komputer
/etc/hosts pozwala lokalnie przypisać nazwę do adresu bez DNS.
97. Archiwa
tar:
tar -cvf archiwum.tar katalog/
Rozpakowanie:
tar -xvf archiwum.tar
gzip:
tar -czvf archiwum.tar.gz katalog/
Rozpakowanie:
tar -xzvf archiwum.tar.gz
98. zip
zip -r archiwum.zip katalog/
Rozpakowanie:
unzip archiwum.zip
99. find
Szukanie plików:
find /var/log -name "*.log"
Bez rozróżniania wielkości liter:
find . -iname "*.jpg"
Pliki większe niż 1 GB:
find / -type f -size +1G 2>/dev/null
100. grep
Szukanie tekstu:
grep "error" plik.log
Bez rozróżniania wielkości liter:
grep -i "error" plik.log
Rekurencyjnie:
grep -R "listen" /etc/nginx
101. less
Czytanie dużych plików:
less /var/log/syslog
Nawigacja:
q wyjście
/tekst wyszukiwanie
n następny wynik
g początek
G koniec
102. tail
Ostatnie linie:
tail /var/log/plik.log
Na żywo:
tail -f /var/log/plik.log
103. head
Pierwsze linie:
head plik
Np. pierwsze 20:
head -n 20 plik
104. Potoki
Jedna z najważniejszych cech shella.
polecenie1 | polecenie2
Przykład:
ps aux | grep nginx
Wynik pierwszego polecenia trafia do drugiego.
105. Przekierowania
Do pliku:
polecenie > wynik.txt
Dopisanie:
polecenie >> wynik.txt
Błędy:
polecenie 2> bledy.txt
Standardowe wyjście + błędy:
polecenie > wszystko.txt 2>&1
106. tee
Zapisuje wynik i jednocześnie pokazuje go na ekranie.
polecenie | tee wynik.txt
Dopisanie:
polecenie | tee -a wynik.txt
Przydatne z sudo:
echo "tekst" | sudo tee /etc/jakis-plik
107. Edytory
Na serwerze warto znać przynajmniej jeden edytor terminalowy.
Typowe:
vi
vim
nano
micro
Debian niemal zawsze posiada jakąś implementację vi.
Dla sprawnego administratora Vim jest bardzo praktycznym wyborem.
108. Konfiguracja użytkownika shella
Najczęściej Bash.
Pliki:
~/.bashrc
~/.profile
Po zmianie .bashrc można wykonać:
source ~/.bashrc
109. Aliasy
Przykład:
alias ll='ls -lah'
Dodany do:
~/.bashrc
będzie dostępny w nowych sesjach.
110. Zmienne środowiskowe
Przykład:
export EDITOR=vim
Sprawdzenie:
echo $EDITOR
Nie zapisuj sekretów bezmyślnie w .bashrc.
111. sudoedit
Bezpieczny sposób edytowania pliku root.
sudoedit /etc/ssh/sshd_config
Edytor działa jako zwykły użytkownik, a zapis do chronionego pliku obsługuje sudo.
112. Diagnostyka - metoda krok po kroku
Zamiast losowo wpisywać komendy, stosuj schemat.
1. Co dokładnie nie działa?
Np.:
strona nie odpowiada
2. Czy proces działa?
systemctl status nginx
3. Co mówią logi?
journalctl -u nginx -n 100
4. Czy usługa słucha?
ss -tulpn
5. Czy działa lokalnie?
curl http://127.0.0.1
6. Czy działa przez właściwy adres?
curl http://IP_SERWERA
7. Czy firewall pozwala?
sudo nft list ruleset
8. Czy DNS wskazuje właściwy adres?
dig example.com
To podejście jest dużo skuteczniejsze niż „restart wszystkiego”.
113. Gdy system długo startuje
systemd-analyze
Co opóźnia start:
systemd-analyze blame
Łańcuch zależności:
systemd-analyze critical-chain
114. Gdy system nie startuje poprawnie
Przydatne:
journalctl -b -p err
Poprzedni boot:
journalctl -b -1
Kernel:
journalctl -k
115. Gdy nagle zabrakło miejsca
Najpierw:
df -h
Potem:
sudo du -xh /var --max-depth=1 | sort -h
Częste miejsca:
/var/log
/var/lib/docker
/var/cache
/home
Journal:
journalctl --disk-usage
Zmniejszenie:
sudo journalctl --vacuum-time=14d
116. Gdy nie działa DNS
Sprawdź IP:
ping 1.1.1.1
Potem DNS:
ping debian.org
Sprawdź:
resolvectl status
oraz:
cat /etc/resolv.conf
117. Gdy nie działa SSH
Na serwerze:
systemctl status ssh
Czy słucha:
ss -tulpn | grep ':22'
Logi:
journalctl -u ssh
Konfiguracja:
sudo sshd -t
Firewall:
sudo nft list ruleset
118. Gdy aplikacja nie startuje
systemctl status aplikacja
Następnie:
journalctl -u aplikacja -n 100
Sprawdź:
- ścieżkę
ExecStart, - prawa do pliku,
- użytkownika,
- WorkingDirectory,
- zmienne środowiskowe,
- port,
- zależności.
119. Desktop - gdzie szukać konfiguracji użytkownika
Najczęściej:
~/.config
~/.local
~/.cache
~/.cache zwykle można usunąć bez utraty konfiguracji.
Nie usuwaj jednak losowo ~/.config, bo znajduje się tam właściwa konfiguracja aplikacji.
120. XDG
Współczesne aplikacje starają się używać standardu XDG.
Typowe miejsca:
~/.config
~/.local/share
~/.cache
To dlatego coraz mniej aplikacji tworzy setki pojedynczych .plików bezpośrednio w katalogu domowym.
121. GNOME - ustawienia zaawansowane
Przydatny pakiet:
sudo apt install gnome-tweaks
GNOME używa również systemu ustawień:
gsettings / dconf
Przykład odczytu:
gsettings list-schemas
Nie ma potrzeby korzystać z tego przy zwykłej pracy, ale dobrze wiedzieć, że istnieje.
122. KDE - konfiguracja
KDE zapisuje sporą część ustawień w:
~/.config
Pliki często mają nazwy typu:
kdeglobals
kwinrc
plasmarc
Nie warto ręcznie ich edytować bez potrzeby - panel System Settings potrafi większość rzeczy skonfigurować wygodniej.
123. Domyślne aplikacje
Desktop wykorzystuje MIME types.
Można sprawdzić domyślną aplikację:
xdg-mime query default text/html
Otwieranie domyślną aplikacją:
xdg-open plik.pdf
lub:
xdg-open https://debian.org
124. Schowek i Wayland
Pod Waylandem klasyczne narzędzia X11 typu xclip nie zawsze są właściwym wyborem.
Dla Waylanda przydatne:
sudo apt install wl-clipboard
Kopiowanie:
echo "tekst" | wl-copy
Odczyt:
wl-paste
125. Monitorowanie temperatur
sudo apt install lm-sensors
Wykrywanie:
sudo sensors-detect
Odczyt:
sensors
126. Informacje o sprzęcie
CPU:
lscpu
RAM:
free -h
PCI:
lspci
USB:
lsusb
Dyski:
lsblk
Pełniejsze informacje:
sudo lshw
127. Pakiety development
Częsty zestaw:
sudo apt install build-essential git curl wget pkg-config
build-essential instaluje podstawowe narzędzia kompilacji C/C++.
128. Git
Instalacja:
sudo apt install git
Konfiguracja:
git config --global user.name "Imię Nazwisko"
git config --global user.email "mail@example.com"
Klonowanie:
git clone URL
129. apt install ./pakiet.deb
Jeżeli pobierzesz lokalny pakiet:
sudo apt install ./program.deb
jest zwykle lepsze niż:
sudo dpkg -i program.deb
bo APT rozwiązuje zależności.
130. AppImage
Nie wymaga instalacji.
Przykład:
chmod +x Program.AppImage
./Program.AppImage
Zaletą jest prostota.
Wadą:
- brak centralnego zarządzania aktualizacjami,
- każda aplikacja dostarcza własne biblioteki.
131. Docker na Debianie
Docker jest przydatny dla aplikacji serwerowych.
Mentalny model:
host Debian
↓
Docker daemon
↓
container
Kontener nie jest maszyną wirtualną.
Korzysta z kernela hosta.
132. Kontener kontra VM
kontener
- współdzieli kernel,
- lekki,
- szybki start,
- świetny dla aplikacji.
maszyna wirtualna
- własny kernel,
- pełny OS,
- większa izolacja,
- większy narzut.
133. Docker Compose
Pozwala opisać kilka usług.
Przykładowa aplikacja:
frontend
backend
postgres
redis
może zostać opisana w jednym:
compose.yaml
Na małym VPS to bardzo wygodny model deploymentu.
134. Kiedy nie używać Dockera
Nie każda usługa go potrzebuje.
Jeżeli masz pojedynczy statyczny binarny program Go, często wystarczy:
Go binary
+
systemd
+
nginx
Docker ma sens, gdy:
- chcesz identycznego środowiska lokalnie i na serwerze,
- aplikacja ma wiele zależności,
- używasz wielu usług,
- deployment ma być powtarzalny.
135. Backupi
Backup powinien spełniać przynajmniej zasadę 3-2-1:
3 kopie danych
2 różne media
1 kopia poza lokalizacją
Nie jest backupem:
RAID
RAID zwiększa dostępność.
Nie chroni przed:
- przypadkowym usunięciem,
- ransomware,
- błędem administratora,
- spaleniem urządzenia.
136. rsync jako prosty backup
Przykład:
rsync -a --delete /srv/dane/ /backup/dane/
UWAGA:
--delete usuwa w backupie pliki, których nie ma już w źródle.
To może być dobre dla mirrora, ale nie daje historii zmian.
137. Narzędzia backupowe
Warto znać nazwy:
restic
borgbackup
rsnapshot
rclone
restic
Świetny do:
- szyfrowanych backupów,
- obiektowego storage,
- snapshotów.
Borg
Bardzo dobry do:
- deduplikacji,
- lokalnych repozytoriów,
- serwerów backupowych.
rclone
Świetny do:
- synchronizacji z cloud storage,
- S3,
- WebDAV,
- Google Drive,
- Dropbox itp.
138. Bezpieczeństwo serwera - sensowna baza
Na publicznym VPS:
- aktualizuj system,
- loguj się zwykłym użytkownikiem,
- korzystaj z sudo,
- używaj kluczy SSH,
- wyłącz bezpośrednie logowanie root,
- rozważ wyłączenie haseł SSH,
- uruchom firewall,
- wystawiaj tylko potrzebne porty,
- obserwuj logi,
- rób backup.
To jest dużo ważniejsze niż instalowanie dziesięciu „security tools”.
139. Zmiana portu SSH
Może ograniczyć ilość automatycznego spamu w logach, ale nie jest realnym zabezpieczeniem kryptograficznym.
Klucz SSH jest zabezpieczeniem.
Zmiana portu to głównie redukcja szumu.
140. sudo zamiast root
Daje:
- logowanie wykonanych poleceń,
- mniejsze ryzyko przypadkowego zniszczenia systemu,
- możliwość ograniczenia uprawnień.
Długotrwałe działanie jako root jest zwykle złym nawykiem.
141. Nie uruchamiaj losowych skryptów z Internetu
Popularny wzorzec:
curl URL | sudo bash
jest wygodny, ale ryzykowny.
Bezpieczniej:
curl -O URL
less skrypt.sh
sudo bash skrypt.sh
Przynajmniej widzisz, co uruchamiasz.
142. sudo apt install kontra ręczne instalowanie
Preferowana kolejność:
- repozytorium Debiana,
- oficjalne repo producenta,
- Flatpak - dla desktopu,
- lokalny
.deb, - ręczna instalacja,
- kompilacja ze źródeł.
Im niżej, tym więcej administracji spada na Ciebie.
143. Co po instalacji Debiana na desktopie
Praktyczny zestaw:
sudo apt update
sudo apt upgrade
sudo apt install \
git \
curl \
wget \
vim \
htop \
tree \
rsync \
unzip \
zip \
lm-sensors \
smartmontools
Opcjonalnie:
sudo apt install flatpak
144. Co po instalacji Debiana na serwerze
Minimum:
sudo apt update
sudo apt upgrade
sudo apt install \
openssh-server \
curl \
wget \
vim \
git \
htop \
rsync \
nftables \
unattended-upgrades
Następnie:
- użytkownik administracyjny,
- sudo,
- klucz SSH,
- firewall,
- backup,
- monitoring.
145. Przydatne pakiety CLI
htop
btop
tree
ripgrep
fd-find
jq
curl
wget
rsync
ncdu
tmux
screen
lsof
strace
dnsutils
netcat-openbsd
146. ncdu
Świetne narzędzie do szukania, co zjadło dysk.
sudo apt install ncdu
Uruchomienie:
sudo ncdu /
147. lsof
Pokazuje otwarte pliki i sockety.
Co używa portu 8080:
sudo lsof -i :8080
Co trzyma plik:
lsof /ścieżka/do/pliku
148. strace
Pokazuje wywołania systemowe procesu.
Przykład:
strace ./program
Jest bardzo przydatny, gdy program:
- nie znajduje pliku,
- nie może otworzyć socketu,
- kończy się bez sensownego komunikatu.
To narzędzie bardziej zaawansowane, ale warto znać jego istnienie.
149. tmux
Pozwala zachować sesję terminalową po zerwaniu SSH.
Instalacja:
sudo apt install tmux
Start:
tmux
Odłączenie:
Ctrl+B
D
Lista:
tmux ls
Powrót:
tmux attach
Na serwerze bardzo przydatne.
150. sudo i visudo
Konfiguracja:
/etc/sudoers
Nigdy nie edytuj jej zwykłym edytorem.
Używaj:
sudo visudo
Dodatkowe reguły:
/etc/sudoers.d/
151. Dodawanie użytkownika
sudo adduser user
Dodanie do sudo:
sudo usermod -aG sudo user
152. Blokowanie użytkownika
sudo passwd -l użytkownik
Odblokowanie:
sudo passwd -u użytkownik
153. Kto jest zalogowany
who
lub:
w
Historia logowań:
last
154. Ostatnie logowania SSH
Można analizować:
journalctl -u ssh
oraz:
last
155. Podstawowy troubleshooting desktopu
Jeżeli GNOME/KDE zaczyna zachowywać się dziwnie:
- wyloguj i zaloguj,
- sprawdź logi użytkownika,
- sprawdź wolne miejsce,
- sprawdź aktualizacje,
- sprawdź GPU,
- sprawdź błędy kernela.
Przykłady:
df -h
journalctl --user -b
journalctl -k -p err
156. Gdy aplikacja GUI nie startuje
Uruchom ją z terminala.
Zamiast kliknąć ikonę:
program
Terminal często pokaże błąd, którego GUI nie wyświetla.
To jedna z najlepszych technik diagnostycznych na Linuxie.
157. Gdy aktualizacja APT się nie udaje
Najpierw:
sudo apt update
Czytaj dokładnie komunikat.
Częste problemy:
- nieaktualne repozytorium,
- błędny klucz,
- przerwane zależności,
- repozytorium dla złej wersji Debiana.
Można spróbować:
sudo apt --fix-broken install
ale nie należy używać tego mechanicznie bez przeczytania błędu.
158. Sprawdzenie, skąd pochodzi pakiet
apt policy pakiet
Przykład:
apt policy nginx
Pokazuje:
- wersję zainstalowaną,
- dostępną,
- repozytorium.
159. Co zainstalował dany pakiet
dpkg -L nginx
To świetna odpowiedź na pytanie:
„Gdzie ten program wrzucił pliki?”
160. Do jakiego pakietu należy plik
dpkg -S /usr/bin/vim
161. Dokumentacja pakietów
Często:
/usr/share/doc/nazwa-pakietu/
Przykład:
ls /usr/share/doc/openssh-server/
Debian bardzo często umieszcza tam:
- README,
- changelog,
- przykłady konfiguracji.
162. man
Podstawowa dokumentacja systemu.
man ssh
Sekcje:
1 - polecenia użytkownika
5 - formaty plików
8 - polecenia administratora
Przykłady:
man ssh
man ssh_config
man sshd_config
man systemd.service
163. --help
Szybka pomoc:
ip --help
lub:
curl --help
Często jest szybsza niż man.
164. systemd targets
Zamiast dawnych runleveli systemd używa targetów.
Najważniejsze:
multi-user.target
graphical.target
rescue.target
emergency.target
Serwer bez GUI:
multi-user.target
Desktop:
graphical.target
Sprawdzenie domyślnego:
systemctl get-default
Zmiana:
sudo systemctl set-default multi-user.target
165. Uruchomienie GUI ręcznie
Jeżeli domyślnie system startuje tekstowo:
sudo systemctl isolate graphical.target
Powrót:
sudo systemctl isolate multi-user.target
166. Kernel
Sprawdzenie:
uname -a
Wersja:
uname -r
Pakiety kernela:
dpkg -l | grep linux-image
Nie usuwaj wszystkich starszych kernelów.
Posiadanie jednego poprzedniego jest przydatne awaryjnie.
167. GRUB
Bootloader.
Konfiguracja:
/etc/default/grub
Po zmianach:
sudo update-grub
Nie edytuj ręcznie:
/boot/grub/grub.cfg
bo jest generowany automatycznie.
168. Initramfs
Wczesne środowisko startowe systemu.
Aktualizacja:
sudo update-initramfs -u
Potrzebne np. po zmianach dotyczących:
- szyfrowania,
- sterowników startowych,
- modułów kernela.
169. LUKS
Standard szyfrowania dysków w Linuxie.
Na laptopie warto rozważyć pełne szyfrowanie dysku już podczas instalacji Debiana.
Chroni dane, gdy:
- laptop zostanie zgubiony,
- dysk zostanie wyjęty.
Nie chroni systemu, gdy komputer jest już odblokowany i działa.
170. Swap
Sprawdzenie:
swapon --show
Pamięć:
free -h
Swap może być:
- partycją,
- plikiem.
Jest używany jako bufor pamięci i może być wymagany do hibernacji.
171. OOM
Jeśli zabraknie RAM i swap, kernel może uruchomić OOM Killer.
Szukaj:
journalctl -k | grep -i oom
lub:
dmesg | grep -i "out of memory"
172. DNS tools
Pakiet:
sudo apt install dnsutils
Zapytanie:
dig example.com
Serwery nazw:
dig NS example.com
MX:
dig MX example.com
173. traceroute
sudo apt install traceroute
Użycie:
traceroute example.com
Pokazuje kolejne routery na trasie.
174. netcat
Instalacja:
sudo apt install netcat-openbsd
Test portu:
nc -vz server 443
Przykład:
nc -vz 192.168.1.10 22
175. SSH tunneling
Lokalny tunel:
ssh -L 8080:127.0.0.1:8080 user@server
Pozwala otworzyć lokalnie:
http://localhost:8080
i skierować ruch do usługi działającej na serwerze.
Świetne dla:
- paneli administracyjnych,
- baz danych,
- usług nieudostępnionych publicznie.
176. PostgreSQL - podstawy administracyjne
Instalacja:
sudo apt install postgresql
Status:
systemctl status postgresql
Shell postgres:
sudo -u postgres psql
Baza nie musi być wystawiana do Internetu.
Najbezpieczniej aplikacja i DB komunikują się lokalnie.
177. Redis
Instalacja:
sudo apt install redis-server
Redis również zazwyczaj powinien słuchać tylko lokalnie.
Nigdy nie wystawiaj bez potrzeby Redis do publicznego Internetu.
178. Serwer plików Samba
Dla klientów Windows:
sudo apt install samba
Konfiguracja:
/etc/samba/smb.conf
179. NFS
Dobrze pasuje do środowisk Linux/Unix.
Serwer:
sudo apt install nfs-kernel-server
Eksporty:
/etc/exports
180. Dziennik administratora
Warto prowadzić np.:
~/server-notes.md
Zapisywać:
- co zmieniłeś,
- kiedy,
- dlaczego,
- jakie porty otworzyłeś,
- jakie usługi uruchomiłeś,
- gdzie są backupy,
- co trzeba zrobić po awarii.
Przy półrocznej przerwie taki plik potrafi uratować godzinę grzebania.
181. Snapshot to nie backup
Snapshot pozwala wrócić do wcześniejszego stanu.
Jeżeli jednak zginie cały dysk, lokalny snapshot ginie razem z nim.
Dlatego:
snapshot ≠ backup
182. Aktualizacja bez restartu?
Większość aktualizacji aplikacji nie wymaga restartu całego systemu.
Kernel:
- nowa wersja jest instalowana,
- działa dopiero po ponownym uruchomieniu.
Biblioteki systemowe mogą wymagać restartu konkretnych usług.
183. Czy system wymaga restartu
Można użyć pakietu:
sudo apt install needrestart
Po aktualizacjach informuje, które usługi korzystają ze starych bibliotek.
184. Dobre praktyki desktop
- trzymaj się
stable, - instaluj z APT, gdy to możliwe,
- Flatpak używaj głównie do aplikacji desktopowych,
- nie dodawaj dziesiątek przypadkowych repozytoriów,
- aktualizuj regularnie,
- szyfruj laptop,
- rób backup
/home, - ucz się diagnozować przez
journalctl, - nie walcz z systemem, jeżeli problem da się rozwiązać standardową metodą Debiana.
185. Dobre praktyki serwerowe
- minimalna instalacja,
- tylko potrzebne usługi,
- SSH z kluczem,
- root przez SSH wyłączony,
- firewall,
- regularne aktualizacje,
- backup poza serwerem,
- logi w journald,
- aplikacje jako usługi systemd,
- reverse proxy,
- HTTPS,
- baza danych niewystawiona publicznie,
- dokumentuj zmiany.
186. Praktyczny scenariusz: nowy VPS
Po instalacji:
sudo apt update
sudo apt upgrade
Narzędzia:
sudo apt install \
vim git curl wget rsync htop \
nftables openssh-server
Użytkownik:
sudo adduser user
sudo usermod -aG sudo user
SSH:
ssh-copy-id user@SERVER
Sprawdź nowe logowanie.
Następnie skonfiguruj:
PermitRootLogin no
Opcjonalnie:
PasswordAuthentication no
Test:
sudo sshd -t
Reload:
sudo systemctl reload ssh
Dopiero potem zamknij starą sesję.
187. Praktyczny scenariusz: postawienie strony
Instalujemy Nginx:
sudo apt install nginx
sudo systemctl enable --now nginx
Sprawdzamy:
curl http://localhost
Firewall:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Konfigurujemy domenę w DNS.
Tworzymy konfigurację Nginx.
Test:
sudo nginx -t
Reload:
sudo systemctl reload nginx
HTTPS:
sudo certbot --nginx -d example.com
188. Praktyczny scenariusz: aplikacja Go
Budujemy:
go build -o app
Kopiujemy:
sudo mkdir -p /opt/mojapp
sudo cp app /opt/mojapp/
Tworzymy:
/etc/systemd/system/mojapp.service
Uruchamiamy:
sudo systemctl daemon-reload
sudo systemctl enable --now mojapp
Sprawdzamy:
systemctl status mojapp
Logi:
journalctl -u mojapp -f
Nginx proxy:
Internet
↓
443 nginx
↓
127.0.0.1:8080
↓
Go
189. Praktyczny scenariusz: coś zajmuje port
Aplikacja mówi:
address already in use
Sprawdź:
sudo ss -tulpn | grep ':8080'
lub:
sudo lsof -i :8080
Zobaczysz proces.
Potem decydujesz:
- zatrzymać usługę,
- zmienić jej port,
- zmienić port nowej aplikacji.
190. Praktyczny scenariusz: strona odpowiada lokalnie, ale nie z Internetu
Lokalnie:
curl http://localhost
działa.
Sprawdź:
ss -tulpn
Jeżeli Nginx słucha poprawnie:
0.0.0.0:80
sprawdź firewall:
sudo nft list ruleset
Potem firewall dostawcy VPS.
Potem DNS.
Diagnostyka powinna iść warstwami.
191. Praktyczny scenariusz: Wi-Fi nie działa
Najpierw:
nmcli device
Czy karta istnieje?
lspci
Log kernela:
journalctl -k | grep -i firmware
NetworkManager:
systemctl status NetworkManager
Sieci:
nmcli device wifi list
To daje więcej informacji niż kilkukrotne klikanie ikonki Wi-Fi.
192. Praktyczny scenariusz: laptop się wyłącza
Sprawdź poprzedni boot:
journalctl -b -1
Błędy kernela:
journalctl -b -1 -k -p warning
Temperatury:
sensors
Bateria:
upower -i "$(upower -e | grep BAT)"
Logi zasilania mogą pomóc rozróżnić:
- awarię baterii,
- thermal shutdown,
- panic kernela,
- normalny shutdown wywołany przez firmware/ACPI.
193. Praktyczny scenariusz: brak miejsca przez Dockera
Sprawdź:
docker system df
Obrazy:
docker images
Kontenery:
docker ps -a
Czyszczenie nieużywanych danych:
docker system prune
UWAGA: przeczytaj, co zostanie usunięte.
194. Praktyczny scenariusz: plik konfiguracyjny przed zmianą
Zrób backup:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
Edytuj:
sudoedit /etc/nginx/nginx.conf
Test:
sudo nginx -t
Dopiero potem reload.
To jest dobry wzorzec dla prawie każdej usługi.
195. Schemat administracji usługi
Prawie zawsze:
1. znajdź konfigurację
2. zrób backup
3. zmień konfigurację
4. przetestuj składnię
5. reload/restart
6. sprawdź status
7. sprawdź log
8. sprawdź usługę z zewnątrz
Np.:
sudo nginx -t
sudo systemctl reload nginx
systemctl status nginx
journalctl -u nginx -n 50
curl https://example.com
196. Najważniejsze polecenia - ściąga
system
uname -a
hostnamectl
timedatectl
uptime
pakiety
sudo apt update
sudo apt upgrade
sudo apt install PAKIET
sudo apt remove PAKIET
apt search PAKIET
apt show PAKIET
apt policy PAKIET
usługi
systemctl status USŁUGA
sudo systemctl start USŁUGA
sudo systemctl stop USŁUGA
sudo systemctl restart USŁUGA
sudo systemctl reload USŁUGA
sudo systemctl enable --now USŁUGA
logi
journalctl -b
journalctl -u USŁUGA
journalctl -u USŁUGA -f
journalctl -k
sieć
ip a
ip route
nmcli device
ss -tulpn
ping HOST
curl URL
dig DOMENA
procesy
ps aux
top
htop
kill PID
dyski
lsblk
lsblk -f
df -h
du -sh KATALOG
blkid
pliki
cp
mv
rm
mkdir
find
grep
less
head
tail
SSH
ssh user@host
ssh-keygen -t ed25519
ssh-copy-id user@host
scp
rsync
197. Pięć poleceń, które warto odruchowo znać na serwerze
Jeżeli coś nie działa:
systemctl status NAZWA
journalctl -u NAZWA -n 100
ss -tulpn
df -h
free -h
Tymi pięcioma poleceniami da się rozpocząć diagnostykę ogromnej liczby problemów.
198. Pięć poleceń, które warto znać na desktopie
sudo apt update
sudo apt upgrade
journalctl -b
nmcli device
lsblk -f
199. Jak myśleć o Debianie
Nie ucz się Debiana jako listy poleceń.
Zapamiętaj model:
program
↓
proces
↓
usługa systemd
↓
logi
↓
port/socket
↓
sieć
↓
firewall
oraz:
pakiet
↓
pliki programu
↓
konfiguracja w /etc
↓
dane w /var
↓
logi
Jeżeli rozumiesz te zależności, nawet nieznaną usługę da się zwykle rozgryźć bez tutoriala.
200. Minimalny zestaw wiedzy administratora Debiana
Powinieneś umieć:
- zaktualizować system,
- znaleźć i zainstalować pakiet,
- znaleźć plik konfiguracji,
- uruchomić i zatrzymać usługę,
- przeczytać jej logi,
- znaleźć proces,
- sprawdzić port,
- sprawdzić adres IP,
- sprawdzić routing,
- sprawdzić DNS,
- połączyć się przez SSH,
- skonfigurować klucz SSH,
- przesłać pliki przez SSH,
- sprawdzić zajętość dysku,
- zamontować filesystem,
- zrozumieć
/etc/fstab, - znaleźć błąd w journalctl,
- zrobić prosty firewall,
- zrobić backup,
- uruchomić własny program jako usługę systemd.
Jeżeli to potrafisz, Debian przestaje być „systemem, na którym wpisuje się magiczne komendy”, a zaczyna być logicznym i przewidywalnym środowiskiem.
201. GNOME/KDE a serwer - najważniejsza różnica mentalna
Na desktopie wiele rzeczy wykonujesz przez GUI:
Wi-Fi
Bluetooth
ekrany
audio
drukarki
użytkownicy
Jednak pod spodem nadal działają:
NetworkManager
BlueZ
PipeWire
CUPS
systemd
Na serwerze po prostu komunikujesz się z tymi samymi elementami bez warstwy GUI.
Dlatego znajomość shella bardzo pomaga również na desktopie.
202. Przydatna filozofia pracy
Najpierw:
sprawdź
dopiero potem:
zmieniaj
Czyli zamiast:
sudo systemctl restart nginx
odruchowo zacznij od:
systemctl status nginx
Zamiast usuwać pakiety:
apt policy pakiet
Zamiast zmieniać konfigurację:
cp plik plik.bak
Administrator, który najpierw zbiera informacje, psuje mniej rzeczy.
203. Najważniejsze ścieżki do zapamiętania
/home/$USER dane użytkownika
/root home roota
/etc konfiguracja systemowa
/var/log tradycyjne logi
/var/lib dane usług
/var/www typowe dane WWW
/usr/bin programy
/usr/local/bin własne narzędzia
/tmp dane tymczasowe
/run dane runtime
/boot kernel i bootloader
/mnt ręczne mounty
/media media wymienne
~/.config konfiguracja desktopowa użytkownika
~/.local dane użytkownika
~/.ssh SSH
/etc/systemd/system własne unity systemd
/etc/ssh SSH
/etc/nginx Nginx
/etc/apt APT
204. Najważniejsze pliki do zapamiętania
/etc/fstab
/etc/hosts
/etc/os-release
/etc/ssh/sshd_config
/etc/nftables.conf
/etc/default/grub
~/.ssh/config
~/.ssh/authorized_keys
~/.bashrc
~/.profile
205. Najważniejsze narzędzia do zapamiętania
apt
dpkg
systemctl
journalctl
ip
nmcli
ss
ssh
rsync
curl
grep
find
lsblk
df
du
ps
htop
sudo
vim
Jeżeli naprawdę dobrze poznasz te narzędzia, poradzisz sobie z ogromną częścią codziennej administracji.
206. Gdzie szukać pomocy
Najpierw lokalnie:
man polecenie
Potem:
polecenie --help
Dokumentacja pakietu:
/usr/share/doc/
Oficjalna dokumentacja Debiana:
-
Informacje o aktualnym wydaniu stable
https://www.debian.org/releases/stable/ -
Aktualizacje Debian 13
https://www.debian.org/News/ -
Debian Reference
https://www.debian.org/doc/manuals/debian-reference/ -
Debian Documentation
https://www.debian.org/doc/ -
Debian Wiki
https://wiki.debian.org/ -
Debian Administrator's Handbook
https://debian-handbook.info/
207. Ostateczna ściąga: jak diagnozować prawie wszystko
Problem z usługą
systemctl status usługa
journalctl -u usługa -n 100
Problem z siecią
ip a
ip route
ping 1.1.1.1
ping debian.org
resolvectl status
Problem z portem
ss -tulpn
sudo lsof -i :PORT
Problem z dyskiem
df -h
lsblk -f
sudo smartctl -a /dev/DYSK
Problem z RAM
free -h
htop
Problem z bootem
journalctl -b
journalctl -b -1
journalctl -k
Problem z pakietem
apt policy pakiet
dpkg -L pakiet
Problem z konfiguracją
/etc
Problem z aplikacją desktopową
Uruchom ją z terminala i przeczytaj komunikat błędu.
208. Najważniejsza zasada
Debian jest bardzo przewidywalny.
Jeżeli coś działa jako usługa, prawdopodobnie:
systemctl
journalctl
Jeżeli dotyczy pakietu:
apt
dpkg
Jeżeli dotyczy sieci:
ip
nmcli
ss
Jeżeli dotyczy konfiguracji:
/etc
Jeżeli dotyczy danych usługi:
/var
Jeżeli dotyczy użytkownika:
/home
~/.config
Jeżeli dotyczy sprzętu:
lspci
lsusb
lsblk
journalctl -k
To kilka prostych reguł, które pozwalają odnaleźć się w systemie nawet wtedy, gdy pierwszy raz widzisz daną usługę lub aplikację.
209. Podsumowanie
Debian może być jednocześnie:
wygodnym desktopem GNOME/KDE
+
stabilnym workstation
+
serwerem zarządzanym przez SSH
+
platformą dla aplikacji
+
hostem Dockera
+
bazą homelabu
Na desktopie GUI jest wygodną warstwą nad mechanizmami systemu.
Na serwerze pracujesz bezpośrednio z tymi mechanizmami.
Najważniejsze rzeczy do naprawdę dobrego opanowania to:
APT
systemd
journalctl
SSH
sieć
uprawnienia
filesystem
backup
Reszta to w dużej mierze rozwinięcie tych kilku fundamentów.
Stan dokumentu
Dokument przygotowany dla Debiana 13 „Trixie”.
W chwili przygotowania aktualne wydanie stabilne Debiana to 13.7.