Guide de déploiement

Comment auto-héberger Infisical sur un VPS

Déployer sur un VPS Cloud →

Tutoriel

Self-hosting

Comment auto-héberger Infisical sur un VPS

Coder en dur des secrets dans des fichiers .env et en assurer la rotation manuellement d'un environnement à l'autre, c'est un incident de sécurité en puissance. Infisical est un gestionnaire de secrets open source (licence MIT, 27 600 étoiles sur GitHub en octobre 2026) qui centralise chaque clé d'API, mot de passe de base de données et certificat dans un unique coffre-fort auto-hébergé — synchronisé automatiquement vers vos applications, vos pipelines CI et votre équipe. Voici comment le déployer sur un VPS en moins de 20 minutes, avec RBAC, rotation automatique et intégrations CI/CD.

9 min de lecture6 étapes
Sommaire· Pourquoi auto-héberger votre gestionnaire de secrets1/10
  1. 01Pourquoi auto-héberger votre gestionnaire de secrets
  2. 02Ce que vous apporte Infisical auto-hébergé
  3. 03Infisical vs Vault vs Doppler vs Bitwarden Secrets
  4. 04Prérequis
  5. 05Déployer Infisical avec Docker Compose
  6. 06Configuration avancée : RBAC, politiques de secrets et rotation automatique
  7. 07Intégration CI/CD : GitHub Actions, GitLab CI, Docker Compose
  8. 08Dépannage : erreurs fréquentes
  9. 09Sauvegardes et mises à jour
  10. 10Verrouillez votre instance Infisical immédiatement après l'installation

Pourquoi auto-héberger votre gestionnaire de secrets

Stocker ses secrets dans un coffre-fort SaaS, c'est faire transiter ses identifiants les plus sensibles par le serveur d'un tiers. Auto-héberger Infisical maintient chaque secret sur votre propre infrastructure, sous vos propres contrôles d'accès et journaux d'audit. Cela supprime aussi un abonnement SaaS récurrent : Infisical est sous licence MIT, gratuit à auto-héberger, et remplace directement des outils payants comme Doppler (6 $/développeur/mois) ou la complexité de HashiCorp Vault. Avec un seul VPS et un nom de domaine, toute votre équipe et chacun de vos pipelines CI peuvent récupérer les secrets par programmation — fini les fichiers .env commités par accident.

Ce que vous apporte Infisical auto-hébergé

  • Un coffre-fort centralisé pour chaque environnement (dev, staging, prod) avec des politiques d'accès par environnement.
  • Des SDK natifs pour Node.js, Python, Go, Java, Ruby et d'autres — injectez les secrets à l'exécution, plutôt que via des fichiers .env.
  • Des intégrations GitHub Actions, GitLab CI, CircleCI et Jenkins : les secrets sont synchronisés automatiquement vers vos pipelines.
  • Un contrôle d'accès basé sur les rôles, des jetons de service et des identités machine — sans identifiants root partagés.
  • Un journal d'audit complet : chaque lecture, écriture et rotation est enregistrée avec l'utilisateur, l'IP et l'horodatage.
  • Rotation et versionnement des secrets — revenez à une version antérieure d'un secret en un clic si un identifiant est compromis.

Infisical vs Vault vs Doppler vs Bitwarden Secrets

Faites défiler le tableau

OutilModèleAuto-hébergementPrix indicatifParticularité
**Infisical**Open source (MIT)Oui — Docker Compose, 4 Go RAMGratuit (self-hosted)RBAC natif, rotation auto, SDK multi-langages
HashiCorp VaultBSL (source available)Oui — complexe à opérerGratuit (community)Secret engines avancés, PKI, transit encryption
DopplerSaaS propriétaireNon6 $/dev/moisUX soignée, sync CI/CD sans serveur
Bitwarden SecretsOpen source (AGPL)Oui — serveur BitwardenGratuit (self-hosted)Intégration coffre-fort de mots de passe

Prérequis

Un VPS doté d'au moins 2 vCPU et 4 Go de RAM sous Ubuntu 22.04 — PostgreSQL et Node.js sont gourmands en mémoire lorsqu'ils traitent des requêtes concurrentes ; en dessous de 4 Go, Infisical redémarre sous charge. Un disque de 20 Go minimum pour les journaux d'audit sur le long terme. Docker et Docker Compose installés (docker compose version doit retourner v2.x). Un nom de domaine pointant vers votre VPS — Infisical exige une URL publique pour les redirections OAuth, les liens d'invitation par e-mail et le modèle de sécurité du navigateur (SITE_URL n'est pas optionnel). Un enregistrement DNS A ou CNAME déjà propagé avant de démarrer Caddy ou nginx pour l'émission du certificat Let's Encrypt.

Déployer Infisical avec Docker Compose

  1. Générer les secrets

    Infisical a besoin de deux secrets indépendants : une ENCRYPTION_KEY (hex de 16 octets : openssl rand -hex 16) pour chiffrer au repos les données du coffre-fort, et un AUTH_SECRET (chaîne aléatoire : openssl rand -base64 32) pour signer les jetons JWT. Stockez les deux dans un fichier .env à côté de votre fichier Compose — ne committez jamais ce fichier dans le gestionnaire de versions.

  2. Rédiger le fichier Compose

    La stack comporte trois services : postgres:14-alpine (le magasin de secrets), redis:alpine (tâches de fond et cache de session) et infisical/infisical:latest (l'application, port 8080). Renseignez DB_CONNECTION_URI, REDIS_URL, SITE_URL (votre domaine, https://secrets.votre-domaine.com) et les deux secrets. Démarrez la stack avec docker compose up -d.

    Pour épingler une version stable plutôt que latest, consultez les releases sur GitHub et remplacez par infisical/infisical:v0.91.1 (version courante en octobre 2026).

  3. Configurer le reverse proxy avec nginx ou Caddy

    Infisical exige du HTTPS — sans certificat TLS valide, le navigateur bloque les flux OAuth.

    Option Caddy (recommandée) : créez /etc/caddy/Caddyfile avec secrets.votre-domaine.com { reverse_proxy localhost:8080 }. Caddy provisionne automatiquement un certificat Let's Encrypt. Redémarrez avec systemctl reload caddy.

    Option nginx : créez un vhost avec proxy_pass http://127.0.0.1:8080;, puis émettez le certificat via Certbot (certbot --nginx -d secrets.votre-domaine.com). Ajoutez les en-têtes proxy_set_header Host $host; et proxy_set_header X-Real-IP $remote_addr; pour que les journaux d'audit enregistrent l'IP réelle du client, pas 127.0.0.1.

  4. Créer le premier compte administrateur

    Ouvrez votre domaine dans un navigateur et accédez à /admin/signup — c'est l'assistant à usage unique qui crée le compte Super Admin puis votre organisation. Le premier arrivé sur cet écran devient administrateur de l'instance. Créez ensuite votre premier projet (un espace de noms logique pour des secrets liés), ajoutez des environnements (dev, staging, prod) et invitez les membres de votre équipe.

  5. Intégrer à vos applications et à votre CI

    Installez la CLI Infisical (npm install -g @infisical/cli) ou un SDK dans votre projet. Exécutez infisical run -- node server.js pour injecter les secrets à l'exécution — votre application lit process.env.MY_SECRET comme s'il provenait d'un .env local, mais la valeur vient du coffre-fort. Pour GitHub Actions, installez l'action officielle Infisical et ajoutez un jeton de service comme secret de dépôt.

  6. Se connecter la première fois

    Ouvrez l'adresse /admin/signup de votre instance tout de suite : c'est l'assistant à usage unique qui crée le compte Super Admin puis votre organisation. Le premier arrivé sur cet écran devient administrateur de l'instance.

Configuration avancée : RBAC, politiques de secrets et rotation automatique

Une fois l'instance en place, trois fonctions avancées renforcent la sécurité opérationnelle.

RBAC (contrôle d'accès basé sur les rôles) : Infisical distingue quatre rôles prédéfinis — owner, admin, developer, viewer. Attribuez le rôle viewer aux pipelines CI qui n'ont besoin que de lire, developer aux développeurs et admin aux responsables de projet. Les identités machine (Machine Identities) permettent d'associer un rôle directement à une application sans jeton de service manuel : elles s'authentifient via AWS IAM, Azure AD ou un jeton Kubernetes et sont préférables aux jetons à longue durée de vie.

Politiques de secrets : dans Settings → Project → Secret Protection, activez les approbations avant écrasement d'un secret de production. Un second administrateur devra valider chaque modification — utile pour les équipes soumises à SOC 2 ou ISO 27001.

Rotation automatique : Infisical propose des templates de rotation natifs pour PostgreSQL, MySQL, AWS IAM et GitHub. Dans l'onglet Rotation de votre projet, créez un job de rotation avec la fréquence souhaitée (ex. tous les 30 jours pour un mot de passe de base de données). Infisical génère la nouvelle valeur, la pousse dans le coffre-fort et notifie les applications via webhook — sans intervention manuelle.

Intégration CI/CD : GitHub Actions, GitLab CI, Docker Compose

GitHub Actions : ajoutez l'action officielle dans votre workflow et passez un jeton de service comme secret de dépôt (INFISICAL_TOKEN). Les secrets sont injectés comme variables d'environnement avant chaque job.

- uses: Infisical/secrets-action@v1
  with:
    token: ${{ secrets.INFISICAL_TOKEN }}
    project-id: "<votre-project-id>"
    environment: "prod"

GitLab CI : utilisez la CLI Infisical dans un before_script. Ajoutez INFISICAL_TOKEN dans les variables CI/CD du dépôt.

before_script:
  - infisical run --env prod -- env | grep MY_SECRET

Docker Compose (runtime) : la CLI Infisical peut générer un fichier .env à la volée avant de lancer Compose, ou injecter directement via infisical run -- docker compose up -d. Évitez de stocker un .env généré dans une image — préférez l'injection à l'exécution pour ne jamais sérialiser un secret dans une couche Docker.

Dépannage : erreurs fréquentes

Error: connect ECONNREFUSED 127.0.0.1:6379 (Redis) — Redis n'est pas démarré ou le service infisical démarre avant que Redis soit prêt. Ajoutez depends_on: redis dans votre docker-compose.yml et vérifiez que le conteneur Redis est healthy avec docker compose ps. Si Redis tourne mais l'erreur persiste, contrôlez que REDIS_URL est bien redis://redis:6379 (nom du service Compose, pas localhost).

Error: unable to verify the first certificate (TLS) — le certificat Let's Encrypt n'a pas encore été émis (propagation DNS incomplète) ou Caddy/nginx ne peut pas atteindre l'ACME challenge. Vérifiez que le port 80 est ouvert dans votre pare-feu (ufw allow 80) — Caddy en a besoin pour le challenge HTTP-01 lors de l'émission initiale. Ensuite, basculez en challenge DNS-01 si l'IP est derrière un NAT.

docker compose up échoue avec Bind for 0.0.0.0:8080 failed: port is already allocated — un autre process écoute sur 8080. Changez le mapping de port dans Compose (8081:8080) et adaptez la config du reverse proxy en conséquence.

Page /admin/signup inaccessible après le premier login — c'est voulu : l'assistant ne s'affiche qu'une seule fois. Si vous avez besoin de le rejouer (instance de test), supprimez la table Organization et relancez Infisical.

Les secrets ne s'injectent pas dans GitHub Actions — vérifiez que l'environment passé à l'action correspond exactement au nom d'environnement créé dans Infisical (sensible à la casse : prod ≠ Prod).

Sauvegardes et mises à jour

Sauvegardes PostgreSQL : les secrets chiffrés vivent dans PostgreSQL. Planifiez un pg_dump quotidien avec docker exec infisical_postgres pg_dump -U infisical infisical > backup-$(date +%Y%m%d).sql. Chiffrez la sauvegarde avant de la transférer hors site — elle contient les secrets chiffrés au repos, mais une fuite de la base combinée à une fuite de ENCRYPTION_KEY expose l'ensemble du coffre-fort.

Mises à jour d'Infisical : l'image infisical/infisical:latest se met à jour à chaque nouveau tag. Pour une montée de version contrôlée, épinglez la version (v0.91.1), consultez le changelog GitHub avant chaque mise à jour (certaines versions comportent des migrations de base de données), puis procédez dans cet ordre :
1. docker compose pull pour télécharger la nouvelle image.
2. docker compose up -d — Docker Compose recrée uniquement les conteneurs dont l'image a changé.
3. Vérifiez que la page de connexion répond et que les journaux ne signalent pas d'erreur de migration.

Surveillance : exposez le endpoint /healthcheck d'Infisical dans votre outil de supervision (Uptime Kuma, Gatus) pour être alerté en cas d'interruption. Un coffre-fort de secrets inaccessible bloque tous les déploiements qui en dépendent.

Verrouillez votre instance Infisical immédiatement après l'installation

Avant d'inviter votre équipe, désactivez la page d'inscription publique dans Settings → Authentication → Allow signups. Infisical n'accepte alors que les utilisateurs invités par un administrateur. Activez également la vérification par e-mail et, si votre équipe utilise l'OAuth GitHub ou Google, configurez ces fournisseurs dans Settings → SSO — ils sont plus sûrs qu'une connexion par mot de passe seul.

Déployez Infisical sur votre VPS en un clic

Ne laissez plus fuir vos secrets via des fichiers .env et des messages Slack. ServOrbit provisionne une instance Infisical prête à l'emploi sur un VPS — PostgreSQL, Redis et HTTPS inclus.