A single-container web application to manage S3 and SQS resources. S3 browser supports in-place editor with syntax highlighting for known textual formats and image viewer.
- S3 Browser: Browse buckets, view file contents (JSON, XML, YAML, etc.).
- S3 Management: Edit, copy, move, and recursively delete files/folders.
- SQS Management: View queues, send/receive/purge messages.
- Single Container: Frontend and Backend served from one Docker image.
Add the following service to your docker-compose.yml:
services:
rustfs:
image: rustfs/rustfs:latest
environment:
- RUSTFS_ACCESS_KEY=test
- RUSTFS_SECRET_KEY=test
ports:
- "9000:9000"
elasticmq:
image: softwaremill/elasticmq-native:latest
ports:
- "9324:9324"
s3uitool:
image: ghcr.io/mihasic/s3uitool:latest
ports:
- "8000:8000"
environment:
- AWS_S3_ENDPOINT_URL=http://rustfs:9000
- AWS_SQS_ENDPOINT_URL=http://elasticmq:9324
- AWS_DEFAULT_REGION=us-east-1
- AWS_ACCESS_KEY_ID=test
- AWS_SECRET_ACCESS_KEY=test
depends_on:
- rustfs
- elasticmqIf you want to run the container using your local AWS CLI credentials (including SSO), copy the content of the scripts/ directory (including docker-compose.yml) to your local machine and run:
Linux / macOS:
./start.shWindows:
.\start.ps1These scripts automatically export your current AWS session credentials and pass them to the container.
| Environment Variable | Default | Description |
|---|---|---|
AWS_S3_ENDPOINT_URL |
http://localhost:9000 |
URL of the S3 endpoint (e.g., RustFS). |
AWS_SQS_ENDPOINT_URL |
http://localhost:9324 |
URL of the SQS endpoint (e.g., ElasticMQ). |
AWS_ENDPOINT_URL |
None |
Legacy shared endpoint (backward compatibility). Used for both services only when service-specific endpoints are not set. |
AWS_DEFAULT_REGION |
us-east-1 |
AWS Region. |
AWS_ACCESS_KEY_ID |
test |
AWS Access Key ID. |
AWS_SECRET_ACCESS_KEY |
test |
AWS Secret Access Key. |
ENABLE_S3 |
true |
Enable S3 features. |
ENABLE_SQS |
true |
Enable SQS features. |
Endpoint precedence:
AWS_S3_ENDPOINT_URLfor S3 andAWS_SQS_ENDPOINT_URLfor SQSAWS_ENDPOINT_URLas a shared fallback for both services
- Docker
- Docker Compose
- Bun (for local frontend dev)
- uv (for local backend dev)
Create a .env file in the project root to configure local S3/SQS endpoints for development:
AWS_S3_ENDPOINT_URL=http://localhost:9000
AWS_SQS_ENDPOINT_URL=http://localhost:9324
AWS_DEFAULT_REGION=us-east-1
AWS_ACCESS_KEY_ID=test
AWS_SECRET_ACCESS_KEY=testapi/: Python FastAPI backendapp/: React/Vite frontende2e/: Playwright End-to-End tests
cd api
uv sync
uv run fastapi dev src/main.py --port 8000cd app
bun install
bun run devRun from the root or api directory:
# From root
PYTHONPATH=api/src uv run --directory api pytest
# From api directory
cd api
PYTHONPATH=src uv run pytestRequires backend and frontend to be running (or configured in playwright.config.ts).
The default config starts the frontend automatically but expects the backend to be running on port 8000.
- Start Backend:
cd api && uv run fastapi dev src/main.py --port 8000
- Run Tests (from
e2edirectory):cd e2e npx playwright test
To release a new version:
- Go to the "Actions" tab in GitHub.
- Select the "Release" workflow.
- Click "Run workflow".
- Enter the version tag (e.g.,
0.1.0). - The workflow will build the Docker image and push it to GHCR.
MIT

