Why self-host your object storage
Cloud providers charge for storage, GET/PUT requests and — especially — egress. On a fixed-price VPS you have none of that: your S3 endpoint serves as many requests as you like, with no end-of-month surprises. And because the API is the standard S3 one, your existing tools — rclone, restic, aws-cli, any S3 SDK — connect to it without modification.
The self-hosting movement has made these solutions accessible even to a small team: where you once had to manage a distributed cluster, a single container on a VPS is enough today for the vast majority of storage needs.
What RustFS brings over its alternatives
- Built-in web console on port 9001 — [Garage](/blog/heberger-garage-s3-vps) has none, [MinIO](/blog/heberger-minio-vps) needs a separate licence for its advanced console since 2021
- Single Rust binary in one container — no PostgreSQL dependency or side service to maintain
- S3 credentials auto-generated at installation and surfaced in your ServOrbit dashboard
- Apache 2.0 — no feature locked behind an edition tier
/healthendpoint on port 9000 for monitoring probes- Fast startup: the
rustfs/rustfs:latestimage is under 60 MB and the container is healthy in under 30 seconds
Prerequisites
A ServOrbit VPS with at least 2 GB of RAM and an SSD volume sized to your storage needs. Docker is installed automatically by ServOrbit. No domain name is required to start: access goes through SSH tunnels on port 9001 (console) and port 9000 (S3 API).
For intensive use — daily backups of large databases, storing tens of gigabytes, or concurrent access from multiple applications — plan for 4 GB of RAM and 2 vCPUs.
Step-by-step installation
Install RustFS from the Marketplace
From your ServOrbit dashboard, select your VPS, then pick RustFS from the Marketplace. The install deploys the
rustfs/rustfs:latestcontainer with a named Docker volume (rustfs-data). Two credentials are generated:RUSTFS_ACCESS_KEY(username) andRUSTFS_SECRET_KEY(password), both shown under the Credentials tab of your service.Open the web console
Open an SSH tunnel to the console port (shown in your dashboard):
ssh -L 9001:127.0.0.1:<port> root@<vps-ip>Then open
http://localhost:9001/rustfs/console/in your browser. Enter the value ofRUSTFS_ACCESS_KEYas the username andRUSTFS_SECRET_KEYas the password.Create a bucket and set policies
In the console, click Create Bucket and name it (e.g.
backupsorassets). You can then define an access policy:ReadOnlyfor public assets,ReadWritefor application buckets, or leave it private by default.Connect an S3 client
Open a second tunnel for the S3 API:
ssh -L 9000:127.0.0.1:9000 root@<vps-ip>Then configure your S3 client:
mc alias set mystore http://localhost:9000 <RUSTFS_ACCESS_KEY> <RUSTFS_SECRET_KEY> mc ls mystoreFor
restic:restic -r s3:http://localhost:9000/backups initAttach a domain (optional)
To access the console and S3 API from outside without a tunnel, attach a domain from your ServOrbit dashboard — nginx proxies to the console port over HTTPS automatically. You can also use the free
{app}.{dns_slug}.servorbit-dns.comsubdomain included with every VPS.
Common use cases
Database backups: pipe pg_dump | rclone rcat mystore:backups/dump.sql.gz to your RustFS endpoint. Application file storage: configure your app (Laravel, Django, Next.js) to write uploads to a RustFS bucket instead of local disk. CI/CD artifact cache: expose a bucket to store build artifacts between runs without depending on an external cloud service.
RustFS also pairs well with [restic](/blog/sauvegardes-restic-vps): configure the backup repository as s3:http://localhost:9000/backups and benefit from restic's deduplication, encryption and automatic rotation on your own infrastructure.
Data persistence and backup strategy
The rustfs-data Docker volume persists your data across container restarts and updates. To protect this volume against VPS loss, export it regularly:
# Snapshot the volume to a local file
docker run --rm -v rustfs-data:/data alpine tar czf - /data > rustfs-backup.tar.gzFor automated backups, set up a cron job that sends these snapshots to a second VPS or external storage. For a complete 3-2-1 strategy, see our guide on [restic backups](/blog/sauvegardes-restic-vps): restic encrypts, deduplicates and automatically rotates snapshots, with native S3 backend support.
RustFS vs MinIO vs Garage: which to choose?
All three are open source S3-compatible servers, but with different trade-offs. [MinIO](/blog/heberger-minio-vps) is the most mature and widely used, but its advanced web console moved to a commercial licence in 2021 — for solo or small-team use the console remains accessible, but the legal boundary deserves attention. [Garage](/blog/heberger-garage-s3-vps) (Apache-2.0) is designed for geo-distribution across low-reliability nodes, with no built-in web console. RustFS (Apache-2.0) targets the most common case: a single S3 endpoint on one VPS, with an embedded web console, without licence compromise. If you need geo-distribution or a multi-node cluster, Garage will be more suitable; for a single VPS with a graphical interface, RustFS is the simplest choice.
Install from the ServOrbit Marketplace
RustFS is available directly in the ServOrbit Marketplace — one click deploys the container, generates the credentials and displays them in your dashboard. No commands to type to get started.