Tech Handbook Null Yard

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


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:

  1. aktualizuj system,
  2. loguj się zwykłym użytkownikiem,
  3. korzystaj z sudo,
  4. używaj kluczy SSH,
  5. wyłącz bezpośrednie logowanie root,
  6. rozważ wyłączenie haseł SSH,
  7. uruchom firewall,
  8. wystawiaj tylko potrzebne porty,
  9. obserwuj logi,
  10. 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ść:

  1. repozytorium Debiana,
  2. oficjalne repo producenta,
  3. Flatpak - dla desktopu,
  4. lokalny .deb,
  5. ręczna instalacja,
  6. 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:

  1. wyloguj i zaloguj,
  2. sprawdź logi użytkownika,
  3. sprawdź wolne miejsce,
  4. sprawdź aktualizacje,
  5. sprawdź GPU,
  6. 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

  1. trzymaj się stable,
  2. instaluj z APT, gdy to możliwe,
  3. Flatpak używaj głównie do aplikacji desktopowych,
  4. nie dodawaj dziesiątek przypadkowych repozytoriów,
  5. aktualizuj regularnie,
  6. szyfruj laptop,
  7. rób backup /home,
  8. ucz się diagnozować przez journalctl,
  9. nie walcz z systemem, jeżeli problem da się rozwiązać standardową metodą Debiana.

185. Dobre praktyki serwerowe

  1. minimalna instalacja,
  2. tylko potrzebne usługi,
  3. SSH z kluczem,
  4. root przez SSH wyłączony,
  5. firewall,
  6. regularne aktualizacje,
  7. backup poza serwerem,
  8. logi w journald,
  9. aplikacje jako usługi systemd,
  10. reverse proxy,
  11. HTTPS,
  12. baza danych niewystawiona publicznie,
  13. 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.