Een website uit Git: bouwen bij elke push en publiceren op de webserver van je NAS
Bucket & Code Server IDE bewaart een statische website in een Git-repository op je NAS. De pagina’s staan in src/; een Makefile kopieert ze naar public/ en elke push start een linkcontrole op de runner van de NAS. Met één knop kopieer je public/ naar een webserver, zoals die van QTS op dezelfde NAS, waarna de gepubliceerde pagina wordt teruggelezen om het resultaat te controleren.
- Doeleen map en het adres ervan
- ProjectNieuw project, Statische website
- Pushmake test bij elke push
- Publicerenpublic/ naar het doel
De afbeeldingen komen uit het paneel van Bucket & Code Server IDE. De velden zijn ingevuld zoals deze handleiding beschrijft. De NAS heeft adres 192.168.1.20 en het account heet ola.
01Een webdoel
Een webdoel is de plek waar een website naartoe gaat: een map op deze NAS die door een webserver wordt aangeboden, of een rclone-remote zoals je eigen server via SFTP, FTP, WebDAV of S3. De webserver van QTS (Control Panel → Applications → Web Server) biedt de gedeelde map Web aan op http://<NAS address>/. Een map daarin is daarom het eenvoudigste doel.
- Klik op de pagina Publiceren (voor beheerders, onder Beheer) in de kaart Webdoelen op Een doel toevoegen.
- Kies Een map van deze NAS, vul bij Naam een naam in en geef bij Map een eigen map binnen een gedeelde map op, bijvoorbeeld
/share/Web/mysite. De map is leeg of nieuw, is nooit een volledige gedeelde map en staat buiten de datamap. - Vul bij Openbaar adres het adres in waarop de map wordt aangeboden, hier
http://192.168.1.20/mysite/. Het moet beginnen methttp://ofhttps://en mag geen gebruikersnaam, wachtwoord, query of fragment bevatten. Klik op Doel toevoegen.
- Kies het doel in de lijst en klik op Testen. De toepassing kopieert een klein bestand naar de map, leest het terug via het openbare adres en verwijdert het weer.

Een rclone-doel noemt een remote uit de rclone.conf van de back-ups, een pad op die remote en het openbare adres waaronder dat pad wordt aangeboden.
02Het websiteproject
Open Nieuw project vanaf de Git-pagina of via het opdrachtenpalet. Hiervoor is de rol developer nodig; voor de publicatiestap verderop zijn beheerdersrechten vereist.
- Sjabloon: kies onder Websites voor Statische website.

- Naam en zichtbaarheid: de naam, bijvoorbeeld
mysite, bepaalt de naam van de repository en de mapprojects/mysite. Laat Privé staan, tenzij elk account het project mag lezen.
- Bouwen: laat Direct na het aanmaken bouwen ingeschakeld.
- Publiceren: schakel Publiceren op mijn webserver in en kies het doel. Een doel toevoegen werkt hier hetzelfde als op de pagina Publiceren.

- Ga naar Controle en klik op Project aanmaken. De pagina toont de stappen: repository en eerste commit, eerste build en publicatie.

De website is bereikbaar op het openbare adres van het doel:
03Bewerken, pushen, publiceren
- Bewerk de pagina’s in
src/met de editor (het project staat in de mapprojects/), maak een commit en push deze.makekopieertsrc/naarpublic/;make testcontroleert of elke lokalehref=ensrc=in de pagina’s naar een bestand inpublic/verwijst;make cleanverwijdertpublic/. - Elke push start de workflow van het project op de runner van de NAS zolang de CI-module aanstaat:
make testdraait in de Ubuntu 24.04-bouwomgeving. Een kapotte link laat de run mislukken.
- Op de projectpagina (Projecten of in de zijbalk van de editor) kun je handmatig bouwen en publiceren: Bouwen start
make, Opnieuw bouwen startmake cleanen daarnamake, en Publiceren op My website stuurt als beheerderpublic/naar het doel. Publicatie start nooit vanzelf na een push.
04Wat publiceren doet
- Na het kopiëren bevat de doelmap de website en verder niets: bestanden die niet meer bij de site horen, worden verwijderd. bvsd markeert de map bij de eerste schrijfactie met
.bvs-web-target(de test doet dat ook). Bevat een map andere bestanden maar niet deze markering, dan wordt ze geweigerd. Zo maakt een publicatie geen map leeg die niet bij de site hoort. - Na het kopiëren leest de toepassing
index.htmlvia het openbare adres terug en vergelijkt het bestand byte voor byte. Als het adres niet de gekopieerde inhoud aanbiedt, mislukt de taak metweb_check:en beide waarden: de webserver biedt een andere map aan of het adres is onjuist. - Een project dat een QPKG maakt, publiceert op dezelfde manier het nieuwste
.qpkg-bestand en het bijbehorende.sha256-bestand, gecontroleerd met sha256.