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