alpinux-owni/README.md
Cédrix c70b010a4b Initial : README et .gitignore de l'espace de travail Alpinux
Dépôt racine documentant la structure multi-projets org.alpinux.owni.
Chaque sous-dossier est un dépôt git indépendant (Option A).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 20:14:54 +02:00

4.2 KiB

org.alpinux.owni

Accueil des projets de l'association Alpinux (le LUG de Savoie).

Chaque sous-dossier est un dépôt git indépendant avec son propre remote sur Gitea.
Ce dossier racine est un espace de travail local — il n'a pas de remote git.


Projets

Dossier Domaine Technologie Dépôt Gitea
admin/ admin.alpinux.org Flask + AlpID alpinux-admin
dynamic/ dynamic.alpinux.org Flask + AlpID alpinux-dynamic
feedback/ feedback.alpinux.org à construire alpinux-feedback
home/ alpinux.org HTML statique alpinux-home
portail/ portail.alpinux.org en construction alpinux-portail
static/ static.alpinux.org Flask + AlpID + CDN alpinux-static
wiki/ wiki.alpinux.org MkDocs Material alpinux-wiki
infra/ Configs Apache + systemd dépôt git local séparé

Gitea : https://gitea.alpinux.org/alpinux.cedrica5l
ISPConfig : https://owni.alpinux.org:8080
AlpID (SSO) : https://alpid.alpinux.org — realm master


Procédure de déploiement

Principe

poste local  →  git push  →  Gitea  →  serveur (git pull + restart)

Les mises à jour passent exclusivement par git.
La configuration d'environnement (.env) est la seule opération manuelle tolérée sur le serveur.

Flask (admin, dynamic, static)

# Poste local
git push origin main

# Serveur (via SSH ponctuel)
ssh alpinux.org
cd /opt/<service>
git pull
source venv/bin/activate && pip install -r requirements.txt
sudo systemctl restart <service>

Wiki

cd wiki
mkdocs build --strict
rsync -rlcz --delete site/ alpinux.org:/var/www/wiki.alpinux.org/web/

Assets CDN (static.alpinux.org)

cd static
scripts/push-assets.sh    # rsync vers /var/www/clients/.../web/

Développement local

Projet Commande URL
wiki mkdocs serve http://localhost:8000
dynamic flask run --port 5000 http://localhost:5000
admin flask run --port 5001 http://localhost:5001
static python app/app.py http://localhost:5003
cd <projet>
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env && nano .env
flask run --port <port>

Authentification AlpID

Tous les projets Flask utilisent AlpID (SSO Keycloak).

  • Chaque projet a son propre client Keycloak (admin, dynamic, static-cdn, …)
  • Scopes : openid profile email
  • Autorisation : claim groups → sinon ADMIN_EMAILS → sinon tout utilisateur AlpID
  • Discovery URL : https://alpid.alpinux.org/realms/master/.well-known/openid-configuration

Règle Claude Code

Lancer Claude depuis le sous-dossier du projet pour limiter le contexte :

cd ~/Projects/org.alpinux.owni/static  && claude
cd ~/Projects/org.alpinux.owni/admin   && claude
cd ~/Projects/org.alpinux.owni/dynamic && claude
cd ~/Projects/org.alpinux.owni/wiki    && claude

Accès SSH et rôle d'abonnelc

Alias SSH : alpinux.org → compte abonnelc.

abonnelc est un compte d'administration ponctuelle, pas un compte de service.
Son rôle se limite à :

  • créer ou modifier les fichiers .env sur le serveur
  • redémarrer un service après un git pull
  • effectuer des opérations admin exceptionnelles

Les services tournent sous leurs propres utilisateurs système.
Les scripts ne doivent pas être couplés à abonnelc.


Infra

infra/ est un dépôt git local indépendant (pas de remote Gitea).
Il contient les configurations de référence pour audit et reconstruction :

infra/
├── conf/      → VirtualHost Apache par service
├── services/  → Units systemd
└── docs/      → Documentation déploiement par service