Seafile Server 7.1.5 for Raspberry Pi is ready! 18.10.2020

You can get it from the Seafile download section.

: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.5 or, another example: sudo chown -R seafile:seafile seafile-server-7.1.5 )
  • 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)

Recommendations and clarifications

  • RTFM (I took the expresion from @jaeti01) You can imagine what it means. Specially how to debug if seahub failed to start.

  • Download the properly rpi version for your OS. There are: Debian Stretch, Buster or Ubuntu Bionic, Focal. These were compiled against his own native libraries inside linux containers.

  • Users who need to chose Debian Stretch, they must install Python3.6+ to run seafile. The native Python 3.5 is not enough. 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.

I’m looking for some volunter/s to replace me to build the Seafile Server packages for Raspberry Pi and maintain the GitHub releases accordingly. There is already a script for build the Seafile Server package. It would be wonderful if we would cover the following arm scenarios: armv6, armv7, arm64 and at least for Stretch Buster Bionic and Focal. By using linux containers you only need a device and the creation of these is really straightforward.

Once again, thanks to the developers and Seafile Community.

have fun :blush:

Edited: there is no armv8, the correct is arm64. Thanks @Gustl22 for the aclaration !

8 Likes

Thanks - Update went fine!

@Bernie_O thanks for confirming!

1 Like

As I rely on YOUR Seafile 4 RasPi contribution since early 2015: THANK YOU VERY MUCH!

Would you share with us if a successor is likely to show up, please?

1 Like

@Golf very kind of you :star_struck:. I think, there is a successor and proven contributor, he / @Gustl22 already compiled the x64 bit versions and has configured the linux containers already.

Hi,

I’d like to deploy the last 7.1.5 version on my new OdroidC4, aarch64 processor.
I’m running the Armbian Bullseye Image.
Unfortunately, it seems that the required python library is 3.6 or 3.7, and Debian 11 is running Python 3.9.1.
So, when I try to start seahub.sh, I’m running into this error…

Starting seahub (fastcgi) at 127.0.0.1:8000 …

  • check_init_admin
  • check_init_admin_script=/home/seafile/seafile-server-7.1.5/check_init_admin.py
  • python3 /home/seafile/seafile-server-7.1.5/check_init_admin.py
  • python3 /home/seafile/seafile-server-7.1.5/seahub/manage.py runfcgi maxchildren=8 host=127.0.0.1 port=8000 pidfile=/home/seafile/pids/seahub.pid outlog=/home/seafile/logs/gunicorn_access.log errlog=/home/seafile/logs/gunicorn_error.log
    Traceback (most recent call last):
    File “/home/seafile/seafile-server-7.1.5/seahub/seahub/avatar/models.py”, line 23, in
    from PIL import Image
    File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/PIL/Image.py”, line 94, in
    from . import _imaging as core
    ImportError: cannot import name ‘_imaging’ from ‘PIL’ (/home/seafile/seafile-server-7.1.5/seahub/thirdpart/PIL/init.py)

    File “/home/seafile/seafile-server-7.1.5/seahub/seahub/avatar/models.py”, line 26, in
    import Image
    ModuleNotFoundError: No module named ‘Image’
  • sleep 5
  • pgrep -f /home/seafile/seafile-server-7.1.5/seahub/manage.py
  • printf ‘\033[33mError:Seahub failed to start.\033[m\n’
    Error:Seahub failed to start.
  • exit 1

Here is my packages’ list:

Package Version


asgiref 3.3.1
bcrypt 3.1.7
captcha 0.3
certifi 2020.6.20
chardet 4.0.0
defusedxml 0.6.0
Django 3.1.5
django-pylibmc 0.6.1
django-ranged-response 0.2.0
django-simple-captcha 0.5.13
idna 2.10
image 1.5.33
Jinja2 2.11.3
M2Crypto 0.36.0
MarkupSafe 1.1.1
mysqlclient 1.4.4
passlib 1.7.4
Pillow 8.1.0
pip 21.0.1
pyasn1 0.4.8
pyasn1-modules 0.2.1
pylibmc 1.6.1
python-dateutil 2.8.1
python-ldap 3.2.0
python-memcached 1.58
pytz 2021.1
Radicale 3.0.6
Radicale-InfCloud 3.0.0
requests 2.25.1
setuptools 51.3.3
six 1.15.0
SQLAlchemy 1.3.22
sqlparse 0.4.1
urllib3 1.26.2
vobject 0.9.6.1
wheel 0.34.2


I do have the missing component installed
root@Odroid-c4:/home/seafile/seafile-server-latest/seafile/lib# l /usr/local/lib/python3.9/dist-packages/PIL/Image.py
-rw-r--r-- 1 0 50 114K 1 févr. 09:45 /usr/local/lib/python3.9/dist-packages/PIL/Image.py

Is there a way to have it working on this Debian release?`

For the record, this 7.1.5 release is working great on my OdroidC2 under Armbian Buster…

Thanks,

This might help you:

From the error you posted it seems that seahub is trying to use modules inside the thirdpart folder of the server.

I worked around it by just renaming the PIL folder so that python can’t find the “wrong” PIL.
jobenvil pointed out in the same thread that
pip3 install -U Pillow -t /media/sda/seafile/seafile-server-latest/seahub/thirdpart would be a better approach, installing Pillow to the thirdpart folder of seahub.

Maybe this works for you…

@squirrel @ludwig that’s totally correct and it happens everytime with distros like Bullseye since the dependent jpeg libraries are different in our compilated builds.

1 Like

@squirrel @jobenvil
Thanks for your replies…
I tried your workaround and it worked. I’m able to start it with “seahub.sh start”.
But when I try to connect it in the browser “odroidc4.lan:8000”, I have this error…

2021-02-01 17:49:39,387 [ERROR] django.request:132 handle_uncaught_exception Internal Server Error: /
Traceback (most recent call last):
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/django/core/handlers/exception.py”, line 41, in inner
response = get_response(request)
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/django/core/handlers/base.py”, line 244, in _legacy_get_response
response = middleware_method(request)
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/django/middleware/locale.py”, line 24, in process_request
i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf)
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/django/conf/urls/i18n.py”, line 29, in is_language_prefix_patterns_used
for url_pattern in get_resolver(urlconf).url_patterns:
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/django/utils/functional.py”, line 35, in get
res = instance.dict[self.name] = self.func(instance)
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/django/urls/resolvers.py”, line 407, in url_patterns
patterns = getattr(self.urlconf_module, “urlpatterns”, self.urlconf_module)
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/django/utils/functional.py”, line 35, in get
res = instance.dict[self.name] = self.func(instance)
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/django/urls/resolvers.py”, line 400, in urlconf_module
return import_module(self.urlconf_name)
File “/usr/lib/python3.9/importlib/init.py”, line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File “”, line 1030, in _gcd_import
File “”, line 1007, in _find_and_load
File “”, line 986, in _find_and_load_unlocked
File “”, line 680, in _load_unlocked
File “”, line 790, in exec_module
File “”, line 228, in _call_with_frames_removed
File “/home/seafile/seafile-server-7.1.5/seahub/seahub/utils/rooturl.py”, line 41, in
url(r’^%s’ % settings.SITE_ROOT[1:], include(settings.SITE_ROOT_URLCONF)),
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/django/conf/urls/init.py”, line 50, in include
urlconf_module = import_module(urlconf_module)
File “/usr/lib/python3.9/importlib/init.py”, line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File “”, line 1030, in _gcd_import
File “”, line 1007, in _find_and_load
File “”, line 986, in _find_and_load_unlocked
File “”, line 680, in _load_unlocked
File “”, line 790, in exec_module
File “”, line 228, in _call_with_frames_removed
File “/home/seafile/seafile-server-7.1.5/seahub/seahub/urls.py”, line 91, in
from seahub.api2.endpoints.webdav_secret import WebdavSecretView
File “/home/seafile/seafile-server-7.1.5/seahub/seahub/api2/endpoints/webdav_secret.py”, line 14, in
from seahub.utils.hasher import AESPasswordHasher
File “/home/seafile/seafile-server-7.1.5/seahub/seahub/utils/hasher.py”, line 4, in
from Crypto.Cipher import AES
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/Crypto/Cipher/init.py”, line 27, in
from Crypto.Cipher._mode_ecb import _create_ecb_cipher
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/Crypto/Cipher/_mode_ecb.py”, line 35, in
raw_ecb_lib = load_pycryptodome_raw_lib(“Crypto.Cipher._raw_ecb”, “”"
File “/home/seafile/seafile-server-7.1.5/seahub/thirdpart/Crypto/Util/_raw_api.py”, line 308, in load_pycryptodome_raw_lib
raise OSError(“Cannot load native module ‘%s’: %s” % (name, ", ".join(attempts)))
OSError: Cannot load native module ‘Crypto.Cipher._raw_ecb’: Trying ‘_raw_ecb.cpython-39-aarch64-linux-gnu.so’: /home/seafile/seafile-server-7.1.5/seahub/thirdpart/Crypto/Util/…/Cipher/_raw_ecb.cpython-39-aarch64-linux-gnu.so: cannot open shared object file: No such file or directory, Trying ‘_raw_ecb.abi3.so’: /home/seafile/seafile-server-7.1.5/seahub/thirdpart/Crypto/Util/…/Cipher/_raw_ecb.abi3.so: cannot open shared object file: No such file or directory, Trying ‘_raw_ecb.so’: /home/seafile/seafile-server-7.1.5/seahub/thirdpart/Crypto/Util/…/Cipher/_raw_ecb.so: cannot open shared object file: No such file or directory

If I check the directory “/home/seafile/seafile-server-latest/seahub/thirdpart/Crypto/Cipher”, I have those files…

-rwxr-xr-x 1 401 401 94K 27 oct. 00:02 _raw_aes.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 93K 27 oct. 00:02 _raw_arc2.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 111K 27 oct. 00:02 _raw_blowfish.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 92K 27 oct. 00:02 _raw_cast.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 78K 27 oct. 00:02 _raw_cbc.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 82K 27 oct. 00:02 _raw_cfb.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 86K 27 oct. 00:02 _raw_ctr.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 96K 27 oct. 00:02 _raw_des3.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 95K 27 oct. 00:02 _raw_des.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 73K 27 oct. 00:02 _raw_ecb.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 185K 27 oct. 00:02 _raw_eksblowfish.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 94K 27 oct. 00:02 _raw_ocb.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 76K 27 oct. 00:02 _raw_ofb.cpython-37m-aarch64-linux-gnu.so
-rwxr-xr-x 1 401 401 80K 27 oct. 00:02 _Salsa20.cpython-37m-aarch64-linux-gnu.so

I do understand that it should be “39” instead of “37m” in the name of the files…
So I tried to symlink all of them, but now, I have another issue in this folder…

OSError: Cannot load native module ‘Crypto.Util._strxor’: Trying ‘_strxor.cpython-39-aarch64-linux-gnu.so’: /home/seafile/seafile-server-7.1.5/seahub/thirdpart/Crypto/Util/…/Util/_strxor.cpython-39-aarch64-linux-gnu.so: cannot open shared object file: No such file or directory, Trying ‘_strxor.abi3.so’: /home/seafile/seafile-server-7.1.5/seahub/thirdpart/Crypto/Util/…/Util/_strxor.abi3.so: cannot open shared object file: No such file or directory, Trying ‘_strxor.so’: /home/seafile/seafile-server-7.1.5/seahub/thirdpart/Crypto/Util/…/Util/_strxor.so: cannot open shared object file: No such file or directory

I wonder if I should re-install python3 library in the thirdpart directory of my seafile account.
But which ones, and is it the same procedure than you mentioned before?!…
I’m a bit disappointed… if you have any idea?!…

@ludwig sorry for the late response. I think the module that is stricking is;

Try to install analog to pillow.

pip3 install -U pycryptodome -t /media/sda/seafile/seafile-server-latest/seahub/thirdpart

@jobenvil thanks again!
Well, I decided to symlink every files from the folder ~/seafile-server-7.1.5/seahub/thirdpart/Crypto/… with “39” instead of “37m”, and it works now!
That was a bit anoying to do but the server seems to respond correctly .
So I won’t take the risk to destroy something in it but I definitely keep in mind your suggestion.
Many thanks again!

@ludwig another possibility is just pip install pycryptodome or better then now /usr/bin/python3.9 -m pip install pycryptodome systemwide and if doesn’t work, you can uninstall it from your system pycryptodome. If you need to know which python modules are already installed in your system, use pip list

hi, thank you for all your great work on this project!

in case you know, is there any news on a 8.x release somewhere? it looks like 7.1.5 was the last build for arm so far. did @Gustl22 actually take over yet?

@jobenvil and I decided to wait for the release until OnlyOffice works for the ARM build. Now he figured out a way to handle and test this in v8.0.3. I cannot promise, but I try to build the arm64 architectures upcoming week to be able to publish them soon.

1 Like

Background: the 8.0.3 (armv7) distros are already compiled since few weeks. My running OnlyOffice instance didn’t work anymore out of the box after upgradig to Seafile 8.0.3. but working properly with owncloud. @Tjelfe help me out to check if it was something wrong with my OnlyOffice and he could run his Seafile x64 version with my OnlyOffice instance. At that moment, my own integration Seafile<->OnlyOffice didn’t work. Three days ago, I decided to “check” again and share my OnlyOffice key with @Gustl22, in order that he is able to check after compiling his arm8v64 versions. After I created a new short hash key for OnlyOffice, which I gave to @Gustl22 I realized that Seafile was working properly with Onlyoffice, with this short key and reported the success. Now it is in my turn to check why the very long hash key it didn’t work properly earlier in front the short one. I will upload the normal (armv7) for those that they don’t want to build for themselves. Sorry @m.eik for the unexpected delay.

2 Likes

nothing to be sorry for. i’m happy about the update!

and pleasantly surprised, actually – until now i only knew about onlyoffice support for docker images of seafile. is there docs on how to use it with standalone seafile server setups as well? that’s great news!

that’s awesome, thank you for the heads up!

unfortunatedly OnlyOffice documentserver for docker still just support linux/amd64

1 Like

i actually meant seafile+onlyoffice without docker – is there docs how to set this up?

Here is the official doucmentation for the integration Seafile+OnlyOffice. How you run OnlyOffice it depends on you, but I warmly recommend you to use here docker.

2 Likes