Get the source
Clone the repository and open its root directory.
git clone https://github.com/robertvokac/ticket-hub.git
cd ticket-hubYour own instance
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
For TLS proxy, backup, and production requirements, follow the repository's deployment documentation. These steps assume Docker with Compose is installed.
Clone the repository and open its root directory.
git clone https://github.com/robertvokac/ticket-hub.git
cd ticket-hubCopy 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 .envCompose 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 --buildThere 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" --adminPut 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.
Operating choices
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 ↗Common questions
No. An administrator creates accounts in the app or with the command-line tool. Demo accounts are for local development only.
Ticket Hub does not currently include a built-in data migration tool between these databases. Choose the backend before adding production data.
Optional SMTP delivery uses a durable outbox. The HTTP server does not send messages; a separate process runs the process-outbox administration command.
For access beyond the local machine, use a TLS reverse proxy. Set a request body size limit as described in the deployment documentation.