---
title: "Deploy Hi.Events | (Just Updated) Open Source Eventbrite Alternative, Ticketing with Postgres, Admin Pre-Set"
description: "Hi.Events event ticketing software: sell tickets, manage events, self-host"
category: "Other"
url: https://railway.com/deploy/hievents-or-just-updated-open-source-eve
---

# Deploy Hi.Events | (Just Updated) Open Source Eventbrite Alternative, Ticketing with Postgres, Admin Pre-Set

Hi.Events event ticketing software: sell tickets, manage events, self-host

**[Deploy Hi.Events | (Just Updated) Open Source Eventbrite Alternative, Ticketing with Postgres, Admin Pre-Set on Railway](https://railway.com/template/hievents-or-just-updated-open-source-eve)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/hievents-or-just-updated-open-source-eve/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** Other

## Template content

### postgres

- **Image:** pgvector/pgvector:pg17@sha256:7d0a41464797aeb9862dfdc0bbf1526b82cfd324cdd8036df19e3545f4a9ccb8

### hi-events

- **Image:** ghcr.io/bon5co/hi-events-railway:latest@sha256:13fd5b945b43e0c0dc4ac57bed249fe88ada58018abea29dd35cc1db2481a0c4
- **Health check:** /api/
- **Public domain:** Yes

## Documentation

# Deploy and Host Hi.Events on Railway

**Built for an LLM agent to deploy and use.** The deploy form has no fields. Hi.Events, the open-source event ticketing and management platform (an Eventbrite alternative), comes up with a Postgres database, an administrator account already created from a generated password, public registration closed, and a public HTTPS address. The contract below lists every address, variable name and one script that logs in and creates an organizer through the API.

Hi.Events here is the official `daveearley/hi.events-all-in-one` image, version 2.2.0 (Laravel API, Node frontend, nginx), behind a thin wrapper pinned by digest.

## About Hosting Hi.Events

This template runs two services: Hi.Events (wrapper image) and Postgres 17. On every boot the wrapper binds nginx to Railway's port, derives the public address from the service domain, derives the application key from `APP_KEY_SEED`, waits for Postgres, runs the migrations, and creates the administrator `admin@example.com` with the password `ADMIN_PASSWORD` if no user exists yet. Redeploys keep the data: Postgres has a volume at `/var/lib/postgresql` and uploaded images live on a volume at `/app/backend/storage/app`, which is write-tested at boot. Sign-up of new accounts is closed (`APP_DISABLE_REGISTRATION=true`); the administrator invites others from the dashboard. Background jobs run inline (sync queue) and mail goes to the service log until you set `MAIL_*` variables. Stripe payments are off until you add your own `STRIPE_*` keys.

### Agent contract

- Public URL: `https://` plus the `RAILWAY_PUBLIC_DOMAIN` value of the `hi-events` service (dashboard at `/`, API at `/api`)
- Private URL: `http://hi-events.railway.internal:8080`
- Credentials: `ADMIN_PASSWORD` (password of the administrator, generated, 32 characters; the login email is the fixed `admin@example.com`); `JWT_SECRET`, `APP_KEY_SEED` and `DATABASE_URL` are internal and need not be handled
- Auth: `POST /api/auth/login` with JSON `email` and `password` returns a `token`; send it as `Authorization: Bearer TOKEN` on every other API call
- Health: `GET /api/` returns 200 without authentication; `GET /api/users/me` without a token returns 401 and `POST /api/organizers` without a token returns 401 (write without key: 401)

```bash
# needs: HOST (RAILWAY_PUBLIC_DOMAIN of the hi-events service) and ADMIN_PASSWORD from its variables
API="https://$HOST/api"
curl -s -o /dev/null -w "health: %{http_code}\n" "$API/"
curl -s -o /dev/null -w "read without key: %{http_code}\n" -H 'Accept: application/json' "$API/users/me"
curl -s -o /dev/null -w "write without key: %{http_code}\n" -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{"name":"x","email":"x@example.com","currency":"USD","timezone":"UTC"}' "$API/organizers"
TOKEN=$(curl -s -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{"email":"admin@example.com","password":"'"$ADMIN_PASSWORD"'"}' "$API/auth/login" | sed -n 's/.*"token":"\([^"]*\)".*/\1/p')
curl -s -o /dev/null -w "read with key: %{http_code}\n" -H "Authorization: Bearer $TOKEN" -H 'Accept: application/json' "$API/users/me"
curl -s -o /dev/null -w "create organizer: %{http_code}\n" -X POST -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{"name":"Agent Organizer","email":"organizer@example.com","currency":"USD","timezone":"UTC"}' "$API/organizers"
```

A fresh deploy prints `health: 200`, `read without key: 401`, `write without key: 401`, `read with key: 200`, `create organizer: 201`. Running it again adds another organizer and still returns 201.

## Why Deploy Hi.Events on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Hi.Events on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

- **Agent-ready** - no deployer fields, a contract block and one working login-and-create script.
- **Admin pre-set** - the administrator is created at first boot from a generated password; no sign-up screen to click through.
- **Persistent** - Postgres and uploads sit on volumes, and the application key is derived from a stored secret so sessions and encrypted data survive redeploys.
- **Closed by default** - public registration is off, so strangers cannot open accounts on your instance.

## Common Use Cases

- **Sell tickets for meetups, conferences and workshops** without a per-ticket marketplace fee.
- **Run check-in** with attendee lists and QR-code tickets.
- **Event pages with your own domain** for community groups, clubs and venues.
- **Ticketing API for your own code** - create events, products and orders from an application or an AI agent.

## Dependencies for Hi.Events Hosting

- Postgres (included as the `postgres` service)

### Deployment Dependencies

- [Hi.Events repository](https://github.com/HiEventsDev/hi.events)
- [Hi.Events documentation](https://hi.events/docs)
- [Wrapper image source](https://github.com/bon5co/hi-events-railway)

### Implementation Details

| Variable | Purpose |
| --- | --- |
| `ADMIN_PASSWORD` | Generated password of the administrator `admin@example.com`. Used only when the database has no user. |
| `JWT_SECRET` | Generated signing secret for API tokens. |
| `APP_KEY_SEED` | Generated seed the application key is derived from. Do not change it after first boot. |
| `DATABASE_URL` | Connection string to the `postgres` service over the private network. |

The service listens on Railway's `PORT` (8080). Add `MAIL_MAILER`, `MAIL_HOST` and related variables to send real email, and `STRIPE_*` keys to take card payments.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/hievents-or-just-updated-open-source-eve
