Files
infra/docs/SERVER.md
T
kacperor afaafe8910 Krok 13 (1/3): Traefik uruchomiony, TLS DNS-01 przez OVH
- traefik:v3.7.11 (najnowszy stabilny tag, sprawdzony w Docker Hub)
- DNS-01 challenge, provider ovh, endpoint ovh-ca (region panelu)
- dashboard tylko na 127.0.0.1:8080, dostęp przez tunel SSH
- docker.sock zamontowany read-only
- .env z kluczami API OVH poza repo (chmod 600), .env.example w repo
- zweryfikowane: redirect 80->443, dashboard 200 lokalnie, czyste logi
2026-08-20 18:58:26 +02:00

7.2 KiB

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 działa (od 2026-08-20) reverse proxy, TLS DNS-01 przez OVH (ovh-ca), image traefik:v3.7.11, dashboard tylko przez tunel SSH (127.0.0.1:8080)
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 13 bootstrapu (część 1/3 — Traefik): stack traefik:v3.7.11 uruchomiony, DNS-01 przez OVH (endpoint ovh-ca), klucze API w .env (poza repo, chmod 600), dashboard na 127.0.0.1:8080 (tylko tunel SSH). Zweryfikowane: redirect 80→443, dashboard odpowiada lokalnie, logi czyste. Certyfikat wildcard wystawi się przy podpięciu pierwszej usługi (Gitea) Claude + Kacper
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