Cómo sincronizar y compartir archivos con Seafile en Ubuntu 18.04

El autor seleccionó a Wikimedia Foundation Inc. para recibir una donación como parte del programa Write for DOnations.
Introducción
Seafile es una plataforma de sincronización y uso compartido de archivos alojada en servidores propios y de código abierto. Los usuarios pueden almacenar y, opcionalmente, cifrar datos en sus propios servidores, con el único límite de espacio de almacenamiento. Con Seafile, puede compartir archivos y carpetas mediante sincronización multiplataforma y enlaces protegidos con contraseña a archivos con fecha de vencimiento. Una función de control de versiones de archivos significa que los usuarios pueden restaurar archivos o carpetas eliminados o modificados.
En este tutorial, instalará y configurará Seafile en un servidor Ubuntu 18.04. Utilizará MariaDB para almacenar datos para los diferentes componentes de Seafile y Apache como servidor proxy para gestionar el tráfico web. Después de completar este tutorial, podrá utilizar la interfaz web para acceder a Seafile desde clientes de escritorio o móviles, lo que le permitirá sincronizar y compartir sus archivos con otros usuarios o grupos en el servidor o con el público.
Prerrequisitos
Antes de comenzar esta guía, necesitará lo siguiente:
- Un servidor Ubuntu 18.04 con un mínimo de 2 GB de RAM configurado siguiendo este tutorial de configuración inicial del servidor para Ubuntu 18.04, incluido un usuario sudo no root y un firewall.
- Un servidor web Apache con un host virtual configurado para el dominio registrado siguiendo Cómo instalar el servidor web Apache en Ubuntu 18.04.
- Un servidor de base de datos MariaDB instalado y configurado. Siga los pasos del tutorial Cómo instalar MariaDB en Ubuntu 18.04.
- Un certificado SSL instalado en su servidor siguiendo este tutorial Cómo proteger Apache con Let's Encrypt en Ubuntu 18.04.
- Un nombre de dominio completamente registrado. Este tutorial lo utilizará
your_domain
en todo momento. - Los dos siguientes registros DNS están configurados para su servidor. Puede consultar esta introducción a DigitalOcean DNS para obtener detalles sobre cómo agregarlos.
- Un registro A que
your_domain
apunta a la dirección IP pública de su servidor. - Un registro A que
www.your_domain
apunta a la dirección IP pública de su servidor.
- Un registro A que
Paso 1: Creación de bases de datos para los componentes de Seafile
Seafile necesita tres componentes para funcionar correctamente. Estos tres componentes son:
- Seahub : interfaz web de Seafile, escrita en Python con el marco web Django. Desde Seahub, puedes acceder, administrar y compartir tus archivos mediante un navegador web.
- Servidor Seafile : el demonio del servicio de datos que administra la carga, descarga y sincronización de archivos sin procesar. No interactúa con el servidor directamente, sino que utiliza uno de los programas cliente o la interfaz web de Seahub.
- Servidor Ccnet : el demonio del servicio RPC que permite la comunicación interna entre los diferentes componentes de Seafile. Por ejemplo, cuando se utiliza Seahub, este puede acceder a los datos del servidor Seafile mediante el servicio RPC de Ccnet.
Cada uno de estos componentes almacena sus datos por separado en su propia base de datos. En este paso, creará las tres bases de datos MariaDB y un usuario antes de proceder a configurar el servidor.
Primero, inicie sesión en el servidor usando SSH con su nombre de usuario y dirección IP:
- ssh sammy@your_server_ip
Conéctese al servidor de base de datos MariaDB como administrador (raíz):
- sudo mariadb
En el indicador de MariaDB, utilice el siguiente comando SQL para crear el usuario de la base de datos:
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
A continuación, creará las siguientes bases de datos para almacenar los datos de los tres componentes de Seafile:
ccnetdb
para el servidor Ccnet.seahubdb
para la interfaz web de Seahub.seafiledb
para el servidor de archivos Seafile.
En el indicador de MariaDB, cree sus bases de datos:
- CREATE DATABASE ccnetdb CHARACTER SET = 'utf8';
- CREATE DATABASE seafiledb CHARACTER SET = 'utf8';
- CREATE DATABASE seahubdb CHARACTER SET = 'utf8';
Luego, otorgue todos los privilegios al usuario de la base de datos Seafile para acceder y realizar cambios en estas bases de datos:
- GRANT ALL PRIVILEGES ON ccnetdb.* to sammy@localhost;
- GRANT ALL PRIVILEGES ON seafiledb.* to sammy@localhost;
- GRANT ALL PRIVILEGES ON seahubdb.* to sammy@localhost;
Salga del indicador de MariaDB escribiendo exit
:
- exit
Ahora que ha creado un usuario y las bases de datos necesarias para almacenar los datos de cada uno de los componentes de Seafile, instalará las dependencias necesarias para la configuración del paquete del servidor Seafile.
Paso 2: Instalación de dependencias y descarga de Seafile
Algunas partes de Seafile están escritas en Python y, por lo tanto, requieren módulos y programas Python adicionales para funcionar. En este paso, instalará estas dependencias necesarias antes de descargar y extraer el paquete del servidor Seafile.
Primero, instala pip y setuptools , los administradores de paquetes de Python. Los paquetes Debian correspondientes se llaman python3-pip
y python3-setuptools
respectivamente. Puedes instalarlos usando apt
:
- sudo apt install -y python3-pip python3-setuptools
Una vez instalados pip y setuptools, puedes instalar dependencias adicionales desde el índice de paquetes de Python (PyPI) usando el pip3
comando:
- pip3 install Pillow captcha django-simple-captcha
NOTA: No es necesario utilizar sudo
el pip3 install
comando anterior. Estos paquetes se instalarán en el sammy
directorio de inicio del usuario y, por lo tanto, no requieren privilegios de root./home/sammy/.local/lib/python3.6/site-packages
Seafile requiere Pillow
, una biblioteca de Python para procesamiento de imágenes y captcha
para django-simple-captcha
proporcionar soporte captcha para autenticación.
Ahora que ha instalado las dependencias necesarias, puede descargar el paquete del servidor Seafile.
Seafile crea directorios adicionales durante la instalación. Para mantenerlos todos organizados, cree un nuevo directorio y acceda a él:
- mkdir seafile
- cd seafile
Ahora puede descargar la última versión ( 7.1.4
al momento de escribir este artículo) del servidor Seafile desde el sitio web ejecutando el siguiente comando:
- wget https://download.seadrive.org/seafile-server_7.1.4_x86-64.tar.gz
Seafile distribuye la descarga como un archivo comprimido tar, lo que significa que deberá extraerlo antes de continuar. Extraiga el archivo con tar
:
- tar -zxvf seafile-server_7.1.4_x86-64.tar.gz
Ahora cambie al directorio extraído:
- cd seafile-server-7.1.4
En esta etapa, ha descargado y extraído el paquete del servidor Seafile y también ha instalado las dependencias necesarias. Ahora está listo para configurar el servidor Seafile.
Paso 3: Configuración del servidor Seafile
Seafile necesita cierta información sobre su configuración antes de iniciar los servicios por primera vez. Esto incluye detalles como el nombre de dominio y la configuración de la base de datos. Para iniciar la serie de preguntas que le solicitan esta información, puede ejecutar el script setup_seafile_mysql.sh
que se incluye en el archivo que extrajo en el paso anterior.
Ejecute el script usando bash
:
- bash setup-seafile-mysql.sh
Presione ENTER
para continuar.
El script le hará una serie de preguntas. Cuando se mencionen valores predeterminados, al presionar la ENTER
tecla se utilizará ese valor.
Este tutorial utiliza Seafile
como nombre del servidor, pero puedes cambiarlo si es necesario.
What is the name of the server?It will be displayed on the client. 3 - 15 letters or digits[ server name ] Seafile
A continuación, ingrese el nombre de dominio para esta instancia de Seafile.
What is the ip or domain of the server?.For example: www.mycompany.com, 192.168.1.101[ This server's ip or domain ] your_domain
Para el puerto del servidor de archivos, presione ENTER
para aceptar el valor predeterminado.
Which port do you want to use for the seafile fileserver?[ default "8082" ]
El siguiente mensaje le permite confirmar la configuración de la base de datos. Puede crear nuevas bases de datos o utilizar bases de datos existentes para la configuración. Para este tutorial, ha creado las bases de datos necesarias en el Paso 1, así que seleccione la opción 2
aquí.
-------------------------------------------------------Please choose a way to initialize seafile databases:-------------------------------------------------------[1] Create new ccnet/seafile/seahub databases[2] Use existing ccnet/seafile/seahub databases[ 1 or 2 ] 2
Las preguntas restantes se relacionan con el servidor de base de datos MariaDB. Solo necesitará proporcionar el nombre de usuario y la contraseña del usuario mariadb que creó en el Paso 1. Presione ENTER
para aceptar los valores predeterminados para host
y port
.
What is the host of mysql server?[ default "localhost" ]What is the port of mysql server?[ default "3306" ]Which mysql user to use for seafile?[ mysql user for seafile ] sammyWhat is the password for mysql user "seafile"?[ password for seafile ] password
Después de proporcionar la contraseña, el script solicitará los nombres de las bases de datos de Seafile. Utilice ccnetdb
, seafiledb
y seahubdb
para este tutorial. El script verificará si hay una conexión exitosa con las bases de datos antes de continuar mostrando un resumen de la configuración inicial.
Enter the existing database name for ccnet:[ ccnet database ] ccnetdbverifying user "sammy" access to database ccnetdb ... doneEnter the existing database name for seafile:[ seafile database ] seafiledbverifying user "sammy" access to database seafiledb ... doneEnter the existing database name for seahub:[ seahub database ] seahubdbverifying user "sammy" access to database seahubdb ... done---------------------------------This is your configuration--------------------------------- server name: Seafile server ip/domain: your_domain seafile data dir: /home/sammy/seafile/seafile-data fileserver port: 8082 database: use existing ccnet database: ccnetdb seafile database: seafiledb seahub database: seahubdb database user: sammy--------------------------------Press ENTER to continue, or Ctrl-C to abort---------------------------------
Presione ENTER
para confirmar.
OutputGenerating ccnet configuration ...doneSuccessly create configuration dir /home/sammy/seafile/ccnet.Generating seafile configuration ...doneGenerating seahub configuration ...----------------------------------------Now creating seahub database tables ...----------------------------------------creating seafile-server-latest symbolic link ... done-----------------------------------------------------------------Your seafile server configuration has been finished successfully.-----------------------------------------------------------------run seafile server: ./seafile.sh { start | stop | restart }run seahub server: ./seahub.sh { start port | stop | restart port }-----------------------------------------------------------------If you are behind a firewall, remember to allow input/output of these tcp ports:-----------------------------------------------------------------port of seafile fileserver: 8082port of seahub: 8000When problems occur, Refer to https://github.com/haiwen/seafile/wikifor information.
Como ejecutará Seafile detrás de Apache, no es necesario abrir puertos 8082
ni 8000
en el firewall, por lo que puede ignorar esta parte de la salida.
Ha completado la configuración inicial del servidor. En el siguiente paso, configurará el servidor web Apache antes de iniciar los servicios de Seafile.
Paso 4: Configuración del servidor web Apache
En este paso, configurará el servidor web Apache para que reenvíe todas las solicitudes a Seafile. El uso de Apache de esta manera le permite utilizar una URL sin un número de puerto, habilitar conexiones HTTPS a Seafile y utilizar la funcionalidad de almacenamiento en caché que ofrece Apache para un mejor rendimiento.
Para comenzar a reenviar solicitudes, deberá habilitar el proxy_http
módulo en la configuración de Apache. Este módulo proporciona funciones para reenviar solicitudes HTTP y HTTPS. El siguiente comando habilitará el módulo:
- sudo a2enmod proxy_http
Nota: Los módulos Apache Rewrite y SSL también son necesarios para esta configuración. Ya ha habilitado estos módulos como parte de la configuración de Let's Encrypt en el segundo tutorial de Apache que aparece en la sección de requisitos previos.
A continuación, actualice la configuración del host virtual para your_domain
reenviar solicitudes al servidor de archivos Seafile y a la interfaz web de Seahub.
Abra el archivo de configuración en un editor de texto:
- sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
Las líneas de ServerAdmin
a SSLCertificateKeyFile
forman parte de la configuración inicial de Apache y Let's Encrypt que configuraste como parte del requisito previo. Agrega el contenido resaltado, comenzando en Alias
y terminando con la ProxyPassReverse
directiva:
/etc/apache2/sites-enabled/su_dominio-le-ssl.conf
IfModule mod_ssl.cVirtualHost *:443 ServerAdmin webmaster@localhost ServerName your_domain ServerAlias www.your_domain DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combinedSSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pemSSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pemInclude /etc/letsencrypt/options-ssl-apache.conf Alias /media /home/sammy/seafile/seafile-server-latest/seahub/media Location /media Require all granted /Location # seafile fileserver ProxyPass /seafhttp http://127.0.0.1:8082 ProxyPassReverse /seafhttp http://127.0.0.1:8082 RewriteEngine On RewriteRule ^/seafhttp - [QSA,L] # seahub web interface SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 ProxyPass / http://127.0.0.1:8000/ ProxyPassReverse / http://127.0.0.1:8000//VirtualHost/IfModule
La directiva Alias asigna la ruta URL your_domain/media a una ruta local en el sistema de archivos que utiliza Seafile. La siguiente Location
directiva permite el acceso al contenido de este directorio. Las directivas ProxyPass
and ProxyPassReverse
hacen que Apache actúe como un proxy inverso para este host, reenviando solicitudes a /
y /seafhttp
a la interfaz web de Seafile y al servidor de archivos que se ejecutan en los puertos de host locales 8000
y 8082
respectivamente. La RewriteRule
directiva pasa todas las solicitudes a /seafhttp
sin cambios y detiene el procesamiento de otras reglas ( [QSA,L]
).
Guardar y salir del archivo.
Pruebe si hay errores de sintaxis en la configuración del host virtual:
- sudo apache2ctl configtest
Si aparece el mensaje Syntax OK
, no hay problemas con tu configuración. Reinicia Apache para que los cambios surtan efecto:
- sudo systemctl restart apache2
Ya ha configurado Apache para que actúe como proxy inverso para el servidor de archivos Seafile y Seahub. A continuación, actualizará las URL en la configuración de Seafile antes de iniciar los servicios.
Paso 5: Actualización de la configuración de Seafile e inicio de los servicios
Como ahora está utilizando Apache para enviar todas las solicitudes a Seafile, deberá actualizar las URL en los archivos de configuración de Seafile en el conf
directorio usando un editor de texto antes de iniciar el servicio Seafile.
Abrir ccnet.conf
en un editor de texto:
- nano /home/sammy/seafile/conf/ccnet.conf
Modifique la SERVICE_URL
configuración en el archivo para que apunte a la nueva URL HTTPS sin el número de puerto, por ejemplo:
Actualizar /home/sammy/seafile/conf/ccnet.conf
SERVICE_URL = https://your_domain
Guarde y salga del archivo una vez que haya agregado el contenido.
Ahora abra seahub_settings.py
en un editor de texto:
- nano /home/sammy/seafile/conf/seahub_settings.py
Ahora puede agregar una FILE_SERVER_ROOT
configuración en el archivo para especificar la ruta donde el servidor de archivos escucha las cargas y descargas de archivos:
Actualizar /home/sammy/seafile/conf/seahub_settings.py
SECRET_KEY = "..."FILE_SERVER_ROOT = 'https://your_domain/seafhttp'
Guardar y salir seahub_settings.py
.
Ahora puede iniciar el servicio Seafile y la interfaz Seahub:
- cd /home/sammy/seafile/seafile-server-7.1.4
- ./seafile.sh start
- ./seahub.sh start
Como es la primera vez que inicia el servicio Seahub, se le solicitará que cree una cuenta de administrador. Ingrese una dirección de correo electrónico válida y una contraseña para este usuario administrador:
OutputWhat is the email for the admin account?[ admin email ] admin@your_domainWhat is the password for the admin account?[ admin password ] password-hereEnter the password again:[ admin password again ] password-here----------------------------------------Successfully created seafile admin----------------------------------------Seahub is startedDone.
Ábralo en un navegador web e inicie sesión con su dirección de correo electrónico y contraseña de administrador de Seafile.https://your_domain
Una vez que haya iniciado sesión correctamente, podrá acceder a la interfaz de administración o crear nuevos usuarios.
Ahora que ha verificado que la interfaz web funciona correctamente, puede habilitar estos servicios para que se inicien automáticamente al arrancar el sistema en el siguiente paso.
Paso 6: Habilitar el servidor Seafile para que se inicie al iniciar el sistema
Para permitir que el servidor de archivos y la interfaz web se inicien automáticamente durante el arranque, puede crear los systemd
archivos de servicio respectivos y activarlos.
Cree un systemd
archivo de servicio para el servidor de archivos Seafile:
- sudo nano /etc/systemd/system/seafile.service
Añade el siguiente contenido al archivo:
Crear /etc/systemd/system/seafile.service
[Unit]Description=SeafileAfter=network.target mariadb.service[Service]Type=forkingExecStart=/home/sammy/seafile/seafile-server-latest/seafile.sh startExecStop=/home/sammy/seafile/seafile-server-latest/seafile.sh stopUser=sammyGroup=sammy[Install]WantedBy=multi-user.target
Aquí, las líneas ExectStart
y ExecStop
indican los comandos que se ejecutan para iniciar y detener el servicio Seafile. El servicio se ejecutará con sammy
y . La línea especifica que el servicio Seafile se iniciará después de que se hayan iniciado los servicios de red y MySQL User
.Group
After
Guardar seafile.service
y salir.
Cree un systemd
archivo de servicio para la interfaz web de Seahub:
- sudo nano /etc/systemd/system/seahub.service
Esto es similar al servicio Seafile. La única diferencia es que la interfaz web se inicia después del servicio Seafile. Agregue el siguiente contenido a este archivo:
Crear /etc/systemd/system/seahub.service
[Unit]Description=Seafile hubAfter=network.target seafile.service[Service]Type=forkingExecStart=/home/sammy/seafile/seafile-server-latest/seahub.sh startExecStop=/home/sammy/seafile/seafile-server-latest/seahub.sh stopUser=sammyGroup=sammy[Install]WantedBy=multi-user.target
Guardar seahub.service
y salir.
Puede obtener más información sobre los archivos de unidad systemd en el tutorial Comprender las unidades Systemd y los archivos de unidad.
Por último, para permitir que los servicios Seafile y Seahub se inicien automáticamente durante el arranque, ejecute los siguientes comandos:
- sudo systemctl enable seafile.service
- sudo systemctl enable seahub.service
Cuando se reinicie el servidor, Seafile se iniciará automáticamente.
En este punto, has completado la configuración del servidor y ahora puedes probar cada uno de los servicios.
Paso 7: Prueba de la funcionalidad de sincronización y uso compartido de archivos
En este paso, probará la sincronización de archivos y la funcionalidad de uso compartido del servidor que ha configurado y se asegurará de que funcionen correctamente. Para ello, deberá instalar el programa cliente Seafile en una computadora independiente o en un dispositivo móvil.
Visite la página de descarga en el sitio web de Seafile y siga las instrucciones para instalar la última versión del programa en su computadora. Los clientes de Seafile están disponibles para las distintas distribuciones de Linux (Ubuntu, Debian, Fedora, Centos/RHEL, Arch Linux), MacOS y Windows. Los clientes móviles están disponibles para dispositivos Android y iPhone/iPad en las respectivas tiendas de aplicaciones.
Una vez que haya instalado el cliente Seafile, puede probar la funcionalidad de sincronización y uso compartido de archivos.
Abra el programa cliente Seafile en su computadora o dispositivo. Acepte la ubicación predeterminada para la carpeta Seafile y haga clic en Siguiente .
En la siguiente ventana, ingrese la dirección del servidor, el nombre de usuario y la contraseña, luego haga clic en Iniciar sesión .
En la página de inicio, haz clic con el botón derecho en Mi biblioteca y selecciona Sincronizar esta biblioteca . Acepta el valor predeterminado para la ubicación en tu computadora o dispositivo.
Añade un archivo, por ejemplo un documento o una foto, a la carpeta Mi biblioteca . Después de un tiempo, el archivo se cargará en el servidor. La siguiente captura de pantalla muestra el archivo photo.jpg copiado a la carpeta Mi biblioteca.
Ahora, inicie sesión en la interfaz web y verifique que su archivo esté presente en el servidor.https://your_domain
Haga clic en Compartir junto al archivo para generar un enlace de descarga para este archivo que puede compartir.
Ha verificado que la sincronización de archivos funciona correctamente y que puede usar Seafile para sincronizar y compartir archivos y carpetas desde múltiples dispositivos.
Conclusión
En este tutorial, configurará una instancia privada de un servidor Seafile. Ahora puede comenzar a usar el servidor para sincronizar archivos, agregar usuarios y grupos, y compartir archivos entre ellos o con el público sin depender de un servicio externo.
Cuando esté disponible una nueva versión del servidor, consulte la sección de actualización del manual para conocer los pasos necesarios para realizar una actualización.
Deja una respuesta