Riscv64 support

So I own a riscv64 device and I would like to run seafile with it.

There is currently no prebuilt docker images, neither really a single point of documentation for building from scratch.

What components are actually required for a working setup?

  • libsearpc
  • seafile
  • seafile-client
  • seahub

Once I can get things working locally, the goal would be to pack it up with Docker and perhaps in the long run, make seafile work with the official docker-compose file on riscv.

This is a post to track this work, collect any existing resources, and in general understand how to coordinate (and upstream) this work.

I just tested building this image, seems to work quite well which is a good surprise. I don’t own a riscv board myself though, so real life tests might not work as expected.

However I’ve had to rebase on debian:unstable since it looks like it’s the only debian image that supports riscv. Probably no the best idea… But I also discovered ubuntu images have a good riscv support, which is quite interesting.

FYI, I use the build script for raspberry pi under the hood.

2 Likes

Amazing, many thanks for the link!

The franchetti/seafile-arm:riscv-experimental docker does indeed start (!!), I suspect that I need to adjust some configuration settings. This is great progress, I have tried for a long time to build this project but without much progress.

Apart of the “debian:unstable” riscv docker image, there is also “riscv64/debian”, but looking into it I believe they must be more or less equally recent.

Edit: I should say that I do indeed own a riscv board myself which I run Ubuntu Server 21.10 on.

They’re even the same if you compare the digests. I will try to rebase on ubuntu sometime.

Indeed, you can find some explanations here. Don’t hesitate to ask if something is unclear.

I got something up and running, very happy myself.

One thing though, and that is not directly related to riscv at all, but I do not understand what port 8082 (seafile server) is used for: web traffic needs to be routed to seahub at port 8000, right?

Am I right thinking that port 8082 is for internal usage? What speaks against this theory is that it is port mapped in the example docker run command in seafile-arm-docker-base.

Both are needed. Seahub (port 8000) is the web interface and the fileserver (port 8082) let you access your files. The recommended way is to use a reverse proxy + TLS and access the application on port 443. Detailed explanations can be found in the manual (nginx, apache) and you can check that both services are used in the reverse proxy configuration:

// Truncated example from nginx config file

location / {
    proxy_pass http://127.0.0.1:8000;
}

location /seafhttp {
    proxy_pass http://127.0.0.1:8082;
}