Live deployment demo

Pushed, built and rolled out — all from one git push.

This page is served from testapp, deployed onto the serso platform straight from the Gitea repo. Every commit on main triggers a build, image push, and zero-downtime rollout behind Traefik. If you can read this, the whole pipeline just ran end-to-end.

What this site demonstrates

Push to deploy

Commit to main and a Gitea Actions workflow builds a fresh image tagged with the commit SHA, pushes it, and tells Swarm to roll the new version in.

Zero downtime

Worker-only placement with the start-first update order brings the new container up before draining the old one — no dropped requests during a roll.

Automatic TLS

Traefik watches Swarm labels, discovers the service on the traefik-public overlay, and fetches a Let’s Encrypt certificate without any extra config.

The stack

Source & CI
Gitea at git.dev.serso.org with Gitea Actions.
Image
nginx:1.27-alpine serving /public on port 8080.
Registry
Gitea’s built-in OCI registry at git.dev.serso.org/rlab/testapp.
Runtime
Docker Swarm, constrained to worker nodes, CPU + memory limited.
Ingress
Traefik on the traefik-public overlay, Let’s Encrypt resolver.
Deploy trigger
SSH to the Swarm bastion, fast-path update falls back to deploy.

Contact

Questions or want to spin up another app from this template? Drop a line at robin@serso.be.