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

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación de Sea

calendar_month Aug 22, 2026 schedule 22 min de lectura visibility 34 vistas
Установка Seafile на VPS для создания приватного облачного хранилища
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 de Seafile en un VPS para crear un almacenamiento en la nube privado

TL;DR

En esta guía detallada, configuraremos paso a paso su propio almacenamiento en la nube privado de Seafile en un servidor privado virtual (VPS). Aprenderá cómo preparar un servidor basado en Ubuntu 24.04 LTS, instalar Seafile usando Docker Compose, configurar HTTPS automático a través de Caddy y asegurar una copia de seguridad de datos confiable para obtener control total sobre sus archivos sin depender de servicios de nube públicos.

  • Instalaremos Seafile Professional Edition 13.x con PostgreSQL y Caddy en Ubuntu 24.04 LTS.
  • Se configurará HTTPS automático para un acceso seguro a su nube.
  • Obtendrá una comprensión completa de los requisitos mínimos de VPS para un funcionamiento estable de Seafile.
  • Revisaremos las medidas básicas de seguridad del servidor y la configuración del firewall.
  • La guía incluye scripts para la copia de seguridad de datos y la base de datos de Seafile.

¿Qué configuramos y por qué?

Diagrama: ¿Qué configuramos y por qué?
Diagrama: ¿Qué configuramos y por qué?

En la era del uso generalizado de tecnologías en la nube, donde nuestros datos se almacenan en servidores de terceros, la cuestión de la privacidad y el control se vuelve más relevante que nunca. Configuraremos Seafile, una solución potente y de alto rendimiento para la sincronización e intercambio de archivos, que instalará en su propio VPS. Esto le permitirá crear un almacenamiento en la nube privado, completamente controlado por usted, sin la necesidad de confiar sus datos confidenciales a grandes corporaciones.

Al final, obtendrá un análogo completo de Dropbox o Google Drive, pero con la diferencia de que todos los datos estarán en su servidor. Es una solución ideal para desarrolladores, startups, pequeños equipos y particulares que necesitan una plataforma fiable, segura y escalable para almacenar e intercambiar archivos, así como para la colaboración en documentos.

¿Por qué Seafile?

Seafile se distingue de otras soluciones por su arquitectura orientada al rendimiento y la fiabilidad. Almacena archivos en bloques, lo que garantiza una alta velocidad de sincronización, especialmente al trabajar con archivos grandes o con cambios frecuentes. Además, Seafile ofrece:

  • Alto rendimiento: Optimizado para una sincronización y acceso rápidos.
  • Control de versiones: Guarda automáticamente el historial de cambios de los archivos, permitiendo revertir fácilmente a versiones anteriores.
  • Cifrado: Admite el cifrado de datos en el lado del servidor y, opcionalmente, en el lado del cliente para una privacidad máxima.
  • Colaboración: Herramientas integradas para comentar archivos, edición colaborativa (a través de la integración con OnlyOffice/Collabora) y gestión de acceso.
  • Multiplataforma: Clientes para Windows, macOS, Linux, Android e iOS, así como una interfaz web.

Alternativas: Cloud-managed vs Self-hosted

Existen dos enfoques principales para el almacenamiento en la nube:

  • Cloud-managed (nubes gestionadas): Son servicios como Dropbox, Google Drive, OneDrive. Son fáciles de usar, no requieren configuración del servidor, pero usted confía completamente sus datos al proveedor y no tiene control sobre la infraestructura y la seguridad. El costo generalmente depende del volumen de datos y el número de usuarios.
  • Self-hosted (autoalojados): Son soluciones como Seafile, Nextcloud, Owncloud, que usted instala en su propio servidor (VPS o dedicated). Las principales ventajas son el control total sobre los datos, la privacidad, la posibilidad de personalizar según sus necesidades y la ausencia de una tarifa de suscripción por el servicio (solo por el servidor). La desventaja es que requiere conocimientos técnicos para la instalación y el mantenimiento.

Elegimos Seafile autoalojado en un VPS porque es el punto intermedio ideal: obtiene control total y privacidad con un costo relativamente bajo y la flexibilidad de un VPS, evitando las complejidades de comprar y mantener su propio servidor físico.

¿Qué configuración de VPS se necesita para esta tarea?

Diagrama: ¿Qué configuración de VPS se necesita para esta tarea?
Diagrama: ¿Qué configuración de VPS se necesita para esta tarea?

Elegir el VPS adecuado es clave para un funcionamiento estable y eficiente de Seafile. Los requisitos pueden variar según el número de usuarios, el volumen de datos almacenados y la intensidad de uso. A continuación, se presentan recomendaciones para diferentes escenarios.

Requisitos mínimos para equipos pequeños (hasta 10 usuarios)

  • Procesador (CPU): 2 vCPU. Seafile no es demasiado exigente con la CPU para operaciones básicas, pero los núcleos adicionales ayudarán con la indexación de archivos o cuando varios usuarios trabajen simultáneamente.
  • Memoria RAM: 4 GB. Esto es suficiente para ejecutar los contenedores Docker de Seafile, PostgreSQL y Caddy, así como para el almacenamiento en caché de datos. Si se planean integraciones con OnlyOffice/Collabora, se requerirá más RAM.
  • Disco (Almacenamiento): 100-200 GB SSD. El SSD es crítico para el rendimiento de la base de datos y el acceso a los archivos. El volumen depende del volumen de datos planificado. Tenga en cuenta que Seafile almacena versiones de archivos, lo que aumenta el espacio requerido.
  • Red (Network): Canal simétrico de 100 Mbps. Para la sincronización de archivos, no solo es importante la velocidad de descarga, sino también la velocidad de subida.

Para estos fines, puede adquirir un VPS con las características indicadas, por ejemplo, con 2 vCPU, 4 GB de RAM y un disco NVMe de 100 GB. Asegúrese de que el proveedor elegido ofrezca un canal fiable y un rendimiento de disco estable.

Configuración recomendada para equipos medianos (10-50 usuarios)

  • Procesador (CPU): 4 vCPU.
  • Memoria RAM: 8-16 GB.
  • Disco (Almacenamiento): 500 GB - 1 TB NVMe SSD. NVMe garantizará la máxima velocidad de acceso.
  • Red (Network): Canal simétrico de 1 Gbps.

Cuándo se necesita un Servidor Dedicado y no un VPS

Un Servidor Dedicado (dedicated server) se justifica cuando:

  • Gran número de usuarios: Más de 50 usuarios activos que trabajan constantemente con archivos.
  • Datos críticos y alta carga: Se requiere el máximo rendimiento, recursos garantizados y baja latencia.
  • Grandes volúmenes de datos: Varios terabytes o más, que requieren configuraciones de disco especiales (RAID).
  • Requisitos estrictos de seguridad y cumplimiento: Algunas normativas pueden exigir el aislamiento físico del hardware.
  • Integración con otros servicios: Si se planea alojar muchas otras aplicaciones que consumen muchos recursos en el mismo servidor.

En este caso, en lugar de un VPS, conviene considerar un servidor dedicado adecuado para obtener control total sobre el hardware y evitar la "vecindad" con otros clientes en el mismo servidor físico.

Ubicación del VPS: qué factores influye

La elección de la ubicación del VPS es importante por varias razones:

  • Latencia: Cuanto más cerca esté el servidor de la mayoría de sus usuarios, menor será el ping y más rápida la respuesta. Esto es crítico para un trabajo cómodo con el almacenamiento en la nube.
  • Legislación: Dependiendo del país donde se aloje el servidor, los datos pueden estar sujetos a diferentes jurisdicciones (por ejemplo, GDPR en la UE). Asegúrese de que la ubicación elegida cumpla con sus requisitos de privacidad y normativas legales.
  • Velocidad de conexión: Algunas regiones pueden tener mejores canales troncales, lo que afecta el rendimiento general de la red.

Siempre elija una ubicación que esté geográficamente más cerca de la mayoría de sus usuarios y que cumpla con sus requisitos de legislación de datos.

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Una vez que haya obtenido acceso a su nuevo VPS, es necesario realizar una serie de configuraciones básicas para garantizar la seguridad y estabilidad del sistema. Utilizaremos Ubuntu 24.04 LTS (Noble Numbat), que será una versión actual y soportada en 2026.

1. Conexión por SSH

Utilice un cliente SSH para conectarse a su servidor. Reemplace your_vps_ip con la dirección IP de su servidor y root con el nombre de usuario, si el proveedor le proporcionó otro.


ssh root@your_vps_ip

Al conectarse por primera vez, probablemente deberá introducir la contraseña de root.

2. Actualización del sistema

Siempre comience actualizando todos los paquetes a las versiones más recientes.


sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y # Eliminación de paquetes innecesarios

3. Creación de un nuevo usuario con permisos sudo

Trabajar como usuario root no es seguro. Cree un nuevo usuario y concédale permisos sudo.


sudo adduser seafileuser # Creamos un nuevo usuario
sudo usermod -aG sudo seafileuser # Lo añadimos al grupo sudo

Luego, salga de la sesión de root e inicie sesión con el nuevo usuario:


exit
ssh seafileuser@your_vps_ip

4. Configuración de claves SSH (recomendado)

Para mejorar la seguridad, se recomienda utilizar claves SSH en lugar de contraseñas. Genere las claves en su máquina local (si aún no lo ha hecho):


ssh-keygen -t ed25519 -C "[email protected]" # En la máquina local

Copie la clave pública al servidor:


ssh-copy-id seafileuser@your_vps_ip # En la máquina local

Después de esto, puede deshabilitar la autenticación por contraseña en /etc/ssh/sshd_config, estableciendo PasswordAuthentication no y reiniciando el servicio SSH. ¡Asegúrese de poder iniciar sesión con la clave antes de deshabilitar las contraseñas!

5. Configuración del firewall (UFW)

UFW (Uncomplicated Firewall) es una interfaz fácil de usar para iptables. Lo configuraremos para permitir solo las conexiones necesarias.


sudo apt install ufw -y # Instalación de UFW
sudo ufw allow OpenSSH # Permitimos SSH (puerto 22)
sudo ufw allow http # Permitimos HTTP (puerto 80)
sudo ufw allow https # Permitimos HTTPS (puerto 443)
sudo ufw enable # Habilitamos el firewall. Confirme con 'y'.
sudo ufw status # Verificamos el estado

Ahora su servidor está protegido contra conexiones no deseadas.

6. Instalación de Fail2Ban

Fail2Ban ayuda a protegerse contra ataques de fuerza bruta (brute-force) bloqueando temporalmente las direcciones IP desde las que se realizan demasiados intentos fallidos de inicio de sesión.


sudo apt install fail2ban -y # Instalación de Fail2Ban
sudo systemctl enable fail2ban # Habilitamos el inicio automático
sudo systemctl start fail2ban # Iniciamos el servicio

Cree un archivo de configuración local para Fail2Ban para que sus cambios no sean sobrescritos durante una actualización:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Puede editar /etc/fail2ban/jail.local para ajustar los parámetros (por ejemplo, el tiempo de bloqueo o el número de intentos). Asegúrese de que la sección [sshd] esté activa (enabled = true).


# Ejemplo de contenido de /etc/fail2ban/jail.local
[DEFAULT]
bantime = 10m
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Después de realizar los cambios, reinicie Fail2Ban:


sudo systemctl restart fail2ban

Su servidor ahora está listo para la instalación de Seafile.

Instalación de Software — Paso a Paso

Diagrama: Instalación de Software — Paso a Paso
Diagrama: Instalación de Software — Paso a Paso

Para instalar Seafile, utilizaremos Docker Compose. Este es un enfoque moderno y recomendado que simplifica significativamente el despliegue y la gestión de todos los componentes (Seafile, base de datos, servidor web) en contenedores aislados. Utilizaremos Seafile Professional Edition 13.x, la versión actual para 2026, que ofrece funciones avanzadas en comparación con la Community Edition.

1. Instalación de Docker y Docker Compose

Primero, instalaremos Docker Engine y Docker Compose en nuestro servidor.


# Actualizamos la lista de paquetes
sudo apt update

# Instalamos los paquetes necesarios para Docker
sudo apt install ca-certificates curl gnupg lsb-release -y

# Añadimos la clave GPG oficial 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

# Añadimos el repositorio de Docker a las fuentes de APT
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

# Actualizamos la lista de paquetes teniendo en cuenta el nuevo repositorio de Docker
sudo apt update

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

# Añadimos el usuario actual al grupo docker para ejecutar comandos sin sudo
sudo usermod -aG docker $USER

# Recargamos el grupo del usuario (o nos reconectamos por SSH)
newgrp docker

# Verificamos que Docker esté instalado correctamente (debería mostrar la versión)
docker --version
docker compose version

2. Creación de directorios para Seafile

Crearemos la estructura de directorios para almacenar los datos de Seafile y su configuración. Esto es importante para la persistencia de los datos.


sudo mkdir -p /opt/seafile
cd /opt/seafile
sudo mkdir -p {data,logs,db_data,conf} # Creamos directorios para datos, logs, BD y configuraciones

3. Descarga del archivo docker-compose.yml

Utilizaremos la imagen oficial de Seafile Professional Edition. Cree el archivo docker-compose.yml en el directorio /opt/seafile.


sudo nano docker-compose.yml

Pegue el siguiente contenido. Este archivo define tres servicios: db (PostgreSQL), memcached (para caché) y seafile (el servicio principal de Seafile).


version: '3.8'
services:
  db:
    image: postgres:15 # Versión actual de PostgreSQL para 2026
    container_name: seafile-db
    environment:
      - POSTGRES_USER=seafile
      - POSTGRES_PASSWORD=your_db_password # ¡Cambie a una contraseña segura!
      - POSTGRES_DB=seafile
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - /opt/seafile/db_data:/var/lib/postgresql/data/pgdata # Datos persistentes de la BD
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U seafile -d seafile"]
      interval: 10s
      timeout: 5s
      retries: 5

  memcached:
    image: memcached:1.6 # Versión actual de Memcached
    container_name: seafile-memcached
    restart: unless-stopped

  seafile:
    image: seafileltd/seafile-pro:13.0.0 # Versión actual de Seafile Professional (ejemplo, use la última)
    container_name: seafile
    ports:
      - "8000:8000" # Puerto para HTTP Seafile (para uso interno de Caddy)
      - "8082:8082" # Puerto para el servidor de archivos de Seafile
    volumes:
      - /opt/seafile/data:/shared # Directorio principal para los datos de Seafile
      - /opt/seafile/logs:/var/log/seafile # Directorio para los logs
      - /opt/seafile/conf:/opt/seafile/conf # Directorio para los archivos de configuración
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=your_db_password # Contraseña para PostgreSQL, debe coincidir con POSTGRES_PASSWORD
      - [email protected] # Su email de administrador
      - SEAFILE_ADMIN_PASSWORD=your_admin_password # Contraseña de administrador de Seafile (¡Cambie!)
      - SEAFILE_SERVER_HOSTNAME=your.domain.com # Su dominio
      - SEAFILE_SERVER_URL=https://your.domain.com # URL de acceso
      - TIME_ZONE=Europe/Moscow # Establezca su zona horaria
      - SEAFILE_IMAGE_VERSION=13.0.0 # Versión de la imagen de Seafile
    depends_on:
      db:
        condition: service_healthy # Iniciar Seafile solo después de que la BD esté lista
      memcached:
        condition: service_started
    restart: unless-stopped

IMPORTANTE:

  • Reemplace your_db_password por una contraseña segura y compleja.
  • Reemplace [email protected] por su email real.
  • Reemplace your_admin_password por una contraseña segura y compleja para el administrador de Seafile.
  • Reemplace your.domain.com por su nombre de dominio que utilizará para acceder a Seafile. Asegúrese de que el registro DNS para este dominio apunte a la dirección IP de su VPS.
  • Verifique la versión actual de seafileltd/seafile-pro en Docker Hub o en el sitio web oficial de Seafile y úsela en lugar de 13.0.0 si hay una más reciente disponible.

4. Inicio de Seafile

Ahora que docker-compose.yml está listo, podemos iniciar los contenedores.


cd /opt/seafile
sudo docker compose up -d # Iniciamos los contenedores en segundo plano

Espere unos minutos hasta que todos los contenedores se inicien y Seafile realice la inicialización inicial. Puede verificar el estado de los contenedores:


sudo docker compose ps

Todos los servicios (seafile-db, seafile-memcached, seafile) deben estar en estado running.

Configuración

Diagrama: Configuración
Diagrama: Configuración

Después de una instalación exitosa de Seafile a través de Docker Compose, el siguiente paso es configurar un servidor web para manejar el tráfico HTTPS y enrutar las solicitudes a Seafile. Utilizaremos Caddy, un servidor web moderno que gestiona automáticamente los certificados TLS de Let's Encrypt, lo que simplifica significativamente la configuración de HTTPS.

1. Preparación del nombre de dominio

Asegúrese de tener un nombre de dominio registrado (por ejemplo, cloud.yourdomain.com) y un registro DNS de tipo A o AAAA que apunte a la dirección IP de su VPS. Sin esto, Caddy no podrá obtener un certificado SSL.

2. Adición de Caddy a docker-compose.yml

Editaremos el archivo docker-compose.yml existente, añadiendo el servicio Caddy.


sudo nano /opt/seafile/docker-compose.yml

Añada el nuevo servicio caddy al final del archivo, y también cambie el puerto de seafile para que no entre en conflicto con Caddy, si inició Seafile sin Caddy inicialmente. Asegúrese de que los puertos 80 y 443 estén disponibles en su VPS (los abrimos en UFW anteriormente).


version: '3.8'
services:
  db:
    image: postgres:15
    container_name: seafile-db
    environment:
      - POSTGRES_USER=seafile
      - POSTGRES_PASSWORD=your_db_password
      - POSTGRES_DB=seafile
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - /opt/seafile/db_data:/var/lib/postgresql/data/pgdata
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U seafile -d seafile"]
      interval: 10s
      timeout: 5s
      retries: 5

  memcached:
    image: memcached:1.6
    container_name: seafile-memcached
    restart: unless-stopped

  seafile:
    image: seafileltd/seafile-pro:13.0.0
    container_name: seafile
    # Elimine o comente los puertos 8000 y 8082 si los especificó para acceso directo.
    # Caddy hará proxy de las solicitudes a los puertos internos del contenedor de Seafile.
    # ports:
    #   - "8000:8000"
    #   - "8082:8082"
    volumes:
      - /opt/seafile/data:/shared
      - /opt/seafile/logs:/var/log/seafile
      - /opt/seafile/conf:/opt/seafile/conf
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=your_db_password
      - [email protected]
      - SEAFILE_ADMIN_PASSWORD=your_admin_password
      - SEAFILE_SERVER_HOSTNAME=your.domain.com # Asegúrese de que este sea su dominio
      - SEAFILE_SERVER_URL=https://your.domain.com # Asegúrese de que este sea su dominio con HTTPS
      - TIME_ZONE=Europe/Moscow
      - SEAFILE_IMAGE_VERSION=13.0.0
    depends_on:
      db:
        condition: service_healthy
      memcached:
        condition: service_started
    restart: unless-stopped

  caddy:
    image: caddy:2.7.5-alpine # Versión actual de Caddy para 2026
    container_name: caddy
    ports:
      - "80:80" # HTTP
      - "443:443" # HTTPS
    volumes:
      - /opt/seafile/Caddyfile:/etc/caddy/Caddyfile # Configuración de Caddy
      - /opt/seafile/caddy_data:/data # Ubicación para certificados y datos de Caddy
    environment:
      - DOMAIN=your.domain.com # Su dominio
    restart: unless-stopped
    depends_on:
      - seafile # Caddy depende de Seafile

IMPORTANTE: Reemplace your.domain.com por su dominio real. Asegúrese de que SEAFILE_SERVER_URL en el servicio seafile también utilice https://your.domain.com.

3. Creación del archivo Caddyfile

Cree el archivo de configuración para Caddy en el directorio /opt/seafile/Caddyfile.


sudo nano /opt/seafile/Caddyfile

Pegue el siguiente contenido, reemplazando your.domain.com por su dominio:


your.domain.com {
    reverse_proxy /seafhttp/* seafile:8082 # Proxy para Seafile Fileserver
    reverse_proxy /* seafile:8000 # Proxy para la interfaz web principal de Seafile

    # Configuraciones adicionales de seguridad (opcional, pero recomendadas)
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains" always
        X-Frame-Options "DENY"
        X-Content-Type-Options "nosniff"
        X-XSS-Protection "1; mode=block"
        Referrer-Policy "strict-origin-when-cross-origin"
    }

    log {
        output file /var/log/caddy/access.log {
            roll_size 10MB
            roll_keep 5
        }
    }
}

Cree el directorio para los logs de Caddy:


sudo mkdir -p /opt/seafile/caddy_data /opt/seafile/logs/caddy
sudo chown -R 1000:1000 /opt/seafile/caddy_data # Asegúrese de que Caddy tenga permisos de escritura

4. Reinicio de Docker Compose

Ahora que todas las configuraciones están listas, reiniciaremos Docker Compose para aplicar los cambios.


cd /opt/seafile
sudo docker compose down # Detenemos y eliminamos los contenedores antiguos
sudo docker compose up -d # Iniciamos los nuevos con Caddy

Caddy solicitará e instalará automáticamente un certificado SSL para su dominio. Esto puede tardar unos minutos.

5. Verificación de la funcionalidad

Unos minutos después de iniciar, intente acceder a su Seafile a través de un navegador web, utilizando su nombre de dominio (por ejemplo, https://your.domain.com). Debería ver la página de inicio de sesión de Seafile con un certificado SSL válido.

También puede verificar la disponibilidad a través de curl:


curl -I https://your.domain.com

En la respuesta, debería ver el estado HTTP/2 200 y los encabezados que indican una conexión exitosa. Si hay problemas, revise los logs de Caddy y Seafile.


sudo docker compose logs caddy
sudo docker compose logs seafile

Inicie sesión utilizando el email del administrador ([email protected]) y la contraseña (your_admin_password) que especificó en docker-compose.yml. Después de iniciar sesión, podrá crear bibliotecas, subir archivos y configurar usuarios.

Copias de seguridad y mantenimiento

Diagrama: Copias de seguridad y mantenimiento
Diagrama: Copias de seguridad y mantenimiento

Las copias de seguridad son la piedra angular de cualquier sistema fiable. Para Seafile, es necesario crear copias de seguridad regularmente para que, en caso de fallo del servidor, corrupción de datos o eliminación accidental, pueda restaurar su trabajo. El mantenimiento incluye actualizaciones regulares y monitorización.

1. ¿Qué respaldar?

Para una recuperación completa de Seafile, necesitará tres componentes clave:

  1. Base de datos de Seafile: Contiene metadatos sobre archivos, usuarios, bibliotecas, permisos. Sin ella, Seafile no podrá funcionar.
  2. Directorio de datos de Seafile: Contiene los archivos en formato cifrado y deduplicado. Normalmente es /opt/seafile/data.
  3. Archivos de configuración: Los archivos docker-compose.yml y Caddyfile, así como cualquier otra configuración que haya podido modificar manualmente (por ejemplo, en /opt/seafile/conf).

2. Script sencillo de copia de seguridad automática

Crearemos un script sencillo para la copia de seguridad automática. Usaremos pg_dump para la base de datos y rsync para los archivos. Como lugar de almacenamiento, se puede utilizar un almacenamiento de objetos externo compatible con S3 u otro VPS.


sudo nano /opt/seafile/backup_seafile.sh

Pegue el siguiente código, reemplazando los marcadores de posición:


#!/bin/bash

# --- Configuración ---
BACKUP_DIR="/var/backups/seafile"
DB_USER="seafile"
DB_NAME="seafile"
DB_CONTAINER_NAME="seafile-db"
SEAFILE_DATA_DIR="/opt/seafile/data"
SEAFILE_CONF_DIR="/opt/seafile/conf"
CADDY_CONFIG_FILE="/opt/seafile/Caddyfile"
DOCKER_COMPOSE_FILE="/opt/seafile/docker-compose.yml"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")

# --- Creación del directorio para copias de seguridad ---
mkdir -p "$BACKUP_DIR/$TIMESTAMP"
echo "Directorio de copia de seguridad creado: $BACKUP_DIR/$TIMESTAMP"

# --- 1. Copia de seguridad de la base de datos PostgreSQL ---
echo "Creando copia de seguridad de la base de datos..."
# Obtenemos la contraseña de docker-compose.yml (inseguro para producción sin cifrado, es mejor usar .env)
# Para producción, se recomienda usar un archivo .env o secretos de Docker
DB_PASS=$(grep POSTGRES_PASSWORD /opt/seafile/docker-compose.yml | awk -F'=' '{print $2}' | xargs)
export PGPASSWORD=$DB_PASS
sudo docker exec $DB_CONTAINER_NAME pg_dump -U $DB_USER -d $DB_NAME > "$BACKUP_DIR/$TIMESTAMP/seafile_db.sql"
if [ $? -eq 0 ]; then
    echo "Copia de seguridad de la base de datos creada con éxito."
else
    echo "¡Error al crear la copia de seguridad de la base de datos!"
fi
unset PGPASSWORD

# --- 2. Copia de seguridad del directorio de datos de Seafile ---
echo "Copiando directorio de datos de Seafile..."
# Usamos sudo para acceder a /opt/seafile/data, ya que puede haber sido creado por root
sudo rsync -av --delete "$SEAFILE_DATA_DIR" "$BACKUP_DIR/$TIMESTAMP/"
if [ $? -eq 0 ]; then
    echo "Copia de seguridad de los datos de Seafile creada con éxito."
else
    echo "¡Error al copiar los datos de Seafile!"
fi

# --- 3. Copia de seguridad de los archivos de configuración ---
echo "Copiando archivos de configuración..."
cp "$SEAFILE_CONF_DIR"/ "$BACKUP_DIR/$TIMESTAMP/" 2>/dev/null
cp "$CADDY_CONFIG_FILE" "$BACKUP_DIR/$TIMESTAMP/"
cp "$DOCKER_COMPOSE_FILE" "$BACKUP_DIR/$TIMESTAMP/"
echo "Copia de seguridad de las configuraciones creada con éxito."

# --- Limpieza de copias de seguridad antiguas (por ejemplo, conservamos las de los últimos 7 días) ---
echo "Limpiando copias de seguridad antiguas..."
find "$BACKUP_DIR" -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
echo "Copias de seguridad antiguas eliminadas."

echo "Proceso de copia de seguridad completado."

Haga el script ejecutable:


sudo chmod +x /opt/seafile/backup_seafile.sh

3. Programación de copias de seguridad con Cron

Agregue el script al planificador Cron para su ejecución automática. Por ejemplo, para una copia de seguridad diaria a las 03:00 de la madrugada:


sudo crontab -e

Agregue la siguiente línea al final del archivo:


0 3    /opt/seafile/backup_seafile.sh >> /var/log/seafile_backup.log 2>&1

Esta línea significa: "A las 03:00 cada día de la semana, cada día del mes, cada mes del año, ejecutar el script backup_seafile.sh y redirigir su salida a un archivo de registro."

4. ¿Dónde almacenar las copias de seguridad?

Importante: No almacene las copias de seguridad en el mismo servidor que los datos de producción. Esto anula el propósito de la copia de seguridad en caso de fallo del disco en el VPS. Opciones recomendadas:

  • Almacenamiento de objetos externo compatible con S3: Barato, fiable, escalable. Utilice herramientas como s3cmd o rclone para la carga automática de copias de seguridad.
  • VPS separado: Puede alquilar un VPS pequeño con suficiente espacio en disco y configurar rsync por SSH para copiar las copias de seguridad.
  • Almacenamiento local con sincronización: Si tiene un NAS u otro servidor en su red local, puede configurar la sincronización de las copias de seguridad desde el VPS a este.

5. Actualizaciones: Rolling vs Ventana de mantenimiento

Las actualizaciones regulares son importantes para la seguridad y para obtener nuevas funciones. Dado que usamos Docker Compose, el proceso de actualización es relativamente sencillo.

  • Actualización del SO: Ejecute regularmente sudo apt update && sudo apt upgrade -y en su VPS.
  • Actualización de imágenes Docker de Seafile:
    1. Antes de actualizar, siempre realice una copia de seguridad completa.
    2. Cambie la etiqueta de la imagen de Seafile (por ejemplo, de seafileltd/seafile-pro:13.0.0 a seafileltd/seafile-pro:13.0.1 o latest, si es una versión estable) en su docker-compose.yml.
    3. Detenga los contenedores: sudo docker compose down.
    4. Descargue las nuevas imágenes: sudo docker compose pull.
    5. Inicie los contenedores: sudo docker compose up -d.

    Ventana de mantenimiento: Se recomienda realizar las actualizaciones de las imágenes Docker en una ventana de mantenimiento predefinida, cuando la actividad de los usuarios sea mínima. Esto permitirá evitar posibles problemas y solucionarlos rápidamente si surgen. Seafile normalmente no requiere un tiempo de inactividad prolongado para actualizaciones menores, pero siempre es mejor estar preparado.

  • Actualización de Caddy/PostgreSQL/Memcached: De manera similar a Seafile, actualice las etiquetas de las imágenes en docker-compose.yml y reinicie los contenedores.

Siempre revise la documentación oficial de Seafile antes de realizar actualizaciones de versiones importantes, ya que pueden ser necesarios pasos adicionales de migración de la base de datos.

Solución de problemas + Preguntas frecuentes

Durante la instalación y operación de Seafile, pueden surgir varios problemas. A continuación, se presentan respuestas a preguntas frecuentes y escenarios típicos de solución de problemas.

¿Qué hacer si Seafile no se inicia o no está disponible?

Problema: Después de ejecutar docker compose up -d, los contenedores no se inician o la interfaz web de Seafile no está disponible a través de su dominio.

Qué verificar:

  1. Estado de los contenedores: Ejecute sudo docker compose ps. Asegúrese de que todos los contenedores (seafile-db, seafile-memcached, seafile, caddy) estén en estado running. Si algún contenedor está en estado exited o restarting, pase al siguiente paso.
  2. Registros de los contenedores: Revise los registros del contenedor problemático, por ejemplo: sudo docker compose logs seafile o sudo docker compose logs caddy. Busque errores relacionados con la conexión a la base de datos, permisos, configuración o falta de recursos.
  3. Cortafuegos (UFW): Asegúrese de que los puertos 80 y 443 estén abiertos: sudo ufw status.
  4. DNS: Verifique que su nombre de dominio apunte correctamente a la dirección IP de su VPS usando dig your.domain.com o nslookup your.domain.com.
  5. Configuración de Caddyfile: Revise la sintaxis de /opt/seafile/Caddyfile. Cualquier error tipográfico puede causar que Caddy falle.
  6. Contraseñas en docker-compose.yml: Asegúrese de que las contraseñas para la base de datos (POSTGRES_PASSWORD y DB_ROOT_PASSWD) coincidan.
  7. Nombres de dominio en docker-compose.yml: Asegúrese de que SEAFILE_SERVER_HOSTNAME y SEAFILE_SERVER_URL contengan su dominio correcto.

Cómo solucionar: Corrija los errores en los archivos de configuración, reinicie los contenedores: sudo docker compose down && sudo docker compose up -d. Si el problema es con los certificados de Caddy, asegúrese de que su dominio sea accesible desde internet y no esté bloqueado por el cortafuegos.

No se puede obtener un certificado SSL de Let's Encrypt a través de Caddy. ¿Qué hacer?

Problema: Caddy informa un error al intentar obtener un certificado SSL, por ejemplo, "certificate acquisition failed".

Qué verificar:

  1. Registro DNS: La causa más común. Asegúrese de que el registro A para su dominio (por ejemplo, your.domain.com) apunte a la dirección IP pública de su VPS. Verifique esto con servicios como whatsmydns.net o localmente con dig your.domain.com +short. Los cambios de DNS pueden tardar varias horas.
  2. Disponibilidad de los puertos 80 y 443: Asegúrese de que su cortafuegos (UFW) permita las conexiones entrantes en los puertos 80 y 443. Caddy utiliza el puerto 80 para el desafío HTTP-01 de Let's Encrypt.
  3. Caddyfile: Verifique que el dominio correcto esté especificado en /opt/seafile/Caddyfile.
  4. Registros de Caddy: sudo docker compose logs caddy. Busque mensajes de error de Let's Encrypt.

Cómo solucionar: Corrija los registros DNS, abra los puertos en el cortafuegos, revise la configuración de Caddy. Después de la corrección, reinicie Caddy: sudo docker compose restart caddy.

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

Respuesta: Para un equipo pequeño (hasta 10 usuarios) o uso personal, un VPS con 2 vCPU, 4 GB de RAM y 100-200 GB de disco SSD será mínimamente suficiente. Es importante que el disco sea SSD para un buen rendimiento de E/S, especialmente para la base de datos. El canal de red debe ser de al menos 100 Mbps simétricos para garantizar una velocidad cómoda de sincronización y carga/descarga de archivos. Recuerde que cuantos más usuarios y datos, mayores serán los requisitos de recursos.

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

Respuesta: Para la mayoría de los escenarios de instalación de Seafile para equipos pequeños y medianos (hasta 50 usuarios), un VPS es la opción óptima. Ofrece un rendimiento suficiente, flexibilidad en el escalado y un costo significativamente menor en comparación con un servidor dedicado. Un servidor dedicado (dedicated) debe considerarse si tiene un número muy grande de usuarios (más de 50-100), datos críticos con altos requisitos de IOPS, enormes volúmenes de almacenamiento (varios terabytes), o si necesita control total sobre el hardware y la máxima aislamiento física por razones de seguridad o cumplimiento normativo. Para empezar, siempre es mejor comenzar con un VPS y luego escalar a un dedicado si surge una necesidad real.

¿Cómo actualizar Seafile a una nueva versión?

Respuesta: El proceso de actualización de Seafile, instalado a través de Docker Compose, consta de varios pasos. Primero, siempre realice una copia de seguridad completa de la base de datos y el directorio de datos de Seafile antes de comenzar la actualización. Luego, abra el archivo docker-compose.yml y cambie la etiqueta de la imagen de Seafile (por ejemplo, de seafileltd/seafile-pro:13.0.0 a seafileltd/seafile-pro:13.0.1 o a latest, si es una versión estable). Después de esto, ejecute sudo docker compose down para detener los contenedores actuales, sudo docker compose pull para descargar la nueva imagen y sudo docker compose up -d para iniciar Seafile con la nueva versión. A veces, en actualizaciones importantes, pueden ser necesarios pasos de migración adicionales, descritos en la documentación oficial de Seafile; siempre revísela antes de actualizar.

Seafile ocupa demasiado espacio. ¿Cómo reducir el consumo de disco?

Problema: El disco del VPS se llena rápidamente, especialmente con el uso activo de archivos y sus versiones.

Qué verificar y cómo solucionar:

  1. Versionado de archivos: Seafile almacena el historial de versiones de los archivos por defecto. Puede configurar una política de retención de versiones para cada biblioteca o globalmente para eliminar versiones antiguas después de un cierto tiempo. Esto se hace a través de la interfaz web del administrador.
  2. Papelera de reciclaje: Los archivos eliminados de las bibliotecas van primero a la papelera de reciclaje. Vacíe la papelera de reciclaje regularmente a través de la interfaz web del administrador.
  3. Recolección de basura (Garbage Collection): Seafile tiene una función incorporada de "recolección de basura" para eliminar bloques de datos no utilizados. Se puede ejecutar desde la interfaz web del administrador o manualmente en el contenedor de Seafile. Por ejemplo: sudo docker exec seafile /opt/seafile/seafile-server-latest/seaf-gc.sh. Esto puede llevar mucho tiempo para grandes volúmenes de datos.
  4. Tamaño del disco: Si los métodos mencionados no ayudan, es posible que simplemente necesite aumentar el espacio en disco de su VPS. La mayoría de los proveedores permiten hacerlo sin reinstalar el sistema.

¿Cómo cambiar el nombre de dominio de Seafile después de la instalación?

Respuesta: Si necesita cambiar el nombre de dominio de su Seafile, deberá realizar cambios en varios lugares. Primero, actualice el registro DNS para el nuevo dominio para que apunte a la dirección IP de su VPS. Luego, edite el archivo /opt/seafile/docker-compose.yml, cambiando los valores de SEAFILE_SERVER_HOSTNAME y SEAFILE_SERVER_URL al nuevo dominio. También edite /opt/seafile/Caddyfile, especificando el nuevo dominio en la primera línea. Después de guardar los cambios, ejecute sudo docker compose down && sudo docker compose up -d para que Caddy pueda solicitar un nuevo certificado SSL para el nuevo dominio y Seafile actualice sus enlaces internos.

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

¡Felicidades! Ha instalado y configurado con éxito su propio almacenamiento en la nube privado Seafile en su VPS. Ahora tiene control total sobre sus datos, alto rendimiento y seguridad, garantizados por HTTPS y copias de seguridad regulares. Ha creado una plataforma confiable para la sincronización de archivos y la colaboración, que satisface plenamente sus necesidades de privacidad y control.

Próximos pasos para el desarrollo de su almacenamiento en la nube:

  • Integración con OnlyOffice/Collabora Online: Para una colaboración completa en documentos en tiempo real, considere integrar Seafile con OnlyOffice o Collabora Online. Esto permitirá editar documentos directamente en el navegador.
  • Gestión avanzada de usuarios: Si tiene un equipo grande, configure la integración de Seafile con LDAP/Active Directory para una gestión centralizada de usuarios.
  • Monitoreo del rendimiento: Instale herramientas de monitoreo (por ejemplo, Prometheus + Grafana) para rastrear la carga de CPU, RAM, disco y red, con el fin de anticipar problemas y planificar el escalado.
  • Optimización del almacenamiento: Explore las capacidades de Seafile para configurar el almacenamiento, como el uso de almacenamiento externo compatible con S3 para bloques de archivos, lo que puede ser más rentable para volúmenes de datos muy grandes.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

Instalar Seafile en VPS para crear almacenamiento en la nube privado
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.