Docker Compose
This guide shows you the steps to deploy a self-hosted instance of Miru using Docker Compose.
Prerequisites
Before we start, you need to make sure you have a VPS or on-prem machine with:
- 2 vCPUs
- 2GB of RAM
- Docker and Docker Compose
Installation
By far, the easiest way to get started with Miru is to use Docker Compose. The Miru repository comes with a docker-compose.yml
file that you can use as a template.
Create a new docker-compose.yml
file:
volumes:
database:
minio:
services:
database:
container_name: database
image: postgres:17.3
ports:
- "5432:5432"
volumes:
- database:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: VerySecurePassword123
POSTGRES_USER: miru
POSTGRES_DB: miru
minio:
container_name: minio
image: bitnami/minio
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio:/bitnami/minio/data
environment:
- MINIO_ROOT_USER=miru
- MINIO_ROOT_PASSWORD=VerySecurePassword123
- MINIO_DEFAULT_BUCKETS=public
monitor:
container_name: monitor
image: ghcr.io/nord-studio/miru/monitor:latest
ports:
- "8080:8080"
environment:
- DATABASE_URL=postgresql://miru:VerySecurePassword123@database:5432/miru
- DATABASE_SSL=false
depends_on:
- database
- web
web:
container_name: web
image: ghcr.io/nord-studio/miru/web:latest
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://miru:VerySecurePassword123@database:5432/miru
- DATABASE_SSL=false
- S3_ENDPOINT=minio
- S3_PORT=9000
- S3_SECURE=false
- S3_ACCESS_KEY=
- S3_SECRET_KEY=
- BETTER_AUTH_SECRET=secret
- APP_DOMAIN=status.example.com
- MONITOR_URL=http://monitor:8080
- ENABLE_EMAIL=false
- EMAIL_VERIFICATION=false
- SMTP_HOST=
- SMTP_PORT=
- SMTP_SECURE=
- SMTP_USER=
- SMTP_PASSWORD=
- SMTP_FROM=
depends_on:
- database
- minio
Run the following command to spin up the containers:
docker compose up -d
Navigate to your servers IP on port 3000
in your browser to access the Miru dashboard. You should see the welcome screen as seen below.