eco Principiante Tutorial/Cómo hacer

Instalación y configuración de Appwrite

calendar_month May 07, 2026 schedule 9 min de lectura visibility 88 vistas
Установка и настройка Appwrite на VPS: развёртывание Self-hosted альтернативы Firebase
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación y configuración de Appwrite en un VPS: despliegue de una alternativa Self-hosted a Firebase

TL;DR

En esta guía, revisamos el ciclo completo de despliegue de Appwrite, una potente plataforma Backend-as-a-Service (BaaS) de código abierto, en su propio servidor virtual. Recorreremos el camino desde la elección de la arquitectura y la preparación del SO hasta el ajuste fino de la seguridad, la automatización de copias de seguridad y la optimización del rendimiento para las condiciones de operación en 2026.

  • Objetivo: Independencia total de las soluciones en la nube propietarias (Firebase, AWS Amplify).
  • Stack: Docker, Docker Compose, Ubuntu 24.04/26.04 LTS, Let's Encrypt.
  • Resultado: Un backend listo para producción con base de datos, autenticación, almacenamiento de archivos y funciones Serverless.
  • Tiempo de configuración: 30–45 minutos con un servidor listo.
  • Dificultad: Media (se requieren conocimientos básicos de la terminal de Linux).

1. Qué estamos configurando y por qué

Esquema: 1. Qué estamos configurando y por qué
Esquema: 1. Qué estamos configurando y por qué

Appwrite es una plataforma integral que abstrae la complejidad del desarrollo del backend, proporcionando a los desarrolladores un conjunto de APIs para resolver tareas comunes. En 2026, cuando el costo de los recursos en la nube en los ecosistemas de Google y AWS sigue creciendo y los requisitos de soberanía de datos se vuelven más estrictos, las soluciones self-hosted pasan a primer plano.

El principal problema de Firebase y soluciones SaaS similares es el "vendor lock-in" (dependencia del proveedor). Si su aplicación se vuelve popular de repente, las facturas de la base de datos NoSQL pueden crecer exponencialmente. Migrar datos desde Firebase es siempre un proceso complejo y doloroso. Appwrite resuelve este problema ofreciendo una funcionalidad similar, pero en su propio hardware.

Principales características de Appwrite:

  • Database: Base de datos orientada a documentos con soporte para consultas complejas, filtrado y gestión de permisos a nivel de documento.
  • Authentication: Soporte para más de 30 proveedores OAuth (Google, GitHub, Apple, etc.), inicio de sesión mediante enlaces mágicos, teléfono y pares clásicos de usuario/contraseña.
  • Storage: Gestión de carga de archivos con compresión automática, cambio de tamaño de imágenes y escaneo antivirus.
  • Functions: Capacidad para ejecutar código personalizado en varios lenguajes (Node.js, Python, PHP, Ruby, Go, Rust) en respuesta a eventos del sistema o de forma programada.
  • Realtime: Sincronización instantánea de datos a través de WebSockets.

El despliegue de Appwrite en un VPS le otorga un control total sobre los recursos. Usted decide cuánta memoria RAM asignar a Redis para el almacenamiento en caché o qué cantidad de espacio en disco dedicar a los archivos multimedia de los usuarios.

2. Qué configuración de VPS se necesita para esta tarea

Esquema: 2. Qué configuración de VPS se necesita para esta tarea
Esquema: 2. Qué configuración de VPS se necesita para esta tarea

Appwrite es una arquitectura de microservicios empaquetada en contenedores Docker. En una instalación estándar, se ejecutan entre 20 y 25 contenedores (MariaDB, Redis, InfluxDB, Telegraf, Traefik, Workers y la propia API). Esto requiere ciertos recursos para un funcionamiento estable, especialmente si planea utilizar funciones Serverless.

Característica Mínimo (Dev/Test) Recomendado (Production) Enterprise / High Load
CPU 1 Núcleo (x86_64 / ARM) 2-4 Núcleos (Alta frecuencia) 8+ Núcleos
RAM 2 GB 4-8 GB 16 GB+
Disco 20 GB SSD 50-100 GB NVMe 500 GB+ RAID 10
SO Ubuntu 22.04+ Ubuntu 24.04 LTS Debian 12 / RHEL 9

Para proyectos pequeños, startups en etapa de MVP o proyectos personales, un VPS adecuado con 4 GB de RAM es ideal. Appwrite consume alrededor de 1.5–2 GB de RAM en reposo; el resto es necesario para el almacenamiento en caché de la base de datos y el funcionamiento del demonio Docker.

¿Cuándo vale la pena elegir un servidor dedicado? Si su aplicación implica un trabajo intensivo con imágenes (procesamiento de miles de fotos por hora) o si la base de datos crece hasta cientos de gigabytes. En otros casos, un VPS moderno con discos NVMe proporcionará un rendimiento suficiente gracias a la alta velocidad de entrada/salida (IOPS).

Ubicación del servidor: Elija la ubicación más cercana posible a su audiencia objetiva. Para Appwrite, esto es crítico debido al uso de la API Realtime (WebSockets): cuanto menor sea la latencia (RTT), más "receptiva" será la interfaz de su aplicación.

3. Preparación del servidor

Esquema: 3. Preparación del servidor
Esquema: 3. Preparación del servidor

Después de comprar el servidor y obtener acceso por SSH, lo primero es garantizar la seguridad y la actualización del sistema. Utilizaremos Ubuntu 24.04 LTS como la distribución más equilibrada para entornos Docker.

Actualización del sistema y creación de usuario

No se recomienda trabajar como usuario root. Crearemos un usuario separado con privilegios sudo.


# Actualizamos los índices de paquetes y el sistema
apt update && apt upgrade -y

# Creamos el usuario (reemplace 'deploy' por su nombre)
adduser deploy

# Añadimos al usuario al grupo sudo
usermod -aG sudo deploy

# Cambiamos al nuevo usuario
su - deploy

Configuración del cortafuegos (UFW)

Appwrite requiere los puertos abiertos 80 (HTTP) y 443 (HTTPS) para el funcionamiento de la interfaz web y la API, así como el puerto 22 para SSH.


# Permitimos SSH (¡es importante hacer esto primero!)
sudo ufw allow ssh

# Permitimos el tráfico web
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Activamos el cortafuegos
sudo ufw enable

Instalación de utilidades básicas

Necesitaremos herramientas para el diagnóstico y el trabajo con la red.


sudo apt install -y curl git vim htop software-properties-common apt-transport-https ca-certificates

4. Instalación de Docker y Docker Compose

Esquema: 4. Instalación de Docker y Docker Compose
Esquema: 4. Instalación de Docker y Docker Compose

Appwrite depende totalmente de Docker. En 2026, utilizamos Docker Engine y el plugin Docker Compose V2 (comando docker compose sin guion).

Adición del repositorio oficial de Docker


# Añadimos la clave GPG de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Configuramos el repositorio
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instalamos Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Verificación de la instalación y configuración de permisos

Para ejecutar Docker sin sudo, añadiremos a nuestro usuario al grupo correspondiente:


sudo usermod -aG docker ${USER}
# Aplique los cambios de grupo sin reiniciar
newgrp docker
# Verificamos la versión
docker compose version

5. Instalación de Appwrite: proceso paso a paso

Esquema: 5. Instalación de Appwrite: proceso paso a paso
Esquema: 5. Instalación de Appwrite: proceso paso a paso

Los desarrolladores de Appwrite proporcionan un práctico script de instalación que genera de forma interactiva el archivo docker-compose.yml y las variables .env.

Ejecución del instalador


docker run -it --rm \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
    --entrypoint="install" \
    appwrite/appwrite:latest

Respuestas a las preguntas del instalador:

  1. Choose your server hostname: Ingrese su dominio (por ejemplo, api.myapp.com) o la dirección IP del servidor. Es mejor usar un dominio de inmediato para la generación automática de SSL.
  2. Choose your HTTP port: Deje 80.
  3. Choose your HTTPS port: Deje 443.
  4. Choose your Secret API Key: Presione Enter para generar una clave aleatoria (asegúrese de guardarla más tarde del archivo .env).
  5. Choose your Appwrite Root Domain: Nuevamente su dominio.
  6. Choose your DNS Records: Aquí puede dejar el valor por defecto.

Una vez finalizado el script, aparecerá una carpeta llamada appwrite en el directorio actual. Entre en ella e inicie los contenedores:


cd appwrite
docker compose up -d

El proceso de la primera ejecución puede tardar de 2 a 5 minutos, ya que Docker debe descargar todas las imágenes necesarias (el tamaño total es de aproximadamente 1.5 GB).

Verifique el estado de los contenedores:


docker compose ps

Todos los contenedores deben tener el estado Up (healthy).

6. Configuración avanzada: variables de entorno y SMTP

Esquema: 6. Configuración avanzada: variables de entorno y SMTP
Esquema: 6. Configuración avanzada: variables de entorno y SMTP

Por defecto, Appwrite funciona, pero para un uso completo (por ejemplo, el envío de correos para la confirmación del registro) es necesario editar el archivo .env.

Configuración de SMTP (Correo)

Sin esto, sus usuarios no podrán restablecer sus contraseñas. Abra el archivo: nano .env y busque la sección de correo. Ejemplo de configuración para usar un servicio externo (por ejemplo, SendGrid, Mailgun o su propio SMTP):


_APP_SMTP_HOST=smtp.sendgrid.net
_APP_SMTP_PORT=587
_APP_SMTP_SECURE=tls
_APP_SMTP_USERNAME=apikey
_APP_SMTP_PASSWORD=your_super_secret_key
[email protected]
_APP_EMAIL_NAME=My App Support

Configuración de límites de subida

Si su aplicación trabaja con contenido pesado, aumente los límites:


_APP_STORAGE_LIMIT=52428800 # Límite en bytes (aquí 50MB)
_APP_STORAGE_PREVIEW_LIMIT=20971520 # Límite para vista previa

Seguridad

Asegúrese de que la variable _APP_ENV esté establecida en el valor production. Esto desactivará los mensajes de error detallados que podrían ayudar a los atacantes.


_APP_ENV=production

Después de realizar cambios en el .env, es necesario reiniciar los contenedores:


docker compose up -d

7. Configuración del dominio y SSL/TLS

Esquema: 7. Configuración del dominio y SSL/TLS
Esquema: 7. Configuración del dominio y SSL/TLS

Appwrite viene con un servidor proxy integrado, Traefik, que puede obtener automáticamente certificados de Let's Encrypt. Sin embargo, para ello deben cumplirse dos condiciones:

  • Su dominio (registro A) debe apuntar a la dirección IP de su VPS.
  • Los puertos 80 y 443 deben estar abiertos y no estar ocupados por otros procesos (por ejemplo, Nginx o Apache).

Si desea utilizar su propio Nginx como Reverse Proxy (por ejemplo, si ya hay otros sitios en el servidor), debe cambiar los puertos de Appwrite en el .env:


_APP_OPTIONS_FORCE_HTTPS=disabled # Si el SSL termina en un Nginx externo
_APP_HTTP_PORT=8080
_APP_HTTPS_PORT=8443

Luego, en la configuración de Nginx, redirija el tráfico:


server {
    listen 80;
    server_name api.myapp.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name api.myapp.com;

    ssl_certificate /etc/letsencrypt/live/api.myapp.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.myapp.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

8. Copias de seguridad y mantenimiento del sistema

Esquema: 8. Copias de seguridad y mantenimiento del sistema
Esquema: 8. Copias de seguridad y mantenimiento del sistema

Una solución self-hosted le otorga la responsabilidad de la seguridad de los datos. En Appwrite, es necesario realizar copias de seguridad de tres elementos principales:

  1. El archivo .env (allí se encuentran las claves de cifrado; sin ellas, los datos en la base de datos serán inútiles).
  2. Un volcado (dump) de la base de datos MariaDB.
  3. El contenido de la carpeta storage (archivos subidos).

Script sencillo de copia de seguridad

Cree un archivo backup.sh:


#!/bin/bash
BACKUP_DIR="/home/deploy/backups/$(date +%Y-%m-%d)"
mkdir -p $BACKUP_DIR

# Copia de seguridad de la configuración
cp /home/deploy/appwrite/.env $BACKUP_DIR/

# Copia de seguridad de la base de datos (vía docker exec)
docker exec appwrite-mariadb mysqldump -u root --password=$(grep _APP_DB_ROOT_PASS /home/deploy/appwrite/.env | cut -d'=' -f2) appwrite > $BACKUP_DIR/db_dump.sql

# Copia de seguridad de archivos (archivado)
tar -czf $BACKUP_DIR/storage.tar.gz /home/deploy/appwrite/storage

# Eliminación de copias de seguridad con más de 7 días de antigüedad
find /home/deploy/backups/* -mtime +7 -exec rm -rf {} \;

Añada el script a crontab para que se ejecute diariamente a las 3 de la mañana:


0 3 * * * /bin/bash /home/deploy/backup.sh

Actualización de Appwrite

Las actualizaciones salen con frecuencia. Para actualizar, ejecute:


# Entre en la carpeta
cd ~/appwrite

# ¡Haga una copia de seguridad! (ver arriba)

# Ejecute el instalador de la misma versión o latest
docker run -it --rm \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
    --entrypoint="install" \
    appwrite/appwrite:latest

El script detectará la instalación existente y le ofrecerá actualizar las imágenes, conservando sus datos.

9. Solución de problemas + FAQ

Los contenedores se reinician constantemente (Restarting)

Con mayor frecuencia, esto sucede debido a la falta de memoria RAM. Appwrite requiere un mínimo de 2 GB, pero en la práctica, con 2 GB, MariaDB puede cerrarse por OOM (Out of Memory). Asegúrese de tener configurado un archivo Swap si la memoria está al límite.


# Creación de swap de 2GB
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Error "Invalid Custom Domain"

Verifique que en el .env la variable _APP_DOMAIN coincida con lo que ingresa en el navegador. También asegúrese de que los registros DNS se hayan actualizado (puede tardar hasta 24 horas, use dig sudominio.com para verificar).

¿Cómo restablecer la contraseña de administrador?

En Appwrite, el primer usuario registrado se convierte automáticamente en administrador. Si ha perdido el acceso, lo más sencillo es crear un nuevo usuario a través de la API o la consola y cambiar manualmente su rol en la base de datos MariaDB, aunque el camino oficial es usar la CLI de Appwrite.

¿Qué configuración de VPS es la mínima adecuada?

Para el desarrollo, es suficiente con 1 vCPU y 2 GB de RAM. Sin embargo, para un funcionamiento estable del panel de control y al menos algunas solicitudes paralelas a la API, recomendamos encarecidamente 2 vCPU y 4 GB de RAM. Esto garantizará un funcionamiento fluido de los contenedores Docker y evitará retrasos al escribir en la base de datos.

¿Qué elegir: VPS o Dedicado para esta tarea?

Para el 95% de las aplicaciones en etapa de crecimiento, un VPS es suficiente. La virtualización permite escalar fácilmente los recursos (añadir RAM o CPU) sin necesidad de migración. Un servidor dedicado solo debe elegirse si necesita almacenar terabytes de datos localmente o si tiene requisitos de seguridad muy específicos (aislamiento a nivel de hardware).

No llegan los correos de confirmación

Verifique los registros del contenedor worker-mails:


docker compose logs appwrite-worker-mails

Un problema común es el bloqueo del puerto 25 o 587 por parte del proveedor de VPS. Asegúrese de que el tráfico de correo saliente esté permitido en el panel de control del proveedor.

10. Conclusiones y siguientes pasos

Hemos desplegado con éxito una alternativa self-hosted a Firebase en nuestro propio servidor. Ahora tiene control total sobre los datos, ausencia de cargos ocultos por cantidad de solicitudes y una potente herramienta para el desarrollo de aplicaciones móviles y web.

Qué hacer a continuación:

  • Configure el monitoreo: Conecte un sistema de monitoreo externo (por ejemplo, UptimeRobot o Grafana) para saber si el servidor se cae.
  • Optimice la seguridad: Configure 2FA en el panel de control de Appwrite y limite el acceso a los puertos de la base de datos.
  • Estudie los SDK: Comience la integración con su frontend utilizando los SDK oficiales para Flutter, React, Vue o Swift.

Recuerde que el mantenimiento de su propio backend requiere atención regular a las actualizaciones de seguridad del SO y del propio Appwrite. Una vez al mes, verifique la existencia de nuevos lanzamientos y realice restauraciones de prueba desde las copias de seguridad para estar seguro de su funcionamiento.

¿Te fue útil esta guía?

instalación y configuración de appwrite en vps: despliegue de una alternativa self-hosted a firebase
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.