Deployment
Live docs URL: https://mrgionsi.github.io/ring-intercom-control/
Docker images
The project publishes two images:
- backend:
ghcr.io/mrgionsi/ring-intercom-control-backend - frontend:
ghcr.io/mrgionsi/ring-intercom-control-frontend
Tags include package version, sha-based tags, and optional manual release tags.
Docker Compose
Use docker-compose/docker-compose.yml with docker-compose/.env.
For a complete variable reference, see Environment Variables.
cd docker-compose
docker compose up -d
Required backend environment
SESSION_SECRETMASTER_KEY(base64, 32-byte decoded key)ADMIN_USERNAMEADMIN_PASSWORD_HASH
Variable details and generation
-
SESSION_SECRET- Purpose: signs and verifies session cookies.
- Generate:
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
-
MASTER_KEY- Purpose: encrypts stored Ring refresh tokens (AES-256-GCM).
- Must decode to exactly 32 bytes.
- Generate:
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
- Validate length:
node -e "const k=process.env.MASTER_KEY||''; console.log(Buffer.from(k,'base64').length)"- expected output:
32
-
ADMIN_USERNAME- Purpose: bootstrap administrator login username.
- Example:
admin
-
ADMIN_PASSWORD_HASH- Purpose: bcrypt hash used to verify admin password.
- Generate hash (from backend directory):
npm run hash-password -- yourStrongPassword
Production checklist
- Run behind HTTPS reverse proxy
- Set
CLIENT_ORIGINto real public frontend origin - Protect secrets via secret manager
- Back up SQLite volume regularly
- Monitor logs and failed auth attempts