apps.header.allAppsCount
seaweedfs
apps.detail.types.app from junkerderprovinz's Repository
apps.detail.sections.overview
Readme
View on GitHub
SeaweedFS for Unraid
A plug-and-play Unraid Community Applications template for SeaweedFS - a fast,
S3-API-compatible object store, actively maintained (weekly releases), wrapping the
official chrislusf/seaweedfs image.
Table of Contents
- Why this instead of MinIO?
- What is this?
- Quick Start on Unraid
- Connecting a client
- Coming from MinIO
- Configuration
- Backup
1. Why this instead of MinIO?
MinIO's open-source Community Edition is done: the minio/minio repo was archived in April 2026, its last Docker Hub image (September 2025) has a known unpatched high-severity CVE, and the last source release ever cut (October 2025, source-only, never packaged as an image) was the final one. MinIO now pushes AIStor instead - a free tier exists, but it is closed-source, not a continuation of the open MinIO you used to run.
SeaweedFS is a genuine, actively-developed alternative: Apache-2.0, near-weekly releases, an official multi-arch image actually being maintained, and a documented single-node S3 mode that isn't a cut-down fallback - it's the same binary a real cluster uses, just running every role in one process.
2. What is this?
SeaweedFS's own "mini" mode runs master, volume server, filer, S3 API and admin UI together in a single process, all data under one directory. This template wraps the official image running exactly that mode, with the data directory mapped to Unraid appdata so it survives recreation and updates - nothing more added, nothing hidden.
File ownership inside the data volume is fixed automatically by the image's own entrypoint (a built-in seaweed user, chowned on start) - there's no PUID/PGID to configure.
3. Quick Start on Unraid
- Install from Community Applications, or add this template's URL directly:
https://raw.githubusercontent.com/junkerderprovinz/unraid-apps/main/seaweedfs/seaweedfs.xml - Set Access Key and Secret Key (see Security note below) - anything reasonably random works, e.g. generate a secret with
openssl rand -hex 24. - Optionally set Pre-create Bucket to a name (or comma-separated names) you want to exist immediately.
- Start the container. The S3 endpoint is
http://SERVER_IP:8333; the admin UI (bucket/volume/topology browser) is athttp://SERVER_IP:23646.
Security: leaving both keys empty starts the S3 API in unauthenticated "Allow All" mode. That's fine for a five-minute local test, not for anything you actually care about - set both before storing real data, and don't expose port 8333 to the internet without a reverse proxy and TLS in front of it.
4. Connecting a client
Any S3-compatible tool works. A few common ones:
rclone (rclone config, or a config file entry):
[seaweedfs]
type = s3
provider = Other
access_key_id = YOUR_ACCESS_KEY
secret_access_key = YOUR_SECRET_KEY
endpoint = http://SERVER_IP:8333
MinIO Client (mc) - yes, the CLI tool still works fine against SeaweedFS:
mc alias set seaweedfs http://SERVER_IP:8333 YOUR_ACCESS_KEY YOUR_SECRET_KEY
mc mb seaweedfs/my-bucket
mc cp somefile.txt seaweedfs/my-bucket/
restic (repository URL):
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
restic -r s3:http://SERVER_IP:8333/my-restic-repo init
5. Coming from MinIO
There is no automatic import - copy your data across with any S3-to-S3 tool. rclone is the simplest:
rclone config # add both the old MinIO and this SeaweedFS instance as remotes
rclone sync minio-remote:my-bucket seaweedfs-remote:my-bucket --progress
mc mirror works the same way if you'd rather stay in the MinIO Client tool (it talks to any S3-compatible endpoint, including SeaweedFS, on both sides).
Point whatever was using the old endpoint (backup tools, apps, scripts) at the new http://SERVER_IP:8333 and the new Access/Secret Key once the copy is verified.
6. Configuration
| Setting | Container Variable | Default | Notes |
|---|---|---|---|
| S3 API Port | (port) | 8333 |
The functional endpoint every client connects to. |
| Admin UI Port | (port) | 23646 |
Browser UI: buckets, volume/cluster status. |
| Master UI Port | (port) | 9333 |
Advanced. Master node status page. |
| Filer UI Port | (port) | 8888 |
Advanced. Browsable file listing (filer view, not S3 buckets). |
| Data | (path) | /mnt/user/appdata/seaweedfs/data |
Everything lives here - volumes, filer metadata, admin config. Must be mapped. |
| Access Key | AWS_ACCESS_KEY_ID |
(empty) | S3 access key. Empty + empty secret = unauthenticated mode. |
| Secret Key | AWS_SECRET_ACCESS_KEY |
(empty) | S3 secret key. |
| Pre-create Bucket | S3_BUCKET |
(empty) | Comma-separated bucket name(s) to create on first start. |
7. Backup
Everything lives under the single Data mount (/mnt/user/appdata/seaweedfs/data by default) - back that up the same way you back up any other appdata folder (e.g. with a container-aware backup tool). There's no separate database or config store to remember.
Questions, bugs, ideas? Unraid support thread → (or open a GitHub issue).
apps.marketingCta.appInstallTitle
apps.marketingCta.appInstallDescription
apps.detail.sections.requirements
apps.detail.sections.categories
apps.downloadStats.title
apps.detail.sections.related
apps.detail.related.exploreCategories
apps.detail.related.exploreAllapps.detail.sections.links
apps.detail.sections.details
chrislusf/seaweedfs:latestapps.detail.sections.runtime
- apps.detail.details.webui
http://[IP]:[PORT:23646]- apps.detail.details.network
bridge- apps.detail.details.shell
sh- apps.detail.details.privileged
- false
apps.detail.sections.configuration
The S3-compatible endpoint every client (rclone, mc, aws-cli, restic, ...) connects to. This is the port that matters functionally.
- apps.detail.config.target
- 8333
- apps.detail.config.default
- 8333
- apps.detail.config.value
- 8333
Browser-based cluster admin UI (buckets, volumes, topology). This is what WebUI opens.
- apps.detail.config.target
- 23646
- apps.detail.config.default
- 23646
- apps.detail.config.value
- 23646
Master node status page (volume/cluster health). Optional to expose, useful for monitoring.
- apps.detail.config.target
- 9333
- apps.detail.config.default
- 9333
- apps.detail.config.value
- 9333
Browsable file-listing UI over the same data, in filer terms rather than S3 buckets. Optional.
- apps.detail.config.target
- 8888
- apps.detail.config.default
- 8888
- apps.detail.config.value
- 8888
Where every volume, filer metadata and admin config lives - this MUST be mapped or everything is lost on recreate. The image's entrypoint fixes ownership automatically on start (no PUID/PGID needed).
- apps.detail.config.target
- /data
- apps.detail.config.default
- /mnt/user/appdata/seaweedfs/data
- apps.detail.config.value
- /mnt/user/appdata/seaweedfs/data
S3 access key. Leave BOTH this and Secret Key empty only for a throwaway local test - S3 then runs unauthenticated ('Allow All'). Set both before storing real data.
- apps.detail.config.target
- AWS_ACCESS_KEY_ID
S3 secret key, paired with Access Key above. Use a real generated secret (e.g. openssl rand -hex 24), not a short password - this is what protects your data over the network.
- apps.detail.config.target
- AWS_SECRET_ACCESS_KEY
Optional. Name of a bucket to create automatically on first start (comma-separated for more than one, e.g. backups,media). Leave empty to create buckets yourself later via any S3 client.
- apps.detail.config.target
- S3_BUCKET