secubox-openwrt/package/secubox/luci-app-hexojs/README.fr.md
CyberMind-FR ccfb58124c docs: Add trilingual documentation (French and Chinese translations)
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>
2026-03-20 10:00:18 +01:00

400 lines
10 KiB
Markdown

# Hexo CMS - Plateforme de publication de blogs
[English](README.md) | Francais | [中文](README.zh.md)
Gestion de blog Hexo complete avec support multi-instances, integration Gitea, publication HAProxy et services caches Tor.
## Fonctionnalites
| Fonctionnalite | Description |
|----------------|-------------|
| **Editeur d'articles** | Creer, editer, publier des articles avec markdown |
| **Categories/Tags** | Organiser le contenu hierarchiquement |
| **Bibliotheque media** | Gerer les images et ressources |
| **Config theme** | Editer les parametres du theme Hexo |
| **Deploiement en un clic** | Generer et deployer d'un seul clic |
| **Integration HAProxy** | Publication automatique sur le clearnet avec SSL |
| **Services caches Tor** | Publier sur des adresses .onion |
| **Sync Gitea** | Push/pull depuis les depots Git |
| **Profils de publication** | Presets de l'assistant pour les configurations courantes |
| **Surveillance sante** | Statut du pipeline et diagnostics |
## Assistant de demarrage rapide
### Profils de publication
Choisissez un preset pour configurer votre blog :
| Profil | Icone | HAProxy | Tor | Cas d'utilisation |
|--------|-------|---------|-----|-------------------|
| **Blog** | - | SSL | Non | Blog public avec domaine personnalise |
| **Portfolio** | - | SSL | Non | Vitrine creative |
| **Privacy** | - | Non | Oui | Blog .onion anonyme |
| **Dual** | - | Oui | Oui | Acces clearnet + Tor |
| **Documentation** | - | SSL | Non | Site de docs techniques |
### Appliquer un profil
```bash
# Via LuCI : Services -> Hexo CMS -> Profils -> Appliquer
# Via CLI
ubus call luci.hexojs apply_profile '{
"instance": "default",
"profile": "blog",
"domain": "blog.example.com"
}'
```
## Tableau de bord
```
+------------------------------------------------------+
| Hexo CMS En cours |
+------------------------------------------------------+
| |
| Statistiques du site |
| +-- Articles : 134 |
| +-- Categories : 12 |
| +-- Tags : 45 |
| +-- Medias : 89 fichiers |
| |
| Points d'acces |
| +-- Local : http://192.168.255.1:4000 |
| +-- Clearnet : https://blog.example.com |
| +-- Tor : http://abc123xyz.onion |
| |
| Sante du pipeline : 95/100 |
| +-- Serveur Hexo : En cours |
| +-- HAProxy : Publie |
| +-- Certificat : Valide (45 jours) |
| +-- Gitea : Synchronise |
| |
+------------------------------------------------------+
```
## Gestion du contenu
### Creer un article
1. Aller dans **Services -> Hexo CMS -> Articles**
2. Cliquer sur **+ Nouvel article**
3. Remplir :
- **Titre** : Mon premier article
- **Categorie** : tech/tutoriels
- **Tags** : hexo, blog
- **Contenu** : Votre markdown ici
4. Cliquer sur **Sauvegarder brouillon** ou **Publier**
### Front Matter des articles
```yaml
---
title: Mon premier article
date: 2025-01-28 10:30:00
categories:
- tech
- tutoriels
tags:
- hexo
- blog
---
Votre contenu ici...
```
### Lister les articles via CLI
```bash
ubus call luci.hexojs list_posts '{"instance":"default","limit":10}'
```
## Pipeline de publication
### Flux de publication complet
```
+-----------+ +-----------+ +-----------+ +-----------+
| Editer | -> | Generer | -> | Deployer | -> | En |
| Articles | | HTML | | HAProxy | | ligne |
+-----------+ +-----------+ | Tor | +-----------+
+-----------+
```
### Commandes
```bash
# Generer les fichiers statiques
ubus call luci.hexojs generate '{"instance":"default"}'
# Deployer sur HAProxy (clearnet)
ubus call luci.hexojs publish_to_haproxy '{
"instance": "default",
"domain": "blog.example.com"
}'
# Deployer sur Tor (.onion)
ubus call luci.hexojs publish_to_tor '{"instance":"default"}'
# Pipeline complet (generer + deployer tout)
ubus call luci.hexojs full_publish '{
"instance": "default",
"domain": "blog.example.com",
"tor": true
}'
```
## Integration HAProxy
### Publier sur le clearnet
1. Aller dans **Hexo CMS -> Publication**
2. Entrer le domaine : `blog.example.com`
3. Cocher **Activer SSL**
4. Cliquer sur **Publier sur HAProxy**
### Ce qui se passe
1. Cree le backend HAProxy -> `hexo_default`
2. Cree le serveur HAProxy -> `127.0.0.1:4000`
3. Cree le vhost -> `blog.example.com`
4. Demande le certificat ACME
5. Recharge HAProxy
### Verifier le statut HAProxy
```bash
ubus call luci.hexojs get_haproxy_status '{"instance":"default"}'
# Reponse :
{
"published": true,
"domain": "blog.example.com",
"ssl": true,
"cert_status": "valid",
"cert_days": 45,
"dns_status": "ok"
}
```
## Services caches Tor
### Creer un site .onion
```bash
ubus call luci.hexojs publish_to_tor '{"instance":"default"}'
```
### Obtenir l'adresse Onion
```bash
ubus call luci.hexojs get_tor_status '{"instance":"default"}'
# Reponse :
{
"enabled": true,
"onion_address": "abc123xyz...def.onion",
"virtual_port": 80,
"status": "active"
}
```
### Acceder via Tor Browser
```
http://abc123xyz...def.onion
```
## Integration Gitea
### Configurer la synchronisation Gitea
1. Aller dans **Hexo CMS -> Git**
2. Entrer le depot : `user/myblog`
3. Configurer les identifiants (optionnel)
4. Cliquer sur **Cloner** ou **Pull**
### Webhook de deploiement automatique
Activer le deploiement automatique lors du push vers Gitea :
```bash
ubus call luci.hexojs setup_webhook '{
"instance": "default",
"auto_build": true
}'
```
### Operations Git
```bash
# Cloner le depot
ubus call luci.hexojs git_clone '{
"instance": "default",
"url": "http://192.168.255.1:3000/user/myblog.git"
}'
# Pull dernieres modifications
ubus call luci.hexojs git_pull '{"instance":"default"}'
# Push modifications
ubus call luci.hexojs git_push '{"instance":"default"}'
# Voir le log
ubus call luci.hexojs git_log '{"instance":"default","limit":10}'
```
## Surveillance de sante
### Score de sante de l'instance
```bash
ubus call luci.hexojs get_instance_health '{"instance":"default"}'
# Reponse :
{
"instance": "default",
"score": 95,
"status": "healthy",
"checks": {
"hexo_running": true,
"content_exists": true,
"haproxy_published": true,
"ssl_valid": true,
"dns_resolves": true,
"git_clean": true
},
"issues": []
}
```
### Details du score de sante
| Verification | Points | Description |
|--------------|--------|-------------|
| Hexo en cours | 20 | Processus serveur actif |
| Contenu existe | 15 | Repertoire articles a du contenu |
| HAProxy publie | 20 | Vhost configure |
| SSL valide | 15 | Certificat non expirant |
| DNS resout | 15 | Domaine pointe vers le serveur |
| Git propre | 15 | Pas de modifications non commitees |
## Configuration
### Parametres UCI
```bash
# /etc/config/hexojs
config hexojs 'main'
option enabled '1'
option instances_root '/srv/hexojs/instances'
option content_root '/srv/hexojs/content'
config instance 'default'
option name 'default'
option enabled '1'
option port '4000'
option theme 'landscape'
# HAProxy
option haproxy_enabled '1'
option haproxy_domain 'blog.example.com'
option haproxy_ssl '1'
# Tor
option tor_enabled '1'
option tor_onion 'abc123...onion'
# Gitea
option gitea_repo 'user/myblog'
option gitea_auto_build '1'
```
## Emplacements des fichiers
| Chemin | Description |
|--------|-------------|
| `/etc/config/hexojs` | Configuration UCI |
| `/srv/hexojs/instances/` | Repertoires des instances |
| `/srv/hexojs/content/` | Contenu partage (articles, medias) |
| `/srv/hexojs/content/source/_posts/` | Articles de blog |
| `/srv/hexojs/content/source/images/` | Fichiers medias |
| `/usr/libexec/rpcd/luci.hexojs` | Backend RPCD |
## Methodes RPCD
### Gestion du contenu
| Methode | Description |
|---------|-------------|
| `list_posts` | Lister tous les articles |
| `get_post` | Obtenir le contenu d'un article |
| `create_post` | Creer un nouvel article |
| `update_post` | Mettre a jour le contenu d'un article |
| `delete_post` | Supprimer un article |
| `publish_post` | Deplacer un brouillon vers publie |
| `search_posts` | Rechercher des articles par requete |
### Operations du site
| Methode | Description |
|---------|-------------|
| `generate` | Generer le HTML statique |
| `clean` | Nettoyer les fichiers generes |
| `deploy` | Deployer vers les cibles configurees |
| `preview_start` | Demarrer le serveur de preview |
| `preview_status` | Verifier le serveur de preview |
### Publication
| Methode | Description |
|---------|-------------|
| `publish_to_haproxy` | Publier sur le clearnet |
| `unpublish_from_haproxy` | Retirer de HAProxy |
| `publish_to_tor` | Creer un service cache Tor |
| `unpublish_from_tor` | Retirer le service Tor |
| `full_publish` | Pipeline complet |
### Surveillance
| Methode | Description |
|---------|-------------|
| `get_instance_health` | Score de sante et verifications |
| `get_pipeline_status` | Statut de toutes les instances |
| `get_instance_endpoints` | Toutes les URLs de l'instance |
## Depannage
### Le serveur Hexo ne demarre pas
```bash
# Verifier si le port est utilise
netstat -tln | grep 4000
# Verifier les logs
logread | grep hexo
# Redemarrer manuellement
/etc/init.d/hexojs restart
```
### Les articles ne s'affichent pas
1. Verifier que les articles sont dans `/srv/hexojs/content/source/_posts/`
2. Verifier que le format front matter est correct
3. Executer `hexo clean && hexo generate`
### Erreur HAProxy 503
1. Verifier que Hexo fonctionne sur le port attendu
2. Verifier la configuration du backend HAProxy
3. Tester l'acces local : `curl http://127.0.0.1:4000`
### Echec du push Git
1. Verifier les identifiants : `ubus call luci.hexojs git_get_credentials`
2. Verifier que l'URL distante est correcte
3. Verifier que Gitea est accessible
## Licence
MIT License - Copyright (C) 2025 CyberMind.fr