1. Nieuwe app aanmaken 1.1 Gitea repo Log in op Gitea: https://git.appmodel.nl Maak een nieuwe repo aan, bijvoorbeeld: Owner: Tour Name: viewer 1.2 Skeleton genereren op de server Op de server: apps-create viewer static-fe Dit doet: /opt/apps/viewer klaarzetten (proberen te clonen uit git@git.appmodel.nl:Tour/viewer.git) een multi-stage Dockerfile voor een Node-based static frontend aanmaken ~/infra/viewer/docker-compose.yml aanmaken met: service viewer koppeling aan traefik_net Traefik route: https://viewer.appmodel.nl 2. Develop & build Op je dev machine: git clone git@git.appmodel.nl:Tour/viewer.git cd viewer # bouw je app zoals normaal npm install npm run build # output in dist/ git add . git commit -m "First version" git push De Dockerfile verwacht een dist/ map met static files. 3. Deploy pipeline 3.1 app-deploy Op de server verzorgt app-deploy de generieke deploy: app-deploy viewer Doet: cd /opt/apps/viewer git pull --ff-only cd /home/tour/infra/viewer docker compose up -d --build viewer Logs komen in: /var/log/app-deploy-viewer.log 3.2 Automatisch deployen via Gitea hook In Gitea (repo Tour/viewer): Ga naar Instellingen → Git Hooks Kies post-receive Gebruik: #!/usr/bin/env bash /usr/local/bin/app-deploy viewer Vanaf nu: Elke git push naar Tour/viewer triggert automatisch een deploy. 4. Traefik & DNS Traefik draait in de traefik stack op dezelfde server en beheert: git.appmodel.nl auction.appmodel.nl aupi.appmodel.nl … (nieuwe apps via labels) Nieuwe app viewer krijgt via apps-create al de juiste labels: labels: - "traefik.enable=true" - "traefik.http.routers.viewer.rule=Host(`viewer.appmodel.nl`)" - "traefik.http.routers.viewer.entrypoints=websecure" - "traefik.http.routers.viewer.tls=true" - "traefik.http.routers.viewer.tls.certresolver=letsencrypt" - "traefik.http.services.viewer.loadbalancer.server.port=80" Je moet alleen in DNS nog een record maken: viewer.appmodel.nl → publieke IP van de server Traefik + Let’s Encrypt regelen het certificaat automatisch. 5. Nieuwe app types (toekomst) Het apps-create script ondersteunt nu: static-fe – Node build → Nginx → static frontend Later kun je extra types toevoegen, bijvoorbeeld: api-py – Python (Flask/FastAPI) API worker-py – background worker / crawler Door per type een eigen Dockerfile-sjabloon en standaard docker-compose.yml te genereren, wordt een nieuw project neerzetten: apps-create stats api-py apps-create crawler worker-py en blijft de pipeline (app-deploy ) identiek. Je kunt nu: apps-create viewer static-fe app-deploy viewer