Seafile es un servicio de almacenamiento gratuito, de código abierto y auto-hospedado, muy similar a DropBox y NextCloud. Con Seafile, puedes sincronizar y compartir archivos, contactos y datos en cualquier dispositivo con enlaces protegidos por contraseña. Está escrito en lenguaje Python y usa MySQL para almacenar los datos. Seafile se puede instalar en los sistemas operativos Linux y Windows y clientes GUI para OS X, Android, Linux, iOS y Windows. Seafile viene con un amplio conjunto de características que incluyen multiplataforma, control de versiones, autenticación en dos factores, instantáneas, WebDAV, cifrado y muchos más.
En este tutorial, aprenderemos cómo instalar y configurar Seafile en un servidor cloud corriendo con Ubuntu 18.04.
Prerequisitos
- Un servidor vps cloud corriendo con Ubuntu 18.04.
- Un password root en tu servidor cloud vps.
Empezamos
Comencemos actualizando tu sistema a la última versión. Ejecuta el siguiente comando para actualizar tu sistema:
# apt-get update -y
# apt-get upgrade -y
Una vez actualizado, reinicia tu sistema para aplicar todas las actualizaciones.
A continuación, deberás instalar Python con todas las dependencias requeridas en tu servidor. Puedes instalarlas todas ejecutando el siguiente comando:
# apt-get install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests unzip wget
Una vez que estén instaladas todas las dependencias, ya puedes proceder al siguiente paso.
Instalar Apache y MariaDB
Primero necesitarás instalar Apache y MariaDB en tu servidor. Puedes instalar ambos con el siguiente comando:
# apt-get install apache2 mariadb-server mariadb-client -y
Una vez que ambos paquetes estén instalados, inicia Apache y MariaDB y permite que se inicien después de reiniciar el sistema con el siguiente comando:
# systemctl start apache2
# systemctl enable apache2
# systemctl start mariadb
# systemctl enable mariadb
Configuración de la Base de Datos para Seafile
A continuación, necesitarás crear bases de datos para los componentes de Seafile. Primero, entra en el shell de MariaDB con el siguiente comando:
# mysql -u root -p
Proporciona tu contraseña de root cuando se te solicite, luego crea tres bases de datos con el siguiente comando:
MariaDB [(none)]> CREATE DATABASE seafile;
MariaDB [(none)]> CREATE DATABASE ccnet;
MariaDB [(none)]> CREATE DATABASE seahub;
Después, crear un usuario para Seafile con el siguiente comando:
MariaDB [(none)]> CREATE USER 'seafile'@'localhost' IDENTIFIED BY 'password';
A continuación, concede todos los privilegios a las bases de datos arriba creadas:
MariaDB [(none)]> GRANT ALL ON seafile.* TO 'seafile'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
MariaDB [(none)]> GRANT ALL ON ccnet.* TO 'seafile'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
MariaDB [(none)]> GRANT ALL ON seahub.* TO 'seafile'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
A continuación, elimina los privilegios y sal del shell MariaDB con el siguiente comando:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Instala Seafile
Primero, deberás descargar la última versión del instalador de Seafile desde su sitio web oficial. Puede descargarlo con el siguiente comando:
# wget https://download.seadrive.org/seafile-server_7.0.4_x86-64.tar.gz
Una vez descargado, extrae el archivo descargado con el siguiente comando:
# tar -xvzf seafile-server_7.0.4_x86-64.tar.gz
A continuación, copia el directorio extraído en el directorio raíz de Apache con el siguiente comando:
# cp -r seafile-server-7.0.4 /var/www/html/seafile
A continuación, ejecuta el script de instalación de Seafile para iniciar la instalación:
# cd /var/www/html/seafile
# ./setup-seafile-mysql.sh
Durante la instalación, deberás responder una serie de preguntas.
Checking python on this machine ...
Checking python module: python-mysqldb ... Done.
-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at
https://github.com/haiwen/seafile/wiki
Press ENTER to continue
-----------------------------------------------------------------
What is the name of the server? It will be displayed on the client.
3 - 15 letters or digits
[ server name ] 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 ] 38.143.68.184
Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/var/www/html/seafile-data" ]
Which port do you want to use for the seafile fileserver?
[ default "8082" ]
-------------------------------------------------------
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
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 ] seafile
What is the password for mysql user "seafile"?
[ password for seafile ]
verifying password of user seafile ... done
Enter the existing database name for ccnet:
[ ccnet database ] ccnet
verifying user "seafile" access to database ccnet ... done
Enter the existing database name for seafile:
[ seafile database ] seafile
verifying user "seafile" access to database seafile ... done
Enter the existing database name for seahub:
[ seahub database ] seahub
verifying user "seafile" access to database seahub ... done
---------------------------------
This is your configuration
---------------------------------
server name: seafile
server ip/domain: 38.143.68.184
seafile data dir: /var/www/html/seafile-data
fileserver port: 8082
database: use existing
ccnet database: ccnet
seafile database: seafile
seahub database: seahub
database user: seafile
---------------------------------
Press ENTER to continue, or Ctrl-C to abort
Verifica toda la configuración y presiona ENTER para continuar la instalación. Una vez que la instalación se haya completado con éxito, deberías ver el siguiente resultado:
Checking python on this machine ...
Checking python module: python-mysqldb ... Done.
-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at
https://github.com/haiwen/seafile/wiki
Press ENTER to continue
-----------------------------------------------------------------
What is the name of the server? It will be displayed on the client.
3 - 15 letters or digits
[ server name ] 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 ] 38.143.68.184
Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/var/www/html/seafile-data" ]
Which port do you want to use for the seafile fileserver?
[ default "8082" ]
-------------------------------------------------------
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
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 ] seafile
What is the password for mysql user "seafile"?
[ password for seafile ]
verifying password of user seafile ... done
Enter the existing database name for ccnet:
[ ccnet database ] ccnet
verifying user "seafile" access to database ccnet ... done
Enter the existing database name for seafile:
[ seafile database ] seafile
verifying user "seafile" access to database seafile ... done
Enter the existing database name for seahub:
[ seahub database ] seahub
verifying user "seafile" access to database seahub ... done
---------------------------------
This is your configuration
---------------------------------
server name: seafile
server ip/domain: 38.143.68.184
seafile data dir: /var/www/html/seafile-data
fileserver port: 8082
database: use existing
ccnet database: ccnet
seafile database: seafile
seahub database: seahub
database user: seafile
---------------------------------
Press ENTER to continue, or Ctrl-C to abort
A continuación, configura los permisos correctos para Seafile con el siguiente comando:
# chown -R www-data:www-data /var/www/html/
A continuación, deberás establecer el valor de FILE_SERVER_ROOT. Puedes hacerlo editando el archivo seahub_settings.py:
# nano /var/www/html/conf/seahub_settings.py
Añade la siguiente línea:
FILE_SERVER_ROOT = 'http://38.143.68.184/seafhttp'
Guarda y cierra el archivo cuando hayas terminado.
Configura Apache para Seafile
A continuación, deberás configurar Apache como proxy inverso para Seafile. Puedes hacerlo creando el siguiente archivo:
# nano /etc/apache2/sites-available/seafile.conf
Añade las siguientes líneas:
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/seafile/
ServerName 38.143.68.184
Alias /media "/var/www/html/seahub/media"
<Directory /var/www/html/seafile/>
Options +FollowSymlinks
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/seafile
SetEnv HTTP_HOME /var/www/html/seafile
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteRule ^/seafhttp - [QSA,L]
</VirtualHost>
Guarda y cierra el archivo. Luego, habilita el archivo de host virtual Seafile y otros módulos necesarios con el siguiente comando:
# a2ensite seafile.conf
# a2enmod rewrite
# a2enmod proxy
# a2enmod proxy_http
# a2enmod headers
# a2enmod env
# a2enmod dir
# a2enmod mime
Finalmente, reinicia el servicio Apache para cargar todas las configuraciones:
# systemctl restart apache2
Crea un Usuario Administrador para Seafile
A continuación, deberás crear un usuario administrador y establecer una contraseña para ello.
Primero, inicia el servicio Seafile con el siguiente comando:
# su -p -l www-data -s /bin/bash -c "./seafile.sh start"
A continuación, inicia el servicio Seahub para crear una cuenta de administrador con el siguiente comando:
# su -p -l www-data -s /bin/bash -c "./seahub.sh start"
Se te pedirá que crees una cuenta de administrador como se muestra a continuación:
LC_ALL is not set in ENV, set to en_US.UTF-8
Starting seahub at port 8000 ...
----------------------------------------
It's the first time you start the seafile server. Now let's create the admin account
----------------------------------------
What is the email for the admin account?
[ admin email ] admin@example.com
What is the password for the admin account?
[ admin password ]
Enter the password again:
[ admin password again ]
----------------------------------------
Successfully created seafile admin
----------------------------------------
Seahub is started
Done.
Crea el archivo de servicio Systemd para Seafile y Seahub
A continuación, deberás crear un archivo de servicio systemd para administrar los servicios Seafile y Seahub.
Primero, crea un archivo de servicio seafile con el siguiente comando:
# nano /etc/systemd/system/seafile.service
Añade las siguientes líneas:
[Unit]
Description=Seafile
After= mysql.service
After=network.target
[Service]
User=www-data
Group=www-data
Type=forking
ExecStart=/var/www/html/seafile-server-latest/seafile.sh start
ExecStop=/var/www/html/seafile-server-latest/seafile.sh stop
[Install]
WantedBy=multi-user.target
Guarda y cierre el archivo. Luego, crea un archivo de servicio systemd para Seahub con el siguiente comando:
# nano /etc/systemd/system/seahub.service
Añade las siguientes líneas:
[Unit]
Description=Seafile
After= mysql.service
After=network.target
[Service]
User=www-data
Group=www-data
Type=forking
ExecStart=/var/www/html/seafile-server-latest/seahub.sh start
ExecStop=/var/www/html/seafile-server-latest/seahub.sh stop
[Install]
WantedBy=multi-user.target
Guarda y cierre el archivo. Luego, vuelve a cargar el demonio systemd con el siguiente comando:
# systemctl daemon-reload
A continuación, reinicia el servicio Seafile y Seahub y permite que se inicien después de reiniciar el sistema con el siguiente comando:
# systemctl restart seafile
# systemctl enable seafile
# systemctl restart seahub
# systemctl enable seahub
Accede a la Interfaz Web de Seafile
Ahora abre tu navegador web y escribe la URL http: // your-server-ip. Serás redirigido a la página de inicio de sesión de Seafile:
Proporciona tu nombre de usuario y contraseña de administrador, y haz clic en el botón Iniciar Sesión. Deberías ver el panel predeterminado de Seafile en la siguiente pantalla:
¡Felicidades! Has instalado y configurado correctamente Seafile en el servidor cloud corriendo conUbuntu 18.04.
Ya puedes compartir archivos, contactos y datos con cualquier usuario 🙂