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 MySQL. Installeremo il server seafile sotto il server web Nginx con HTTPS SSL Letsencrypt abilitato, utilizzando l'ultimo MySQL 5.8 sul sistema Ubuntu 18.04.
Prerequisiti
- Ubuntu 18.04
- Privilegi di root
Cosa faremo?
- Installa le dipendenze Python di Seafile
- Installa e configura MySQL
- Scarica Seafile Server per sistema Linux
- Installa Seafile Server
- Installa Nginx e Letsencrypt
- Configura Nginx come proxy inverso per Seafile Server
- Configura il server Seafile
- Esecuzione di Seafile Server come servizio
- Configura Firewall UFW
- 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 2.7 per essere eseguita sul server.
Prima di installare qualsiasi pacchetto, dobbiamo aggiornare il repository di Ubuntu.
sudo apt update
Ora installa python 2.7 con tutte le dipendenze necessarie per l'installazione del server seafile usando i comandi apt di seguito.
sudo apt install python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -y
Attendi l'installazione di tutte le dipendenze.
Passaggio 2:installazione e configurazione di MySQL
Seafile offre supporto per SQLite e il server di database MySQL. Per questa guida, utilizzeremo il server di database MySQL per la nostra installazione. Distribuiremo il server seafile utilizzando l'ultima versione di MySQL 5.8.
Installa il server MySQL usando il comando apt di seguito.
sudo apt install mysql-server mysql-client -y
Al termine dell'installazione, avvia il servizio MySQL e abilitalo all'avvio ogni volta all'avvio del sistema.
systemctl start mysql
systemctl enable mysql
Il server MySQL è installato sul sistema Ubuntu.
Ora dobbiamo configurare la password di root di MySQL usando il comando 'mysql_secure_installation'.
mysql_secure_installation
Ora ti verrà chiesto della politica della password MySQL, 0 per LOW, 1 per MEDIUM e 2 per STRONG. Digita il numero '1' per la politica della password MEDIA, premi invio e quindi digita la tua password sicura.
Per gli altri, digita semplicemente "Y" come mostrato di seguito.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
La configurazione della password di root MySQL è stata completata.
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 utilizzando il comando client MySQL.
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 MySQL è stato installato, è stata impostata la password di root ed è stato creato il database per l'installazione di seafile.
Fase 3 - Scarica Seafile Server per il sistema Linux
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 'mohammad'.
useradd -m -s /bin/bash mohammad
Ora accedi all'utente 'mohammad' e scarica l'ultima versione del server seafile usando wget.
su - mohammad
wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gz
Estrarre il file 'seafile-server.tar.gz' e rinominare la directory principale in 'seafile-server'.
tar -xf seafile-server_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/
Il codice sorgente del server seafile è stato scaricato nella directory '/home/mohammad/seafile-server'.
Fase 4 - Installa Seafile Server con MySQL
In questo passaggio, installeremo il server seafile utilizzando lo script di installazione MySQL fornito da Seafile.
Accedi come utente 'mohammad' e vai alla directory 'seafile-server'.
su - mohammad
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 'mohammad', vai alla directory '~/seafile-server-latest'.
su - mohammad
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.
netstat -plntu
E vedrai che il server seafile e il server seahub sono attivi e funzionanti sul sistema Ubuntu 18.04.
Ora interrompi seafile e il server seahub.
./seafile.sh stop
./seahub.sh stop
Passaggio 5 - Installa e configura Nginx con Letsencrypt
Per questa guida, il server seafile verrà eseguito sul server Web Nginx con HTTPS abilitato. E in questo passaggio, installeremo il server web Nginx e lo strumento Letsencrypt, quindi genereremo la chiave SSL letencrypt e DHPARAM per il nome di dominio del server seafile.
Installa il server web Nginx usando il comando apt di seguito.
sudo apt install nginx -y
Al termine dell'installazione, avvia il servizio Nginx e abilitalo all'avvio ogni volta all'avvio del sistema.
systemctl start nginx
systemctl enable nginx
Ora installa lo strumento Letencrypt per la generazione di certificati SSL Letencrypt.
sudo apt install letsencrypt -y
Il server web Nginx e lo strumento Letencrypt sono stati installati.
Quindi, vai alla directory '/etc/nginx' e crea un nuovo file di configurazione 'certbot.conf' per letencrypt.
cd /etc/nginx/
vim snippets/certbot.conf
Incolla lì la seguente configurazione.
location /.well-known { alias /var/www/html/.well-known; }
Salva ed esci.
Modifica il file dell'host virtuale predefinito.
vim sites-available/default
Aggiungi la seguente riga di inclusione di seguito alla parentesi 'server {...}'.
include snippets/certbot.conf;
Salva ed esci.
Testa la configurazione di nginx e riavvia il server web.
nginx -t
systemctl restart nginx
E siamo pronti per generare un nuovo certificato SSL Letencrypt per il nome di dominio del server Seafile.
Genera i file del certificato SSL utilizzando il comando 'certbot' come mostrato di seguito.
certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [email protected] -w /var/www/html -d cloud.hakase-labs.io
Nota:
- Genereremo un nuovo certificato SSL e specificheremo la dimensione della chiave su '4096'.
Ora otterrai tutti i file dei certificati SSL che si trovano nella directory '/etc/letsencrypt/live'.
E per maggiore sicurezza, genereremo la chiave Diffie-Hellman con dimensione 4096 utilizzando il comando OpenSSL.
openssl dhparam -out /etc/nginx/dhparam.pem 4096
Tutti i certificati necessari sono stati generati.
Passaggio 6:configura Nginx come proxy inverso per Seafile Server
Vai alla directory di configurazione '/etc/nginx' e crea un nuovo file host virtuale 'seafile' usando vim.
cd /etc/nginx/
vim sites-available/seafile
Incolla lì la seguente configurazione.
server { listen 80; server_name cloud.hakase-labs.io; rewrite ^ https://$http_host$request_uri? permanent; server_tokens off; } server { listen 443 ssl http2; server_name cloud.hakase-labs.io; ssl on; ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/cloud.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 /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/mohammad/seafile-server-latest/seahub; } }
Salva ed esci.
Abilita l'host virtuale seafile e verifica la configurazione.
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t
assicurati che non ci siano errori e riavvia il servizio nginx.
systemctl restart nginx
La configurazione di Nginx come proxy inverso per il server Seafile è stata completata.
Passaggio 7:configurazione del server Seafile
Per eseguire il server seafile con il nome di dominio del server web Nginx, dobbiamo modificare la configurazione predefinita 'seafile' per 'servizio ccnet', 'server seafile' e 'server seahub'.
Accedi come utente 'mohammad' e vai alla directory 'conf/'.
su - mohammad
cd conf/
Modifica il file di configurazione del servizio ccnet 'ccnet.conf'.
vim ccnet.conf
Nella riga 'SERVICE_URL', cambia il valore nel nome di dominio con HTTPS come di seguito.
SERVICE_URL = https://cloud.hakase-labs.io
Salva ed esci.
Ora modifica il file 'seafile.conf' per la configurazione del server seafile.
vim seafile.conf
Aggiungi la riga 'host' con il valore a '127.0.0.1' localhost come di seguito.
[fileserver] host = 127.0.0.1 port = 8082
Salva ed esci.
E infine, modificheremo il file 'seahub_settings.py'.
vim seahub_settings.py
Nella riga 'FILE_SERVER_ROOT', cambia il valore nel nome di dominio con HTTPS.
FILE_SERVER_ROOT = 'https://cloud.hakase-labs.io/seafhttp'
Salva ed esci.
Fase 8 - Esecuzione di Seafile Server come servizio
In questo tutorial, eseguiremo il server seafile come servizio sul sistema Ubuntu 18.04. Creeremo un nuovo script di servizio per seafile e seahub.
Vai alla directory '/etc/systemd/system' e crea un nuovo file di servizio 'seafile.service'.
cd /etc/systemd/system/
vim seafile.service
Incolla lì il seguente script di servizio Seafile.
[Unit] Description=Seafile After=network.target mysql.service [Service] Type=forking ExecStart=/home/mohammad/seafile-server-latest/seafile.sh start ExecStop=/home/mohammad/seafile-server-latest/seafile.sh stop User=mohammad Group=mohammad [Install] WantedBy=multi-user.target
Salva ed esci.
Ora crea il file del servizio seahub 'seahub.service'.
vim seahub.service
Incolla lì il seguente script del servizio seahub.
[Unit] Description=Seafile hub After=network.target seafile.service [Service] Type=forking ExecStart=/home/mohammad/seafile-server-latest/seahub.sh start ExecStop=/home/mohammad/seafile-server-latest/seahub.sh stop User=mohammad Group=mohammad [Install] WantedBy=multi-user.target
Salva ed esci.
Nota:
- Cambia il percorso degli script seafile.sh e seahub.sh.
Ora ricarica il sistema systemd.
systemctl daemon-reload
E avvia il servizio seafile e seahub.
systemctl start seafile
systemctl start seahub
Abilita questi servizi per l'avvio ogni volta all'avvio del sistema.
systemctl enable seafile
systemctl enable seahub
I servizi seafile e seahub sono attivi e funzionanti:controllali utilizzando i comandi seguenti.
systemctl status seafile
systemctl status seahub
netstat -plntu
Passaggio 8:configurazione del firewall UFW
Si consiglia di attivare sempre il firewall su qualsiasi sistema. Per il sistema Ubuntu, accenderemo il firewall UFW e aggiungeremo le porte SSH, HTTP e HTTPS.
Aggiungi la porta 'ssh' e abilita il firewall UFW.
ufw allow ssh
ufw enable
digita 'y' per attivare il firewall.
Ora aggiungi i servizi HTTP e HTTPS.
ufw allow http
ufw allow https
Controlla l'elenco delle regole sul firewall.
ufw status numbered
E otterrai tre servizi SSH, HTTP e HTTPS nell'elenco.
Fase 9 - Test
Apri il tuo browser web e digita l'URL di installazione del server seafile. Il mio è:
http://cloud.hakase-labs.io/
E verrai reindirizzato alla pagina di accesso della connessione HTTPS sicura.
Digita l'email dell'amministratore "[email protected]" e la password "mypassword", quindi fai clic sul pulsante "Accedi".
Ora otterrai la dashboard di Seafile come di seguito.
Aggiuntivo:caricata un'immagine e visualizzarla sulla dashboard di Seafile.
L'installazione e la configurazione del server seafile con il web server Nginx e Letsencrypt su Ubuntu 18.04 sono state completate con successo.