All apps · 0 apps
Seafile
Docker app from junkerderprovinz's Repository
Overview
Readme
View on GitHub
The official Seafile server, installable on Unraid from a single template. It creates its own secrets on the first start, and it can run MariaDB, Redis and the notification server inside the same container when you have none of your own.
A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.
If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.
Table of Contents
1. What it looks like
The libraries and files in these pictures are made up.
Seafile in any browser on your network, from the container on your server.
Inside a library: folders, documents and the file tree.
2. What it does
Seafile syncs and shares files, with desktop and mobile clients, libraries you can encrypt on the client and built-in wikis. Its official image seafileltd/seafile-mc expects MariaDB, Redis and a notification server as containers of their own, plus a JWT key made by hand. This image is the official one with a small layer in front:
- Secrets on the first start. It generates the JWT key, the database password and, if you leave it empty, the admin password, and keeps them in
secrets.envin your appdata folder. - MariaDB and Redis built in, if you want them. Both are off by default, because most Unraid servers already have a MariaDB. Switched on, they run next to Seafile and listen only on
127.0.0.1. - Live updates in the clients. The notification server is included, so the desktop and mobile clients hear about a change when it happens instead of asking on a timer.
- A clear stop instead of "Page unavailable". If the database or Redis host is missing, the container stops with one line saying what to set.
- The official layout. The official scripts still run the setup and the upgrades, and
/sharedlooks the same, so a setup made with the official image or another Seafile template keeps working.
3. Getting started
- Install Seafile from Community Applications.
- Set Server hostname to the address your clients will use, for example
192.168.1.10:8000orseafile.example.com. Leave outhttp://. - Pick your services:
- No MariaDB or Redis yet? Set Built-in MariaDB and Built-in Redis to
trueand leave their host fields empty. - MariaDB already running? Enter its host and its root password. The root password is only used once, to create the three Seafile databases and the
seafileuser, and you can remove it afterwards.
- No MariaDB or Redis yet? Set Built-in MariaDB and Built-in Redis to
- Enter an Admin email. Leave the admin password empty to get a generated one.
- Start the container and open the log. The first start takes about a minute. It is ready when the log says
Seahub is started. If the password was generated, the log names it, and it is also insecrets.env. - Open
http://[IP]:8000and sign in.
With docker run:
docker run -d --name seafile \
-p 8000:80 \
-v /mnt/user/appdata/seafile:/shared \
-e SEAFILE_SERVER_HOSTNAME=192.168.1.10:8000 \
-e INIT_SEAFILE_ADMIN_EMAIL=you@example.com \
-e BUILTIN_MARIADB=true \
-e BUILTIN_REDIS=true \
junkerderprovinz/seafile:latest
Coming from another Seafile template: point Data at the same folder, copy over the hostname, the database and Redis settings and the JWT_PRIVATE_KEY, and keep Built-in MariaDB off. Back up first: a Seafile 13 database is upgraded on the first start, and there is no way back. Every other variable of the official image works as the Seafile manual describes it.
4. How AI is used here
One knight builds this, and AI is one of the tools I work with, the same way I work with an editor or a compiler. It helps me write code and documentation and it checks my work, and that saves me a good many evenings. It does not make the decisions, though. I read and understand everything before it ships, and if something here breaks, that is on me and not on the tool.
You do not have to take my word for it. The code is open and every release note is written by hand. The issue tracker shows how problems actually get handled, including the ones I got wrong the first time. If you find something that is not right, open an issue and I will look at it.
5. Support this project
Questions? Check the support thread. Bugs, ideas or feature requests? Please open a GitHub issue.
A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.
If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.
Seafile is released by Seafile Ltd., the Community Edition server under AGPL-3.0. This is an independent packaging for Unraid and is not affiliated with Seafile Ltd.
Requirements
Categories
Download Statistics
Related apps
Explore more like this
Explore allLinks
Details
junkerderprovinz/seafile:latestRuntime arguments
- Web UI
http://[IP]:[PORT:80]/- Network
bridge- Shell
bash- Privileged
- false
- Extra Params
--restart=unless-stopped
Template configuration
Port of the Seafile web interface and of the sync clients. The Server hostname below has to name this port.
- Target
- 80
- Default
- 8000
- Value
- 8000
All of Seafile: configuration, logs, your libraries, secrets.env and, with Built-in MariaDB, the database. Libraries can grow large, so pick a share with room for your files.
- Target
- /shared
- Default
- /mnt/user/appdata/seafile
- Value
- /mnt/user/appdata/seafile
The address clients use to reach Seafile, without http://. For example 192.168.1.10:8000, or seafile.example.com behind a reverse proxy. Desktop clients cannot sync when this is wrong.
- Target
- SEAFILE_SERVER_HOSTNAME
https when a reverse proxy in front of Seafile serves TLS, http otherwise.
- Target
- SEAFILE_SERVER_PROTOCOL
- Default
- http|https
- Value
- http
Sign-in of the admin account created on the first start.
- Target
- INIT_SEAFILE_ADMIN_EMAIL
Only read on the first start. Leave it empty to get a generated one, which the log prints and secrets.env keeps.
- Target
- INIT_SEAFILE_ADMIN_PASSWORD
true runs MariaDB inside this container, with its data in the Data folder. Use it only on a new installation: an existing Seafile keeps its data in the database it already has.
- Target
- BUILTIN_MARIADB
- Default
- false|true
- Value
- false
IP or name of your MariaDB or MySQL server. Leave it empty with Built-in MariaDB.
- Target
- SEAFILE_MYSQL_DB_HOST
Root password of your MariaDB, used once on the first start to create the three Seafile databases and the database user. You can clear it afterwards. Not needed with Built-in MariaDB.
- Target
- INIT_SEAFILE_MYSQL_ROOT_PASSWORD
true runs Redis inside this container. Seafile only keeps a cache there, nothing is written to disk.
- Target
- BUILTIN_REDIS
- Default
- false|true
- Value
- false
IP or name of your Redis server. Leave it empty with Built-in Redis.
- Target
- REDIS_HOST
true starts the notification server in this container, so the desktop and mobile clients see changes when they happen. A reverse proxy has to pass WebSocket connections for /notification.
- Target
- ENABLE_NOTIFICATION_SERVER
- Default
- false|true
- Value
- false
Port of your MariaDB or MySQL server.
- Target
- SEAFILE_MYSQL_DB_PORT
- Default
- 3306
- Value
- 3306
The user Seafile connects as. The first start creates it.
- Target
- SEAFILE_MYSQL_DB_USER
- Default
- seafile
- Value
- seafile
Password of the database user. Leave it empty on a new installation to get a generated one. When switching from another Seafile template, enter the password you used there.
- Target
- SEAFILE_MYSQL_DB_PASSWORD
Name of the database for users and groups.
- Target
- SEAFILE_MYSQL_DB_CCNET_DB_NAME
- Default
- ccnet_db
- Value
- ccnet_db
Name of the database for libraries.
- Target
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME
- Default
- seafile_db
- Value
- seafile_db
Name of the database for the web interface.
- Target
- SEAFILE_MYSQL_DB_SEAHUB_DB_NAME
- Default
- seahub_db
- Value
- seahub_db
Port of your Redis server.
- Target
- REDIS_PORT
- Default
- 6379
- Value
- 6379
Only when your Redis server asks for one.
- Target
- REDIS_PASSWORD
Shared by Seafile and its add-ons. Leave it empty to get a generated one. When switching from another Seafile template, enter the key you used there.
- Target
- JWT_PRIVATE_KEY
Only needed when clients reach the notification server under another address than Protocol://Server hostname/notification.
- Target
- NOTIFICATION_SERVER_URL
true turns on the SeaDoc document editor. SeaDoc runs as a separate container (seafileltd/sdoc-server) and needs the same JWT key as Seafile.
- Target
- ENABLE_SEADOC
- Default
- false|true
- Value
- false
Address of the SeaDoc container as the browser reaches it, for example http://192.168.1.10:7070.
- Target
- SEADOC_SERVER_URL
