From 16864584e4fff26ef53f61e918a022502a514956 Mon Sep 17 00:00:00 2001 From: Stein Helge Riise Date: Tue, 25 Nov 2025 18:29:28 +0000 Subject: [PATCH 1/5] Update .gitea/workflows/build.yml --- .gitea/workflows/build.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 1679101..4920306 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -78,4 +78,20 @@ jobs: - name: Push API (${{ env.TAG }}) run: | docker push $REGISTRY/hospitality-api:${TAG} + + - name: Deploy containers + run: | + if [ "$TAG" = "dev" ]; then + echo "Deploying DEV til /srv/hospitality-dev" + cd /srv/hospitality-dev + docker compose -p hospitality-dev pull + docker compose -p hospitality-dev up -d + elif [ "$TAG" = "latest" ]; then + echo "Deploying PROD til /srv/hospitality-prod" + cd /srv/hospitality-prod + docker compose -p hospitality-prod pull + docker compose -p hospitality-prod up -d + else + echo "TAG=$TAG er ikke dev eller latest – skipper auto-deploy." + fi From bdfdcbe0f78280687a6446ef8c4ef5770aecc336 Mon Sep 17 00:00:00 2001 From: Stein Helge Riise Date: Tue, 25 Nov 2025 18:30:14 +0000 Subject: [PATCH 2/5] Update .gitea/workflows/build.yml --- .gitea/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 4920306..e29e62b 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -92,6 +92,6 @@ jobs: docker compose -p hospitality-prod pull docker compose -p hospitality-prod up -d else - echo "TAG=$TAG er ikke dev eller latest – skipper auto-deploy." + echo "TAG=$TAG er ikke dev eller latest - skipper auto-deploy." fi From 07af11b5415ddebd4cab1b5093b796952d85f7f5 Mon Sep 17 00:00:00 2001 From: steinhelge Date: Tue, 25 Nov 2025 19:51:35 +0100 Subject: [PATCH 3/5] refactor: move REGISTRY environment variable to job scope and correct step indentation. --- .gitea/workflows/build.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index e29e62b..853db96 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -7,12 +7,11 @@ on: - dev -env: - REGISTRY: gitea.theriise.net/steinhelge - jobs: build-and-push: runs-on: self-hosted + env: + REGISTRY: gitea.theriise.net/steinhelge steps: - name: Checkout @@ -79,7 +78,7 @@ jobs: run: | docker push $REGISTRY/hospitality-api:${TAG} - - name: Deploy containers + - name: Deploy containers run: | if [ "$TAG" = "dev" ]; then echo "Deploying DEV til /srv/hospitality-dev" From bde8e8bedced8ad787484ffeddf959036c2814f7 Mon Sep 17 00:00:00 2001 From: steinhelge Date: Tue, 25 Nov 2025 20:00:54 +0100 Subject: [PATCH 4/5] feat: Integrate Traefik for API and web routing with TLS, updating build workflow to use new HTTPS API endpoints. --- .gitea/workflows/build.yml | 4 +-- .../deploy/docker-compose.dev.yml | 30 +++++++++-------- .../deploy/docker-compose.prod.yml | 32 +++++++++---------- 3 files changed, 34 insertions(+), 32 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 853db96..dd4c1b4 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -45,9 +45,9 @@ jobs: - name: Build Frontend (${{ env.TAG }}) run: | if [ "$TAG" = "dev" ]; then - API_URL="http://t610:5005/api" + API_URL="https://hospitality-dev-api.theriise.net/api" else - API_URL="http://t610:5004/api" + API_URL="https://hospitality-api.theriise.net/api" fi docker build \ diff --git a/src/hospitality-web/deploy/docker-compose.dev.yml b/src/hospitality-web/deploy/docker-compose.dev.yml index 1c9ba30..b34c4b8 100644 --- a/src/hospitality-web/deploy/docker-compose.dev.yml +++ b/src/hospitality-web/deploy/docker-compose.dev.yml @@ -4,6 +4,8 @@ networks: hospitality-dev-net: name: hospitality-dev-net driver: bridge + edge: + external: true services: db: @@ -30,8 +32,13 @@ services: - db networks: - hospitality-dev-net - # ports: - # - "5005:8080" + - edge + labels: + - "traefik.enable=true" + - "traefik.docker.network=edge" + - "traefik.http.routers.hospitality-dev-api.rule=Host(`hospitality-dev-api.theriise.net`)" + - "traefik.http.routers.hospitality-dev-api.entrypoints=websecure" + - "traefik.http.routers.hospitality-dev-api.tls=true" web: image: gitea.theriise.net/steinhelge/hospitality-frontend:dev @@ -41,18 +48,13 @@ services: - api networks: - hospitality-dev-net - ports: - - "8085:80" - # Eller via Traefik, samme mønster som over: - # networks: - # - hospitality-dev-net - # - edge - # labels: - # - "traefik.enable=true" - # - "traefik.docker.network=edge" - # - "traefik.http.routers.hospitality-dev.rule=Host(`hospitality-dev.theriise.net`)" - # - "traefik.http.routers.hospitality-dev.entrypoints=websecure" - # - "traefik.http.routers.hospitality-dev.tls=true" + - edge + labels: + - "traefik.enable=true" + - "traefik.docker.network=edge" + - "traefik.http.routers.hospitality-dev.rule=Host(`hospitality-dev.theriise.net`)" + - "traefik.http.routers.hospitality-dev.entrypoints=websecure" + - "traefik.http.routers.hospitality-dev.tls=true" volumes: hospitality-dev-db-data: diff --git a/src/hospitality-web/deploy/docker-compose.prod.yml b/src/hospitality-web/deploy/docker-compose.prod.yml index c88f4df..8bff0a0 100644 --- a/src/hospitality-web/deploy/docker-compose.prod.yml +++ b/src/hospitality-web/deploy/docker-compose.prod.yml @@ -4,6 +4,8 @@ networks: hospitality-net: name: hospitality-net driver: bridge + edge: + external: true services: db: @@ -31,9 +33,13 @@ services: - db networks: - hospitality-net - # Hvis du vil nå API direkte uten Traefik: - # ports: - # - "5004:8080" + - edge + labels: + - "traefik.enable=true" + - "traefik.docker.network=edge" + - "traefik.http.routers.hospitality-api.rule=Host(`hospitality-api.theriise.net`)" + - "traefik.http.routers.hospitality-api.entrypoints=websecure" + - "traefik.http.routers.hospitality-api.tls=true" web: image: gitea.theriise.net/steinhelge/hospitality-frontend:latest @@ -43,19 +49,13 @@ services: - api networks: - hospitality-net - # Ekstern tilgang (uten Traefik): - ports: - - "8084:80" - # Hvis du vil kjøre via Traefik i stedet: - # networks: - # - hospitality-net - # - edge - # labels: - # - "traefik.enable=true" - # - "traefik.docker.network=edge" - # - "traefik.http.routers.hospitality.rule=Host(`hospitality.theriise.net`)" - # - "traefik.http.routers.hospitality.entrypoints=websecure" - # - "traefik.http.routers.hospitality.tls=true" + - edge + labels: + - "traefik.enable=true" + - "traefik.docker.network=edge" + - "traefik.http.routers.hospitality.rule=Host(`hospitality.theriise.net`)" + - "traefik.http.routers.hospitality.entrypoints=websecure" + - "traefik.http.routers.hospitality.tls=true" volumes: hospitality-db-data: From 68ecdb0056b56c47731140c1a5cb61c83664efcc Mon Sep 17 00:00:00 2001 From: steinhelge Date: Tue, 25 Nov 2025 20:10:47 +0100 Subject: [PATCH 5/5] feat: Add Nginx configuration for SPA routing and static asset caching. --- src/hospitality-web/Dockerfile | 3 +++ src/hospitality-web/nginx.conf | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/hospitality-web/nginx.conf diff --git a/src/hospitality-web/Dockerfile b/src/hospitality-web/Dockerfile index 1b2b467..258f91e 100644 --- a/src/hospitality-web/Dockerfile +++ b/src/hospitality-web/Dockerfile @@ -22,5 +22,8 @@ WORKDIR /usr/share/nginx/html # Legg inn bygget frontend COPY --from=build /app/dist . +# Kopier custom nginx config for SPA routing +COPY nginx.conf /etc/nginx/conf.d/default.conf + # Nginx server som statisk side EXPOSE 80 diff --git a/src/hospitality-web/nginx.conf b/src/hospitality-web/nginx.conf new file mode 100644 index 0000000..c810bd3 --- /dev/null +++ b/src/hospitality-web/nginx.conf @@ -0,0 +1,17 @@ +server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + index index.html; + + # Support for SPA routing + location / { + try_files $uri $uri/ /index.html; + } + + # Optional: Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { + expires 1y; + add_header Cache-Control "public, no-transform"; + } +}