Por qué autoalojar Appwrite en un VPS
Appwrite reúne en una sola plataforma todo lo que una aplicación necesita del lado del servidor: autenticación con más de 30 métodos OAuth, base de datos documental con permisos granulares, almacenamiento de archivos con transformación de imágenes, funciones serverless en varios lenguajes y messaging. Su versión cloud factura por uso y por recursos; al autoalojarla en un VPS, despliega el conjunto mediante Docker y lo pilota desde una consola web elegante, sin tope. Resulta especialmente adecuado para los desarrolladores de Flutter, React Native o web que quieren un backend listo para usar con SDK oficiales, manteniendo los datos y la lógica en su propia infraestructura. Usted controla las funciones, las claves API y los permisos, y evoluciona a su ritmo.
Los beneficios concretos de un Appwrite autoalojado
- Backend todo en uno: Auth, Databases, Storage, Functions y Messaging en una consola única.
- SDK oficiales para Flutter, React Native, Web, Android, iOS, Node, Python y más.
- Más de 30 proveedores OAuth integrados (Google, GitHub, Apple...) sin escribir código.
- Funciones serverless self-hosted: ejecute su lógica de negocio sin ningún servicio externo.
- Permisos granulares a nivel de documento y de colección, gestionados desde la consola.
- Sin facturación por ejecución ni cuota de usuarios: tarifa de VPS fija.
Requisitos de hardware y software
Appwrite orquesta varios servicios (API, consola, MariaDB, Redis, workers y el runtime de funciones mediante Docker-in-Docker). Para una instancia de desarrollo, bastan 2 vCPU y 4 GB de RAM con 40 GB de SSD. Para producción con funciones serverless activas y varias apps, apunte a 4 vCPU, 8 GB de RAM y 80 GB de SSD, ya que cada función se ejecuta en su propio contenedor efímero. En cuanto al software: Ubuntu 22.04/24.04 LTS, Docker y Docker Compose v2 (Appwrite gestiona su propio Traefik integrado para el enrutamiento y el SSL), y un nombre de dominio que apunte al VPS (p. ej.: api.miapp.com). Los puertos 80 y 443 deben estar libres para que Traefik obtenga los certificados Let's Encrypt.
Desplegar Appwrite self-hosted con Docker
Preparar el VPS y el dominio
Instale Docker, haga que su dominio apunte a la IP del VPS y asegúrese de que los puertos 80 y 443 estén abiertos en
ufw: el Traefik integrado de Appwrite los necesita para el challenge ACME de Let's Encrypt.Lanzar el instalador oficial
Ejecute el comando de instalación
docker run ... appwrite/appwrite install: un asistente interactivo le pide el dominio y el puerto HTTP/HTTPS, y genera eldocker-compose.ymlasí como el archivo.envcon los secretos. Es el método recomendado, mejor que un compose escrito a mano.Configurar el dominio y el SSL
Rellene
_APP_DOMAINy_APP_DOMAIN_TARGETcon su nombre de dominio. Traefik genera entonces automáticamente el certificado HTTPS. Compruebe el acceso a la consola enhttps://api.miapp.comy cree su cuenta de administrador raíz.Crear un proyecto y su primera aplicación
Desde la consola, cree un proyecto, añada una plataforma (Web, Flutter, Apple...) declarando el hostname autorizado y recupere el ID del proyecto. Esos datos alimentan la inicialización del SDK en el lado del cliente.
Endurecer la configuración de producción
En
.env, ponga_APP_OPTIONS_ABUSEy_APP_OPTIONS_FORCE_HTTPSenenabled, configure el SMTP (_APP_SMTP_*) para los correos de verificación y restrinja_APP_CONSOLE_WHITELIST_*si quiere limitar el acceso a la consola.Respaldar MariaDB y el Storage
Programe un dump diario de la base de datos MariaDB de Appwrite y archive el volumen de Storage (uploads). Como Appwrite cifra ciertos datos con
_APP_OPENSSL_KEY_V1, guarde también ese secreto: sin él, los archivos cifrados son irrecuperables.
Appwrite vs Supabase: ¿cuál autoalojar?
Desplace la tabla
| Criterio | Appwrite | Supabase |
|---|---|---|
| Base de datos | MariaDB, modelo documental | PostgreSQL nativo, SQL completo |
| Enfoque | Orientado a SDK y apps móviles | Orientado a SQL y apps relacionales |
| Funciones serverless | Nativas, multilenguaje, integradas | Edge Functions (Deno) |
| Instalación | Instalador interactivo oficial | Compose que hay que configurar a mano |
| SSL / enrutamiento | Traefik integrado, automático | Reverse proxy externo por añadir |
| Búsqueda vectorial / IA | No nativa | Nativa mediante pgvector |
| Ideal para | Flutter, React Native, mobile-first | SQL avanzado, RAG, relacional |
| Consola de administración | Consola rica y guiada | Studio centrado en las tablas SQL |
Guarde sin falta la variable _APP_OPENSSL_KEY_V1 de su .env en una caja fuerte aparte: Appwrite la utiliza para cifrar los archivos y ciertos datos sensibles, y una restauración sin esa clave deja ilegibles los contenidos cifrados. Para las funciones serverless en producción, vigile el consumo de disco ligado a los contenedores de runtime efímeros y programe un docker system prune regular para evitar la saturación del SSD por las imágenes intermedias.
Esta plantilla aporta el núcleo: las Functions vienen después
El instalador oficial de Appwrite genera más de 25 contenedores, entre ellos workers de segundo plano y un runtime de ejecución para las Functions serverless y los Sites. Para mantener una huella reducida en el VPS, esta plantilla solo aporta el núcleo autosuficiente, el servidor de API, MariaDB, Redis y Traefik, que hace funcionar plenamente Auth, Databases, Storage, Realtime y la Console. Las Functions serverless, los webhooks salientes y el envío de correos en segundo plano requieren los contenedores worker y executor adicionales, y no están activados aquí. Cuando su proyecto lo necesite, pase a la stack docker-compose oficial completa de Appwrite y prevea al menos 4 GB de RAM. Para las copias de seguridad, programe snapshots de los volúmenes Docker appwrite-mariadb (datos) y appwrite-uploads (archivos).