4.8 KiB
static.alpinux.org
CDN pour les fichiers binaires et assets statiques de l'association : logos, favicons, images Open Graph.
Contenu hébergé
| Fichier | Usage |
|---|---|
logo/alpinux-logo-512.png |
Logo 512 px — page d'accueil alpinux.org, balises OG |
logo/alpinux-logo-192.png |
Logo 192 px — PWA / Android home screen |
logo/favicon-32.png |
Favicon 32 px |
logo/favicon-16.png |
Favicon 16 px |
logo/favicon.ico |
Favicon ICO multi-taille |
wiki/ |
Images pour wiki.alpinux.org |
Ces fichiers sont synchronisés sur le serveur via les scripts push-assets.sh / pull-assets.sh. Ils ne sont pas versionnés dans ce dépôt.
Configuration
cp .env.example .env
Editer .env :
| Variable | Obligatoire | Description |
|---|---|---|
STATIC_HOST |
oui | Alias SSH ou nom d'hôte (alpinux.org) |
STATIC_PATH |
oui | Chemin absolu du web root sur le serveur |
LOCAL_ASSETS_DIR |
oui | Chemin absolu du dépôt local (static/) |
STATIC_USER |
non | Login SSH — laisser vide si ~/.ssh/config définit l'utilisateur pour cet hôte |
Avec ~/.ssh/config (recommandé)
Si l'hôte est déclaré dans ~/.ssh/config (ex : Host alpinux.org avec User, IdentityFile, etc.), laisser STATIC_USER vide. Les scripts utilisent l'alias directement.
Sans ~/.ssh/config
Renseigner STATIC_USER=<votre-login>. Les scripts construisent alors USER@HOST:PATH.
Scripts
./scripts/pull-assets.sh # aperçu des changements + confirmation
./scripts/pull-assets.sh -y # récupère sans confirmation
./scripts/pull-assets.sh -n # dry-run
./scripts/push-assets.sh # aperçu des changements + confirmation
./scripts/push-assets.sh -y # pousse sans confirmation
./scripts/push-assets.sh -n # dry-run
push-assets.sh n'envoie que les fichiers nouveaux ou modifiés ; il ne supprime jamais rien sur le serveur.
Tableau de bord Flask (app/)
Application Flask déployée sur le serveur via scripts/deploy-app.sh. Accessible sur static.alpinux.org (proxy Apache → 127.0.0.1:5003).
Fonctionnalités
| Route | Description |
|---|---|
/ |
Tableau de bord — statistiques CDN par dossier |
/browse/ |
Navigateur de fichiers — aperçu, suppression, upload |
/search |
Recherche par nom / contenu / date |
/stats/ |
Rapport de trafic GoAccess |
Upload de fichiers
Dans le navigateur (/browse/), une zone de dépôt est affichée en bas de chaque dossier. Elle accepte plusieurs fichiers à la fois (glisser-déposer ou sélection). Les fichiers sont écrits dans le dossier affiché. Les chemins protégés (.git, app, scripts, etc.) sont refusés avec 403.
Pour limiter la taille des uploads, ajouter dans app/app.py :
app.config['MAX_CONTENT_LENGTH'] = 50 * 1024 * 1024 # 50 Mo
Variables d'environnement
| Variable | Obligatoire | Description |
|---|---|---|
SECRET_KEY |
oui | Clé secrète Flask (chaîne aléatoire longue) |
ALPID_CLIENT_ID |
oui | Client Keycloak (static-cdn) |
ALPID_CLIENT_SECRET |
oui | Secret client Keycloak |
ALPID_DISCOVERY_URL |
oui | URL OIDC discovery AlpID |
ADMIN_GROUPS |
non | Groupes Keycloak autorisés (défaut : admins) |
ADMIN_EMAILS |
non | Fallback si le claim groups est absent du token |
ASSETS_ROOT |
oui | Racine du CDN (/var/www/clients/client1/web17/web en prod) |
Variables d'environnement spécifiques aux stats
| Variable | Description |
|---|---|
STATS_FILE |
Chemin du rapport HTML GoAccess (servi dans l'iframe et l'onglet) |
STATS_JSON |
Chemin du JSON GoAccess (badges "Vues" dans le navigateur) |
STATS_LOG_FILE |
Log Apache à analyser pour la génération à la demande |
STATS_GENERATE_CMD |
Commande complète de génération (remplace la commande par défaut) |
Génération du rapport à la demande
Si goaccess.html est absent, la page /stats/ affiche un bouton Générer et ouvrir :
- Lance GoAccess en arrière-plan (thread daemon)
- Interroge
/stats/statustoutes les 2 s - Ouvre le rapport dans un nouvel onglet dès qu'il est prêt
Prérequis serveur :
abonnelcdoit appartenir au groupeclient1pour lire les logs ISPConfig :sudo usermod -a -G client1 abonnelc sudo systemctl restart static-cdn
Déploiement serveur (ISPConfig)
Le sous-domaine est créé via ISPConfig (https://owni.alpinux.org:8080) :
- Sites → Ajouter un site web — domaine
static.alpinux.org - Activer Let's Encrypt SSL dans l'onglet SSL
- Pointer le DocumentRoot vers le répertoire contenant les assets
ISPConfig gère le VirtualHost et le certificat. Voir ../infra/static/ pour la configuration Apache de référence.