Krok 13 (2/3): Gitea uruchomiona pod git.dfkk.cloud

- gitea/gitea:1.27.2 + postgres:18.6 (najnowsze stabilne tagi)
- rejestracja wyłączona od startu (DISABLE_REGISTRATION=true),
  bezpieczniej niż wyłączanie ręcznie po pierwszym logowaniu
- baza tylko w sieci gitea-internal, bez edge
- postgres 18+: poprawiony mount na /var/lib/postgresql (zmiana
  konwencji względem starszych wersji, image inaczej nie startował)
- dane w /srv/data/gitea/{gitea,postgres}, .env poza repo
- dodano DNS wildcard *.dfkk.cloud -> 54.38.159.156
- zweryfikowane: HTTPS 200, cert Let's Encrypt ważny, rejestracja
  faktycznie zablokowana, SSH kontenera nieopublikowany na hosta
This commit is contained in:
2026-08-20 19:28:14 +02:00
parent afaafe8910
commit ed353be05d
3 changed files with 66 additions and 2 deletions
+8 -2
View File
@@ -39,10 +39,15 @@ Klucze API OVH: przechowywane w `/srv/infra/stacks/traefik/.env` (poza repo).
| Subdomena | Usługa | Publiczna? | Uwagi |
|---|---|---|---|
| `git.dfkk.cloud` | Gitea | tak | rejestracja wyłączona |
| `git.dfkk.cloud` | Gitea | tak | rejestracja wyłączona od startu (`DISABLE_REGISTRATION=true`), zweryfikowana |
| `status.dfkk.cloud` | Uptime Kuma | tak | za basic auth |
| `traefik.dfkk.cloud` | Traefik dashboard | nie | tylko przez tunel SSH |
**Uwaga:** w strefie DNS znaleziono rekordy `n8n.dfkk.cloud`, `portainer.dfkk.cloud`,
`code.dfkk.cloud`, `biznesai.dfkk.cloud` — pozostałość po wcześniejszych eksperymentach,
nic za nimi nie stoi. Do posprzątania przy okazji (usunięcie rekordów w panelu OVH,
runbook `30-usuwanie.md`), nie pilne.
---
## 3. Użytkownicy systemowi
@@ -86,7 +91,7 @@ Pamiętaj: opublikowany port kontenera omija ufw — patrz `CLAUDE.md`, sekcja 3
| 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 |
| Gitea | `/srv/infra/stacks/gitea` | **działa** (od 2026-08-20) | `gitea/gitea:1.27.2` + `postgres:18.6`, dane w `/srv/data/gitea/{gitea,postgres}`, mirror na GitHub — **do zrobienia** |
| Monitoring | `/srv/infra/stacks/monitoring` | _(planowany)_ | Uptime Kuma, alerty na maila |
---
@@ -128,6 +133,7 @@ odtworzyć, co się działo — nie o pełny changelog.
| Data | Co się zmieniło | Kto |
|---|---|---|
| 2026-08-20 | Krok 13 bootstrapu (część 2/3 — Gitea): stack `gitea/gitea:1.27.2` + `postgres:18.6` uruchomiony pod `git.dfkk.cloud`, rejestracja wyłączona od startu, konto admina utworzone przez Kacpra w kreatorze instalacji. Napotkano i naprawiono: postgres 18+ wymaga mountu na `/var/lib/postgresql` (nie `/var/lib/postgresql/data`). Dodano rekord DNS wildcard `*.dfkk.cloud → 54.38.159.156`. Zweryfikowane: HTTPS 200, certyfikat Let's Encrypt ważny, rejestracja faktycznie zablokowana, port SSH kontenera nieopublikowany na hosta | Claude + Kacper |
| 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 |
+3
View File
@@ -0,0 +1,3 @@
# Hasło do bazy danych Gitei (postgres)
# Generuj: openssl rand -base64 32
GITEA_DB_PASSWORD=
+55
View File
@@ -0,0 +1,55 @@
services:
gitea:
image: gitea/gitea:1.27.2
container_name: gitea
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=gitea-db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=${GITEA_DB_PASSWORD}
- GITEA__server__DOMAIN=git.dfkk.cloud
- GITEA__server__ROOT_URL=https://git.dfkk.cloud/
- GITEA__server__HTTP_PORT=3000
# Wewnątrz obrazu działa systemowy openssh-server (s6), niezależny od
# wbudowanego SSH Gitei — GITEA__server__DISABLE_SSH go nie wyłącza.
# Nieszkodliwe: port 22 kontenera nie jest publikowany na hosta (brak
# "ports:" w tym serwisie), więc jest nieosiągalny z zewnątrz. Realne
# bezpieczeństwo daje brak publikacji portu, nie ustawienie w app.ini.
- GITEA__service__DISABLE_REGISTRATION=true
- GITEA__service__REQUIRE_SIGNIN_VIEW=false
volumes:
- /srv/data/gitea/gitea:/data
networks:
- edge
- gitea-internal
labels:
- traefik.enable=true
- traefik.http.routers.gitea.rule=Host(`git.dfkk.cloud`)
- traefik.http.routers.gitea.entrypoints=websecure
- traefik.http.routers.gitea.tls.certresolver=ovh
- traefik.http.services.gitea.loadbalancer.server.port=3000
depends_on:
- gitea-db
gitea-db:
image: postgres:18.6
container_name: gitea-db
restart: unless-stopped
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=${GITEA_DB_PASSWORD}
- POSTGRES_DB=gitea
volumes:
- /srv/data/gitea/postgres:/var/lib/postgresql # postgres 18+: mount na /var/lib/postgresql, nie /data
networks:
- gitea-internal # bez edge — baza niewidoczna z zewnątrz
networks:
edge:
external: true
gitea-internal:
name: gitea-internal