Homelab Stich
Przegląd
Serwisy
Dokploy
Git & Deploy
Traefik
Migracja
Przegląd
Serwisy
Dokploy
Git & Deploy
Traefik
Migracja
  • Wprowadzenie

    • Homelab Stich
  • Infrastruktura

    • Przegląd infrastruktury
    • Serwisy i kontenery
  • Zarządzanie

    • Dokploy
    • Git Integration i Auto-Deploy
    • Traefik (core ingress)
  • Historia i stan

    • Fale migracji — historia
    • Zewnętrzne zależności
    • Proxmox mail relay
    • Znane problemy i TODO
    • Katalogi i archiwa

Dokploy

Dokploy to centralna platforma do zarządzania deployami kontenerów w homelabiu. Manager stoi na Olaf-Test, deployuje zdalnie na Anna-Prod i Genie-Prod.

Dostęp i dane połączenia

ParametrWartość
URLhttp://192.168.0.108:3000
HostOlaf-Test (VM 112, 192.168.0.108)
OrganizationMy Organization
organizationId0jTlqBaY9_id4s5bX99xt
API key<DOKPLOY_API_KEY>
AutoryzacjaHeader: x-api-key
API typtRPC (nie klasyczny REST)

Projekty i environmenty

ProjektprojectIdenvironmentId
Anna-ProdnYYLVEnj4kOB3D67Qb3d2Nuuww0EcJjti02dXceyua
Genie-Prod--PDZyYD9_Icio-4lKtYPvc
Olaf-Test--jBw1GyDCb8jgiRSMkqM-2

Serwery w Dokploy

SerwerserverIdIPUsername
Anna-ProdNwNINc2p5yUciDoHUA0sI192.168.0.162root
Geenie-Prodv35KYITpacvy1ecpKc7NG192.168.0.107root

Anna nie jest onboardowana przez standardowy "Setup Server" Dokploy (bo to stawia własnego Traefika i koliduje z istniejącym ingress). Zamiast tego Dokploy deployuje na Anna zdalnie po SSH jako root.

API — schemat pracy

Dokploy używa tRPC. Potwierdzone endpointy:

EndpointMetodaOpis
/api/trpc/compose.createPOSTTworzenie nowego compose
/api/trpc/compose.updatePOSTAktualizacja compose (composeFile, env, sourceType)
/api/trpc/compose.one?input=...GETSzczegóły jednego compose
/api/trpc/compose.deployPOSTDeploy compose
/api/trpc/project.allGETLista projektów

Wzór pracy przy migracji stacka:

  1. compose.create z name i environmentId
  2. compose.update z composeFile, env, description, sourceType=raw, autoDeploy=false
  3. Dopisanie serverId do tabeli compose w bazie Dokploy (przez SQL — patrz znane bugi)
  4. compose.deploy

Przykładowe komendy:

# Lista projektów
ssh 192.168.0.108 "curl -s -H 'x-api-key: <API_KEY>' http://127.0.0.1:3000/api/trpc/project.all"

# Deploy compose
ssh 192.168.0.108 "curl -s -X POST -H 'content-type: application/json' \
  -H 'x-api-key: <API_KEY>' \
  'http://127.0.0.1:3000/api/trpc/compose.deploy' \
  --data '{\"json\":{\"composeId\":\"<COMPOSE_ID>\"}}'"

# Dopięcie serverId w DB
ssh 192.168.0.108 "printf '%s\n' '<sudo_pass>' | sudo -S docker exec \
  dokploy-postgres.1.nujhy0gd507gol4ekqzmxxxpi \
  psql -U dokploy -d dokploy \
  -c \"UPDATE compose SET \\\"serverId\\\" = '<serverId>' WHERE \\\"composeId\\\" = '<ID>';\""

Znane bugi Dokploy

Bug 1: serverId nie zapisuje się przez API

compose.update nie zapisuje poprawnie serverId. Trzeba wbijać ręcznie w bazie:

UPDATE compose
SET "serverId" = 'NwNINc2p5yUciDoHUA0sI'
WHERE "composeId" = '<ID>';

Bug 2: SSH key mismatch

Public key widoczny w UI Dokploy nie odpowiadał private key trzymanemu w DB. Naprawione na Anna i Genie — nie ruszać jeśli nie ma nowego problemu.

Bug 3: Container name conflict

Docker trzyma nazwę starego kontenera mimo że docker ps nie pokazuje aktywnego kontenera. Typowy log:

Conflict. The container name "/<name>" is already in use

Rozwiązanie:

ssh 192.168.0.162 'docker rm -f <container_name> 2>/dev/null || true'

Potem ponowić compose.deploy.

Bug 4: Multiline env

Dokploy rozwija \n w wartościach env do prawdziwych nowych linii. Docker Compose widzi to jako wielokrotne klucze bez = i odrzuca plik. Rozwiązanie: wyrzucić multiline wartości z env w Dokploy, ustawiać je ręcznie na hoście.

Bug 5: Relative bind mounts

Relative paths (./data) rozwiązują się do /etc/dokploy/compose/<appname>/code/, a nie do /srv/compose/<stack>/. Rozwiązanie: zawsze używać absolutnych ścieżek w compose files.

Bug 6: env_file w raw mode

env_file: .env.production nie działa w Dokploy raw mode — Dokploy generuje tylko .env. Rozwiązanie: zmienić na env_file: .env.

Docker Swarm

RolaNode
LeaderOlaf
Reachable managerGenie
WorkerAnna

Swarm jest zestawiony, ale nie jest aktywnie używany do orkiestracji. Usługi są deployowane jako zwykłe Compose przez Dokploy. Swarm będzie rozważany dopiero po pełnej standaryzacji.

Next
Git Integration i Auto-Deploy