Compare commits

..

No commits in common. "14cb68c4c5f1eee5d40fa8b18b52ea3f33b944aa" and "59795da35c0c48433d7ae6691b9e55e9a4eab310" have entirely different histories.

17 changed files with 61 additions and 910 deletions

View file

@ -2,7 +2,7 @@
## Je veux installer Linux sur mon ordinateur mais je n'ai pas de connaissance en informatique. Est-ce qu'Alpinux peut m'aider ? ## Je veux installer Linux sur mon ordinateur mais je n'ai pas de connaissance en informatique. Est-ce qu'Alpinux peut m'aider ?
Oui, Alpinux peut vous aider à installer Linux sur votre ordinateur personnel, surtout si vous n'avez pas de connaissances en informatique. Alpinux est un LUG, c'est-à-dire un groupe de personnes passionnées par Linux et les logiciels libres qui se réunissent pour partager leurs connaissances et leur expérience. Oui, Alpinux peut vous aider à installer Linux sur votre ordinateur personnel, surtout si vous n'avez pas de connaissances en informatique. Alpinux est un LUG, c'est-à-dire un groupe de personnes passionnées par Linux et les logiciels libres qui se réunissent pour partager leurs connaissances et leur expérience.
Vous pouvez avoir plus d'explication sur la page [Install Party](install-party.md) Vous pouvez avoir plus d'explication sur la page [Install Party](alpinux:install-party.md)
--- ---
## Est-ce mon programme Windows peut fonctionner sous Linux ? ## Est-ce mon programme Windows peut fonctionner sous Linux ?

View file

@ -1,18 +1,19 @@
---
description: Présentation de l'association Alpinux, LUG (Linux User Group) et GULL de Savoie basé à Chambéry.
---
# Alpinux, le LUG de Savoie # Alpinux, le LUG de Savoie
## Présentation de l'association Alpinux
![Alpinux dokuwiki](dummy.png)
L'association loi 1901 **Alpinux** n'est pas seulement un **Linux User Group** (LUG), c'est un **Groupe d'Utilisateurs de Logiciels Libres** (GULL). Nous nous engageons à promouvoir et à soutenir l'utilisation de logiciels libres et open source dans notre communauté. Nos activités ne se limitent pas seulement à Linux ; elles englobent un large éventail de technologies libres, de la réparation d'ordinateurs à l'administration de systèmes, en passant par la domotique et l'électronique. L'association loi 1901 **Alpinux** n'est pas seulement un **Linux User Group** (LUG), c'est un **Groupe d'Utilisateurs de Logiciels Libres** (GULL). Nous nous engageons à promouvoir et à soutenir l'utilisation de logiciels libres et open source dans notre communauté. Nos activités ne se limitent pas seulement à Linux ; elles englobent un large éventail de technologies libres, de la réparation d'ordinateurs à l'administration de systèmes, en passant par la domotique et l'électronique.
Notre association organise des rencontres tous les 1er et 3ème jeudi de chaque mois *(hors vacances scolaires — consulter le calendrier)* à partir de 18h à la **Dynamo Chambéry**, et régulièrement des **Install Party**. Notre association organise des rencontres tous les 1er et 3ème jeudi de chaque mois *(note: hors période vacances scolaires, consulter le calendrier des évènements)* à partir de 18h à la **Dynamo Chambéry** et régulièrement des **Install Party**.
L'association propose également des **services numériques** à ses membres. L'association propose des **services numériques**.
[Gérer son adhésion](https://www.helloasso.com/associations/alpinux-le-lug-de-savoie){ .md-button } [Gérer son adhésion](https://www.helloasso.com/associations/alpinux-le-lug-de-savoie)
[Install Party](install-party.md){ .md-button } [Install Party](alpinux:install-party.md)
[Services numériques](alpinux:services-numeriques.md)
## Événements # Évènements
[Abonnez-vous au calendrier](alpinux:evenements-rdv#abonnement-au-calendrier-des-evenements-alpinux
.md)
[Tous les événements et rendez-vous](evenements.md){ .md-button .md-button--primary } [Tous les évènements et rendez-vous](alpinux:evenements-rdv.md)

View file

@ -6,16 +6,17 @@ Découvrez **Linux Mint**, un système libre, rapide, sécurisé et élégant.
Lors de nos **Install Party**, les bénévoles **Alpinux** vous accompagnent pour linstaller sur votre ordinateur et répondre à toutes vos questions. Lors de nos **Install Party**, les bénévoles **Alpinux** vous accompagnent pour linstaller sur votre ordinateur et répondre à toutes vos questions.
--- ---
## 📅 Bilan et prochaine étape ## 📅 Prochaines Install Party
L'**Install Party de Printemps 2026** à la **Médiathèque de Chambéry Jean-Jaques Rousseau** :
L**Install Party de Printemps 2026** sest tenue le **samedi 28 mars 2026** à la **Médiathèque Jean-Jacques Rousseau à Chambéry**. Merci à tous les participants et bénévoles ! - **Quand** : toute la journée du **samedi 28 mars 2026**
- **Où** : **Médiathèque Jean-Jaques Rousseau à Chambéry **
LInstall Party est terminée pour cette saison. - **S'inscrire** :[➡️ Mode demploi complet pour installer Linux Mint](https://www.helloasso.com/associations/alpinux-le-lug-de-savoie/evenements/install-party-de-printemps-28-mars]]
--- ---
### 🗓️ Prochaine date : présentation en septembre L'**Install Party de Rentrée 2026** :
Une **présentation** est prévue en **septembre 2026** — la date exacte sera confirmée prochainement. - **Quand** : toute la journée du **samedi 19 septembre 2026**
--- ---
## ⚙️ Préparez votre ordinateur ## ⚙️ Préparez votre ordinateur
@ -37,13 +38,13 @@ Une **clé USB Linux Mint** est fournie à votre arrivée.
Les bénévoles vous guident pas à pas tout au long du processus. Les bénévoles vous guident pas à pas tout au long du processus.
Vous repartez avec un ordinateur rapide, stable et libre. Vous repartez avec un ordinateur rapide, stable et libre.
[**Guide dinstallation Linux Mint depuis Windows**](../guides/linux-mint-depuis-windows.md) [**Trousse de premiers secours Linux Mint**](technique:pratique:installer-linux-mint-depuis-windows)
--- ---
## 🧰 Après linstallation ## 🧰 Après linstallation
Consultez la [trousse de premiers secours Linux Mint](../guides/linux-mint-trousse.md). Consultez la [[technique:pratique:linux-mint-trousse-de-premiers-secours.md).
Participez à nos [**ateliers et rencontres**](evenements.md) pour progresser et échanger avec la communauté. Participez à nos [**ateliers et rencontres**](alpinux:evenements-rdv#calendrier.md) pour progresser et échanger avec la communauté.
--- ---
## 🤝 Devenir bénévole ## 🤝 Devenir bénévole
@ -62,8 +63,10 @@ Pour l'**Install Party de Rentrée** et l'**Install Party de Printemps**, ambian
--- ---
## ⚠️ Décharge de responsabilité ## ⚠️ Décharge de responsabilité
Une décharge de responsabilité vous sera présentée avant linstallation. Veuillez lire la ![décharge de responsabilité](alpinux:decharge-de-responsabilite.pdf) avant linstallation.
--- ---
## 🐧 Version de Linux utilisée ## 🐧 Version de Linux utilisée
![Linux Mint 22.2 Cinnamon](alpinux:pasted:20211107-194914.png)
Nous installons en priorité la version **Linux Mint x64 Cinnamon**. Nous installons en priorité la version **Linux Mint x64 Cinnamon**.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View file

@ -1,338 +0,0 @@
---
description: Comment contribuer au wiki Alpinux — créer un compte AlpID, modifier ou créer une page sur Gitea, ouvrir une pull request et comprendre la publication MkDocs.
---
# Contribuer au wiki
Ce wiki appartient à toute la communauté Alpinux. Si vous repérez une faute, une information dépassée, ou si vous avez envie de partager un guide — vous êtes au bon endroit.
!!! tip "Pas besoin d'être développeur"
Tout se fait depuis le navigateur web, sans installer quoi que ce soit. Le seul prérequis est de savoir écrire du texte.
---
## Vue d'ensemble du processus
```
Vous → AlpID → Gitea → Mainteneurs → Wiki en ligne
Créez un compte Vous connecte Vous éditez Relisent et MkDocs publie
sur AlpID à Gitea la page acceptent automatiquement
+ ouvrez une votre
pull request contribution
```
En résumé : vous proposez une modification, un mainteneur la valide, et le wiki se met à jour automatiquement.
---
## Étape 1 — Créer un compte AlpID
**AlpID** est le système d'authentification unique d'Alpinux. Un seul compte vous donne accès à Gitea, Nextcloud, et aux autres services de l'association.
1. Ouvrez votre navigateur et allez sur **[https://alpid.alpinux.org](https://alpid.alpinux.org)**.
2. Cliquez sur **« Créer un compte »** (ou *Register*).
3. Remplissez le formulaire :
- **Nom d'utilisateur** : choisissez quelque chose de simple, sans accent ni espace (ex. `prenom.nom`)
- **Adresse e-mail** : une adresse que vous consultez régulièrement
- **Mot de passe** : au moins 8 caractères
4. Validez avec le bouton **« S'inscrire »**.
5. Vérifiez votre boîte mail et cliquez sur le lien de confirmation.
!!! note "Déjà membre Alpinux ?"
Si vous avez déjà un compte sur le portail membres, vos identifiants fonctionnent peut-être déjà. Essayez de vous connecter directement.
---
## Étape 2 — Se connecter à Gitea
**Gitea** est la forge logicielle où sont hébergées les sources du wiki.
1. Allez sur **[https://gitea.alpinux.org](https://gitea.alpinux.org)**.
2. Cliquez sur **« Connexion »** en haut à droite.
3. Choisissez **« Se connecter via AlpID »** (bouton avec le logo Alpinux).
4. Vous êtes redirigé vers AlpID, qui confirme votre identité, puis revient sur Gitea.
Vous êtes maintenant connecté — votre nom apparaît en haut à droite.
!!! success "C'est bon !"
Pas besoin de créer un second compte sur Gitea. AlpID fait le lien automatiquement.
---
## Étape 3a — Modifier une page existante
C'est la façon la plus simple de contribuer : corriger une faute, compléter une section, mettre à jour une information.
### Trouver la page dans le dépôt
1. Allez sur le dépôt du wiki :
**[https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.site.2026](https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.site.2026)**
2. Cliquez sur le dossier **`docs/`** — c'est là que se trouvent toutes les pages du wiki.
3. Les pages sont organisées par section :
- `alpinux/` → pages sur l'association
- `guides/` → tutoriels pratiques
- `presentations/` → comptes-rendus de réunions
- `technique/` → administration système
4. Naviguez jusqu'à la page que vous souhaitez modifier et cliquez dessus.
### Ouvrir l'éditeur
5. En haut à droite du contenu du fichier, cliquez sur l'icône **crayon** ✏️ (*Modifier ce fichier*).
L'éditeur s'ouvre directement dans le navigateur. Vous pouvez basculer entre l'onglet **Édition** et l'onglet **Aperçu** pour voir le rendu de vos modifications.
6. Faites vos modifications dans l'éditeur.
!!! tip "Raccourcis utiles dans l'éditeur"
- `Ctrl+Z` annule la dernière action
- L'onglet **Aperçu** affiche le rendu final avant de soumettre
### Proposer la modification
7. Faites défiler la page vers le bas jusqu'à la section **« Valider les modifications »** (*Commit Changes*).
8. Remplissez le champ **« Message de commit »** : décrivez en une ligne ce que vous avez changé.
Exemple : `Correction faute de frappe dans le guide Linux Mint`
9. Sélectionnez l'option **« Créer une nouvelle branche et ouvrir une pull request »**.
- Gitea propose un nom de branche automatique — vous pouvez le garder tel quel.
10. Cliquez sur **« Proposer la modification »**.
---
## Étape 3b — Proposer un nouvel article
Vous avez rédigé un guide ou un compte-rendu et souhaitez l'ajouter au wiki.
### Choisir le bon dossier
Avant de créer votre fichier, identifiez dans quelle section il a sa place :
| Section | Dossier | Exemples |
|---|---|---|
| Guides pratiques | `docs/guides/` | Installer un logiciel, sauvegarder ses données |
| Présentations | `docs/presentations/` | Compte-rendu d'une présentation en réunion |
| Alpinux | `docs/alpinux/` | Informations sur l'association |
| Technique | `docs/technique/` | Administration système, serveurs |
### Créer le fichier
1. Naviguez dans le dépôt vers le bon dossier (ex. `docs/guides/`).
2. Cliquez sur le bouton **« + »** ou **« Nouveau fichier »** en haut à droite de la liste des fichiers.
3. **Donnez un nom à votre fichier** dans le champ en haut :
- Utilisez des minuscules, des tirets à la place des espaces, sans accent.
- Terminez toujours par `.md` (extension Markdown).
- Exemples : `installer-inkscape.md`, `utiliser-keepassxc.md`
4. **Commencez votre article** par un titre de niveau 1 :
```markdown
# Titre de mon article
Introduction en une ou deux phrases.
## Première section
Contenu...
```
5. Rédigez votre contenu (voir la section [Écrire en Markdown](#ecrire-en-markdown) plus bas).
6. Faites défiler vers le bas, remplissez un message de commit descriptif, choisissez **« Créer une nouvelle branche et ouvrir une pull request »**, et cliquez sur **« Proposer le nouveau fichier »**.
---
## Étape 4 — Ouvrir la pull request
Après avoir cliqué sur « Proposer la modification » ou « Proposer le nouveau fichier », Gitea vous amène automatiquement sur la page de création de la *pull request* (PR).
!!! info "C'est quoi une pull request ?"
Une pull request (ou *demande de fusion*) est une proposition formelle de modification. Elle permet aux mainteneurs de relire votre travail avant qu'il soit intégré au wiki. C'est le mécanisme standard de collaboration sur les forges comme Gitea ou GitHub.
### Remplir la pull request
1. **Titre** : Gitea le pré-remplit avec votre message de commit — vous pouvez le modifier pour qu'il soit plus clair.
Exemple : `Ajout d'un guide sur KeePassXC`
2. **Description** (optionnelle mais utile) : expliquez en quelques mots ce que vous avez fait et pourquoi.
Exemple :
```
Ajout d'un guide d'utilisation de KeePassXC pour débutants.
Couvre : installation, création d'une base, ajout d'un mot de passe.
```
3. Cliquez sur **« Créer la pull request »**.
### Et après ?
- Les mainteneurs reçoivent une notification par e-mail.
- Ils reliront votre contribution et pourront laisser des commentaires directement sur la PR.
- Si des ajustements sont demandés, vous pouvez modifier à nouveau le fichier — la PR se met à jour automatiquement.
- Une fois validée, un mainteneur clique sur **« Fusionner »** (*Merge*), et votre contribution rejoint la branche principale.
!!! tip "Patience !"
Les mainteneurs sont bénévoles. Si votre PR n'a pas de retour sous quelques jours, n'hésitez pas à en parler lors d'une réunion ou sur Matrix.
---
## Étape 5 — La publication avec MkDocs
Une fois votre pull request fusionnée, voici ce qui se passe dans les coulisses pour que votre article apparaisse sur le wiki.
### 1. Le Markdown devient du HTML
**MkDocs** est l'outil qui transforme les fichiers `.md` (texte brut) en un site web complet. C'est l'équivalent d'une imprimerie automatique : vous écrivez le texte, MkDocs fabrique les pages.
La commande lancée sur le serveur est simplement :
```bash
mkdocs build
```
Elle lit tous les fichiers `.md` dans `docs/`, applique le thème (Material for MkDocs), et génère un dossier `site/` contenant du HTML, du CSS et du JavaScript prêts à être servis.
### 2. Le thème appliqué
Le wiki utilise le thème **[Material for MkDocs](https://squidfunk.github.io/mkdocs-material/)**, qui ajoute automatiquement :
- la barre de navigation et les onglets,
- la barre de recherche,
- la mise en forme des blocs de code, des tableaux, des alertes (`!!! tip`, `!!! warning`…),
- la compatibilité mobile.
Vous n'avez pas à vous en préoccuper : il suffit d'écrire du Markdown valide.
### 3. Les fichiers sont déployés
Le dossier `site/` généré est copié dans le répertoire servi par Apache :
```
/var/www/clients/client1/web2/web/wiki-static/
```
C'est ce que votre navigateur lit quand vous visitez `https://wiki.alpinux.org`.
### 4. Délai de publication
La publication n'est pas instantanée : un mainteneur doit déclencher le build après la fusion de votre PR. En pratique, les nouveaux articles apparaissent **dans les 24 à 48 heures** suivant la fusion.
Les mainteneurs peuvent consulter la [procédure de déploiement](technique/deploiement-wiki.md) pour les détails techniques.
---
## Écrire en Markdown {#ecrire-en-markdown}
Le Markdown est un format texte très simple. Voici l'essentiel pour rédiger une page wiki.
### Titres
```markdown
# Titre principal (H1) — un seul par page
## Section (H2)
### Sous-section (H3)
```
### Mise en forme
```markdown
**texte en gras**
*texte en italique*
`code en ligne`
```
### Listes
```markdown
- Élément
- Autre élément
- Sous-élément (4 espaces d'indentation)
1. Premier
2. Deuxième
3. Troisième
```
### Liens
```markdown
[Texte du lien](https://exemple.com)
[Lien vers une autre page du wiki](../guides/linux-mint-depuis-windows.md)
```
### Images
```markdown
![Texte alternatif](https://static.alpinux.org/logo/alpinux-logo.png)
```
### Blocs de code
Entourez le code de trois accents graves et précisez le langage :
````markdown
```bash
sudo apt update
sudo apt install inkscape
```
````
### Alertes (admonitions)
Ces blocs colorés attirent l'attention du lecteur :
```markdown
!!! tip "Astuce"
Texte de l'astuce. (4 espaces d'indentation)
!!! warning "Attention"
Quelque chose d'important à ne pas rater.
!!! note
Une note informative.
```
Résultat :
!!! tip "Astuce"
Indentez le contenu d'une admonition avec 4 espaces.
!!! warning "Attention"
Gardez vos titres H1 uniques par page.
### Tableaux
```markdown
| Colonne A | Colonne B | Colonne C |
|---|---|---|
| Valeur 1 | Valeur 2 | Valeur 3 |
| Valeur 4 | Valeur 5 | Valeur 6 |
```
---
## Ressources complémentaires
- [Éditeur Markdown en ligne (aperçu temps réel)](https://markdownlivepreview.com/)
- [Référence complète Markdown](https://www.markdownguide.org/basic-syntax/)
- [Documentation MkDocs Material](https://squidfunk.github.io/mkdocs-material/reference/)
- Dépôt du wiki : [gitea.alpinux.org/alpinux.cedrica5l/alpinux.site.2026](https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.site.2026)
---
## Une question ? Un problème ?
- Posez votre question lors d'une **réunion Alpinux** (1er et 3e jeudis du mois)
- Ouvrez une **issue** directement sur Gitea : [Nouvelle issue](https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.site.2026/issues/new)
- Rejoignez le salon **Matrix** de l'association

View file

@ -1,7 +1,3 @@
---
description: Wiki collaboratif d'Alpinux — guides Linux, tutoriels, présentations et ressources du LUG de Savoie.
---
# Wiki Alpinux # Wiki Alpinux
Bienvenue sur le wiki collaboratif d'**Alpinux**, le LUG (Linux User Group) de Savoie. Bienvenue sur le wiki collaboratif d'**Alpinux**, le LUG (Linux User Group) de Savoie.
@ -52,10 +48,8 @@ Ici vous trouverez des guides pratiques, des comptes-rendus de présentations et
## Contribuer ## Contribuer
Ce wiki est collaboratif : tout membre peut proposer une modification ou un nouvel article. Ce wiki est hébergé sur notre [Gitea](https://gitea.alpinux.org) et les pages sont écrites en Markdown.
Les pages sont écrites en [Markdown](https://www.markdownguide.org/basic-syntax/) et hébergées sur notre [Gitea](https://gitea.alpinux.org). Pour proposer une modification ou un nouvel article, créez un compte sur [AlpID](https://alpid.alpinux.org) et ouvrez une *pull request*.
[:octicons-arrow-right-24: Guide de contribution pas à pas](contribuer.md)
!!! tip "Première visite ?" !!! tip "Première visite ?"
Commencez par la [FAQ](alpinux/faq.md) ou le guide [Installer Linux Mint depuis Windows](guides/linux-mint-depuis-windows.md). Commencez par la [FAQ](alpinux/faq.md) ou le guide [Installer Linux Mint depuis Windows](guides/linux-mint-depuis-windows.md).

View file

@ -1,4 +0,0 @@
User-agent: *
Allow: /
Sitemap: https://wiki.alpinux.org/sitemap.xml

View file

@ -1,248 +0,0 @@
---
description: Procédure de déploiement du wiki Alpinux — push Gitea, build MkDocs sur le serveur, mise en ligne sur wiki.alpinux.org.
---
# Déploiement du wiki
Cette page décrit comment mettre en ligne une nouvelle version du wiki après avoir fusionné des contributions sur Gitea.
!!! note "Pour qui ?"
Cette procédure s'adresse aux mainteneurs ayant accès SSH au serveur `alpinux.org`.
Les contributeurs n'ont rien à faire : leur travail s'arrête à la pull request.
---
## Vue d'ensemble
```
docs/assets/alpinux-logo.svg (source, dans git)
│ build-assets.py (à faire si le SVG a changé)
docs/assets/alpinux-logo.png (généré, hors git) + /tmp/ → static.alpinux.org
Gitea (origin/main)
│ git pull (sur le serveur)
Dépôt local serveur
│ mkdocs build --strict
/var/www/clients/client1/web2/web/wiki-static/
│ Apache
https://wiki.alpinux.org
```
!!! info "Images et logo"
Les fichiers PNG ne sont **pas stockés dans git**. Le logo (`docs/assets/alpinux-logo.png`)
est généré par `build-assets.py` avant le build MkDocs. Les autres images des articles
sont hébergées sur **static.alpinux.org**.
---
## Prérequis côté serveur
- Python 3 et pip installés
- MkDocs, le thème Material et Pillow installés :
```bash
pip install mkdocs-material pillow
```
- Chromium installé (pour `build-assets.py`) :
```bash
sudo apt install chromium
```
- Un clone du dépôt présent sur le serveur (à faire une seule fois) :
```bash
git clone https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.site.2026.git \
/home/alpinux/wiki
```
- Le `site_dir` dans `mkdocs.yml` pointe vers le bon DocumentRoot Apache :
```yaml
site_dir: /var/www/clients/client1/web2/web/wiki-static
```
---
## Procédure de déploiement (manuelle)
### 1. Se connecter au serveur
```bash
ssh alpinux@alpinux.org
```
### 2. Récupérer les dernières modifications
```bash
cd /home/alpinux/wiki
git pull
```
Vérifiez que la commande affiche bien les fichiers modifiés. Si elle affiche `Already up to date`, le serveur est déjà à jour.
### 3. Générer le logo (si le SVG a changé)
Le logo PNG n'est pas dans git — il est généré depuis le SVG source :
```bash
python3 scripts/build-assets.py
```
Cette commande produit :
- `docs/assets/alpinux-logo.png` — logo 200×200 inclus dans le wiki
- `/tmp/alpinux-static-assets/` — logo 512px + favicons à uploader sur `static.alpinux.org/logo/`
!!! tip
Si seul le contenu Markdown a changé (aucune modification du SVG), cette étape peut être ignorée.
Le `docs/assets/alpinux-logo.png` du précédent build est toujours présent sur le serveur.
### 4. Lancer le build MkDocs
```bash
mkdocs build --strict
```
L'option `--strict` traite les avertissements comme des erreurs — utile pour détecter les liens cassés avant de mettre en ligne.
Si tout se passe bien, vous verrez :
```
INFO - Building documentation...
INFO - Cleaning site directory
INFO - Documentation built in X.XX seconds
```
Le dossier `site_dir` est maintenant mis à jour. Apache sert immédiatement les nouveaux fichiers — **pas besoin de redémarrer Apache**.
### 5. Vérifier en ligne
Ouvrez [https://wiki.alpinux.org](https://wiki.alpinux.org) et vérifiez que la modification apparaît bien.
---
## Automatiser avec un script
Pour éviter d'oublier une étape, créez un script `/home/alpinux/deploy-wiki.sh` :
```bash
#!/bin/bash
set -e
WIKI_DIR="/home/alpinux/wiki"
echo "==> Récupération des modifications..."
cd "$WIKI_DIR"
git pull
echo "==> Génération du logo..."
python3 scripts/build-assets.py
echo "==> Build MkDocs..."
mkdocs build --strict
echo "==> Déployé avec succès sur https://wiki.alpinux.org"
```
Rendez-le exécutable :
```bash
chmod +x /home/alpinux/deploy-wiki.sh
```
Utilisation :
```bash
/home/alpinux/deploy-wiki.sh
```
---
## Automatiser avec un hook Gitea (optionnel)
Pour que le déploiement se déclenche automatiquement à chaque fusion de pull request, configurez un **webhook** dans Gitea.
### Côté serveur : créer un endpoint HTTP minimal
Installez un petit serveur de webhook (ex. [`webhook`](https://github.com/adnanh/webhook)) :
```bash
sudo apt install webhook
```
Créez `/etc/webhook/hooks.json` :
```json
[
{
"id": "deploy-wiki",
"execute-command": "/home/alpinux/deploy-wiki.sh",
"command-working-directory": "/home/alpinux/wiki",
"response-message": "Déploiement lancé"
}
]
```
Démarrez le service :
```bash
sudo systemctl enable --now webhook
```
Le webhook écoute par défaut sur le port `9000`.
### Côté Gitea : configurer le webhook
1. Allez dans le dépôt sur Gitea → **Paramètres****Webhooks****Ajouter un webhook**.
2. **URL** : `http://alpinux.org:9000/hooks/deploy-wiki`
3. **Type de déclencheur** : *Push* (ou *Pull Request merging*)
4. Cliquez sur **Ajouter le webhook**.
À chaque push sur `main`, Gitea appelle l'URL, qui déclenche le script de déploiement.
!!! warning "Sécurité"
Protégez le webhook avec un **secret** (paramètre `trigger-rule` dans `hooks.json` + champ *Secret* dans Gitea) pour éviter que n'importe qui puisse déclencher un build.
---
## En cas d'erreur de build
Si `mkdocs build` échoue, le site en ligne **n'est pas modifié** — l'ancien contenu reste en place. Lisez le message d'erreur : il indique généralement le fichier et la ligne problématiques.
Erreurs courantes :
| Erreur | Cause probable |
|---|---|
| `WARNING - Doc file not found` | Lien mort dans un fichier `.md` |
| `ERROR - Config value 'nav'` | Un fichier listé dans `mkdocs.yml` n'existe pas |
| `ModuleNotFoundError` | Un plugin MkDocs n'est pas installé (`pip install ...`) |
Pour tester en local avant de pousser :
```bash
mkdocs serve
```
Ouvrez [http://localhost:8000](http://localhost:8000) — MkDocs recharge automatiquement à chaque modification.
---
## Résumé des commandes
| Action | Commande |
|---|---|
| Mettre à jour le dépôt serveur | `git pull` |
| Générer le logo PNG (si SVG modifié) | `python3 scripts/build-assets.py` |
| Construire et déployer | `mkdocs build --strict` |
| Tester en local | `mkdocs serve` |
| Déployer via script (tout en un) | `/home/alpinux/deploy-wiki.sh` |

View file

@ -3,73 +3,16 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Alpinux — Le LUG de Savoie. Groupe d'utilisateurs de Linux et logiciels libres à Chambéry. Réunions tous les 1er et 3e jeudis du mois."> <meta name="description" content="Alpinux — Le LUG de Savoie. Groupe d'utilisateurs de Linux et logiciels libres à Chambéry.">
<meta name="robots" content="index, follow"> <meta name="robots" content="index, follow">
<title>Alpinux — Le LUG de Savoie</title> <title>Alpinux — Le LUG de Savoie</title>
<!-- Canonical -->
<link rel="canonical" href="https://alpinux.org/">
<!-- Favicons --> <!-- Favicons -->
<link rel="icon" type="image/x-icon" href="https://static.alpinux.org/logo/favicon.ico"> <link rel="icon" type="image/x-icon" href="https://static.alpinux.org/logo/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="https://static.alpinux.org/logo/favicon-32.png"> <link rel="icon" type="image/png" sizes="32x32" href="https://static.alpinux.org/logo/favicon-32.png">
<link rel="icon" type="image/png" sizes="96x96" href="https://static.alpinux.org/logo/favicon-96.png"> <link rel="icon" type="image/png" sizes="96x96" href="https://static.alpinux.org/logo/favicon-96.png">
<link rel="apple-touch-icon" sizes="192x192" href="https://static.alpinux.org/logo/favicon-192.png"> <link rel="apple-touch-icon" sizes="192x192" href="https://static.alpinux.org/logo/favicon-192.png">
<!-- Open Graph -->
<meta property="og:type" content="website">
<meta property="og:site_name" content="Alpinux">
<meta property="og:title" content="Alpinux — Le LUG de Savoie">
<meta property="og:description" content="Association dédiée à Linux et aux logiciels libres en Savoie. Réunions à la Dynamo Chambéry tous les 1er et 3e jeudis du mois.">
<meta property="og:url" content="https://alpinux.org/">
<meta property="og:image" content="https://static.alpinux.org/logo/alpinux-logo-512.png">
<meta property="og:locale" content="fr_FR">
<!-- Twitter Card -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Alpinux — Le LUG de Savoie">
<meta name="twitter:description" content="Association dédiée à Linux et aux logiciels libres en Savoie.">
<meta name="twitter:image" content="https://static.alpinux.org/logo/alpinux-logo-512.png">
<meta name="twitter:site" content="@alpinux">
<!-- Structured data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Alpinux",
"alternateName": "Alpinux — LUG de Savoie",
"url": "https://alpinux.org",
"logo": "https://static.alpinux.org/logo/alpinux-logo-512.png",
"description": "Association loi 1901 dédiée à Linux et aux logiciels libres en Savoie. Groupe d'utilisateurs Linux (LUG) basé à Chambéry.",
"foundingLocation": {
"@type": "Place",
"name": "Chambéry",
"address": {
"@type": "PostalAddress",
"addressLocality": "Chambéry",
"addressRegion": "Savoie",
"addressCountry": "FR"
}
},
"location": {
"@type": "Place",
"name": "Dynamo Chambéry",
"address": {
"@type": "PostalAddress",
"addressLocality": "Chambéry",
"addressRegion": "Savoie",
"addressCountry": "FR"
}
},
"sameAs": [
"https://mamot.fr/@alpinux",
"https://www.helloasso.com/associations/alpinux-le-lug-de-savoie",
"https://gitea.alpinux.org/alpinux.cedrica5l"
]
}
</script>
<style> <style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
@ -270,10 +213,7 @@
<header> <header>
<div class="logo-wrap"> <div class="logo-wrap">
<img src="https://static.alpinux.org/logo/alpinux-logo.png" <img src="https://static.alpinux.org/logo/alpinux-logo.png" alt="Logo Alpinux" class="logo-img">
alt="Logo Alpinux — LUG de Savoie"
class="logo-img"
width="90" height="90">
<div class="logo-text"> <div class="logo-text">
<div class="brand"> <div class="brand">
<span class="light">A</span><span class="bold">l</span><span class="light">p</span><span class="bold">inux</span> <span class="light">A</span><span class="bold">l</span><span class="light">p</span><span class="bold">inux</span>
@ -287,12 +227,12 @@
</p> </p>
</header> </header>
<nav aria-label="Navigation principale"> <nav>
<a href="https://wiki.alpinux.org">Wiki</a> <a href="https://wiki.alpinux.org">Wiki</a>
<a href="https://portail.alpinux.org">Portail membres</a> <a href="https://portail.alpinux.org">Portail membres</a>
<a href="https://installparty.alpinux.org">Install Party</a> <a href="https://installparty.alpinux.org">Install Party</a>
<a href="https://gitea.alpinux.org">Gitea</a> <a href="https://gitea.alpinux.org">Gitea</a>
<a href="https://mamot.fr/@alpinux" rel="me">Mastodon</a> <a href="https://mamot.fr/@alpinux">Mastodon</a>
<a href="https://www.helloasso.com/associations/alpinux-le-lug-de-savoie">Adhérer</a> <a href="https://www.helloasso.com/associations/alpinux-le-lug-de-savoie">Adhérer</a>
</nav> </nav>
@ -348,7 +288,7 @@
<p style="margin-top:.4rem;"> <p style="margin-top:.4rem;">
<a href="https://wiki.alpinux.org/alpinux/">À propos</a> &nbsp;·&nbsp; <a href="https://wiki.alpinux.org/alpinux/">À propos</a> &nbsp;·&nbsp;
<a href="https://wiki.alpinux.org/alpinux/faq/">FAQ</a> &nbsp;·&nbsp; <a href="https://wiki.alpinux.org/alpinux/faq/">FAQ</a> &nbsp;·&nbsp;
<a href="https://mamot.fr/@alpinux" rel="me">Mastodon</a> &nbsp;·&nbsp; <a href="https://mamot.fr/@alpinux">Mastodon</a> &nbsp;·&nbsp;
<a href="https://www.helloasso.com/associations/alpinux-le-lug-de-savoie">Adhérer</a> <a href="https://www.helloasso.com/associations/alpinux-le-lug-de-savoie">Adhérer</a>
</p> </p>
</footer> </footer>

View file

@ -1,4 +0,0 @@
User-agent: *
Allow: /
Sitemap: https://alpinux.org/sitemap.xml

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://alpinux.org/</loc>
<lastmod>2026-05-03</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
</urlset>

View file

@ -23,6 +23,7 @@ theme:
- search.suggest - search.suggest
- content.code.copy - content.code.copy
- content.code.select - content.code.select
logo: assets/alpinux-logo.svg
font: font:
text: Roboto text: Roboto
code: Roboto Mono code: Roboto Mono
@ -62,7 +63,6 @@ copyright: "© Alpinux — LUG de Savoie | <a href='https://portail.alpinux.org'
nav: nav:
- Accueil: index.md - Accueil: index.md
- Contribuer: contribuer.md
- Alpinux: - Alpinux:
- alpinux/index.md - alpinux/index.md
- FAQ: alpinux/faq.md - FAQ: alpinux/faq.md
@ -86,7 +86,6 @@ nav:
- guides/tesseract.md - guides/tesseract.md
- guides/ventoy.md - guides/ventoy.md
- Technique: - Technique:
- technique/deploiement-wiki.md
- technique/git.md - technique/git.md
- technique/nextcloud.md - technique/nextcloud.md
- technique/matrix.md - technique/matrix.md

View file

@ -7,51 +7,8 @@
{% endblock %} {% endblock %}
{% block extrahead %} {% block extrahead %}
{{ super() }}
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="https://static.alpinux.org/logo/favicon.ico"> <link rel="icon" type="image/x-icon" href="https://static.alpinux.org/logo/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="https://static.alpinux.org/logo/favicon-32.png"> <link rel="icon" type="image/png" sizes="32x32" href="https://static.alpinux.org/logo/favicon-32.png">
<link rel="icon" type="image/png" sizes="96x96" href="https://static.alpinux.org/logo/favicon-96.png"> <link rel="icon" type="image/png" sizes="96x96" href="https://static.alpinux.org/logo/favicon-96.png">
<link rel="apple-touch-icon" sizes="192x192" href="https://static.alpinux.org/logo/favicon-192.png"> <link rel="apple-touch-icon" sizes="192x192" href="https://static.alpinux.org/logo/favicon-192.png">
<!-- Open Graph -->
<meta property="og:type" content="website">
<meta property="og:site_name" content="{{ config.site_name }}">
<meta property="og:title" content="{% if page and page.title %}{{ page.title }} — {{ config.site_name }}{% else %}{{ config.site_name }}{% endif %}">
<meta property="og:description" content="{% if page and page.meta and page.meta.description %}{{ page.meta.description }}{% else %}{{ config.site_description }}{% endif %}">
<meta property="og:url" content="{% if page %}{{ page.canonical_url }}{% else %}{{ config.site_url }}{% endif %}">
<meta property="og:image" content="https://static.alpinux.org/logo/alpinux-logo-512.png">
<meta property="og:locale" content="fr_FR">
<!-- Twitter Card -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="{% if page and page.title %}{{ page.title }} — {{ config.site_name }}{% else %}{{ config.site_name }}{% endif %}">
<meta name="twitter:description" content="{% if page and page.meta and page.meta.description %}{{ page.meta.description }}{% else %}{{ config.site_description }}{% endif %}">
<meta name="twitter:image" content="https://static.alpinux.org/logo/alpinux-logo-512.png">
<meta name="twitter:site" content="@alpinux">
<!-- Structured data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "{{ config.site_name }}",
"url": "{{ config.site_url }}",
"description": "{{ config.site_description }}",
"publisher": {
"@type": "Organization",
"name": "Alpinux",
"url": "https://alpinux.org",
"logo": {
"@type": "ImageObject",
"url": "https://static.alpinux.org/logo/alpinux-logo-512.png"
},
"sameAs": [
"https://mamot.fr/@alpinux",
"https://gitea.alpinux.org/alpinux.cedrica5l"
]
},
"inLanguage": "fr-FR"
}
</script>
{% endblock %} {% endblock %}

View file

@ -1,3 +1,3 @@
<img src="{{ base_url }}/assets/alpinux-logo.png" <img src="https://static.alpinux.org/logo/alpinux-logo.png"
alt="Alpinux" alt="Alpinux"
class="md-logo__image"> class="md-logo__image">

View file

@ -1,67 +0,0 @@
# Apache vhost pour alpinux.org (page d'accueil)
# À créer via ISPConfig : Sites > Ajouter un site web
# Domaine : alpinux.org + www.alpinux.org | DocumentRoot : /var/www/clients/client1/web1/web
#
# Ce vhost gère également la migration SEO depuis l'ancienne infra (DokuWiki)
# vers la nouvelle (wiki.alpinux.org + alpinux.org)
<VirtualHost *:80>
ServerName alpinux.org
ServerAlias www.alpinux.org
Redirect permanent / https://alpinux.org/
</VirtualHost>
<VirtualHost *:443>
ServerName alpinux.org
ServerAlias www.alpinux.org
DocumentRoot /var/www/clients/client1/web1/web
# ── Redirections www → sans-www ─────────────────────────────────
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.alpinux\.org$ [NC]
RewriteRule ^ https://alpinux.org%{REQUEST_URI} [R=301,L]
# ── Migration SEO : anciennes URLs DokuWiki ──────────────────────
# L'ancien wiki tournait sur DokuWiki avec des URLs de type :
# /doku.php?id=namespace:page
# /wiki/doku.php?id=namespace:page
#
# Les deux-points (:) sont encodés %3A dans les query strings.
# On redirige vers wiki.alpinux.org avec des URLs propres.
# /doku.php?id=start → wiki.alpinux.org/
RewriteCond %{QUERY_STRING} ^id=start$ [NC]
RewriteRule ^/doku\.php$ https://wiki.alpinux.org/ [R=301,L]
# /doku.php?id=alpinux:start → wiki.alpinux.org/alpinux/
RewriteCond %{QUERY_STRING} ^id=alpinux(%3A|:)start$ [NC]
RewriteRule ^/doku\.php$ https://wiki.alpinux.org/alpinux/ [R=301,L]
# /doku.php?id=namespace:page → wiki.alpinux.org/namespace/page/
# Capture générique : transforme les ":" en "/" dans le chemin
RewriteCond %{QUERY_STRING} ^id=([a-z0-9_-]+)(%3A|:)([a-z0-9_-]+)$ [NC]
RewriteRule ^/doku\.php$ https://wiki.alpinux.org/%1/%3/ [R=301,L,NE]
# /doku.php?id=page (namespace racine) → wiki.alpinux.org/page/
RewriteCond %{QUERY_STRING} ^id=([a-z0-9_-]+)$ [NC]
RewriteRule ^/doku\.php$ https://wiki.alpinux.org/%1/ [R=301,L,NE]
# /wiki/* → wiki.alpinux.org/* (si l'ancien wiki était monté en sous-répertoire)
RewriteRule ^/wiki/(.*)$ https://wiki.alpinux.org/$1 [R=301,L]
# ── Fichiers statiques ───────────────────────────────────────────
<Directory /var/www/clients/client1/web1/web>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
DirectoryIndex index.html
</Directory>
# Logs
ErrorLog /var/log/apache2/alpinux.org-error.log
CustomLog /var/log/apache2/alpinux.org-access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/alpinux.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/alpinux.org/privkey.pem
</VirtualHost>

View file

@ -4,13 +4,12 @@ Génère les assets binaires (logo PNG + favicons) depuis la source SVG.
Dépendances : Pillow, chromium Dépendances : Pillow, chromium
Usage : Usage :
python3 scripts/build-assets.py python3 scripts/build-assets.py [--out /chemin/de/sortie]
Sorties : Les fichiers générés sont ensuite uploadés sur static.alpinux.org/logo/
docs/assets/alpinux-logo.png logo 200×200 inclus dans le wiki (MkDocs)
/tmp/alpinux-static-assets/ favicons + logo 512px à uploader sur static.alpinux.org/logo/
""" """
import argparse
import subprocess import subprocess
import tempfile import tempfile
import os import os
@ -20,8 +19,6 @@ from PIL import Image, ImageDraw, ImageFont
REPO = Path(__file__).resolve().parent.parent REPO = Path(__file__).resolve().parent.parent
SVG = REPO / "docs/assets/alpinux-logo.svg" SVG = REPO / "docs/assets/alpinux-logo.svg"
DOCS_OUT = REPO / "docs/assets"
CDN_OUT = Path("/tmp/alpinux-static-assets")
FONT_R = "/usr/share/fonts/truetype/msttcorefonts/arial.ttf" FONT_R = "/usr/share/fonts/truetype/msttcorefonts/arial.ttf"
FONT_B = "/usr/share/fonts/truetype/msttcorefonts/arialbd.ttf" FONT_B = "/usr/share/fonts/truetype/msttcorefonts/arialbd.ttf"
COLOR = (15, 78, 143) # #0f4e8f COLOR = (15, 78, 143) # #0f4e8f
@ -77,22 +74,21 @@ def add_text(canvas: Image.Image) -> Image.Image:
return canvas return canvas
def build_logo_wiki(docs_out: Path): def build_logo(out_dir: Path):
"""Build 200×200 logo PNG → docs/assets/ (servi par MkDocs, non commité).""" """Build 200×200 logo PNG."""
shapes = render_shapes(SVG, 200, 164) shapes = render_shapes(SVG, 200, 164)
canvas = Image.new("RGBA", (200, 200), (255, 255, 255, 255)) canvas = Image.new("RGBA", (200, 200), (255, 255, 255, 255))
canvas.paste(shapes, (0, 0)) canvas.paste(shapes, (0, 0))
canvas = add_text(canvas) canvas = add_text(canvas)
path = docs_out / "alpinux-logo.png" path = out_dir / "alpinux-logo.png"
canvas.convert("RGB").save(path) canvas.convert("RGB").save(path)
print(f" {path} (200×200) → wiki MkDocs") print(f" {path} (200×200)")
# 512px high-res version
def build_logo_cdn(cdn_out: Path):
"""Build 512×512 logo PNG → CDN (static.alpinux.org/logo/)."""
shapes512 = render_shapes(SVG, 512, 421) shapes512 = render_shapes(SVG, 512, 421)
canvas512 = Image.new("RGBA", (512, 512), (255, 255, 255, 255)) canvas512 = Image.new("RGBA", (512, 512), (255, 255, 255, 255))
canvas512.paste(shapes512, (0, 0)) canvas512.paste(shapes512, (0, 0))
# Scale text proportionally
draw = ImageDraw.Draw(canvas512) draw = ImageDraw.Draw(canvas512)
size = 77 size = 77
f_reg = ImageFont.truetype(FONT_R, size) f_reg = ImageFont.truetype(FONT_R, size)
@ -107,13 +103,13 @@ def build_logo_cdn(cdn_out: Path):
bb = f.getbbox(char) bb = f.getbbox(char)
draw.text((x - bb[0], y - bb[1]), char, font=f, fill=COLOR) draw.text((x - bb[0], y - bb[1]), char, font=f, fill=COLOR)
x += w x += w
path512 = cdn_out / "alpinux-logo-512.png" path512 = out_dir / "alpinux-logo-512.png"
canvas512.convert("RGB").save(path512) canvas512.convert("RGB").save(path512)
print(f" {path512} (512×512) → static.alpinux.org/logo/") print(f" {path512} (512×512)")
def build_favicons(cdn_out: Path): def build_favicons(out_dir: Path):
"""Build favicon PNG set + .ico → CDN (static.alpinux.org/logo/).""" """Build favicon PNG set + .ico from the icon portion of the SVG."""
icon_src = render_shapes(SVG, 200, 164).crop((0, 0, 164, 164)) icon_src = render_shapes(SVG, 200, 164).crop((0, 0, 164, 164))
sizes = { sizes = {
@ -128,34 +124,31 @@ def build_favicons(cdn_out: Path):
img = icon_src.resize((sz, sz), Image.LANCZOS) img = icon_src.resize((sz, sz), Image.LANCZOS)
bg = Image.new("RGBA", (sz, sz), (255, 255, 255, 255)) bg = Image.new("RGBA", (sz, sz), (255, 255, 255, 255))
bg.paste(img, (0, 0)) bg.paste(img, (0, 0))
p = cdn_out / name p = out_dir / name
bg.save(p) bg.save(p)
imgs[sz] = bg imgs[sz] = bg
print(f" {p} ({sz}×{sz}) → static.alpinux.org/logo/") print(f" {p} ({sz}×{sz})")
ico = cdn_out / "favicon.ico" ico = out_dir / "favicon.ico"
imgs[16].save(ico, format="ICO", sizes=[(16,16),(32,32),(48,48)], imgs[16].save(ico, format="ICO", sizes=[(16,16),(32,32),(48,48)],
append_images=[imgs[32], imgs[48]]) append_images=[imgs[32], imgs[48]])
print(f" {ico} (multi-size: 16+32+48) → static.alpinux.org/logo/") print(f" {ico} (multi-size: 16+32+48)")
def main(): def main():
DOCS_OUT.mkdir(parents=True, exist_ok=True) parser = argparse.ArgumentParser(description=__doc__)
CDN_OUT.mkdir(parents=True, exist_ok=True) parser.add_argument("--out", default="/tmp/alpinux-static-assets",
help="Répertoire de sortie (défaut: /tmp/alpinux-static-assets)")
args = parser.parse_args()
out_dir = Path(args.out)
out_dir.mkdir(parents=True, exist_ok=True)
print("Génération des assets Alpinux...") print("Génération des assets Alpinux...")
print() build_logo(out_dir)
print("── Logo wiki (docs/assets/) ──") build_favicons(out_dir)
build_logo_wiki(DOCS_OUT) print(f"\nFichiers dans : {out_dir}")
print()
print("── CDN static.alpinux.org/logo/ ──")
build_logo_cdn(CDN_OUT)
build_favicons(CDN_OUT)
print()
print(f"Fichiers CDN dans : {CDN_OUT}")
print("À uploader sur : static.alpinux.org/logo/") print("À uploader sur : static.alpinux.org/logo/")
print()
print("Ensuite : mkdocs build")
if __name__ == "__main__": if __name__ == "__main__":

View file

@ -1,66 +0,0 @@
# Apache vhost pour wiki.alpinux.org
# À créer via ISPConfig : Sites > Ajouter un site web
# Domaine : wiki.alpinux.org | DocumentRoot : /var/www/clients/client1/web2/web/wiki-static
#
# Ce vhost sert le wiki MkDocs (statique) et gère la migration SEO
# depuis l'éventuelle ancienne structure DokuWiki sur ce sous-domaine.
<VirtualHost *:80>
ServerName wiki.alpinux.org
Redirect permanent / https://wiki.alpinux.org/
</VirtualHost>
<VirtualHost *:443>
ServerName wiki.alpinux.org
DocumentRoot /var/www/clients/client1/web2/web/wiki-static
RewriteEngine On
# ── Migration SEO : anciennes URLs DokuWiki sur ce sous-domaine ──
# Si l'ancien DokuWiki était hébergé ici avant la migration MkDocs
# /doku.php?id=start → /
RewriteCond %{QUERY_STRING} ^id=start$ [NC]
RewriteRule ^/doku\.php$ https://wiki.alpinux.org/ [R=301,L]
# /doku.php?id=alpinux:start → /alpinux/
RewriteCond %{QUERY_STRING} ^id=alpinux(%3A|:)start$ [NC]
RewriteRule ^/doku\.php$ https://wiki.alpinux.org/alpinux/ [R=301,L]
# /doku.php?id=namespace:page → /namespace/page/
RewriteCond %{QUERY_STRING} ^id=([a-z0-9_-]+)(%3A|:)([a-z0-9_-]+)$ [NC]
RewriteRule ^/doku\.php$ https://wiki.alpinux.org/%1/%3/ [R=301,L,NE]
# /doku.php?id=page → /page/
RewriteCond %{QUERY_STRING} ^id=([a-z0-9_-]+)$ [NC]
RewriteRule ^/doku\.php$ https://wiki.alpinux.org/%1/ [R=301,L,NE]
# URLs sans slash final → avec slash (cohérence MkDocs)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.+)$ $1/ [R=301,L]
# ── Fichiers statiques MkDocs ────────────────────────────────────
<Directory /var/www/clients/client1/web2/web/wiki-static>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
DirectoryIndex index.html
# Cache long pour les assets versionnés MkDocs
<FilesMatch "\.(css|js|woff2?|png|svg|ico)$">
Header set Cache-Control "public, max-age=31536000, immutable"
</FilesMatch>
# Pas de cache sur le HTML (contenu mis à jour)
<FilesMatch "\.html$">
Header set Cache-Control "public, max-age=3600"
</FilesMatch>
</Directory>
# Logs
ErrorLog /var/log/apache2/wiki.alpinux.org-error.log
CustomLog /var/log/apache2/wiki.alpinux.org-access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/wiki.alpinux.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/wiki.alpinux.org/privkey.pem
</VirtualHost>