Getting started
Upvora runs as a single container next to a Postgres database. The fastest path is the bundled Compose file, which also wires up the one-click updater.
Requirements
- A host with Docker and Docker Compose.
- A domain (or subdomain) and a TLS-terminating proxy in front — Traefik, Caddy, nginx, or a Cloudflare tunnel.
- An email sender: SMTP, Mailgun, Amazon SES, or Resend.
Quick start
# grab the compose file
curl -LO https://raw.githubusercontent.com/hodyhq/Upvora/main/docker-compose.example.yml
mv docker-compose.example.yml docker-compose.yml
# edit BASE_URL, secrets and email, then:
docker compose up -d
The app serves on port 3000; migrations run automatically on boot. Point your proxy at it and open BASE_URL. The first account to sign up becomes the administrator.
Minimal hand-rolled compose
If you'd rather not use the updater sidecar:
services:
db:
image: postgres:17
environment:
POSTGRES_USER: upvora
POSTGRES_PASSWORD: change-me
POSTGRES_DB: upvora
volumes: [db-data:/var/lib/postgresql/data]
app:
image: ghcr.io/hodyhq/upvora:latest # or pin a tag, e.g. :v0.38.0.6.0
depends_on: [db]
ports: ["3000:3000"]
environment:
BASE_URL: https://feedback.yourdomain.com
DATABASE_URL: postgres://upvora:change-me@db:5432/upvora?sslmode=disable
JWT_SECRET: generate-a-long-random-secret
EMAIL_NOREPLY: [email protected]
EMAIL_SMTP_HOST: smtp.yourprovider.com
EMAIL_SMTP_PORT: "587"
EMAIL_SMTP_USERNAME: your-smtp-user
EMAIL_SMTP_PASSWORD: your-smtp-password
EMAIL_SMTP_ENABLE_STARTTLS: "true"
volumes:
db-data:
Building from source? docker build -t upvora . in the repo produces the same image.
Next
See Configuration for the full environment-variable reference (email providers, OAuth, metrics), and Self-hosting for TLS, backups, and updates.
Upvora is open source under AGPL-3.0 — a friendly fork of Fider, not affiliated with it.
· Built & maintained by