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.

Installeer MariaDB Database Server

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;

Maak een nieuwe database en gebruiker voor Seafile

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.

Downloaden Seafile 7.1

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.

Seafile Installatie Configuratie

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’

Database configuratie voor zeebestand

Druk nu weer op enter om onze seafile server configuratie te bevestigen.

Seafile configuratie samenvatting

En als de installatie voltooid is, krijg je het resultaat zoals hieronder.

Seafile installeren op Ubuntu 20.04

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.

Zeebestand Maak Admin gebruiker

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

Stop Seafile en Seahub Service

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.

Configureer Seafile Domeinnaam

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

Configureer Seafile en Seahub als een Systemd dienst

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.

Configureer Seafile en Seahub als een Systemd dienst

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.

Installeer en configureer Nginx als omgekeerde proxy voor Seafile

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.

UFW staat SSH HTTP en HTTPS toe

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.

Seafile login pagina

Typ het seafile gebruikerswachtwoord dat je zojuist aanmaakte bovenaan en klik op de ‘Log In’ knop.

Nu krijg je het Seafile dashboard zoals hieronder.

Seafile Dashboard

Hieronder is het resultaat na het aanmaken van een nieuwe map en het uploaden van het bestand naar de Seafile server.

Zeefile Succesvol bestand uploaden

Het resultaat is dat de installatie en configuratie van Seafile met Nginx webserver en MariaDB databank op Ubuntu 20.04 met succes is voltooid.

Referentie