Garage on a VPS: Lightweight Distributed S3-Compatible Storage for Multi-Server Setups

Garage on a VPS: Lightweight Distributed S3-Compatible Storage for Multi-Server Setups

Garage is an open-source, lightweight distributed object storage system — S3-compatible, written in Rust, and designed to run on multiple small VPS instances forming a storage cluster. Unlike MinIO (excellent for single-server S3), Garage is specifically built for multi-server distributed storage: data is automatically sharded and replicated across nodes, surviving individual server failures. For teams with 2–5 VPS instances wanting S3-compatible distributed storage without running complex Ceph clusters.

Garage vs MinIO for Multi-Server Storage

  • Garage: Designed for small clusters (3–10 nodes), geographic distribution, simple configuration, excellent data durability with replication
  • MinIO: Excellent single-server S3, more complex distributed mode (MinIO Distributed), enterprise features
  • Ceph: Extremely capable, extremely complex — appropriate for large clusters (10+ nodes)
  • Choose Garage: 3–5 VPS nodes wanting simple, reliable distributed S3 without operational complexity

Architecture: 3-Node Cluster

<code"># Setup: 3 VPS nodes in different datacenters/zones
# node1: 192.168.1.10 (Zone: us-east)
# node2: 192.168.1.11 (Zone: us-west)
# node3: 192.168.1.12 (Zone: eu-west)
# 
# Replication: data written to 2 out of 3 zones
# Reads: served from nearest available zone
# Failures: cluster continues if 1 node is down

Step 1: Install Garage on Each Node

<code"># Run on ALL 3 nodes:
mkdir -p /opt/garage /var/lib/garage

# Download Garage binary
wget https://garagehq.deuxfleurs.fr/garage-v1.0.0-linux-x86_64 \
    -O /usr/local/bin/garage
chmod +x /usr/local/bin/garage
garage --version

Step 2: Configure Garage (Each Node)

<code">sudo nano /etc/garage/garage.toml
<code"># Node 1 configuration (adjust node_id and rpc_public_addr per node)
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"

[network_key]
# Generate ONCE and use SAME key on all nodes:
# openssl rand -base64 32
key = "YOUR_SHARED_NETWORK_KEY_BASE64"

[rpc]
# THIS node's public address (other nodes connect to this):
public_addr = "192.168.1.10:3901"
bind_addr = "0.0.0.0:3901"

[s3_api]
s3_region = "garage"
api_bind_addr = "0.0.0.0:3900"
root_domain = ".s3.yourdomain.com"

[admin]
api_bind_addr = "127.0.0.1:3903"
<code">sudo nano /etc/systemd/system/garage.service
<code">[Unit]
Description=Garage S3 Storage
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/garage server --config /etc/garage/garage.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target
<code"># On ALL nodes:
sudo systemctl enable garage
sudo systemctl start garage

Step 3: Form the Cluster

<code"># Connect nodes to each other (run on node1):
garage node connect 192.168.1.11:3901   # Connect to node2
garage node connect 192.168.1.12:3901   # Connect to node3

# List all nodes:
garage node list
# Shows: node IDs, addresses, status

# Assign nodes to zones (for geographic distribution):
# FIRST: get each node's ID from the output above
NODE1_ID="abc123..."
NODE2_ID="def456..."
NODE3_ID="ghi789..."

garage layout assign \
    "$NODE1_ID" --zone "us-east" --capacity 100 --tag "node1"
garage layout assign \
    "$NODE2_ID" --zone "us-west" --capacity 100 --tag "node2"  
garage layout assign \
    "$NODE3_ID" --zone "eu-west" --capacity 100 --tag "node3"

# Preview the layout:
garage layout show

# Apply the layout:
garage layout apply --version 1

# Verify cluster health:
garage status

Step 4: Create Buckets and Keys

<code"># Create a bucket:
garage bucket create my-app-files
garage bucket create backup-data

# Create access keys:
garage key create app-backend
# Output: ACCESS_KEY_ID and SECRET_ACCESS_KEY

# Grant access:
garage bucket allow my-app-files \
    --read --write --owner \
    --key app-backend

# Create read-only key for CDN/download:
garage key create cdn-reader
garage bucket allow my-app-files --read --key cdn-reader

Step 5: Configure Replication

<code"># Garage replication options:
# mode = "1": no replication (data on 1 node)
# mode = "2": 2-copy replication (survives 1 node failure)
# mode = "3": 3-copy replication (survives 2 node failures)

# Configure in garage.toml:
[garage]
replication_mode = "2"   # For 3 nodes, 2-copy is standard

# After changing, apply layout again:
garage layout apply --version 2

Step 6: Use with AWS SDK

<code">pip install boto3
<code">import boto3
from botocore.client import Config

# Connect to Garage (same as MinIO/S3)
s3 = boto3.client(
    's3',
    endpoint_url='https://s3.yourdomain.com',   # or 'http://node1:3900'
    aws_access_key_id='YOUR_ACCESS_KEY',
    aws_secret_access_key='YOUR_SECRET_KEY',
    region_name='garage',
    config=Config(signature_version='s3v4'),
)

# All standard S3 operations work:
s3.upload_file('myfile.pdf', 'my-app-files', 'documents/myfile.pdf')
url = s3.generate_presigned_url('get_object',
    Params={'Bucket': 'my-app-files', 'Key': 'documents/myfile.pdf'},
    ExpiresIn=3600)

# List buckets
for bucket in s3.list_buckets()['Buckets']:
    print(bucket['Name'])

Step 7: Nginx for S3 API (Public Endpoint)

<code">sudo nano /etc/nginx/sites-available/garage-s3
<code">server {
    listen 443 ssl http2;
    server_name s3.yourdomain.com *.s3.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/s3.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/s3.yourdomain.com/privkey.pem;

    client_max_body_size 10000M;
    proxy_read_timeout 600s;
    proxy_request_buffering off;

    location / {
        proxy_pass http://127.0.0.1:3900;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Getting Started

Each Garage node uses 50–100 MB RAM regardless of stored data volume. Three small 1 GB Ubuntu VPS at VPS.DO nodes form a reliable distributed storage cluster. The cluster survives one node failure and automatically rebalances when it comes back. For organizations with multiple VPS instances already running other services, Garage adds distributed object storage without dedicated storage hardware.

Conclusion

Garage provides distributed S3-compatible object storage designed for small VPS clusters — simpler than Ceph, more resilient than MinIO single-server. Data is automatically sharded and replicated across zones, surviving individual server failures. The S3 API compatibility means any existing S3 integration works with Garage unchanged. For teams with 3+ VPS instances wanting private, self-hosted distributed storage without cloud egress fees, Garage is the right-sized solution between MinIO’s simplicity and Ceph’s complexity.

23 Comments

  • aussiecasinoexperts.com
    October 21, 2026

    What’s up, I would like to subscribe for this website to
    take latest updates, so where can i do it please
    help.

  • xx8
    October 21, 2026

    With havin so much written content do you ever run into any problems of
    plagorism or copyright infringement? My blog has a lot
    of exclusive content I’ve either created myself or outsourced but it looks
    like a lot of it is popping it up all over the web without my authorization.
    Do you know any methods to help reduce content from being ripped off?

    I’d genuinely appreciate it.

  • Seo For Wordpress
    October 21, 2026

    Aw, this was an extremely nice post. Spending some time and actual
    effort to create a great article… but what can I say… I procrastinate a whole lot and don’t seem to get
    nearly anything done.

  • analytics
    October 21, 2026

    Its like you read my mind! You appear to know so much about this, like you wrote the book in it or something.
    I think that you can do with a few pics to drive the message home a little
    bit, but other than that, this is magnificent blog.
    A great read. I’ll certainly be back.

  • best
    October 21, 2026

    Hey There. I discovered your blog the usage of msn. This is an extremely smartly written article.
    I’ll make sure to bookmark it and come back to read more of your helpful info.

    Thanks for the post. I’ll certainly comeback.

  • bandar
    October 21, 2026

    Normally I don’t learn article on blogs, but I wish to say that this write-up
    very pressured me to take a look at and do it! Your writing style
    has been surprised me. Thanks, very great post.

  • xx8
    October 21, 2026

    Helpful info. Fortunate me I discovered your
    web site unintentionally, and I’m stunned why
    this accident did not took place in advance! I bookmarked it.

  • Joint Genesis supplement review
    October 21, 2026

    This is a clear explanation of how this post covers evaluating product claims in a straightforward way.

  • KlaroNail complaints
    October 21, 2026

    The section on this overview of the importance of following product directions in an easy-to-follow way.

  • Alpha Surge performance support
    October 21, 2026

    Useful context for understanding this overview of building sustainable daily routines with a balanced perspective.

  • j88.com
    October 21, 2026

    Really when someone doesn’t know then its up to other people that they will help, so here it takes place.

  • u888 love
    October 21, 2026

    Pretty! This has been an extremely wonderful post.
    Thank you for providing this info.

  • www.naganotonicleans.com
    October 21, 2026

    Good information about how individual experiences can vary that is practical and straightforward.

  • paedophile website
    October 21, 2026

    Magnificent goods from you, man. I’ve take into account your
    stuff prior to and you’re just extremely excellent. I really like what you have got
    here, certainly like what you are stating and the way in which you are saying it.
    You’re making it entertaining and you continue to care for to stay it sensible.

    I can’t wait to learn far more from you. That is actually a terrific site.

  • hello 88
    October 21, 2026

    Excellent blog here! Also your website loads up fast! What host are
    you using? Can I get your affiliate link to your host?
    I wish my web site loaded up as fast as yours lol

  • bokep
    October 21, 2026

    Its like you read my mind! You appear to know
    a lot about this, like you wrote the book in it or something.
    I think that you can do with a few pics to drive the
    message home a little bit, but other than that, this is fantastic blog.
    An excellent read. I’ll definitely be back.

  • poolzubehöre bestellen
    October 21, 2026

    Hi mates, good piece of writing and fastidious urging commented
    here, I am in fact enjoying by these.

  • homepage
    October 21, 2026

    With havin so much written content do you ever run into
    any problems of plagorism or copyright infringement? My site has
    a lot of exclusive content I’ve either written myself or outsourced but it
    appears a lot of it is popping it up all over the web without my agreement.
    Do you know any techniques to help prevent content from being stolen? I’d truly
    appreciate it.

  • schwimmbadfolien komplettset
    October 21, 2026

    great post, very informative. I’m wondering why the other specialists of this
    sector do not realize this. You must continue your writing.
    I am confident, you have a huge readers’ base
    already!

  • STUDY ABROAD CONSULTANTS IN KASARAGOD
    October 21, 2026

    Your style is really unique compared to other folks I’ve read stuff from.
    Thanks for posting when you’ve got the opportunity, Guess
    I’ll just bookmark this page.

  • check my blog
    October 21, 2026

    This is really interesting, You are a very skilled blogger.
    I have joined your rss feed and sit up for in quest of more of your magnificent post.
    Also, I have shared your website in my social networks

  • abcvip
    October 21, 2026

    I wanted to thank you for this wonderful read!! I absolutely loved every little bit
    of it. I’ve got you book-marked to check out new
    things you post…

  • schwimmbadfolien
    October 21, 2026

    Great delivery. Great arguments. Keep up the great effort.

Post Your Comment

Fast • Reliable • Affordable VPS - DO It Now!

Get top VPS hosting with VPS.DO’s fast, low-cost plans. Try risk-free with our 7-day no-questions-asked refund and start today!