GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare Seafile con Nginx su Ubuntu 20.04 LTS

Seafile è un sistema di hosting di file e cloud storage open source con funzioni avanzate come la sincronizzazione da più piattaforme (sistema multipiattaforma), protezione della privacy con crittografia dei file integrata e supporto per l'autenticazione a due fattori (TFA), controllo della versione, blocco dei file, modifica online e molti altri. Seafile è scritto nel linguaggio di programmazione C e Python e fornisce funzionalità simili come Dropbox, mega.co.nz e altri.

In questo tutorial, ti mostrerò passo dopo passo come installare e configurare un server Seafile con il server web Nginx e il database MariaDB. Installeremo il server seafile sotto il server web Nginx con HTTPS SSL Letsencrypt abilitato, utilizzando l'ultimo MariaDB sul sistema Ubuntu 20.04.

Prerequisiti

  • Ubuntu 20.04
  • Privilegi di root

Cosa faremo?

  • Installa le dipendenze Python di Seafile
  • Installa e configura MariaDB
  • Scarica Seafile Server per Linux Server
  • Installa Seafile Server con MariaDB
  • Configura Seafile con il nome di dominio
  • Esecuzione di Seafile come servizio Systemd
  • Genera SSL Letsencrypt e DHPARAM
  • Installa e configura Nginx come proxy inverso
  • Imposta Firewall
  • Test

Passaggio 1:installazione delle dipendenze Python di Seafile

Il primo passo che dobbiamo compiere prima di installare il server seafile sul sistema è installare le sue dipendenze. Seafile è un'applicazione basata su Python e richiede Python 3.x per essere eseguita sul server.

Prima di installare qualsiasi pacchetto, dobbiamo aggiornare il repository di Ubuntu.

sudo apt update

Ora installa python 3.x con tutte le dipendenze necessarie per l'installazione del server seafile usando i comandi apt di seguito.

sudo apt install python3 libpython3.8 python3-setuptools python3-pil python3-ldap python3-urllib3 ffmpeg python3-pip python3-mysqldb python3-memcache python3-requests libmemcached-dev

Successivamente, installa pacchetti Python aggiuntivi dal repository PyPI utilizzando il comando pip di seguito.

pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha python3-ldap

Di conseguenza, tutte le dipendenze dei pacchetti per Seafile sono state installate.

Fase 2 - Installa e configura MariaDB

Seafile offre supporto per SQLite e il server di database MariaDB. Per questa guida, utilizzeremo il server di database MariaDB per la nostra installazione. Distribuiremo il server seafile utilizzando l'ultima versione di MariaDB.

Installa il server MariaDB usando il comando apt di seguito.

sudo apt install mariadb-server -y

Al termine dell'installazione, avvia il servizio MariaDB e abilitalo all'avvio ogni volta all'avvio del sistema.

systemctl start mariadb
systemctl enable mariadb

Il server MariaDB è installato sul sistema Ubuntu, verificalo usando il comando seguente.

systemctl status mariadb

Il servizio MariaDB è attivo e funzionante.

Successivamente, dobbiamo configurare la password di root di MariaDB utilizzando il comando 'mysql_secure_installation'.

mysql_secure_installation

Ora ti verrà chiesto della configurazione di MariaDB e digita la tua password di root complessa per MariaDB.

Enter current password for root (enter for none): Press Enter
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y  
Reload privilege tables now? [Y/n] Y

Successivamente, creeremo un nuovo database per il server Seafile. Creeremo 3 database per ogni componente seafile e creeremo un nuovo utente del database. Creeremo un nuovo utente chiamato 'seafile' e avrà tutti i privilegi per tutti e 3 i database 'ccnet-db', 'seafile-db' e 'seahub-db'.

Accedi alla shell MySQL usando il comando seguente.

mysql -u root -p

Ora crea nuovi database 'ccnet-db', 'seafile-db', 'seahub-db' e crea un nuovo utente 'seafile'. Quindi concedi tutti e 3 i privilegi del database all'utente 'seafile'.

Esegui query MySQL di seguito.

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 '[email protected]';

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;

Il server MariaDB è stato installato, è stata impostata la password di root ed è stato creato il database per l'installazione di seafile.

Fase 3 - Scarica Seafile Server per Linux Server

In questo tutorial, il server seafile verrà eseguito come servizio sul sistema systemd e verrà eseguito con un utente non root.

Crea un nuovo utente chiamato 'ryujin'.

useradd -m -s /bin/bash ryujin

Ora accedi all'utente 'ryujin' e scarica l'ultima versione del server seafile usando wget.

su - ryujin
wget -q https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_7.1.3_x86-64.tar.gz

Estrarre il file 'seafile-server.tar.gz' e rinominare la directory principale in 'seafile-server'.

tar -xf seafile-server_7.1.3_x86-64.tar.gz
mv seafile-server-*/ seafile-server/

Il codice sorgente del server seafile è stato scaricato nella directory '/home/ryujin/seafile-server'.

Fase 4 - Installa Seafile Server con MariaDB

In questo passaggio, installeremo il server seafile utilizzando lo script di installazione MariaDB fornito da Seafile.

Accedi come utente 'ryujin' e vai alla directory 'seafile-server'.

su - ryujin
cd seafile-server/

Ora esegui lo script 'setup-seafile-mysql.sh'.

./setup-seafile-mysql.sh

Lo script di installazione eseguirà il controllo del modulo Python. Assicurati che tutte le dipendenze siano installate, quindi premi Invio.

Ora sarai nella configurazione di Seafile.

  • nome server:inserisci il nome del tuo server seafile come 'hakase-cloud'.
  • nome dominio server:digita il nome di dominio per il tuo server seafile 'cloud.hakase-labs.io'.
  • directory dati seafile:lascia la configurazione predefinita e premi invio.
  • porta del file server di seafile:lasciala sulla porta predefinita '8082'.

Ora per la configurazione del database. Ti verranno richieste 2 opzioni:lascia che lo script crei il database per te o utilizza un database esistente.

Scegli l'opzione '2' per utilizzare le impostazioni del database esistenti.

  • host database:host locale predefinito
  • porta database:predefinita su mysql porta normale '3306'
  • L'utente del database è 'seafile' con password '[email protected]'
  • database ccnet:'ccnet-db'
  • database seafile:'seafile-db'
  • database seahub:'seahub-db'

Ora premi di nuovo invio per confermare la configurazione del nostro server seafile.

E al termine dell'installazione, otterrai il risultato mostrato di seguito.

L'installazione e la configurazione del server Seafile sono state completate con successo. E il file server seafile funzionerà sotto la porta "8082", il servizio seahub funzionerà sotto la porta "8000".

Successivamente, proveremo per eseguire il server seafile e il server seahub utilizzando lo script di avvio.

Come utente 'ryujin', vai alla directory '~/seafile-server-latest'.

su - ryujin
cd ~/seafile-server-latest/

Ora avvia il server seafile eseguendo il comando seguente.

./seafile.sh start

Quindi esegui il server seahub.

./seahub.sh start

La prima volta che esegui lo script di avvio 'seahub.sh', ti verrà chiesto di creare un utente amministratore e una password per il server seafile.

Digita l'e-mail e la password dell'amministratore, quindi premi Invio.

E l'utente e la password amministratore sono stati creati:ora controlla le porte del servizio seafile e seahub '8082' e '8080' usando il comando netstat.

ss -plnt4

E vedrai che il server seafile e il server seahub sono attivi e funzionanti sul sistema Ubuntu 20.04.

Ora interrompi seafile e il server seahub.

./seafile.sh stop
./seahub.sh stop

Fase 5 - Configura Seafile con il nome di dominio

Per questo tutorial, eseguiremo Seafile con il nostro nome di dominio 'seafile.hakase-labs.io'. Per farlo, dobbiamo modificare alcune delle configurazioni di Seafile.

Accedi all'utente 'ryujin' e vai alla directory 'conf'.

su - ryujin
cd conf/

Modifica la configurazione 'ccnet.conf' usando l'editor vim.

vim ccnet.conf

sull'opzione 'SERVICE_URL', cambia il valore con il nome di dominio e assicurati di cambiare il protocollo HTTP predefinito con il protocollo sicuro HTTPS come di seguito.

SERVICE_URL = https://seafile.hakase-labs.io

Salva e chiudi.

Quindi, modifica la configurazione 'seafile.conf'.

vim seafile.conf

Nella sezione '[fileserver]', specificare l'indirizzo IP 'host' per il servizio seafile. Il servizio seafile verrà eseguito sull'indirizzo locale come indicato di seguito.

[fileserver]
host = 127.0.0.1
port = 8082

Salva e chiudi.

Quindi, modifica 'seahub_settings.py' usando l'editor vim.

vim seahub_settings.py

Aggiungi l'opzione 'FILE_SERVER_ROOT' come di seguito in fondo alla riga.

FILE_SERVER_ROOT = 'https://seafile.hakase-labs.io/seafhttp'

Salva e chiudi.

E la configurazione di Seafile è stata completata, verrà eseguita con il nome di dominio 'seafile.hakase-labs.io'.

Fase 6 - Esecuzione di Seafile come servizio Systemd

Dopo aver configurato Seafile con il nome di dominio, configureremo seafile e seahub come servizio systemd.

Vai alla directory '/etc/systemd/system' e crea un nuovo file di servizio per seafile chiamato 'seafile.service'.

cd /etc/systemd/system/
vim seafile.service

Incolla la seguente configurazione al suo interno.

[Unit]
Description=Seafile
After=network.target mysql.service nginx.service

[Service]
Type=forking
ExecStart=/home/ryujin/seafile-server-latest/seafile.sh start
ExecStop=/home/ryujin/seafile-server-latest/seafile.sh stop
User=ryujin
Group=ryujin

[Install]
WantedBy=multi-user.target

Salva e chiudi.

Quindi, crea il file del servizio seahub denominato 'seahub.service'.

vim seahub.service

Incolla la seguente configurazione al suo interno.

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
Type=forking
ExecStart=/home/ryujin/seafile-server-latest/seahub.sh start
ExecStop=/home/ryujin/seafile-server-latest/seahub.sh stop
User=ryujin
Group=ryujin

[Install]
WantedBy=multi-user.target

Salva e chiudi.

E sono stati creati i file di servizio seafile e seahub.

Quindi, ricarica il systemd manager e assicurati che non ci siano errori.

systemctl daemon-reload

Ora avvia il servizio seafile e aggiungilo all'avvio del sistema.

systemctl start seafile
systemctl enable seafile

Successivamente, avvia e abilita il servizio seahub.

systemctl start seahub
systemctl enable seahub

Il servizio seafile e seahub è attivo e funzionante, verificalo utilizzando il comando seguente.

systemctl status seafile seahub

Di seguito è riportato il risultato che otterrai.

Di conseguenza, la configurazione di Seafile e Seahub come servizio systemd è stata completata.

Passaggio 7:genera SSL Letsencrypt e DHPARAM

In questo passaggio, genereremo il certificato SSL Letsencrypt e DHPARAM. Utilizzeremo lo strumento certbot per generare SSL Letsencrypt e utilizzare il comando openssl per generare il certificato dhparam.

Per generare il Letsencrypt SSL, assicurati di avere il vero nome di dominio e di aver puntato all'indirizzo IP del tuo server.

Installa lo strumento certbot sul sistema Ubuntu usando il comando apt di seguito.

sudo apt install certbot

Successivamente, genera il Letsencrypt SSL per il nome di dominio seafile 'seafile.hakase-labs.io' utilizzando il comando certbot come di seguito.

certbot certonly --agree-tos --no-eff-email --email [email protected] -d seafile.hakase-labs.io

Una volta completato tutto il processo, il tuo certificato sarà disponibile nella directory '/etc/letsencrypt/live/seafile.hakase-labs.io'.

Quindi, genera il certificato DHPARAM usando il comando openssl come di seguito.

openssl dhparam -out /etc/nginx/dhparam.pem 2048

Il certificato DHAPRAM verrà generato e sarà disponibile su '/etc/nginx/dhparam.pem'.

Di conseguenza, è stato generato il SSL Letsencrypt per il nome di dominio Seafile e il certificato DHPARAM.

Passaggio 8 - Installa e configura Nginx come proxy inverso

In questo passaggio, installeremo e configureremo Nginx come proxy inverso per il servizio Seafile. Il server web Nginx funzionerà con il protocollo HTTPS sicuro con il certificato SSL Letsencrypt e DHPARAM generato in cima.

Installa Nginx sul server Ubuntu 20.04 usando il comando apt di seguito.

sudo apt install nginx -y

Una volta completata l'installazione, avvia il servizio Nginx e aggiungilo all'avvio del sistema.

systemctl start nginx
systemctl enable nginx

E il servizio Nginx è attivo e funzionante sul sistema Ubuntu.

Quindi, vai alla directory '/etc/nginx/sites-available' e crea una nuova configurazione di virtualhost 'seafile' usando l'editor vim.

cd /etc/nginx/sites-available/
vim seafile

Incolla la seguente configurazione al suo interno.

server {
        listen       80;
        server_name  seafile.hakase-labs.io;
        rewrite ^ https://$http_host$request_uri? permanent;
        server_tokens off;
    }
    server {
        listen 443 ssl http2;
        server_name seafile.hakase-labs.io;
        
        ssl_certificate /etc/letsencrypt/live/seafile.hakase-labs.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/seafile.hakase-labs.io/privkey.pem;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:5m;

        ssl_dhparam /etc/nginx/dhparam.pem;

        #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_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 /seafdav {
            proxy_pass         http://127.0.0.1:8080/seafdav;
            proxy_set_header   Host $host;
            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_set_header   X-Forwarded-Proto $scheme;
            proxy_read_timeout  1200s;
            client_max_body_size 0;

            access_log      /var/log/nginx/seafdav.access.log;
            error_log       /var/log/nginx/seafdav.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 /home/ryujin/seafile-server-latest/seahub;
        }
    }

Salva e chiudi.

Quindi, attiva la configurazione di virtualhost per seafile e testa la configurazione di Nginx.

ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t

Assicurati che non ci siano errori, quindi riavvia il servizio Nginx.

systemctl restart nginx

Di conseguenza, l'installazione e la configurazione di Nginx come proxy inverso per Seafile sono state completate con successo.

Passaggio 9:installazione del firewall

Per questo tutorial, eseguiremo Seafile con il firewall UFW abilitato. E dobbiamo aggiungere i servizi SSH, HTTP e HTTPS alla configurazione del firewall UFW.

Aggiungi i servizi SSH, HTTP e HTTPS al firewall UFW utilizzando il comando seguente.

for svc in ssh http https
do
ufw allow $svc
done

Ora attiva il firewall UFW e verifica lo stato della configurazione.

ufw enable
ufw status numbered

E otterrai il risultato come di seguito.

Il firewall UFW è abilitato e sono stati aggiunti i servizi SSH, HTTP e HTTPS.

Ora siamo pronti per usare Seafile.

Fase 10 - Test

Apri il tuo browser web e digita il nome del dominio di installazione di Seafile sulla barra degli indirizzi.

https://seafile.hakase-labs.io/

Ora verrai reindirizzato alla connessione HTTPS sicura e otterrai la pagina di accesso di Seafile come di seguito.

Digita la password utente di Seafile che hai appena creato in alto e fai clic sul pulsante "Accedi".

Ora otterrai la dashboard di Seafile come di seguito.

Di seguito è riportato il risultato dopo aver creato una nuova cartella e caricato il file nel server Seafile.

Di conseguenza, l'installazione e la configurazione di Seafile con il web server Nginx e il database MariaDB su Ubuntu 20.04 sono state completate con successo.


Ubuntu
  1. Come installare MariaDB in Ubuntu 20.04 LTS

  2. Come installare MediaWiki con Nginx su Ubuntu 16.04

  3. Come installare Seafile con Nginx su Ubuntu 18.04 LTS

  4. Come installare Magento con Nginx su Ubuntu 15.10

  5. Come distribuire Modsecurity con Nginx su Ubuntu 20.04 LTS

Come installare Seafile su Ubuntu 16.04 LTS

Come installare Nginx con il modulo Ngx_Pagespeed su Ubuntu 16.04 LTS

Come installare Joomla con Nginx su Ubuntu 18.04 LTS

Come installare phpMyAdmin con Nginx su Ubuntu 18.04 LTS

Come installare phpMyAdmin con Nginx su Ubuntu 20.04 LTS

Come installare Seafile su Ubuntu 20.04 LTS