Unofficial

Bucket & Code Server IDE

Votre NAS garde déjà vos fichiers. Désormais, il compile vos logiciels.

L’atelier des serveurs QNAP.

Bucket & Code Server IDE est l’atelier de développement de votre NAS QNAP : Git avec Forgejo, CI, buckets versionnés, VS Code dans le navigateur et un App Builder qui compile des recettes en QPKG. Installé depuis App Center, comme n’importe quelle autre app.

Ce qu’il fait

sur le NAS que vous avez déjà

Bucket & Code Server IDE installe une pile de développement complète sur le NAS QNAP que vous possédez déjà, avec son propre serveur web, ses propres comptes et ses propres outils, et garde tout dans un seul dossier de données sur votre volume. Écrivez le code dans le navigateur, poussez-le vers Forgejo, laissez le runner du NAS le compiler et publiez-le dans votre propre dépôt App Center. Le panneau qui pilote tout cela fonctionne comme un éditeur de code et parle neuf langues.

01 · Plan de travail

Un panneau qui fonctionne comme votre éditeur

Une barre d’activités, une barre latérale, des onglets, une palette de commandes, un panneau inférieur et une barre d’état. Si vous vivez dans VS Code, vous êtes déjà en terrain connu. Chaque page s’ouvre dans un onglet, Ctrl+Maj+P atteint chaque commande que votre rôle peut lancer, et la barre d’état indique ce que font les modules, l’espace qui reste sur le volume et l’état du certificat.

  • Barre d’activités, arborescences dans la barre latérale, onglets d’aperçu et deux pages côte à côte
  • Tâches, Problèmes et Sortie dans le panneau inférieur (Ctrl+J), avec la progression en direct
  • Thèmes sombre et clair, une mise en page pour téléphone et des raccourcis clavier
  • Anglais, polonais, allemand, français, italien, néerlandais, suédois, japonais et chinois traditionnel, avec le guide de l’utilisateur dans les mêmes neuf langues
  • Les rôles admin, developer et viewer, l’authentification à deux facteurs et les jetons d’API

02 · Nouveau projet

Un nouveau projet en une étape

Choisissez un modèle, donnez-lui un nom et cliquez sur Créer le projet. Une seule tâche crée le dépôt Forgejo, commite le modèle avec son workflow CI, le pousse et dépose une copie dans le dossier que votre éditeur ouvre. Avec la CI activée, le prochain push est compilé sur le NAS.

  • C, C++ avec CMake, Go, Rust, Node, Python et Java
  • Un module du noyau, le pilote USB-série ch341, un paquet QPKG ou une app de l’App Builder
  • Le premier commit est le vôtre, sur main, privé sauf si vous choisissez public
  • S’il manque quelque chose, rien n’est créé et la boîte de dialogue vous dit quoi faire

03 · Git

Git avec Forgejo

Forgejo vous donne des dépôts, des tickets, des pull requests, des versions, des wikis, LFS, des miroirs et des webhooks, hébergés sur vos propres disques. Chaque compte du panneau est un compte Forgejo, il n’y a donc pas de seconde liste d’utilisateurs à synchroniser ; git sur HTTPS accepte le mot de passe du panneau, ou un jeton d’accès dès que l’authentification à deux facteurs est activée.

  • Clonage via HTTPS ou SSH ; la page Git vous donne les deux commandes toutes prêtes
  • La connexion à Forgejo est celle du panneau, code d’authentification à deux facteurs compris
  • Miroirs et imports depuis votre propre réseau, autorisés d’origine
  • Activez Navigation publique pour montrer les dépôts publics aux personnes sans compte

04 · CI

Une CI qui tourne là où vit votre code

Poussez un workflow et le runner Forgejo Actions du NAS le prend en charge. Les tâches tournent sur le NAS lui-même, avec les outils du paquet et vos environnements de build à portée de main.

  • runs-on: bucketvs, ou les étiquettes qnap-x86_64, qnap-aarch64 et self-hosted
  • bvs env run compile dans l’un de vos environnements depuis n’importe quelle tâche
  • Enregistrez des runners Linux externes (x86_64 ou aarch64) depuis la page CI quand vous voulez plus de machines
  • Les tâches tournent en tant qu’admin, pas dans un conteneur, et la page CI le dit : ne lui faites exécuter que des workflows de confiance

05 · Éditeur

VS Code dans le navigateur, avec votre assistant d’IA

Chaque développeur reçoit son propre VS Code dans le navigateur (code-server). Son terminal a git, svn, node, npm, rsync et curl dans le chemin, et une seule commande vous place dans un environnement Linux complet. Installez Claude Code, Gemini CLI ou Codex CLI depuis la page Réglages de l’éditeur, et chaque projet que l’assistant de création produit contient un skill qui apprend à l’assistant d’IA comment un NAS QNAP fonctionne dans le shell.

  • Une instance par compte ; elle s’arrête quand elle est inactive, mais jamais tant qu’un programme tourne encore dans son terminal
  • Des extensions depuis Open VSX
  • La vue Ports atteint le serveur de développement que vous venez de lancer sur le NAS
  • Le terminal est un shell root sur le NAS : le rôle developer est donc pour des personnes à qui vous confieriez le mot de passe admin

06 · SVN & Bucket

Des buckets qui se souviennent de chaque enregistrement

Un bucket est un lecteur réseau où chaque fichier enregistré devient une révision. Ouvrez n’importe quelle version antérieure, comparez-la avec une autre et remettez-la en place comme nouvelle révision : rien n’est perdu. Des dépôts Subversion se trouvent juste à côté des buckets, avec les mêmes comptes.

  • Fonctionne avec le Finder de macOS, rclone, davfs2, Cyberduck, WinSCP et curl
  • Des autorisations par dépôt : lecture et écriture, lecture ou aucune, pour chaque compte
  • Les fichiers ._* et .DS_Store du Finder restent hors de l’historique par défaut
  • Une vue web facultative en lecture seule montre les fichiers, l’historique et les différences aux personnes sans compte

07 · Toolchains

Un vrai Linux sur votre NAS

Décompressez Debian, Ubuntu ou Alpine dans un environnement sur le NAS et travaillez-y comme sur n’importe quelle machine Linux. Dans Debian et Ubuntu, apt install fonctionne, et ce que vous installez reste. Ajoutez les runtimes et les compilateurs dont vous avez besoin depuis un catalogue signé ; chaque téléchargement est vérifié par rapport à son sha256 avant d’être utilisé.

  • Debian 12 et 13, Ubuntu 22.04 et 24.04, Alpine 3.22
  • Python, Go, Node.js, Zig, Rust, CMake, Ninja et Java
  • Toolchains croisées Bootlin pour aarch64, x86-64 et armv7 (sur un NAS x86_64)
  • Le QDK 2.5.0 de QNAP, et bvs qbuild pour compiler un QPKG depuis n’importe quel dossier qui contient un qpkg.cfg
  • Clonez, exportez ou supprimez un environnement ; ouvrez-y un shell depuis le panneau

08 · App Builder

App Builder : des recettes à un QPKG

Choisissez des programmes parmi 523 recettes, choisissez leur mode de liaison et compilez. L’App Builder compile tout dans un seul dossier à l’intérieur d’un environnement, puis vérifie chaque programme avant que le build ne remplace le précédent. Activez l’app et ses programmes tournent sur le NAS, ou exportez-la comme un QPKG à part entière.

  • Bibliothèques, shells, outils et serveurs : bash, zsh, coreutils, curl, git, jq, rsync, tmux, htop, nginx, redis, openssh, PowerDNS et plus encore
  • Chaque recette fixe sa source par sha256 et prouve son résultat par une vérification
  • Quatre modes de liaison ; bundle emporte ses propres bibliothèques et n’a besoin que de la bibliothèque C du NAS
  • Builds croisés pour aarch64 et armv7
  • Un build qui échoue laisse l’app telle qu’elle était

09 · Dépendances

Voir ce dont chaque binaire a besoin

« Library not found » ne devrait pas être une surprise sur le NAS. L’onglet Dépendances lit chaque fichier ELF d’un build sans l’exécuter et montre ce dont chacun a besoin et où le chargeur du NAS le trouve. Une bibliothèque manquante, une version que la bibliothèque ne définit pas ou un RUNPATH qui pointe hors de l’app devient un constat avec son correctif.

  • Des correctifs en un bouton quand il y en a un : ajouter une recette et compiler, changer de mode de liaison, corriger le RUNPATH
  • Un graphe ou une arborescence de chaque fichier, des bibliothèques de l’app et de celles du NAS
  • Un outil de correctif avec un aperçu avant et après
  • bvs ldd et bvs deps vous donnent les mêmes réponses depuis un shell

10 · Noyaux

Un atelier du noyau pour le noyau que vous utilisez

Besoin d’un pilote que QNAP ne fournit pas ? L’atelier du noyau lit ce que le noyau en cours dit de lui-même, prépare une arborescence de noyau correspondante et compile votre module contre elle. Chaque module est vérifié par rapport au noyau en cours avant d’être chargé, et un module qui échoue à la vérification n’est jamais chargé.

  • Le profil : version, compilateur, vermagic et la structure de struct module
  • L’arborescence GPL de QNAP quand QNAP en a publié une, sinon l’arborescence de kernel.org
  • Compilez votre propre module, ou un pilote de l’arborescence du noyau comme le pilote USB-série ch341
  • Chargez un module avec les modules dont il dépend ; une app peut emporter ses modules

11 · Paquets

Votre propre dépôt App Center

Publiez vos QPKG dans le dépôt App Center du paquet, ajoutez son adresse dans App Center sur vos autres NAS, et installez depuis ce dépôt comme depuis n’importe quel autre. Vous décidez quelle version App Center voit.

  • Chaque version reste téléchargeable ; l’une d’elles est listée comme la plus récente
  • Téléversement depuis la page Paquets, depuis un workflow CI ou avec bvs repo publish

12 · Publier

Sur Internet, sans ouvrir de port

La page Publier met le panneau, Forgejo et le dépôt de paquets sur des noms de votre propre domaine, dont le DNS est chez Cloudflare. cloudflared se connecte vers l’extérieur depuis le NAS, donc aucun port du routeur n’est ouvert, et Cloudflare détient les certificats. Chaque requête passe toujours par le contrôle d’accès du paquet lui-même, et seul ce que vous avez rendu public s’ouvre sans compte.

  • Tout est d’abord vérifié chez Cloudflare ; une vérification qui échoue ne change rien
  • Un nom d’hôte principal pour le panneau et Forgejo, et un nom d’hôte des paquets pour App Center sur d’autres NAS
  • Des préréglages de cache facultatifs pour les paquets et les fichiers du panneau
  • Retirer de Cloudflare reprend les enregistrements, les règles de cache et le tunnel qu’il a créés

13 · Sauvegardes

Les sauvegardes et le travail quotidien

Les sauvegardes quotidiennes de Git, SVN, des buckets, des réglages et des réglages VS Code conservent les 7 derniers jours, 4 semaines et 6 mois. Les copies vont dans un dossier sur le NAS, via rsync et SSH, ou partout où rclone arrive, et chaque copie qui quitte le NAS est chiffrée avec age.

  • Vérifier relit une exécution en entier : chaque sha256, svnadmin verify, git fsck
  • Restaurez tout, ou un seul dépôt pendant que les modules continuent de tourner ; rien n’est remplacé avant d’être vérifié
  • Des tâches cron sur le NAS ou dans un environnement, avec fuseaux horaires, délais d’expiration et une notification quand une exécution échoue
  • Journaux, notifications et paquet de diagnostic, le tout depuis le panneau

14 · Exemples

De grands projets inclus

La galerie d’exemples compte 63 exemples prêts à l’emploi que vous appliquez en un clic. Plusieurs d’entre eux sont des produits complets. TurboDNS compile PowerDNS Authoritative Server 5.1.4 à partir de recettes, ajoute un panneau de zones et emballe les deux dans un QPKG avec un workflow CI ; MailServerPro fait de même pour Postfix, Dovecot, Rspamd et Roundcube, et WebHostPro pour nginx, Apache httpd, PHP et les bases de données.

Un serveur de messagerie, compilé depuis les sources. Postfix pour SMTP, Dovecot avec Pigeonhole pour IMAP, POP3, Sieve et ManageSieve, Rspamd avec Valkey contre le spam, ClamAV, et fail2ban contre les tentatives de deviner les mots de passe. Signature DKIM, SPF, DMARC et ARC, greylisting, MTA-STS, et DANE au moyen de son propre résolveur validant. Roundcube pour le webmail, CalDAV et CardDAV pour les agendas et les contacts, et Z-Push pour Exchange ActiveSync. Plusieurs domaines, des boîtes aux lettres avec quotas, des alias, un catch-all, des transferts et des réponses d’absence tiennent dans une seule base de données. Un panneau d’administration ajoute des domaines, des boîtes aux lettres et des clés DKIM, liste les enregistrements DNS dont chaque domaine a besoin, montre la file d’attente et les journaux, et sauvegarde chaque boîte aux lettres. L’App Builder compile ses recettes sur le NAS ; une seule cible make transforme l’app en QPKG.

  • Un panneau de zones en neuf langues où chaque changement est d’abord un essai
  • Instantanés, modèles, vérifications de la propagation et DNSSEC
  • Envois vers Cloudflare et OVH avec un essai et une relecture
  • 18 apps, 9 environnements, 6 workflows CI, 5 tâches cron et 25 projets de l’éditeur dans la galerie

Les grands projets à l’écran

données d’exemple

WebHostPro (un serveur web), TurboDNS (un serveur DNS) et MailServerPro (un serveur de messagerie) sont des projets de l’éditeur de la galerie d’exemples, chacun empaqueté en QPKG avec son propre panneau.

WebHostPro: Sites
WebHostProLa page Sites : chaque site avec son type, son serveur, son TLS et son état, et une marque sur le site dont la configuration du domaine est encore ouverte.
WebHostPro: Assistant de domaine
WebHostProL’assistant de domaine à l’étape Bureau d’enregistrement : les serveurs de noms et les enregistrements glue à saisir là où le domaine a été acheté, chacun avec un bouton de copie, et les redirections du routeur.
WebHostPro: Configuration du domaine
WebHostProLa carte « Terminer la configuration » dans la vue d’ensemble d’un site : les enregistrements envoyés à TurboDNS, les valeurs pour le bureau d’enregistrement, et la vérification en direct qui lit les serveurs de noms de la zone parente, TurboDNS sur ce NAS, trois résolveurs publics et le frontal.
WebHostPro: Onglet PHP
WebHostProL’onglet PHP d’un site PHP : la version et le fuseau horaire, les limites, les erreurs, les sessions, OPcache et le JIT, APCu, les extensions, d’autres lignes de php.ini et les processus PHP, chaque champ avec un « ? » qui dit ce qu’il fait.
WebHostPro: Bases de données
WebHostProLa page Bases de données : une carte par serveur de bases de données, MariaDB et Percona Server, avec le pool de tampons, les connexions, la durée d’une requête lente et d’autres lignes de my.cnf, vérifiées d’après la liste d’options du serveur lui-même ; un changement reste un brouillon, et l’application redémarre le serveur.
TurboDNS: Zones
TurboDNSZones : la liste des zones et le formulaire d’une nouvelle zone avec ses serveurs de noms et son mode de numéro de série.
TurboDNS: Enregistrements d’une zone
TurboDNSLes enregistrements d’une zone : son numéro de série et son état de signature, les jeux d’enregistrements et le formulaire qui en ajoute un.
TurboDNS: Essai
TurboDNSUn nouveau jeu d’enregistrements examiné en essai : la liste montre ce qui sera ajouté, remplacé ou supprimé avant que rien ne change.
MailServerPro: Vue d’ensemble
MailServerProVue d’ensemble : les dix services avec leur état, et les nombres de domaines, de boîtes aux lettres, d’alias et de messages en file d’attente.
MailServerPro: Domaines
MailServerProDomaines : chaque domaine avec son état, ses boîtes aux lettres et son catch-all, et les boutons de ses enregistrements DNS, de son activation et de sa suppression.
MailServerPro: Enregistrements DNS d’un domaine
MailServerProLes enregistrements DNS à publier pour un domaine : MX, SPF, DKIM, DMARC, MTA-STS, TLS-RPT, autoconfig et SRV, chacun avec sa raison.
MailServerPro: Boîtes aux lettres
MailServerProBoîtes aux lettres : adresse, nom, utilisation et quota, état et redirections, avec en dessous le formulaire d’ajout.
MailServerPro: Réglages
MailServerProRéglages : nom d’hôte, certificat, taille des messages et cadence d’envoi, MTA-STS et DANE, seuils antispam, greylisting, ClamAV, fail2ban et sauvegardes.
1 / 13

Les panneaux sont réels, ouverts dans un navigateur sur une machine de build. Leurs données sont inventées : des noms sous example.org et example.test, des adresses des plages de documentation et des adresses locales.

Pour qui

  • Les développeurs qui veulent leur code, leurs builds et leur CI sur du matériel qui leur appartient.
  • Les utilisateurs avancés de QNAP qui compilent leurs propres QPKG, outils en ligne de commande et serveurs pour le NAS.
  • Les petites équipes qui ont besoin de Git privé, de tickets et de pull requests sans abonnement cloud.
  • Les bricoleurs qui ont besoin d’un module du noyau que QNAP ne fournit pas.
  • Toute personne qui veut chaque version d’un fichier sur un lecteur réseau que Finder, rclone et davfs2 savent déjà utiliser.

Configuration requise

  • QTS 6.0 ou QuTS hero 6.0 ou plus récent
  • Un NAS QNAP x86_64 ou ARM 64 bits
  • Un paquet par architecture, installé depuis App Center

Faites de votre NAS un atelier.

Installez Bucket & Code Server IDE, connectez-vous et activez les modules dont vous avez besoin.

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.