Seafile è un software cloud privato che fornisce funzionalità simili come Dropbox, mega.co.nz e altri, semplicemente ospitati sul tuo server. Seafile si basa sul linguaggio di programmazione Python ed è rilasciato con una licenza open source in modo che tu possa creare il tuo cloud privato e sarà molto più sicuro.
Seafile supporta la crittografia per archiviare i tuoi dati in modo sicuro. Per crittografare i file in una libreria di archiviazione, è necessario impostare una password al momento della creazione della libreria. La password non verrà memorizzata nel cloud Seafile. Quindi anche l'amministratore dei server non può visualizzare i tuoi dati crittografati senza la password.
In questo tutorial, installerò Seafile su CentOS 7 con il server web Nginx e MariaDB come server di database.
Prerequisiti
- Server CentOS 7
- Privilegi di root
Passaggio 1:preparare CentOS per Seafile
Accedi al server centOS con la tua password di root ssh.
ssh [email protected]
TYPE YOUR PASSWORD
Modifica il file di configurazione di SELinux con vim.
vim /etc/sysconfig/selinux
Sostituisci il valore 'enforcing' con 'disabled'.
SELINUX=disabled
Salva il file ed esci dall'editor.
Riavvia il server per applicare la modifica della politica di SELinux.
reboot
Attendi il riavvio del server, quindi accedi nuovamente al tuo server come utente root.
Controlla selinux con il comando seguente:
getenforce
Dovresti vedere "Disabilitato ' come risultato.
Passaggio 2:installazione delle dipendenze Seafile
Seafile è basato su python, quindi dobbiamo prima installare python per l'installazione. Seafile ha il supporto per i database SQLite e MySQL/MariaDB, userò MariaDB come database per seafile qui in quanto fornisce prestazioni migliori rispetto a SQLite. Nginx viene utilizzato come proxy inverso per Seafile e Seahub.
In questo passaggio, installeremo diversi pacchetti Python, MariaDB e Nginx. Iniziamo con l'installazione del repository EPEL sul nostro server CentOS.
yum -y install epel-release
Quindi, installa Python sui pacchetti, MariaDB e Nginx.
yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx
Attendi che tutti i pacchetti siano installati.
Passaggio 3 - Configura MariaDB
Nel passaggio 2, abbiamo già installato il server MariaDB, dobbiamo solo avviare il servizio e configurare ora la password di root.
Avvia MariaDB e configura la password di root con i comandi seguenti:
systemctl start mariadb
mysql_secure_installation
Digita la tua password di root.
Set root password? [Y/n] Y
New password:
Re-enter new password:
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
La password di root di MariaDB è configurata e ora possiamo accedere alla shell mysql.
Avviso:la shell della riga di comando di MariaDB è denominata mysql.
Creeremo 3 database per seafile:
- ccnet_db
- seafile_db
- seahub_db
E creeremo un nuovo utente 'seacloud ' con la password 'la tua password '. Sostituisci la tua password con una password sicura!
Accedi alla shell mysql con il client mysql.
mysql -u root -p
TYPE YOUR PASSWORD
Esegui le query mysql seguenti per creare i database e l'utente per l'installazione di seafile.
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
create user [email protected] identified by 'yourpassword';
grant all privileges on ccnet_db.* to [email protected] identified by 'yourpassword';
grant all privileges on seafile_db.* to [email protected] identified by 'yourpassword';
grant all privileges on seahub_db.* to [email protected] identified by 'yourpassword';
flush privileges;
exit
Sostituisci la tua password nei comandi precedenti con la tua password.
Fase 4 - Installa Seafile
In questo passaggio, installeremo Seafile. Seafile verrà eseguito sotto l'utente nginx in modo da poter utilizzare nginx come proxy inverso per i servizi seafile e seahub.
Installeremo seafile sotto l'utente nginx nella directory '/var/www/seafile', creeremo quella directory e la inseriremo con cd.
mkdir -p /var/www/seafile
cd /var/www/seafile
Scarica Seafile con il comando wget ed estrai l'archivio scaricato.
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
tar -xzvf seafile-server_6.0.5_x86-64.tar.gz
Rinomina la directory in 'seafile-server' e passa a quella directory.
mv seafile-server-6.0.5 seafile-server
cd seafile-server/
Esegui il file 'setup-seafile-mysql.sh' per configurare il database.
./setup-seafile-mysql.sh
Premi Invio e ti verranno chieste informazioni di seguito:
- nome server:utilizzerò il nome host del server 'natsume '
- IP o dominio del server:indirizzo IP del server, nel mio caso '192.168.1.115 '
- directory dati predefinita:premi semplicemente Invio
- porta predefinita:premi Invio
- Ora per la configurazione del database, scegli il numero 2
Per la configurazione MySQL:
- usa host non disponibile - localhost
- porta predefinita - 3306
- l'utente mysql - 'seacloud '
- e la password è 'la tua password '
- Il database ccnet è 'ccnet_db '
- Il database di seafile è 'seafile_db '
- Il database di seahub è 'seahub_db '
Premi invio e lo script creerà le tabelle del database per il seafile.
Ora possiamo avviare i servizi seafile e seahub.
./seafile.sh start
./seahub.sh start
Quando il file seahub.sh viene eseguito, ci verrà richiesta la configurazione dell'amministratore.
Digita l'e-mail e la password dell'amministratore, quindi il servizio seahub verrà eseguito.
Seafile è installato e funzionante ora, possiamo accedere a Seafile da un browser web con l'IP del server sulla porta 8000 (nel mio caso - 192.168.1.115:8000), ma non lo faremo ora perché useremo un proxy inverso per il seafile server ed eseguiremo seafile con un file di servizio systemd.
Quindi per ora dobbiamo interrompere il servizio Seafile e Seahub.
./seafile.sh stop
./seahub.sh stop
Fase 5:configurazione del servizio Seafile e Seahub
Eseguiremo seafile come utente nginx, quindi dobbiamo cambiare il proprietario della directory di installazione di seafile e della directory seahub_cache in utente nginx:
cd /var/www/
chown -R nginx:nginx *
chown -R nginx:nginx /tmp/seahub_cache
Quindi, vai alla directory systemd e crea un file seafile.service con vim:
cd /etc/systemd/system/
vim seafile.service
Incolla la configurazione del servizio Seafile di seguito:
[Unit]
Description=Seafile Server
Before=seahub.service
After=network.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seafile.sh start
ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Salva ed esci.
Ora crea un nuovo file seahub.service.
vim seahub.service
E incolla la configurazione di seguito.
[Unit]
Description=Seafile Hub
After=network.target seafile.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Salva ed esci.
Ricarica il servizio systemd e avvia seafile e seahub con systemctl.
systemctl daemon-reload
systemctl start seafile
systemctl start seahub
Assicurati che non ci siano errori e verifica che il servizio seafile e seahub sia in esecuzione sulle porte 8082 e 8000.
netstat -plntu
Passaggio 6 - Genera file di certificato SSL
Per questo tutorial, eseguiremo seafile su un proxy Nginx e Nginx fornirà connessioni sicure (HTTPS) per la sicurezza dei dati. Possiamo utilizzare un file di certificato SSL gratuito o il certificato SSL a pagamento, questo non ha importanza per la configurazione. In questo passaggio, genererò un file di certificato SSL autofirmato con OpenSSL nella directory '/etc/nginx/ssl'.
Crea la directory SSL.
mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
Genera file di certificato autofirmati e un file dhparam con il comando seguente:
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt
Rispondi ai dettagli del certificato come richiesto da OpenSSL come il tuo nome, stato, e-mail, nome di dominio ecc. Quindi modifica i permessi della directory e dei file del certificato.
chmod -R 700 /etc/nginx/ssl
chmod 400 server.*
chmod 400 dhparam.pem
I file del certificato SSL sono stati generati.
Passaggio 7 - Configura Nginx come proxy inverso
In questo passaggio, configureremo Nginx come proxy inverso per il server seafile sulle porte 8000 e 8002.
Vai alla directory di configurazione di nginx e crea un nuovo file host virtuale per seafile.
cd /etc/nginx/
vim conf.d/seafile.conf
Incolla la configurazione dell'host virtuale di seguito:
server {
listen 80;
server_name cloud.natsume.co;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.natsume.co;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
location / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REMOTE_ADDR $remote_addr;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
# Reverse Proxy for seahub
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
#CHANGE THIS PATH WITH YOUR OWN DIRECTORY
location /media {
root /var/www/seafile/seafile-server/seahub;
}
}
Salva ed esci.
Userò "cloud.natsume.co" come nome di dominio. Sostituiscilo con il tuo nome di dominio nella configurazione sopra.
Ora prova la configurazione di Nginx e assicurati che non ci siano errori.
nginx -t
Avvia Nginx con il comando systemctl:
systemctl start nginx
Assicurati che le porte 80 e 443 siano disponibili nell'elenco fornito da netstat:
netstat -plntu
Successivamente, dobbiamo aggiungere il nome di dominio alla configurazione di seafile. Vai alla directory seafile e modifica il file di configurazione.
cd /var/www/seafile/
vim conf/ccnet.conf
Modifica l'URL del servizio con il tuo nome di dominio.
SERVICE_URL = https://cloud.natsume.co
Salva ed esci.
Modifica il file di configurazione di seahub.
vim conf/seahub_settings.py
Nella seconda riga, aggiungi la configurazione di seguito:
HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'
Sostituisci nuovamente il nome di dominio con il tuo dominio qui. Salva ed esci.
Riavvia seafile e aggiungi tutti i servizi da avviare all'avvio:
systemctl restart seafile
systemctl restart seahub
systemctl enable nginx
systemctl enable mariadb
systemctl enable seafile
systemctl enable seahub
Passaggio 8:configurazione del firewallD
Nel passaggio 7, abbiamo configurato Nginx per utilizzare la porta HTTP e HTTPS. Ora dobbiamo aprire quelle porte nel Firewall aggiungendole a firewalld.
Avvia firewalld.
systemctl start firewalld
systemctl enable firewalld
Aggiungi la porta HTTP e HTTPS alla configurazione del firewall con il comando firewall-cmd di seguito:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
Ricarica la configurazione del firewall e controlla l'elenco delle porte.
firewall-cmd --reload
firewall-cmd --list-all
Fase 9 - Test di Seafile
Apri il tuo browser, digita il nome di dominio seafile, nel mio caso cloud.natsume.co e verrai reindirizzato alla connessione https.
Digita l'e-mail e la password dell'amministratore e fai clic su "Accedi".
Dashboard dell'amministratore di Seafile:
Visualizzazione file Seafile.
Seafile con Nginx come proxy inverso e SSL è stato installato correttamente sul server CentOS 7.
Conclusione
Con l'ampia varietà di applicazioni cloud di oggi, Seafile è una soluzione di cloud privato che può essere utilizzata in questo giorno. Con la funzionalità di crittografia a livello di libreria/cartella, puoi archiviare i tuoi dati in modo sicuro su un server Seacloud. Inoltre, Seafile è facile da configurare e implementare sul tuo server.