Initial vault setup
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user