Un site web depuis Git : construire à chaque push et publier sur le serveur web du NAS
Bucket & Code Server IDE conserve un site web statique dans un dépôt Git sur votre NAS. Les pages se trouvent dans src/ ; un Makefile les copie dans public/, et chaque push lance une vérification des liens sur le runner du NAS. Un bouton copie public/ vers un serveur web, par exemple celui de QTS sur le même NAS, puis lit la page publiée pour vérifier sa présence.
- Cibleun dossier et son adresse
- ProjetNouveau projet, Site web statique
- Pushmake test à chaque push
- Publicationpublic/ vers la cible
Les captures proviennent du panneau de Bucket & Code Server IDE, avec les champs remplis comme dans ce tutoriel. Le NAS est à l’adresse 192.168.1.20 et le compte s’appelle ola.
01Une cible web
Une cible web est le lieu de publication : un dossier de ce NAS servi par un serveur web, ou une destination rclone telle que votre propre serveur via SFTP, FTP, WebDAV ou S3. Le serveur web de QTS (Control Panel → Applications → Web Server) sert le partage Web à l’adresse http://<NAS address>/. Un dossier dans ce partage est donc la cible la plus simple.
- Sur la page Publier (réservée à l’administrateur, sous Administration), cliquez sur Ajouter une destination dans la carte Cibles web.
- Choisissez Un dossier de ce NAS, renseignez Nom et saisissez sous Dossier un dossier distinct dans un partage, par exemple
/share/Web/mysite. Il doit être vide ou nouveau, ne doit pas désigner tout le partage et doit rester hors du dossier de données. - Saisissez sous Adresse publique l’adresse qui sert ce dossier, ici
http://192.168.1.20/mysite/. Elle doit commencer parhttp://ouhttps://, sans identifiant, mot de passe, paramètres de requête ni fragment. Cliquez sur Ajouter la cible.
- Sélectionnez la cible dans la liste et cliquez sur Tester. L’application copie un petit fichier dans le dossier, le relit depuis l’adresse publique, puis le supprime.

Une cible rclone indique un nom distant défini dans le fichier rclone.conf des sauvegardes, un chemin sur cette destination et l’adresse publique qui sert ce chemin.
02Le projet du site
Ouvrez Nouveau projet depuis la page Git ou la palette de commandes. Cette étape exige le rôle developer ; la publication décrite plus loin exige un compte administrateur.
- Modèle : sous Sites web, choisissez Site web statique.

- Nom et visibilité : le nom, par exemple
mysite, désigne le dépôt et le dossierprojects/mysite. Laissez Privé, sauf si tous les comptes doivent pouvoir le lire.
- Compiler : laissez Compiler juste après la création activé.
- Publier : activez Publier sur mon serveur web et choisissez la cible. Ajouter une destination fonctionne ici comme sur la page Publier.

- Passez à Vérification, puis cliquez sur Créer le projet. La page suit les étapes : dépôt et premier commit, première compilation, puis publication.

Le site répond à l’adresse publique de la cible :
03Modifier, pousser, publier
- Modifiez les pages dans
src/avec l’éditeur (le projet est dans le dossierprojects/), créez un commit et poussez-le.makecopiesrc/danspublic/;make testvérifie que chaque lien localhref=et chaque sourcesrc=des pages mène à un fichier depublic/;make cleansupprimepublic/. - Chaque push lance le workflow du projet sur le runner du NAS tant que le module CI est activé :
make tests’exécute dans l’environnement de compilation Ubuntu 24.04. Un lien erroné fait échouer l’exécution.
- La page du projet (Projets ou barre latérale de l’Éditeur) permet de compiler et publier manuellement : Compiler lance
make, Recompiler lancemake cleanpuismake, et Publier sur My website (pour l’administrateur) envoiepublic/vers la cible. Un push seul ne déclenche jamais la publication.
04Ce que fait la publication
- Après la copie, le dossier cible contient le site et rien d’autre : tout fichier supprimé du site y est effacé. bvsd marque le dossier avec
.bvs-web-targetlors de sa première écriture (le test le fait aussi). Si un dossier contient d’autres fichiers sans cette marque, la publication est refusée : elle ne vide donc pas un dossier qui n’appartient pas au site. - Après la copie, l’application lit
index.htmlà l’adresse publique et le compare octet par octet. Si cette adresse ne sert pas le contenu copié, la tâche échoue avecweb_check:et les deux valeurs : soit le serveur web sert un autre dossier, soit l’adresse est incorrecte. - Un projet qui crée un QPKG publie de la même manière le plus récent fichier
.qpkget son fichier.sha256, avec vérification de la somme sha256.