S3-compatible object storage for your own servers.

One Rust binary that works with the AWS SDKs, AWS CLI, boto3 and rclone. No cloud account involved.

The Aether web console listing four buckets with their object counts and sizes, and the selected bucket's access keys

Running in two commands

The Docker image keeps data in a volume and publishes the S3 API on port 9000. Point any S3 client at it.

Connect your clients
cp .env.example .env      # root key and a long random secret
docker compose up -d

aws --endpoint-url http://localhost:9000 s3 mb s3://reports
aws --endpoint-url http://localhost:9000 s3 cp ./q3.pdf s3://reports/

The parts you need to run storage yourself

A key per application
Give each service its own key with read, write or owner rights per bucket. Disabling a key takes effect immediately.
A web console
Browse, upload and share objects, and manage keys and their bucket permissions, from the admin port.
Checksummed blocks
Every block carries a CRC32C checksum and is re-read every week, so disk corruption is found before you need the data.
Built to be watched
Prometheus metrics, health endpoints for load balancers, and JSON access logs with a request id on every line.
HTTPS without restarts
TLS for the S3 and admin APIs. Renewed certificates are picked up within a minute.

Where it stands

The first version is complete for a single node, but not yet proven in production. CI runs the AWS CLI, boto3 and rclone against a live server, plus 239 of Ceph's s3-tests. Replication, versioning and encryption at rest are on the roadmap.

Aether is open source under the MIT license.