Seafile je software soukromého cloudu, který poskytuje podobné funkce jako Dropbox, mega.co.nz a další, pouze hostovaný na vašem vlastním serveru. Seafile je založen na programovacím jazyce python a je vydán pod licencí open source, takže si můžete vytvořit svůj vlastní privátní cloud a bude mnohem bezpečnější.
Seafile podporuje šifrování pro bezpečné uložení vašich dat. Chcete-li šifrovat soubory v knihovně úložiště, musíte při vytváření knihovny nastavit heslo. Heslo nebude uloženo v cloudu Seafile. Takže ani správce serverů nemůže zobrazit vaše šifrovaná data bez hesla.
V tomto tutoriálu nainstaluji Seafile na CentOS 7 s webovým serverem Nginx a databázovým serverem MariaDB.
Předpoklady
- Server CentOS 7
- Oprávnění uživatele root
Krok 1 – Příprava CentOS na Seafile
Přihlaste se k serveru centOS pomocí svého ssh root hesla.
ssh [email protected]
TYPE YOUR PASSWORD
Upravte konfigurační soubor SELinux pomocí vim.
vim /etc/sysconfig/selinux
Hodnotu 'vynucování' nahraďte 'disabled'.
SELINUX=disabled
Uložte soubor a ukončete editor.
Restartujte server, abyste použili změnu zásad SELinux.
reboot
Počkejte na restartování serveru a poté se znovu přihlaste k serveru jako uživatel root.
Zkontrolujte selinux pomocí příkazu níže:
getenforce
Měli byste vidět „Zakázáno ' jako výsledek.
Krok 2 – Instalace závislostí Seafile
Seafile je založen na pythonu, takže pro instalaci musíme nejprve nainstalovat python. Seafile podporuje databáze SQLite a MySQL/MariaDB, jako databázi pro seafile zde použiji MariaDB, protože poskytuje lepší výkon než SQLite. Nginx se používá jako reverzní proxy pro Seafile a Seahub.
V tomto kroku nainstalujeme několik pythonových balíčků, MariaDB a Nginx. Začneme instalací úložiště EPEL na náš server CentOS.
yum -y install epel-release
Dále nainstalujte balíčky python, MariaDB a Nginx.
yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx
Počkejte, až se nainstalují všechny balíčky.
Krok 3 – Konfigurace MariaDB
V kroku 2 jsme již nainstalovali server MariaDB, stačí spustit službu a nakonfigurovat heslo uživatele root.
Spusťte MariaDB a nakonfigurujte heslo uživatele root pomocí příkazů níže:
systemctl start mariadb
mysql_secure_installation
Zadejte heslo uživatele 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
Kořenové heslo MariaDB je nakonfigurováno a nyní se můžeme přihlásit do prostředí mysql.
Upozornění:Příkazový řádek MariaDB se jmenuje mysql.
Vytvoříme 3 databáze pro seafile:
- ccnet_db
- seafile_db
- seahub_db
A vytvoříme nového uživatele 'seacloud s heslem 'vaše heslo '. Nahraďte své heslo bezpečným heslem!
Přihlaste se do prostředí mysql pomocí klienta mysql.
mysql -u root -p
TYPE YOUR PASSWORD
Spuštěním dotazů mysql níže vytvořte databáze a uživatele pro instalaci 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
Nahraďte své heslo ve výše uvedených příkazech svým vlastním heslem.
Krok 4 – Instalace Seafile
V tomto kroku nainstalujeme Seafile. Seafile bude spuštěn pod uživatelem nginx, takže můžeme použít nginx jako reverzní proxy pro služby seafile a seahub.
Nainstalujeme seafile pod uživatelem nginx do adresáře '/var/www/seafile', vytvoříme tento adresář a vstoupíme do něj pomocí cd.
mkdir -p /var/www/seafile
cd /var/www/seafile
Stáhněte si Seafile pomocí příkazu wget a rozbalte stažený archiv.
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
Přejmenujte adresář na 'seafile-server' a přepněte se do tohoto adresáře.
mv seafile-server-6.0.5 seafile-server
cd seafile-server/
Pro konfiguraci databáze spusťte soubor 'setup-seafile-mysql.sh'.
./setup-seafile-mysql.sh
Stiskněte Enter a budete požádáni o informace níže:
- název serveru – budu používat název hostitele serveru 'natsume '
- IP nebo doména serveru – IP adresa serveru, v mém případě '192.168.1.115 '
- výchozí datový adresář – stačí stisknout Enter
- výchozí port – stiskněte klávesu Enter
- Nyní pro konfiguraci databáze zvolte číslo 2
Pro konfiguraci MySQL:
- použijte předvoleného hostitele – localhost
- výchozí port – 3306
- uživatel mysql – 'seacloud '
- a heslo je „vaše heslo '
- databáze ccnet je 'ccnet_db '
- databáze seafile je 'seafile_db '
- databáze seahub je 'seahub_db '
Stiskněte enter a skript vytvoří databázové tabulky pro mořský soubor.
Nyní můžeme spustit služby seafile a seahub.
./seafile.sh start
./seahub.sh start
Když je soubor seahub.sh spuštěn, budeme požádáni o konfiguraci správce.
Zadejte svůj e-mail a heslo správce a služba seahub se spustí.
Seafile je nyní nainstalován a spuštěn, k Seafile můžeme přistupovat z webového prohlížeče s IP serverem na portu 8000 (v mém případě - 192.168.1.115:8000), ale nyní to neuděláme, protože použijeme reverzní proxy pro seafile server a spustíme seafile se souborem služby systemd.
Takže musíme prozatím zastavit službu seafile a seahub.
./seafile.sh stop
./seahub.sh stop
Krok 5 – Konfigurace služby Seafile a Seahub
Spustíme seafile jako uživatel nginx, takže musíme změnit vlastníka instalačního adresáře seafile a adresáře seahub_cache na uživatele nginx:
cd /var/www/
chown -R nginx:nginx *
chown -R nginx:nginx /tmp/seahub_cache
Dále přejděte do adresáře systemd a vytvořte soubor seafile.service pomocí vim:
cd /etc/systemd/system/
vim seafile.service
Níže vložte konfiguraci služby seafile:
[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
Uložte a ukončete.
Nyní vytvořte nový soubor seahub.service.
vim seahub.service
A vložte konfiguraci níže.
[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
Uložte a ukončete.
Znovu načtěte službu systemd a spusťte seafile a seahub pomocí systemctl.
systemctl daemon-reload
systemctl start seafile
systemctl start seahub
Ujistěte se, že nedošlo k chybě a zkontrolujte, zda služba seafile a seahub běží na portu 8082 a 8000.
netstat -plntu
Krok 6 – Vygenerování souborů certifikátu SSL
V tomto tutoriálu spustíme seafile přes proxy Nginx a Nginx poskytne zabezpečené připojení (HTTPS) pro zabezpečení dat. Můžeme použít bezplatný soubor certifikátu SSL nebo placený certifikát SSL, na konfiguraci nezáleží. V tomto kroku vygeneruji soubor certifikátu SSL s vlastním podpisem s OpenSSL v adresáři '/etc/nginx/ssl'.
Vytvořte adresář ssl.
mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
Vygenerujte soubory certifikátů s vlastním podpisem a soubor dhparam pomocí příkazu níže:
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
Odpovězte na podrobnosti certifikátu požadované OpenSSL, jako je vaše jméno, stát, e-mail, název domény atd. Poté změňte oprávnění adresáře a souborů certifikátu.
chmod -R 700 /etc/nginx/ssl
chmod 400 server.*
chmod 400 dhparam.pem
Soubory certifikátu SSL byly vygenerovány.
Krok 7 – Konfigurace Nginx jako reverzního proxy
V tomto kroku nakonfigurujeme Nginx jako reverzní proxy pro server seafile na portu 8000 a 8002.
Přejděte do konfiguračního adresáře nginx a vytvořte nový soubor virtuálního hostitele pro seafile.
cd /etc/nginx/
vim conf.d/seafile.conf
Níže vložte konfiguraci virtuálního hostitele:
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;
}
}
Uložte a ukončete.
Jako název domény použiji 'cloud.natsume.co'. Nahraďte jej prosím svým vlastním názvem domény ve výše uvedené konfiguraci.
Nyní otestujte konfiguraci Nginx a ujistěte se, že neexistují žádné chyby.
nginx -t
Spusťte Nginx pomocí příkazu systemctl:
systemctl start nginx
Ujistěte se, že porty 80 a 443 jsou dostupné v seznamu, který poskytuje netstat:
netstat -plntu
Dále musíme přidat název domény do konfigurace seafile. Přejděte do adresáře seafile a upravte konfigurační soubor.
cd /var/www/seafile/
vim conf/ccnet.conf
Změňte adresu URL služby na název své domény.
SERVICE_URL = https://cloud.natsume.co
Uložte a ukončete.
Upravte konfigurační soubor seahub.
vim conf/seahub_settings.py
Na druhém řádku přidejte konfiguraci níže:
HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'
Zde znovu nahraďte název domény svou doménou. Uložte a ukončete.
Restartujte seafile a přidejte všechny služby, které se mají spustit při spuštění:
systemctl restart seafile
systemctl restart seahub
systemctl enable nginx
systemctl enable mariadb
systemctl enable seafile
systemctl enable seahub
Krok 8 – Konfigurace FirewallD
V kroku 7 jsme nakonfigurovali Nginx tak, aby používal port HTTP a HTTPS. Nyní musíme otevřít tyto porty ve Firewallu jejich přidáním do firewalld.
Spusťte firewall.
systemctl start firewalld
systemctl enable firewalld
Přidejte port HTTP a HTTPS do konfigurace brány firewall pomocí příkazu firewall-cmd níže:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
Znovu načtěte konfiguraci brány firewall a zkontrolujte seznam portů.
firewall-cmd --reload
firewall-cmd --list-all
Krok 9 – Testování Seafile
Otevřete prohlížeč, zadejte název domény seafile, v mém případě cloud.natsume.co, a budete přesměrováni na připojení https.
Zadejte svůj administrátorský e-mail a heslo a klikněte na 'Přihlásit se'.
Hlavní panel správce Seafile:
Zobrazení souboru Seafile.
Seafile s Nginx jako Reverse Proxy a SSL byl úspěšně nainstalován na server CentOS 7.
Závěr
Se širokou škálou dnešních cloudových aplikací je Seafile řešením privátního cloudu, které se dnes hodí. Pomocí funkce šifrování na úrovni knihovny/složky můžete svá data bezpečně ukládat na server Seacloud. Kromě toho lze Seafile snadno konfigurovat a implementovat na vašem vlastním serveru.