EN /HU | Login

Deployment

The hosting and CI/CD environment: version control, continuous integration and web hosting, orchestrated by Docker Compose.

Components

Service Image Role
Traefik traefik:latest Edge router. Host-header routing, ports 80/8080.
Gitea gitea/gitea:latest Self-hosted Git service.
Woodpecker Server woodpeckerci/woodpecker-server CI/CD server, integrated with Gitea.
Woodpecker Agent woodpeckerci/woodpecker-agent Runs the pipeline steps; mounts the Docker socket and the shared softwares volume.
MySQL mysql:8 The softwares database: software metadata and releases.
phpMyAdmin phpmyadmin:latest Web UI for the database.
API local build Rails 8 app: catalog REST API, file downloads, ActiveAdmin, /build/* endpoints. Routed for /api, /file, /build, /admin and the games.teletype.hu host.
Frontend local build The Vue 3 / Vite game portal.

Shared storage

Artifacts arrive over HTTP: POST /build/upload writes into the API's artifact directory — ./data/softwares on the host, mounted as /softwares in the container (FILE_CONTAINER_PATH). The updater and /file/* static serving read the same directory.

Deployment workflow

A game repo's .woodpecker.yaml is a one-line marker (platform: <platform>, plus name: when the software name differs from the repo name). The full pipeline comes from the update server's Woodpecker configuration extension — see WarpEngine:

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

The repo also needs metadata.json and the application_token Woodpecker secret. After building, the pipeline publishes in two steps.

1. Upload — one multipart curl request per file. Filenames must carry the <name>-<version> prefix.

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

2. Publish — registers the new version.

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

UPDATE_SECRET is a WarpEngine::ApplicationToken with the update + upload scopes — per-owner, optionally expiring, created in the admin.

Once published, the software and its releases appear on the games.teletype.hu portal automatically.