Unofficial

Bucket & Code Server IDE

Je NAS bewaart al je bestanden. Nu bouwt hij ook je software.

De werkplaats voor QNAP-servers.

Bucket & Code Server IDE is de ontwikkelwerkplaats voor je QNAP NAS: Git met Forgejo, CI, buckets met versies, VS Code in de browser en een App Builder die recepten tot QPKG’s compileert. Geïnstalleerd vanuit App Center, zoals elke andere app.

Wat het doet

op de NAS die je al hebt

Bucket & Code Server IDE installeert een volledige ontwikkelstack op de QNAP NAS die je al hebt, met een eigen webserver, eigen accounts en eigen tools, en houdt alles bij elkaar in één datamap op je volume. Schrijf de code in de browser, push hem naar Forgejo, laat de runner op de NAS hem bouwen en publiceer hem in je eigen App Center-repository. Het paneel dat dit allemaal aanstuurt, werkt als een code-editor en spreekt negen talen.

01 · Werkbank

Een paneel dat werkt als je editor

Een activiteitenbalk, een zijbalk, tabbladen, een opdrachtenpalet, een onderpaneel en een statusbalk. Wie in VS Code leeft, vindt meteen de weg. Elke pagina opent in een tabblad, Ctrl+Shift+P bereikt elke opdracht die je rol mag uitvoeren, en de statusbalk laat zien wat de modules doen, hoeveel ruimte er nog op het volume is en hoe het certificaat ervoor staat.

  • Activiteitenbalk, bomen in de zijbalk, voorbeeldtabbladen en twee pagina’s naast elkaar
  • Taken, Problemen en Uitvoer in het onderpaneel (Ctrl+J), met de voortgang live
  • Donker en licht thema, een indeling voor de telefoon en sneltoetsen
  • Engels, Pools, Duits, Frans, Italiaans, Nederlands, Zweeds, Japans en Traditioneel Chinees, met de gebruikershandleiding in dezelfde negen talen
  • De rollen admin, developer en viewer, tweefactorauthenticatie en API-tokens

02 · Nieuw project

Een nieuw project in één stap

Kies een sjabloon, geef het een naam en klik op Project aanmaken. Eén taak maakt de Forgejo-repository aan, commit de sjabloon met zijn CI-workflow, pusht die en laat een kopie achter in de map die je editor opent. Staat CI aan, dan wordt de volgende push op de NAS gebouwd.

  • C, C++ met CMake, Go, Rust, Node, Python en Java
  • Een kernelmodule, de USB-seriële driver ch341, een QPKG-pakket of een App Builder-app
  • De eerste commit is van jou, op main, privé tenzij je openbaar kiest
  • Ontbreekt er iets, dan wordt er niets aangemaakt en vertelt het dialoogvenster je wat je moet doen

03 · Git

Git met Forgejo

Forgejo geeft je repository’s, issues, pull requests, releases, wiki’s, LFS, mirrors en webhooks, gehost op je eigen schijven. Elk account van het paneel is een Forgejo-account, dus er is geen tweede gebruikerslijst om gelijk te houden; git via HTTPS neemt het wachtwoord van het paneel aan, of een toegangstoken zodra tweefactorauthenticatie aan staat.

  • Klonen via HTTPS of SSH; de pagina Git geeft je beide opdrachten kant-en-klaar
  • Aanmelden bij Forgejo is aanmelden bij het paneel, tweefactorcode inbegrepen
  • Mirrors en imports vanuit je eigen netwerk, standaard toegestaan
  • Zet Openbaar bladeren aan om openbare repository’s te tonen aan mensen zonder account

04 · CI

CI die draait waar je code woont

Push een workflow en de Forgejo Actions-runner op de NAS pakt hem op. Taken draaien op de NAS zelf, met de tools van het pakket en je build-omgevingen bij de hand.

  • runs-on: bucketvs, of de labels qnap-x86_64, qnap-aarch64 en self-hosted
  • bvs env run bouwt vanuit elke taak binnen een van je omgevingen
  • Registreer externe Linux-runners (x86_64 of aarch64) vanaf de pagina CI als je meer machines wilt
  • Taken draaien als admin, niet in een container, en de pagina CI zegt dat ook: laat alleen workflows draaien die je vertrouwt

05 · Editor

VS Code in de browser, met je AI-assistent

Elke ontwikkelaar krijgt een eigen VS Code in de browser (code-server). De terminal heeft git, svn, node, npm, rsync en curl in het pad, en één opdracht zet je in een volledige Linux-omgeving. Installeer Claude Code, Gemini CLI of Codex CLI vanaf de pagina Editor-instellingen, en elk project dat de wizard maakt, bevat een skill die de AI-assistent leert hoe een QNAP NAS in de shell werkt.

  • Eén instantie per account; die stopt bij inactiviteit, maar nooit zolang er nog een programma in de terminal draait
  • Extensies uit Open VSX
  • De weergave Poorten bereikt de ontwikkelserver die je net op de NAS hebt gestart
  • De terminal is een root-shell op de NAS, dus de rol developer is voor mensen aan wie je het admin-wachtwoord zou toevertrouwen

06 · SVN & Bucket

Buckets die elke opslag onthouden

Een bucket is een netwerkschijf waarop elk opgeslagen bestand een revisie wordt. Open elke eerdere versie, vergelijk die met een andere en zet die terug als nieuwe revisie, zodat er niets verloren gaat. Subversion-repository’s staan direct naast de buckets, met dezelfde accounts.

  • Werkt met macOS Finder, rclone, davfs2, Cyberduck, WinSCP en curl
  • Machtigingen per repository: lezen en schrijven, lezen of geen, voor elk account
  • De bestanden ._* en .DS_Store van Finder blijven standaard buiten de geschiedenis
  • Een optionele webweergave met alleen-lezen toegang toont de bestanden, de geschiedenis en de verschillen aan mensen zonder account

07 · Toolchains

Echte Linux op je NAS

Pak Debian, Ubuntu of Alpine uit in een omgeving op de NAS en werk erin zoals op elke Linux-machine. In Debian en Ubuntu werkt apt install, en wat je installeert blijft. Voeg de runtimes en compilers die je nodig hebt toe uit een ondertekende catalogus; elke download wordt vóór gebruik gecontroleerd aan de hand van zijn sha256.

  • Debian 12 en 13, Ubuntu 22.04 en 24.04, Alpine 3.22
  • Python, Go, Node.js, Zig, Rust, CMake, Ninja en Java
  • Bootlin-cross-toolchains voor aarch64, x86-64 en armv7 (op een x86_64-NAS)
  • QDK 2.5.0 van QNAP, en bvs qbuild om een QPKG te bouwen uit elke map met een qpkg.cfg
  • Een omgeving klonen, exporteren of verwijderen; er een shell in openen vanuit het paneel

08 · App Builder

App Builder: van recepten naar een QPKG

Kies programma’s uit 523 recepten, kies hoe ze gelinkt worden en bouw. De App Builder compileert alles in één map binnen een omgeving en controleert daarna elk programma voordat de build de vorige vervangt. Activeer de app en zijn programma’s draaien op de NAS, of exporteer hem als een eigen QPKG.

  • Bibliotheken, shells, tools en servers: bash, zsh, coreutils, curl, git, jq, rsync, tmux, htop, nginx, redis, openssh, PowerDNS en meer
  • Elk recept legt zijn bron vast met sha256 en bewijst zijn resultaat met een controle
  • Vier linkwijzen; bundel neemt zijn eigen bibliotheken mee en heeft van de NAS alleen de C-bibliotheek nodig
  • Cross-builds voor aarch64 en armv7
  • Een build die mislukt, laat de app zoals hij was

09 · Afhankelijkheden

Zie wat elk binair bestand nodig heeft

‘Library not found’ zou op de NAS geen verrassing moeten zijn. Het tabblad Afhankelijkheden leest elk ELF-bestand van een build zonder het uit te voeren en laat zien wat elk nodig heeft en waar de loader van de NAS het vindt. Een ontbrekende bibliotheek, een versie die de bibliotheek niet definieert of een RUNPATH die buiten de app wijst, wordt een bevinding met de oplossing erbij.

  • Oplossingen met één knop waar er een is: een recept toevoegen en bouwen, de linkwijze wisselen, de RUNPATH patchen
  • Een graaf of een boom van elk bestand, de bibliotheken van de app en die van de NAS
  • Patchgereedschap met een voorbeeld van voor en na
  • bvs ldd en bvs deps geven je dezelfde antwoorden vanuit een shell

10 · Kernels

Een kernelwerkplaats voor de kernel die je draait

Een driver nodig die QNAP niet meelevert? De kernelwerkplaats leest wat de draaiende kernel over zichzelf zegt, bereidt een passende kernelboom voor en bouwt je module daartegen. Elke module wordt vóór het laden gecontroleerd tegen de draaiende kernel, en een module die de controle niet doorstaat, wordt nooit geladen.

  • Het profiel: release, compiler, vermagic en de indeling van struct module
  • De GPL-boom van QNAP waar QNAP er een heeft gepubliceerd, anders de boom van kernel.org
  • Bouw je eigen module, of een driver uit de kernelboom zoals de USB-seriële driver ch341
  • Laad een module met de modules waarvan hij afhangt; een app kan zijn modules meenemen

11 · Pakketten

Je eigen App Center-repository

Publiceer je QPKG’s in de App Center-repository van het pakket, voeg het adres toe in App Center op je andere NAS’en en installeer eruit zoals uit elke andere repository. Jij bepaalt welke versie App Center ziet.

  • Elke versie blijft downloadbaar; één staat vermeld als de nieuwste
  • Uploaden vanaf de pagina Pakketten, vanuit een CI-workflow of met bvs repo publish

12 · Publiceren

Op internet, zonder een poort te openen

De pagina Publiceren zet het paneel, Forgejo en de pakketrepository op namen van je eigen domein, waarvan de DNS bij Cloudflare staat. cloudflared maakt vanaf de NAS een uitgaande verbinding, dus er gaat geen routerpoort open, en Cloudflare beheert de certificaten. Elk verzoek gaat nog steeds door de eigen toegangscontrole van het pakket, en alleen wat je openbaar hebt gemaakt, opent zonder account.

  • Alles wordt eerst bij Cloudflare gecontroleerd; een mislukte controle verandert niets
  • Een hoofdhostnaam voor het paneel en Forgejo, en een hostnaam voor pakketten voor App Center op andere NAS’en
  • Optionele cachevoorinstellingen voor pakketten en de bestanden van het paneel
  • Van Cloudflare verwijderen neemt de records, de cacheregels en de tunnel terug die het heeft aangemaakt

13 · Back-ups

Back-ups en het dagelijkse werk

Dagelijkse back-ups van Git, SVN, buckets, instellingen en VS Code-instellingen bewaren de laatste 7 dagen, 4 weken en 6 maanden. Kopieën gaan naar een map op de NAS, via rsync en SSH, of overal waar rclone bij kan, en elke kopie die de NAS verlaat, wordt versleuteld met age.

  • Controleren leest een run volledig terug: elke sha256, svnadmin verify, git fsck
  • Alles herstellen, of één repository terwijl de modules blijven draaien; niets wordt vervangen voordat het is gecontroleerd
  • Cron-taken op de NAS of binnen een omgeving, met tijdzones, time-outs en een melding als een run mislukt
  • Logboeken, meldingen en een supportbundel, allemaal vanuit het paneel

14 · Voorbeelden

Grote projecten inbegrepen

De voorbeeldengalerij heeft 63 kant-en-klare voorbeelden die je met één klik toepast. Verschillende ervan zijn complete producten. TurboDNS bouwt PowerDNS Authoritative Server 5.1.4 uit recepten, voegt een zonepaneel toe en verpakt beide in een QPKG met een CI-workflow; MailServerPro doet hetzelfde voor Postfix, Dovecot, Rspamd en Roundcube, en WebHostPro voor nginx, Apache httpd, PHP en databases.

Een mailserver, gebouwd uit de broncode. Postfix voor SMTP, Dovecot met Pigeonhole voor IMAP, POP3, Sieve en ManageSieve, Rspamd met Valkey tegen spam, ClamAV, en fail2ban tegen het raden van wachtwoorden. DKIM-ondertekening, SPF, DMARC en ARC, greylisting, MTA-STS, en DANE via een eigen validerende resolver. Roundcube voor webmail, CalDAV en CardDAV voor agenda’s en contacten, en Z-Push voor Exchange ActiveSync. Meerdere domeinen, mailboxen met quota, aliassen, een catch-all, doorsturen en afwezigheidsberichten staan in één database. Een beheerpaneel voegt domeinen, mailboxen en DKIM-sleutels toe, somt de DNS-records op die elk domein nodig heeft, toont de wachtrij en de logboeken, en maakt een back-up van elke mailbox. De App Builder compileert zijn recepten op de NAS; één make-target maakt van de app een QPKG.

  • Een zonepaneel in negen talen waarin elke wijziging eerst een proefrun is
  • Momentopnamen, sjablonen, controles van de verspreiding en DNSSEC
  • Pushes naar Cloudflare en OVH met een proefrun en een teruglezing
  • 18 apps, 9 omgevingen, 6 CI-workflows, 5 cron-taken en 25 Editor-projecten in de galerij

De grote projecten op het scherm

voorbeeldgegevens

WebHostPro (een webserver), TurboDNS (een DNS-server) en MailServerPro (een mailserver) zijn Editor-projecten uit de voorbeeldengalerij, elk als QPKG verpakt met een eigen paneel.

WebHostPro: Sites
WebHostProDe pagina Sites: elke site met zijn soort, server, TLS en status, en een markering bij een site waarvan de domeininstelling nog open is.
WebHostPro: Domeinwizard
WebHostProDe domeinwizard op de stap Registrar: de naamservers en glue-records om in te vullen waar het domein is gekocht, elk met een kopieerknop, en de doorsturingen van de router.
WebHostPro: Domeininstelling
WebHostProDe kaart ‘Rond de instelling af’ op het overzicht van een site: de records die naar TurboDNS zijn gestuurd, de waarden voor de registrar en de live-controle, die de naamservers van de bovenliggende zone, TurboDNS op deze NAS, drie publieke resolvers en de front leest.
WebHostPro: Tabblad PHP
WebHostProHet tabblad PHP van een PHP-site: de versie en tijdzone, de limieten, de fouten, de sessies, OPcache en JIT, APCu, de extensies, meer php.ini-regels en de PHP-processen, elk veld met een ‘?’ dat zegt wat het doet.
WebHostPro: Databases
WebHostProDe pagina Databases: een kaart per databaseserver, MariaDB en Percona Server, met de bufferpool, de verbindingen, de tijd van een trage query en meer my.cnf-regels, gecontroleerd aan de optielijst van de server zelf; een wijziging blijft een concept, en het toepassen herstart de server.
TurboDNS: Zones
TurboDNSZones: de lijst met zones en het formulier voor een nieuwe zone met zijn nameservers en de modus voor het serienummer.
TurboDNS: Zonerecords
TurboDNSDe records van een zone: het serienummer en de ondertekeningsstatus, de recordsets en het formulier waarmee je er een toevoegt.
TurboDNS: Proefrun
TurboDNSEen nieuwe recordset beoordeeld als proefrun: de lijst toont wat wordt toegevoegd, vervangen of verwijderd voordat er iets verandert.
MailServerPro: Overzicht
MailServerProOverzicht: de tien services met hun status en de aantallen domeinen, mailboxen, aliassen en berichten in de wachtrij.
MailServerPro: Domeinen
MailServerProDomeinen: elk domein met status, mailboxen en catch-all, en de knoppen voor zijn DNS-records, aan- en uitzetten en verwijderen.
MailServerPro: DNS-records van een domein
MailServerProDe te publiceren DNS-records van een domein: MX, SPF, DKIM, DMARC, MTA-STS, TLS-RPT, autoconfig en SRV, elk met zijn reden.
MailServerPro: Mailboxen
MailServerProMailboxen: adres, naam, gebruik en quota, status en doorsturen, met eronder het formulier om er een toe te voegen.
MailServerPro: Instellingen
MailServerProInstellingen: hostnaam, certificaat, berichtgrootte en verzendtempo, MTA-STS en DANE, spamdrempels, greylisting, ClamAV, fail2ban en back-ups.
1 / 13

De panelen zijn echt, geopend in een browser op een buildmachine. De gegevens erin zijn verzonnen: namen onder example.org en example.test, adressen uit de documentatiereeksen en lokale adressen.

Voor wie

  • Ontwikkelaars die hun code, hun builds en hun CI op hardware willen die ze zelf bezitten.
  • Ervaren QNAP-gebruikers die hun eigen QPKG’s, commandoregeltools en servers voor de NAS bouwen.
  • Kleine teams die privé-Git, issues en pull requests nodig hebben zonder cloudabonnement.
  • Knutselaars die een kernelmodule nodig hebben die QNAP niet meelevert.
  • Iedereen die elke versie van een bestand wil op een netwerkschijf die Finder, rclone en davfs2 al spreken.

Vereisten

  • QTS 6.0 of QuTS hero 6.0 of nieuwer
  • Een QNAP NAS met x86_64 of ARM 64-bit
  • Eén pakket per architectuur, geïnstalleerd vanuit App Center

Maak van je NAS een werkplaats.

Installeer Bucket & Code Server IDE, meld je aan en zet de modules aan die je nodig hebt.

QNAP is a trademark of QNAP Systems, Inc. Bucket & Code Server IDE is made for QNAP NAS; it is not made or endorsed by QNAP.