Install Riviamigo
This is the quick, self-hosted path—not the developer environment. It pulls published images through the standard Compose stack in compose/.
Before you start
You will need Docker Compose v2, Git, and a trusted host. Read the prerequisites first, especially if the instance will be reachable away from home.
Bring up Riviamigo
-
Clone the repository and enter it:
git clone https://github.com/bballdavis/Riviamigo.gitcd Riviamigo -
Create a
.envfile. The compact Compose template contains only the values a standard install needs; set each placeholder as described in configuration. Do not commit this file.cp compose/.env.example .env -
Start the stack:
docker compose --env-file .env -f compose/docker-compose.yml up -d -
Put an authenticated HTTPS gateway and host firewall rule in front of port
8080, then open that address. Your first account becomes the instance owner and can connect the first Rivian. Use a password with at least 12 characters; the setup screen shows the live requirement as you type.
The standard stack defaults to production mode and publishes port 8080. Follow secure deployment before making it available outside your local network.
Copy the standard Compose file
This is the exact production Compose file from the repository, included at build time so the documentation stays synchronized with the installation source. Copy it into compose/docker-compose.yml if you are working from a downloaded documentation bundle, or use the linked source file directly: compose/docker-compose.yml.
services:
riviamigo:
image: ${RIVIAMIGO_IMAGE_REGISTRY:-ghcr.io/bballdavis}/riviamigo:${IMAGE_TAG:-latest}
restart: unless-stopped
env_file:
- ${RIVIAMIGO_ENV_FILE:-../.env}
depends_on:
timescaledb:
condition: service_healthy
redis:
condition: service_healthy
ports:
- "${RIVIAMIGO_ORIGIN_PORT:-8080}:8080"
networks:
- internal
- proxy
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:8080/health']
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
volumes:
- ${RIVIAMIGO_DATA_DIR:-../data}/backups:/backups
- ${RIVIAMIGO_DATA_DIR:-../data}/cache:/data/cache
deploy:
resources:
limits:
cpus: '1.5'
memory: 640M
reservations:
memory: 160M
timescaledb:
image: timescale/timescaledb:2.28.3-pg18@sha256:2c718e700b1c75b93488085596f2254c991c3aa29584fc282ebbe62fd8335791
restart: unless-stopped
environment:
POSTGRES_DB: riviamigo
POSTGRES_USER: ${POSTGRES_USER:-riviamigo}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
PGDATA: /db
volumes:
- ${RIVIAMIGO_DATA_DIR:-../data}/db:/db
networks:
- internal
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER:-riviamigo} -d riviamigo']
interval: 10s
timeout: 5s
retries: 5
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
memory: 512M
redis:
image: redis:8.8.0-alpine@sha256:9d317178eceac8454a2284a9e6df2466b93c745529947f0cd42a0fa9609d7005
restart: unless-stopped
command:
[
'redis-server',
'--requirepass',
'${REDIS_PASSWORD:?Set REDIS_PASSWORD in .env}',
'--appendonly',
'yes',
]
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD:?Set REDIS_PASSWORD in .env}
volumes:
- ${RIVIAMIGO_DATA_DIR:-../data}/redis:/data
networks:
- internal
healthcheck:
test: ['CMD-SHELL', 'redis-cli --no-auth-warning -a "$$REDIS_PASSWORD" ping']
interval: 10s
timeout: 5s
retries: 5
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
reservations:
memory: 64M
networks:
internal:
driver: bridge
internal: true
proxy:
driver: bridge
Other Compose variants are available when you need them:
docker-compose.build.yml— build the unified production image from the local checkout.docker-compose.dev.yml— start development infrastructure forpnpm dev:stack.