System requirements

What to provision before installing.

Server

  • A 64-bit Linux host with Docker Engine 24 or later and Docker Compose v2, or any environment that runs OCI containers.
  • 2 CPU cores and 2 GB of memory are enough for a small team; imports of large Jira backups benefit from more memory and fast disk.
  • The image carries Chromium, which prints invoices to PDF. It is started for each invoice and stopped afterwards, so it costs nothing while idle and a few hundred megabytes for a second or two while printing; it runs offline and makes no request of its own.
  • Disk for PostgreSQL (tickets and history are small; a Jira import of 100,000 issues is a few gigabytes) and, when using the bundled RustFS, for attachments.

Services

  • PostgreSQL 14 or later. The bundled compose file runs PostgreSQL 16. When you bring your own, the application needs a database it owns; the migrations create an alba_app role for row-level security when the migrating user is allowed to create roles.
  • S3-compatible object storage for attachments: AWS S3, RustFS, Ceph, Backblaze B2, Cloudflare R2, a MinIO you already run, or similar, with a bucket and an access key. Browsers upload directly to it, so the bucket's address must be reachable from users' browsers and its CORS policy must allow PUT and GET from the application's origin.
  • Typesense 28 or later for search. The bundled compose file runs it as a service; it needs a few hundred megabytes of memory for tens of thousands of tickets and holds derived data only, rebuilt from the database on demand, so it is never backed up.
  • An SMTP server for outgoing email. Without one, login links and invitations cannot be delivered; the bundled Mailpit catches email for evaluation only.

Network

  • Port 4000 on the application container, normally behind a reverse proxy that terminates TLS on 443.
  • WebSocket support on the proxy: LiveView pages need it.
  • Outbound access from the application to the database, the object storage endpoint, the SMTP server and, for single sign-on, the identity provider.

Clustering

For more than one application node, add a private network between the nodes, a load balancer that supports WebSockets and health checks, and a DNS name that resolves to every node. See Clustering.

Browsers

Current versions of Chrome, Firefox, Safari and Edge. JavaScript is required.