Garage

Garage

Docker app from junkerderprovinz's Repository

Overview

Garage is a lightweight, S3-API-compatible object store built for small, self-hosted deployments - Rust, Apache-2.0, actively developed. This template bundles the official Garage server AND its web admin panel (garage-webui, also official/unmodified) into ONE container, running single-node mode. Why one container: Garage's own Community Applications listings are split across three separate templates from another maintainer (the core server in two network variants, plus the admin panel as its own separate install). This template combines the core server and the admin panel - both official, unmodified upstream binaries - into one install. Zero manual CLI setup: • Single-node cluster layout is created automatically at startup (Garage's own --single-node flag, v2.3.0+) - the manual "garage layout assign / apply" steps a bare install normally needs are not required here. • An S3 access key, secret key and bucket are pre-seeded from the fields below on first boot - no second CLI step to create them either. • garage-webui runs alongside it and talks to Garage's admin API over localhost - buckets, keys and cluster health are all browsable in the browser, no terminal needed. First start: watch the container log for "GARAGE IS READY" - first boot generates the config, this takes a few seconds. IMPORTANT: map BOTH the Data and Config volumes. Config holds the generated garage.toml (RPC secret, admin token) - losing it regenerates those secrets on next boot and breaks the admin panel's session.
Garage

Build  Upstream Garage  garage-webui  Unraid  License

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.


Buy me a coffee


Table of Contents

  1. Why one container?
  2. What is this?
  3. Quick Start on Unraid
  4. Connecting a client
  5. Configuration
  6. Backup
  7. 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

  1. Install from Community Applications, or add this template's URL directly: https://raw.githubusercontent.com/junkerderprovinz/garage/main/templates/garage.xml
  2. Set Access Key and Secret Key — anything reasonably random works, e.g. generate a secret with openssl rand -hex 24.
  3. Optionally set Bucket to a name you want created immediately (e.g. backups).
  4. Start the container. The S3 endpoint is http://SERVER_IP:3900; the admin panel is at http://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:

Buy 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.

Open the Apps tab on your Unraid server Search Community Apps for Garage Review the template variables and paths Click Install

Requirements

Set an Access Key and Secret Key below before storing anything real. See the README for client setup (rclone, restic, ...).

Download Statistics

379
Total Downloads

Related apps

Details

Repository
junkerderprovinz/garage:latest
Last Updated2026-08-16
First Seen2026-08-16

Runtime arguments

Web UI
http://[IP]:[PORT:3909]
Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart=unless-stopped

Template configuration

S3 API PortPorttcp

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
Admin Panel PortPorttcp

Browser-based admin panel (garage-webui): buckets, keys, cluster health. This is what WebUI opens.

Target
3909
Default
3909
Value
3909
S3 Website PortPorttcp

Optional. Static-site hosting straight from a bucket (Garage's s3_web feature).

Target
3902
Default
3902
Value
3902
DataPathrw

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
ConfigPathrw

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
Access KeyVariable

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
Secret KeyVariable

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
BucketVariable

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
DB EngineVariable

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
PUIDVariable

User ID the processes run as. Default 99 = 'nobody' on Unraid.

Default
99
Value
99
PGIDVariable

Group ID the processes run as. Default 100 = 'users' on Unraid.

Default
100
Value
100