Aktionen

Seafile Server - Installation auf Ubuntu 14.04.x LTS mit ISPConfig

Aus znilwiki

Im Gegensatz zum Artikel mit Ubuntu 12.04.x LTS Installiere ich hier nach /home/seafile - das liegt daran das mein neuer Root-Server schlichtweg dort seinen ganzen Speicherplatz hat.
Das ganze habe ich auf einem Ubuntu 14.04.1 LTS installiert auf dem ich auch ISPConfig zur Verwaltung nutze.
Als Webserver nutze ich wie immer Apache - doch das ist nur bei der Absicherung mit einem Zertifikat interessant.

Important.png
Hinweis: Ich beschreibe hier die Installation der Seafile Version 3.1.7 - die Anleitung funktioniert aber 1:1 genauso für die neue Seafile Version 4.1.2!!! Auch die Synchronisierung des Seafile-Clients ausschliesslich über https!!!



Warning.png
Warnung: Diese Anleitung ist möglicherweise veraltet, bitte nimm die neuere Version: Seafile Server - Installation auf Ubuntu 18.04.x LTS

Neuere Version der Anleitung

Die neuere Version setzt auf Seafile 6.3.4 auf Ubuntu 18.04:

Seafile Server - Installation auf Ubuntu 18.04.x LTS

Ich empfehle diese Version zu nehmen!


Benötigte Pakete installieren

Folgende Programmpakte sollten Installiert sein:

apt-get install mysql-server python-setuptools python-simplejson python-imaging python-mysqldb default-jre




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 da ich beim Setup des Servers nicht darüber nachgedacht habe und den Vorschlag des Providers angenommen habe

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.

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

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.

32 oder 64Bit:
Ich musste bei meinem angemieteten Server auch erst schauen mit was der vorinstalliert ist.
gebt in der Bash einfach ein

uname -m

ein. Wenn in der Ausgabe NICHT ein

x86_64

steht habt Ihr eine 32Bit Maschine! bei der steht dann z.B.

i686

Ladet die passende Version für euch dann herunter, Falls die Links hier nicht mehr funktionieren:
Die Downloadseite bekommt Ihr unter http://seafile.com/en/download/
Herunterladen und entpacken wollen wir die Server for generic Linux

32Bit

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.7_i386.tar.gz
tar xzfv seafile-server_3.1.7_x86-64.tar.gz


64Bit

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.7_x86-64.tar.gz
tar xzfv seafile-server_3.1.7_x86-64.tar.gz


In beiden Fällen haben wir hinterher einen Ordner "seafile-server-3.x.x"
Die heruntergeladene Datei verschieben wir in den Ordner "installed":

mkdir installed
mv seafile-server_* installed

so das wir hinterher die folgende Ordnerstruktur haben:

/var/lib/seafile/haiwen
                 ├── installed
                 │   └── seafile-server_3.1.6_i386.tar.gz
                 └── seafile-server-3.1.6
                     ├── check_init_admin.py
                     ├── runtime       
                     ├── seafile     
                     ├── seahub     
                     ├── setup-seafile-mysql.py  
                     ├── setup-seafile.sh
                     ├── reset-admin.sh       
                     ├── seaf-fuse.sh  
                     ├── seafile.sh  
                     ├── seahub.sh  
                     ├── setup-seafile-mysql.sh  
                     └── upgrade

Die Entwickler haben geplant, das die eigentlichen Konfigurationsdateien etc. gleich im "haiwen" Verzeichnis liegen. Dann kann man eine neuere Version daneben installieren und dann Upgraden.



MySQL Datenbanken in ISPConfig anlegen

Vorweg - warum um himmelswillen Nutzen die da 3 verschiedenen Datenbanken für eine Software? Wenn Ich mir die Tabellen in den 3 Datenbanken anschaue gibt es keine Überschneidungen, die hätten also auch alles in EINE datenbank packen können - und vom Setup ist das auch möglich.
Nun bin ich aber ein Schisser und nehme doch die 3 Datenbanken ... weil sich die programmierer ggf. auf die Dreiteilung verlassen und bei einem Update alles den Bach herunter gehen könnte.
Ohne ISPConfig würden die Datenbanken und den Benutzer in dieser wie folgt anlegen: (als Benutzer root, ggf. sudo!)

mysql -uroot -p
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 'seafile';
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`;
FLUSH PRIVILEGES;
exit
 

Da wir aber einen Server mit ISPConfig haben gehen auf die ISPConfig Oberfläche und unter

Webseiten - Webseiten - Webseite

legen wir eine neue Subdomain für Seafile an. Alternativ müsst Ihr die Datenbanken gleich auf eine vorhandene Webseite "buchen".

Seafile-Ubuntu14.04-ISPConfig-001.png

Im Detail:

Seafile-Ubuntu14.04-ISPConfig-002.png

Danach gehen legen wir zunächst den Datenbank-Benutzer an:

Webseiten - Datenbanken - Datenbank Benutzer
Seafile-Ubuntu14.04-ISPConfig-003.png

und nun unter

Webseiten - Datenbanken - Datenbanken

die neuen 3 Datenbanken (namen habe ich angepasst, Zumeinen stehen die 3 Datenbanken nun zusammen dank des Präfix seafile_, zum anderen verbietet ISPConfig ein - im Namen)

seafile_ccnet_db
seafile_seafile_db
seafile_seahub_db

nach folgendem Schema:

Seafile-Ubuntu14.04-ISPConfig-004.png
Seafile-Ubuntu14.04-ISPConfig-005.png
Seafile-Ubuntu14.04-ISPConfig-006.png

Der neue Datenbankbenutzer ist:

Benutzer: dbseafileuser
Passwort: habtihrgewählt

Bei allen 3 Datenbanken habt Ihr die gleiche Webseite und den gleichen Datenbank-benutzer ausgewählt!
Und in ISPConfig sollte es in etwas so aussehen:

Seafile-Ubuntu14.04-ISPConfig-007.png




Setup ausführen

Wir arbeiten weiter in der Anmeldung als Benutzer seafile (su - seafle) 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
-----------------------------------------------------------------

Wir drücken brav auf Enter:

Servername

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

Der Name den Ihr angebt dient nur zur Anzeige im Webbrower / Client, kann also auch ein Fantasiebegriff sein.


IP oder DNS-Name

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

Der DNS-Name eures Servers oder die IP-Adresse - Ersetzt also das seafile.znil.net durch eure Adresse!


Verwendeter Port ccnet

Im Zweifel bestätigt die nächsten Frage mit Enter und nutzt damit den Standardport für Seafile:

Which port do you want to use for the ccnet server?
[ default "10001" ] 10001



Speicherort der Seafile-Daten

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

Den Pfad wiederum einfach mit Enter bestätigen:


Verwendeter Port Seafile

Which port do you want to use for the seafile server?
[ default "12001" ] 12001



Verwendeter Port Seafile http-Server

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

Dahinter finden wir hinterher die Seafile-Webseite


Datenbank ccnet erstellen

-------------------------------------------------------
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

Da dies eine Neuinstallation ist wählen wir die 1, später bei Updates würde man die 2 nehmen.


MySQL-Server Einstellungen

Die nächsten Fragen sind für die Verbindung zu den MySQL Datenbanken:

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 
Important.png
Hinweis: Wenn euer root benutzer KEIN Kennwort für mysql hat könnt Ihr mit
mysqladmin -u root password "geheim"
eines setzen! (Eine von vielen Möglichkeiten} Ohne Kennwort für den root Benutzter funktioniert das Setup nicht


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

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" ] seafile_ccnet_db

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

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

---------------------------------
This is your configuration
---------------------------------
 
    server name:            ZNIL
    server ip/domain:       seafile.znil.net
    ccnet port:             10001

    seafile data dir:       /home/seafile/haiwen/seafile-data
    seafile port:           12001
    httpserver port:        8082

    database:               create new
    ccnet database:         seafile_ccnet_db
    seafile database:       seafile_seafile_db
    seahub database:        seafile_seahub_db
    database user:          dbseafileuser



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

Mit einem Druck auf Enter geht es los:

Generating ccnet configuration ... 

done
Successly create configuration dir /var/lib/seafile/haiwen/ccnet.
Generating seafile configuration ...

Done.
done
Generating seahub configuration ...

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

----------------------------------------
Loading ccnet config from /home/seafile/haiwen/ccnet
Loading seafile config from /home/seafile/haiwen/seafile-data
Creating tables ...
Creating table django_content_type
Creating table django_session
Creating table registration_registrationprofile
Creating table captcha_captchastore
Creating table api2_token
Creating table api2_tokenv2
Creating table avatar_avatar
Creating table avatar_groupavatar
Creating table base_uuidobjidmap
Creating table base_filediscuss
Creating table base_filecontributors
Creating table base_userstarredfiles
Creating table base_dirfileslastmodifiedinfo
Creating table base_filelastmodifiedinfo
Creating table base_userenabledmodule
Creating table base_groupenabledmodule
Creating table base_userlastlogin
Creating table base_commandslastcheck
Creating table base_innerpubmsg
Creating table base_innerpubmsgreply
Creating table base_devicetoken
Creating table contacts_contact
Creating table wiki_personalwiki
Creating table wiki_groupwiki
Creating table group_groupmessage
Creating table group_messagereply
Creating table group_messageattachment
Creating table group_publicgroup
Creating table message_usermessage
Creating table message_usermsglastcheck
Creating table message_usermsgattachment
Creating table notifications_notification
Creating table notifications_usernotification
Creating table options_useroptions
Creating table profile_profile
Creating table profile_detailedprofile
Creating table share_anonymousshare
Creating table share_fileshare
Creating table share_uploadlinkshare
Creating table share_privatefiledirshare
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

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 ccnet server:         10001
port of seafile server:       12001
port of seafile httpserver:   8082
port of seahub:               8000

When problems occur, Refer to

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

for information.



Fertige Verzeichnisstruktur:

Nun sollten die Verzeichniss wie folgt aussehen:

tree -d -L 3 /home/seafile/haiwen/
/home/seafile/haiwen/
├── ccnet
├── conf
├── installed
├── seafile-data
│   └── library-template
├── seafile-server-3.1.0
│   ├── runtime
│   ├── seafile
│   │   ├── bin
│   │   ├── docs
│   │   ├── lib
│   │   └── lib64
│   ├── seahub
│   │   ├── locale
│   │   ├── media
│   │   ├── seahub
│   │   ├── sql
│   │   ├── subdomain
│   │   ├── thirdpart
│   │   └── tools
│   └── upgrade
│       ├── sql
│       └── win32
├── seafile-server-latest -> seafile-server-3.1.0
└── seahub-data
    └── avatars
        └── groups



Der erste Start ...

Wir starten nun das erste Mal die Seafile-Dienste (immer noch als Benutzer seafile):

/home/seafile/haiwen/seafile-server-latest/seafile.sh start
/home/seafile/haiwen/seafile-server-latest/seahub.sh start

Beim aller ersten Start von seahub.sh fragt er euch nach einem Administrations-Account:

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 ] test@test.test

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

Enter the password again:
[ admin password again ]



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



Loading ccnet config from /home/seafile/haiwen/ccnet
Loading seafile config from /home/seafile/haiwen/seafile-data

Seahub is started

Done.

Nun könnt Ihr euch an der Seafile-Webseite mit dem eben erstellten Account anmelden!



Anmeldung an Webseite

Habt Ihr alles auf Standard gelassen ist die Webseite unter

http://123.123.123.123:8000
http://eurerDNS-Name:8000

zu erreichen:

Seafile-Ubuntu14.04-ISPConfig-008.png




Seafile beim Systemstart automatisch starten

Als Quelle habe ich mich an diesem Beispiel hier orientiert: https://github.com/haiwen/seafile/wiki/Start-seafile-server-at-system-bootup
Wir arbeiten wieder als root (NICHT als Benutzer seafile):

nano /etc/init.d/seafile-server

und fügen folgendes ein:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          Seafile Server
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Seafile-Daemon at boot time
# Description:       Enable service provided by Seafile.
### END INIT INFO

# Change the value of "user" to your linux user name
user=seafile

# Change the value of "seafile_dir" to your path of seafile installation
seafile_dir=/home/seafile/haiwen
script_path=${seafile_dir}/seafile-server-latest
seafile_init_log=${seafile_dir}/logs/seafile.init.log
seahub_init_log=${seafile_dir}/logs/seahub.init.log

# Change the value of fastcgi to true if fastcgi is to be used
fastcgi=false
# Set the port of fastcgi, default is 8000. Change it if you need different.
fastcgi_port=8000

case "$1" in
        start)
                sudo -u ${user} ${script_path}/seafile.sh start >> ${seafile_init_log}
                if [  $fastcgi = true ];
                then
                        sudo -u ${user} ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log}
                else
                        sudo -u ${user} ${script_path}/seahub.sh start >> ${seahub_init_log}
                fi
        ;;
        restart)
                sudo -u ${user} ${script_path}/seafile.sh restart >> ${seafile_init_log}
                if [  $fastcgi = true ];
                then
                        sudo -u ${user} ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} >> ${seahub_init_log}
                else
                        sudo -u ${user} ${script_path}/seahub.sh restart >> ${seahub_init_log}
                fi
        ;;
        stop)
                sudo -u ${user} ${script_path}/seafile.sh $1 >> ${seafile_init_log}
                sudo -u ${user} ${script_path}/seahub.sh $1 >> ${seahub_init_log}
        ;;
        *)
                echo "Usage: /etc/init.d/seafile {start|stop|restart}"
                exit 1
        ;;
esac

Nun machen wir die Datei noch ausführbar:

chmod 755 /etc/init.d/seafile-server

Nun noch ein

update-rc.d seafile-server start 99 2 3 4 5 . stop 5 0 1 6 .

und der Seafile-Server startet beim Hochfahren - und wird beim Herunterfahren ebenfalls beendet - und zwar nach/vor dem MySQL Server
Der Dienst lässt sich in Zukunft auch per

service seafile-server start
service seafile-server stop
service seafile-server restart

steuern.

Nachtrag: je nach System kann das Problem auftauchen das der Seafile-Dienst bei einem Reboot nicht startet. Dies liegt augenscheinlich daran das der Seafile zu früh startet und der MySQL-Server dann noch nicht zur Verfügung steht. Eigentlich sollte das System die Abhängigkeit erkennen, klappt aber nicht immer.
Meine "Quick&Dirty" Lösung ist das ich den Start von Seafile zusätzlich in einen CronJob gepackt habe:

crontab -e

und dann folgende Zeilen ergänzen:

@reboot sleep 120 && service seafile-server start
@reboot sleep 240 && service seafile-server start

Nach einem Neustart versucht er nach 2 und nach 4 Minuten den Dienst noch einmal zu startet. Läuft dieser schon passiert nichts. So ist Seafile nach einem Reboot auf jeden Fall gestartet.



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 (auch wenn wir im ISPConfig die Domäne schon angelegt haben), 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://github.com/haiwen/seafile/wiki/Deploy-Seafile-with-apache

Zunächst installieren wir die noch benötigten Komponenten nach:

apt-get install python-flup libapache2-mod-fastcgi


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

a2enmod rewrite
a2enmod fastcgi
a2enmod proxy_http
a2enmod ssl

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

service apache2 restart


Als nächstes bearbeiten wir die apache2.conf:

nano /etc/apache2/apache2.conf

und gehen ganz ans Ende. Dort fügen wir folgende Zeile ein:

FastCGIExternalServer /var/www/seahub.fcgi -host 127.0.0.1:8000

Die Datei /var/www/seahub.fcgi wird und muss es nicht wirklich geben und ist nur ein Platzhalter - es kommt auf den lokalen Port 8000 dahinter an.


Jetzt ändern wir noch die .vhost Datei der von euch angelegten Subdomain. Der Name der Datei lautet

/etc/apache2/sites-available/eure.sub.domain.vhost

Meine Subdomain heisst seafile.znil.net, also muss ich die folgende Datei nehmen

nano /etc/apache2/sites-available/seafile.znil.net.vhost

Löscht den GANZEN Inhalt und fügt 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 httpserver
  #
  ProxyPass /seafhttp http://127.0.0.1:8082
  ProxyPassReverse /seafhttp http://127.0.0.1:8082
  RewriteRule ^/seafhttp - [QSA,L]
  #
  # seahub
  #
  RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</VirtualHost>


Dann ändern wir die

nano /home/seafile/haiwen/ccnet/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/seahub_settings.py

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

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



Nun müssen wir noch das Startscript des Seafile-Servers anpassen:

nano /etc/init.d/seafile-server

Findet die Zeilen

# Change the value of fastcgi to true if fastcgi is to be used
fastcgi=false

und ändert diese um auf

# Change the value of fastcgi to true if fastcgi is to be used
fastcgi=true



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

service apache2 restart
service seafile-server restart


JETZT solltet Ihr euren Seafile-Server unter

http://subdomain.domain.suffix

erreichen können.
Und zwar könnt Ihr eueren 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 - wo in welche Datei alles muss damit es auch unter ISPConfig noch funktioniert - da habe ich eine Weile probieren müssen.

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

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/seafile.znil.net.vhost

und ändern den unteren Abschnitt wie folgt (Fett ist neu/geändert)

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

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

  RewriteEngine On

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

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

  #
  # seahub
  #
  RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</VirtualHost>

Seafile Konfiguration anpassen

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

 nano /home/seafile/haiwen/ccnet/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/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:

service apache2 restart
service seafile-server restart

und nun erreichen wir Seafile unter

https://subdomain.domain.suffix

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



Nachtrag

Warning.png
Warnung: Ich habe die .vhost direkt bearbeitet! Davon weis ISP-Config aber nichts. Ergo passt auf - wenn Ihr im Webinterface von ISPConfig etwas für diese Subdomain ändert, wird ISPConfig eure Änderungen wieder Überschreiben!


Mal nur als Hinweis: Wenn Ihr nur den Seafile-Client verwendet und nicht die Webseite, braucht der seahub Dienst auch gar nicht erst gestartet werden.

Wenn Ihr das Design der Seafile-Webseite anpassen wollt so findet Ihr hier Tipps dafür:

https://github.com/haiwen/seafile/wiki/Seahub-customization


Die Konfiguration lässt sich noch verfeinern, z.B. mit Quotas etc. - Dazu gibt es hier eine Seite:

https://github.com/haiwen/seafile/wiki/Seafile-server-configuration-options




Upgrade der Version 3 auf 4

Wenn Ihr neu installiert könnt ihr gemäß der vorstehenden Anleitung auch gleich die neue Version 4.0.1 nutzen - ALLE Schritte sind identisch, inklusive der Apache Reverse Proxy Konfiguration!

Falls Ihr schon auf der 3er version seit und nun auf die 4er Version aktualiseren wollt - das habe ich in dieser Anelitung beschrieben:




Alternatives Start-Script von Achim

Diese Version wartet auf den MySQL Server bevor es startet. Ich habe das Problem inzwischen anders gelöst - aber wollte diese Lösung erhalten:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          Seafile Server
# Required-Start:    $remote_fs $syslog mysql
# Required-Stop:     $remote_fs $syslog mysql
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Seafile-Daemon at boot time
# Description:       Enable service provided by Seafile.
### END INIT INFO

# Set max startup wait time in seconds
MAX_STARTUP_WAIT_TIME=30
CUR_STARTUP_WAIT_TIME=0
sF="+%Y-%m-%d:%H:%M:%S"

# Change the value of "user" to your linux user name
user=seafile

# Change the value of "seafile_dir" to your path of seafile installation
seafile_dir=/home/seafile/haiwen
script_path=${seafile_dir}/seafile-server-latest
seafile_init_log=${seafile_dir}/logs/seafile.init.log
seahub_init_log=${seafile_dir}/logs/seahub.init.log

# Change the value of fastcgi to true if fastcgi is to be used
fastcgi=false
# Set the port of fastcgi, default is 8000. Change it if you need different.
fastcgi_port=8000

case "$1" in
        start)
                echo "$(/bin/date $sF) Start Seafile"  >> ${seafile_init_log}

                MYSQL_STATUS=$(/sbin/initctl list |/bin/grep mysql | /usr/bin/awk '{print $2}')

                while [ $MYSQL_STATUS != "start/running," ]
                do
                        sleep 1
                        MYSQL_STATUS=$(/sbin/initctl list |/bin/grep mysql | /usr/bin/awk '{print $2}')
                        let CUR_STARTUP_WAIT_TIME+=1

                        if [ $CUR_STARTUP_WAIT_TIME -gt $MAX_STARTUP_WAIT_TIME ]
                        then
                                echo "$(/bin/date $sF) Cannot start Seafile because MySQL is not running!" >> ${seafile_init_log}
                                exit 1
                        fi
                done

                sudo -u ${user} ${script_path}/seafile.sh start >> ${seafile_init_log}
                if [  $fastcgi = true ];
                then
                        sudo -u ${user} ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log}
                else
                        sudo -u ${user} ${script_path}/seahub.sh start >> ${seahub_init_log}
                fi
        ;;
        restart)
                sudo -u ${user} ${script_path}/seafile.sh restart >> ${seafile_init_log}
                if [  $fastcgi = true ];
                then
                        sudo -u ${user} ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} >> ${seahub_init_log}
                else
                        sudo -u ${user} ${script_path}/seahub.sh restart >> ${seahub_init_log}
                fi
        ;;
        stop)
                sudo -u ${user} ${script_path}/seafile.sh $1 >> ${seafile_init_log}
                sudo -u ${user} ${script_path}/seahub.sh $1 >> ${seahub_init_log}
        ;;
        *)
                echo "Usage: /etc/init.d/seafile {start|stop|restart}"
                exit 1
        ;;
esac




Kommentare

Loading comments...