From e119e79751b0c035f01bcda0c67ddefb3cbe4270 Mon Sep 17 00:00:00 2001 From: Boris Date: Tue, 31 Mar 2026 22:09:53 +0300 Subject: [PATCH 1/2] Add dev environment: debug subdomain, IP restriction, separate container - Add debug.killmybacklog.com nginx config (IP-restricted to 164.215.8.152) - Add django-dev container on port 8081 in docker-compose - Add dev branch pipeline step deploying to django-dev - Add killmybacklog.com and debug subdomain to ALLOWED_HOSTS/CSRF origins Co-Authored-By: Claude Sonnet 4.6 --- .woodpecker.yml | 19 +++++++++++++++-- kboris/settings.py | 2 ++ nginx/debug.killmybacklog.com.conf | 34 ++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 nginx/debug.killmybacklog.com.conf diff --git a/.woodpecker.yml b/.woodpecker.yml index f8bef9e..a6fb94f 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,6 +1,6 @@ when: - branch: main event: [push, manual] + branch: [main, dev] steps: test: @@ -10,7 +10,6 @@ steps: - python manage.py test backlogger --verbosity=2 environment: DJANGO_SECRET_KEY: ci-test-key - DATABASE_URL: sqlite:///tmp/test.db build-and-deploy: image: docker:cli @@ -23,3 +22,19 @@ steps: - docker build -t k-boris-website /opt/services/app/ - docker compose -f /opt/services/docker-compose.yml up -d --no-deps django depends_on: [test] + when: + branch: main + + build-and-deploy-dev: + image: docker:cli + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /opt/services:/opt/services + commands: + - mkdir -p /opt/services/app-dev + - cp -r . /opt/services/app-dev/ + - docker build -t k-boris-website-dev /opt/services/app-dev/ + - docker compose -f /opt/services/docker-compose.yml up -d --no-deps django-dev + depends_on: [test] + when: + branch: dev diff --git a/kboris/settings.py b/kboris/settings.py index 205b0e1..0806b9d 100644 --- a/kboris/settings.py +++ b/kboris/settings.py @@ -12,6 +12,7 @@ ALLOWED_HOSTS = [ 'admin.k-boris.tech', 'killmybacklog.com', 'www.killmybacklog.com', + 'debug.killmybacklog.com', 'localhost', '127.0.0.1', ] @@ -22,6 +23,7 @@ CSRF_TRUSTED_ORIGINS = [ 'https://admin.k-boris.tech', 'https://killmybacklog.com', 'https://www.killmybacklog.com', + 'https://debug.killmybacklog.com', ] INSTALLED_APPS = [ diff --git a/nginx/debug.killmybacklog.com.conf b/nginx/debug.killmybacklog.com.conf new file mode 100644 index 0000000..b0211d4 --- /dev/null +++ b/nginx/debug.killmybacklog.com.conf @@ -0,0 +1,34 @@ +server { + listen 80; + listen [::]:80; + server_name debug.killmybacklog.com; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl; + listen [::]:443 ssl; + server_name debug.killmybacklog.com; + + ssl_certificate /etc/letsencrypt/live/debug.killmybacklog.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/debug.killmybacklog.com/privkey.pem; + include /etc/letsencrypt/options-ssl-nginx.conf; + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; + + client_max_body_size 10m; + + allow 164.215.8.152; + deny all; + + location = / { + return 301 /backlogger/; + } + + location / { + proxy_pass http://127.0.0.1:8081; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} -- 2.49.1 From 8f34d9388fce0db81d2b7bbd055bac9988c83010 Mon Sep 17 00:00:00 2001 From: Boris Date: Tue, 31 Mar 2026 22:23:32 +0300 Subject: [PATCH 2/2] Fix logout 405: use POST form instead of GET link Django 5+ LogoutView rejects GET requests. Co-Authored-By: Claude Sonnet 4.6 --- backlogger/templates/backlogger/list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backlogger/templates/backlogger/list.html b/backlogger/templates/backlogger/list.html index 71cb05a..1006a00 100644 --- a/backlogger/templates/backlogger/list.html +++ b/backlogger/templates/backlogger/list.html @@ -157,7 +157,7 @@ -- 2.49.1