Skip to content

Repository files, collaboration, releases and project activity.

ARCHFORGE HISTORY

Blame · FIX-ADMIN-403-1.0.5.md

Branch main · the Commit author is not necessarily a verified ArchForge account.

b0c4351f2earchadmin2026-10-111 # 1.0.5 — `403 Invalid origin` after login (Debian 13 + Caddy)
b0c4351f2earchadmin2026-10-112 
b0c4351f2earchadmin2026-10-113 The status website can open normally but `POST /admin/login` may be rejected
b0c4351f2earchadmin2026-10-114 **before username/password/2FA verification** if the configured public origin
b0c4351f2earchadmin2026-10-115 is stale or the request contains a valid but non-textually-equal HTTPS origin.
b0c4351f2earchadmin2026-10-116 
b0c4351f2earchadmin2026-10-117 ## Apply through ArchForge Git
b0c4351f2earchadmin2026-10-118 
b0c4351f2earchadmin2026-10-119 1. Download `ArchForge-External-Status-v1.0.5-ADMIN-ORIGIN-FIX-UPDATE-FROM-1.0.4.zip`.
b0c4351f2earchadmin2026-10-1110 2. Extract its contents **over the same Git checkout** that you use for
b0c4351f2earchadmin2026-10-1111  ArchForge External Status; commit and push changes to your ArchForge Git host.
b0c4351f2earchadmin2026-10-1112 3. On VPS 2 (your current root account), run:
b0c4351f2earchadmin2026-10-1113 
b0c4351f2earchadmin2026-10-1114 ```bash
b0c4351f2earchadmin2026-10-1115 cd ~/archforge-external-status
b0c4351f2earchadmin2026-10-1116 git pull --ff-only
b0c4351f2earchadmin2026-10-1117 bash ./fix-admin-origin.sh
b0c4351f2earchadmin2026-10-1118 ```
b0c4351f2earchadmin2026-10-1119 
b0c4351f2earchadmin2026-10-1120 No `install.sh` or generic `update.sh` is required. Do not delete or recreate
b0c4351f2earchadmin2026-10-1121 `/etc/archforge-status/status.env` or SQLite data.
b0c4351f2earchadmin2026-10-1122 
b0c4351f2earchadmin2026-10-1123 The script verifies the configured Caddy site is `status.archforge.nl`, checks
b0c4351f2earchadmin2026-10-1124 the existing application's loopback health endpoint, takes a private
b0c4351f2earchadmin2026-10-1125 configuration backup, synchronizes only `STATUS_PUBLIC_URL` if needed,
b0c4351f2earchadmin2026-10-1126 then uses the existing deployment script to back up SQLite, install and restart
b0c4351f2earchadmin2026-10-1127 with rollback-on-failed-start protection. It tests the external HTTPS login
b0c4351f2earchadmin2026-10-1128 origin without sending any credentials. The verification POST is deliberately
b0c4351f2earchadmin2026-10-1129 missing a valid CSRF token: success means **a CSRF rejection, NOT a login**.
b0c4351f2earchadmin2026-10-1130 
b0c4351f2earchadmin2026-10-1131 Afterwards, reload `https://status.archforge.nl/admin/login` in a fresh tab
b0c4351f2earchadmin2026-10-1132 and log in with your existing password and authenticator code.
b0c4351f2earchadmin2026-10-1133 
b0c4351f2earchadmin2026-10-1134 ### Security
b0c4351f2earchadmin2026-10-1135 
b0c4351f2earchadmin2026-10-1136 `Origin` and `Referer` must match the configured HTTPS origin; an attacker
b0c4351f2earchadmin2026-10-1137 cannot bypass this with custom `Host` or `X-Forwarded-*` headers. Cookies remain
b0c4351f2earchadmin2026-10-1138 Secure and SameSite=Strict, and all POSTs still need a valid CSRF token.
b0c4351f2earchadmin2026-10-1139 Admin accounts, existing sessions, monitoring and data remain unchanged.
b0c4351f2earchadmin2026-10-1140 
b0c4351f2earchadmin2026-10-1141 ### If the script rejects the local HTTPS test
b0c4351f2earchadmin2026-10-1142 
b0c4351f2earchadmin2026-10-1143 Look only at sanitized web/app service messages:
b0c4351f2earchadmin2026-10-1144 
b0c4351f2earchadmin2026-10-1145 ```bash
b0c4351f2earchadmin2026-10-1146 journalctl -u archforge-status -n 30 --no-pager
b0c4351f2earchadmin2026-10-1147 ```
b0c4351f2earchadmin2026-10-1148 
b0c4351f2earchadmin2026-10-1149 Never share `/etc/archforge-status/status.env`, TOTP secrets or passwords.