Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
+138
View File
@@ -0,0 +1,138 @@
---
title: Appwrite
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, development, baas, backend, firebase]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Development, https://github.com/appwrite/appwrite]
---
# 💻 Appwrite
> Backend-as-a-Service open source concurrent de Firebase et Supabase — auth, base de données, stockage, fonctions et WebSocket, le tout 100 % MIT.
## 📋 Informations Générales
| Attribut | Valeur |
|----------|--------|
| **Nom** | Appwrite |
| **Slug** | appwrite |
| **Description** | Plateforme BaaS open source auto-hébergeable (auth, DB, storage, functions) |
| **Site officiel** | https://appwrite.io |
| **Repository** | https://github.com/appwrite/appwrite |
| **Stars** | 56 223 ⭐ |
| **Licence** | BSD-3-Clause (MIT-compat) — 100 % open source, pas de module Enterprise |
| **Langage principal** | PHP (backend) + Flutter/React/Native (console) |
| **Catégorie** | Development |
| **Tags** | [catalogue, development, baas, backend, firebase] |
## 📝 Description
**Appwrite** est une plateforme BaaS (Backend-as-a-Service) **100 % open source** sous licence BSD-3-Clause, **sans module Enterprise payant**. À l'inverse de Supabase, **toutes les fonctionnalités sont accessibles en self-host** (SSO, audit logs, fonctions). Le projet est structuré autour d'un **monolithe Docker** contenant tous les services (API, console, workers) et d'un **set de micro-services** optionnels pour les fonctions, les notifications SMTP/Push et le runtime.
L'API expose **REST + WebSocket + GraphQL** (expérimental) et fournit des **SDK officiels** pour 15+ langages (Flutter, React, Vue, Svelte, Swift, Kotlin, Dart, Node, Python, Go, .NET, Ruby, PHP, Deno, Bun). Côté données, Appwrite utilise **MariaDB** (par défaut) ou **PostgreSQL** (depuis 1.5) comme base principale, et stocke fichiers, fonctions et certificats sur disque ou dans un volume Docker.
Positionnement : **plus simple à déployer que Supabase** (un seul container, pas de 15 services interconnectés), **plus riche côté SDK** que Firebase, **plus rapide à mettre en œuvre** qu'un backend maison. Le modèle freemium existe uniquement sur `cloud.appwrite.io` (plan Pro payant) ; le self-host est gratuit.
## 🚀 Installation
### Via Docker (recommandé)
```yaml
# docker-compose.yml officiel Appwrite 1.6+
version: "3.8"
services:
appwrite:
image: appwrite/appwrite:1.6
container_name: appwrite
restart: unless-stopped
ports:
- "80:80"
environment:
_APP_ENV: production
_APP_OPENSSL_KEY: votre-cle-secrete
_APP_DOMAIN: appwrite.example.com
_APP_DOMAIN_TARGET: appwrite
_APP_CONSOLE_WHITELIST_ROOT: enabled
_APP_CONSOLE_WHITELIST_EMAILS: admin@example.com
_APP_DB_HOST: mariadb
_APP_DB_PORT: 3306
_APP_DB_USER: appwrite
_APP_DB_PASS: ***changeme***
_APP_DB_SCHEMA: appwrite
_APP_SMTP_HOST: smtp.example.com
_APP_SMTP_PORT: 587
_APP_SMTP_USER: ***
_APP_SMTP_PASS: ***
volumes:
- ./uploads:/storage/uploads
- ./certificates:/storage/certificates
- ./functions:/storage/functions
- ./snapshots:/storage/snapshots
depends_on: [mariadb, redis]
mariadb:
image: mariadb:11
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: ***rootpass***
MARIADB_DATABASE: appwrite
volumes:
- ./mariadb:/var/lib/mysql
redis:
image: redis:7-alpine
restart: unless-stopped
```
### Installation manuelle
```bash
# Installation unifiée (Linux)
docker run -it --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume "$(pwd)"/appwrite:/install \
appwrite/installer:1.6.0
```
L'installer génère un `docker-compose.yml` optimisé et configure automatiquement MariaDB, Redis et Traefik interne.
## ⚙️ Configuration
- **`_APP_OPENSSL_KEY`** : clé de chiffrement des données sensibles (tokens, clés API). **Changer à la première installation et la sauvegarder hors-ligne** : si elle est perdue, les données chiffrées sont irrécupérables.
- **`_APP_CONSOLE_WHITELIST_ROOT`** : à `enabled` au bootstrap, puis à `disabled` une fois le premier admin créé.
- **`_APP_SMTP_*`** : obligatoire pour l'auth (vérif email, magic links, recovery).
- **Volumes** : `./uploads`, `./certificates`, `./functions` doivent être sauvegardés — c'est l'état utilisateur hors base.
- **`_APP_DOMAIN` / `_APP_DOMAIN_TARGET`** : déclarer le FQDN final pour les liens d'auth.
## 🔗 Alternatives
- **Supabase** — Concurrent direct, basé sur PostgreSQL + PostgREST, plus modulaire mais avec modules Enterprise.
- **Firebase** — BaaS propriétaire Google, cloud uniquement, source d'inspiration d'Appwrite.
- **Nhost** — BaaS GraphQL centré sur Hasura, plus simple pour des besoins GraphQL natifs.
## 🔒 Sécurité
- **HTTPS obligatoire** : placer Traefik/Caddy devant l'instance, le port 80 seul n'est jamais acceptable en production.
- **Clé OpenSSL** : comme indiqué, c'est la clé d'accès aux données chiffrées — sauvegarder hors-ligne.
- **Whitelist emails** : `_APP_CONSOLE_WHITELIST_EMAILS` limite qui peut créer un compte sur la console d'admin.
- **Rate-limiting** : Appwrite intègre un rate-limit natif par utilisateur/clé, vérifier qu'il n'est pas désactivé.
- **Backups** : `mariadb-dump` quotidien + archivage du volume `./uploads` (Storage) — les deux sont nécessaires, l'un sans l'autre rend l'instance inutilisable.
## 📚 Ressources
- [Site officiel](https://appwrite.io)
- [Documentation self-hosting](https://appwrite.io/docs/advanced/self-hosted)
- [Repository GitHub](https://github.com/appwrite/appwrite)
- [Selfh.st — Appwrite](https://selfh.st/apps/?tag=Development)
- [Awesome Appwrite](https://github.com/appwrite/awesome-appwrite)
## 🔗 Pages Liées
- [[cat-development]] — Catégorie Development
- [[app-supabase]] — BaaS open source concurrent (PostgreSQL)
- [[app-traefik]] — Reverse-proxy HTTPS devant Appwrite
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
- [[recettes-docker-compose]] — Templates Docker Compose