Pourquoi Nixos

Liberté totale

Votre serveur NixOS vous appartient, utilisez nos modules préconfigurés ou configurez tout vous-même, sans aucun enfermement.

Liberté totale : aucun enfermement, jamais

Certaines solutions d'hébergement vous enferment dans leur écosystème. Si vous voulez sortir du cadre, il faut tout reconstruire. Avec notre serveur NixOS, c'est l'inverse : nos modules préconfigurés sont une surcouche de confort au-dessus de NixOS standard. Vous pouvez les utiliser, les ignorer, ou mixer les deux. Le serveur reste le vôtre.

Votre fichier de configuration, vos règles

Le fichier .server-config.nix est un module NixOS classique. Tout ce que NixOS sait faire, vous pouvez l'écrire dedans. Nos options server.* simplifient la vie, mais elles ne remplacent pas NixOS, elles s'ajoutent par-dessus. Vous gardez un accès complet à l'ensemble des 120 000+ paquets et des milliers d'options du système.

Exemple concret : installer n8n soi-même

Imaginons que vous vouliez installer n8n sans utiliser notre module préconfigé. Voici ce que vous écririez dans .server-config.nix :
# .server-config.nix, installation manuelle de n8n
{ config, pkgs, ... }:
{
  # Activer n8n avec les options NixOS standard
  services.n8n = {
    enable = true;
    environment = {
      N8N_PORT = "5678";
      N8N_HOST = "127.0.0.1";
    };
  };

  # Base de données PostgreSQL
  services.postgresql = {
    enable = true;
    ensureDatabases = [ "n8n" ];
    ensureUsers = [{
      name = "n8n";
      ensureDBOwnership = true;
    }];
  };

  # Reverse proxy Caddy
  services.caddy.virtualHosts."n8n.mondomaine.com".extraConfig = ''
    reverse_proxy 127.0.0.1:5678
  '';
}

Ça fonctionne. L'application démarre, la base de données est créée, le reverse proxy redirige le trafic. Vous avez un n8n opérationnel.

Maintenant, comparez avec notre module

Avec notre système, la même installation se résume à une seule ligne dans .server-config.nix :
server.n8n = {};

Une ligne. Le résultat ? Le même n8n, mais avec tout ce qu'il faut pour un environnement de production.

Ce qu'une ligne de configuration inclut

Derrière server.n8n = {};, notre module configure automatiquement tout ce qu'un administrateur expérimenté mettrait en place manuellement, mais que la configuration NixOS de base ne fait pas pour vous.
    Base de données optimisée
    PostgreSQL configuré avec un utilisateur dédié, les bonnes permissions, et le stockage binaire sur le système de fichiers. Pas de SQLite en production.
    Isolation de sécurité
    Un utilisateur système dédié, un groupe séparé, des permissions restrictives sur les fichiers. Les administrateurs accèdent aux données via un groupe, sans être root.
    Reverse proxy durci
    Caddy configuré avec HTTPS automatique, health checks, compression, logging structuré et en-têtes de sécurité. Pas juste un reverse_proxy brut.
    Outils en ligne de commande
    Le service a accès à curl, jq, bash, grep et d'autres utilitaires dans son PATH. Indispensable pour les nœuds "Execute Command" de n8n, mais absent par défaut.
    Dossier partagé
    Un répertoire /var/lib/n8n/shared avec un lien symbolique ~/n8n pour chaque administrateur. Échangez des fichiers avec n8n sans manipuler les permissions manuellement.
    Choix du canal NixOS
    Choisissez la version stable ou unstable de n8n, ou épinglez un commit précis de nixpkgs, par application, sans affecter le reste du serveur. Impossible avec une configuration NixOS basique.

Le meilleur des deux mondes

Vous n'avez pas à choisir entre nos modules et NixOS standard. Les deux coexistent dans le même fichier. Utilisez server.n8n = {}; pour n8n, et configurez un autre service manuellement juste en dessous. C'est la force de NixOS : tout est un module, tout se compose.
# .server-config.nix, mixer les deux approches
{ config, pkgs, ... }:
{
  # Applications préconfigurées (une ligne chacune)
  server.n8n = {};
  server.umami = {};
  server.forgejo = { disableRegistration = true; };

  # Service configuré manuellement avec NixOS standard
  services.grafana = {
    enable = true;
    settings.server.http_port = 3000;
  };
  services.caddy.virtualHosts."grafana.mondomaine.com".extraConfig = ''
    reverse_proxy 127.0.0.1:3000
  '';

  # Paquets système supplémentaires
  environment.systemPackages = with pkgs; [ htop ripgrep ];
}

Comparaison : module préconfigé vs. configuration manuelle

CritèreConfiguration manuelleModule server.*
Lignes de configuration20-50 lignes par application1 ligne
Base de donnéesÀ configurer soi-mêmePostgreSQL automatique
HTTPSÀ configurer soi-mêmeAutomatique via Caddy
Utilisateur systèmeÀ créer soi-mêmeCréé avec les bonnes permissions
Health checksAbsentsIntégrés au reverse proxy
LoggingConfiguration par défautStructuré et unifié
Outils CLI dans le serviceAbsents du PATHcurl, jq, bash... inclus
Choix de versionCelle du systèmePar application (stable/unstable)
BackupÀ configurer soi-mêmeIntégré au système de sauvegarde
ProvisioningManuelAutomatisé (secrets, init)
Intégration inter-appsCâblage manuelLes apps se connaissent entre elles
Accès IAInexistantClaude pilote l'app dès le 1er jour
Compétence requiseAdministration NixOSAucune, décommenter une ligne

Des applications qui se connaissent entre elles

Installer une app isolée, c'est facile. Mais sur un vrai serveur, les applications doivent collaborer. Avec nos modules, chaque app sait qu'elle fait partie d'un ensemble, et se configure en conséquence.
    Configuration partagée automatique
    Le domaine, le protocole HTTPS, les utilisateurs admin, chaque app hérite de la configuration globale du serveur. Changez le domaine une fois, toutes les apps suivent. Pas de valeurs copiées-collées à synchroniser manuellement.
    Secrets et authentification câblés
    Les secrets sont générés, chiffrés et distribués automatiquement au premier démarrage. Forgejo crée un token API que Woodpecker récupère pour s'authentifier. Vous activez les deux apps, elles se connectent toutes seules.
    SMTP partagé
    Configurez le relais mail une fois dans server.smtp-relay. Toutes les apps qui envoient des emails (n8n, Forgejo, Listmonk, Nextcloud...) l'utilisent automatiquement. Pas de formulaire SMTP à remplir dans chaque interface d'admin.
    Base de données unifiée
    PostgreSQL est partagé entre toutes les apps, avec un utilisateur et une base dédiés par application. Les permissions sont gérées au niveau système, pas de mot de passe de base de données qui traîne dans un fichier .env.

Prêt pour l'IA dès la première ligne

C'est l'avantage le plus difficile à reproduire manuellement, et le plus puissant. Chaque application préconfigurée est immédiatement accessible par une intelligence artificielle. Pas d'intégration à bricoler, pas d'API à connecter. Vous activez l'app, l'IA peut la piloter.
    Connecteur MCP automatique
    Quand vous activez n8n, le système enregistre automatiquement un connecteur MCP (Model Context Protocol) dans la configuration de Claude. L'IA peut créer des workflows, lire les exécutions, déclencher des automatisations, sans que vous ayez touché à une seule ligne de configuration API.
    Accès en lecture à toutes les données
    Le serveur MCP intégré donne à Claude un accès en lecture seule aux bases de données de toutes vos apps, aux fichiers de configuration, aux logs et à l'état des services. L'IA peut diagnostiquer un problème, analyser vos données ou auditer votre serveur sans SSH.
    Workflows IA pré-installés
    Des workflows de diagnostic sont déployés et activés automatiquement dans n8n. Ils testent la santé du serveur, vérifient les accès réseau et valident les permissions. Base prête à étendre avec vos propres automatisations IA.
    L'IA voit l'ensemble du serveur
    Grâce aux intégrations inter-apps, Claude ne voit pas des applications isolées, il voit un système complet. Il peut interroger la base de Forgejo, déclencher un workflow n8n, vérifier les analytics Umami et redémarrer un service, le tout dans une seule conversation.

Ce que ça donne concrètement

Voici la différence entre installer n8n manuellement et l'activer via notre module, du point de vue de l'IA :
ÉtapeInstallation manuelleModule server.n8n = {};
Activer n8n20+ lignes de config1 ligne
Créer un compte adminManuellement via l'interface webAutomatique au provisioning
Générer une clé APIManuellement via l'interface webAutomatique, stockée chiffrée
Connecter Claude à n8nInstaller le MCP, trouver la clé, configurer ~/.mcp.json à la mainAutomatique, Claude voit n8n immédiatement
Accès IA aux bases de donnéesCréer un rôle PostgreSQL read-only, configurer les permissionsIntégré, rôle mcp-server avec lecture sur toutes les apps
Workflows de diagnosticLes écrire soi-mêmePré-installés et activés
Orchestration multi-apps par l'IACâbler chaque connecteur un par unToutes les apps sont visibles dans le même contexte IA

Pourquoi c'est important

La liberté de configurer votre serveur comme vous l'entendez n'est pas un détail technique, c'est une garantie. Vous n'êtes pas enfermé dans notre système. Si demain vous voulez reprendre la main sur une application, vous le pouvez. Si vous voulez ajouter un service que nous ne proposons pas encore, vous le pouvez. Et si nos modules vous conviennent, vous gagnez des heures de configuration, une intégration entre vos apps, et un serveur pilotable par IA, avec une seule ligne. C'est ça, un outil qui respecte ses utilisateurs.

Un serveur puissant, sans compromis sur la liberté

Réservez un appel de 30 minutes pour découvrir un hébergement qui ne vous enferme jamais. Sans engagement.
Copyright © 2026