<a href="https://github.com/sinamics/torqvoice">
<img src="assets/logo/torqvoice_app_logo_padding.png" alt="Torqvoice Logo" width="120" height="120">
</a>
Torqvoice, modern workshop and service management.
<br />
<br />
<a href="https://github.com/sinamics/torqvoice/issues/new?labels=bug&template=bug_template.yml&title=%5BBug%5D%3A+">Bug Report</a>
·
<a href="https://github.com/sinamics/torqvoice/issues/new?labels=enhancement&template=feature_request.yml&title=%5BFeature+Request%5D%3A+">Feature Request</a>
Torqvoice is a self-hosted workshop management platform built for automotive service businesses. It replaces scattered tools with a single place to manage customers, vehicles, service records, quotes, invoicing, inventory, billing all with a clean modern UI.
For full setup instructions, see the Installation Guide.
Create a docker-compose.yml:
services:
app:
image: ghcr.io/torqvoice/torqvoice:latest
restart: unless-stopped
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://torqvoice:torqvoice@db:5432/torqvoice
- BETTER_AUTH_SECRET=change-me-run-openssl-rand-hex-32
- NEXT_PUBLIC_APP_URL=http://localhost:3000
volumes:
- uploads:/app/data/uploads
depends_on:
db:
condition: service_healthy
db:
image: postgres:16-alpine
restart: unless-stopped
volumes:
- postgres-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: torqvoice
POSTGRES_PASSWORD: torqvoice
POSTGRES_DB: torqvoice
healthcheck:
test: ["CMD-SHELL", "pg_isready -U torqvoice"]
interval: 5s
timeout: 5s
retries: 5
volumes:
postgres-data:
uploads:
# Generate a proper auth secret, and replace the placeholder in the compose file
openssl rand -hex 32
# Start everything
docker compose up -d
Open http://localhost:3000 and create your first account.
| Variable | Required | Description |
|---|---|---|
DATABASE_URL |
Yes | PostgreSQL connection string |
BETTER_AUTH_SECRET |
Yes | Auth secret (openssl rand -hex 32) |
NEXT_PUBLIC_APP_URL |
Yes | Application URL |