Cómo instalar el servidor Seafile con Nginx y Letsencrypt en FreeBSD 12.0
Seafile es un sistema de alojamiento de archivos y almacenamiento en la nube de código abierto con funciones avanzadas como sincronización desde múltiples plataformas (sistema multiplataforma), protección de la privacidad con encriptación de archivos incorporada y soporte para autenticación de dos factores (TFA), control de versiones, bloqueo de archivos, edición en línea y muchas más. Seafile está escrito en lenguaje de programación Python y proporciona funciones similares a las de Dropbox, mega.co.nz y otros.
En este tutorial, te mostraremos paso a paso cómo instalar y configurar el servidor Seafile con el servidor web Nginx, la base de datos MySQL y SSL Letsencrypt. Instalaremos el servidor Seafile bajo el servidor web Nginx con HTTPS SSL Letsencrypt activado, utilizando MySQL 5.7 en el sistema FreeBSD 12.0.
Para esta guía, instalaremos el Servidor Seafile en el sistema FreeBSD 12.0 con 2GB de RAM y 2 CPUs.
Qué haremos
- Actualizar y actualizar paquetes
- Instalar el servidor web Nginx
- Instalar y configurar MySQL
- Instalar Seafile y Seahub Server
- Configurar Seafile y Seahub Server
- Instalar Certbot y Generar SSL Letsencrypt
- Configurar el host virtual Nginx para el servidor Seafile
- Probar
Paso 1 – Actualizar y actualizar paquetes
En primer lugar, actualizaremos el repositorio de paquetes de FreeBSD y actualizaremos todos los paquetes instalados a la última versión.
Actualiza el repositorio de FreeBSD y actualiza todos los paquetes utilizando el comando pkg que se indica a continuación.
pkg update pkg upgrade
Una vez completada la instalación, pasa al siguiente paso.
Paso 2 – Instala el servidor web Nginx
Tras actualizar todos los paquetes a la última versión, instalaremos el servidor web Nginx.
Instala Nginx en el sistema FreeBSD usando el comando pkg que se indica a continuación.
pkg install nginx
Una vez completada la instalación, añade el servicio nginx al arranque del sistema.
sysrc nginx_enable="YES"
A continuación, inicia el servicio nginx.
service nginx start
Como resultado, el servidor web Nginx está en marcha en el sistema FreeBSD. Compruébalo utilizando los siguientes comandos.
service nginx status sockstat -l4
El servicio Nginx se está ejecutando con el puerto HTTP 80 por defecto.
Paso 3 – Instalar y configurar el servidor MySQL
Ahora instalaremos la base de datos MySQL en el sistema FreeBSD. Instalaremos el servidor MySQL 5.7, restableceremos la contraseña raíz por defecto y crearemos una nueva base de datos y un nuevo usuario para la instalación de Seafile.
Instala MySQL 5.7 utilizando el comando pkg que aparece a continuación.
pkg install mysql57-server mysql57-client
Una vez finalizada la instalación, obtendrás la contraseña raíz de MySQL generada por defecto en el archivo ‘~/.mysql-secret’.
Ahora añade el servicio MySQL al arranque del sistema e inicia el servicio.
sysrc mysql_enable="YES" service mysql-server start
El servicio MySQL ya está en marcha.
A continuación, debemos cambiar la contraseña raíz de MySQL generada por defecto antes de crear una nueva base de datos. Muestra la contraseña raíz de MySQL generada por defecto utilizando el comando cat como se indica a continuación.
cat ~/.mysql-secret
Copia la contraseña raíz generada, inicia sesión en el intérprete de comandos MySQL como usuario raíz.
mysql -u root -p Paste the PASSWORD:
Cambia la contraseña raíz de MySQL utilizando la siguiente consulta.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newrootpassmysql';
Después de esto, crea un nuevo usuario MySQL y bases de datos para nuestra instalación Seafile utilizando las siguientes consultas MySQL.
create database `ccnet-db` character set = 'utf8'; create database `seafile-db` character set = 'utf8'; create database `seahub-db` character set = 'utf8';
create user ‘seafile’@’localhost’ identified by ‘seafilepassdb@’;
GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost;
flush privileges;
exit
Ahora se han creado las bases de datos MySQL y el usuario para la instalación de Seafile, y estamos listos para instalar el Servidor Seafile.
Paso 4 – Instalar el Servidor Seafile y Seahub
En este paso, vamos a instalar Seafile y Seahub desde el repositorio de FreeBSD y luego configurarlo para que utilice MySQL como base de datos.
Ahora instala el seafile y el seahub utilizando el comando pkg que aparece a continuación.
pkg install seafile-server pkg install seahub
Una vez completada la instalación, añade los servicios seafile y seahub al arranque.
sysrc seafile_enable="YES" sysrc seahub_enable="YES"
A continuación, ve al directorio de instalación de seafile ‘/usr/local/www/haiwen/seafile-server’ y ejecuta el archivo de instalación del sistema de base de datos MySQL.
cd /usr/local/www/haiwen/seafile-server ./setup-seafile-mysql.sh
Ahora se te harán algunas preguntas sobre la instalación de seafile.
Escribe el nombre de tu servidor, el nombre del dominio del servidor o la dirección IP, el directorio de datos de seafile, el puerto del servidor de seafile y elige el número «2» para utilizar la base de datos MySQL existente.
Ahora escribe los detalles sobre los datos de tu base de datos y el usuario como se indica a continuación.
Una vez completada toda la configuración de la base de datos, obtendrás el resultado que se muestra a continuación.
Como resultado, la instalación del servidor seafile se ha realizado correctamente.
Ahora inicia los servicios seafile y seahub utilizando el siguiente comando.
service seafile start service seahub start
El servicio seafile está funcionando en el puerto por defecto «8082», y el servicio seahub está funcionando en el puerto por defecto «8000».
Paso 5 – Configurar los servidores Seafile y Seahub
En este tutorial, configuraremos el seafile detrás del proxy inverso nginx y utilizando el nombre de dominio ‘archivos.midominio.comf’. Por lo tanto, necesitamos una configuración adicional tanto para Seafile como para seahub.
Ahora ve al directorio de instalación de seafile ‘/usr/local/www/haiwen/conf’.
cd /usr/local/www/haiwen/conf
Edita el archivo de configuración ‘ccnet.conf’.
vim ccnet.conf
Cambia ‘SERVICE_URL’ por tu nombre de dominio y cambia ‘http’ por ‘https’.
SERVICE_URL = https://files.mydomain.com/
Guárdalo y ciérralo.
Ahora edita el archivo ‘seafile.conf’ utilizando el editor vim.
vim seafile.conf
Añade la opción ‘host’ a ‘127.0.0.1’ para la configuración del ‘servidor de archivos’.
[fileserver] host = 127.0.0.1 port = 8082
Guárdalo y ciérralo.
A continuación, tenemos que definir la configuración ‘FILE_SERVER_ROOT’ con nuestro nombre de dominio editando la configuración ‘seahub_settings.py’.
vim seahub_settings.py
Cambia el nombre de dominio por el tuyo y pégalo.
FILE_SERVER_ROOT = 'https://files.mydomain.com/seafhttp'
Guarda y cierra.
Ahora edita el archivo ‘gunicorn.conf’ utilizando el editor vim.
vim gunicorn.conf
Cambia la opción bind por la IP local ‘127.0.0.1’ como se indica a continuación.
bind = "127.0.0.1:8000"
Guarda y cierra.
A continuación, tenemos que cambiar el propietario del directorio de instalación de seafile y del directorio de caché de seahub al usuario ‘seafile’ con el grupo ‘www’.
chown -R seafile:www /usr/local/www/haiwen chown -R seafile:www /tmp/seahub_cache
A continuación, reinicia los servicios de seafile y seahub.
service seafile restart service seahub restart
Como resultado, los servicios seafile y seahub se están ejecutando con la configuración personalizada.
Ahora tenemos que crear el usuario administrador para nuestra instalación de seafile. Ve al directorio ‘/usr/local/www/haiwen/seafile-server’ y ejecuta el script ‘reset-admin.sh’.
cd /usr/local/www/haiwen/seafile-server ./reset-admin.sh
Escribe tu dirección de correo electrónico y la contraseña. Y como resultado, se habrá creado el usuario admin para el servidor Seafile.
Y la configuración de Seafile y Seahub se ha completado.
Paso 6 – Generar SSL Letsencrypt en FreeBSD
En este paso, vamos a generar el Letsencrypt SSL para nuestra instalación de Seafile.
Instala certbot y el plugin nginx utilizando el comando pkg que aparece a continuación.
pkg install py36-certbot py36-certbot-nginx
Una vez completada la instalación, genera el SSL utilizando el comando certbot de abajo. Y asegúrate de cambiar el nombre de dominio y el correo electrónico por los tuyos.
certbot --nginx -d files.mydomain.com --staple-ocsp -m [email protected] --agree-tos --no-eff-email
Ahora se ha generado el SSL letsencrypt, ubicado en el directorio ‘/usr/local/etc/letsencrypt’.
Paso 7 – Configurar el host virtual Nginx para Seafile
En este paso, vamos a configurar el host virtual Nginx para Seafile. Antes de continuar, debes configurar el host virtual Nginx siguiendo la siguiente guía.
Configurar el host virtual Nginx en FreeBSD 12.0
A continuación, ve al directorio ‘/usr/local/etc/nginx’ y crea un nuevo archivo de configuración del host virtual ‘vhost/seafile.conf’ utilizando el editor vim.
cd /usr/local/etc/nginx vim vhost/seafile.conf
Ahora cambia el nombre de dominio y la ruta de los certificados SSL por los tuyos y pégalos en él.
server { listen 80; server_name files.mydomain.com; rewrite ^ https://$http_host$request_uri? permanent; server_tokens off; } server { listen 443 ssl http2; server_name files.mydomain.com; ssl_certificate /usr/local/etc/letsencrypt/live/files.mydomain.com/fullchain.pem; ssl_certificate_key /usr/local/etc/letsencrypt/live/files.mydomain.com/privkey.pem; ssl_session_timeout 5m; ssl_session_cache shared:SSL:5m; #SSL Security ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_ecdh_curve secp384r1; ssl_prefer_server_ciphers on; server_tokens off; ssl_session_tickets off; proxy_set_header X-Forwarded-For $remote_addr; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_read_timeout 1200s; # used for view/edit office file via Office Online Server client_max_body_size 0; access_log /var/log/nginx/seahub.access.log; error_log /var/log/nginx/seahub.error.log; } location /seafhttp { rewrite ^/seafhttp(.*)$ $1 break; proxy_pass http://127.0.0.1:8082; client_max_body_size 0; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 36000s; proxy_read_timeout 36000s; proxy_send_timeout 36000s; send_timeout 36000s; } location /media { root /usr/local/www/haiwen/seafile-server/seahub; } }
Guárdalo y ciérralo.
Después, prueba la configuración de nginx y asegúrate de que no hay ningún error. A continuación, reinicia el servicio nginx.
nginx -t service nginx restart
Ahora obtendrás el resultado que se muestra a continuación.
La configuración del host virtual Nginx para Seafile ha sido añadida, compruébalo utilizando el comando ‘sockstat’ de abajo y obtendrás que el puerto ‘HTTPS’ es utilizado por el servicio Nginx.
sockstat -l4
Paso 8 – Pruebas
Abre tu navegador web y escribe la URL de tu instalación de Seafile en la barra de direcciones.
Ahora serás redirigido a la conexión segura HTTPS y se te mostrará la página de inicio de sesión de Seafile como se muestra a continuación.
Escribe tu correo electrónico y contraseña de administrador, y haz clic en el botón «Iniciar sesión».
Y obtendrás el Panel de Control de Seafile como se muestra a continuación.
Ahora puedes crear una nueva biblioteca y subir tus archivos a ella. A continuación se muestra el resultado después de crear una nueva biblioteca y cargar archivos en ella.
Como resultado, la instalación del Servidor Seafile con Nginx y SSL Letsencrypt en FreeBSD 12.0 se ha completado con éxito.