Your own instance

From repository to first project

The supported distribution path uses Docker Compose and PostgreSQL. A fresh installation has no users; create the first administrator with the command-line tool.

Getting started

Four steps to a running instance

For TLS proxy, backup, and production requirements, follow the repository's deployment documentation. These steps assume Docker with Compose is installed.

Get the source

Clone the repository and open its root directory.

git clone https://github.com/robertvokac/ticket-hub.git
cd ticket-hub

Set a database password

Copy the sample configuration to .env. Before starting, replace TICKETHUB_POSTGRES_PASSWORD with a strong, unique password. Keep the .env file out of version control.

cp .env.example .env

Start the service

Compose builds the image, starts PostgreSQL, and then starts Ticket Hub. By default, HTTP is available only at 127.0.0.1:8080.

docker compose up -d --build

Create the first administrator

There is no public sign-up. Use a real email address, a name, and a long unique password. Run this in a trusted environment: a supplied password may be recorded in shell history.

docker compose exec ticket-hub ticket-hub-cli create-user \
  "you@example.com" "Your Name" "a sufficiently long password" --admin
Before exposing it publicly

Put a TLS reverse proxy in front of the loopback HTTP port and configure a request body size limit there. The deployment guide covers the remaining production requirements.

Read the full deployment guide ↗

Operating choices

Choose the database for your installation

PostgreSQL is the primary production database. SQLite offers the same user-facing features for a smaller setup with a single server process. There is no built-in migration tool between the two databases.

Attachments are stored on the local filesystem. Backups combine a database dump with the attachment directory; restore during a maintenance window.

Read the README ↗
Primary database
PostgreSQL
Smaller setups
SQLite, one process
Distribution
Docker + Compose
Attachments
Local filesystem

Common questions

Before you deploy

Can people sign up themselves?

No. An administrator creates accounts in the app or with the command-line tool. Demo accounts are for local development only.

Can I switch from SQLite to PostgreSQL later?

Ticket Hub does not currently include a built-in data migration tool between these databases. Choose the backend before adding production data.

Does the app send email itself?

Optional SMTP delivery uses a durable outbox. The HTTP server does not send messages; a separate process runs the process-outbox administration command.

Do I need a reverse proxy?

For access beyond the local machine, use a TLS reverse proxy. Set a request body size limit as described in the deployment documentation.