Pourquoi auto-héberger Appwrite sur un VPS
Appwrite regroupe en une seule plateforme tout ce dont une application a besoin côté serveur : authentification avec plus de 30 méthodes OAuth, base de données documentaire avec permissions granulaires, stockage de fichiers avec transformation d'images, fonctions serverless dans plusieurs langages, et messaging. Sa version cloud facture par usage et par ressources ; en self-hostant sur un VPS, vous déployez l'ensemble via Docker et vous le pilotez depuis une console web élégante, sans plafond. C'est particulièrement adapté aux développeurs Flutter, React Native ou web qui veulent un backend prêt à l'emploi avec des SDK officiels, tout en gardant les données et la logique sur leur propre infrastructure. Vous contrôlez les fonctions, les clés API et les permissions, et vous évoluez à votre rythme.
Les bénéfices concrets d'un Appwrite auto-hébergé
- Backend tout-en-un : Auth, Databases, Storage, Functions et Messaging dans une console unique.
- SDK officiels pour Flutter, React Native, Web, Android, iOS, Node, Python et plus.
- Plus de 30 fournisseurs OAuth intégrés (Google, GitHub, Apple...) sans code.
- Fonctions serverless self-hosted : exécutez votre logique métier sans service externe.
- Permissions granulaires au niveau document et collection, gérées depuis la console.
- Pas de facturation à l'exécution ni de quota d'utilisateurs : forfait VPS fixe.
Prérequis matériels et logiciels
Appwrite orchestre plusieurs services (API, console, MariaDB, Redis, workers, et le runtime de fonctions via Docker-in-Docker). Pour une instance de développement, 2 vCPU et 4 Go de RAM avec 40 Go de SSD suffisent. Pour de la production avec des fonctions serverless actives et plusieurs apps, visez 4 vCPU, 8 Go de RAM et 80 Go de SSD, car chaque fonction s'exécute dans son propre conteneur éphémère. Côté logiciel : Ubuntu 22.04/24.04 LTS, Docker et Docker Compose v2 (Appwrite gère son propre Traefik intégré pour le routage et le SSL), et un nom de domaine pointant vers le VPS (ex : api.monapp.ma). Le port 80 et 443 doivent être libres pour que Traefik obtienne les certificats Let's Encrypt.
Déployer Appwrite self-hosted avec Docker
Préparer le VPS et le domaine
Installez Docker, faites pointer votre domaine vers l'IP du VPS, et assurez-vous que les ports 80 et 443 sont ouverts dans ufw : le Traefik intégré d'Appwrite en a besoin pour le challenge ACME de Let's Encrypt.
Lancer l'installateur officiel
Exécutez la commande d'installation docker run ... appwrite/appwrite install : un assistant interactif vous demande le domaine, le port HTTP/HTTPS et génère le docker-compose.yml ainsi que le fichier .env avec les secrets. C'est la méthode recommandée plutôt qu'un compose écrit à la main.
Configurer le domaine et le SSL
Renseignez _APP_DOMAIN et _APP_DOMAIN_TARGET avec votre nom de domaine. Traefik génère alors automatiquement le certificat HTTPS. Vérifiez l'accès à la console sur https://api.monapp.ma et créez votre compte administrateur racine.
Créer un projet et sa première application
Depuis la console, créez un projet, ajoutez une plateforme (Web, Flutter, Apple...) en déclarant l'hostname autorisé, et récupérez l'ID de projet. Ces informations alimentent l'initialisation du SDK côté client.
Durcir la configuration de production
Dans .env, passez _APP_OPTIONS_ABUSE et _APP_OPTIONS_FORCE_HTTPS à enabled, configurez le SMTP (_APP_SMTP_*) pour les emails de vérification, et restreignez _APP_CONSOLE_WHITELIST_* si vous voulez limiter l'accès à la console.
Sauvegarder MariaDB et le Storage
Planifiez un dump quotidien de la base MariaDB d'Appwrite et archivez le volume de Storage (uploads). Comme Appwrite chiffre certaines données avec _APP_OPENSSL_KEY_V1, sauvegardez aussi ce secret : sans lui, les fichiers chiffrés sont irrécupérables.
Appwrite vs Supabase : lequel self-hoster ?
| Critère | Appwrite | Supabase |
|---|---|---|
| Base de données | MariaDB, modèle documentaire | PostgreSQL natif, SQL complet |
| Approche | Orienté SDK et apps mobiles | Orienté SQL et apps relationnelles |
| Fonctions serverless | Natives, multi-langages intégrées | Edge Functions (Deno) |
| Installation | Installateur interactif officiel | Compose à configurer manuellement |
| SSL / routage | Traefik intégré, automatique | Reverse proxy externe à ajouter |
| Recherche vectorielle / IA | Non native | Native via pgvector |
| Idéal pour | Flutter, React Native, mobile-first | SQL avancé, RAG, relationnel |
| Console d'administration | Console riche et guidée | Studio centré sur les tables SQL |
Sauvegardez impérativement la variable _APP_OPENSSL_KEY_V1 de votre .env dans un coffre séparé : Appwrite l'utilise pour chiffrer les fichiers et certaines données sensibles, et une restauration sans cette clé rend les contenus chiffrés illisibles. Pour les fonctions serverless en production, surveillez la consommation disque liée aux conteneurs de runtime éphémères et planifiez un docker system prune régulier afin d'éviter la saturation du SSD par les images intermédiaires.