Cómo implementar Seafile Server con Docker para alojar su propia solución de sincronización y uso compartido de archivos

En primer lugar, ¿qué es Seafile?

Seafile es un programa de sincronización de archivos autohospedado que funciona con el modelo servidor-cliente, ya que tiene varios dispositivos como su computadora portátil y teléfono que se conectan a un servidor central.

A diferencia de algunas alternativas más populares como Nextcloud o ownCloud, Seafile intenta seguir la filosofía de “hacer una sola cosa, pero hágalo bien”. Del mismo modo, Seafile no tiene elementos adicionales integrados como la integración de Contactos o Calendario.

En cambio, Seafile se centra únicamente en la sincronización de archivos, el intercambio y las cosas que lo rodean, y eso es todo. Sin embargo, como resultado de eso, termina haciéndolo extremadamente bien.

Implementación de Seafile Server con Docker y NGINX

Advanced tutorial

La mayoría de los tutoriales de It’s FOSS están dirigidos a principiantes. Este no lo es. Está destinado a usuarios avanzados que juegan mucho con proyectos de bricolaje y prefieren autohospedarse.
Este tutorial asume que se siente cómodo usando la línea de comandos y que, al menos, tiene un conocimiento decente de los programas que usaremos.

Si bien todo el proceso podría realizarse sin usar NGINX en absoluto, el uso de NGINX permitirá una configuración más sencilla, además de facilitar significativamente el autohospedaje de más servicios en el futuro.

Si desea utilizar una configuración completa de Docker, puede configurar NGINX dentro de Docker también, pero solo hará las cosas más complejas y no agregará demasiado beneficio, y tampoco se tratará en este tutorial.

Instalación y configuración de NGINX

Usaré Ubuntu en este tutorial y, por lo tanto, usaré apt para instalar paquetes. Si utiliza Fedora o alguna otra distribución que no sea Debian, utilice el administrador de paquetes de su distribución.

NGINX, además de ser un servidor web, es lo que se conoce como proxy. Funcionará como la conexión entre el servidor Seafile e Internet, al mismo tiempo que facilitará el manejo de varias tareas.

Para instalar NGINX, use el siguiente comando:

sudo apt install nginx

Si desea utilizar HTTPS (ese pequeño candado en su navegador), también necesitará instalar Certbot:

sudo apt install certbot python3-certbot-nginx

A continuación, debe configurar NGINX para conectarse a la instancia de Seafile que configuramos más adelante.

Primero, ejecute el siguiente comando:

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

Enter el siguiente texto en el archivo:

server {
server_name localhost;
location / {
proxy_pass https://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

Importante: Reemplazar localhost sobre el nombre del servidor línea con la dirección desde la que accederá a su servidor (es decir, seafile.example.con o 192.168.0.0). ¿No estás seguro de qué poner?

  • Si está probando por el simple hecho de hacerlo, use localhost. Esta configuración solo le permite acceder al servidor desde su computadora, y eso es.
  • Si desea utilizar Seafile a través de su conexión WiFi local (cualquier dispositivo en la misma red WiFi que usted), debe ingresar la dirección IP de su computadora. También puede considerar configurar una dirección IP estática, aunque no es necesario.
  • Si tiene una dirección IP pública que sabe que apunta a su sistema, úsela.
  • Si tiene un nombre de dominio (p. Ej. example.con, example.org) y una dirección IP pública para su sistema, cambie su configuración de DNS para apuntar el nombre de dominio a la dirección IP de su sistema. Esto también requerirá que la dirección IP pública apunte a su sistema.

Ahora necesita copiar el archivo de configuración al directorio que NGINX busca en busca de archivos, luego reiniciar NGINX:

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

Si configura Certbot, también deberá ejecutar lo siguiente para configurar HTTPS:

sudo certbot

Si se le pide que redirija el tráfico HTTP a HTTPS, elija 2.

Ahora sería un buen momento para asegurarnos de que todo lo que hemos configurado hasta ahora funciona. Si visita su sitio, debería aparecer una pantalla que diga algo en las líneas de 502 Bad Gateway.

Instalar Docker y Docker Compose

¡Ahora para entrar en las cosas divertidas!

Lo primero es lo primero, debes tener Estibador y Docker Compose instalado. Se necesita Docker Compose para utilizar un archivo docker-compose.yml, que hará que la administración de los distintos Docker contenedores Seafile necesita más fácil.

Docker y Docker Compose se pueden instalar con el siguiente comando:

sudo apt install docker.io docker-compose

Para comprobar si Docker está instalado y en ejecución, ejecute lo siguiente:

sudo docker run --rm hello-world

Debería ver algo similar a esto en su terminal si se completó correctamente:

Si desea evitar agregar sudo al comienzo de la docker comando, puede ejecutar los siguientes comandos para agregarse al docker grupo:

sudo groupadd docker
sudo usermod -aG docker $USER

El resto de este tutorial asume que ejecutó los dos comandos anteriores. Si no lo hizo, agregue sudo a todos los comandos que comienzan con docker o docker-compose.

Instalación de Seafile Server

Esta parte es significativamente más fácil que la anterior. Todo lo que necesita hacer es poner texto en un archivo y ejecutar algunos comandos.

Abre una terminal. Luego cree un directorio donde le gustaría que se almacene el contenido del servidor Seafile e ingrese el directorio:

mkdir ~/seafile-server && cd ~/seafile-server

Vaya al directorio que creó y ejecute lo siguiente:

nano docker-compose.yml

A continuación, ingrese el texto a continuación en la ventana que aparece:

version: '2.0'
services:
db:
image: mariadb
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_LOG_CONSOLE=true
volumes:
- ./data/mariadb:/var/lib/mysql
networks:
- seafile-net

memcached:
image: memcached
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net

seafile:
image: seafileltd/seafile-mc
container_name: seafile
ports:
- "8080:80"
volumes:
- ./data/app:/shared
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=password
- TIME_ZONE=Etc/UTC
- [email protected]
- SEAFILE_ADMIN_PASSWORD=password
- SEAFILE_SERVER_LETSENCRYPT=false
- SEAFILE_SERVER_HOSTNAME=docs.seafile.com
depends_on:
- db
- memcached
networks:
- seafile-net

networks:
seafile-net:

Antes de guardar el archivo, es necesario cambiar algunas cosas:

  • MYSQL_ROOT_PASSWORD: Cambie a una contraseña más segura, no es necesario que la recuerde, así que no intente elegir nada fácil. Si necesita ayuda para hacer una, use un generador de contraseñas. Recomendaría 20 caracteres de largo y evitar los caracteres especiales (todos los [email protected]# $% ^ & * símbolos).
  • DB_ROOT_PASSWD: Cambia al valor que estableciste MYSQL_ROOT_PASSWORD.
  • SEAFILE_ADMIN_EMAIL: Establece la dirección de correo electrónico para admin cuenta.
  • SEAFILE_ADMIN_PASSWORD: Establece la contraseña para admin cuenta. Evite hacer esto igual que MYSQL_ROOT_PASSWORD o DB_ROOT_PASSWD.
  • SEAFILE_SERVER_HOSTNAME: Establezca la dirección que estableció en la configuración de NGINX.

Una vez hecho esto, puedes sacar todo el tema con docker-compose:

docker-compose up -d

Puede tomar uno o dos minutos dependiendo de su conexión a Internet, ya que tiene que derribar varios contenedores que Seafile necesita para ejecutar.

Después de que esté listo, dale unos minutos más para terminar. También puede verificar el estado de la misma ejecutando lo siguiente:

docker logs seafile

Cuando haya terminado, verá el siguiente resultado:

A continuación, escriba la dirección que configuró SEAFILE_SERVER_HOSTNAME en su navegador, y debería estar en una pantalla de inicio de sesión.

¡Y ahí tienes! Ahora todo está completamente funcional y listo para ser utilizado con los clientes.

Instalación de los clientes Seafile

Seafile en el móvil está disponible en Google Play, F-Droid, y en el Tienda de aplicaciones iOS. Seafile también tiene clientes de escritorio disponibles para Linux, Windows y Mac, disponibles aquí.

Seafile está disponible en los sistemas Ubuntu a través de la seafile-gui paquete:

sudo apt install seafile-gui

Seafile también está en el AUR para usuarios de Arch a través del seafile-client paquete.

Cerrando

Siéntase libre de explorar a los clientes y todo lo que tienen que ofrecer. Hablaré de todo lo que los clientes de Seafile son capaces de hacer en un artículo futuro (estad atentos ?).

Si algo no funciona bien, o simplemente tiene una pregunta en general, no dude en dejarla en los comentarios a continuación. ¡Intentaré responder siempre que pueda!