Seafile server 7.1.0 is ready for testing! Migrate to Python 3

After building Seafile Server please checkout the https://seafile.readthedocs.io/en/latest/
It will guide you on how to setup the server.

Thanks. So obviously these instructions on seafile . com (I can’t include any links) are deprecated. I may open an issue about that.

You can find the document here for OnlyOffice JWT: https://download.seafile.com/published/seafile-manual/deploy/only_office.md#user-content-Configure%20OnlyOffice%20to%20use%20JWT%20Secret

1 Like

In 7.1.2 CE I can’t set a notification to “read”. Reproduce:
Share an upload link, upload a file -> you have one new notification. Click it, or click the (x) and it is read/gone. Reload the page and it is unread again
Somebody else having this issue? It’s really annoying

I can’t find it. Is is the desktop application or the web interface?

EDIT: never mind, I’ve found it!

Seafile 7.1.2 CE. Ubuntu 18. Cannot properly start seahub (after upgrade from 7.1.1).

    ./seahub.sh start

Starting seahub at port 8000 ...
[2020-03-11 18:21:31 +0300] [1966] [INFO] Starting gunicorn 20.0.4
[2020-03-11 18:21:31 +0300] [1966] [INFO] Listening at: http://127.0.0.1:8000 (1966)
[2020-03-11 18:21:31 +0300] [1966] [INFO] Using worker: sync
[2020-03-11 18:21:31 +0300] [1971] [INFO] Booting worker with pid: 1971

There is no “Seahub is started” echo.
While it starting I can use web UI by the way.

Seafile 7.1.1 CE works fine.

Undesired behaviour when viewing login page after visiting share link, Seafile CE 7.1.2:
Reproduce: Share something via external share link. Visit that link in a browser session where noone is logged in, click logo on top left to go to base url / login page. result:


Reproduced in latest chrome and firefox. Force reload of the page (Shift+F5 in chrome) fixes the issue once

Hello, we tested this issue locally but everything goes fine.

Have you checked seahub.log, any error messages ?

Hi @lian
I tried to reproduce it to check the logs, but the issue seems to be gone. Maybe it was a glitch on our installation, I’ll keep an eye on it. The issue above also seems to be gone

Thanks for posting this tip. It just saved me while upgrading from 7.0.5 CE to 7.1.2 CE. :+1:

LimitNOFILE=infinity
in /etc/systemd/system/seafile.service solve the problem

This is caused by that you use an old memcache configuration. The new way is

'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',

The old way is

‘BACKEND’: ‘django.core.cache.backends.memcached.MemcachedCache’,

I get the same error with CE 7.1.3. This only occurs if the links are password protected. Is there a solution for this issue?

Edit: now fixed with clean install.

Upgraded my fully working and stable 7.0.14 to 7.1.1 and having some trouble accessing any of the web interface simply seeing a nginx error of ‘Internal Server Error’.

Systemctl status on seafile and seahub show they both start fine now, thanks to some tips in this thread but having some issues with this error I cant fathom. Any help super appreciated.

2020-04-03 17:01:44,600 [INFO] seafevents.db:74 create_engine_from_conf [seafevents] database: mysql, name: seahub-db
2020-04-03 17:01:44,613 [INFO] seafevents.db:74 create_engine_from_conf [seafevents] database: mysql, name: seafile-db
2020-04-03 17:01:44,724 [INFO] seafevents.app.config:127 load_file_history_config The file with the following suffix will be recorded into the file history: md,txt,doc,docx,xls,xlsx,ppt,pptx
2020-04-03 17:01:44,731 [INFO] seafevents.db:74 create_engine_from_conf [seafevents] database: mysql, name: seahub-db
2020-04-03 17:01:44,732 [INFO] seafevents:118 is_audit_enabled audit is enabled
2020-04-03 17:02:02,281 [ERROR] django.request:135 handle_uncaught_exception Internal Server Error: /api2/account/info/
Traceback (most recent call last):
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/django/core/handlers/base.py", line 244, in _legacy_get_response
    response = middleware_method(request)
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/django/middleware/locale.py", line 24, in process_request
    i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf)
  File "/opt/seafile/seafile-pro-server-7.1.1/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 "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/django/urls/resolvers.py", line 407, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/django/urls/resolvers.py", line 400, in urlconf_module
    return import_module(self.urlconf_name)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 673, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/seahub/utils/rooturl.py", line 41, in <module>
    url(r'^%s' % settings.SITE_ROOT[1:], include(settings.SITE_ROOT_URLCONF)),
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/django/conf/urls/__init__.py", line 50, in include
    urlconf_module = import_module(urlconf_module)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 673, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/seahub/urls.py", line 8, in <module>
    from seahub.views.sysadmin import *
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/seahub/views/sysadmin.py", line 13, in <module>
    from openpyxl import load_workbook
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/openpyxl/__init__.py", line 6, in <module>
    from openpyxl.workbook import Workbook
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/openpyxl/workbook/__init__.py", line 4, in <module>
    from .workbook import Workbook
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/openpyxl/workbook/workbook.py", line 7, in <module>
    from openpyxl.worksheet.worksheet import Worksheet
  File "/opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/openpyxl/worksheet/worksheet.py", line 392
    return f"{get_column_letter(min_col)}{min_row}:{get_column_letter(max_col)}{max_row}"
                                                                                         ^
SyntaxError: invalid syntax

any help greatly appreciated, even if its just a ask for more information from my system.

Seafile status
    root@seafile:~# systemctl status seafile
● seafile.service - Seafile Server
   Loaded: loaded (/etc/systemd/system/seafile.service; enabled; vendor preset: enabled)
   Active: active (exited) since Fri 2020-04-03 16:58:24 PDT; 11min ago
  Process: 866 ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start (code=exited, status=0/SUCCESS)
 Main PID: 866 (code=exited, status=0/SUCCESS)
    Tasks: 94 (limit: 4915)
   CGroup: /system.slice/seafile.service
           ├─ 899 /opt/seafile/seafile-pro-server-7.1.1/seafile/bin/seafile-controller -c /opt/seafile/ccnet -d /opt/seafile/seafile-data -F /opt/seafile/conf
           ├─ 904 seaf-server -F /opt/seafile/conf -c /opt/seafile/ccnet -d /opt/seafile/seafile-data -l /opt/seafile/logs/seafile.log -P /opt/seafile/pids/seaf-server.pid -p /opt/seafile/seafile-pr
           ├─ 905 ccnet-server -F /opt/seafile/conf -c /opt/seafile/ccnet -f /opt/seafile/logs/ccnet.log -d -L /opt/seafile -P /opt/seafile/pids/ccnet.pid
           ├─ 969 /usr/bin/python3 -m seafevents.main --config-file /opt/seafile/conf/seafevents.conf --logfile /opt/seafile/logs/seafevents.log -P /opt/seafile/pids/seafevents.pid
           ├─ 970 /usr/bin/java -Xms1g -Xmx1g -XX:-AssumeMP -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -server -Xss1m -Djava
           ├─1017 /bin/sh -c "/usr/bin/python3" "/opt/seafile/seafile-pro-server-7.1.1/pro/python/seafevents/office_converter/convert_server.py" "--outputdir" "/tmp/seafile-office-output" "--workers
           ├─1019 /usr/bin/python3 /opt/seafile/seafile-pro-server-7.1.1/pro/python/seafevents/office_converter/convert_server.py --outputdir /tmp/seafile-office-output --workers 1 --max_pages 50 --
           ├─1041 /bin/sh -c "/usr/bin/python3" "/opt/seafile/seafile-pro-server-7.1.1/pro/python/seafevents/office_converter/unoconv.py" "-vvv" "--pipe" "seafilepipe" "-l"
           ├─1042 /usr/bin/python3 /opt/seafile/seafile-pro-server-7.1.1/pro/python/seafevents/office_converter/unoconv.py -vvv --pipe seafilepipe -l
           └─1044 /usr/lib/libreoffice/program/soffice.bin --invisible --nocrashreport --nodefault --nologo --nofirststartwizard --norestore --accept=pipe,name=seafilepipe;urp;StarOffice.ComponentCo
Apr 03 16:58:21 seafile systemd[1]: Starting Seafile Server...
Apr 03 16:58:21 seafile seafile-control[892]: seafile-controller.c(979): loading seafdav config from /opt/seafile/conf/seafdav.conf
Apr 03 16:58:21 seafile seafile.sh[866]: [04/03/20 16:58:21] ../common/session.c(156): using config file /opt/seafile/conf/ccnet.conf
Apr 03 16:58:21 seafile seafile.sh[866]: [04/03/20 16:58:21] ../common/license.c(406): Loading license file /opt/seafile/seafile-license.txt ..
Apr 03 16:58:21 seafile seafile.sh[866]: [04/03/20 16:58:21] ../common/license.c(409): License file /opt/seafile/seafile-license.txt does not exist, allow at most 3 trial users
Apr 03 16:58:21 seafile seafile.sh[866]: License file /opt/seafile/seafile-license.txt does not exist, allow at most 3 trial users
Apr 03 16:58:21 seafile seafile.sh[866]: Starting seafile server, please wait ...
Apr 03 16:58:21 seafile seafile-control[898]: seafile-controller.c(979): loading seafdav config from /opt/seafile/conf/seafdav.conf
Apr 03 16:58:24 seafile systemd[1]: Started Seafile Server.

seahub status
    root@seafile:~# systemctl status seahub
● seahub.service - Seafile Seahub
   Loaded: loaded (/etc/systemd/system/seahub.service; enabled; vendor preset: enabled)
   Active: active (exited) since Fri 2020-04-03 17:01:49 PDT; 9min ago
  Process: 1197 ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop (code=exited, status=0/SUCCESS)
  Process: 1207 ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start 8000 (code=exited, status=0/SUCCESS)
 Main PID: 1207 (code=exited, status=0/SUCCESS)
    Tasks: 11 (limit: 4915)
   CGroup: /system.slice/seahub.service
           ├─1222 python3 /opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /opt/seafile/conf/gunicorn.conf.py --preload
           ├─1227 python3 /opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /opt/seafile/conf/gunicorn.conf.py --preload
           ├─1228 python3 /opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /opt/seafile/conf/gunicorn.conf.py --preload
           ├─1229 python3 /opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /opt/seafile/conf/gunicorn.conf.py --preload
           ├─1230 python3 /opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /opt/seafile/conf/gunicorn.conf.py --preload
           └─1231 python3 /opt/seafile/seafile-pro-server-7.1.1/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /opt/seafile/conf/gunicorn.conf.py --preload

Apr 03 17:01:43 seafile systemd[1]: Starting Seafile Seahub...
Apr 03 17:01:43 seafile seahub.sh[1207]: LC_ALL is not set in ENV, set to en_US.UTF-8
Apr 03 17:01:43 seafile seahub.sh[1207]: Starting seahub at port 8000 ...
Apr 03 17:01:49 seafile systemd[1]: Started Seafile Seahub.

I have the same problem. seafile-admin is not working with Python 3. And setup-seafile-mysql.sh seems not to be available when building seafile-server from source. How did you solve your problem?

+1 on experiencing this issue on password-protected shares and can’t find any fixes.

It is really sad to see that you have upgraded to python 3.6 while all major distros are switched to python 3.7 or even 3.8. There is a major change comparing with 3.6. All python site-packages go to /usr/lib/ instead of /usr/lib64 (on 64-bits) but you hardcoded that path in binaries.

Please consider upgrading to a more descent version!

Seafile server 7.1 is designed to be work with both Python 3.6 and 3.7. CentOS 8 still use Python 3.6. This is the reason why we support Python 3.6 as the lowest version.

1 Like

I know this is an old announcement by now, however I have not started using seafile because of missing python3 support (and I wanted to phase out py2 on my servers). So I want to express my happyness to find this, and now consider to install it.

I find it unfortunate however, that you dropped postgres tbh.
Imho the world is moving towards postgres by now in increasing pace. I would at least consider finding a solution that allows pgsql somewhere in the future.