---
title: Sandstorm
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, deployment, sandbox, securite, app-platform]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Deployment, https://github.com/sandstorm-io/sandstorm]
---

# 🚀 Sandstorm

> **La plateforme d'apps sandboxed** — chaque app tourne dans une prison isolée (grain), sécurité by-design, modèle "documents" plutôt que "users", idéal pour partager des apps self-hosted en famille/équipe.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [sandstorm.io](https://sandstorm.io/) |
| **GitHub** | [sandstorm-io/sandstorm](https://github.com/sandstorm-io/sandstorm) |
| **License** | AGPL-3.0 (gratuit) + commerciale (payante pour usage professionnel) |
| **Langage** | C++ / JavaScript |
| **Étoiles GitHub** | 7 031 ⭐ |
| **Catégorie** | [[cat-deployment\|Deployment & PaaS]] |

## 📝 Description

**Sandstorm** est une **plateforme d'apps self-hosted** radicalement différente des PaaS classiques. Créée en 2014 par Kenton Varda (auteur de Protobuf), elle a une promesse forte : **"une app = une prison"**. Chaque application tourne dans un **grain** — un conteneur Linux ultra-isolé (système de fichiers, réseau, mémoire) géré par le **sandbox Cap'n Proto** du même auteur.

L'isolation est **très agressive** : même si une app est compromise (RCE, etc.), l'attaquant ne peut **rien faire d'autre** que d'accéder aux données de ce grain, pas aux autres apps, pas à l'hôte, pas au réseau. C'est **plus fort qu'un conteneur Docker classique** en termes de surface d'attaque. C'est le **modèle de sécurité utilisé par le projet Sandstorm**.

Le modèle de données est aussi original : au lieu de "users qui possèdent des apps", Sandstorm a des **"grains"** (instances d'app) que l'admin **partage avec des utilisateurs** (par lien, par email, par groupe). L'UI ressemble à un **gestionnaire de documents** — chaque grain apparaît comme un fichier qu'on ouvre. Très adapté pour **héberger et partager** des outils internes (Etherpad, Davros, Wekan, etc.) avec une équipe ou une famille.

**Public cible** : **particuliers soucieux de la sécurité** qui veulent tester plein d'apps sans risque de compromettre leur serveur, **petites équipes** qui partagent des outils self-hosted, **hébergeurs de plateformes** (PaaS multi-tenant). Pour du PaaS plus classique (git push), voir [[app-coolify]] / [[app-dokploy]] ; pour un app store plus simple, [[app-runtipi]].

## 🚀 Installation

### Via Docker (recommandé pour tester)

```yaml
# docker-compose.yml
services:
  sandstorm:
    image: sandstorm/sandstorm:latest
    container_name: sandstorm
    restart: unless-stopped
    ports:
      - "6080:6080"   # Web (admin & utilisateurs)
      - "11025:11025" # SMTP (notifications)
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro  # optionnel : permet à Sandstorm de gérer ses propres conteneurs
      - ./data:/var/sandstorm
    environment:
      - WELCOME_TEXT=Bienvenue sur mon Sandstorm
```

### Installation manuelle (recommandé en prod — natif sur l'hôte)

```bash
# Sur Debian/Ubuntu (un seul binaire)
curl https://install.sandstorm.io | bash
# UI accessible sur https://IP:443 (auto-signé)
# 1er compte créé = admin
```

> ⚠️ **Sandstorm peut fonctionner en mode "dev"** (installé à l'intérieur d'un conteneur) ou en **mode "prod"** (installé nativement, gère lui-même ses grains). Le mode natif est **recommandé** pour la stabilité des sandboxes.

## ⚙️ Configuration

1. **Premier accès** : `https://IP:6080`, créer le **compte admin** (devenir "first member" via la console dev)
2. **Choisir l'OAuth** : activé par défaut, les nouveaux visiteurs sont en mode "anonymous" — activer les invitations par email
3. **Installer des apps** depuis l'**app market** : Etherpad, Wekan, Davros (calendrier), WordPress, Ghost, MediaGoblin, etc.
4. **Créer un grain** : choisir une app → "Create new grain" → configurer l'accès (privé, partagé, public)
5. **Partager** : bouton "Share" → email, lien, ou groupe. Chaque grain a des **rôles** (read/write/admin)
6. **Monitoring** : dashboard admin → ressources par grain, logs, alertes
7. **Backup** : `/var/sandstorm` contient l'état + grains (sauvegarder régulièrement)

## 🔗 Alternatives

- **Co-op Cloud** (Outlandish) — autre PaaS communautaire basé sur Docker Swarm + abra
- **Yunohost** — apps packagées Debian, modèle "user = domaine", plus âgé
- **Cloudron** — apps auto-hébergées, modèle LAMP + sandboxes par app
- **Capsule (K3s)** — PaaS basé sur Kubernetes, multi-tenant
- **AppFlowy Cloud** — "Notion-like" auto-hébergé (différent scope)
- **Coolify / Dokploy** — PaaS classiques, sécurité moindre mais workflow dev

## 🔒 Sécurité

- **Sandboxing natif** : chaque app a son UID dédié, sa jail chroot, son namespace réseau
- **Pas d'accès root** dans les grains, pas de syscall privilégié
- **HTTPS obligatoire** : Sandstorm force le HTTPS sur le domaine configuré
- **Auto-login sécurisé** : capabilities URLs, expiration configurable
- **Mises à jour** : OTA via le dashboard, alertes de CVE dans l'app market
- **Mode "demo"** : instance jetable, reset toutes les 24h, parfait pour tester
- **Wildcard DNS** : Sandstorm crée automatiquement des sous-domaines par grain

## 📚 Ressources

- [Site officiel](https://sandstorm.io/)
- [Documentation](https://docs.sandstorm.io/)
- [Dépôt GitHub sandstorm-io/sandstorm](https://github.com/sandstorm-io/sandstorm)
- [App Market](https://apps.sandstorm.io/)
- [Communauté Discourse](https://groups.google.com/g/sandstorm-dev)

## 🔗 Pages Liées

- [[cat-deployment]]
- [[app-coolify]]
- [[app-dokploy]]
- [[app-runtipi]]
- [[app-portainer]]
- [[cat-docker]]
- [[securisation-home-lab]]
- [[recettes-docker-compose]]
