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

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: noreply@yourdomain.com
      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 HODY