TITLE=Üzembe helyezés ROUTE=/infrastructure/deployment LOCALE=hu MODIFIED=1792749862 URL=https://wiki.teletypegames.org/hu/infrastructure/deployment L=1 #22 L=2 https://teletypegames.org L=3 https://git.teletypegames.org/infra/host-config L=4 #50 L=5 #73 L=6 #66 L=7 #67 L=8 #69 L=9 #71 L=10 #49 L=11 #33 L=12 #72 L=13 #68 L=14 #18 L=15 #16 L=16 #15 q│ A hosting- és CI/CD-környezet: verziókezelés, folyamatos integráció és q│ webhosting, Docker Compose-zal összefogva. 1Komponensek 1═══════════ t┌───────────────────┬───────────────────────────┬────────────────────────────┐ t│h Szolgáltatás t│h Image t│h Szerep t│ t├───────────────────┼───────────────────────────┼────────────────────────────┤ t│0 bTraefik0 t│0 ctraefik:latest0 t│0 Peremrouter. Host-fejléc t│ t│0 t│0 t│0 szerinti útválasztás, t│ t│0 t│0 t│0 80/8080 port. t│ t├───────────────────┼───────────────────────────┼────────────────────────────┤ t│0 bGitea0 t│0 cgitea/gitea:latest0 t│0 Saját üzemeltetésű t│ t│0 t│0 t│0 Git-szolgáltatás. t│ t├───────────────────┼───────────────────────────┼────────────────────────────┤ t│0 bWoodpecker Server0 t│0 cwoodpeckerci/woodpecker-0 t│0 CI/CD-szerver, t│ t│0 t│0 cserver0 t│0 Gitea-integrációval. t│ t├───────────────────┼───────────────────────────┼────────────────────────────┤ t│0 bWoodpecker Agent0 t│0 cwoodpeckerci/woodpecker-0 t│0 Futtatja a pipeline t│ t│0 t│0 cagent0 t│0 lépéseit; felcsatolja a t│ t│0 t│0 t│0 Docker socketet és a közös t│ t│0 t│0 t│0 csoftwares0 kötetet. t│ t├───────────────────┼───────────────────────────┼────────────────────────────┤ t│0 bMySQL0 t│0 cmysql:80 t│0 A csoftwares0 adatbázis: t│ t│0 t│0 t│0 szoftver-metaadatok és t│ t│0 t│0 t│0 kiadások. t│ t├───────────────────┼───────────────────────────┼────────────────────────────┤ t│0 bphpMyAdmin0 t│0 cphpmyadmin:latest0 t│0 Webes felület az t│ t│0 t│0 t│0 adatbázishoz. t│ t├───────────────────┼───────────────────────────┼────────────────────────────┤ t│0 bAPI0 t│0 helyi build t│0 Rails 8 alkalmazás: t│ t│0 t│0 t│0 katalógus REST API, t│ t│0 t│0 t│0 fájlletöltés, ActiveAdmin, t│ t│0 t│0 t│0 c/build/*0 végpontok. A t│ t│0 t│0 t│0 cteletypegames.org0 c/api0, t│ t│0 t│0 t│0 c/file0, c/build0 és c/admin0 t│ t│0 t│0 t│0 útvonalai ide vannak t│ t│0 t│0 t│0 irányítva. t│ t├───────────────────┼───────────────────────────┼────────────────────────────┤ t│0 bFrontend0 t│0 helyi build t│0 A Vue 3 / Vite t│ t│0 t│0 t│0 játékportál. t│ t└───────────────────┴───────────────────────────┴────────────────────────────┘ 1Közös tárterület 1════════════════ Az artifactok HTTP-n érkeznek: a cPOST /build/upload0 az API artifact-könyvtárába ír — a hoszton c./data/softwares0, a konténerben c/softwares néven csatolva (cFILE_CONTAINER_PATH0). Az updater és a c/file/*0 statikus kiszolgálás ugyanezt a könyvtárat olvassa. 1Telepítési munkafolyamat 1════════════════════════ Egy játékrepó c.woodpecker.yaml0 fájlja egyetlen soros jelölő (cplatform: c0, illetve cname:0, 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 1WarpEngine oldalt: p curl "https://teletypegames.org/build/config?platform=" A repóhoz kell még egy cmetadata.json0 és az capplication_token Woodpecker-secret. A build után a pipeline két lépésben publikál. b1. Feltöltés0 — fájlonként egy multipart ccurl0-kérés. A fájlneveknek tartalmazniuk kell a c-0 előtagot. p curl -X POST -H "X-Update-Secret: ${UPDATE_SECRET}" -F "file=@-.zip" \ p "${UPDATE_SERVER}/build/upload?name=...&version=..." b2. Publikálás0 — regisztrálja az új verziót. p curl -X POST -H "X-Update-Secret: ${UPDATE_SECRET}" \ p "${UPDATE_SERVER}/build/publish?platform=...&name=...&version=..." Az cUPDATE_SECRET0 egy cWarpEngine::ApplicationToken0 az cupdate0 + cupload 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 2teletypegames.org portálon. 1Szerver-stackek (ci-deploy) 1═══════════════════════════ A vps.teletype.hu szolgáltatásai is Woodpeckerből települnek, de a pipeline nem kap hoszt-volume-ot vagy Docker socketet. A cdeploy0 lépés csak a repó saját kulcsával (cdeploy_ssh_key0 secret) csatlakozik a cdeploy@vps.teletype.hu0-hoz. A szerveren ez a kulcs egyetlen fix parancshoz van kötve, a cci-deploy 0-hoz, és hogy mi történik, azt a cél konfigja mondja meg a 3host-configban (c/etc/ci-deploy/.conf0). A hívó semmit nem paraméterezhet. t┌────────────────────────┬─────────────────────────┬─────────────────────────┐ t│h Céltípus t│h Mit csinál a szerver t│h Kik használják t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 ccompose-git0 t│0 maga klónozza a mastert t│0 nyilvános repók: t│ t│0 t│0 a Giteáról, a policyval t│0 4FTP-szerver, 5LLM, t│ t│0 t│0 ellenőrzi a t│0 6Teletype BBS, Impostor t│ t│0 t│0 ccompose.yaml0-t, a t│0 BBS, 7BBS Web, t│ t│0 t│0 felsorolt útvonalakat a t│0 8Statusbot, 9Updater, a t│ t│0 t│0 stackbe másolja, cdocker0 t│0 10TTGWIKI exportere t│ t│0 t│0 ccompose up -d --build0 t│0 t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 ccompose-checkout0 t│0 a szerver saját git t│0 privát repók: Redmine, t│ t│0 t│0 checkoutját t│0 Matomo, 11ResourceSpace; t│ t│0 t│0 fast-forwardolja a t│0 a 12wiki (ott a t│ t│0 t│0 Giteáról (read-only t│0 wiki-fetcher t│ t│0 t│0 deploy kulccsal), t│0 szinkronizál) t│ t│0 t│0 policy-ellenőrzés, t│0 t│ t│0 t│0 cdocker compose up -d0 t│0 t│ t│0 t│0 c--build0 t│0 t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 ccompose-services0 t│0 egy git checkoutnak t│0 13teletypegames.org t│ t│0 t│0 csak a megnevezett t│0 t│ t│0 t│0 szolgáltatásait építi t│0 t│ t│0 t│0 és cseréli, migrációt t│0 t│ t│0 t│0 futtat, t│0 t│ t│0 t│0 egészség-ellenőrzés t│0 t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 cgit-publish0, t│0 statikus tartalom, t│0 prezentáció, 14GMENU, t│ t│0 cstore-upload0 t│0 illetve a DOS-store t│0 15DOSINST, 16BMAGIC t│ t│0 t│0 buildek az FTP-szerver t│0 t│ t│0 t│0 cAPPS0 mappájába t│0 t│ t└────────────────────────┴─────────────────────────┴─────────────────────────┘ A policy (cci-deploy-compose-policy0) 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ó c/var/log/nginx0-é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: • bA deploy cseréli a fájlokat, nem szerkeszti őket.0 Egy konténerbe mountolt egyetlen fájl a deploy után is a régit mutatja, a ccompose-git0 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 cVOLUME0-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. • bA titkok a szerveren maradnak0 (c.env0, cdb.env0); a pipeline cdocker compose cconfig0 ellenőrzése álértékkel fut. Szándékosan kézzel telepített stackek: 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-assistant jegyzeteiben van (szerverdokumentáció, 9.20).