1
readme pipe
michael1986 edited this page 2025-12-02 13:12:29 +01:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
  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

  1. 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.

  1. 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.

  1. 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 + Lets Encrypt regelen het certificaat automatisch.

  1. 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