Seafile Server 7.1.4 for Raspberry Pi is ready! 23.05.2020

You can get it from the Seafile download section.

Off topic: Perhaps somebody already realized it, maybe not, but I don’t want to miss the oportunity to communicate that our Seafile Raspberry Pi version celebrates this month his 5th anniversary.

:tada: :confetti_ball: :partying_face: Happy Birthday dear Seafile Raspberry Pi version! :confetti_ball: :tada: :partying_face:

Beside of that, we are similarly proud to announce the 50th release of the Raspberry Pi version. What a coincidence! I couldn’t believe it myself, :open_mouth: so here’s the proof:

50 Releases in 5 years
desigual@thor ~/env_seafile/seafile-server-pkgs $ ll
total 196
drwxr-xr-x 2 desigual desigual 4096 May 31  2015 R4.2.2
drwxr-xr-x 2 desigual desigual 4096 Jul  3  2015 R4.2.3
drwxr-xr-x 3 desigual desigual 4096 Jul 24  2015 R4.3.0
drwxr-xr-x 2 desigual desigual 4096 Jul 29  2015 R4.3.1
drwxr-xr-x 2 desigual desigual 4096 Aug 21  2015 R4.3.2
drwxr-xr-x 2 desigual desigual 4096 Sep 19  2015 R4.4.0
drwxr-xr-x 2 desigual desigual 4096 Oct 14  2015 R4.4.2
drwxr-xr-x 2 desigual desigual 4096 Oct 17  2015 R4.4.3
drwxr-xr-x 2 desigual desigual 4096 Nov  8  2015 R5.0.0
drwxr-xr-x 2 desigual desigual 4096 Nov 12  2015 R5.0.1
drwxr-xr-x 2 desigual desigual 4096 Nov 12  2015 R4.4.6
drwxr-xr-x 2 desigual desigual 4096 Dec  7  2015 R5.0.2
drwxr-xr-x 2 desigual desigual 4096 Dec 20  2015 R5.0.3
drwxr-xr-x 2 desigual desigual 4096 Jan 25  2016 R5.0.4
drwxr-xr-x 2 desigual desigual 4096 Mar  2  2016 R5.0.5
drwxr-xr-x 2 desigual desigual 4096 Mar 23  2016 R5.1.0
drwxr-xr-x 2 desigual desigual 4096 Apr 13  2016 R5.1.1
drwxr-xr-x 2 desigual desigual 4096 May 15  2016 R5.1.2
drwxr-xr-x 2 desigual desigual 4096 May 31  2016 R5.1.3
drwxr-xr-x 2 desigual desigual 4096 Jul 25  2016 R5.1.4
drwxr-xr-x 2 desigual desigual 4096 Aug  3  2016 R6.0.0
drwxr-xr-x 2 desigual desigual 4096 Aug 22  2016 R6.0.1
drwxr-xr-x 2 desigual desigual 4096 Sep  4  2016 R6.0.2
drwxr-xr-x 2 desigual desigual 4096 Sep  4  2016 R6.0.3
drwxr-xr-x 2 desigual desigual 4096 Sep 24  2016 R6.0.4
drwxr-xr-x 2 desigual desigual 4096 Oct 25  2016 R6.0.5
drwxr-xr-x 2 desigual desigual 4096 Nov 21  2016 R6.0.6
drwxr-xr-x 2 desigual desigual 4096 Dec 24  2016 R6.0.7
drwxr-xr-x 2 desigual desigual 4096 Feb 17  2017 R6.0.8
drwxr-xr-x 2 desigual desigual 4096 Apr  6  2017 R6.0.9
drwxr-xr-x 2 desigual desigual 4096 May 11  2017 R6.1.0
drwxr-xr-x 2 desigual desigual 4096 Jun 15  2017 R6.1.1
drwxr-xr-x 2 desigual desigual 4096 Aug 19  2017 R6.1.2
drwxr-xr-x 2 desigual desigual 4096 Sep 14  2017 R6.2.0
drwxr-xr-x 2 desigual desigual 4096 Sep 24  2017 R6.2.1
drwxr-xr-x 2 desigual desigual 4096 Sep 27  2017 R6.2.2
drwxr-xr-x 2 desigual desigual 4096 Dec  7  2017 R6.2.3
drwxr-xr-x 2 desigual desigual 4096 Jan 20  2018 R6.2.4
drwxr-xr-x 2 desigual desigual 4096 Jan 28  2018 R6.2.5
drwxr-xr-x 2 desigual desigual 4096 Jun  5  2018 R6.3.0
drwxr-xr-x 2 desigual desigual 4096 Jun 28  2018 R6.3.1
drwxr-xr-x 2 desigual desigual 4096 Jul 11  2018 R6.3.2
drwxr-xr-x 2 desigual desigual 4096 Oct 13  2018 R6.3.4
drwxr-xr-x 2 desigual desigual 4096 Jun 17  2019 R7.0.2
drwxr-xr-x 2 desigual desigual 4096 Jul 11  2019 R7.0.3
drwxr-xr-x 2 desigual desigual 4096 Jul 26  2019 R7.0.4
drwxr-xr-x 2 desigual desigual 4096 Sep 23  2019 R7.0.5
drwxr-xr-x 2 desigual desigual 4096 Apr 18 00:13 R7.1.3
drwxr-xr-x 2 desigual desigual 4096 May 14 21:18 R7.1.4

Starting with this release, there are important release changes, i.e. the dependence of Python 3 instead of Python 2. That implicates a more cautious preparation bevor the update can start. We warmly recommend you first, before to proceed with the update, to take a view to the Seafile ChangeLog, because the requirements had changed considerably in the last releases :nerd_face:

I wrote down below some specific recommendations, which aims to clarify and to help you during the upgrade process.

:pushpin: Please remember:

  • Don’t forget to stop Seafile Server before the upgrade (i.e: service seafile-server stop or, another example: service seahub stop && service seafile stop)
  • Don’t forget to change the directory rights of Seafile after unpacking it (i.e: chown -R seafile:nogroup seafile-server-7.1.4 or, another example: sudo chown -R seafile:seafile seafile-server-7.1.4 )
  • Don’t forget to apply the upgrade script/s according your start release && with the properly user which in normal case should be seafile (i.e change to seafile user: su seafile -s /bin/bash or, another example: sudo su seafile)

During execution of the upgrade script (upgrade_7.0_7.1.sh) you will get following SQL ERROR. That’s OK for CE Version and documented on the manual.

SQL ERROR during upgrade from 7.0.* to 7.1.*
[INFO] updating seahub database...

/opt/seafile/seafile-server-7.1.1/seahub/thirdpart/pymysql/cursors.py:170: Warning: (1050, "Table 'base_reposecretkey' already exists")

  result = self._query(query)

[WARNING] Failed to execute sql: (1091, "Can't DROP 'drafts_draft_origin_file_uuid_7c003c98_uniq'; check that column/key exists")

Recommendations and clarifications

  • :point_right:YOU NEED AT LEAST PYTHON 3.6+ (PYTHON 3.5 will not work) :point_left:

  • RTFM (I took the expresion from @jaeti01) You can imagine what it means. If not, Read The *** Manual. Specially how to debug if seahub failed to start.

  • Download the properly rpi version for your OS. Starting with release 7.1.*, we offer now the Seafile Raspberry Pi for Ubuntu Bionic, Debian Buster and Debian Stretch. Latest OS stable releases, Bionic and Buster, include native Python 3 support (Python=3.6.9 in Bionic and Python=3.7.3 in Buster). These both are the recommended rpi-versions to choose, since these were compiled against his own native libraries inside linux containers.

  • In order to give the chance for people still using Seafile in oldstable Debian Stretch OS without to upgrade his OS, it was compiled a rpi-Stretch version, which uses latest Python 3.6.10 to compile seahub thirdparty modules. This rpi-version probably need a hack to get working properly the SeafDAV (Seafile WebDAV Server) process. More later.

  • If you use the rpi-Stretch version, you still need to install additionally all the Python3 packages like indicated in the manual for the Community Edition (CE). You can choose to download and compile Python3.6.10 by yourself or use pyenv to do it automatically. Here the suggestions on the forum and common pitfails while using pyenv.

  • If you use the rpi-Buster version, you need to do some hack after you extract the rpi seafile package in your system. The python library path is hardcoded during the compilation to point to
    $INSTALLDIR/seafile/lib/python3.6/site-packages in few seafile shell scripts, like seahub.sh, reset-admin.sh, setup-seafile-mysql.sh and upgrade_7.0_7.1.sh. The issue arises if you compile Seafile server with other Python version than Python 3.6. These paths still points to /python3.6/ but since the native Buster version brings Python 3.7, the directory created under
    $INSTALLDIR/seafile/lib/ will be /python3.7/ instead of /python3.6/. Therefore it must be created a symbolic soft link from python3.6 to python3.7 inside $INSTALLDIR/seafile/lib/ like “ln -s python3.7 python3.6”.

soft link from python3.6 to python3.7
seafile@rpi-buster # /home/seafile/seafile-server-7.1.4/seafile/lib # ls -l
...
...
drwxr-xr-x 2 seafile nogroup     4096 Mai 21 22:42 pkgconfig
lrwxrwxrwx 1 seafile nogroup        9 Mai 23 13:50 python3.6 -> python3.7
drwxr-xr-x 3 seafile nogroup     4096 Mai 21 22:39 python3.7
  • If your OS version is available, don’t install Pillow dependence again. Pillow dependence is already shipped with Seafile as third party requirement. Pillow needs to be installed if you don’t use one of these native Raspberry Pi versions. The necessity to install Pillow again comes from a different linked jpeg-dev shared library which is could not be present in your system. You can install Pillow like as follows in order to not pollute your other python environment:
In case you need to install Pillow again (you get ModuleNotFoundError: No module named 'Image'

seafile@rpi-stretch # pip3 install -U Pillow -t /media/sda/seafile/seafile-server-latest/seahub/thirdpart

  • Check which memcached do you have configured in seahub_settings.py. If you still use the old configuration, I will suggest you to deactivate the memcached commenting the lines and activate it later, when the start of seahub works properly.

  • Problem starting SeafDAV: It could happens that using the Stretch version, the Seafile controller is not able to create the seafdav.pid and therefore the controller try to create again and again the pid file without success. The best non intrusive workaround that I figured it out is by checking if the Seafdav server is able to start by the command line:

Starting SeafDAV manually

su seafile -c "PYTHONPATH=$PYTHONPATH:/media/sda/seafile/seafile-server-latest/seahub/thirdpart/:/media/sda/seafile/seafile-server-latest/seafile/lib/python3.6/site-packages/ CCNET_CONF_DIR=/media/sda/seafile/ccnet SEAFILE_CONF_DIR=/media/sda/seafile/seafile-data SEAFILE_CENTRAL_CONF_DIR=/media/sda/seafile/conf SEAFDAV_CONF=/media/sda/seafile/conf/seafdav.conf SEAFILE_RPC_PIPE_PATH=/media/sda/seafile/seafile-server-7.1.3/runtime /usr/bin/python3 -m wsgidav.server.server_cli --server gunicorn --root / --log-file /media/sda/seafile/logs/seafdav.log -v --pid /media/sda/seafile/pids/seafdav.pid --port 8080 --host 0.0.0.0 --verbose"

and if it works, to create a SeafDav Service, like this one:

Create the SeafDAV service yourself
seafile@rpi-stretch ~ $ cat /etc/systemd/system/seafdav.service
[Unit]
Description=Seafile WebDAV
Documentation=https://github.com/haiwen/seafdav
After=network.target seafile.service

[Service]
Type=simple
PIDFile=/media/sda/seafile/pids/seafdav.pid
Environment="PYTHONPATH=/media/sda/seafile/seafile-server-latest/seahub/thirdpart:/media/sda/seafile/seafile-server-latest/seafile/lib/python3.6/site-packages"
Environment="CCNET_CONF_DIR=/media/sda/seafile/ccnet"
Environment="SEAFILE_CONF_DIR=/media/sda/seafile/seafile-data"
Environment="SEAFILE_CENTRAL_CONF_DIR=/media/sda/seafile/conf"
Environment="SEAFDAV_CONF=/media/sda/seafile/conf/seafdav.conf"
Environment="SEAFILE_RPC_PIPE_PATH=/media/sda/seafile/seafile-server-latest/runtime"
ExecStart=/usr/bin/python3 -m wsgidav.server.server_cli --server gunicorn --root / --log-file /media/sda/seafile/logs/seafdav.log -v --pid /media/sda/seafile/pids/seafdav.pid --port 8080 --host 0.0.0.0 --verbose
ExecStop=/bin/kill -15 $(pgrep -f wsgidav.server.server_cli)
User=seafile
Group=nogroup

[Install]
WantedBy=multi-user.target

This is also usefull to debug seafdav problems (--verbose option).

The build (build3.sh) script to compile the Seafile server was refactored to support newer releases based on Python 3 as well. :partying_face: :partying_face: :partying_face:

Once again, thanks to the developers and the Seafile Community.

have fun :blush:

10 Likes

Thank you so much.

And, of course: Happy anniversary!

Many thanks for this work !

I perform a new install of SeaFile/SQLite on Pi4 Buster, based on these commands :

  1. sudo apt-get install python3 python3-setuptools python3-pip sqlite3 -y
  2. sudo apt install libmemcached-dev zlib1g-dev <= to avoid a fatal error with libmemcached
  3. pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy django-pylibmc django-simple-captcha python3-ldap certifi idna

But when I lauch ./setup-seafile.sh I got this error message

./setup-seafile.sh: ligne 485: /home/pi/SeaFile/seafile-server-7.1.4/seafile/bin/seaf-server-init: no file or directory
Failed to generate seafile configuration

What do you think ? I can simplify the install list above ? I need something else ?

Have a nice day.

I could imagine this :point_up_2:

Great to have latest seafile server now !
But…problems…
> Traceback (most recent call last):

      File "/root/seafile-server-7.1.4/check_init_admin.py", line 351, in <module>
        rpc = RPC()
      File "/root/seafile-server-7.1.4/check_init_admin.py", line 288, in __init__
        self.rpc_client = ccnet.CcnetThreadedRpcClient(ccnet_named_pipe_path)
    AttributeError: module 'ccnet' has no attribute 'CcnetThreadedRpcClient'

I’m on armbian buster here, checked all suggestions, but no luck.

Hello,

With the command python3 --version, I have this result Python 3.7.3
So, I already used ln -s python3.7 python3.6 but the issue is still here.

Any idea ?

Have a nice day.

Oh yes, sorry for my bugreport. I thought installing the buster version within buster don’t need to have the link from 3.6 to 3.7, i did that and now it seems to work :slight_smile:

Great @nihilistaX yes, in fact, it is necessary with Buster.The symlink hack take less than, clonning and patching everytime the source code at my end with every new version.

@IssueFindings spontan, maybe you could check the rights for the symlink? They need to belong to the user which starts the seafile service.

@ jobenvil
I take care about that point. I don’t understand. Other idea ?

could you do ls -l on /home/pi/SeaFile/seafile-server-7.1.4/seafile/lib?

And now i’m fighting with webdav :wink:
To get it running with your code i have to install python3-jsmin, python3-jinja2, python3-sqlalchemy, python3-yaml, python3-lxml(only because logfile said it will be faster with that…).
Maybe i have to check my nginx settings, but for now seafdav starts, has pidfile, but no connection…

you can still connect directly, without nginx, here, this works quick:

curl -u username:password http://192.168.178.100:8080/seafdav

being 192.168.178.100 your seafile/seafdav server :wink:

username is the login with you log into seahub

I obtain this

-rw-r–r-- 1 seafile nogroup 21864 mai 21 18:01 libacl.so.1
-rw-r–r-- 1 seafile nogroup 480676 mai 21 18:01 libarchive.so.13
-rw-r–r-- 1 seafile nogroup 13632 mai 21 18:01 libattr.so.1
-rw-r–r-- 1 seafile nogroup 210860 mai 21 18:01 libblkid.so.1
-rw-r–r-- 1 seafile nogroup 49468 mai 21 18:01 libbz2.so.1.0
lrwxrwxrwx 1 seafile nogroup 17 mai 21 17:59 libccnet.so → libccnet.so.0.0.0
lrwxrwxrwx 1 seafile nogroup 17 mai 21 17:59 libccnet.so.0 → libccnet.so.0.0.0
-rwxr-xr-x 1 seafile nogroup 63968 mai 21 18:01 libccnet.so.0.0.0
-rw-r–r-- 1 seafile nogroup 1712544 mai 21 18:01 libcrypto.so.1.1
-rw-r–r-- 1 seafile nogroup 226944 mai 21 18:01 libevent-2.1.so.6
-rw-r–r-- 1 seafile nogroup 22168 mai 21 18:01 libffi.so.6
-rw-r–r-- 1 seafile nogroup 140780 mai 21 18:01 libfuse.so.2
-rw-r–r-- 1 seafile nogroup 99996 mai 21 18:01 libgcc_s.so.1
-rw-r–r-- 1 seafile nogroup 1091640 mai 21 18:01 libgio-2.0.so.0
-rw-r–r-- 1 seafile nogroup 854208 mai 21 18:01 libglib-2.0.so.0
-rw-r–r-- 1 seafile nogroup 9512 mai 21 18:01 libgmodule-2.0.so.0
-rw-r–r-- 1 seafile nogroup 318304 mai 21 18:01 libgmp.so.10
-rw-r–r-- 1 seafile nogroup 1226900 mai 21 18:01 libgnutls.so.30
-rw-r–r-- 1 seafile nogroup 235688 mai 21 18:01 libgobject-2.0.so.0
-rw-r–r-- 1 seafile nogroup 170296 mai 21 18:01 libhogweed.so.4
-rw-r–r-- 1 seafile nogroup 27182232 mai 21 18:01 libicudata.so.63
-rw-r–r-- 1 seafile nogroup 1889988 mai 21 18:01 libicui18n.so.63
-rw-r–r-- 1 seafile nogroup 1242556 mai 21 18:01 libicuuc.so.63
-rw-r–r-- 1 seafile nogroup 107840 mai 21 18:01 libidn2.so.0
-rw-r–r-- 1 seafile nogroup 34312 mai 21 18:01 libjansson.so.4
-rw-r–r-- 1 seafile nogroup 34216 mai 21 18:01 liblber-2.4.so.2
-rw-r–r-- 1 seafile nogroup 202772 mai 21 18:01 libldap_r-2.4.so.2
-rw-r–r-- 1 seafile nogroup 83476 mai 21 18:01 liblz4.so.1
-rw-r–r-- 1 seafile nogroup 104220 mai 21 18:01 liblzma.so.5
-rw-r–r-- 1 seafile nogroup 197448 mai 21 18:01 libmariadb.so.3
-rw-r–r-- 1 seafile nogroup 243380 mai 21 18:01 libmount.so.1
-rw-r–r-- 1 seafile nogroup 178316 mai 21 18:01 libnettle.so.6
-rw-r–r-- 1 seafile nogroup 725180 mai 21 18:01 libp11-kit.so.0
-rw-r–r-- 1 seafile nogroup 312652 mai 21 18:01 libpcre.so.3
-rw-r–r-- 1 seafile nogroup 67396 mai 21 18:01 libsasl2.so.2
lrwxrwxrwx 1 seafile nogroup 18 mai 21 17:58 libsearpc.so → libsearpc.so.1.0.2
lrwxrwxrwx 1 seafile nogroup 18 mai 21 17:58 libsearpc.so.1 → libsearpc.so.1.0.2
-rwxr-xr-x 1 seafile nogroup 26480 mai 21 18:01 libsearpc.so.1.0.2
-rw-r–r-- 1 seafile nogroup 707488 mai 21 18:01 libsqlite3.so.0
-rw-r–r-- 1 seafile nogroup 340240 mai 21 18:01 libssl.so.1.1
-rw-r–r-- 1 seafile nogroup 1019772 mai 21 18:01 libstdc++.so.6
-rw-r–r-- 1 seafile nogroup 46508 mai 21 18:01 libtasn1.so.6
-rw-r–r-- 1 seafile nogroup 1426788 mai 21 18:01 libunistring.so.2
-rw-r–r-- 1 seafile nogroup 21968 mai 21 18:01 libuuid.so.1
-rw-r–r-- 1 seafile nogroup 1048572 mai 21 18:01 libxml2.so.2
-rw-r–r-- 1 seafile nogroup 79500 mai 21 18:01 libz.so.1
-rw-r–r-- 1 seafile nogroup 394616 mai 21 18:01 libzstd.so.1
drwxr-xr-x 2 seafile nogroup 4096 mai 21 18:00 pkgconfig
drwxr-xr-x 3 seafile nogroup 4096 mai 21 17:58 python3.7

yes, this is true, I rememeber that. These are the dependences for webdav. Some of the them are in the documentation. These are the same than for x64

Hi @IssueFindings , there is no symlink link from python3.6 to python 3.7 at all.

And now, seafdav is runnig, forgot to change nginx config:
location /seafdav {
proxy_pass http://127.0.0.1:8090/seafdav;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1200s;
client_max_body_size 0;

access_log /var/log/nginx/seafdav.access.log;
error_log /var/log/nginx/seafdav.error.log;

}

And needed to set fastcgi=false in seafdav.conf
I wish some day it could be easier to migrate to a new sefile version :slight_smile:

And that for first was only my second odroid, my main device is running with stretch, now the next try with that :wink:

this is also in the migration documentation :face_with_raised_eyebrow: :joy: :relaxed:

WebDAV will stick with fastcgi=false for a long time, don’t worry

I know, but sometimes its hard to read all that and find out whats necessary and what not. :sweat_smile:
I cloned my device days before and so i had a working seafile on both, most configuration options are well set for 7.05, and webdav works with fastcgi/true with that, whatever…
But so i have a bit to learn :wink:

I know, but you pass now the 7.1. line. You are safe now :laughing: