Seafile unter CentOS

Es ist schon praktisch, wenn man von so gut wie überall Zugriff auf seine Daten hat. Eine Cloud eignet sich dafür wohl hervorragend. Dropbox kennt mittlerweile wohl jeder!

Aber den meisten ist wohl auch bewusst, dass Dropbox für sensible bzw. persönliche Daten eher weniger gut geeignet ist. Ich war also schon lange auf der Suche nach einer passenden Alternative, wo ich meine Daten nicht auf irgendwelchen Servern von Drittanbietern hochladen muss und ständig die Kontrolle habe, was genau mit meinen Files passiert.

Als ich damals über ownCloud gestolpert bin, war ich echt begeistert! Eine gute und kostenlose Alternative zu Dropbox, die sich mit wenigen Handgriffen auf dem eigenen Webspace installiere lässt. Aber irgendwie war ich auf Dauer nie wirklich zufrieden damit. Selbst mit genügend Ressourcen läuft ownCloud oft zäh und alles andere als flüssig. Speziell der Up- bzw. Download von einer größeren Anzahl Daten bereitet da weniger Freude. Wem es da ähnlich wie mir geht, der sollte vielleicht mal einen Blick auf Seafile werfen! Eine gute Alternative zu ownCloud oder Dropbox!

Ich will hier aber gar nicht lange auf Seafile eingehen, sondern direkt zur Installation unter CentOS 6.5 kommen.

 Dazu benötigen wir erst einmal folgende installierte Pakete:

  • MySQL/MariaDB
  • Python 2.6 oder höher
  • Python-setuptools
  • Python-simplejson
  • Python-imaging
  • Python-mysqldb

1.) Installation der Python Module

Eventuell müssen wir hier einige Pakete noch installieren. Das machen wir einfach mit Hilfe von Yum. Dazu einfach per SSH auf euren Server connecten und als root anmelden.

yum install python-imaging MySQL-python python-simplejson python-setuptools

Solltet ihr hier Probleme haben, bzw. die Pakete nicht zur Verfügung stehen, so müsst ihr einfach die passenden Repos hinzufügen. Wie das ganze funktioniert seht ihr hier.

2.) Installation des Seafile Servers

Dafür legen wir zunächst einen neuen Benutzer an, ggf. mit einem neuen Passwort, wobei das nicht zwingend notwendig ist, wenn der Benutzer sonst keinen Shell-Zugriff benötigt.

adduser seafile
passwd seafile

Nun wechseln wir in das Home-Verzeichnis unseres neuen Benutzers:

su seafile

Jetzt müssen wir noch die neuste Version (ggf. hier danach suche) des Seafile Server herunterladen und entpacken und öffnen:

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.6_x86-64.tar.gz
tar xfz seafile-server_3.1.6_x86-64.tar.gz
cd seafile-server_3.1.6/

Nun haben wir die Auswahl zischen einer Installation mit, bzw. ohne MySQL. Die Entscheidung liegt bei euch. Wenn ihr vorhabt viele Files und Benutzer zu verwalten, dann solltet ihr vielleicht auf MySQL setzten, wenn ihr das Ganze aber nur für euch privat nutzt, dann reicht in der Regel SQLLite aus.

./setup-seafile-mysql.sh 
./setup-seafile.sh

Solltet ihr euch für die Installation mit MySQL entscheiden, müsst ihr evtl. noch vorher die passende Datenbank anlegen. Das macht ihr entweder mit Hilfe von phpMyAdmin, oder auch per SSH:

create database `ccnet-db`;
create database `seafile-db`;
create database `seahub-db`;
create user 'seafile'@'localhost' identified by 'password';
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;

Die weiteren Installationsschritte sind selbsterklärend, einfach immer schön den Anweisungen in der Console folgen. Zur Not das Script einfach noch mal neu starten

3.) Starten des Servers und des Webinterfaces

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

 4.) Seafile beim Booten des Servers als Service starten

Für den Fall, dass wir den Server mal unerwartet neustarten müssen, können wir unseren Seafile Server noch als Service hinzufügen und quasi beim Booten mit starten.

Dazu erstellen wir zunächst eine neue Datei, /etc/sysconfig/seafile 

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

# Change the value of "script_path" to your path of seafile installation
seafile_dir=/home/seafile
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

Dann erstellen wir die beiden  Scripte /etc/init.d/seafile

#!/bin/bash
#
# seafile

#
# chkconfig: - 68 32
# description: seafile

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

if [ -f /etc/sysconfig/seafile ];then
        . /etc/sysconfig/seafile
        else
            echo "Config file /etc/sysconfig/seafile not found! Bye."
            exit 200
        fi

RETVAL=0

start() {
        # Start daemons.
        echo -n $"Starting seafile: "
        ulimit -n 30000
        su - ${user} -c"${script_path}/seafile.sh start >> ${seafile_init_log} 2>&1"
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/seafile
        return $RETVAL
}

stop() {
        echo -n $"Shutting down seafile: "
        su - ${user} -c"${script_path}/seafile.sh stop >> ${seafile_init_log} 2>&1"
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seafile
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        RETVAL=3
esac

exit $RETVAL

bzw. /etc/init.d/seahub

#!/bin/bash
#
# seahub

#
# chkconfig: - 69 31
# description: seahub

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

if [ -f /etc/sysconfig/seafile ];then
        . /etc/sysconfig/seafile
        else
            echo "Config file /etc/sysconfig/seafile not found! Bye."
            exit 200
        fi

RETVAL=0

start() {
        # Start daemons.
        echo -n $"Starting seahub: "
        ulimit -n 30000
        if [  $fastcgi = true ];
                then
                su - ${user} -c"${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log} 2>&1"
                else
                su - ${user} -c"${script_path}/seahub.sh start >> ${seahub_init_log} 2>&1"
                fi
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/seahub
        return $RETVAL
}

stop() {
        echo -n $"Shutting down seafile: "
        su - ${user} -c"${script_path}/seahub.sh stop >> ${seahub_init_log} 2>&1"
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seahub
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        RETVAL=3
esac

exit $RETVAL

Jetzt müssen wir unsere beiden Services nur noch aktivieren:

chmod 550 /etc/init.d/seafile
chmod 550 /etc/init.d/seahub
chkconfig --add seafile
chkconfig --add seahub
chkconfig seahub on
chkconfig seafile on

Und nun können wir sie auch schon starten:

service seafile start
service seahub start

Damit wären wir auch schon am Ende. Bei Fragen und Problemen stehe ich euch natürlich, wie gewohnt, zur Verfügung!

Ach ja, wenn ihr zu den eher weniger aufmerksamen Lesern wie ich gehöre, und die Installation nur überflogen habt, der Standard Port von eurem Seafile Server lautet ‚8000‘, d.h. ihr findet euren Server unter //domain.de:8000.

 

Kommentieren Sie den Artikel

Please enter your comment!
Please enter your name here

Ich stimme der Datenschutzerklärung zu