Seafile#

General#

  • Check version with https://www.inetone.de:444/api2/server-info/
  • Stop: cd $SF ./seahub.sh stop + ./seafile.sh stop
  • Start: ./seafile.sh start + ./seahub.sh start
  • Restart: ./seafile.sh restart + ./seahub.sh restart
  • Log: /markus/seafile/logs seafdav.log + seafile.log + seahub.log

"Error:Seahub failed to start." with Debian 12 (bookworm) and Seafile Server 9.0.10#

1. There is no entry in the logs, but you can have the console output if you disable the daemon mode at vi ../conf/gunicorn.conf.py
daemon = False		# originally True

./seahub.sh start

  File "/markus/seafile/seafile-server-9.0.10/seahub/thirdpart/django/db/backends/mysql/base.py", line 17, in <module>
    raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
Error:Seahub failed to start.
Issue comes with Debian 12.
There are two options:
a) Based on stackoverflow: In this way seafile is wrorking but without webdav, because some py files associate NOT 'django.db.backends.mysql' with SQLite (you need to tweak also the upgrade.sh, because this will fail, too)
    1. vi ./conf/ccnet.conf
        'ENGINE': 'mysql.connector.django',   # old was 'django.db.backends.mysql'
    2. pip install --break-system-packages mysql-connector-python
b) rcommended: Install all needed with --break-system-packages mode
pip install --break-system-packages sqlalchemy
pip install --break-system-packages djangosaml2
apt-get install python2-dev libsasl2-dev gcc
pip install --break-system-packages python-ldap
Here also webdav is working fine again. You can check webdav with following command, there must be a listener to your webdav port (8080):
netstat -tlpen

Error "[WARNING] django.security.csrf:228 log_response Forbidden (CSRF cookie not set.): /"#

at /markus/seafile/logs/seahub.log

vi /markus/seafile/seafile-server-latest/seahub/seahub/settings.py

SITE_ROOT_URLCONF = 'seahub.urls'
ROOT_URLCONF = 'seahub.utils.rooturl'
# ME, 01.09.2021 changed
#SITE_ROOT = '/'
SITE_ROOT = '/markus/seafile/seafile-server-latest/'	<===

Minor upgrade 8.3 > 8.4#

1. Download server version into /markus/seafile, gunzip, untar
2. Then you have another folder "seafile-server-8.0.4"
3. stop, cd <new folder>
4. ./upgrade/minor-upgrade.sh
5. start

WebDav#

base URL = https://www.inetone.de:444/seafdav

WebDav: error HTTP MOVE 502 Bad Gateway#

check seafdav.log
Fixed according to forum with Apache conf added:
RequestHeader edit Destination ^https: http:

Migrate from 7.1.5 to 8.0.3#

  1. Check version, Stop
  2. Download, gunzip *, tar xvf *
  3. extract and copy, run script (start upgrade scripts from base folder, not inside upgrade folder!
cp seafile-server-8.0.3 /markus/seafile
cd /markus/seafile/seafile-server-8.0.3
./upgrade/upgrade_7.1_8.0.sh
4. Start

Config (17.02.2021)#

See Seafile admin manualConfig Seahub with Apache at "Modify ccnet.conf and seahub_setting.py"
Seafile > WebInterface > Avatar-Icon > Steam Administration > Settings

SERVICE_URL = https://www.inetone.de:444
FILE_SERVER_ROOT = https://www.inetone.de:444/seafhttp

Though the docu tells "if you set the value both via Web UI and config file, the setting via Web UI will take precedence", I edited the config files, too:
vi .../conf/seahub_settings.py

# add following
FILE_SERVER_ROOT = 'https://www.inetone.de:444/seafhttp'
vi .../conf/ccnet.conf
# change
SERVICE_URL = https://www.inetone.de:444

Note: When you change service URLs clean your browser cache or hard reload each page !
It takes a some seconds until the new settings come into effect even if the seafile has started already, so keep reloading in case!


For Apache there is a proxy config.
vi /etc/apache2/sites-available/000-default-le-ssl.conf

<VirtualHost www.inetone.de:444>
        ServerName www.inetone.de
        ServerAlias inetone.de
        DocumentRoot /var/www
        ErrorLog ${APACHE_LOG_DIR}/seafile_443.log

    Alias /media  /markus/seafile/seafile-server-latest/seahub/media

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

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

    #
    # seahub
    #
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8000/
    ProxyPassReverse / http://127.0.0.1:8000/

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/www.inetone.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.inetone.de/privkey.pem
</VirtualHost>
On Errors check Seafile FAQ.

New Installation on Debian (27.12.2020)#

Download > Server > Server for generic Linux
cd /markus/seafile
wget ...copy link...
tar xvf *  (this will create sub folder like seafile-server-7.0.5)
cd seafile-server-7.0.5
Note: symlink seafile-server-latest is created automatically from the script.
Manual for deploying with MySQL

Clean up databases?

mysql -u <user> -p
    DROP DATABASE `ccnet-db`;
    DROP DATABASE `seafile-db`;
    DROP DATABASE `seahub-db`;

Note: Seafile 7.1.x will NOT work with Debian 9 because some required packages are not available there.
You will find error django.request:135 handle_uncaught_exception Internal Server Error at seafileHome\logs\seahub.log !

# on Debian 10/Ubuntu 18.04
apt-get update
apt-get install python3 python3-setuptools python3-pip -y

pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy \
    django-pylibmc django-simple-captcha python3-ldap

./setup-seafile-mysql.sh#

Checking python on this machine ...

-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at

        https://download.seafile.com/published/seafile-manual/home.md

Press ENTER to continue
-----------------------------------------------------------------


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

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] 185.244.195.4

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

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

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

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

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

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

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

---------------------------------
This is your configuration
---------------------------------

    server name:            inetone
    server ip/domain:       185.244.195.4

    seafile data dir:       /markus/seafile/seafile-data
    fileserver port:        8082

    database:               create new
    ccnet database:         ccnet-db
    seafile database:       seafile-db
    seahub database:        seahub-db
    database user:          seafile



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

Generating ccnet configuration ...

done
Successly create configuration dir /markus/seafile/ccnet.
Generating seafile configuration ...

Done.
done
Generating seahub configuration ...

----------------------------------------
Now creating ccnet database tables ...

----------------------------------------
----------------------------------------
Now creating seafile database tables ...

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

----------------------------------------

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 seafile fileserver:   8082
port of seahub:               8000

When problems occur, Refer to

        https://download.seafile.com/published/seafile-manual/home.md

for information.
/markus/seafile/seafile-server-latest/seafile.sh restart
/markus/seafile/seafile-server-latest/seahub.sh restart

Logs at /markus/seafile/logs

vi /markus/seafile/logs/seahub.log 
    django.request:135 handle_uncaught_exception Internal Server Error

Initial Installation (2018)#

After reading positive comments I installed seafile to my Linux root server

1. Info Server

> cat /proc/version
Linux version 4.4.0-66-generic (buildd@lgw01-28) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017
> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:        16.04
Codename:       xenial
> getconf LONG_BIT
64
> uname -m
x86_64
> file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=0428e4834e687e231fa865562d32fbb64ce45577, stripped

2. Download
Server for generic Linux 64bit

wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.8_x86-64.tar.gz
gunzip *
tar xvf *

3. See Manual
For installing and setup see "Deploying with MySQL"

4. Start/Stop Folder "seafile-server-latest" (>4.0.2)

./seafile.sh start  # Start seafile service
./seahub.sh start   # Start seahub website, port defaults to 8000

./seahub.sh stop
./seafile.sh stop

Problem Android "Unknown Server Status"#

This seems to be a device ID problem in the source code.

See ./seafile-server-latest/seahub/seahub/api2/serializers.py

Upgrade#

on 12.01.2017 from 4.05. to 6.0.7, see manual

1. cd /markus/seafile
2. stop old one
3. here you download the lastest server version
Note: you have here als folder ccnet and seafile-data
After gunzip and tar you have a new folder seafile-server-6.0.7
4. cd seafile-server-6.0.7
5. ls -l upgrade
Here you need to call all steps, e.g.
upgrade_4.0_4.1.sh
upgrade_4.1_4.2.sh
...
But NOT from inside folder, but one above, so
upgrade/upgrade_4.0_4.1.sh
upgrade/upgrade_4.1_4.2.sh
...
6. All upgrade set a new symlink to seafile-server-6.0.7
7. cd seafile-server-6.0.7
8. start like above, done

Migrate to new server#

  1. Stop services
  2. Download and install latest version (as of Mar 2017 it was 6.0.8), follow manual
    1. create mysql databases create database ccnet-db default character set 'UTF8'; create database seafile-db default character set 'UTF8'; create database seahub-db default character set 'UTF8';
    2. create mysql seafile user 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; SET PASSWORD FOR 'seafile'@'localhost' = PASSWORD('...your.password...');
  3. clean and copy folders ccnet, conf, seafile-data
  4. maybe: update SERVER_URL in /conf/ccnet.conf
  5. old versions of seafile used folder "data" and not "seafile-data" as data storage, update folder in /ccnet/seafile.ini
  6. export, copy, import database mysqldump -u root -p<password> ccnet-db > /home/proftpd/ccnet-db.sql mysqldump -u root -p<password> seafile-db > /home/proftpd/seafile-db.sql mysqldump -u root -p<password> seahub-db > /home/proftpd/seahub-db.sql mysql -u root -p<password> ccnet-db < /home/proftpd/ccnet-db.sql mysql -u root -p<password> seafile-db < /home/proftpd/seafile-db.sql mysql -u root -p<password> seahub-db < /home/proftpd/seahub-db.sql
  7. Delete cache rm -rf /tmp/seahub_cache
  8. Update mysql config in /conf/seahub_settings.py to 'init_command': 'SET default_storage_engine=INNODB',
  9. Start services