Add complete French (fr) and Chinese (zh) translations for all documentation: - Root files: README, CHANGELOG, SECURITY, BETA-RELEASE - docs/: All 16 core documentation files - DOCS/: All 19 deep-dive documents including embedded/ and archive/ - package/secubox/: All 123+ package READMEs - Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/ Total: 346 translation files created Each file includes language switcher links for easy navigation between English, French, and Chinese versions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
262 lines
7.1 KiB
Markdown
262 lines
7.1 KiB
Markdown
# MetaBlogizer - Editeur de sites statiques
|
|
|
|
[English](README.md) | Francais | [中文](README.zh.md)
|
|
|
|
Hebergement de sites web statiques en un clic avec vhosts HAProxy automatiques, certificats SSL et synchronisation Gitea.
|
|
|
|
## Fonctionnalites
|
|
|
|
| Fonctionnalite | Description |
|
|
|----------------|-------------|
|
|
| **Auto Vhost** | Cree le vhost HAProxy + backend automatiquement |
|
|
| **ACME SSL** | Certificats Let's Encrypt automatiques |
|
|
| **Sync Gitea** | Pull depuis les depots Gitea |
|
|
| **Upload fichiers** | Glisser-deposer des fichiers |
|
|
| **Statut sante** | Surveillance DNS, certificat et publication |
|
|
| **QR Codes** | Partager des sites avec des QR codes |
|
|
|
|
## Demarrage rapide
|
|
|
|
### Creer un site via LuCI
|
|
|
|
1. Aller dans **Services -> MetaBlogizer**
|
|
2. Cliquer sur **+ Nouveau site**
|
|
3. Remplir :
|
|
- **Nom du site** : `myblog`
|
|
- **Domaine** : `blog.example.com`
|
|
- **Depot Gitea** : `user/repo` (optionnel)
|
|
4. Cliquer sur **Creer**
|
|
|
|
### Ce qui se passe automatiquement
|
|
|
|
```
|
|
+-----------------------------------------------------+
|
|
| Creer le site "myblog" @ blog.example.com |
|
|
+-----------------------------------------------------+
|
|
| 1. Creer /srv/metablogizer/sites/myblog/ |
|
|
| 2. Creer le backend HAProxy (metablog_myblog) |
|
|
| 3. Creer le vhost HAProxy (blog.example.com) |
|
|
| 4. Demander le certificat ACME |
|
|
| 5. Generer index.html par defaut |
|
|
| 6. Site en ligne a https://blog.example.com |
|
|
+-----------------------------------------------------+
|
|
```
|
|
|
|
## Tableau de bord
|
|
|
|
### Panneau de statut d'hebergement Web
|
|
|
|
Le tableau de bord montre la sante en temps reel pour tous les sites :
|
|
|
|
| Site | Domaine | DNS | IP resolue | Certificat | Statut |
|
|
|------|---------|-----|------------|------------|--------|
|
|
| myblog | blog.example.com | ok | 185.220.x.x | 45j | publie |
|
|
| docs | docs.example.com | echec | - | manquant | en attente |
|
|
|
|
### Indicateurs de statut
|
|
|
|
| Icone | Statut DNS | Signification |
|
|
|-------|------------|---------------|
|
|
| ok | DNS resout vers votre IP publique |
|
|
| prive | DNS pointe vers une IP privee (192.168.x.x) |
|
|
| discordance | DNS pointe vers une IP publique differente |
|
|
| echec | Echec de la resolution DNS |
|
|
|
|
| Icone | Statut certificat | Signification |
|
|
|-------|-------------------|---------------|
|
|
| ok | Certificat valide (30+ jours) |
|
|
| avertissement | Certificat expirant (7-30 jours) |
|
|
| critique | Certificat critique (<7 jours) |
|
|
| expire | Certificat expire |
|
|
| manquant | Pas de certificat |
|
|
|
|
| Icone | Statut publication | Signification |
|
|
|-------|---------------------|---------------|
|
|
| publie | Site active avec contenu |
|
|
| en attente | Site active, pas encore de contenu |
|
|
| brouillon | Site desactive |
|
|
|
|
## Gestion des fichiers
|
|
|
|
### Uploader des fichiers
|
|
|
|
1. Cliquer sur **Upload** sur une carte de site
|
|
2. Glisser-deposer des fichiers ou cliquer pour parcourir
|
|
3. Cocher "Definir le premier HTML comme page d'accueil" pour utiliser comme index.html
|
|
4. Cliquer sur **Upload**
|
|
|
|
### Gerer les fichiers
|
|
|
|
1. Cliquer sur **Fichiers** sur une carte de site
|
|
2. Voir tous les fichiers uploades
|
|
3. Definir n'importe quel fichier HTML comme page d'accueil
|
|
4. Supprimer des fichiers
|
|
|
|
## Synchronisation Gitea
|
|
|
|
### Configuration
|
|
|
|
1. Creer/editer un site
|
|
2. Entrer le depot Gitea : `username/repo`
|
|
3. Cliquer sur **Sync** pour pull le dernier contenu
|
|
|
|
### Auto-Sync
|
|
|
|
Le site se synchronise depuis Gitea sur :
|
|
- Clic du bouton sync manuel
|
|
- Push webhook (si configure)
|
|
|
|
```bash
|
|
# Sync manuelle via CLI
|
|
ubus call luci.metablogizer sync_site '{"id":"site_myblog"}'
|
|
```
|
|
|
|
## Partage et QR
|
|
|
|
Cliquer sur **Partager** sur n'importe quel site pour obtenir :
|
|
- Copier l'URL dans le presse-papiers
|
|
- QR code pour acces mobile
|
|
- Partage Twitter
|
|
- Partage LinkedIn
|
|
- Partage Facebook
|
|
- Partage Telegram
|
|
- Partage WhatsApp
|
|
- Partage Email
|
|
|
|
## Configuration
|
|
|
|
### Parametres UCI
|
|
|
|
```bash
|
|
# /etc/config/metablogizer
|
|
|
|
config metablogizer 'main'
|
|
option enabled '1'
|
|
option runtime 'auto' # auto | uhttpd | nginx
|
|
option sites_root '/srv/metablogizer/sites'
|
|
option nginx_container 'nginx'
|
|
option gitea_url 'http://192.168.255.1:3000'
|
|
|
|
config site 'site_myblog'
|
|
option name 'myblog'
|
|
option domain 'blog.example.com'
|
|
option gitea_repo 'user/myblog'
|
|
option ssl '1'
|
|
option enabled '1'
|
|
option description 'Mon blog personnel'
|
|
option port '8901'
|
|
option runtime 'uhttpd'
|
|
```
|
|
|
|
### Modes d'execution
|
|
|
|
| Mode | Description | Cas d'utilisation |
|
|
|------|-------------|-------------------|
|
|
| **uhttpd** | Serveur web integre d'OpenWrt | Par defaut, leger |
|
|
| **nginx** | Nginx dans conteneur LXC | Fonctionnalites avancees |
|
|
| **auto** | Detection automatique du runtime disponible | Recommande |
|
|
|
|
## API RPCD
|
|
|
|
### Gestion des sites
|
|
|
|
```bash
|
|
# Lister tous les sites
|
|
ubus call luci.metablogizer list_sites
|
|
|
|
# Creer un site
|
|
ubus call luci.metablogizer create_site '{
|
|
"name": "myblog",
|
|
"domain": "blog.example.com",
|
|
"gitea_repo": "user/myblog",
|
|
"ssl": "1",
|
|
"description": "Mon blog"
|
|
}'
|
|
|
|
# Sync depuis Gitea
|
|
ubus call luci.metablogizer sync_site '{"id":"site_myblog"}'
|
|
|
|
# Supprimer un site
|
|
ubus call luci.metablogizer delete_site '{"id":"site_myblog"}'
|
|
```
|
|
|
|
### Surveillance de sante
|
|
|
|
```bash
|
|
# Obtenir le statut d'hebergement pour tous les sites
|
|
ubus call luci.metablogizer get_hosting_status
|
|
|
|
# Reponse :
|
|
{
|
|
"success": true,
|
|
"public_ip": "185.220.101.12",
|
|
"haproxy_status": "running",
|
|
"sites": [{
|
|
"id": "site_myblog",
|
|
"name": "myblog",
|
|
"domain": "blog.example.com",
|
|
"dns_status": "ok",
|
|
"dns_ip": "185.220.101.12",
|
|
"cert_status": "ok",
|
|
"cert_days": 45,
|
|
"publish_status": "published"
|
|
}]
|
|
}
|
|
|
|
# Verifier la sante d'un site
|
|
ubus call luci.metablogizer check_site_health '{"id":"site_myblog"}'
|
|
```
|
|
|
|
### Operations sur les fichiers
|
|
|
|
```bash
|
|
# Lister les fichiers d'un site
|
|
ubus call luci.metablogizer list_files '{"id":"site_myblog"}'
|
|
|
|
# Uploader un fichier (contenu base64)
|
|
ubus call luci.metablogizer upload_file '{
|
|
"id": "site_myblog",
|
|
"filename": "style.css",
|
|
"content": "Ym9keSB7IGJhY2tncm91bmQ6ICNmZmY7IH0="
|
|
}'
|
|
```
|
|
|
|
## Emplacements des fichiers
|
|
|
|
| Chemin | Description |
|
|
|--------|-------------|
|
|
| `/etc/config/metablogizer` | Configuration UCI |
|
|
| `/srv/metablogizer/sites/` | Repertoires de contenu des sites |
|
|
| `/srv/metablogizer/sites/<nom>/index.html` | Page d'accueil du site |
|
|
| `/usr/libexec/rpcd/luci.metablogizer` | Backend RPCD |
|
|
|
|
## Depannage
|
|
|
|
### Le site affiche 503
|
|
|
|
1. Verifier que HAProxy fonctionne : `lxc-info -n haproxy`
|
|
2. Verifier que le port du backend ecoute
|
|
3. Verifier l'instance uhttpd : `uci show uhttpd | grep metablog`
|
|
|
|
### DNS ne resout pas
|
|
|
|
1. Verifier que l'enregistrement A pointe vers votre IP publique
|
|
2. Verifier avec : `nslookup blog.example.com`
|
|
3. Attendre la propagation DNS (jusqu'a 48h)
|
|
|
|
### Certificat manquant
|
|
|
|
1. S'assurer que le DNS resout correctement d'abord
|
|
2. S'assurer que les ports 80/443 sont accessibles depuis Internet
|
|
3. Verifier les logs ACME : `logread | grep acme`
|
|
|
|
### Echec de la sync Gitea
|
|
|
|
1. Verifier l'URL Gitea : `uci get metablogizer.main.gitea_url`
|
|
2. Verifier que le depot existe et est public
|
|
3. Tester manuellement : `git clone http://192.168.255.1:3000/user/repo.git`
|
|
|
|
## Licence
|
|
|
|
MIT License - Copyright (C) 2025 CyberMind.fr
|