Package Details: seafile-server 6.2.4-1

Git Clone URL: https://aur.archlinux.org/seafile-server.git (read-only)
Package Base: seafile-server
Description: Seafile is an online file storage and collaboration tool
Upstream URL: https://github.com/haiwen/seafile-server
Licenses: AGPL3
Submitter: eolianoe
Maintainer: eolianoe
Last Packager: eolianoe
Votes: 12
Popularity: 1.133597
First Submitted: 2017-01-07 15:22
Last Updated: 2018-01-16 15:09

Pinned Comments

eolianoe commented on 2017-12-21 17:47

@all: sorry for the delay with the answers to e-mails and comments, real life is a bit busy for now. Expect an update of all seafile packages by the beginning of January.

Latest Comments

pvagner commented on 2018-01-03 13:04

Either I am too stupid or this is all just a nightmare. I have built and installed all the packages including seahub and seafile-server. By reading the wiki page and remembering my folder structure from before the seahub has been installed as a package I had the following directory structure: /srv/seafile for holding as many subfolders as I plan to run seafile sites on this machine. So it will include at least one folder e.g. files.domain.tld. Inside that folder there should be folders such as ccnet, seafile-data, seafile-server and conf. Seahub files are now part of an installed package inside /usr/share/seafile-server/seahub. No mather how hard I'm trying either on my own or by following advices you are trying to give to me the mysql setup is leading to the situation where the scripts are expecting an /usr/share/seafile-server/seahub copy inside /srv/seafile/files.domain.tld/seafile-server/seahub. Joffreys approach appears to be most straighforward however It still does not work for me. I can create these empty folders /srv/seafile/files.domain.tld/seafile-server/runtime /srv/seafile/files.domain.tld/seafile-server/seahub copy /usr/share/seafile-server/scripts/setup-seafile-mysql.* into /srv/seafile/files.domain.tld/seafile-server and run setup-seafile-mysql.sh. The database and ccnet config gets created however it finishes with a python traceback looking for /srv/seafile/files.domain.tld/seafile-server/seahub/tools/secret_key_generator.py. I will be slowly tinkering with it occassionally and by 2022 I might be able to figure it out. I think this is not meant to be runing in a kind of multi site setup. I do fail to understand what an improvement seahub packaging brings when I do have to copy it to site specific folder anyway.

eolianoe commented on 2017-12-21 17:47

@all: sorry for the delay with the answers to e-mails and comments, real life is a bit busy for now. Expect an update of all seafile packages by the beginning of January.

Joffrey commented on 2017-12-21 10:24

@pvagner You do not have too much interest to use a seahub for all your instances, if I understood correctly, because the upgrade must be done manually.

For a MySQL install, I have made a patch:

--- a/scripts/setup-seafile-mysql.py
+++ b/scripts/setup-seafile-mysql.py
@@ -304,14 +304,13 @@
-        self.bin_dir = os.path.join(self.install_path, 'seafile', 'bin')
+        self.bin_dir = '/usr/bin'
         self.central_config_dir = os.path.join(self.top_dir, 'conf')
         Utils.must_mkdir(self.central_config_dir)

     def check_pre_condiction(self):
         def error_if_not_exists(path):
             if not os.path.exists(path):
                 Utils.error('"%s" not found' % path)

         paths = [
-            os.path.join(self.install_path, 'seafile'),
             os.path.join(self.install_path, 'seahub'),
             os.path.join(self.install_path, 'runtime'),
         ]
--- a/tools/seafile-admin
+++ b/tools/seafile-admin
@@ -864,3 +864,10 @@
+    # seahub.db is useless with MySQL and crash the startup!
+    with open(files[3], 'r') as f:
+        for line in f:
+            if 'DATABASES' in line:
+                del(files[2])
+                break
+
     for fpath in files:
         if not os.path.exists(fpath):
             error('%s not found' % fpath)

It works very well free to you to use it now. But I would like that we can discuss to find good solutions for to be introduced in the PKGBUILD :)

It miss an active maintainer for this package. A big thank at @eolianoe who brought a lot of contributions to this package, but now the package is outdated since 1 month and email without answers...

I use seafile-server with MariaDB in production and I hope to see in the future seafile in community repository ;) Another maintainer must take over. I'm not dev I can't propose myself as maintainer, but if this continues I'll fork seafile-server and seahub package to AUR :/

pvagner commented on 2017-12-19 19:28

@klemens I will try your suggestion however I am still very confused. I've installed seafile-server and seahub packages. I do have scripts and seahub folder inside /usr/share/seafile-server . These are owned by root so seafile user can't write into these folders. It's clear seahub python scripts have to be compiled into pyc or pyo files and language files have to be compiled into gettext mo files. When creating instance specific folders inside /srv/seafile/seafile.whatever.tld the suggestion is to create yet another seafile-server folder with seahub inside or how to do it properly and ideally as efficiently as possible? Might it be possible just doing a bind mount or something similar to use the exact same seahub folder for all the instances? Or am I missing something else?

klemens commented on 2017-12-18 15:52

@pvagner: I haven't tested this completely, as I am using postgresql, but I just played around a bit with the setup-seafile-mysql.{sh,py} scripts:

I first created the instance folder /srv/seafile/test.tld and in it a seafile-server folder like described in the wiki. Then I used the seahub-preupgrade script included in the seahub package to copy seahub and the upgrade scripts into it. Then I copied setup-seafile-mysql.{sh,py} into /srv/seafile/test.tld/seafile-server, but it complained that it could not find seafile and runtime, which can be fixed by just creating these tow folders. Afterwards the script ran fine until it actually wanted to connect to some mysql server, which I don't have.

I am not entirely sure if the seahub copy (reflink on btrfs and possibly xfs) is really necessary. The media/CACHE/ folder only contains some compiled css file in my instance, which possibly can be moved into another folder (like seahub-data). All other generated data is already stored outside.

pvagner commented on 2017-12-18 13:54

@klemens So for mysql setup we have to copy the seafile-server folder to instance specific folder and also copy seahub into that? Do we need instance specific seahub copy for each seafile-server instance? Is there no better way?

klemens commented on 2017-12-15 00:28

I packaged seafdav to enable the webdav-support in seafile: python2-wsgidav-seafile. This should work out of the box by configuring dav like described in the seafile manual.

@eolianoe: Feel free to also add this as an optional dependency. I can add you as a co-maintainer if you want.

Joffrey commented on 2017-12-14 10:46

@klemens You are right for the service it's an error. I have tested on another service and it's launched with the user despite the error... Sorry at @all :/ , I have signaled my error at @eolianoe by mail.

For an installation with MySQL the current package struct is problematic for running scripts. I use an alternative PKGBUILD to maintain seafile-server and seahub with a MySQL installation.

https://github.com/jojotango/packages/tree/master/seafile-server

https://github.com/jojotango/packages/tree/master/seahub

It's without any warranty, but it can help :)

klemens commented on 2017-12-13 16:25

I am not sure what problem @joffrey had, but the User-directive definitely belongs into the Service-section. Putting it into Unit means the service is started as root!

I also think mysql-python and ffmpeg should be optional dependencies, as seafile runs fine using only sqlite or postgresql and ffmpeg is only needed when creating video thumbnails and pulls in quite a large number of dependencies.

@pvagner: The scripts use paths relative to their own location to find the seafile installation which doesn't work when installed globally. But you can copy them to a local folder and manually adjust the path definitions at the top of the file. Most of them work fine afterwards.

pvagner commented on 2017-10-24 10:15

How have the initial setup instructions changed after packaging seahub? I can't find out how to run setup-seafile-mysql.sh script when seahub is installed system wide inside /usr/share/seafile-server.

All comments