Files
wiki/Catalogue-Self-Hosted/apps/app-appwrite.md
T
2026-06-09 18:40:21 +02:00

6.0 KiB


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

# 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

# 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

🔗 Pages Liées