---
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](https://www.stormkit.io/) |
| **GitHub** | [stormkit-io/stormkit-io](https://github.com/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](https://selfh.st/apps/?tag=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é)

```yaml
# 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

```bash
git clone https://github.com/stormkit-io/stormkit-io.git
cd stormkit-io
cp .env.example .env   # éditer SK_*
docker compose up -d
```

## ⚙️ Configuration

1. **OAuth GitHub/GitLab** : créer une OAuth app sur le provider et renseigner `SK_GITHUB_CLIENT_ID/SECRET`.
2. **Build agent** : le service `stormkit-builder` a besoin d'un accès au **socket Docker** de l'hôte pour builder les images — isolé sur un hôte dédié recommandé.
3. **Domaine et wildcard DNS** : configurer un wildcard `*.apps.example.com` pour les **previews par PR** (chacune a son URL).
4. **Webhook Git** : ajouter le webhook Stormkit sur chaque repo (auto via OAuth).
5. **Backups PostgreSQL** : `storm_db` contient 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_KEY` robuste** : `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, jamais `admin:org` ou `workflow`.
- 🛡️ **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_db` est 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](https://www.stormkit.io/)
- [Documentation](https://www.stormkit.io/docs)
- [GitHub stormkit-io/stormkit-io](https://github.com/stormkit-io/stormkit-io)
- [Selfh.st — Development](https://selfh.st/apps/?tag=Development)
- [Stormkit Cloud (managed)](https://app.stormkit.io/)

## 🔗 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
