feat(docker): replace minio with rustfs for s3

Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
This commit is contained in:
Rodney Osodo
2025-12-08 20:10:40 +00:00
parent 2cf10f887b
commit 4936ff88c7
4 changed files with 68 additions and 30 deletions
+5 -4
View File
@@ -88,10 +88,6 @@ KENER_POSTGRES_PASSWORD=""
KENER_POSTGRES_DB=""
KENER_POSTGRES_URL=""
## MINIO
MINIO_ROOT_USER=""
MINIO_ROOT_PASSWORD=""
## ATUIN
ATUIN_HOST=""
ATUIN_PORT=""
@@ -123,3 +119,8 @@ DAWARICH_POSTGRES_URL="postgresql://${DAWARICH_POSTGRES_USER}:${DAWARICH_POSTGRE
### DAWARICH REDIS
DAWARICH_REDIS_PASSWORD=""
DAWARICH_REDIS_URL=redis://dawarich-redis:6379
### RUSTFS
RUSTFS_ACCESS_KEY=""
RUSTFS_SECRET_KEY=""
RUSTFS_REDIS_PASSWORD=""
+3 -3
View File
@@ -70,9 +70,6 @@ include:
- path: ./watcharr/docker-compose.yaml
project_directory: ..
env_file: .env
- path: ./minio/docker-compose.yaml
project_directory: ..
env_file: .env
- path: ./atuin/docker-compose.yaml
project_directory: ..
env_file: .env
@@ -85,3 +82,6 @@ include:
- path: ./dawarich/docker-compose.yaml
project_directory: ..
env_file: .env
- path: ./rustfs/docker-compose.yaml
project_directory: ..
env_file: .env
-23
View File
@@ -1,23 +0,0 @@
services:
minio:
image: quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z
container_name: minio
restart: unless-stopped
networks:
- homelab-network
security_opt:
- no-new-privileges:true
command: server /data --console-address ":9001"
ports:
- 4050:9000
- 4051:9001
environment:
- MINIO_ROOT_USER=${MINIO_ROOT_USER}
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 5s
timeout: 5s
retries: 5
volumes:
- ~/docker-volumes/minio:/data
+60
View File
@@ -0,0 +1,60 @@
services:
rustfs:
container_name: rustfs
image: rustfs/rustfs:latest
restart: unless-stopped
networks:
- homelab-network
security_opt:
- no-new-privileges:true
ports:
- "5010:5010" # S3 API port
- "5011:5011" # Console port
environment:
- RUSTFS_ADDRESS=0.0.0.0:5010
- RUSTFS_CONSOLE_ADDRESS=0.0.0.0:5011
- RUSTFS_CONSOLE_ENABLE=true
- RUSTFS_EXTERNAL_ADDRESS=:5010 # Same as internal since no port mapping
- RUSTFS_CORS_ALLOWED_ORIGINS=*
- RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS=*
- RUSTFS_ACCESS_KEY=${RUSTFS_ACCESS_KEY}
- RUSTFS_SECRET_KEY=${RUSTFS_SECRET_KEY}
- RUSTFS_OBS_LOGGER_LEVEL=info
# Object Cache
- RUSTFS_OBJECT_CACHE_ENABLE=true
- RUSTFS_OBJECT_CACHE_TTL_SECS=300
volumes:
- ~/docker-volumes/rustfs/data:/data
- ~/docker-volumes/rustfs/logs:/app/logs
healthcheck:
test:
[
"CMD",
"sh",
"-c",
"curl -f http://localhost:5010/health && curl -f http://localhost:5011/rustfs/console/health",
]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
rustfs-redis:
container_name: rustfs-redis
image: redis:7.4-alpine
restart: unless-stopped
networks:
- homelab-network
security_opt:
- no-new-privileges:true
command: /bin/sh -c "redis-server --requirepass ${RUSTFS_REDIS_PASSWORD}"
volumes:
- ~/docker-volumes/rustfs/redis:/data
environment:
- REDIS_PASSWORD=${RUSTFS_REDIS_PASSWORD}
healthcheck:
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
interval: 10s
retries: 5
start_period: 30s
timeout: 10s