7.0 KiB
title: Stormkit created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, deployment, frontend, paas, ci-cd] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/stormkit-io/stormkit-io]
💻 Stormkit
PaaS self-hosted pour le déploiement d'apps frontend — connectez un repo Git, push, et Stormkit build, optimise et déploie automatiquement votre SPA (React, Vue, Svelte, Solid, Astro…) avec CDN, preview par PR et rollback instantané.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | stormkit.io |
| GitHub | stormkit-io/stormkit-io |
| License | AGPL-3.0 |
| Langage | Go (backend) + TypeScript (build agents) |
| Étoiles GitHub | 95 ⭐ |
| Catégorie | Development, PaaS / Deployment |
| Référence | selfh.st Development |
📝 Description
Stormkit est un PaaS (Platform-as-a-Service) spécialisé dans le déploiement d'apps frontend : c'est le « Vercel/Netlify self-hosted » que beaucoup attendent. Vous connectez un repo GitHub/GitLab/Bitbucket, vous choisissez le framework (React, Vue, Svelte, Solid, Astro, Next, Nuxt, SvelteKit, Gatsby…), et Stormkit se charge du build, de l'optimisation, du déploiement, de la distribution CDN et des previews par Pull Request.
Le modèle serverless functions est supporté pour les runtimes Node.js, et l'infrastructure de build s'appuie sur des build agents que vous pouvez run on-prem (Docker). C'est particulièrement adapté aux agences, studios et équipes produit qui veulent proposer du « push to deploy » à leurs clients sans dépendre de Vercel (payant au-delà du hobby) ou de Netlify (verrouillage progressif).
L'alternative open source la plus connue reste Coolify (plus généraliste, supporte aussi backends, DBs, Docker apps) et Dokku (mini-Heroku en PaaS Docker). Stormkit mise sur la spécialisation frontend et la simplicité d'usage : un dashboard unique, des environnements par branche, des previews automatiques sur chaque PR, et un rollback en un clic.
⚠️ Notes importantes : Stormkit reste un projet jeune avec un nombre d'étoiles relativement faible (95). Pour un usage critique en production, évaluer la maturité du projet, la qualité de la communauté et la roadmap. La société éditrice propose une version cloud (stormkit.io) en complément du self-host, ce qui est un bon indicateur de soutenabilité.
🚀 Installation
Via Docker (recommandé)
# docker-compose.yml
version: '3.8'
services:
stormkit-server:
image: ghcr.io/stormkit-io/stormkit-io:latest
container_name: stormkit-server
restart: unless-stopped
ports:
- "8888:8888"
environment:
SK_HOST: "https://stormkit.example.com"
SK_DATABASE_URL: "postgresql://storm:***changeme***@db:5432/stormkit"
SK_REDIS_URL: "redis://redis:6379/0"
SK_ENCRYPTION_KEY: "openssl-rand-hex-32"
SK_GITHUB_CLIENT_ID: "***"
SK_GITHUB_CLIENT_SECRET: "***"
SK_BUILD_AGENT_TOKEN: "openssl-rand-hex-32"
depends_on: [db, redis]
labels:
- "traefik.enable=true"
- "traefik.http.routers.stormkit.rule=Host(`stormkit.example.com`)"
- "traefik.http.routers.stormkit.entrypoints=websecure"
- "traefik.http.routers.stormkit.tls.certresolver=letsencrypt"
stormkit-builder:
image: ghcr.io/stormkit-io/builder:latest
container_name: stormkit-builder
restart: unless-stopped
environment:
SK_SERVER_URL: "https://stormkit.example.com"
SK_AGENT_TOKEN: "openssl-rand-hex-32"
volumes:
- /var/run/docker.sock:/var/run/docker.sock # pour builder les images
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: stormkit
POSTGRES_USER: storm
POSTGRES_PASSWORD: ***changeme***
volumes:
- storm_db:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
storm_db:
Installation manuelle
git clone https://github.com/stormkit-io/stormkit-io.git
cd stormkit-io
cp .env.example .env # éditer SK_*
docker compose up -d
⚙️ Configuration
- OAuth GitHub/GitLab : créer une OAuth app sur le provider et renseigner
SK_GITHUB_CLIENT_ID/SECRET. - Build agent : le service
stormkit-buildera besoin d'un accès au socket Docker de l'hôte pour builder les images — isolé sur un hôte dédié recommandé. - Domaine et wildcard DNS : configurer un wildcard
*.apps.example.compour les previews par PR (chacune a son URL). - Webhook Git : ajouter le webhook Stormkit sur chaque repo (auto via OAuth).
- Backups PostgreSQL :
storm_dbcontient l'état des apps, builds, deploys — sauvegarder quotidiennement.
🔗 Alternatives
- Vercel — Le plus populaire, excellent DX, mais cloud only et payant au-delà du hobby tier.
- Netlify — Concurrent historique, fonctions serverless, formulaires, identité — pricing complexe.
- Cloudflare Pages — Gratuit, CDN global, mais lié à l'écosystème Cloudflare et Workers only.
- Coolify — Alternative self-hosted généraliste (frontends + backends + DBs), plus large que Stormkit.
- Dokku — Mini-Heroku open source, basé sur Docker + Git push, plus DIY.
- CapRover — PaaS self-hosted avec marketplace d'« one-click apps », plus simple que Dokku.
🔒 Sécurité
- 🔐 HTTPS obligatoire via app-traefik : OAuth, builds et previews par PR transitent en clair sinon.
- 🔒
SK_ENCRYPTION_KEYrobuste :openssl rand -hex 32, sauvegarder hors-ligne. - 🛡️ Build agent isolé : le builder a accès au socket Docker — NE JAMAIS le co-poser avec d'autres apps sensibles. Idéalement sur un hôte Docker dédié.
- 🛡️ OAuth scopes minimaux :
repo(lecture) pour GitHub, jamaisadmin:orgouworkflow. - 🛡️ Isolation des previews : les previews par PR sont des environnements éphémères — s'assurer qu'ils n'ont pas accès à des secrets de prod.
- 🛡️ Backups PostgreSQL :
storm_dbest critique (état des apps), tester la restauration. - 🛡️ Logs et audit : activer les logs de déploiement (qui a push, quel commit, quel environnement).
📚 Ressources
- Site officiel
- Documentation
- GitHub stormkit-io/stormkit-io
- Selfh.st — Development
- Stormkit Cloud (managed)
🔗 Pages Liées
- cat-development — Catégorie Development
- app-traefik — Reverse proxy HTTPS devant Stormkit et les previews
- securisation-home-lab — Bonnes pratiques de sécurité
- recettes-docker-compose — Templates Docker Compose