Ce que fait Zelie
Des applications, les bases de données qu'elles utilisent et des serveurs de jeu sur un seul serveur Linux, et ce qui les fait tourner. Chaque partie en bref ; la documentation donne tous les détails.


Applications
Une application vient de GitHub, d'une image de conteneur ou de vos propres fichiers pour Node.js, Python, Bun, Deno ou Java.
- Connecter GitHub crée une GitHub App dans votre propre compte, avec accès uniquement aux dépôts que vous choisissez
- Des variables, simples ou secrètes ; les builds les reçoivent sans les inscrire dans l'image
- Des volumes qui survivent aux déploiements, chacun avec une limite de taille que vous pouvez relever
- Des limites de mémoire et de CPU, des journaux en direct et des métriques conservées une journée


Builds et déploiements
Un dépôt qui contient un Dockerfile est compilé avec celui-ci ; sinon, Railpack détermine le build. Les tests d'un projet Node tournent à chaque nouveau build, sans réseau, et un test qui échoue garde l'ancienne version.
- Avec un domaine, la nouvelle version démarre à côté de l'ancienne et reçoit le trafic après son contrôle de santé
- Sans domaine, ou avec des volumes, l'ancienne s'arrête d'abord pour que deux copies ne tournent jamais en même temps
- Les cinq dernières versions gardent leur image : un retour arrière prend une seconde ou deux
- Après cinq plantages en dix minutes, une application reste arrêtée, et le panel dit pourquoi


Serveurs de jeu
Les serveurs de jeu tournent à partir d'eggs Pterodactyl et Pelican : Minecraft, Rust, Valheim, Palworld, Counter-Strike 2 et d'autres de la liste, ou n'importe quel autre egg par son lien.
- Une console en direct avec couleurs, les 500 dernières lignes, une ligne de commande avec historique, des filtres et des commandes rapides
- Les fichiers dans le navigateur avec un éditeur, et ces fichiers aussi par SFTP
- Des ports tirés d'une plage définie une fois ; les joueurs se connectent directement au serveur
- Pas de port public pour un serveur derrière un proxy ; les serveurs d'un groupe réseau se joignent par leur nom
- Tâches planifiées, sauvegardes, clones, et mises à jour Steam quand personne ne joue
- Quand un serveur plante, Zelie lit ses dernières lignes et dit pourquoi


Joueurs
Pour Rust et Minecraft, et sous forme de simple liste pour certains autres jeux Steam.
- Qui est en ligne, avec le ping et le temps de connexion
- Arrivées et départs conservés 30 jours, le chat 7 jours, avec recherche
- Expulser et bannir avec un motif ; un bannissement peut prendre fin tout seul
- Des notes sur les joueurs et un journal de ce qu'ont fait les admins
- Liste blanche et opérateurs pour Minecraft, owners et modérateurs pour Rust, et bannissements par nom, SteamID ou IP, que le serveur tourne ou soit arrêté
- Pour Rust : groupes, permissions et plugins Oxide et Carbon, et des outils RCON comme les messages, la mise en sourdine et la téléportation
- Des slots Rust qui suivent le nombre de joueurs en ligne et en file d'attente, si vous l'activez


Réseaux privés
Chaque application et chaque serveur de jeu a son propre réseau. Un administrateur peut en réunir quelques-uns dans un groupe réseau : les membres se joignent par leur nom sur tous les ports, TCP et UDP, et tout le reste reste fermé.
- Entrer dans un groupe ou en sortir s'applique tout de suite ; rien ne redémarre
- Un serveur de jeu peut être créé sans port public : seul son groupe le joint alors
- L'accès à une base de données de l'hôte reste réglé par application ; un groupe ne l'ouvre pas aux autres
- Un proxy Velocity règle à chaque démarrage les serveurs Paper et Purpur placés derrière lui : redirection moderne, liste des serveurs et un secret commun
Pour les mettre en place : Network groups et Minecraft network.
Bases de données
PostgreSQL 18 et 17, MariaDB 11.8 et 10.11 et Redis 8, chacun dans son propre conteneur avec son propre volume. Aucun n'a de port public.
- Liez-en une à une application ou à un serveur de jeu et il reçoit
DATABASE_URLouREDIS_URL - Les versions correctives sont sauvegardées, puis appliquées ; une version majeure passe sur un nouveau volume, et l'ancien reste si quoi que ce soit échoue
- Un onglet Data en lecture seule avec tables, filtres, recherche et export CSV
- Les outils de bureau comme TablePlus se connectent par un tunnel SSH


Sauvegardes
Les bases de données sont sauvegardées chaque nuit à 3 h 00 et conservées sept jours, sauf si vous changez ce réglage. Les applications et les serveurs de jeu peuvent aussi être sauvegardés selon un calendrier.
- Compressées et chiffrées sur le serveur, avec un fichier de récupération qui permet à un autre serveur de les ouvrir
- Des copies dans n'importe quel stockage compatible S3, conservées 30 jours par défaut
- Une restauration sauvegarde d'abord ce qui est en place, et le remet si la restauration échoue


Domaines et HTTPS
Donnez un domaine à une application et le proxy l'achemine. Avec une installation sur domaine, les certificats viennent de Let's Encrypt ; derrière un Cloudflare Tunnel, Cloudflare gère HTTPS. Le tunnel a tourné sur un vrai serveur ; Let's Encrypt, pour l'instant, seulement face à un substitut de test.
Mises à jour
Zelie se met à jour en un clic, et les applications, bases de données et serveurs de jeu continuent de tourner pendant ce temps. Si vous le souhaitez, une passe chaque nuit à 04:30 fait le reste, et attend tant qu'une sauvegarde, un build ou un déploiement est en cours.
- La version corrective de Zelie
- Les correctifs de sécurité de Node, appliqués tout de suite et recompilés depuis le même commit
- Les nouvelles builds des tags d'images et de bases de données qui portent une version, après une sauvegarde
- Les correctifs des paquets vulnérables dans les projets npm, pnpm et Yarn 1, testés sur une branche puis fusionnés, ou ouverts en pull request
- Les versions majeures attendent une approbation ; une mise à jour automatique doit tenir 60 secondes, sinon l'ancienne revient


Fermé par défaut
- Le proxy, le panel et le serveur SFTP tournent chacun sous leur propre utilisateur sans privilèges
- Le cœur tourne en root mais n'a aucun port réseau : il ne répond que sur un socket Unix
- Les conteneurs utilisent des espaces de noms utilisateur : root dans un conteneur est un utilisateur sans privilèges sur l'hôte
- Les bases de données n'ont jamais de port public
- Les secrets sont scellés dès leur enregistrement, et le panel ne peut pas les relire
Ce qu'un serveur envoie à Caria Core, et ce qu'il n'envoie jamais : Licence et confidentialité.
Sous-utilisateurs
Invitez quelqu'un avec un lien et choisissez ce qu'il peut faire sur chaque service. Il se connecte avec son propre mot de passe et une seconde étape, obligatoire pour chaque compte.
- Des droits un par un, comme la console, le démarrage et l'arrêt, les fichiers, les sauvegardes et les déploiements, ou à partir des modèles lecteur, modérateur et administrateur
- Personne ne peut donner plus qu'il ne détient, et un service qui n'a pas été confié à quelqu'un n'apparaît même pas pour lui
- La licence, les mises à jour, les ports et les clés restent aux propriétaires
- Chaque modification d'un service figure dans le journal d'activité, avec son auteur
- Désactiver un compte le déconnecte partout, clés de console et SFTP comprises
Interface
Cinq palettes, une couleur d'accent, la densité et la taille du texte, enregistrés dans le compte pour que chaque appareil ait le même rendu. Le panel fonctionne sur téléphone. Il n'existe pour l'instant qu'en anglais. Les services épinglés restent en haut de l'accueil et du menu latéral, et Ctrl+K (Cmd+K sur Mac) mène à n'importe quel service, onglet ou réglage.
Pas encore
- Plusieurs serveurs gérés depuis un seul panel
Installer Zelie
Zelie est en début de développement, et Free est ouvert à tous : créez un compte et installez-le sur votre propre serveur. Pro et Business suivront : Pro lui aussi pour votre propre serveur, Business pour ceux qui vendent de l'hébergement.