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.
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
- Why one container?
- What is this?
- Quick Start on Unraid
- Connecting a client
- Configuration
- Backup
- How AI is used here
- 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 with 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, which 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, because 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. 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.
8. 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.
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