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
postgres
Just deployed
/var/lib/postgresql
hi-events
Just deployed
/app/backend/storage/app
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 theRAILWAY_PUBLIC_DOMAINvalue of thehi-eventsservice (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 fixedadmin@example.com);JWT_SECRET,APP_KEY_SEEDandDATABASE_URLare internal and need not be handled - Auth:
POST /api/auth/loginwith JSONemailandpasswordreturns atoken; send it asAuthorization: Bearer TOKENon every other API call - Health:
GET /api/returns 200 without authentication;GET /api/users/mewithout a token returns 401 andPOST /api/organizerswithout a token returns 401 (write without key: 401)
# 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
postgresservice)
Deployment Dependencies
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.
Template Content
postgres
pgvector/pgvector:pg17