EN /HU | Belépés

Üzembe helyezés

A hosting- és CI/CD-környezet: verziókezelés, folyamatos integráció és webhosting, Docker Compose-zal összefogva.

Komponensek

Szolgáltatás Image Szerep
Gitea gitea/gitea:1.27.3 Saját üzemeltetésű Git-szolgáltatás; 2026-10-23 óta saját stack.
Woodpecker Server woodpeckerci/woodpecker-server:v3.19.0 CI/CD-szerver, Gitea-integrációval; 2026-10-23 óta saját stack.
Woodpecker Agent woodpeckerci/woodpecker-agent:v3.19.0 A Docker socketen át konténerekben futtatja a pipeline lépéseit, egyszerre legfeljebb 3 workflow-t.
MySQL mysql:8 A softwares adatbázis: szoftver-metaadatok és kiadások.
API helyi build Rails 8 alkalmazás: katalógus REST API, fájlletöltés, ActiveAdmin, /build/* végpontok. A teletypegames.org /api, /file, /build és /admin útvonalai ide vannak irányítva.
Frontend helyi build A Vue 3 / Vite játékportál.

Közös tárterület

Az artifactok HTTP-n érkeznek: a POST /build/upload az API artifact-könyvtárába ír — a hoszton ./data/softwares, a konténerben /softwares néven csatolva (FILE_CONTAINER_PATH). Az updater és a /file/* statikus kiszolgálás ugyanezt a könyvtárat olvassa.

Telepítési munkafolyamat

Egy játékrepó .woodpecker.yaml fájlja egyetlen soros jelölő (platform: <platform>, illetve name:, ha a szoftvernév eltér a repó nevétől). A teljes pipeline az update szerver Woodpecker-konfigurációs kiterjesztéséből jön — lásd a WarpEngine oldalt:

SH
curl "https://teletypegames.org/build/config?platform=<platform>"

A repóhoz kell még egy metadata.json és az application_token Woodpecker-secret. A build után a pipeline két lépésben publikál.

1. Feltöltés — fájlonként egy multipart curl-kérés. A fájlneveknek tartalmazniuk kell a <név>-<verzió> előtagot.

SH
curl -X POST -H "X-Update-Secret: ${UPDATE_SECRET}" -F "file=@<name>-<version>.zip" \
  "${UPDATE_SERVER}/build/upload?name=...&version=..."

2. Publikálás — regisztrálja az új verziót.

SH
curl -X POST -H "X-Update-Secret: ${UPDATE_SECRET}" \
  "${UPDATE_SERVER}/build/publish?platform=...&name=...&version=..."

Az UPDATE_SECRET egy WarpEngine::ApplicationToken az update + upload jogosultságokkal — tulajdonosonként külön, opcionálisan lejáró, az adminban létrehozva.

Publikálás után a szoftver és a kiadásai automatikusan megjelennek a teletypegames.org portálon.

Szerver-stackek (ci-deploy)

A vps.teletype.hu szolgáltatásai is Woodpeckerből települnek, de a pipeline nem kap hoszt-volume-ot vagy Docker socketet. A deploy lépés csak a repó saját kulcsával (deploy_ssh_key secret) csatlakozik a deploy@vps.teletype.hu-hoz. A szerveren ez a kulcs egyetlen fix parancshoz van kötve, a ci-deploy <cél>-hoz, és hogy mi történik, azt a cél konfigja mondja meg a host-configban (/etc/ci-deploy/<cél>.conf). A hívó semmit nem paraméterezhet.

Céltípus Mit csinál a szerver Kik használják
compose-git maga klónozza a mastert a Giteáról, a policyval ellenőrzi a compose.yaml-t, a felsorolt útvonalakat a stackbe másolja, docker compose up -d --build nyilvános repók: FTP-szerver, LLM, Teletype BBS, Impostor BBS, Alexandria BBS, Feedia BBS, BBS Web, Statusbot, Updater, a TTGWIKI exportere
compose-checkout a szerver saját git checkoutját fast-forwardolja a Giteáról (read-only deploy kulccsal), policy-ellenőrzés, docker compose up -d --build privát repók: Redmine, Matomo, ResourceSpace; a wiki (ott a wiki-fetcher szinkronizál)
compose-services egy git checkoutnak csak a megnevezett szolgáltatásait építi és cseréli, migrációt futtat, egészség-ellenőrzés teletypegames.org
git-publish statikus tartalom prezentáció

A DOS-store-nak (az FTP-szerver APPS mappájának) a WarpEngine 1.7 óta nincs deploy-célja: a WarpEngine DOS-polca, minden publikáláskor a katalógusból épül újra.

A policy (ci-deploy-compose-policy) elutasítja a privileged módot, az extra capabilityket, a hoszt-névtereket, az eszközöket, a Docker socketet, a stacken kívüli bind mountokat (kivéve a cél által engedett útvonalakat, pl. a Matomo csak olvasható /var/log/nginx-ét) és a cél által fel nem sorolt publikus portokat. Egy master-push tehát megváltoztatja a stack viselkedését, de root jogot nem ad.

Két dolog, amire egy stack megírásakor figyelni kell:

  • A deploy cseréli a fájlokat, nem szerkeszti őket. Egy konténerbe mountolt egyetlen fájl a deploy után is a régit mutatja, a compose-git másolási listájában szereplő mappa pedig egészében cserélődik. Az ilyen fájlokat süsd az image-be, vagy a mappájukat mountold. Ahol a mountnak maradnia kell (pl. egy image VOLUME-ja alatt), ott a fájlok másolata is kerüljön az image-be, hogy a változásuk újraépítse, és a konténer újra létrejöjjön.
  • A titkok a szerveren maradnak (.env, db.env); a pipeline docker compose config ellenőrzése álértékkel fut.

Szándékosan kézzel telepített stackek: a Gitea és a Woodpecker (a CI nem telepítheti saját magát), az Authentik (minden egyszeri bejelentkezés rajta múlik) és az observability stack (hoszt-szintű mountokat igényel). Új cél felvételének menete a VPS-asszisztens jegyzeteiben van (szerverdokumentáció, 9.20).