From SME Server
Jump to: navigation, search

seafile logo
Maintainer[[user:Jean-Philippe Pialasse|Jean-Philippe Pialasse]]
Tags cloudfile share
Warning.png Warning:
This is early alpha development please use only on test machine, not for production


Jean-Philippe Pialasse


The latest version of smeserver-seafile is available in the SME repository, click on the version number(s) for more information.
The latest version of seafile is available in the SME repository, click on the version number(s) for more information.
The latest version of seafile-server is available in the SME repository, click on the version number(s) for more information.
The latest version of ccnet is available in the SME repository, click on the version number(s) for more information.


install needed repo

yum install --enablerepo=smedev,smecontribs smeserver-extrarepositories-epel smeserver-extrarepositories-centos-sclo -y
signal-event yum-modify


yum install --enablerepo=smedev,smecontribs,epel,centos-sclo-rh,centos-sclo-centos seafile-seahub seafile-server
this will at least pull :
  • ccnet-server          x86_64       5.1.3-4.el6.sme         smedev         91 k
  • fuse-libs             x86_64       2.8.3-5.el6             base           74 k
  • libarchive            x86_64       2.8.3-7.el6_8           base          127 k
  • libccnet              x86_64       5.1.3-4.el6.sme         smedev         38 k
  • libevent2             x86_64       2.0.21-2.el6            base          193 k
  • libevhtp              x86_64       1.2.11n-4.el6.sme       smedev        125 k
  • libsearpc             x86_64       3.0.7-3.el6.sme         smedev         27 k
  • libzdb                x86_64       3.1-4.el6.sme           smedev         63 k
  • postgresql-libs       x86_64       8.4.20-8.el6_9          updates       202 k
  • python-ccnet          noarch       5.1.3-4.el6.sme         smedev         37 k
  • python-seafile        noarch       5.1.3-1                 smedev         42 k
  • seafile-lib x86_64       5.1.3-1                 smedev         36 k
NB: you will need new version of sqlite 3.7.17-9.el6.sme from smecontribs.; need to add this in Requires of the seafile-server rpms
yum update sqlite --enablerepo=smedev,smecontribs
also will need to update spec file of seafile server : Requires: /usr/bin/ccnet-init
yum install ccnet --enablerepo=smecontribs,smedev

NOT TO DO as already compiled :

install prerequesites for seafile -server is still missing. maybe not necessary
yum install libevent libcurl4-openssl libglib  uuid  intltool   libsqlite  libmysqlclient  libarchive    libtool  libjansson   valac   libfuse --enablerepo=epel,smedev,smecontribs
will miss this
  • libcurl4-openssl
  • libglib
  • libsqlite
  • libmysqlclient
  • libjansson
  • valac
  • libfuse

install python27

yum install python27-python sclo-python27-python-chardet python27-python-six  --enablerepo=centos-sclo-rh,epel,centos-sclo-centos

install prerequesite for seahub

yum install --enablerepo=epel pytz

will need pip install or create rpm :

install Django and other python related modules

scl enable python27 "pip install"
scl enable python27 "pip install django==1.8"
scl enable python27 "pip install django-statici18n"
scl enable python27 "pip install djangorestframework"
scl enable python27 "pip install openpyxl"
scl enable python27 "pip install pytz"
scl enable python27 "pip install django-post_office "
scl enable python27 "pip install django-picklefield "
scl enable python27 "pip install gunicorn "
scl enable python27 "pip install flup "
scl enable python27 "pip install jsonfield "
scl enable python27 "pip install Pillow  "
scl enable python27 "pip install python-dateutil"
NB, rpm installation of python-six is too old for dateutile :
  Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)
    100% |████████████████████████████████| 194kB 1.2MB/s 
Collecting six>=1.5 (from python-dateutil)
  Downloading six-1.11.0-py2.py3-none-any.whl
Installing collected packages: six, python-dateutil
  Found existing installation: six 1.3.0
    DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling six-1.3.0:

the following needs gcc

yum install gcc intltool libtool glib2-devel
yum install python27-python-devel --enablerepo=centos-sclo-rh
scl enable python27 "pip install django-compressor "
yum remove gcc cpp cloog-ppl mpfr ppl autoconf automake gettext-devel gettext-libs libart_lgpl libgcj glib2-devel
yum remove python27-python-devel scl-utils-build

well I got some errors and the files in github says different from doc

: test-requirements.txt and      requirements.txt for 5.1 branch (NB server asks for requests==2.8.0 while seahub for 2.3.0)
scl enable python 27

pip install mock==1.0.1
pip install nose==1.3.7
pip install exam==0.10.5
pip install splinter==0.7.2
pip install requests==2.3.0
pip install pytest==2.7.0
pip install pytest-django==2.8.0
pip install python-dateutil
pip install python-memcached==1.57
pip install chardet
pip install six
pip install Pillow>=2.6.1,<3.0.0
pip install Django==1.8.10
pip install django-compressor==1.4
pip install django-post-office==2.0.3
pip install django-statici18n==1.1.2
pip install djangorestframework==3.3.1
pip install git+git://[database]
pip install openpyxl==2.3.0
pip install pytz==2015.7

pip install termcolor==1.1.0
pip install prettytable==0.7.2
pip install pexpect==4.0
pip install httpie
pip install django-constance[database]
seafile server would need pip install MySQL-python==1.2.5, which will need mysql devel to compile

I also see some memcached service is needed... seahub/avatar/sql/

startup scripts and sme related db

config set seafile service TCPPort 8000 status enabled access private

signal-event remoteaccess-update


Start server

scl enable python27 bash
mkdir /opt/seafile/; 
cd  /opt/seafile/; 
mkdir seafile-server/
mkdir logs pids
mkdir seafile-server/runtime
mkdir -p /opt/seafile/seafile-data/library-template
cd seafile-server/
ln /usr/share/seafile-seahub seahub -s
cd /opt/seafile/

export PYTHONPATH=/opt/seafile/seafile-server/seahub/thirdpart:$PYTHONPATH
export CCNET_CONF_DIR=/opt/seafile/conf/
export SEAFILE_CONF_DIR=/opt/seafile/conf/

seafile-admin setup

python seafile-server/seahub/ syncdb

issue: seafile-admin setup makes creation of seahub.db in /usr




Your seafile server configuration has been finished successfully.



To start/stop seafile server:

$ cd /opt/seafile

$ seafile-admin { start | stop }

If you have any problem, refer to

Seafile server manual:

Seafile discussion group:!forum/seafile

Seafile website:  

for more information.

# seafile-admin start

Starting seafile-server...
Starting seahub...
Seahub running on port 8000

configure httpd reverse proxy

the easy way is :
db domains setprop  Nameservers local ProxyPassTarget TemplatePath ProxyPassVirtualHosts

signal-event domain-modify
more long way:
mkdir /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/ -p
cat  > /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/28SeafileProxyPass <<- 'EndOfMessage' 
# Seahub for Seafile ProxyPass
    $haveSSL = (exists ${modSSL}{status} and ${modSSL}{status} eq "enabled") ?  'yes' : 'no';
    $seahubPort = ${'seafile'}{TCPPort} || '8000';
    $OUT = '';
    if ((${'seafile'}{'status'} || 'disabled') eq 'enabled' ){

        if (($port eq "80") && ($haveSSL eq 'yes')){
            $OUT .= "    RewriteRule ^/seafile(/.*|\$)    https://%{HTTP_HOST}/seafile\$1 [L,R]\n";
            $OUT .= "    ProxyPass /seafile$seahubPort\n";
            $OUT .= "    ProxyPassReverse /seafile$seahubPort\n";

        $OUT .=<<"HERE";

    <Location /seafile>
        SSLRequireSSL on
        order deny,allow
        deny from all
        allow from $localAccess $externalSSLAccess

expand-template /etc/httpd/conf/httpd.conf
service httpd-e-smith restart
and then you have to change the configuration to show correctly the images alternatively if you want to use a domain this way :
mkdir /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/ -p
cat  > /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/28SeafileProxyPass <<- 'EndOfMessage' 
# Seahub for Seafile ProxyPass
    $haveSSL = (exists ${modSSL}{status} and ${modSSL}{status} eq "enabled") ?  'yes' : 'no';
    $seahubPort = ${'seafile'}{TCPPort} || '8000';
    $seahubdomain = ${'seafile'}{domain} || 'disabled';    
    $OUT = '';
    if ((${'seafile'}{'status'} || 'disabled') eq 'enabled' && $seahubdomain eq 'disabled' ){

        if (($port eq "80") && ($haveSSL eq 'yes')){
            $OUT .= "    RewriteRule ^seafile(/.*|\$)    https://%{HTTP_HOST}seafile\$1 [L,R]\n";
            $OUT .= "    ProxyPass /seafile$seahubPort\n";
            $OUT .= "    ProxyPassReverse /seafile$seahubPort\n";

        $OUT .=<<"HERE";

    <Location /seafile>
        SSLRequireSSL on
        order deny,allow
        deny from all
        allow from $localAccess $externalSSLAccess

    elseif ($seahubdomain ne 'disabled' ) {
        if (($port eq "80") && ($haveSSL eq 'yes')){
            $OUT .= "    RewriteRule ^(/.*|\$)    https://$seahubdomain\$1 [L,R]\n";
            $OUT .= "    ProxyPass /$seahubPort\n";
            $OUT .= "    ProxyPassReverse /$seahubPort\n";
expand-template /etc/httpd/conf/httpd.conf
service httpd-e-smith restart

service start

cat > /etc/rc.d/init.d/seafile << 'EOF'
# 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

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

# Change the value of "seafile_dir" to your path of seafile installation
# usually the home directory of $user

# Write a polite log message with date and time
echo -e "\n \n About to perform $1 for seafile at `date -Iseconds` \n " >> ${seafile_init_log}
echo -e "\n \n About to perform $1 for seahub at `date -Iseconds` \n " >> ${seahub_init_log}

# Python
. /opt/rh/$sclname/enable
export X_SCLS="$X_SCLS $sclname"

# we want start daemon only inside "scl enable" invocation
if ! scl_enabled python27 ; then
     echo "Collection python27 has to be listed in /opt/rh/python27/service-environment"
     exit 1
cd /opt/seafile
export TOPDIR=/opt/seafile
export INSTALLPATH=/opt/seafile
export PYTHONPATH=/opt/seafile:/opt/seafile/seafile-server/seahub/thirdpart:$PYTHONPATH
export CCNET_CONF_DIR=/opt/seafile/conf/
export SEAFILE_CONF_DIR=/opt/seafile/seafile-data/
export SEAFILE_CENTRAL_CONF_DIR=/opt/seafile/conf/
export SEAHUB_LOG_DIR=/opt/seafile/logs
export SEAFILE_PIDFILE=/opt/seafile/pids/

case "$1" in
                /usr/bin/seafile-admin start
                /usr/bin/seafile-admin stop
                /usr/bin/seafile-admin start
                /usr/bin/seafile-admin stop

                echo "Usage: /etc/init.d/seafile {start|stop|restart}"
                exit 1

chkconfig seafile on
ln -s /etc/rc.d/init.d/seafile /etc/rc.d/rc7.d/S85seafile

add ldap support

simply add this to /opt/seafile/conf/ccnet.conf
HOST = ldap://localhost
BASE = ou=Users,dc=domain,dc=tld
FILTER = objectClass=inetOrgPerson

add log to syslog

see and more :

there are 2 files to edit. Then arrange logrotate


for now you need to do :

latter you will be able to do this:

yum --enablerepo=smecontribs install smeserver-seafile-server smeserver-seafile

Client usage

If you want to connect locally you need to do the following:
cd ~
mkdir ~/seafile-client
seaf-cli init -d ~/seafile-client
seaf-cli start
seaf-cli download -l "the id of the library" -s  "the url + port of server" -d "the folder where the library folder will be downloaded" -u "username on server" [-p "password"]
seaf-cli status


yum remove smeserver-seafile  seafile


Please raise bugs under the SME-Contribs section in bugzilla and select the smeserver-seafile component or use this link

Below is an overview of the current issues for this contrib:
10527SME Contribs9.2IN_PROGRESSrebuild with sqlite3 notify support


Only released version in smecontrib are listed here.



  • compile seafdav
  • add pythonmodules for seafdav
  • patch controller of seafile-server to force pid folder