From SME Server

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.
Alpha 9:
The latest version of seafile is available in the SME repository, click on the version number(s) for more information.
Alpha 9:
The latest version of seafile-server is available in the SME repository, click on the version number(s) for more information.
Alpha 9:
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