Sign inSign up

waazaafr/garage-s3-simple

By waazaafr

•Updated about 1 month ago

An S3 object store so reliable you can run it outside datacenters by DeuxFleurs

Image
0

10K+

waazaafr/garage-s3-simple repository overview

⁠Garage S3 Simple

A ready-to-run Docker image for Garage⁠, the lightweight, S3-compatible distributed object storage made by Deuxfleurs⁠.

Set three variables, start the container: the Garage configuration is generated for you.


⁠Features

  • 📦 Official Garage binary, on Alpine Linux for a minimal footprint
  • ⚙️ Automatic garage.toml generation from environment variables
  • 🧰 AWS CLI pre-installed (with an s3 alias for aws s3)
  • 📊 Optional web UI to monitor your Garage node
  • 🖥️ Multi-arch: linux/amd64 and linux/arm64

⁠Tags

TagGarage version
latestlatest release
2.4.1v2.4.1⁠

New image releases follow the Garage releases⁠ from Deuxfleurs.


⁠Quick start

⁠Docker Compose
services:
  garage:
    image: waazaafr/garage-s3-simple:latest
    container_name: garage
    restart: unless-stopped
    ports:
      - "9000:9000"   # S3 API
      - "3901:3901"   # RPC
      - "3902:3902"   # S3 web hosting
      - "3903:3903"   # Admin API
      - "4080:4080"   # Web UI (optional)
    volumes:
      - ./garage/config:/config
      - ./garage/data:/data
      - ./garage/meta:/meta
    environment:
      NODE_IP: "192.168.1.10"
      ADMIN_TOKEN: "your-secure-token"
      WEBUI_ENABLED: "true"
⁠Docker run
docker run -d \
  --name garage \
  --restart unless-stopped \
  -p 9000:9000 \
  -p 3901:3901 \
  -p 3902:3902 \
  -p 3903:3903 \
  -p 4080:4080 \
  -v /path/to/config:/config \
  -v /path/to/data:/data \
  -v /path/to/meta:/meta \
  -e NODE_IP="192.168.1.10" \
  -e ADMIN_TOKEN="your-secure-token" \
  -e WEBUI_ENABLED="true" \
  waazaafr/garage-s3-simple:latest

⁠Configuration

⁠Environment variables
VariableDefaultRequiredDescription
NODE_IP—✅IP address of this node, advertised to other nodes for RPC
ADMIN_TOKEN—✅Token for the Admin API (and the web UI)
GATEWAY0.0.0.0Bind address of the S3 API and the Admin API
RPC_SECRETauto-generatedRPC secret shared by all nodes of a cluster (64 hex characters)
REPLICATION_FACTOR1Number of copies of each object
CONSISTENCY_MODEdegradedconsistent, degraded or dangerous
BLOCK_SIZE5Block size, in MB
COMPRESSION_LEVEL2Compression level
WEBUI_ENABLEDfalsetrue to start the web UI on port 4080
META_SNAPSHOTS_ENABLEfalsetrue to enable automatic metadata snapshots
META_SNAPSHOTS_DIR/data/snapshots_metaWhere metadata snapshots are stored
META_SNAPSHOTS_INTERVAL24Interval between metadata snapshots, in hours

⚠️ The container exits with an error if NODE_IP or ADMIN_TOKEN is not set.

⁠Ports
PortService
9000S3 API
3901RPC (communication between Garage nodes)
3902S3 web hosting (static websites)
3903Admin API
4080Web UI (only if WEBUI_ENABLED=true)
⁠Volumes
PathContent
/configGarage configuration (garage.toml, including secrets)
/dataObject data
/metaMetadata
⁠How the configuration is managed

First start — /config/garage.toml does not exist:

  • It is created from the environment variables; unset optional variables use their defaults.
  • If RPC_SECRET is not set, a random secret is generated.

Next starts — /config/garage.toml already exists:

  • NODE_IP, GATEWAY and ADMIN_TOKEN are always re-applied from the environment.
  • Optional variables are updated only if they are explicitly set; everything else (such as RPC_SECRET) is kept.
  • The Admin API bind address is never modified.

You can therefore keep your configuration across restarts and still change specific values through environment variables.


⁠Examples

⁠Custom storage settings
docker run -d \
  --name garage \
  -p 9000:9000 -p 3901:3901 -p 3902:3902 -p 3903:3903 \
  -v garage-config:/config \
  -v garage-data:/data \
  -v garage-meta:/meta \
  -e NODE_IP="192.168.1.10" \
  -e ADMIN_TOKEN="my-admin-token" \
  -e BLOCK_SIZE="10" \
  -e COMPRESSION_LEVEL="5" \
  -e META_SNAPSHOTS_ENABLE="true" \
  waazaafr/garage-s3-simple:latest

⁠Changelog

Garage release notes: git.deuxfleurs.fr/Deuxfleurs/garage/releases⁠

⁠2026-09-08
  • Garage v2.3.0 → v2.4.1.
⁠2026-08-04
  • Added an optional web UI showing Garage information. Enable it with WEBUI_ENABLED=true and publish port 4080.

Tag summary

Content type

Image

Digest

sha256:cb820d57a…

Size

115.3 MB

Last updated

about 1 month ago

docker pull waazaafr/garage-s3-simple