This document describes the system architecture, service configuration, and the automated software deployment process.
The system provides a complete hosting and CI/CD environment for software projects. It uses Docker Compose to orchestrate infrastructure for version control, continuous integration, and web hosting.
| Service | Image | Role |
|---|---|---|
| Traefik | traefik:latest |
Edge router / reverse proxy. Handles routing based on Host headers and exposes services on port 80/8080. |
| Gitea | gitea/gitea:latest |
Self-hosted Git service for source code management. |
| Woodpecker CI | woodpeckerci/woodpecker-server |
CI/CD server that integrates with Gitea to automate builds and deployments. |
| MySQL | mysql:8 |
Primary database for the webapp to store software metadata and release information. |
| Webapp | (Local Build) | The main Go application (teletype-softwares) that serves the game portal and update API. |
| Droparea | linuxserver/openssh-server |
A secure SSH gateway for CI/CD runners to upload compiled artifacts. |
A critical part of the system is how files move from the CI runner to the web application:
./data/softwares to /home/drop../data/softwares to /softwares.Because they share the same physical directory on the host, any file uploaded via SSH to droparea is immediately visible to the webapp.
The deployment process consists of two main steps defined in .woodpecker.yaml:
artifact step)The CI runner compiles the software and uploads the resulting files to the Droparea service using SSH/SCP.
openssh-client, sshpass.DROPAREA_HOST (port 2222 in compose, 2223 in example).update step)After the files are uploaded, the CI runner notifies the Webapp to register the new version.
/update endpoint.platform, name, version, and a shared UPDATE_SECRET.curl "${UPDATE_SERVER}/update?platform=...&name=...&version=...&secret=${UPDATE_SECRET}"Once the update is processed, the new softwares and their corresponding releases automatically appear on the games.teletype.hu portal.