fix: admin.alpinux.org — sous-domaine dédié conforme à la convention ISPConfig
Remplace portail.alpinux.org.admin.conf (snippet incorrectement formaté) par scripts/admin.alpinux.org.vhost.conf : VirtualHost complet HTTP+HTTPS, reverse proxy Gunicorn port 5002, même structure que les autres vhosts. admin/app.py : supprime x_prefix=1 du ProxyFix (plus de sous-chemin /admin/) admin/.env.example : client Keycloak renommé admin-alpinux scripts/alpinux-admin.service : description mise à jour redirect_uri Keycloak attendu : https://admin.alpinux.org/auth/callback Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
60eb8bc952
commit
80574a83f3
5 changed files with 40 additions and 14 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
SECRET_KEY=changez-moi-avec-une-valeur-aleatoire-longue
|
SECRET_KEY=changez-moi-avec-une-valeur-aleatoire-longue
|
||||||
|
|
||||||
ALPID_CLIENT_ID=alpinux-admin
|
ALPID_CLIENT_ID=admin-alpinux
|
||||||
ALPID_CLIENT_SECRET=
|
ALPID_CLIENT_SECRET=
|
||||||
ALPID_DISCOVERY_URL=https://alpid.alpinux.org/realms/alpinux/.well-known/openid-configuration
|
ALPID_DISCOVERY_URL=https://alpid.alpinux.org/realms/alpinux/.well-known/openid-configuration
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ import builds
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.secret_key = os.environ["SECRET_KEY"]
|
app.secret_key = os.environ["SECRET_KEY"]
|
||||||
|
|
||||||
# Gère X-Forwarded-Proto et X-Script-Name envoyés par Apache
|
# Gère X-Forwarded-Proto envoyé par Apache
|
||||||
app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_prefix=1)
|
app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1)
|
||||||
|
|
||||||
# ── OIDC AlpID ────────────────────────────────────────────────────
|
# ── OIDC AlpID ────────────────────────────────────────────────────
|
||||||
oauth = OAuth(app)
|
oauth = OAuth(app)
|
||||||
|
|
|
||||||
36
scripts/admin.alpinux.org.vhost.conf
Normal file
36
scripts/admin.alpinux.org.vhost.conf
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
# Apache vhost pour admin.alpinux.org
|
||||||
|
# À créer via ISPConfig : Sites > Ajouter un site web
|
||||||
|
# Domaine : admin.alpinux.org
|
||||||
|
# Activer SSL Let's Encrypt dans ISPConfig
|
||||||
|
#
|
||||||
|
# L'app admin Flask tourne derrière Gunicorn sur 127.0.0.1:5002
|
||||||
|
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName admin.alpinux.org
|
||||||
|
Redirect permanent / https://admin.alpinux.org/
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
<VirtualHost *:443>
|
||||||
|
ServerName admin.alpinux.org
|
||||||
|
|
||||||
|
# ── Proxy vers Gunicorn ──────────────────────────────────────
|
||||||
|
ProxyPreserveHost On
|
||||||
|
ProxyPass / http://127.0.0.1:5002/
|
||||||
|
ProxyPassReverse / http://127.0.0.1:5002/
|
||||||
|
|
||||||
|
RequestHeader set X-Forwarded-Proto "https"
|
||||||
|
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
|
||||||
|
|
||||||
|
# ── Sécurité ─────────────────────────────────────────────────
|
||||||
|
Header always set X-Content-Type-Options "nosniff"
|
||||||
|
Header always set X-Frame-Options "DENY"
|
||||||
|
Header always set Referrer-Policy "strict-origin-when-cross-origin"
|
||||||
|
|
||||||
|
# ── Logs ─────────────────────────────────────────────────────
|
||||||
|
ErrorLog /var/log/apache2/admin.alpinux.org-error.log
|
||||||
|
CustomLog /var/log/apache2/admin.alpinux.org-access.log combined
|
||||||
|
|
||||||
|
SSLEngine on
|
||||||
|
SSLCertificateFile /etc/letsencrypt/live/admin.alpinux.org/fullchain.pem
|
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/admin.alpinux.org/privkey.pem
|
||||||
|
</VirtualHost>
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
# puis : sudo systemctl enable --now alpinux-admin
|
# puis : sudo systemctl enable --now alpinux-admin
|
||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Alpinux Admin — interface de déploiement (Flask + Gunicorn)
|
Description=Alpinux Admin — admin.alpinux.org (Flask + Gunicorn)
|
||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
# Bloc à ajouter dans le VirtualHost HTTPS de portail.alpinux.org
|
|
||||||
# (dans ISPConfig : Sites > portail.alpinux.org > Directives Apache personnalisées)
|
|
||||||
#
|
|
||||||
# L'app admin Flask tourne sur Gunicorn à 127.0.0.1:5002
|
|
||||||
|
|
||||||
# ── Admin Alpinux : /admin/ → Gunicorn port 5002 ────────────────
|
|
||||||
ProxyPass /admin/ http://127.0.0.1:5002/
|
|
||||||
ProxyPassReverse /admin/ http://127.0.0.1:5002/
|
|
||||||
RequestHeader set X-Forwarded-Proto "https"
|
|
||||||
RequestHeader set X-Script-Name "/admin"
|
|
||||||
Loading…
Reference in a new issue