Seafile 7.1.4 working on a docker swarm in rPi v4 - unofficial!

Hello,

Playing a little with docker I have been able to build and deploy successfully Seafile 7.1.4 in a raspberry pi v4.

The changes have been:

docker-compose.yml modified to use non official images and non official rPi seafile build image:

version: '3.0'
services:
  db:
    image: biarms/mysql:5.7.30-beta-travis
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=db_dev  # Requested, set the root's password of MySQL service.
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /mnt/DISK/myfiles-mysql/db:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.
    networks:
      - seafile-net
    deploy:
      placement:
        constraints:
          - "node.hostname==your-swarm-hostname"  #Force one node of the swarm to be the only one in which I can deploy the stack
      resources:
        limits:
          memory: 500M

  memcached:
    image: memcached:1.5.6
    entrypoint: memcached -m 256
    networks:
      - seafile-net
    deploy:
      placement:
        constraints:
          - "node.hostname==your-swarm-hostname"  #Force one node of the swarm to be the only one in which I can deploy the stack
      resources:
        limits:
          memory: 100M

  seafile:
    image: seafileltd/seafile-mc:7.1.4-rpi
    ports:
      - "80:80"
      - "443:443"  # If https is enabled, cancel the comment.
      - "8080:8080"
    volumes:
      - /mnt/DISK/myfiles:/shared   # Requested, specifies the path to Seafile data persistent store.
    environment:
      - DB_HOST=db
      - DB_USER_HOST=db
      - DB_ROOT_PASSWD=db_dev  # Requested, the value shuold be root's password of MySQL service.
      - TIME_ZONE=Etc/UTC  # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - SEAFILE_SERVER_HOSTNAME=myfiles.duckdns.org # Specifies your host name if https is enabled.
      - SEAFILE_ADMIN_EMAIL=youremaile@gmail.com # Specifies Seafile admin user, default is 'me@example.com'.
      - SEAFILE_ADMIN_PASSWORD=yourpassword     # Specifies Seafile admin password, default is 'asecret'.
      - SEAFILE_SERVER_LETSENCRYPT=true   # Whether to use https or not.
    networks:
      - seafile-net
    depends_on:
      - db
      - memcached
    deploy:
      placement:
        constraints:
          - "node.hostname==your-swarm-hostname"  #Force one node of the swarm to be the only one in which I can deploy the stack
      resources:
        limits:
          memory: 500M

networks:
  seafile-net:

The changes in the github code to be able to generate the seafile image are in:
wilcome/seafile-docker
changes

If you want to build the image you should checkout , go to image folder and execute:

make server-rpi

Example of cli to start the stack in a docker swarm:

docker stack deploy -c docker-compose.yml seafile

1 Like

Hi,

Thank you for sharing your work !

I tried to make my docker image for PI too, but it didn’t work in the end. I was tired.
And then I saw your post. So I cloned you repo and compiled your image.

In fact, I have the same problem I already had with the image I made, but you said if worked for you.

So I don’t really understand…

This is my error:

*** Booting runit daemon…
*** Runit started as PID 6
*** Running /scripts/start.py…
*** /scripts/start.py exited with status 127.
runsv nginx: fatal: unable to start ./run: access denied
*** Shutting down runit daemon (PID 6)…
*** Running /etc/my_init.post_shutdown.d/10_syslog-ng.shutdown…
*** Killing all processes…

Do you perhaps have any idea why I would have this kind of error ?

Hi,

Give a little more context. You mean you were able to create the image, and when you execute the final step to deploy the 3 containers it fails. This mains that the seafile container give you this error? The other two keeps running?
could you give me the output of:

docker container ps -a

127 error code is seems to be something related with permissions. As the container has binds between host folders and internal folders, could you double check that the permisions and users are correct?

Hello mate,

Idk, we’re talking about the NGINX, and it’s not outside of the image, it’s inside. Even its (seafile) web pages. This is what I don’t understand.

But yes you understood well, I was able to compile your image based on the source you provided, and tried to launch it in a docker-compose on my raspberry pi v4.

I just tried again with the ‘/shared’ binded folder with 777 permissions, same error…

Concerning docker container ps -a :

Ok, I understand. In my case I have no 777 permissions but:

-rw------- 1 root root 4,0K jun 10 15:37 seafile.nginx.conf

I’m afraid it is not very good to have everything with root :frowning: but until now this is how I have it.

If you send me your seafile.nginx.conf I can compare with mine and check the differences just to be sure nothing strange is happening.

Also just to be sure, check in your rPi that no other process is using 80 or 443 port:

sudo netstat -pan | grep 443 
sudo netstat -pan | grep 80

To my understanding, the NGINX is in the docker image, and so is seafile.nginx.conf, isn’t it ?

So, as my container isn’t able to properly start the image, I cannot access the container, and thus cannot verify seafile.nginx.conf.

I indeed have a nginx directly on the raspberry pi (outside of any docker container, being a reverse proxy) and tried to disable it as to free the port. Anyway, I had it redirected to another outside port in the docker-compose file; didn’t work either way.

Here is my simple docker file :

version: '2.0'
services:
  ##
  # SEAFILE & DEPENDENCIES
  ##
  db:
    image: linuxserver/mariadb:latest
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=sqlPW # Requested, set the root's password of MySQL service
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /media/d2to/seafile/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
    networks:
      - seafile-net

  memcached:
    image: memcached:1.5.6
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net
      
  seafile:
    image: seafileltd/seafile-mc:7.1.4-rpi
    container_name: seafile
    ports:
     - "6666:80"
     - "6667:8000" # seafile client ; connect with a client
     - "6668:8082" # seafhttp ; upload files from web portal
    volumes:
      - /media/d2to/seafile/files:/shared # Requested, specifies the path to Seafile data persistent store.
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=sqlPW                    # Requested, the value shuold be root's password of MySQL service.
      - TIME_ZONE=Etc/UTC                       # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - SEAFILE_ADMIN_EMAIL=blab@posteo.net     # Specifies Seafile admin user, default is 'me@example.com'.
      - SEAFILE_ADMIN_PASSWORD=blabla           # Specifies Seafile admin password, default is 'asecret'.
#     - SEAFILE_SERVER_LETSENCRYPT=true         # Whether to use https or not.
      - SEAFILE_SERVER_HOSTNAME=bla.blab.blab   # Specifies your host name if https is enabled.
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:

Only two folders are bound to /media/d2to/seafile/ *, they are different folders, I see that the containers succeeded in creating the sub folders, and I put the 777 permissions just in case.

I must have failed in compiling your image somehow (maybe compilation continued with some errors I wasn’t aware of). I don’t see any other possible reason.

Could you perhaps be so kind as to upload your image somewhere in tar.gz ?

Thank you mate.

Hi again,

I have this ones:

imagen

I sea you are using LETSENCRYPT=true I face with a problem with this because por 80 should be reachable from outside my network to let letsencrypt do its magic ( https://community.letsencrypt.org/t/certbot-auto-renewal-needs-port-80-to-be-enabled/106590/2 ) .

When I have time I will upload my image to my docker-hub account.

No I don’t use Let’s Encrypt, well not with the docker anyway : I have a nginx outside of docker as a reverse proxy, it’s the one with the ssl certs. I simply proxy-forward to any of my docker containers, without a need for them to individually implement httpS.

The line is there because it is suggested in one of the official docker-compose seafile images. But you can see the line has “#” at the beginning :).

Waiting for your image, thanks again mate.

Hi @Kynn,

Sorry for that. I was with my mobile phone and didn’t see the # . I have uploaded the image into my docker-hub repo. You can pull it as usual:

docker pull egorive/seafile-mc:7.1.4-rpi

Tell me if with this image it works or not.

Hi there,

It works, much thanks to you !

So here it goes:

  • there was something wrong with the way I compiled the image, since I had the same error with yours and my own image. I imagine a kind of unmet dependency or error which doesn’t stop compilation, but does disarrange the final result.
  • for anyone trying what I did, beware of mariadb on my docker-compose, I was unable to connect the seafile container to the database until I swapped the mariadb image for the mysql image @ego used for his own docker-compose.

I can now… rest in peace hahaha, thanks a lot mate, see you some other day.

1 Like

Hi @Kynn,

I’m glad to here that ! Enjoy it! I love this software! It’s very very stable and can manage lots of hundreds of files and nearly any sizing.

If anyone has also follow my steps and was lucky in the deployment it whould be nice to hear it. If we are many people using seafile-mc docker version in rPi., perhaps in the future it will come official ( I like to dream :stuck_out_tongue: )

1 Like

Well why not :).

I personnally use seafile with mstream which is an audio streaming server ; for it I need seaf-fuse which allows mstream for browsing the music files ; so I will probably be modifying your image (or mine, but yours seems to be better written :)) in order to make it possible.

Hi @Kynn,
seafdav is not working while I changed seafdav.conf and run “./seafile.sh restart” .
Could you find me out the reason ?
Thank you for your image.

Hi Muffin,

I’m sorry to hear that, but I did not make this image (it’s Ego who made it), and never personally used SeafDav.

Otherwise, If you need SeafFuse or want to share your seafile database content with another container, you can do it with an image I just made (as I told Ego I wanted to made it, I finalized it yesterday.)
Check the github here, and get the image here.

For more explanation I detailled what I did in the github README.md, and why I had to do it that way.

Have a nice day.

Thanks for you excellent job.
As far as I see, kynn/seafile-rpi:7.1.4-2020.08.2 is broken on my rpi3 , while kynn/seafile-rpi:7.1.4-2020.08.1 works great so far. And it seems
pip3 install Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha
is needed to run seafdav in the container.

You’re right Muffin, v2 launches seaf-fuse before seafile and seahub, which doesn’t work for first launch.
I failed by already having started seafile and seahub a few times before.

I’ll update the image soon.

I’m curious for seafdav, what do you use it for ?

Hello @Kynn :slight_smile:

I’m trying to use on my ARM32v7 ( Odroid HC1 ) your docker image (version .1 because @Muffin_King explained the .2 doesn’t works currently), and this doesn’t seems to works. Is it possible to have some help please ?

Thanks

My docker-compose.yml (password / MYDOMAIN / MYEMAIL have been replaced) :

version: '2.0'
services:
  db:
    image: tobi312/rpi-mariadb:10.1-alpine
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=asecret  # Requested, set the root's password of MySQL service.
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /opt/seafile-mysql/db:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.
    networks:
      - seafile-net

  memcached:
    image: memcached:1.5.6
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net

  seafile:
    image: kynn/seafile-rpi:7.1.4-2020.08.1
    container_name: seafile
    ports:
      - "8082:80"
      - "8083:443"  # If https is enabled, cancel the comment.
    volumes:
      - /mnt/ssd-backups/sync:/shared   # Requested, specifies the path to Seafile data persistent store.
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=asecret  # Requested, the value shuold be root's password of MySQL service.
      - TIME_ZONE=Europe/Paris # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - SEAFILE_ADMIN_EMAIL=guillaume@MYEMAIL # Specifies Seafile admin user, default is 'me@example.com'
      - SEAFILE_ADMIN_PASSWORD=admin     # Specifies Seafile admin password, default is 'asecret'
      - SEAFILE_SERVER_LETSENCRYPT=true   # Whether to use https or not
      - SEAFILE_SERVER_HOSTNAME=sync.MYDOMAIN # Specifies your host name if https is enabled
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:

And the command line logs:

guillaume@box /o/seafile> dkc up
Creating network "seafile_seafile-net" with the default driver
Pulling db (tobi312/rpi-mariadb:10.1-alpine)...
10.1-alpine: Pulling from tobi312/rpi-mariadb
1debd7fe5349: Pull complete
[ truncated ]
Attaching to seafile-mysql, seafile-memcached, seafile
seafile-mysql | 2020-09-03T07:40:42+0000 [Note] [Entrypoint]: Entrypoint script for MySQL Server 10.1 started.
seafile-mysql | 2020-09-03T07:40:43+0000 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
seafile-mysql | 2020-09-03T07:40:43+0000 [Note] [Entrypoint]: Entrypoint script for MySQL Server 10.1 started.
seafile-mysql | 2020-09-03T07:40:43+0000 [Note] [Entrypoint]: Initializing database files
seafile-mysql | 2020-09-03  7:40:43 3069322456 [Note] /usr/bin/mysqld (mysqld 10.1.41-MariaDB) starting as process 80 ...
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.
seafile-mysql | 
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: Using mutexes to ref count buffer pool pages
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: The InnoDB memory heap is disabled
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: Compressed tables use zlib 1.2.11
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: Using Linux native AIO
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: Using generic crc32 instructions
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: Initializing buffer pool, size = 128.0M
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: Completed initialization of buffer pool
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
seafile-mysql | 2020-09-03  7:40:44 3069322456 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
seafile-mysql | 2020-09-03  7:40:45 3069322456 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
seafile-mysql | 2020-09-03  7:40:46 3069322456 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
seafile      | *** Running /etc/my_init.d/01_create_data_links.sh...
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Warning] InnoDB: New log files created, LSN=45781
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Note] InnoDB: Doublewrite buffer not found: creating new
seafile      | *** Booting runit daemon...
seafile      | *** Runit started as PID 16
seafile      | *** Running /scripts/start.py...
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Note] InnoDB: Doublewrite buffer created
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Note] InnoDB: 128 rollback segment(s) are active.
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Warning] InnoDB: Creating foreign key constraint system tables.
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Note] InnoDB: Foreign key constraint system tables created
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Note] InnoDB: Creating tablespace and datafile system tables.
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Note] InnoDB: Tablespace and datafile system tables created.
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Note] InnoDB: Waiting for purge to start
seafile-mysql | 2020-09-03  7:40:49 3069322456 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.44-86.0 started; log sequence number 0
seafile-mysql | 2020-09-03  7:40:50 2740170020 [Note] InnoDB: Dumping buffer pool(s) not yet started
seafile-mysql | 2020-09-03  7:40:50 2739981604 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1146: Table 'mysql.gtid_slave_pos' doesn't exist
seafile      | Cloning into '/shared/ssl/letsencrypt'...
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] /usr/bin/mysqld (mysqld 10.1.41-MariaDB) starting as process 109 ...
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.
seafile-mysql | 
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: Using mutexes to ref count buffer pool pages
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: The InnoDB memory heap is disabled
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: Compressed tables use zlib 1.2.11
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: Using Linux native AIO
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: Using generic crc32 instructions
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: Initializing buffer pool, size = 128.0M
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: Completed initialization of buffer pool
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: Highest supported file format is Barracuda.
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: 128 rollback segment(s) are active.
seafile-mysql | 2020-09-03  7:40:53 3069220056 [Note] InnoDB: Waiting for purge to start
seafile-mysql | 2020-09-03  7:40:54 3069220056 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.44-86.0 started; log sequence number 1616697
seafile-mysql | 2020-09-03  7:40:54 2745953572 [Note] InnoDB: Dumping buffer pool(s) not yet started
seafile      | Generating RSA private key, 4096 bit long modulus (2 primes)
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] /usr/bin/mysqld (mysqld 10.1.41-MariaDB) starting as process 139 ...
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.
seafile-mysql | 
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: Using mutexes to ref count buffer pool pages
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: The InnoDB memory heap is disabled
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: Compressed tables use zlib 1.2.11
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: Using Linux native AIO
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: Using generic crc32 instructions
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: Initializing buffer pool, size = 128.0M
seafile-mysql | 2020-09-03  7:40:56 3069478104 [Note] InnoDB: Completed initialization of buffer pool
seafile-mysql | 2020-09-03  7:40:57 3069478104 [Note] InnoDB: Highest supported file format is Barracuda.
seafile-mysql | 2020-09-03  7:40:57 3069478104 [Note] InnoDB: 128 rollback segment(s) are active.
seafile-mysql | 2020-09-03  7:40:57 3069478104 [Note] InnoDB: Waiting for purge to start
seafile-mysql | 2020-09-03  7:40:57 3069478104 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.44-86.0 started; log sequence number 1616707
seafile-mysql | 2020-09-03  7:40:57 2746211620 [Note] InnoDB: Dumping buffer pool(s) not yet started
seafile      | ....................................................................................++++
seafile-mysql | 
seafile-mysql | PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
seafile-mysql | To do so, start the server, then issue the following commands:
seafile-mysql | 
seafile-mysql | '/usr/bin/mysqladmin' -u root password 'new-password'
seafile-mysql | '/usr/bin/mysqladmin' -u root -h  password 'new-password'
seafile-mysql | 
seafile-mysql | Alternatively you can run:
seafile-mysql | '/usr/bin/mysql_secure_installation'
seafile-mysql | 
seafile-mysql | which will also give you the option of removing the test
seafile-mysql | databases and anonymous user created by default.  This is
seafile-mysql | strongly recommended for production servers.
seafile-mysql | 
seafile-mysql | See the MariaDB Knowledgebase at http://mariadb.com/kb or the
seafile-mysql | MySQL manual for more instructions.
seafile-mysql | 
seafile-mysql | Please report any problems at http://mariadb.org/jira
seafile-mysql | 
seafile-mysql | The latest information about MariaDB is available at http://mariadb.org/.
seafile-mysql | You can find additional information about the MySQL part at:
seafile-mysql | http://dev.mysql.com
seafile-mysql | Consider joining MariaDB's strong and vibrant community:
seafile-mysql | https://mariadb.org/get-involved/
seafile-mysql | 
seafile-mysql | 2020-09-03T07:40:59+0000 [Note] [Entrypoint]: Database files initialized
seafile-mysql | 2020-09-03T07:40:59+0000 [Note] [Entrypoint]: Starting temporary server
seafile-mysql | 2020-09-03T07:40:59+0000 [Note] [Entrypoint]: Waiting for server startup
seafile-mysql | 2020-09-03  7:40:59 3069203672 [Note] mysqld (mysqld 10.1.41-MariaDB) starting as process 169 ...
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.
seafile-mysql | 
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: Using mutexes to ref count buffer pool pages
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: The InnoDB memory heap is disabled
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: Compressed tables use zlib 1.2.11
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: Using Linux native AIO
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: Using generic crc32 instructions
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: Initializing buffer pool, size = 128.0M
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: Completed initialization of buffer pool
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: Highest supported file format is Barracuda.
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: 128 rollback segment(s) are active.
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB: Waiting for purge to start
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.44-86.0 started; log sequence number 1616717
seafile-mysql | 2020-09-03  7:41:00 2745937188 [Note] InnoDB: Dumping buffer pool(s) not yet started
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] Plugin 'FEEDBACK' is disabled.
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Warning] 'user' entry 'root@cbac7b27cbad' ignored in --skip-name-resolve mode.
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Warning] 'user' entry '@cbac7b27cbad' ignored in --skip-name-resolve mode.
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Warning] 'proxies_priv' entry '@% root@cbac7b27cbad' ignored in --skip-name-resolve mode.
seafile-mysql | 2020-09-03  7:41:00 3069203672 [Note] mysqld: ready for connections.
seafile-mysql | Version: '10.1.41-MariaDB'  socket: '/run/mysqld/mysqld.sock'  port: 0  MariaDB Server
seafile-mysql | 2020-09-03T07:41:01+0000 [Note] [Entrypoint]: Temporary server started.
seafile      | ..................................................................................++++
seafile      | e is 65537 (0x010001)
seafile      | Generating RSA private key, 4096 bit long modulus (2 primes)
seafile-mysql | 2020-09-03  7:41:04 2744790308 [Warning] 'proxies_priv' entry '@% root@cbac7b27cbad' ignored in --skip-name-resolve mode.
seafile-mysql | 
seafile-mysql | 2020-09-03T07:41:04+0000 [Note] [Entrypoint]: Stopping temporary server
seafile-mysql | 2020-09-03  7:41:04 2744790308 [Note] mysqld: Normal shutdown
seafile-mysql | 2020-09-03  7:41:04 2744790308 [Note] Event Scheduler: Purging the queue. 0 events
seafile-mysql | 2020-09-03  7:41:05 2746314020 [Note] InnoDB: FTS optimize thread exiting.
seafile-mysql | 2020-09-03  7:41:05 2744790308 [Note] InnoDB: Starting shutdown...
seafile-mysql | 2020-09-03  7:41:05 2744790308 [Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool
seafile-mysql | 2020-09-03  7:41:06 2744790308 [Note] InnoDB: Shutdown completed; log sequence number 1616727
seafile-mysql | 2020-09-03  7:41:06 2744790308 [Note] mysqld: Shutdown complete
seafile-mysql | 
seafile-mysql | 2020-09-03T07:41:06+0000 [Note] [Entrypoint]: Temporary server stopped
seafile-mysql | 
seafile-mysql | 2020-09-03T07:41:06+0000 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
seafile-mysql | 
seafile-mysql | 2020-09-03  7:41:06 3069768920 [Note] mysqld (mysqld 10.1.41-MariaDB) starting as process 1 ...
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.
seafile-mysql | 
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: Using mutexes to ref count buffer pool pages
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: The InnoDB memory heap is disabled
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: Compressed tables use zlib 1.2.11
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: Using Linux native AIO
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: Using generic crc32 instructions
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: Initializing buffer pool, size = 128.0M
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: Completed initialization of buffer pool
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: Highest supported file format is Barracuda.
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: 128 rollback segment(s) are active.
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB: Waiting for purge to start
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.44-86.0 started; log sequence number 1616727
seafile-mysql | 2020-09-03  7:41:07 2746502436 [Note] InnoDB: Dumping buffer pool(s) not yet started
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] Plugin 'FEEDBACK' is disabled.
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] Server socket created on IP: '::'.
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Warning] 'proxies_priv' entry '@% root@cbac7b27cbad' ignored in --skip-name-resolve mode.
seafile-mysql | 2020-09-03  7:41:07 3069768920 [Note] mysqld: ready for connections.
seafile-mysql | Version: '10.1.41-MariaDB'  socket: '/run/mysqld/mysqld.sock'  port: 3306  MariaDB Server
seafile      | .......................................................................................................................++++
seafile      | ..........................................................................................................................................................................................................................................................................................................................................................................................................++++
seafile      | e is 65537 (0x010001)
seafile      | Can't load ./.rnd into RNG
seafile      | 3069345808:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=./.rnd
seafile      | Parsing account key...
seafile      | Parsing CSR...
seafile      | Found domains: sync.MYDOMAIN
seafile      | Getting directory...
seafile      | Directory found!
seafile      | Registering account...
seafile      | Registered!
seafile      | Creating new order...
seafile      | Order created!
seafile      | Verifying sync.MYDOMAIN...
seafile      | sync.MYDOMAIN verified!
seafile      | Signing certificate...
seafile      | Certificate signed!
seafile      | Nginx reloaded.
seafile      | Created a crontab to auto renew the cert for letsencrypt.
seafile      | Checking python on this machine ...
seafile      | 
seafile      | done
seafile      | Successly create configuration dir /opt/seafile/ccnet.
seafile      | Done.
seafile      | 
seafile      | verifying password of user root ...  done
seafile      | 
seafile      | ---------------------------------
seafile      | This is your configuration
seafile      | ---------------------------------
seafile      | 
seafile      |     server name:            seafile
seafile      |     server ip/domain:       sync.MYDOMAIN
seafile      | 
seafile      |     seafile data dir:       /opt/seafile/seafile-data
seafile      |     fileserver port:        8082
seafile      | 
seafile      |     database:               create new
seafile      |     ccnet database:         ccnet_db
seafile      |     seafile database:       seafile_db
seafile      |     seahub database:        seahub_db
seafile      |     database user:          seafile
seafile      | 
seafile      | 
seafile      | Generating ccnet configuration ...
seafile      | 
seafile      | Generating seafile configuration ...
seafile      | 
seafile      | done
seafile      | Generating seahub configuration ...
seafile      | 
seafile      | ----------------------------------------
seafile      | Now creating ccnet database tables ...
seafile      | 
seafile      | ----------------------------------------
seafile      | ----------------------------------------
seafile      | Now creating seafile database tables ...
seafile      | 
seafile      | ----------------------------------------
seafile      | ----------------------------------------
seafile      | Now creating seahub database tables ...
seafile      | 
seafile      | ----------------------------------------
seafile      | 
seafile      | creating seafile-server-latest symbolic link ...  done
seafile      | 
seafile      | 
seafile      | 
seafile      | 
seafile      | -----------------------------------------------------------------
seafile      | Your seafile server configuration has been finished successfully.
seafile      | -----------------------------------------------------------------
seafile      | 
seafile      | run seafile server:     ./seafile.sh { start | stop | restart }
seafile      | run seahub  server:     ./seahub.sh  { start <port> | stop | restart <port> }
seafile      | 
seafile      | -----------------------------------------------------------------
seafile      | If you are behind a firewall, remember to allow input/output of these tcp ports:
seafile      | -----------------------------------------------------------------
seafile      | 
seafile      | port of seafile fileserver:   8082
seafile      | port of seahub:               8000
seafile      | 
seafile      | When problems occur, Refer to
seafile      | 
seafile      |         https://download.seafile.com/published/seafile-manual/home.md
seafile      | 
seafile      | for information.
seafile      | 
seafile      | 
seafile      | [09/03/2020 09:42:00][upgrade]: The container was recreated, running minor-upgrade.sh to fix the media symlinks
seafile      | [09/03/2020 09:42:00][upgrade]: Running script /opt/seafile/seafile-server-7.1.4/upgrade/minor-upgrade.sh
seafile      | 
seafile      | -------------------------------------------------------------
seafile      | This script would do the minor upgrade for you.
seafile      | Press [ENTER] to contiune
seafile      | -------------------------------------------------------------
seafile      | 
seafile      | 
seafile      | renaming the gunicorn.conf to gunicorn.conf.py ...
seafile      | 
seafile      | Done
seafile      | 
seafile      | ------------------------------
seafile      | migrating avatars ...
seafile      | 
seafile      | 
seafile      | DONE
seafile      | ------------------------------
seafile      | 
seafile      | 
seafile      | Moving the elasticsearch's configuration file ...
seafile      | 
seafile      | 
seafile      | updating seafile-server-latest symbolic link to /opt/seafile/seafile-server-7.1.4 ...
seafile      | 
seafile      | DONE
seafile      | ------------------------------
seafile      | 
seafile      | 
seafile      | [09/03/20 09:42:00] ../common/session.c(148): using config file /opt/seafile/conf/ccnet.conf
seafile      | Starting seafile server, please wait ...
seafile      | ** Message: 09:42:00.487: seafile-controller.c(541): No seafevents.
seafile      | 
seafile      | Seafile server started
seafile      | 
seafile      | Done.
seafile      | 
seafile      | Starting seahub at port 8000 ...
seafile      | 
seafile      | 
seafile      | 
seafile      | ----------------------------------------
seafile      | Successfully created seafile admin
seafile      | ----------------------------------------
seafile      | 
seafile      | 
seafile      | 
seafile      | 
seafile      | Seahub is started
seafile      | 
seafile      | Done.
seafile      | 
seafile      | 
seafile      | Starting seaf-fuse, please wait ...
seafile      | fuse: device not found, try 'modprobe fuse' first
seafile      | [2020-09-03 09:40:50] Preparing for letsencrypt ...
seafile      | [2020-09-03 09:40:51] Starting letsencrypt verification
seafile      | [2020-09-03 09:41:46] Now running setup-seafile-mysql.py in auto mode.
seafile      | [2020-09-03 09:42:00] Updating version stamp
seafile      | Failed to start seaf-fuse
seafile      | seafile server is running now.
seafile      | seaf-fuse is running now.
seafile      | Traceback (most recent call last):
seafile      |   File "/scripts/start.py", line 92, in <module>
seafile      |     main()
seafile      |   File "/scripts/start.py", line 80, in main
seafile      |     call('{} start -o allow_other /fuse'.format(get_script('seaf-fuse.sh')))
seafile      |   File "/scripts/utils/__init__.py", line 70, in call
seafile      |     return subprocess.check_call(*a, **kw)
seafile      |   File "/usr/lib/python3.6/subprocess.py", line 311, in check_call
seafile      |     raise CalledProcessError(retcode, cmd)
seafile      | subprocess.CalledProcessError: Command '/opt/seafile/seafile-server-7.1.4/seaf-fuse.sh start -o allow_other /fuse' returned non-zero exit status 1.
seafile      | *** /scripts/start.py exited with status 1.
seafile      | *** Shutting down runit daemon (PID 16)...
seafile      | *** Running /etc/my_init.post_shutdown.d/10_syslog-ng.shutdown...
seafile      | *** Killing all processes...
seafile exited with code 1


^CGracefully stopping... (press Ctrl+C again to force)
Stopping seafile-mysql     ... done
Stopping seafile-memcached ... done
guillaume@box /o/seafile> dkc down
Removing seafile           ... done
Removing seafile-mysql     ... done
Removing seafile-memcached ... done
Removing network seafile_seafile-net

@Kynn The error in the logs have happened when I’ve tried to connect on it (I have a reverse nginx proxy behind)
My browser said me incorrect redirections, surely because the seafile container have crashed

And when I try to restart it:

guillaume@box /o/seafile> dkc up
Creating network "seafile_seafile-net" with the default driver
Creating seafile-memcached ... done
Creating seafile-mysql     ... done
Creating seafile           ... done
Attaching to seafile-mysql, seafile-memcached, seafile
seafile-mysql | 2020-09-03T07:43:24+0000 [Note] [Entrypoint]: Entrypoint script for MySQL Server 10.1 started.
seafile-mysql | 2020-09-03T07:43:25+0000 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
seafile-mysql | 2020-09-03T07:43:25+0000 [Note] [Entrypoint]: Entrypoint script for MySQL Server 10.1 started.
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] mysqld (mysqld 10.1.41-MariaDB) starting as process 1 ...
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.
seafile-mysql | 
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: Using mutexes to ref count buffer pool pages
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: The InnoDB memory heap is disabled
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: Compressed tables use zlib 1.2.11
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: Using Linux native AIO
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: Using generic crc32 instructions
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: Initializing buffer pool, size = 128.0M
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: Completed initialization of buffer pool
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: Highest supported file format is Barracuda.
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: 128 rollback segment(s) are active.
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB: Waiting for purge to start
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.44-86.0 started; log sequence number 2925247
seafile-mysql | 2020-09-03  7:43:25 2746215716 [Note] InnoDB: Dumping buffer pool(s) not yet started
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] Plugin 'FEEDBACK' is disabled.
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] Server socket created on IP: '::'.
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Warning] 'proxies_priv' entry '@% root@cbac7b27cbad' ignored in --skip-name-resolve mode.
seafile-mysql | 2020-09-03  7:43:25 3069482200 [Note] mysqld: ready for connections.
seafile-mysql | Version: '10.1.41-MariaDB'  socket: '/run/mysqld/mysqld.sock'  port: 3306  MariaDB Server
seafile      | *** Running /etc/my_init.d/01_create_data_links.sh...
seafile      | *** Booting runit daemon...
seafile      | *** Runit started as PID 24
seafile      | *** Running /scripts/start.py...
seafile      | Certificate will not expire
seafile      | Created a crontab to auto renew the cert for letsencrypt.
seafile      | [09/03/2020 09:43:27][upgrade]: The container was recreated, running minor-upgrade.sh to fix the media symlinks
seafile      | [09/03/2020 09:43:27][upgrade]: Running script /opt/seafile/seafile-server-7.1.4/upgrade/minor-upgrade.sh
seafile      | 
seafile      | -------------------------------------------------------------
seafile      | This script would do the minor upgrade for you.
seafile      | Press [ENTER] to contiune
seafile      | -------------------------------------------------------------
seafile      | 
seafile      | 
seafile      | renaming the gunicorn.conf to gunicorn.conf.py ...
seafile      | 
seafile      | Done
seafile      | 
seafile      | ------------------------------
seafile      | migrating avatars ...
seafile      | 
seafile      | 
seafile      | DONE
seafile      | ------------------------------
seafile      | 
seafile      | 
seafile      | Moving the elasticsearch's configuration file ...
seafile      | 
seafile      | 
seafile      | updating seafile-server-latest symbolic link to /opt/seafile/seafile-server-7.1.4 ...
seafile      | 
seafile      | DONE
seafile      | ------------------------------
seafile      | 
seafile      | 
seafile      | [09/03/20 09:43:27] ../common/session.c(148): using config file /opt/seafile/conf/ccnet.conf
seafile      | Starting seafile server, please wait ...
seafile      | ** Message: 09:43:27.933: seafile-controller.c(541): No seafevents.
seafile      | 
seafile      | Seafile server started
seafile      | 
seafile      | Done.
seafile      | 
seafile      | Starting seahub at port 8000 ...
seafile      | 
seafile      | Seahub is started
seafile      | 
seafile      | Done.
seafile      | 
seafile      | 
seafile      | Starting seaf-fuse, please wait ...
seafile      | fuse: device not found, try 'modprobe fuse' first
seafile      | Failed to start seaf-fuse
seafile      | [2020-09-03 09:43:27] Preparing for letsencrypt ...
seafile      | [2020-09-03 09:43:27] Found existing cert file /shared/ssl/sync.MYDOMAIN.crt
seafile      | [2020-09-03 09:43:27] Skip letsencrypt verification since we have a valid certificate
seafile      | [2020-09-03 09:43:27] Skip running setup-seafile-mysql.py because there is existing seafile-data folder.
seafile      | seafile server is running now.
seafile      | seaf-fuse is running now.
seafile      | Traceback (most recent call last):
seafile      |   File "/scripts/start.py", line 92, in <module>
seafile      |     main()
seafile      |   File "/scripts/start.py", line 80, in main
seafile      |     call('{} start -o allow_other /fuse'.format(get_script('seaf-fuse.sh')))
seafile      |   File "/scripts/utils/__init__.py", line 70, in call
seafile      |     return subprocess.check_call(*a, **kw)
seafile      |   File "/usr/lib/python3.6/subprocess.py", line 311, in check_call
seafile      |     raise CalledProcessError(retcode, cmd)
seafile      | subprocess.CalledProcessError: Command '/opt/seafile/seafile-server-7.1.4/seaf-fuse.sh start -o allow_other /fuse' returned non-zero exit status 1.
seafile      | *** /scripts/start.py exited with status 1.
seafile      | *** Shutting down runit daemon (PID 24)...
seafile      | *** Running /etc/my_init.post_shutdown.d/10_syslog-ng.shutdown...
seafile      | *** Killing all processes...
seafile exited with code 1

Thanks in advance for your time & help :slight_smile:

Hi @lakano, you are right to use 2020.08.1, the second one needs to be updated and I haven’t had the time to do it yet, will do this evening probably.

Considering your error, it is due to the fact that you may have not seen my docker-compose file suggested on github, but working with seaf-fuse needs your container to be linked to the /dev/fuse device on your host.

This is done by adding this to your seafile container :

    cap_add:                                        # Needed for Seaf-Fuse inside the container
      - SYS_ADMIN                                   # For now Docker doesn't allow it any other way
    devices:                                        # For more information see https://github.com/docker/for-linux/issues/321
      - "/dev/fuse:/dev/fuse"

Have fun !

EDIT : OK, I’ve taken the time to correctly fix the 2020.08.2 ; which doesn’t exist anymore and has been replaced by 2020.09.1. I’ve tested in on a new fresh install and it works.

Again, here is my advice to get it working :

  • You need to bind-mount the seafile volume if you want to use FUSE with seaf-fuse. Usual Docker Volumes do not allow to sub-mount, which prevent fuse to propagate from the container to the host.
  • Bind-mount does not automatically create the folder if it doesn’t exist, so you need to mkdir the corresponding docker folder on your host.

Hi @Kynn, I am now interest in the capability given by fuse about having available the files in the same seafile rpi server. So I will try to move from my seafile-rpi image to yours.

Having a look at the whole thread, you talk about a proposed docker-compose file in the README but in it the referenced image is something like tata-corp/seafile-mc:7.1.4-rpi … shoudn’t be your image kynn/seafile-rpi:7.1.4-2020.09.1?

thank you!