Hexo CMS - Plateforme de publication de blogs
English | Francais | 中文
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
# 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
- Aller dans Services -> Hexo CMS -> Articles
- Cliquer sur + Nouvel article
- Remplir :
- Titre : Mon premier article
- Categorie : tech/tutoriels
- Tags : hexo, blog
- Contenu : Votre markdown ici
- Cliquer sur Sauvegarder brouillon ou Publier
Front Matter des articles
---
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
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
# 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
- Aller dans Hexo CMS -> Publication
- Entrer le domaine :
blog.example.com
- Cocher Activer SSL
- Cliquer sur Publier sur HAProxy
Ce qui se passe
- Cree le backend HAProxy ->
hexo_default
- Cree le serveur HAProxy ->
127.0.0.1:4000
- Cree le vhost ->
blog.example.com
- Demande le certificat ACME
- Recharge HAProxy
Verifier le statut HAProxy
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
ubus call luci.hexojs publish_to_tor '{"instance":"default"}'
Obtenir l'adresse Onion
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
- Aller dans Hexo CMS -> Git
- Entrer le depot :
user/myblog
- Configurer les identifiants (optionnel)
- Cliquer sur Cloner ou Pull
Webhook de deploiement automatique
Activer le deploiement automatique lors du push vers Gitea :
ubus call luci.hexojs setup_webhook '{
"instance": "default",
"auto_build": true
}'
Operations Git
# 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
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
# /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
# 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
- Verifier que les articles sont dans
/srv/hexojs/content/source/_posts/
- Verifier que le format front matter est correct
- Executer
hexo clean && hexo generate
Erreur HAProxy 503
- Verifier que Hexo fonctionne sur le port attendu
- Verifier la configuration du backend HAProxy
- Tester l'acces local :
curl http://127.0.0.1:4000
Echec du push Git
- Verifier les identifiants :
ubus call luci.hexojs git_get_credentials
- Verifier que l'URL distante est correcte
- Verifier que Gitea est accessible
Licence
MIT License - Copyright (C) 2025 CyberMind.fr