---
title: "Deploy Jitsi Meet | (Just Updated) Self-Hosted Video Calls, Users via Env Var"
description: "Self-hosted video calls. Add users by setting one env var, no admin login"
category: "Other"
url: https://railway.com/deploy/jitsi-meet
---

# Deploy Jitsi Meet | (Just Updated) Self-Hosted Video Calls, Users via Env Var

Self-hosted video calls. Add users by setting one env var, no admin login

**[Deploy Jitsi Meet | (Just Updated) Self-Hosted Video Calls, Users via Env Var on Railway](https://railway.com/template/jitsi-meet)**

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

## Template content

### jvb

- **Image:** jitsi/jvb:stable-11031

### prosody

- **Image:** jitsi/prosody:stable-11031
- **Start command:** `/bin/sh -c '(i=0; while [ ! -f /config/prosody.cfg.lua ] && [ $i -lt 60 ]; do i=$((i+1)); sleep 2; done; sleep 5; echo "$PROSODY_USERS" | tr "," "\n" | while IFS=: read -r u p; do [ -n "$u" ] || continue; prosodyctl --config /config/prosody.cfg.lua deluser "$u@$XMPP_DOMAIN" >/dev/null 2>&1; prosodyctl --config /config/prosody.cfg.lua register "$u" "$XMPP_DOMAIN" "$p" && echo "[users] registered $u" || echo "[users] FAILED $u"; done) & exec /init'`

### web

- **Image:** jitsi/web:stable-11031
- **Public domain:** Yes

### jicofo

- **Image:** jitsi/jicofo:stable-11031

## Documentation

# Deploy and Host Jitsi Meet on Railway

Jitsi Meet is a free, open-source video conferencing platform — no per-seat licence,
no call-time limit, no account required for guests. This template deploys the full
stack (web, Prosody XMPP, Jicofo, JVB) with authentication switched on, so only
users you register can start a meeting.

## About Hosting Jitsi Meet

Jitsi Meet normally needs four coordinated services talking to each other over
internal XMPP: a web frontend, an XMPP server (Prosody), a conference focus
component (Jicofo), and a media relay (JVB). This template wires all four
together on Railway's private network and gives you one public URL for the web
frontend.

## Why Deploy Jitsi Meet on Railway

- **Users are created from a single environment variable.** Set `PROSODY_USERS`
  to `user1:pass1,user2:pass2` and redeploy — Prosody registers (or re-registers)
  every account on boot. No admin console, no CLI login required to add a
  colleague.
- **Authentication is on by default.** Only registered users can start a
  meeting; anyone with the link can join as a guest once a meeting is live.
- **No recurring per-seat fee.** Jitsi Meet is Apache-2.0 licensed. You pay for
  compute, not for logins.
- **Private internal networking.** Prosody, Jicofo and JVB talk to each other
  over Railway's private network — only the web frontend is public.

## Common Use Cases

- Internal team video calls without a Zoom/Meet seat-based bill
- Client-facing video calls behind your own domain
- A self-hosted fallback conferencing tool for a small team or community

## Known limitation: UDP media relay

JVB's normal media path uses UDP port 10000. Railway's public networking is
TCP-only, so JVB falls back to its TCP harvester for participants that cannot
reach it directly. Call quality is unaffected for most networks; a small
minority of very restrictive NATs may see reduced quality without a TURN
server in front of it.

## Dependencies for This Setup

### Deployment Dependencies

- [Jitsi Meet](https://jitsi.org) (`jitsi/web`, `jitsi/prosody`, `jitsi/jicofo`, `jitsi/jvb`) — Apache-2.0


## 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/jitsi-meet
