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!