bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward

AFFiNE en un VPS: instalación, configuración y mantenimiento

calendar_month 16 de junio de 2026 schedule 25 min de lectura visibility 61 vistas
person
Valebyte Team
AFFiNE en un VPS: instalación, configuración y mantenimiento

La instalación de AFFiNE en un VPS permite desplegar una plataforma potente, privada y flexible para la gestión del conocimiento, notas y proyectos, utilizando Docker y Docker Compose para simplificar el proceso, así como asegurar una configuración fiable, incluyendo reverse proxy, HTTPS y mantenimiento regular, para un funcionamiento estable bajo carga.

En el mundo digital actual, la gestión eficaz de la información es clave para la productividad, tanto para profesionales individuales como para equipos enteros. Existen numerosas soluciones para notas, bases de conocimiento y planificación de proyectos, pero no todas ofrecen el equilibrio ideal entre funcionalidad, control de datos y flexibilidad. AFFiNE es una plataforma innovadora que busca combinar las mejores características de Notion, Miro y Obsidian, ofreciendo un espacio unificado para el trabajo con texto, la visualización y la organización de tareas. Sin embargo, como muchos servicios en la nube, AFFiNE en su versión pública puede no satisfacer todos los requisitos de privacidad de datos o personalización individual. Aquí es donde entra en juego la opción AFFiNE self-hosted, desplegada en su propio servidor privado virtual (VPS).

Alojar AFFiNE en un VPS le otorga control total sobre sus datos, mejora significativamente la seguridad y le permite escalar los recursos según sus necesidades. En este artículo, examinaremos en detalle qué es AFFiNE, cuáles son sus requisitos de sistema y realizaremos una instalación paso a paso de AFFiNE en un VPS, utilizando la contenerización con Docker y Docker Compose. También prestaremos atención a la configuración de un reverse proxy para el acceso por nombre de dominio con HTTPS, estrategias de copia de seguridad y actualización, y definiremos la configuración óptima de VPS para varios escenarios de carga. Si busca una solución fiable para su equipo o uso personal, el despliegue de AFFiNE en un servidor de Valebyte.com será una excelente elección, garantizando alto rendimiento y estabilidad.

¿Qué es AFFiNE y por qué elegir self-hosted en un VPS?

AFFiNE se posiciona como un espacio de trabajo universal de nueva generación, que combina las funciones de un editor de texto, una herramienta para crear diagramas y esquemas, y un sistema completo de gestión de tareas y proyectos. Está diseñado con énfasis en la flexibilidad y una interfaz de usuario intuitiva, permitiendo a los usuarios cambiar libremente entre documentos de texto, bases de datos, tableros Kanban y diagramas interactivos, manteniendo la integridad de la información. Las capacidades de AFFiNE incluyen:

  • Bloques de contenido flexibles: Desde texto normal y encabezados hasta listas, tablas, imágenes e incluso objetos incrustables.
  • Modos de trabajo: Cambio entre modo documento, tablero (Kanban, mapa mental) y presentación para diferentes escenarios de uso.
  • Bases de datos: Creación de datos estructurados con capacidades de filtrado, clasificación y diversas vistas.
  • Trabajo en equipo: Herramientas para edición colaborativa y comentarios.
  • Código abierto: Un proyecto de código abierto, lo que fomenta la transparencia y el desarrollo de la comunidad.

Ventajas de desplegar AFFiNE en un VPS

La elección de una solución AFFiNE self-hosted en un servidor privado virtual de Valebyte.com ofrece una serie de ventajas significativas en comparación con el uso de versiones en la nube o instalaciones locales:

  1. Control total sobre los datos: Sus datos se almacenan en su servidor, no en plataformas de terceros en la nube. Esto es crucial para garantizar la confidencialidad, el cumplimiento normativo (por ejemplo, GDPR) y la protección de la propiedad intelectual.
  2. Seguridad: Usted gestiona la seguridad del servidor de forma independiente, eligiendo los niveles de cifrado, acceso y autenticación. Esto permite crear un entorno aislado y protegido, minimizando los riesgos de fugas.
  3. Flexibilidad y personalización: Puede configurar el entorno del servidor y, si es necesario, modificar el código fuente (si la licencia del proyecto lo permite) o integrar AFFiNE con otros servicios autoalojados, como Wiki.js o Trilium, para crear un espacio de trabajo integral.
  4. Rendimiento y escalabilidad: Al elegir un VPS con los recursos necesarios (CPU, RAM, almacenamiento NVMe), garantiza un alto rendimiento de AFFiNE, especialmente cuando se trabaja con grandes volúmenes de datos o un gran número de usuarios. A medida que sus necesidades crecen, puede escalar fácilmente los recursos del VPS.
  5. Eficiencia económica: A largo plazo, especialmente para equipos, el autoalojamiento puede resultar más rentable que la suscripción a costosas tarifas en la nube, sobre todo si ya dispone de un VPS para otros fines.
  6. Experiencia y habilidades: El despliegue y la gestión de sus propios servicios en un VPS desarrolla sus habilidades de administración de sistemas y trabajo con Docker, lo que es una experiencia valiosa en el sector de TI.

Así, AFFiNE en un VPS no es solo una alternativa, sino una decisión estratégica para quienes valoran el control, la seguridad y la flexibilidad en la gestión de su información digital.

Requisitos del sistema de AFFiNE: ¿qué VPS elegir?

Antes de proceder con la instalación de AFFiNE, es importante asegurarse de que su VPS cumple con los requisitos mínimos del sistema. AFFiNE, al ser una aplicación web moderna basada en Node.js y bases de datos, requiere recursos adecuados para un funcionamiento estable y rápido. Los componentes principales que se ejecutarán incluyen el propio servidor AFFiNE, la base de datos (PostgreSQL) y, posiblemente, otros servicios auxiliares, todo ello generalmente empaquetado en contenedores AFFiNE Docker.

Configuraciones mínimas y recomendadas de VPS

La elección de la configuración del VPS depende de la carga prevista: el número de usuarios activos, el volumen de datos almacenados y la intensidad de uso. A continuación, se presentan las recomendaciones generales:

  • Sistema operativo:
    • Mínimo: Cualquier distribución moderna de Linux con soporte para Docker (Ubuntu 20.04+, Debian 11+, CentOS 8+).
    • Recomendado: Ubuntu Server LTS (por ejemplo, 22.04) o Debian Stable. Estas distribuciones tienen un buen soporte, repositorios extensos y versiones de kernel actualizadas.
  • Procesador (CPU):
    • Mínimo (1-2 usuarios, carga ligera): 1-2 vCPU. Para operaciones básicas y pruebas, esto puede ser suficiente.
    • Recomendado (5-20 usuarios, carga media): 2-4 vCPU. Asegurará un funcionamiento fluido de la interfaz y un procesamiento rápido de las consultas de la base de datos.
    • Para equipos grandes (más de 20 usuarios): Más de 4 vCPU.
  • Memoria RAM:
    • Mínimo: 2 GB de RAM. Este es el mínimo absoluto para Docker, la base de datos y AFFiNE. Con un uso activo, pueden producirse ralentizaciones y la necesidad de SWAP.
    • Recomendado: 4 GB de RAM. Volumen óptimo para la mayoría de los escenarios de uso, garantizando un trabajo cómodo.
    • Para equipos grandes: Más de 8 GB de RAM. Especialmente si planea ejecutar otros servicios en el mismo VPS.
  • Espacio en disco (Storage):
    • Mínimo: 20-40 GB NVMe/SSD. AFFiNE almacena datos en la base de datos y también puede almacenar archivos en caché. NVMe acelera significativamente las operaciones de E/S.
    • Recomendado: 80-100 GB NVMe/SSD. Suficiente para el almacenamiento de datos a largo plazo, copias de seguridad y el sistema operativo.
    • Tipo de disco: Se recomienda encarecidamente utilizar discos NVMe debido a su alta velocidad de lectura/escritura, lo cual es fundamental para el rendimiento de las bases de datos y la capacidad de respuesta general del sistema.
  • Conexión de red:
    • Mínimo: 100 Mbps.
    • Recomendado: 1 Gbps. Una alta velocidad de red es importante para una carga rápida de contenido y el trabajo colaborativo.

Para la mayoría de los usuarios que comienzan con AFFiNE en un VPS, un plan con 2 vCPU, 4 GB de RAM y 80 GB de disco NVMe será un buen punto de partida. Valebyte.com ofrece varias tarifas de VPS que son fácilmente escalables, lo que le permite aumentar los recursos a medida que crecen sus necesidades sin necesidad de migración.

¿Busca un servidor fiable para sus proyectos?

VPS desde $10/mes y servidores dedicados desde $9/mes con NVMe, protección DDoS y soporte 24/7.

Ver ofertas →

Preparación del VPS para la instalación de AFFiNE

Antes de proceder directamente con la instalación de AFFiNE, es necesario preparar su servidor virtual. Esta etapa incluye la actualización del sistema operativo, la instalación de Docker y Docker Compose, así como la configuración básica de seguridad. Para el ejemplo, utilizaremos Ubuntu Server 22.04 LTS, pero los comandos serán similares para la mayoría de los sistemas basados en Debian.

Actualización del sistema e instalación de Docker/Docker Compose

Conéctese a su VPS por SSH. Primero, actualice la lista de paquetes y los paquetes instalados a las últimas versiones:

sudo apt update && sudo apt upgrade -y

A continuación, instalaremos las dependencias necesarias para Docker:

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

Añada la clave GPG oficial de Docker y el repositorio:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Ahora puede instalar Docker Engine, Docker CLI y containerd:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

Asegúrese de que Docker está instalado y en ejecución:

sudo systemctl status docker

La salida debería mostrar que el servicio está activo (active (running)).

Añada el usuario actual al grupo docker para evitar usar sudo con cada comando de Docker:

sudo usermod -aG docker $USER
newgrp docker

Salga de la sesión SSH y vuelva a iniciarla para que los cambios surtan efecto, o ejecute newgrp docker.

Ahora instalaremos Docker Compose. Se recomienda utilizar el plugin Docker Compose V2, que se instala como parte de Docker Desktop o por separado. Lo instalaremos como un plugin:

sudo apt install -y docker-compose-plugin

Compruebe la versión de Docker Compose:

docker compose version

La salida debería ser similar a: Docker Compose version v2.x.x.

Configuración del firewall (UFW)

Para garantizar la seguridad de su AFFiNE en el servidor, configure el firewall UFW (Uncomplicated Firewall). Permita el acceso SSH (puerto 22), HTTP (puerto 80) y HTTPS (puerto 443). Si tiene un puerto diferente para SSH, especifíquelo.

sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status

Asegúrese de que el firewall está activo y las reglas configuradas correctamente.

Ahora su VPS está listo para la instalación de AFFiNE utilizando contenedores AFFiNE Docker.

rocket_launch Elección rápida

¿Buscas un servidor que simplemente funcione?

Valebyte VPS — NVMe, soporte 24/7, despliegue en 60 segundos.

Ver planes VPS arrow_forward

Instalación paso a paso de AFFiNE en un VPS mediante Docker Compose

Ahora que su VPS está preparado, podemos pasar a la parte principal: la instalación de AFFiNE en el VPS. Utilizaremos Docker Compose, que simplifica significativamente el despliegue de aplicaciones multicomponente como AFFiNE, gestionando todos los contenedores necesarios (servidor AFFiNE, base de datos PostgreSQL).

Creación del archivo docker-compose.yml

Cree un directorio para el proyecto AFFiNE y navegue hasta él:

mkdir ~/affine
cd ~/affine

Cree el archivo docker-compose.yml:

nano docker-compose.yml

Pegue el siguiente contenido. Este archivo de configuración describe dos servicios: affine-server (la aplicación principal de AFFiNE) y postgres (la base de datos). Tenga en cuenta el uso de volúmenes persistentes para guardar los datos.

version: '3.8'

services:
  affine-server:
    image: ghcr.io/toeverything/affine:stable # Usamos la imagen estable de AFFiNE
    container_name: affine-server
    restart: unless-stopped
    ports:
      - "3010:3000" # Puerto del host:Puerto del contenedor. Cambie 3010 si es necesario.
    environment:
      # Configuración de la base de datos
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_USER=affine_user
      - POSTGRES_PASSWORD=${AFFINE_DB_PASSWORD}
      - POSTGRES_DB=affine_db
      # Configuración del servidor AFFiNE
      - AFFINE_SERVER_PORT=3000
      - AFFINE_SERVER_HOST=0.0.0.0
      # Otras configuraciones, si son necesarias (por ejemplo, para almacenamiento de archivos S3)
      # - AWS_S3_ACCESS_KEY_ID=YOUR_S3_ACCESS_KEY_ID
      # - AWS_S3_SECRET_ACCESS_KEY=YOUR_S3_SECRET_ACCESS_KEY
      # - AWS_S3_REGION=YOUR_S3_REGION
      # - AWS_S3_BUCKET_NAME=YOUR_S3_BUCKET_NAME
    volumes:
      - affine_data:/app/data # Almacenamiento persistente de datos de AFFiNE
    depends_on:
      - postgres

  postgres:
    image: postgres:15-alpine # Usamos la imagen ligera de PostgreSQL
    container_name: affine-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_USER=affine_user
      - POSTGRES_PASSWORD=${AFFINE_DB_PASSWORD}
      - POSTGRES_DB=affine_db
    volumes:
      - affine_db_data:/var/lib/postgresql/data # Almacenamiento persistente de datos de PostgreSQL

volumes:
  affine_data:
  affine_db_data:

Notas importantes:

  • Puertos: "3010:3000" significa que AFFiNE estará disponible en el puerto 3010 de su VPS. Puede elegir cualquier puerto libre.
  • Variables de entorno: Por seguridad, la contraseña de la base de datos (AFFINE_DB_PASSWORD) se ha movido a un archivo separado.
  • Volúmenes: affine_data y affine_db_data son volúmenes de Docker con nombre que garantizan que sus datos no se perderán al recrear los contenedores.

Configuración de variables de entorno

Cree un archivo .env en el mismo directorio que docker-compose.yml para almacenar datos sensibles, como la contraseña de la base de datos:

nano .env

Pegue la línea, reemplazando YOUR_STRONG_PASSWORD por una contraseña segura:

AFFINE_DB_PASSWORD=YOUR_STRONG_PASSWORD

Guarde y cierre el archivo (Ctrl+X, Y, Enter).

Inicio de los contenedores AFFiNE Docker

Ahora que todo está configurado, inicie los contenedores con Docker Compose:

docker compose up -d
  • up: Inicia los contenedores.
  • -d: Inicia los contenedores en segundo plano (detached mode).

El proceso puede tardar varios minutos, ya que Docker descargará las imágenes. Una vez completado, puede verificar el estado de los contenedores en ejecución:

docker compose ps

Debería ver dos contenedores en ejecución: affine-server y affine-postgres.

Ahora su AFFiNE en el servidor debería estar accesible a través de la dirección IP de su VPS y el puerto especificado (por ejemplo, http://SU_IP_VPS:3010). Abra esta dirección en su navegador. Debería ver la página de bienvenida de AFFiNE, donde podrá crear el primer administrador.

¡Felicidades, la instalación de AFFiNE se ha completado con éxito! En el siguiente paso, configuraremos el acceso a través de un nombre de dominio utilizando HTTPS para garantizar la seguridad y la comodidad.

Configuración de Reverse Proxy y HTTPS para AFFiNE

El acceso directo a AFFiNE por dirección IP y un puerto no estándar no siempre es conveniente ni seguro. Para garantizar el acceso por nombre de dominio, el cifrado del tráfico (HTTPS) y la posibilidad de alojar varios servicios en un mismo VPS, se recomienda utilizar un reverse proxy. Analizaremos la configuración con Nginx y Caddy, dos soluciones populares y eficientes.

Antes de empezar, asegúrese de tener:

  1. Un dominio registrado (por ejemplo, affine.yourdomain.com).
  2. Un registro DNS de tipo A que apunte su dominio a la dirección IP de su VPS.

Configuración de Nginx como Reverse Proxy con HTTPS

1. Instalación de Nginx:

sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

2. Configuración de Nginx para AFFiNE:

Cree un nuevo archivo de configuración para su dominio:

sudo nano /etc/nginx/sites-available/affine.conf

Pegue el siguiente contenido, reemplazando affine.yourdomain.com por su dominio real y 3010 por el puerto en el que se ejecuta AFFiNE:

server {
    listen 80;
    listen [::]:80;
    server_name affine.yourdomain.com;

    location / {
        proxy_pass http://localhost:3010; # Puerto en el que escucha AFFiNE
        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;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_read_timeout 900s; # Aumentar el tiempo de espera para archivos/operaciones grandes
        proxy_send_timeout 900s;
        proxy_connect_timeout 900s;
        # Para WebSocket
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Guarde y cierre el archivo.

3. Activación de la configuración y verificación:

sudo ln -s /etc/nginx/sites-available/affine.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Ahora puede intentar abrir http://affine.yourdomain.com en su navegador. Si todo está configurado correctamente, verá AFFiNE.

4. Instalación de Let's Encrypt para HTTPS (Certbot):

Instale Certbot y el plugin de Nginx:

sudo apt install -y certbot python3-certbot-nginx

Ejecute Certbot para obtener e instalar un certificado SSL:

sudo certbot --nginx -d affine.yourdomain.com

Siga las instrucciones de Certbot. Modificará automáticamente la configuración de Nginx para usar HTTPS y configurará la renovación automática del certificado. Una vez completado, su affine.conf se verá aproximadamente así (con secciones adicionales para el puerto 443 y una redirección de HTTP a HTTPS):

server {
    listen 80;
    listen [::]:80;
    server_name affine.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name affine.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/affine.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/affine.yourdomain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://localhost:3010;
        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;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_read_timeout 900s;
        proxy_send_timeout 900s;
        proxy_connect_timeout 900s;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Reinicie Nginx una vez más:

sudo systemctl restart nginx

Ahora su AFFiNE en el servidor está disponible en https://affine.yourdomain.com con una conexión segura.

Configuración de Caddy como Reverse Proxy con HTTPS (Alternativa)

Caddy es un servidor web moderno que gestiona automáticamente los certificados SSL de Let's Encrypt, lo que simplifica significativamente la configuración de HTTPS. Si prefiere un enfoque más sencillo, Caddy puede ser una excelente opción.

1. Instalación de Caddy:

Siga las instrucciones oficiales de Caddy para la instalación. Para Debian/Ubuntu:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy

2. Configuración de Caddyfile:

Cree o edite el archivo /etc/caddy/Caddyfile:

sudo nano /etc/caddy/Caddyfile

Elimine todo el contenido existente y pegue lo siguiente, reemplazando affine.yourdomain.com por su dominio y 3010 por el puerto en el que se ejecuta AFFiNE:

affine.yourdomain.com {
    reverse_proxy localhost:3010 {
        # Para WebSocket
        header_up Upgrade {http.request.header.Upgrade}
        header_up Connection {http.request.header.Connection}
    }
    # Opcional: habilite el registro para depuración
    # log {
    #     output file /var/log/caddy/affine_access.log
    # }
}

Guarde y cierre el archivo.

3. Verificación y arranque de Caddy:

sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

Caddy obtendrá automáticamente un certificado SSL y comenzará a proxyar las solicitudes. Su AFFiNE en el servidor ahora está disponible en https://affine.yourdomain.com.

La elección entre Nginx y Caddy depende de sus preferencias y experiencia. Nginx es más flexible y potente, pero requiere una configuración más detallada, mientras que Caddy ofrece simplicidad y automatización de HTTPS "out of the box".

Mantenimiento de AFFiNE: copias de seguridad, actualizaciones y monitorización

El despliegue de AFFiNE en un VPS es solo la mitad del trabajo. Para garantizar un funcionamiento estable, seguro y actualizado del servicio, es necesario realizar tareas de mantenimiento regularmente: crear copias de seguridad de los datos, actualizar la aplicación y monitorizar su estado. Estas medidas ayudarán a evitar la pérdida de datos y a mantener un alto rendimiento.

Estrategias de copia de seguridad de datos

La copia de seguridad es un aspecto crítico de cualquier servicio autoalojado. En el caso de AFFiNE self-hosted, los datos principales se almacenan en la base de datos PostgreSQL y, posiblemente, en el sistema de archivos (si utiliza almacenamiento de archivos local en lugar de S3). Necesitamos crear copias de seguridad de estos componentes regularmente.

Qué necesita respaldar:

  1. Base de datos PostgreSQL: Este es el componente más importante, que contiene toda la estructura de sus notas, proyectos y usuarios.
  2. Volumen de datos de AFFiNE: Si AFFiNE utiliza almacenamiento local para archivos (por ejemplo, imágenes cargadas), este volumen también debe ser respaldado.
  3. Archivo .env: Contiene variables de entorno sensibles, como la contraseña de la base de datos.
  4. Configuración de Docker Compose: El archivo docker-compose.yml.

Métodos de copia de seguridad:

  • Copia de seguridad de la base de datos PostgreSQL:

    Utilice la utilidad pg_dump desde dentro del contenedor PostgreSQL. Aquí tiene un ejemplo de comando:

    docker exec affine-postgres pg_dump -U affine_user -d affine_db > ~/affine_backups/affine_db_$(date +%Y%m%d%H%M%S).sql
            

    Para restaurar: docker exec -i affine-postgres psql -U affine_user -d affine_db < ~/affine_backups/YOUR_BACKUP_FILE.sql

  • Copia de seguridad de volúmenes Docker:

    Puede crear un archivo tar del contenido de los volúmenes de Docker con nombre. Primero, encuentre la ruta al volumen en el sistema host:

    docker volume inspect affine_data
            docker volume inspect affine_db_data
            

    Encontrará la ruta en el campo Mountpoint (por ejemplo, /var/lib/docker/volumes/affine_affine_data/_data). Luego, cree un archivo:

    sudo tar -czvf ~/affine_backups/affine_data_$(date +%Y%m%d%H%M%S).tar.gz -C $AFFINE_DATA_VOLUME_PATH .
            
  • Copia de seguridad de archivos de configuración:
    cp ~/affine/.env ~/affine_backups/
            cp ~/affine/docker-compose.yml ~/affine_backups/
            

Automatización de copias de seguridad:

Cree un script que realice todas estas acciones y configure su ejecución a través de Cron. Por ejemplo, el script backup_affine.sh:

#!/bin/bash
BACKUP_DIR="/root/affine_backups"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
AFFINE_COMPOSE_DIR="/root/affine"

mkdir -p $BACKUP_DIR

echo "Dumping PostgreSQL database..."
docker exec affine-postgres pg_dump -U affine_user -d affine_db > $BACKUP_DIR/affine_db_${TIMESTAMP}.sql

echo "Backing up AFFiNE data volume..."
# Obtenemos el Mountpoint para el volumen affine_data
AFFINE_DATA_VOLUME_PATH=$(docker volume inspect affine_affine_data --format '{{ .Mountpoint }}')
sudo tar -czvf $BACKUP_DIR/affine_data_${TIMESTAMP}.tar.gz -C $AFFINE_DATA_VOLUME_PATH .

echo "Backing up Docker Compose files..."
cp $AFFINE_COMPOSE_DIR/.env $BACKUP_DIR/
cp $AFFINE_COMPOSE_DIR/docker-compose.yml $BACKUP_DIR/

echo "Cleaning up old backups (keeping last 7 days)..."
find $BACKUP_DIR -type f -name "affine_db_*.sql" -mtime +7 -delete
find $BACKUP_DIR -type f -name "affine_data_*.tar.gz" -mtime +7 -delete

echo "Backup finished."

Haga el script ejecutable: chmod +x ~/backup_affine.sh. Añada a Cron (por ejemplo, para una copia de seguridad diaria a las 3 de la mañana):

sudo crontab -e

Añada la línea:

0 3 * * * /root/backup_affine.sh >> /var/log/affine_backup.log 2>&1

Para soluciones de copia de seguridad más avanzadas, considere el uso de herramientas especializadas como Restic en un VPS, que puede cifrar y enviar automáticamente las copias de seguridad a varios almacenamientos en la nube.

Actualización de AFFiNE e imágenes Docker

Las actualizaciones son importantes para obtener nuevas funciones, correcciones de errores y parches de seguridad. El proceso de actualización de los contenedores AFFiNE Docker es bastante sencillo:

  1. Vaya al directorio de AFFiNE:
    cd ~/affine
            
  2. Detenga los contenedores actuales:
    docker compose down
            
  3. Descargue las últimas imágenes:
    docker compose pull
            

    Esto descargará las versiones más recientes de las imágenes ghcr.io/toeverything/affine:stable y postgres:15-alpine.

  4. Inicie los contenedores con las nuevas imágenes:
    docker compose up -d
            
  5. Limpieza de imágenes antiguas (opcional):
    docker image prune
            

    Esto eliminará las imágenes no utilizadas, liberando espacio en disco.

Se recomienda realizar actualizaciones regularmente, pero no con demasiada frecuencia, para tener tiempo de verificar la estabilidad de las nuevas versiones. ¡Siempre haga una copia de seguridad antes de actualizaciones importantes!

Monitorización del rendimiento y el estado

La monitorización ayuda a identificar a tiempo problemas de rendimiento, escasez de recursos o fallos. Aquí hay algunas herramientas básicas:

  • Comandos Docker:
    • docker ps -a: Muestra el estado de todos los contenedores.
    • docker logs affine-server: Visualiza los logs del contenedor AFFiNE. Ayuda a identificar errores.
    • docker stats: Muestra el uso de recursos (CPU, RAM, red, disco) por todos los contenedores en ejecución en tiempo real.
  • Utilidades del sistema:
    • htop: Monitor de procesos interactivo, muestra el uso de CPU y RAM en el VPS.
    • df -h: Comprueba el uso del espacio en disco.
    • free -h: Comprueba el uso de la memoria RAM.
  • Herramientas especializadas:

    Para una monitorización más profunda, considere la instalación de sistemas como Netdata en un VPS. Netdata proporciona gráficos y métricas detallados sobre todos los aspectos del funcionamiento de su servidor y contenedores Docker, lo que permite diagnosticar rápidamente problemas y optimizar recursos.

La revisión regular de los logs y la monitorización de los recursos ayudarán a mantener su AFFiNE en el servidor en óptimas condiciones.

rocket_launch Elección rápida

¿Buscas un servidor que simplemente funcione?

Valebyte VPS — NVMe, soporte 24/7, despliegue en 60 segundos.

Ver planes VPS arrow_forward

Configuración óptima de VPS para AFFiNE bajo carga real

La elección de la configuración correcta del VPS para AFFiNE en un VPS es crucial para garantizar un rendimiento estable y la capacidad de respuesta de la aplicación. La configuración óptima depende del número de usuarios, la intensidad de su trabajo y el volumen total de datos. Valebyte.com ofrece tarifas flexibles que se pueden escalar a medida que crecen sus necesidades.

A continuación se presenta una tabla con recomendaciones de configuraciones de VPS para diferentes escenarios de uso de AFFiNE. Los precios indicados son aproximados y pueden variar según el proveedor y la región, pero dan una idea del orden de los costes para VPS NVMe de alta calidad.

Escenario de uso Número de usuarios vCPU (núcleos) RAM (GB) NVMe/SSD (GB) Costo aproximado del VPS/mes Notas
Uso personal / Pruebas 1-2 1 2 40-60 $5 - $10 Para familiarizarse con AFFiNE, carga mínima. Posibles pequeños retrasos con trabajo intensivo.
Equipo pequeño / Startup 3-10 2 4 80-100 $10 - $20 Equilibrio óptimo entre rendimiento y coste. Trabajo cómodo para un grupo pequeño.
Equipo mediano / Departamento 10-25 4 8 160-200 $20 - $40 Alto rendimiento para trabajo colaborativo activo, gran volumen de datos, actualizaciones frecuentes.
Equipo grande / Uso corporativo 25+ 6-8+ 16+ 300+ $40 - $80+ Máximo rendimiento y capacidad de respuesta, soporte para un gran número de usuarios simultáneos.

Factores clave al elegir un VPS para AFFiNE

  1. Tipo de disco (NVMe vs. SSD vs. HDD):

    NVMe es la elección sin compromisos. La base de datos PostgreSQL, utilizada por AFFiNE, trabaja activamente con el disco. La alta velocidad de lectura/escritura de los discos NVMe acelera significativamente las operaciones de la base de datos, la carga de contenido y la capacidad de respuesta general de la aplicación. Los SSD también son aceptables, pero los HDD deben evitarse a toda costa para entornos productivos.

  2. Procesador (vCPU):

    Cuantos más núcleos, mejor será el procesamiento paralelo de las solicitudes. AFFiNE y PostgreSQL pueden utilizar eficazmente varios núcleos, especialmente cuando varios usuarios trabajan simultáneamente o se ejecutan consultas complejas.

  3. Memoria RAM:

    Una cantidad suficiente de RAM permite almacenar en caché los datos de la base de datos y de la propia aplicación, minimizando los accesos al disco y acelerando el funcionamiento. La falta de RAM provocará un uso activo de SWAP, lo que reducirá drásticamente el rendimiento.

  4. Conexión de red:

    Una conexión de red de alta velocidad (1 Gbps) es importante para la carga y sincronización rápidas de datos, especialmente cuando se trabaja con contenido multimedia o edición colaborativa.

  5. Ubicación del VPS:

    Elija un centro de datos ubicado geográficamente cerca de su audiencia principal para minimizar la latencia.

  6. Escalabilidad:

    Asegúrese de que su proveedor (como Valebyte.com) ofrece una fácil escalabilidad de los recursos del VPS (CPU, RAM, disco) sin necesidad de reinstalar o migrar el servidor.

Para la mayoría de los usuarios que comienzan con AFFiNE en el servidor, se recomienda optar por una configuración para "Equipo pequeño" o "Equipo mediano" para garantizar un funcionamiento cómodo y estable desde el principio. Esto evitará problemas de rendimiento en las primeras etapas y proporcionará margen para el crecimiento.

Solución de problemas comunes al trabajar con AFFiNE

Durante la instalación de AFFiNE en un VPS y su posterior mantenimiento, pueden surgir diversos problemas. Saber cómo diagnosticarlos y resolverlos le ayudará a mantener su servicio en funcionamiento. Aquí hay algunos escenarios comunes y sus soluciones.

Problemas con el inicio o la disponibilidad de los contenedores

  1. El contenedor no se inicia o se reinicia constantemente:
    • Diagnóstico: Utilice docker compose ps para ver el estado de los contenedores. Si el estado es Exited o (unhealthy), revise los logs: docker compose logs affine-server y docker compose logs postgres.
    • Causas: Variables de entorno incorrectas (por ejemplo, contraseña de la base de datos errónea en .env), falta de recursos (RAM), corrupción de datos del volumen.
    • Solución: Verifique el archivo .env y docker-compose.yml en busca de errores tipográficos. Asegúrese de que el VPS tiene suficiente RAM. Si el problema es la corrupción de la base de datos, intente eliminar el volumen affine_db_data (docker volume rm affine_affine_db_data) y reiniciar los contenedores (esto resultará en la pérdida de datos si no hay una copia de seguridad).
  2. No se puede acceder a AFFiNE por IP:puerto:
    • Diagnóstico: Verifique que el contenedor affine-server esté en ejecución y escuchando en el puerto correcto (docker compose ps). Compruebe el firewall en el VPS: sudo ufw status.
    • Causas: El puerto en docker-compose.yml no coincide con el puerto que intenta usar. El firewall está bloqueando el tráfico en ese puerto.
    • Solución: Asegúrese de que el puerto especificado en ports: - "3010:3000" (donde 3010 es el puerto en el host) esté abierto en UFW: sudo ufw allow 3010/tcp.

Problemas con Reverse Proxy y HTTPS

  1. El acceso por dominio no funciona o devuelve un error 502/504:
    • Diagnóstico: Revise los logs de Nginx (sudo tail -f /var/log/nginx/error.log) o Caddy (sudo journalctl -u caddy -f). Asegúrese de que el registro DNS de su dominio apunta correctamente a la IP de su VPS (use dig affine.yourdomain.com).
    • Causas: Error en la configuración de Nginx/Caddy (puerto proxy_pass incorrecto), AFFiNE no está iniciado o escucha en un puerto diferente. Problemas con el DNS.
    • Solución: Asegúrese de que proxy_pass apunta a la IP y el puerto correctos (por ejemplo, http://localhost:3010). Verifique que AFFiNE sea accesible directamente por IP:puerto. Actualice los registros DNS y espere a que se propaguen.
  2. HTTPS no funciona (certificado no válido o ausente):
    • Diagnóstico: Verifique la configuración de Nginx/Caddy para las directivas SSL. Compruebe el estado de Certbot (sudo certbot certificates).
    • Causas: Certbot no pudo obtener o renovar el certificado (a menudo debido a problemas con DNS o el firewall que bloquea el puerto 80). Error en la ruta a los archivos de certificado en Nginx.
    • Solución: Ejecute Certbot de nuevo: sudo certbot --nginx -d affine.yourdomain.com. Asegúrese de que los puertos 80 y 443 estén abiertos en el firewall. Verifique que el dominio esté configurado correctamente en el DNS.

Problemas de rendimiento y espacio en disco

  1. AFFiNE funciona lento o se "cuelga":
    • Diagnóstico: Utilice docker stats para monitorizar el uso de CPU y RAM por los contenedores. Utilice htop para el estado general del VPS. Revise los logs de AFFiNE en busca de errores.
    • Causas: Insuficiente RAM o CPU en el VPS para la carga actual. Disco lento. Gran número de usuarios.
    • Solución: Considere aumentar los recursos del VPS (CPU, RAM). Asegúrese de que está utilizando discos NVMe. Optimice la configuración de AFFiNE, si es posible.
  2. Espacio en disco insuficiente:
    • Diagnóstico: df -h mostrará el uso del disco en el host. docker system df mostrará el uso del disco de Docker.
    • Causas: Acumulación de logs antiguos, imágenes/volúmenes Docker no utilizados, o simplemente un gran volumen de datos de AFFiNE.
    • Solución: Limpie las imágenes Docker antiguas y la caché: docker system prune -a. Elimine las copias de seguridad antiguas. Considere aumentar el espacio en disco del VPS. Para la gestión de archivos en el servidor, especialmente durante la limpieza, puede ser útil una herramienta como Filebrowser en un VPS.

Si surge algún problema, siempre comience revisando los logs de los servicios correspondientes (Docker, Nginx/Caddy, el propio AFFiNE); esta es la forma más efectiva de entender la causa del fallo.

Conclusiones

El despliegue de AFFiNE en un VPS utilizando Docker Compose proporciona una solución fiable y escalable para la gestión del conocimiento y proyectos, asegurando un control total sobre sus datos y flexibilidad en la configuración. La elección de una configuración óptima de VPS de Valebyte.com, una cuidadosa configuración del reverse proxy con HTTPS y un mantenimiento regular, incluyendo copias de seguridad y monitorización, garantizan un funcionamiento estable y seguro de su instancia AFFiNE self-hosted. Recomendamos encarecidamente elegir un VPS con discos NVMe y suficiente RAM para garantizar el máximo rendimiento.

¿Listo para elegir un servidor?

VPS y servidores dedicados en más de 72 países con activación instantánea y acceso root completo.

Empezar ahora →

Compartir esta publicación:

support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.