From 952d15b6ca250ac1d5eb4bd9746ac0fb79e49fc9 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Mon, 16 Feb 2026 17:41:06 +0100 Subject: [PATCH 1/2] updated routing --- backend/holy_backend/urls.py | 3 ++- docker-compose.yml | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/backend/holy_backend/urls.py b/backend/holy_backend/urls.py index a21f7b1..8887db5 100644 --- a/backend/holy_backend/urls.py +++ b/backend/holy_backend/urls.py @@ -7,10 +7,11 @@ from django.conf.urls.static import static from django.views.static import serve import os -# Ensure the admin path is clean and always ends with a slash for Django +# Clean the admin path admin_url = os.environ.get('ADMIN_URL', 'admin').strip('/') urlpatterns = [ + # Ensure admin ends with a slash for Django's redirection logic path(f'{admin_url}/', admin.site.urls), path('api/', include('api.urls')), path('api/token/', obtain_auth_token, name='api_token'), diff --git a/docker-compose.yml b/docker-compose.yml index d939e66..29c2950 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,9 +20,9 @@ services: labels: - "traefik.enable=true" - "traefik.docker.network=narl" - # Explicitly capture specific paths for the backend + # High priority for the backend specific paths - "traefik.http.routers.holy-backend.priority=20" - - "traefik.http.routers.holy-backend.rule=Host(`holy.narl.io`) && (PathPrefix(`/api`)||PathPrefix(`/admin`)||PathPrefix(`/static`)||PathPrefix(`/media`))" + - "traefik.http.routers.holy-backend.rule=Host(`holy.narl.io`) && PathPrefix(`/api`, `/admin`, `/static`, `/media`)" - "traefik.http.routers.holy-backend.entrypoints=websecure" - "traefik.http.routers.holy-backend.tls.certresolver=https_resolver" - "traefik.http.services.holy-backend.loadbalancer.server.port=8000" @@ -42,9 +42,9 @@ services: labels: - "traefik.enable=true" - "traefik.docker.network=narl" - # Frontend ONLY matches if it's NOT a backend path + # Low priority acts as the fallback catch-all - "traefik.http.routers.holy-frontend.priority=10" - - "traefik.http.routers.holy-frontend.rule=Host(`holy.narl.io`) && ! (PathPrefix(`/api`)||PathPrefix(`/admin`)||PathPrefix(`/static`)||PathPrefix(`/media`))" + - "traefik.http.routers.holy-frontend.rule=Host(`holy.narl.io`)" - "traefik.http.routers.holy-frontend.entrypoints=websecure" - "traefik.http.routers.holy-frontend.tls.certresolver=https_resolver" - "traefik.http.services.holy-frontend.loadbalancer.server.port=80" From 0059ade25f13932d43962d95133474913bf3a00c Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Mon, 16 Feb 2026 17:41:10 +0100 Subject: [PATCH 2/2] added avatar --- .../PXL_20251117_125741645.RAW-01.COVER.jpg | Bin 0 -> 16390 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 backend/media/avatars/PXL_20251117_125741645.RAW-01.COVER.jpg diff --git a/backend/media/avatars/PXL_20251117_125741645.RAW-01.COVER.jpg b/backend/media/avatars/PXL_20251117_125741645.RAW-01.COVER.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c889664cf3077a8c862cc572498f669d8304000 GIT binary patch literal 16390 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