SERVER.md — rejestr serwera
Źródło prawdy o tym, co stoi na maszynie. Każda zmiana stanu serwera = wpis tutaj,
w tej samej sesji. Jeśli czegoś nie ma w tym pliku — z punktu widzenia dokumentacji to nie istnieje.
Ostatnia aktualizacja: (uzupełnić przy pierwszym bootstrapie)
1. Maszyna
| Pozycja |
Wartość |
| Dostawca |
OVH |
| Model |
VPS-2 2026 |
| Host OVH |
vps-c936b594.vps.ovh.net |
| vCore / RAM / dysk |
6 / 12 GB / 100 GB SSD NVMe |
| System |
Ubuntu 24.04 LTS |
| Lokalizacja |
(uzupełnić) |
| IPv4 |
54.38.159.156 |
| IPv6 |
(uzupełnić) |
| Snapshot OVH |
włączony, 1 slot, ręczny |
| Data ostatniego snapshota |
2026-08-20 — po Kroku 10 (system utwardzony: SSH, ufw, fail2ban, unattended-upgrades, swap, Docker), przed Krokiem 13 (Traefik/Gitea) |
2. Domeny
| Domena |
Rola |
Rejestrator |
DNS |
dfkk.cloud |
infrastruktura + subdomeny projektów |
OVH |
OVH |
| (domena 2) |
wolna, pod projekt |
OVH |
OVH |
| (domena 3) |
wolna, pod projekt |
OVH |
OVH |
Certyfikaty: Let's Encrypt, wildcard *.dfkk.cloud, wyzwanie DNS-01 przez API OVH.
Klucze API OVH: przechowywane w /srv/infra/stacks/traefik/.env (poza repo).
Zajęte subdomeny
| Subdomena |
Usługa |
Publiczna? |
Uwagi |
git.dfkk.cloud |
Gitea |
tak |
rejestracja wyłączona |
status.dfkk.cloud |
Uptime Kuma |
tak |
za basic auth |
traefik.dfkk.cloud |
Traefik dashboard |
nie |
tylko przez tunel SSH |
3. Użytkownicy systemowi
| Użytkownik |
Rola |
sudo |
Uwagi |
root |
— |
— |
logowanie po SSH wyłączone przez OVH i przez nas |
ubuntu |
praca codzienna, Docker, Claude Code |
tak |
konto domyślne obrazu OVH |
4. Klucze SSH
Każde urządzenie ma własny klucz. Zgubiony laptop = usunięcie jednej linii
z authorized_keys, bez ruszania pozostałych.
| Urządzenie |
Typ |
Komentarz w kluczu |
Dodany |
Status |
| PC (PILTECH) |
ed25519 |
KK_PILTECH_PC |
przed bootstrapem |
aktywny |
| PC domowy (KK_HOME_PC, Windows) |
ed25519 |
kacper@KK_HOME_PC |
2026-08-20 |
aktywny, zweryfikowany (Accepted publickey w auth.log) |
| macOS |
ed25519 |
(do ustalenia) |
(data) |
(do zrobienia) |
| iPhone (Termius) |
ed25519 |
kacper@iphone |
2026-08-20 |
aktywny, zweryfikowany (Accepted publickey w journalctl) |
5. Porty otwarte na świat
| Port |
Usługa |
Uzasadnienie |
| 22 |
SSH |
dostęp administracyjny, tylko klucze |
| 80 |
Traefik |
przekierowanie na 443 |
| 443 |
Traefik |
cały ruch HTTPS |
Nic więcej. Każdy dodatkowy port wymaga wpisu tutaj z uzasadnieniem.
Pamiętaj: opublikowany port kontenera omija ufw — patrz CLAUDE.md, sekcja 3.3.
6. Stacki infrastruktury
| Stack |
Ścieżka |
Status |
Opis |
| Traefik |
/srv/infra/stacks/traefik |
(planowany) |
reverse proxy, TLS, wejście do wszystkiego |
| Gitea |
/srv/infra/stacks/gitea |
(planowany) |
repozytoria kodu, mirror na GitHub |
| Monitoring |
/srv/infra/stacks/monitoring |
(planowany) |
Uptime Kuma, alerty na maila |
7. Projekty
Tabela uzupełniana przy każdym nowym projekcie (runbook 10-nowa-usluga.md)
i czyszczona przy usuwaniu (runbook 30-usuwanie.md).
| Projekt |
Katalog |
Repo |
Domena |
Wolumeny |
Baza |
Backup |
Uruchomiony |
| (brak) |
|
|
|
|
|
|
|
8. Zadania cykliczne (cron / systemd timers)
| Zadanie |
Harmonogram |
Gdzie zdefiniowane |
Co robi |
unattended-upgrades |
codziennie |
systemd |
aktualizacje bezpieczeństwa |
| (uzupełniać) |
|
|
|
9. Konta zewnętrzne powiązane z serwerem
| Usługa |
Do czego |
Gdzie klucz/token |
| OVH API |
DNS-01 dla Traefika |
/srv/infra/stacks/traefik/.env |
| GitHub |
mirror repo infra |
token w Gitei, ustawienia push mirror |
| SMTP (Resend/Brevo) |
wysyłka maili z aplikacji |
.env danego projektu |
10. Dziennik większych zmian
Krótko, jedna linia, najnowsze na górze. Chodzi o to, żeby po miesiącu dało się
odtworzyć, co się działo — nie o pełny changelog.
| Data |
Co się zmieniło |
Kto |
| 2026-08-20 |
Krok 11 bootstrapu: snapshot OVH zrobiony — czysty, utwardzony system przed postawieniem usług |
Kacper |
| 2026-08-20 |
Krok 10 bootstrapu: /srv/apps, /srv/data utworzone (/srv/infra już istniało), właściciel ubuntu:ubuntu |
Claude |
| 2026-08-20 |
Krok 9 bootstrapu: ~/.tmux.conf skonfigurowany (mouse, vi keys, focus-events on), przeładowany w sesji bootstrap bez restartu |
Claude |
| 2026-08-20 |
Krok 8 bootstrapu: Docker CE (oficjalne repo), ubuntu w grupie docker (wymaga ponownego logowania), limity logów kontenerów (max-size 10m, max-file 3), live-restore, sieć edge utworzona. hello-world przeszedł |
Claude |
| 2026-08-20 |
Krok 7 bootstrapu: swap 2G (/swapfile) aktywny, wpis w fstab, vm.swappiness=10 |
Claude |
| 2026-08-20 |
Krok 6 bootstrapu: unattended-upgrades aktywne (Periodic Update-Package-Lists i Unattended-Upgrade włączone), Automatic-Reboot jawnie ustawiony na false w 50unattended-upgrades |
Claude |
| 2026-08-20 |
Krok 5 bootstrapu: fail2ban aktywny, jail sshd (bantime 1h, findtime 10m, maxretry 5). Od razu zbanował ruch skanujący port 22 (normalny szum) |
Claude |
| 2026-08-20 |
Krok 4 bootstrapu: ufw aktywny, default deny incoming, dozwolone 22/80/443 (IPv4+IPv6). Zweryfikowane: SSH nadal dostępny |
Claude + Kacper |
| 2026-08-20 |
Krok 3 bootstrapu: PasswordAuthentication no, PermitRootLogin no, AllowUsers ubuntu w sshd_config.d/99-hardening.conf. Napotkano i naprawiono konflikt: sshd_config.d/50-cloud-init.conf nadpisywał hasła z powrotem na yes (kolejność alfabetyczna plików Include) — poprawiono plik i dodano ssh_pwauth: false w cloud.cfg.d/, żeby nie wróciło po reboocie. Zweryfikowane: logowanie kluczem działa, logowanie hasłem zablokowane. macOS wciąż bez klucza — dostęp z Maca możliwy dopiero po dodaniu klucza przez już uwierzytelnione urządzenie |
Claude + Kacper |
| 2026-08-20 |
Krok 1 bootstrapu: timezone Europe/Warsaw, hostname dfkk, pakiety bazowe, uporządkowany /etc/hosts |
Claude |
| 2026-08-20 |
Krok 2 bootstrapu: dodane klucze SSH kacper@KK_HOME_PC (Windows) i kacper@iphone (Termius), zweryfikowane logowaniem. macOS jeszcze do zrobienia |
Claude + Kacper |
| 2026-08-20 |
sudo dla ubuntu ustawiony na NOPASSWD (/etc/sudoers.d/90-ubuntu-nopasswd); hasło do konta ustawia Kacper ręcznie jako furtka KVM |
Claude |
| 2026-08-20 |
Poprawki 00-bootstrap.md (Krok 9 tmux append + focus-events, Krok 10 katalogi, Krok 12 Claude Code jako wykonany, nowy Krok 14 audyt) i numeracja HANDOFF.md sekcja 6 |
Claude |