All apps · 0 apps
Garage
Docker app from junkerderprovinz's Repository
Overview
Readme
View on GitHub
Garage — a lightweight, S3-compatible distributed object store — plus its web admin panel, bundled into one container for Unraid. Both are the official upstream binaries, unmodified, wired together with s6-overlay. No manual CLI setup: single-node layout, S3 key and bucket are all created automatically on first boot.
Table of Contents
- Why one container?
- What is this?
- Quick Start on Unraid
- Connecting a client
- Configuration
- Backup
- Support this project
1. Why one container?
Garage's own Community Applications listings are split across three separate templates from one maintainer: the core server (in two network variants) and the web admin panel as its own install. This template bundles the core server and the admin panel into one container — both official, unmodified upstream binaries, no rebuild from source — so one install gives you a working, browsable S3 store.
2. What is this?
Garage is a lightweight,
S3-API-compatible object store built for small, geo-distributed self-hosted
deployments — Rust, Apache-2.0, actively developed. This template runs it in
single-node mode (Garage's own --single-node flag, introduced in v2.3.0),
which auto-creates the cluster layout at startup — the manual garage layout assign / garage layout apply steps a bare install normally requires are not
needed here. An S3 access key, secret key and bucket are pre-seeded from the
template fields on first boot (Garage's --default-access-key /
--default-bucket flags), so there is no second CLI step to create them either.
garage-webui runs alongside it,
talking to Garage's admin API over localhost — buckets, keys and cluster
health are all browsable without touching a terminal.
3. Quick Start on Unraid
- Install from Community Applications, or add this template's URL directly:
https://raw.githubusercontent.com/junkerderprovinz/garage/main/templates/garage.xml - Set Access Key and Secret Key — anything reasonably random works, e.g.
generate a secret with
openssl rand -hex 24. - Optionally set Bucket to a name you want created immediately (e.g.
backups). - Start the container. The S3 endpoint is
http://SERVER_IP:3900; the admin panel is athttp://SERVER_IP:3909.
Watch the container log for GARAGE IS READY — first boot generates the
config and layout, this takes a few seconds.
4. Connecting a client
Any S3-compatible tool works. A couple of common ones:
rclone (rclone config, or a config file entry):
[garage]
type = s3
provider = Other
access_key_id = YOUR_ACCESS_KEY
secret_access_key = YOUR_SECRET_KEY
endpoint = http://SERVER_IP:3900
region = garage
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:3900/my-restic-repo init
5. Configuration
| Setting | Container Variable | Default | Notes |
|---|---|---|---|
| S3 API Port | (port) | 3900 |
The functional endpoint every client connects to. |
| S3 Website Port | (port) | 3902 |
Advanced. Static-site hosting straight from a bucket. |
| Admin Panel Port | (port) | 3909 |
Browser UI: buckets, keys, cluster health. |
| Data | (path) | /mnt/user/appdata/garage/data |
Object data and metadata. Must be mapped. |
| Config | (path) | /mnt/user/appdata/garage/config |
Generated garage.toml (RPC secret, admin token). Must be mapped — losing it changes your RPC/admin secrets on next boot. |
| Access Key | ACCESS_KEY |
(empty) | S3 access key, pre-seeded on first boot. Required to write anything real. |
| Secret Key | SECRET_KEY |
(empty) | S3 secret key, pre-seeded on first boot. |
| Bucket | BUCKET |
(empty) | Bucket name to create automatically on first boot. Leave empty to create buckets later via the admin panel or any S3 client. |
| DB Engine | DB_ENGINE |
sqlite |
Garage's metadata engine. lmdb is faster but less tolerant of an unclean shutdown; sqlite is the safer default. |
Ports 3901 (Garage's internal RPC) and 3903 (the admin API garage-webui talks to) are intentionally not published — nothing outside the container needs them directly.
6. Backup
Everything lives under the Data and Config mounts — back both up the same way you back up any other appdata folder. Losing Config does not lose your objects, but it does regenerate the RPC secret and admin token on next boot, which breaks the admin panel's stored session and (for a real multi-node cluster, not this single-node setup) cluster membership.
7. Support this project
Questions, bugs, ideas? GitHub issues →.
If this template saves you a setup hassle, consider buying me a coffee:
Install Garage on Unraid in a few clicks.
Find Garage in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Download Statistics
Related apps
Explore more like this
Explore allLinks
Details
junkerderprovinz/garage:latestRuntime arguments
- Web UI
http://[IP]:[PORT:3909]- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--restart=unless-stopped
Template configuration
The S3-compatible endpoint every client (rclone, restic, aws-cli, ...) connects to. This is the port that matters functionally.
- Target
- 3900
- Default
- 3900
- Value
- 3900
Browser-based admin panel (garage-webui): buckets, keys, cluster health. This is what WebUI opens.
- Target
- 3909
- Default
- 3909
- Value
- 3909
Optional. Static-site hosting straight from a bucket (Garage's s3_web feature).
- Target
- 3902
- Default
- 3902
- Value
- 3902
Object data and metadata. This MUST be mapped or everything is lost on recreate.
- Target
- /data
- Default
- /mnt/user/appdata/garage/data
- Value
- /mnt/user/appdata/garage/data
Generated garage.toml (RPC secret, admin token). This MUST be mapped - losing it regenerates your RPC/admin secrets on next boot and breaks the admin panel's session.
- Target
- /config
- Default
- /mnt/user/appdata/garage/config
- Value
- /mnt/user/appdata/garage/config
S3 access key, pre-seeded on first boot. Required to write anything real - leaving this and Secret Key empty means no bucket/key gets created automatically.
- Target
- ACCESS_KEY
S3 secret key, paired with Access Key above. Use a real generated secret (e.g. openssl rand -hex 24), not a short password.
- Target
- SECRET_KEY
Optional. Name of a bucket to create automatically on first boot (e.g. backups). Leave empty to create buckets later via the admin panel or any S3 client.
- Target
- BUCKET
Garage's metadata engine. 'sqlite' (default) is the safer choice; 'lmdb' is faster but less tolerant of an unclean shutdown.
- Target
- DB_ENGINE
- Default
- sqlite|lmdb
- Value
- sqlite
User ID the processes run as. Default 99 = 'nobody' on Unraid.
- Default
- 99
- Value
- 99
Group ID the processes run as. Default 100 = 'users' on Unraid.
- Default
- 100
- Value
- 100