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

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Creación de bases de datos para los componentes de Seafile
  • Paso 2: Instalación de dependencias y descarga de Seafile
  • Paso 3: Configuración del servidor Seafile
  • Paso 4: Configuración del servidor web Apache
  • Paso 5: Actualización de la configuración de Seafile e inicio de los servicios
  • Paso 6: Habilitar el servidor Seafile para que se inicie al iniciar el sistema
  • Paso 7: Prueba de la funcionalidad de sincronización y uso compartido de archivos
  • Conclusión
  • 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_domainen 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_domainapunta a la dirección IP pública de su servidor.
      • Un registro A que www.your_domainapunta a la dirección IP pública de su servidor.

    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:

    1. ssh sammy@your_server_ip

    Conéctese al servidor de base de datos MariaDB como administrador (raíz):

    1. sudo mariadb

    En el indicador de MariaDB, utilice el siguiente comando SQL para crear el usuario de la base de datos:

    1. 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:

    • ccnetdbpara el servidor Ccnet.
    • seahubdbpara la interfaz web de Seahub.
    • seafiledbpara el servidor de archivos Seafile.

    En el indicador de MariaDB, cree sus bases de datos:

    1. CREATE DATABASE ccnetdb CHARACTER SET = 'utf8';
    2. CREATE DATABASE seafiledb CHARACTER SET = 'utf8';
    3. 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:

    1. GRANT ALL PRIVILEGES ON ccnetdb.* to sammy@localhost;
    2. GRANT ALL PRIVILEGES ON seafiledb.* to sammy@localhost;
    3. GRANT ALL PRIVILEGES ON seahubdb.* to sammy@localhost;

    Salga del indicador de MariaDB escribiendo exit:

    1. 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-pipy python3-setuptoolsrespectivamente. Puedes instalarlos usando apt:

    1. 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 pip3comando:

    1. pip3 install Pillow captcha django-simple-captcha

    NOTA: No es necesario utilizar sudoel pip3 installcomando anterior. Estos paquetes se instalarán en el sammydirectorio 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 captchapara django-simple-captchaproporcionar 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:

    1. mkdir seafile
    2. cd seafile

    Ahora puede descargar la última versión ( 7.1.4al momento de escribir este artículo) del servidor Seafile desde el sitio web ejecutando el siguiente comando:

    1. 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:

    1. tar -zxvf seafile-server_7.1.4_x86-64.tar.gz

    Ahora cambie al directorio extraído:

    1. 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.shque se incluye en el archivo que extrajo en el paso anterior.

    Ejecute el script usando bash:

    1. bash setup-seafile-mysql.sh

    Presione ENTERpara continuar.

    El script le hará una serie de preguntas. Cuando se mencionen valores predeterminados, al presionar la ENTERtecla se utilizará ese valor.

    Este tutorial utiliza Seafilecomo 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 ENTERpara 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 2aquí.

    -------------------------------------------------------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 ENTERpara aceptar los valores predeterminados para hosty 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, seafiledby seahubdbpara 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 ENTERpara 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 8082ni 8000en 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_httpmó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:

    1. 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_domainreenviar solicitudes al servidor de archivos Seafile y a la interfaz web de Seahub.

    Abra el archivo de configuración en un editor de texto:

    1. sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf

    Las líneas de ServerAdmina SSLCertificateKeyFileforman 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 Aliasy terminando con la ProxyPassReversedirectiva:

    /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 Locationdirectiva permite el acceso al contenido de este directorio. Las directivas ProxyPassand ProxyPassReversehacen que Apache actúe como un proxy inverso para este host, reenviando solicitudes a /y /seafhttpa la interfaz web de Seafile y al servidor de archivos que se ejecutan en los puertos de host locales 8000y 8082respectivamente. La RewriteRuledirectiva pasa todas las solicitudes a /seafhttpsin 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:

    1. sudo apache2ctl configtest

    Si aparece el mensaje Syntax OK, no hay problemas con tu configuración. Reinicia Apache para que los cambios surtan efecto:

    1. 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 confdirectorio usando un editor de texto antes de iniciar el servicio Seafile.

    Abrir ccnet.confen un editor de texto:

    1. nano /home/sammy/seafile/conf/ccnet.conf

    Modifique la SERVICE_URLconfiguració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.pyen un editor de texto:

    1. nano /home/sammy/seafile/conf/seahub_settings.py

    Ahora puede agregar una FILE_SERVER_ROOTconfiguració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:

    1. cd /home/sammy/seafile/seafile-server-7.1.4
    2. ./seafile.sh start
    3. ./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 systemdarchivos de servicio respectivos y activarlos.

    Cree un systemdarchivo de servicio para el servidor de archivos Seafile:

    1. 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 ExectStarty ExecStopindican los comandos que se ejecutan para iniciar y detener el servicio Seafile. El servicio se ejecutará con sammyy . La línea especifica que el servicio Seafile se iniciará después de que se hayan iniciado los servicios de red y MySQL User.GroupAfter

    Guardar seafile.servicey salir.

    Cree un systemdarchivo de servicio para la interfaz web de Seahub:

    1. 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.servicey 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:

    1. sudo systemctl enable seafile.service
    2. 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.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion