Aktionen

Seafile Server - Installation auf Ubuntu 18.04.x LTS

Aus znilwiki


Button wird-nicht-mehr-aktualisiert.png

Diese Anleitung wird nicht mehr gepflegt! Es gibt eine neuere Version des Artikel:



Changelog:

  • 10.08.2018: Erste Version
  • 16.01.2019: geändert auf Seafile Version 6.3.4
  • 10.06.2019: "ProxyPreserveHost On" hinzugefügt
  • 15.08.2019: geändert auf Seafile Version 7.0.4 / diverse Typos
  • 30.04.2020: geändert auf Seafile Version 7.0.5 / Hinweis auf 7.1.3

Installation Ubuntu Server

Mein Server ist eine VM die ich wie folgt installiert habe:


Hardware

  • HDD1 mit 20GB (Boot)
  • HDD2 mit 2TBGB unter /home (Seafile Daten)
  • LVM wird genutzt!
  • 2 CPU
  • 2 GB RAM

Grundinstallation

Verwendet die 64Bit Version mit dem herkömmlichen Installer: http://cdimage.ubuntu.com/releases/18.04/release/ (ubuntu-18.04-server-amd64.iso), CD einlegen und los,
die Fragen beantwortet Ihr wie folgt (sind ggf. die Überschriften der Dialoge):

  • ClipCapIt-161125-104554.PNG Deutsch
  • ClipCapIt-161125-104745.PNG Ubuntu Server installieren
  • ClipCapIt-161125-104849.PNG [!] Select a language: <Ja>
  • ClipCapIt-161125-104951.PNG [!] Auswählen des Standorts: Deutschland
  • ClipCapIt-161125-105119.PNG [!] Tastatur konfigurieren: <Nein>
  • ClipCapIt-161125-105203.PNG [!] Tastatur konfigurieren: German
  • ClipCapIt-161125-105251.PNG [!] Tastatur konfigurieren: German
  • ClipCapIt-161125-105611.PNG [!] Netzwerk einrichten: zabbix-server.domain.local (Name nach Wahl!)
  • ClipCapIt-161125-105710.PNG [!] Benutzer und Passwörter einrichten: installadmin (Benutzername nach Wahl)
  • ClipCapIt-161125-110151.PNG [!] Benutzer und Passwörter einrichten: installdadmin
  • ClipCapIt-161125-110255.PNG [!] Benutzer und Passwörter einrichten: test1234 (Kennwort nach Wahl)
  • ClipCapIt-161125-110359.PNG [!] Benutzer und Passwörter einrichten: test1234
  • ClipCapIt-161125-110444.PNG [!] Benutzer und Passwörter einrichten: <Nein>
  • ClipCapIt-161125-110558.PNG [!] Uhr einstellen: <Ja>
  • ClipCapIt-161125-110646.PNG [!!] Festplatten partitionieren: Geführt - gesamte Platte verwenden und LVM einrichten
  • ClipCapIt-161125-111037.PNG [!!] Festplatten partitionieren: Return
  • ClipCapIt-161125-111121.PNG [!!] Festplatten partitionieren: <Ja>
  • ClipCapIt-161125-111207.PNG [!] Festplatten partitionieren: <Weiter>
  • ClipCapIt-161125-111249.PNG [!] Festplatten partitionieren: <Ja>
  • ClipCapIt-161125-111514.PNG [!] Paketmanager konfigurieren: ggf. Proxy angeben <Weiter>
  • ClipCapIt-161125-111733.PNG [!] Konfiguriere tasksel: Keine automatischen Aktualisierungen
  • ClipCapIt-161125-111842.PNG [!] Softwareauswahl
    • [*] LAMP server
    • [*] standard system utilities
    • [*] OpenSSH Server
    • <Weiter>
  • ClipCapIt-161125-112242.PNG [!] Konfiguriere mysql-server-5.7: Passwort-nach-Wahl <Weiter>
  • ClipCapIt-161125-113014.PNG [!] Konfiguriere mysql-server-5.7: Passwort-nach-Wahl <Weiter>
  • ClipCapIt-161125-113924.PNG [!] GRUB-Bootloader auf einer Festplatte installieren: <Ja>
  • ClipCapIt-161125-114152.PNG [!!] Installation abschließen: <Weiter>
  • ClipCapIt-161125-114250.PNG Bootet neu, CD-ROM entfernen



root wieder freischalten

  • Mit Benutzer installadmin anmelden
sudo passwd root
  • Kennwort des Benutzer installadmin eintippen
  • neues Kennwort für "root" 2x eintippen
ClipCapIt-161125-140609.PNG
  • Lokal Anmelden kann man sich nun mit root - aber eine Anmeldung über SSH funktioniert dann immer noch nicht.
  • Damit diese auch funktioniert müsst ihr die sshd_config bearbeiten:
sudo nano /etc/ssh/sshd_config

sucht nach der Zeile (STRG + W ist Suchen) nach

PermitRootLogin without-password

oder

PermitRootLogin prohibit-password

und ändert diese wie folgt:

PermitRootLogin yes
ClipCapIt-161125-140904.PNG

Speichert die Datei und startet den ssh Dienst neu:

sudo systemctl restart sshd

Ab dann klappt es auch mit dem SSH-Login für den Benutzer root, z.B. über puTTY
Jetzt

logout

eintippen - der (eingeschränkte) Benutzer installadmin hat sich somit abgemeldet


Installadmin löschen

Gleich der erste Test - wir melden uns als root an und löschen den installadmin mit dem unsicheren Kennwort wieder.
Als root anmelden

deluser --remove-home installadmin
ClipCapIt-161125-141443.PNG



root farbiger Prompt

Als root anmelden:

nano ~/.bashrc

Zeile 39 (Alt + C aktiviert Zeilennummernanzeige):

#force_color_prompt=yes

ändern zu (# entfernen):

force_color_prompt=yes


nun wieder Abmelden - ab der nächsten Anmeldung ist der neue Prompt aktiv.

ClipCapIt-161125-141717.PNG



Feste IP-Adresse vergeben

Als root anmelden Konfigurationsdatei bearbeiten:

nano /etc/netplan/01-netcfg.yaml

Die Netzwerkkarte hat einen Namen der in der Regel mit

ens...

beginnt. In meiner VM ist es ens160. Den Namen könnt Ihr z.B. mit dem Befehl

ip addr

herausfinden.

network:
    ethernets:
        ens160:
            addresses:
            - 192.168.45.140/24
            gateway4: 192.168.45.1
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
            optional: true
    version: 2
  • mehrere DNS-Server werden einfach durch weitere entsprechende Zeilen angegeben
  • Speichern STRG + x, danach j und den Dateinamen mit Enter bestätigen
reboot

eintippen und den Server damit wieder neu starten - wenn ihr alles richtig gemacht habt hört dieser nun auf die neue IP-Adresse,
wenn er beim Booten zickt und hängt habt ihr wahrscheinlich bei der IP etwas falsch eingetippt - nochmal vergleichen!
ClipCapIt-161127-124354.PNG


Updates einspielen

  • wieder anmelden als root - ggf. per puTTY - dann können wir schön die nachfolgenden Befehle per Copy&Paste einfügen.
  • Updates suchen für Betriebssystem: (aktualisiert den Katalog aus den Update-Quellen)
apt update
  • Updates einspielen:
apt dist-upgrade -y
  • Nach Update überflüssige Pakete entfernen:
apt autoremove -y



Automatische Updates deaktivieren

Sicherheitshalber - ich hatte jetzt schon 4 Ubuntu Server wo /boot zu 100% voll war wegen der automatischen Kernelupdates.
Das verhindern wir mit:

apt remove -y unattended-upgrades

Nun werden auch diese nicht automatisch eingespielt.


Zusätzliche Festplatte einbinden

Zuerst müssen wir herausfinden wie die 2. Festplatte heißt:

ls -l /dev/sd*

Ausgabe:

brw-rw---- 1 root disk 8,  0 Apr 30 13:01 /dev/sda
brw-rw---- 1 root disk 8,  1 Apr 30 13:01 /dev/sda1
brw-rw---- 1 root disk 8, 16 Apr 30 13:01 /dev/sdb

/dev/sda ist die erste Festplatte, sda1 etc. sind die Partitionen.
Unsere Zielfestplatte Platte ist die /dev/sdb

Wir arbeiten mit dem LVM - der erleichtert uns eine spätere Vergrößerung der Festplatte, die Befehle für das einbinden der neuen Festplatte sind wie folgt:

pvcreate /dev/sdb
vgcreate seafile-data /dev/sdb
lvcreate -n home -l100%VG seafile-data
mkfs.ext4 /dev/seafile-data/home

Damit haben wir

  • Das PV - Physical Volume - angelegt pvcreate
  • Die VG - Volume Group - angelegt mit dem PV als Inhalt vgcreate und dem Namen seafile-data
  • Ein LV - Logisches Volume - mit dem Name home welches 100% des Platzes in der VG seafile-data nutzt
  • Und das neue LV mit dem EXT4 Dateisystem formatiert


Fehlt noch das mounten bzw. das automatische mounten beim booten:

nano /etc/fstab

und folgende Zeile anhängen:

/dev/mapper/seafile--data-home /home ext4 defaults 0 1

Damit wird die 2. Festplatte auf das /home Verzeichnis gemappt. Das klappt nur wenn

  • Das Verzeichnis leer ist (weil Ihr den installadmin wieder gelöscht habt
  • als root angemeldet seit und es noch keine anderen Benutzer gibt

Alternativ müsstet Ihr den Pfad anpassen, z.B. ein Unterordner unterhalb von /home
Um das Mounten zu testen könnt Ihr rebooten oder folgenden Befehl eintippen:

mount -a

Wir überprüfen das ganze z.B. mit

df -h

Ausgabe:

Dateisystem                    Größe Benutzt Verf. Verw% Eingehängt auf
udev                            477M       0  477M    0% /dev
tmpfs                           100M    4,6M   95M    5% /run
/dev/mapper/seafile--vg-root     15G    2,1G   12G   16% /
tmpfs                           497M       0  497M    0% /dev/shm
tmpfs                           5,0M       0  5,0M    0% /run/lock
tmpfs                           497M       0  497M    0% /sys/fs/cgroup
/dev/sda1                       472M    106M  342M   24% /boot
tmpfs                           100M       0  100M    0% /run/user/0
/dev/mapper/seafile--data-home  493G     70M  467G    1% /home



Benötigte Pakete installieren

Folgende Programmpakte sollten Installiert sein:

apt install python -y
apt install python2.7 libpython2.7 python-setuptools python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-pil -y
pip install pillow moviepy




Seafile Benutzer und Verzeichnisse anlegen

Wir erstellen einen Benutzer seafile dessen Home-Verzeichnis gleichzeitig unser Seafile-Installationsordner ist. Den Pfad müsst Ihr ggf. an eure Wünsche oder Verhältnisse anpassen, bei mir ist der ganze freie Speicherplatz unter /home - dort habe ich auch die zusätzliche Festplatte eingehängt.

adduser --disabled-login --gecos "Seafile" seafile --home /home/seafile/

Nun legen wir noch einen symbolischen Link an (Warum steht am Ende dieses Abschnittes):

ln -s /home/seafile /var/lib/seafile

Wir wechseln auf diesen eben neu erstellten Benutzer:

su - seafile

und sind dann automatisch im Heimatverzeichnis des Benutzers - also in

/home/seafile/

Wir erstellen nun einen neuen Ordner haiwen und wechseln in diesen:

mkdir haiwen
cd haiwen

Warum haiwen? Und warum der symbolische Link nach /var/lib/seafile? Nun, dann halten wir uns an das vorgschlagene Schema der Seafile-Entwickler - und alle Beispiele und Anleitungen aus dem Internet sollte ohne Änderungen funktionieren. Der Ordner heisst "haiwen" weil Seafile wohl so im Chinesischen genannt wird.
Eigentlich soll statt haiwen dann der Name eurer Organisation / Firma verwendet werden.

Important.png
Hinweis: Mit su - seafile wechselt Ihr ja zum Benutzer seafile - mit exit landet Ihr wieder in eurer ursprünglichen Sitzung




Seafile herunterladen und installieren

Important.png
Hinweis:Wir sind zum Benutzer seafile gewechselt und befinden uns im Unterordner /home/seafile/haiwen


Die Dateien die wir herunterladen müssen wir nur entpacken und sind sofort lauffähig.
Also laden wir die Dateien für den Server herunter und enpacken einfach direkt in das Zielverzeichnis.

Version 7.0.5:

wget https://download.seadrive.org/seafile-server_7.0.5_x86-64.tar.gz


Entpacken und archivieren:

tar xzfv seafile-server_7.0.5_x86-64.tar.gz
mkdir installed
mv seafile-server_* installed

Die ganze Verzeichnisstruktur sollte nun so aussehen:

/home
├── lost+found
└── seafile
    └── haiwen
        ├── installed
        │   └── seafile-server_7.0.5_x86-64.tar.gz
        └── seafile-server-7.0.5
            ├── check_init_admin.py
            ├── reset-admin.sh
            ├── runtime
            ├── seaf-fsck.sh
            ├── seaf-fuse.sh
            ├── seaf-gc.sh
            ├── seafile
            ├── seafile.sh
            ├── seahub
            ├── seahub.sh
            ├── setup-seafile-mysql.py
            ├── setup-seafile-mysql.sh
            ├── setup-seafile.sh
            ├── sql
            └── upgrade

Anmeldung an Datenbank vorbereiten

Das Installationsskript will sich unbedingt als Benutzer "root" an der MySQL-Datenbank anmelden.
Das Skript selbst wird aber als Benutzer seafile ausgeführt.
Und in den neueren Installationen kann sich der Benutzer root nicht mehr mit Benutzername und Passwort anmelden.
Das ganze können wir wie folgt ändern:

Wieder zum Benutzer root wechseln ("exit")
MySQL-Konsole aufrufen (geht immer noch ohne Passwort):

mysql

und dann folgende Befehle ausführen:

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

Danach MySQL neu starten

systemctl restart mysql.service

Passwort für Benutzer root setzen:

mysqladmin -u root password

und dann 2 x das neue Kennwort eingeben.
und Zugriff testen:

mysql -u root -p

Und dann das Passwort eingeben.
Dann wieder zum Benutzer seafile wechseln und noch einmal testen mit obiger Zeile. Wenn das klappt seit Ihr bereit für das Setup-Skript.


Seafile Setup ausführen

Wir arbeiten weiter in der Anmeldung als Benutzer seafile (su - seafile) und führen das Setup von Seafile mit MySQL aus:

cd /home/seafile/haiwen/seafile-server-*
./setup-seafile-mysql.sh

Die Dialoge beantwortet Ihr wie folgt:

Checking python on this machine ...
  Checking python module: setuptools ... Done.
  Checking python module: python-imaging ... Done.
  Checking python module: python-mysqldb ... Done.

-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at

        https://github.com/haiwen/seafile/wiki

Press ENTER to continue
-----------------------------------------------------------------


What is the name of the server? It will be displayed on the client.
3 - 15 letters or digits
[ server name ] seafile

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] seafile.znil.net

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/home/seafile/haiwen/seafile-data" ]

Which port do you want to use for the seafile fileserver?
[ default "8082" ]

-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ] 1

What is the host of mysql server?
[ default "localhost" ]

What is the port of mysql server?
[ default "3306" ]

What is the password of the mysql root user?
[ root password ]

verifying password of user root ...  done

Enter the name for mysql user of seafile. It would be created if not exists.
[ default "seafile" ]

Enter the password for mysql user "seafile":
[ password for seafile ]

verifying password of user seafile ...  done

Enter the database name for ccnet-server:
[ default "ccnet-db" ]

Enter the database name for seafile-server:
[ default "seafile-db" ]

Enter the database name for seahub:
[ default "seahub-db" ]

---------------------------------
This is your configuration
---------------------------------

    server name:            seafile
    server ip/domain:       seafile.znil.net

    seafile data dir:       /home/seafile/haiwen/seafile-data
    fileserver port:        8082

    database:               create new
    ccnet database:         ccnet-db
    seafile database:       seafile-db
    seahub database:        seahub-db
    database user:          seafile



---------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------

Generating ccnet configuration ...

done
Successly create configuration dir /home/seafile/haiwen/ccnet.
Generating seafile configuration ...

Done.
done
Generating seahub configuration ...

----------------------------------------
Now creating seahub database tables ...

----------------------------------------

creating seafile-server-latest symbolic link ...  done




-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------

run seafile server:     ./seafile.sh { start | stop | restart }
run seahub  server:     ./seahub.sh  { start <port> | stop | restart <port> }

-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------

port of seafile fileserver:   8082
port of seahub:               8000

When problems occur, Refer to

        https://github.com/haiwen/seafile/wiki

for information.



Danach starten wir die Dienste als Test und um die Konfiguration ganz abzuschließen:

cd ..
cd seafile-server-latest
./seafile.sh start
./seahub.sh start

Nun kommen wieder ein paar Fragen:

LC_ALL is not set in ENV, set to en_US.UTF-8
Starting seahub at port 8000 ...

----------------------------------------
It's the first time you start the seafile server. Now let's create the admin account
----------------------------------------

What is the email for the admin account?
[ admin email ] admin@znil.net

What is the password for the admin account?
[ admin password ]

Enter the password again:
[ admin password again ]



----------------------------------------
Successfully created seafile admin
----------------------------------------




Seahub is started

Done.

Im Moment lauscht der Seafile Server nur lokal auf 127.0.0.1:8000 - das müssen wir noch anpassen:

./seahub.sh stop
nano ../conf/gunicorn.conf

und dann die Zeile

bind = "127.0.0.1:8000"

auf

bind = "0.0.0.0:8000"

ändern. ./seahub.sh start

Mit der Email-Adresse und dem Passwort könnt Ihr euch nun am Seafile Server anmelden:

http://192.168.45.21:8000
ClipCapIt-171031-140855.PNG



Seafile beim Systemstart automatisch starten

Falls Seafile noch läuft stoppen wir es nun:

su - seafile
/home/seafile/haiwen/seafile-server-latest/seahub.sh stop
/home/seafile/haiwen/seafile-server-latest/seafile.sh stop
exit
Important.png
Hinweis:Wir sind zum stoppen zum Benutzer seafile gewechselt. Für die nächsten Schritte sollten wir wieder der Benutzer root sein


Für den Start als Dienst nutzt man seit Ubuntu 16.04.x den systemd Dienst:
Seafile-Service:

nano /etc/systemd/system/seafile.service

Inhalt:

[Unit]
Description=Seafile
After=network.target mysql.service

[Service]
Type=oneshot
ExecStart=/home/seafile/haiwen/seafile-server-latest/seafile.sh start
ExecStop=/home/seafile/haiwen/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=seafile
Group=seafile

[Install]
WantedBy=multi-user.target


Seahub-Service:

nano /etc/systemd/system/seahub.service

Inhalt:

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/home/seafile/haiwen/seafile-server-latest/seahub.sh start
ExecStop=/home/seafile/haiwen/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target


Nun noch aktivieren:

systemctl enable seafile.service
systemctl enable seahub.service

Nun können wir Seafile als Dienst starten:

systemctl start seafile.service
systemctl start seahub.service


Ihr könnt den Server auch rebooten - danach sollte wieder auf Port 8000 die Webseite von Seafile erreichbar sein.


Server mit SSL / HTTPS über Apache absichern

Auf meinem Server ist als Webserver der Apache 2 installiert.
Seafile arbeitet im Moment noch an allem vorbei, also müssen wir im ersten Schritt das ganze auf Apache 2 umbauen.



Schritt 1: Umbau auf http Port 80

So, zunächst biegen wir den Zugriff von Port 8000 auf Port 80 um - man kann den Seafile-Server dann also unter seiner Subdomain oder Domain erreichen ohne den Port angeben zu müssen - allerdings noch per http ohne Verschlüsselung. Wenn das funktioniert können wir im Anschluss auf https umbauen.
Als Vorlage habe ich mich an dieser Anleitung orientiert: https://manual.seafile.com/deploy/deploy_with_apache.html

Wir Konfigurieren den Apache für die Verwendung von ReWrite und dem Proxy Modul (SSL ist schon mal für den nächsten Abschnitt mit drin):

a2enmod rewrite
a2enmod proxy_http
a2enmod ssl

und dann müssen wir den Apache Webserver einmal neu starten:

systemctl restart apache2.service


Jetzt ändern wir die Konfigurationsdatei der Default Webseite von Apache:

nano /etc/apache2/sites-enabled/000-default.conf

Löscht den GANZEN Inhalt (F9 benutzen) und fügen statt dessen folgendes ein:

<VirtualHost *:80>
    ServerName seafile.znil.net
    DocumentRoot /var/www
    Alias /media  /home/seafile/haiwen/seafile-server-latest/seahub/media

    RewriteEngine On

    <Location /media>
        Require all granted
    </Location>

    #
    # seafile fileserver
    #
    ProxyPass /seafhttp http://127.0.0.1:8082
    ProxyPassReverse /seafhttp http://127.0.0.1:8082
    RewriteRule ^/seafhttp - [QSA,L]

    #
    # seahub
    #
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8000/
    ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>

Den Servernamen müsst und solltet Ihr anpassen.

Dann ändern wir die

nano /home/seafile/haiwen/conf/ccnet.conf

und entfernen bei

SERVICE_URL = http://seafile.znil.net:8000

die :8000 am Ende:

SERVICE_URL = http://seafile.znil.net


Als nächsten die

nano /home/seafile/haiwen/conf/seahub_settings.py

Dort hängen wir als letzte Zeile diese hier an:

HTTP_SERVER_ROOT = 'http://seafile.znil.net/seafhttp'



Jetzt haben wir alles und müssen nur noch die Dienste neu starten:

systemctl restart apache2.service
systemctl stop seahub.service
systemctl stop seafile.service
systemctl start seafile.service
systemctl start seahub.service


JETZT solltet Ihr euren Seafile-Server unter

http://subdomain.domain.suffix
http://192.168.45.21

erreichen können.
Und zwar könnt Ihr euren Server jetzt nur noch über diese Adresse erreichen - der Zugriff über Port 8000 funktioniert nicht mehr.


Schritt 2: Umbau von http auf https

So, wenn der Zugriff über http:// läuft ist das Schlimmste geschafft.


Zertifikat erstellen

Wir bauen uns hier nun ein selbstsigniertes Zertifikat. Wenn Ihr ein richtiges habt dann legt es einfach an entsprechender Stelle ab.
Wir wechseln ins Seafile Verzeichnis und legen einen neuen Ordner an:

cd /home/seafile/haiwen
mkdir certificates
cd certificates/

Dann erstellen wir mit openssl den Schlüssel und das Zertifikat:

openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 3650
chmod +r *

Er stellt euch nach dem 2. Befehl ein paar Fragen, wichtig ist aber nur die Antwort auf die folgende:

Common Name (e.g. server FQDN or YOUR name) []:seafile.znil.net

Hier müsst ihr unbedingt den Domänennamen angeben wie Ihr diesen auch im Webbrowser eintippt!

Nun müsstest Ihr 2 Dateien haben im Ordner certificates:

/home/seafile/haiwen/certificates/
├── cacert.pem
└── privkey.pem



Apache konfiguration anpassen

Zunächst muss - wen noch nicht geschehen - die SSL Unterstützung in Apache aktiviert werden:

a2enmod ssl

Dann bearbeiten wir noch mal die Datei

nano /etc/apache2/sites-available/default-ssl.conf

und löscht wieder den ganzen Inhalt (F9) und ersetzt diesen wie folgt:

<VirtualHost *:443>
  ServerName www.myseafile.com
  DocumentRoot /var/www

  SSLEngine On
  SSLCertificateFile /home/seafile/haiwen/certificates/cacert.pem
  SSLCertificateKeyFile /home/seafile/haiwen/certificates/privkey.pem

  Alias /media  /home/seafile/haiwen/seafile-server-latest/seahub/media

  <Location /media>
    Require all granted
  </Location>

  RewriteEngine On

  #
  # seafile fileserver
  #
  ProxyPass /seafhttp http://127.0.0.1:8082
  ProxyPassReverse /seafhttp http://127.0.0.1:8082
  RewriteRule ^/seafhttp - [QSA,L]

  #
  # seahub
  #
  SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
  ProxyPreserveHost On
  ProxyPass / http://127.0.0.1:8000/
  ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>

Denkt an die Anpassung des Servernamens!
Ggf. muss die Seite noch aktiviert werden:

a2ensite default-ssl.conf



Seafile Konfiguration anpassen

Jetzt muss Seafile selbst noch wissen das wir https:// nutzen:

nano /home/seafile/haiwen/conf/ccnet.conf

und dort die Zeile

SERVICE_URL = http://seafile.znil.net

auf

SERVICE_URL = https://seafile.znil.net

ändern.
Und noch in der

nano /home/seafile/haiwen/conf/seahub_settings.py

die Zeile

HTTP_SERVER_ROOT = 'http://seafile.znil.net/seafhttp'

in

HTTP_SERVER_ROOT = 'https://seafile.znil.net/seafhttp'

ändern.

Wieder alle Dienste neu starten:

systemctl restart apache2.service
systemctl stop seahub.service
systemctl stop seafile.service
systemctl start seafile.service
systemctl start seahub.service

und nun erreichen wir Seafile unter

https://subdomain.domain.suffix
https://192.168.45.21

Bei einem selbst erstellten Zertifikat bekommt Ihr nun eine Sicherheitswarnung (ich habe es bei mir in die Vertrauenswürdigen Stammzertifizierungsstellen importiert, dann ist Ruhe)



Migration Seafile auf neuen Server

Nach einigen Fehlversuchen: So habe ich meine Seafile-Installation von einem Ubuntu 14.04.x auf 16.04.x migriert bekommen. Die alte Version war mal mit Seafile 3.x gestartet und immer wieder bis 6.1.1 geupdatet worden. Ich wollte diese aber schon lange von Ubuntu 14.04.x auf 16.04.x umziehen. Dank eines Umzug auf einen neuen Server hatte ich nun auch den Platz dazu (alte und neue VM parallel).

  • Die Seafile-Installation auf dem alten Server ggf. updaten so das diese mit der geplanten Version auf dem neuen Server übereinstimmt
  • Sollte die alte Installation noch mit FastCGI laufen - Updatet nur bis zu Version 6.1.2, noch nicht auf 6.2.2. Dementsprechend installiert auf dem neuen Server auch erst einmal 6.1.2. Solltet Ihr schon auf 6.2.2 oder höher sein ist es egal
  • Vorbereitung des neuen Servers wie zuvor beschrieben - einschließlich dem Punkt "Seafile Setup ausführen" - danach(!) folgendes machen:
  • Die 3 MySQL Datenbanken auf dem alten Server exportieren:
mysqldump -useafile -pseafile ccnet-db | gzip > /tmp/ccnet-db.sql.gz
mysqldump -useafile -pseafile seafile-db | gzip > /tmp/seafile-db.sql.gz
mysqldump -useafile -pseafile seahub-db | gzip > /tmp/seahub-db.sql.gz
  • auf den neuen Server kopieren mit scp
  • auf dem neuen Server in die vorhandenen Datenbanken importieren:
zcat /tmp/ccnet-db.sql.gz | mysql -useafile -pseafile ccnet-db
zcat /tmp/seafile-db.sql.gz | mysql -useafile -pseafile seafile-db
zcat /tmp/seahub-db.sql.gz | mysql -useafile -pseafile seahub-db
  • Die folgenden Ordner auf den neuen Server in den gleichen Pfad kopieren
/home/seafile/haiwen/seafile-data
/home/seafile/haiwen/seahub-data

Das hab ich mit rsync gemacht weil es bei mir fast 300GB sind und ich so bei einem Abbruch das Kopieren fortsetzen konnte:

rsync -raz -e ssh --update --progress -h /home/seafile/haiwen/seafile-data 192.168.45.21:/home/seafile/haiwen/
rsync -raz -e ssh --update --progress -h /home/seafile/haiwen/seahub-data 192.168.45.21:/home/seafile/haiwen/

Der dicke Fisch ist der seafile-data Ordner, das kann schon mal ein paar Stunden dauern je nach Größe.

  • Den Besitzer der Dateien wieder anpassen:
chown -R seafile:seafile /home/seafile/haiwen/*
  • Den Rest dann weiter wie beschrieben. Also erst einmal manuell starten und schauen ob es auf Port 8000 läuft, dann Umbau auf Port 80 und dann zusätzlich Port 443.



Loading comments...