Seafile-als-Unterordner

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

Seafile

Seafile ist ein Dropbox Ersatz, der ebenfalls die Ordner Synchronisierung mit unterschiedlichen Clients ermöglicht.

Es gibt dazu einen Haufen Anleitungen über Google zu finden, sodass ich nur das Allernötigste an Konfigurationen poste.


Als Unterordner mit Apache Frontend

Am einfachsten ist die Konfiguration von Apache/Nginx, wenn Seafile direkt über eine Domain (z.B. seafile.example.com ) erreichbar sein soll, da in der Regel die Standard Konfiguration ausreicht. Möchte man dagegen Seafile über z.B. www.meine-domain.example.com/seafile erreichen, um nicht Noch ein Zertifikat zu erstellen/ zu kaufen, sind ein paar kleine Änderungen nötig. Da ich sonst immer nachschlagen muss, was genau, schreibe ich es mir hier auf :-)

Wie im Titel schon angedeutet, nutze ich Apache mit Fast-CGI (fcgi) als Frontend unter Debian Wheezy, aber da die Änderungen hauptsächlich in Seafile stattfinden, dürften sie analog zu Nginx passen.

Seafile Anpassungen

Meine Seafile Installation liegt im Ordner: /opt/seafile/install/

Gnome-terminal.png
/opt/seafile# tree -d -L 2
.
├── install
│   ├── ccnet
│   ├── conf
│   ├── logs
│   ├── pids
│   ├── seafile-data
│   ├── seafile-server-4.0.5
│   ├── seafile-server-latest -> seafile-server-4.0.5
│   └── seahub-data
└── lost+found

10 directories
  • ccnet/ccnet.conf
Ascii.png
[General]
USER_NAME = foo
ID = <long string>
NAME = 4lin
SERVICE_URL = https://www.4lin.net/seafile

[Database]
ENGINE=mysql
HOST=127.0.0.1
USER=seafile
PASSWD=secret
DB=ccnet-db
CONNECTION_CHARSET=utf8


[Network]
PORT = 10001

[Client]
PORT = 13418

Wichtig ist in diesem Fall, die SERVICE_URL, die angibt, über welchem Unterordner Seafile aufgerufen wird.

  • ./seahub_settings.py


Ascii.png
[...]
FILE_SERVER_ROOT = 'https://www.4lin.net/seafhttp'
SERVE_STATIC = False
MEDIA_URL = '/seafmedia/'
SITE_ROOT = '/seafile/'
HTTP_SERVER_ROOT = 'https://www.4lin.net/seafhttp'
COMPRESS_URL = MEDIA_URL
STATIC_URL = MEDIA_URL+'assets/'
[...]

SITE_ROOT ist die Basis URL, wie schon in der ccnet.conf angegeben, allerdings nur der Unterordner. Die anderen URLs sind für die Kommunikation mit den Clients. Man kann sie später tatsächlich aufrufen, um zu sehen, dass alles klappt.

Hat man das soweit, kann es zum Apachen gehen.

Apache Anpassungen

Der Apache dürfte soweit ja schon funktionieren, und auch das Rewrite und Fast-CGI Modul sind aktiv. Dann gilt:

  • /etc/apache2/conf.d/seafile
Ascii.png
FastCGIExternalServer /var/www/seahub.fcgi -host 127.0.0.1:8000
FastCGIExternalServer /var/www/seafdav.fcgi -host 127.0.0.1:8080

Hier ist wichtig zu wissen, dass die angegebenen "Dateien" überhaupt nicht existieren und auch nicht angelegt werden. Sie sind nur Platzhalter, aber der Pfad muss in einem DocumentRoot liegen, auf das der Apache Zugriff hat. Bei Debian ist es per Default /var/www, bei SuSE und RedHat etc. natürlich woanders. Es kann aber auch sein, dass man selbst, oder der Provider einen anderen DocRoot vorgegeben hat. Im einfachsten Fall ist es das Gleiche, in dem sich auch die "normale" Webseite befindet.

Statt die Datei /etc/apache2/conf.d/seafile anzulegen, kann man die FCGI Paramter auch innerhalb einer VirtualHost Konfiguration ablegen.

Ich habe in meinem Fall die Seafile spezifischen Parameter innerhalb einer VirtualHost Umgebung, daher sieht es dann so aus:


Ascii.png
<VirtualHost 212.224.84.185:443>

[...]

  RewriteEngine On

[...]

# Seafile

  
  Alias /seafmedia /opt/seafile/install/seafile-server-latest/seahub/media

 # Parameter in ccnet.conf und seahub_settings.py

<Location /seafhttp>
  Order allow,deny
  Allow from all
</Location>

<Location /seafdav>
  Order allow,deny
  Allow from all
</Location>

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

  #
  # seafile webdav -> nur wenn man auch Webdav in Seafile aktiv hat.
  #
  # RewriteCond %{HTTP:Authorization} (.+)
  # RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
  # RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L]

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

</VirtualHost>


Startscript

Nach einem apache2ctl -t etc. pp. und einem service apache2 reload .. oder was auch immer, muss man natürlich Seafile auch passend starten. Dazu habe ich mir per Google einfach ein Startscript geklaut:

  • /etc/init.d/seafile-server
Ascii.png
#!/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: Seafile server
# Description:       Start Seafile server
### END INIT INFO

# Author: Alexander Jackson <alexander.jackson@jackson-it.de>
#

# 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=/opt/seafile/install
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=true
# 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-server {start|stop|restart}"
                exit 1
        ;;
esac

In dem Script muss nur "seafile_dir" angepasst werden, sowie fastcgi auf true setzen. Fertig. Dann lässt sich Seafile bequem stoppen/starten und auch passen in den Startvorgang einbinden


Debian-term.png
# update-rc.d seafile-server defaults



--Denny (Diskussion) 12:32, 13. Feb. 2015 (CET)