Seafile met Nginx installeren op Ubuntu 20.04 LTS
Seafile is een open bron bestand-hosting en cloud opslag systeem met geavanceerde functies zoals synchroniseren vanaf meerdere platforms (cross-platform systeem), privacy bescherming met ingebouwde bestandsversleuteling, en ondersteuning voor Twee-factor Authenticatie (TFA), versiebeheer, bestanden vergrendelen, online bewerken, en nog veel meer. Seafile is geschreven in de programmeertaal C en Python en biedt gelijksoortige functies als Dropbox, mega.co.nz, en andere.
In deze zelfstudie laat ik je stap-voor-stap zien hoe je een Seafile server installeert en configureert met Nginx webserver en de MariaDB databank. We zullen de seafile server installeren onder de Nginx webserver met HTTPS SSL Letsencrypt ingeschakeld, met de nieuwste MariaDB op het Ubuntu 20.04 systeem.
Vereisten
- Ubuntu 20.04
- Root rechten
Wat zullen we doen?
- Afhankelijkheden van Seafile Python installeren
- Installeer en configureer MariaDB
- Download Seafile Server voor Linux Server
- Installeer Seafile Server met MariaDB
- Configureer Seafile met Domeinnaam
- Draai Seafile als een Systemd dienst
- Genereer SSL Letsencrypt en DHPARAM
- Installeer en configureer Nginx als omgekeerde proxy
- Firewall instellen
- Testen van
Stap 1 – Installeer de Seafile Python afhankelijkheden
De eerste stap die we moeten nemen voor we seafile server op het systeem installeren is het installeren van zijn afhankelijkheden. Seafile is een op python gebaseerde toepassing, en het vereist python 3.x om op de server te draaien.
Voordat we pakketten installeren, moeten we de Ubuntu repository bijwerken.
sudo apt update
Installeer nu python 3.x met alle afhankelijkheden die nodig zijn voor de installatie van seafile server met onderstaande apt commando’s.
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
Installeer daarna extra python pakketten uit de PyPI repository met het pip commando hieronder.
pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha python3-ldap
Het resultaat is dat alle pakketten afhankelijkheden voor Seafile geïnstalleerd zijn.
Stap 2 – Installeer en configureer MariaDB
Seafile biedt ondersteuning voor SQLite en de MariaDB databaseserver. Voor deze gids zullen we de MariaDB databaseserver gebruiken voor onze installatie. We zullen de seafile server inzetten met de nieuwste MariaDB versie.
Installeer MariaDB server met het onderstaande apt commando.
sudo apt install mariadb-server -y
Nadat de installatie voltooid is, start je de MariaDB dienst en zet je hem aan om telkens bij het opstarten van het systeem te starten.
systemctl start mariadb systemctl enable mariadb
De MariaDB server is geïnstalleerd op het Ubuntu systeem, controleer het met het volgende commando.
systemctl status mariadb
De MariaDB dienst is in werking.
Vervolgens moeten we het MariaDB root wachtwoord instellen met het ‘mysql_secure_installation’ commando.
mysql_secure_installation
Nu wordt je gevraagd naar de MariaDBconfiguratie, en je typt je sterke root wachtwoord voor MariaDB in.
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
Vervolgens maken we een nieuwe databank voor de Seafile server. We maken 3 databases voor elk seafile onderdeel en maken een nieuwe database gebruiker aan. We maken een nieuwe gebruiker aan met de naam ‘seafile’ en die krijgt alle rechten op alle 3 de databases ‘ccnet-db’, ‘seafile-db’, en ‘seahub-db’.
Meld je aan in de MySQL shell met het onderstaande commando.
mysql -u root -p
Maak nu nieuwe databases ‘ccnet-db’, ‘seafile-db’, ‘seahub-db’, en maak een nieuwe gebruiker ‘seafile’. Geef dan alle 3 databankrechten aan de gebruiker ‘seafile’.
Voer onderstaande MySQL queries uit.
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;
De MariaDB server is geïnstalleerd, het root wachtwoord is ingesteld, en de database voor de seafile installatie is gemaakt.
Stap 3 – Download seafile server voor Linux server
In deze handleiding zal de seafile server draaien als een dienst op het systemd systeem, en hij zal draaien onder een niet-root gebruiker.
Maak een nieuwe gebruiker aan met de naam ‘ryujin’.
useradd -m -s /bin/bash ryujin
Log nu in op de ‘ryujin’ gebruiker en download de laatste versie van de seafile server met wget.
su - ryujin wget -q https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_7.1.3_x86-64.tar.gz
Pak het ‘seafile-server.tar.gz’ bestand uit en hernoem de hoofddirectory naar ‘seafile-server’.
tar -xf seafile-server_7.1.3_x86-64.tar.gz mv seafile-server-*/ seafile-server/
De broncode van de seafile server is gedownload naar de ‘/home/ryujin/seafile-server’ directory.
Stap 4 – Installeer seafile server met MariaDB
In deze stap installeren we de seafile server met het door Seafile geleverde MariaDB setup script.
Log in als de ‘ryujin’ gebruiker en ga naar de ‘seafile-server’ directory.
su - ryujin cd seafile-server/
Voer nu het ‘setup-seafile-mysql.sh’ script uit.
./setup-seafile-mysql.sh
Het installatiescript zal de python module controle uitvoeren. Zorg ervoor dat alle afhankelijkheden geïnstalleerd zijn en druk dan op Enter.
Nu ben je binnen voor de configuratie van Seafile.
- servernaam: voer je seafile servernaam in, zoals ‘hakase-cloud’.
- server domeinnaam: typ de domeinnaam voor je seafile server ‘cloud.hakase-labs.io’.
- seafile gegevensdirectory: laat de standaardinstelling voor de configuratie staan en druk op enter.
- seafile fileserver poort: laat hem op de standaard poort ‘8082’ staan.
Nu de configuratie van de databank. Er worden je 2 opties gevraagd: het script de databank voor je laten maken, of een bestaande databank gebruiken.
Kies optie ‘2’ om bestaande database instellingen te gebruiken.
- database host: standaard op localhost
- databasepoort: standaard op mysql normale poort ‘3306’
- databankgebruiker is ‘seafile’ met wachtwoord ‘[email protected]’
- ccnet databank: ‘ccnet-db’
- seafile databank: ‘seafile-db’
- seahub databank: ‘seahub-db’
Druk nu weer op enter om onze seafile server configuratie te bevestigen.
En als de installatie voltooid is, krijg je het resultaat zoals hieronder.
De installatie en configuratie van de seafile server is met succes voltooid. En de seafile fileserver zal draaien onder poort ‘8082’, de seahub dienst zal draaien onder poort ‘8000’.
Nu gaan we testen of we de seafile server en seahub server kunnen draaien met het start script.
Ga als ‘ryujin’ gebruiker naar de ‘~/seafile-server-latest’ directory.
su - ryujin cd ~/seafile-server-latest/
Start nu de seafile server door het onderstaande commando uit te voeren.
./seafile.sh start
Draai dan de seahub server.
./seahub.sh start
De eerste keer dat je het ‘seahub.sh’ start script uitvoert, wordt je gevraagd om een admin gebruiker en wachtwoord voor seafile server aan te maken.
Typ je admin email en wachtwoord, en druk dan op Enter.
En de admin gebruiker en het wachtwoord zijn aangemaakt – controleer nu de seafile en seahub dienstpoorten ‘8082’ en ‘8080’ met het netstat commando.
ss -plnt4
En je zult zien dat de seafile server en seahub server up and running zijn op Ubuntu 20.04 systeem.
Stop nu seafile en seahub server.
./seafile.sh stop ./seahub.sh stop
Stap 5 – Seafile configureren met domeinnaam
Voor deze handleiding zullen we de Seafile draaien met onze domeinnaam ‘seafile.hakase-labs.io’. Om dat te doen moeten we enkele van de Seafile configuraties bewerken.
Meld je aan als gebruiker ‘ryujin’ en ga naar de map ‘conf’.
su - ryujin cd conf/
Bewerk de configuratie ‘ccnet.conf’ met vim editor.
vim ccnet.conf
verander op de ‘SERVICE_URL’ optie de waarde met de domeinnaam, en let erop dat je het standaard HTTP protocol verandert in HTTPS beveiligd protocol zoals hieronder.
SERVICE_URL = https://seafile.hakase-labs.io
Opslaan en sluiten.
Bewerk vervolgens de configuratie ‘seafile.conf’.
vim seafile.conf
Geef in de sectie ‘[fileserver]’ het ‘host’ IP adres op voor de seafile dienst. De seafile dienst zal op het lokale adres draaien zoals hieronder.
[fileserver] host = 127.0.0.1 port = 8082
Sla op en sluit.
Bewerk vervolgens de ‘seahub_settings.py’ met vim editor.
vim seahub_settings.py
Voeg de ‘FILE_SERVER_ROOT’ optie als hieronder onderaan de regel toe.
FILE_SERVER_ROOT = 'https://seafile.hakase-labs.io/seafhttp'
Sla op en sluit.
En de configuratie van Seafile is voltooid, het zal draaien onder de domeinnaam ‘seafile.hakase-labs.io’.
Stap 6 – Draai Seafile als een Systemd dienst
Na het instellen van Seafile met de domeinnaam, zullen we seafile en seahub instellen als een systemd dienst.
Ga naar de ‘/etc/systemd/system’ directory en maak een nieuw dienstbestand aan voor seafile met de naam ‘seafile.service’.
cd /etc/systemd/system/ vim seafile.service
Plak er de volgende configuratie in.
[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
Bewaar en sluit.
Maak vervolgens het seahub service bestand aan met de naam ‘seahub.service’.
vim seahub.service
Plak er de volgende configuratie in.
[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
Bewaar en sluit.
En de seafile en seahub service bestanden zijn gemaakt.
Herlaad vervolgens de systemd manager en controleer of er geen fout optreedt.
systemctl daemon-reload
Start nu de seafile dienst en voeg hem toe aan het opstarten van het systeem.
systemctl start seafile systemctl enable seafile
Start daarna de seahub dienst en schakel die in.
systemctl start seahub systemctl enable seahub
De seafile en seahub dienst zijn aan de praat, controleer ze met het volgende commando.
systemctl status seafile seahub
Hieronder staat het resultaat dat je krijgt.
Als resultaat is de configuratie van seafile en seahub als een systemd dienst voltooid.
Stap 7 – Genereer SSL Letsencrypt en DHPARAM
In deze stap zullen we het SSL Letsencrypt en DHPARAM certificaat genereren. We zullen het certbot gereedschap gebruiken om het SSL Letsencrypt te genereren en het openssl commando om het dhparam certificaat te genereren.
Om de SSL Letsencrypt te genereren, zorg je ervoor dat je de echte domeinnaam hebt en gericht op het IP adres van je server.
Installeer het certbot gereedschap op het Ubuntu systeem met het apt commando hieronder.
sudo apt install certbot
Genereer daarna de SSL Letsencrypt voor de seafile domein-naam ‘seafile.hakase-labs.io’ met het certbot commando zoals hieronder.
certbot certonly --agree-tos --no-eff-email --email [email protected] -d seafile.hakase-labs.io
Als het hele proces voltooid is, zal je certificaat beschikbaar zijn in de ‘/etc/letsencrypt/live/seafile.hakase-labs.io’ directory.
Genereer vervolgens het DHPARAM certificaat met het openssl commando zoals hieronder.
openssl dhparam -out /etc/nginx/dhparam.pem 2048
Het DHAPRAM certificaat zal gegenereerd worden en beschikbaar zijn op de ‘/etc/nginx/dhparam.pem’.
Het resultaat is dat het SSL Letsencrypt voor de Seafile domein-naam en het DHPARAM certificaat zijn gegenereerd.
Stap 8 – Installeer en configureer Nginx als een Reverse-Proxy
In deze stap installeren en configureren we Nginx als een omgekeerde proxy voor de Seafile dienst. De Nginx webserver zal draaien onder het veilige HTTPS protocol met het SSL Letsencrypt en DHPARAM certificaat dat er bovenop gegenereerd is.
Installeer Nginx op de Ubuntu 20.04 server met het onderstaande apt commando.
sudo apt install nginx -y
Als de hele installatie voltooid is, start je de Nginx dienst en voeg je hem toe aan het systeem opstarten.
systemctl start nginx systemctl enable nginx
En de Nginx dienst is up and running op het Ubuntu systeem.
Ga nu naar de ‘/etc/nginx/sites-available’ directory en maak een nieuwe virtualhost configuratie ‘seafile’ met behulp van vim editor.
cd /etc/nginx/sites-available/ vim seafile
Plak er de volgende configuratie in.
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;
}
}
Bewaar en sluit.
Activeer nu de virtualhost configuratie voor seafile en test de Nginx configuratie.
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/ nginx -t
Controleer of er geen fout optreedt en start dan de Nginx dienst opnieuw.
systemctl restart nginx
Het resultaat is dat de Nginx installatie en configuratie als reverse proxy voor seafile met succes voltooid is.
Stap 9 – Firewall instellen
Voor deze zelfstudie zullen we de Seafile draaien met de UFW firewall ingeschakeld. En we moeten de SSH, HTTP, en HTTPS diensten aan de UFW firewall configuratie toevoegen.
Voeg de SSH, HTTP, en HTTPS diensten aan de UFW firewall toe met het volgende commando.
for svc in ssh http https do ufw allow $svc done
Activeer nu de UFW firewall en controleer de status van de configuratie.
ufw enable ufw status numbered
En je krijgt het resultaat als hieronder.
De UFW firewall is ingeschakeld, en de SSH, HTTP, en HTTPS diensten zijn toegevoegd.
Nu zijn we klaar om de Seafile te gebruiken.
Stap 10 – Testen
Open je web browser en typ de domeinnaam van de Seafile installatie in de adresbalk.
https://seafile.hakase-labs.io/
Nu word je doorgestuurd naar de beveiligde HTTPS verbinding en krijg je de Seafile login pagina zoals hieronder.
Typ het seafile gebruikerswachtwoord dat je zojuist aanmaakte bovenaan en klik op de ‘Log In’ knop.
Nu krijg je het Seafile dashboard zoals hieronder.
Hieronder is het resultaat na het aanmaken van een nieuwe map en het uploaden van het bestand naar de Seafile server.
Het resultaat is dat de installatie en configuratie van Seafile met Nginx webserver en MariaDB databank op Ubuntu 20.04 met succes is voltooid.