Deploy Alarik | (Just Updated) MinIO Alternative, S3-Compatible Object Storage, Keys Generated

Alarik S3-compatible object storage, MinIO alternative, keys generated

Deploy Alarik | (Just Updated) MinIO Alternative, S3-Compatible Object Storage, Keys Generated

Deploy and Host Alarik on Railway

Built for an LLM agent to deploy and use. There is no wizard and no form to fill in: the S3 access key, the S3 secret key and the console admin password are generated at deploy time, and the contract below lists every URL, variable name and the one script that proves the store works. Create a bucket, put an object, read it back, with nothing but curl.

Alarik is an open-source (Apache-2.0) S3-compatible object storage server written in Swift, with a web console for buckets, objects, users and access keys. It works with the AWS CLI, rclone and any S3 SDK. This template runs the official Alarik 1.0.0-beta-16 server and console images, both pinned by digest, as two services with the server data on a Railway volume.

About Hosting Alarik

This template runs two services. alarik is the S3 API and admin API, with a volume at /app/Storage that holds the bucket data and Alarik's own metadata store, so there is no database to run beside it. console is the web UI and has no state. Three things are handled for Railway:

  • Writable volume. Railway mounts volumes root-owned while the image runs as an unprivileged user, so the volume would be read-only. The service runs as root and logs the owner and writability of /app/Storage at boot.
  • Dual-stack bind. The server listens on :: and port 8080, so the public domain, the healthcheck and the private network all reach it.
  • Generated credentials. DEFAULT_ACCESS_KEY, DEFAULT_SECRET_KEY, ADMIN_PASSWORD and the token signing key JWT are random per deploy, so there is never a well-known credential live on a public URL.

Agent contract

  • Public URL: https:// plus the RAILWAY_PUBLIC_DOMAIN of the alarik service, also published as the variable API_BASE_URL (already including https://). The web console is the public domain of the console service, published as CONSOLE_BASE_URL.
  • Private URL: http://alarik.railway.internal:8080, for services in the same project
  • Credentials: the variables DEFAULT_ACCESS_KEY and DEFAULT_SECRET_KEY on the alarik service for S3, and ADMIN_USERNAME with ADMIN_PASSWORD for the console. They stay the same across redeploys.
  • Auth: AWS Signature V4, service s3, region us-east-1, path-style addressing ($API_BASE_URL/BUCKET/KEY). A request with a wrong key returns 403.
  • Health: GET /livez returns 200, no credentials
# run with API_BASE_URL, DEFAULT_ACCESS_KEY and DEFAULT_SECRET_KEY set (curl 7.75 or newer)
SIG="--aws-sigv4 aws:amz:us-east-1:s3 --user $DEFAULT_ACCESS_KEY:$DEFAULT_SECRET_KEY"
curl -s -o /dev/null -w 'health %{http_code}\n' "$API_BASE_URL/livez"
curl -s -o /dev/null -w 'bad-key %{http_code}\n' --aws-sigv4 aws:amz:us-east-1:s3 --user BADKEY:BADSECRET "$API_BASE_URL/"
curl -s -o /dev/null -w 'create-bucket %{http_code}\n' $SIG -X PUT "$API_BASE_URL/agent-bucket"
curl -s -o /dev/null -w 'put-object %{http_code}\n' $SIG -X PUT --data-binary 'hello from an agent' "$API_BASE_URL/agent-bucket/agent.txt"
curl -s $SIG "$API_BASE_URL/agent-bucket/agent.txt"; echo
curl -s $SIG -G --data-urlencode list-type=2 "$API_BASE_URL/agent-bucket" | grep -o 'agent.txt' | head -1
curl -s -o /dev/null -w 'delete-object %{http_code}\n' $SIG -X DELETE "$API_BASE_URL/agent-bucket/agent.txt"

A fresh deploy prints health 200, bad-key 403, create-bucket 200, put-object 200, hello from an agent, agent.txt and delete-object 204. With the AWS CLI the same store is AWS_ACCESS_KEY_ID=$DEFAULT_ACCESS_KEY AWS_SECRET_ACCESS_KEY=$DEFAULT_SECRET_KEY aws --endpoint-url $API_BASE_URL s3 mb s3://agent-bucket.

Why Deploy Alarik on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Alarik on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

  • Agent-ready - generated keys, a contract block and one working script; no setup wizard.
  • S3 on a public HTTPS URL plus a private URL for services in the same project.
  • Console included as its own service, already pointed at the API.
  • Buckets and objects survive redeploys on the /app/Storage volume.
  • No external database: Alarik keeps its metadata beside the data.

Common Use Cases

  • Self-hosted S3 storage for application uploads and media
  • Backup target for databases and tools such as restic or rclone
  • A MinIO alternative for development, staging and CI
  • Artifact, model and dataset storage for AI agents and data pipelines

Dependencies for Alarik Hosting

  • None outside the template. Alarik runs as an API service with a volume plus a stateless console service.

Deployment Dependencies

Implementation Details

VariablePurpose
DEFAULT_ACCESS_KEYS3 access key, generated per deploy.
DEFAULT_SECRET_KEYS3 secret key, generated per deploy. Keep it server-side.
ADMIN_USERNAMEConsole admin user.
ADMIN_PASSWORDConsole admin password, generated per deploy.
JWTToken signing key, generated per deploy.
API_BASE_URLPublic HTTPS URL of the S3 and admin API.
CONSOLE_BASE_URLPublic HTTPS URL of the console.
RAILWAY_RUN_UIDSet to 0 so the process can write the root-owned volume.

Use path-style addressing and the region us-east-1. Back up the /app/Storage volume before upgrading between beta releases.


Template Content

More templates in this category

View Template
RustFS | (Just Updated) S3 Object Store, Public URL and Keys Set
S3-compatible object store, keys and public URL preset, volume kept

SuperSlowSloth
0
View Template
TimescaleDB
A PostgreSQL-based time-series database for analytics on Railway.

Rakit
1
View Template
Garage S3 Storage
Ultra-light S3 server: fast, open-source, plug-and-play.

PROJETOS
8