Skip to main content

Setup

  1. Add a DNS record pointing call.<domain> to the server:

    • A record: call → <ipv4>
    • AAAA record: call → <ipv6>
  2. In Coolify, go to New Resource → Service, search for Jitsi, set the domain, then deploy. Works with nothing else configured.

Requiring authentication to create a room​

By default (ENABLE_AUTH=0), anyone with the link can start a new room — only joining an already-created one can be password-protected, not creating one in the first place. To lock room creation down to an actual account:

  1. Set ENABLE_AUTH=1 on all three of jitsi-web, prosody, and jicofo — AUTH_TYPE=internal is already set on prosody/jicofo, using Prosody's own built-in user database rather than an external provider.
  2. Leave ENABLE_GUESTS=1 as it already is on jitsi-web/prosody if people without an account should still be able to join a room a moderator already started — set it to 0 on both instead if unauthenticated joins shouldn't be allowed either, not just unauthenticated room creation.
  3. Redeploy, then create at least one moderator account — env vars don't create Prosody users, prosodyctl does. Open the prosody container's own Terminal in Coolify and run:
    prosodyctl --config /config/prosody.cfg.lua register <username> meet.jitsi <password>
    Two real gotchas here, confirmed against an actual deploy:
    • prosodyctl on its own fails with "unable to find the configuration file" — the image generates it at /config/prosody.cfg.lua (matching the jitsi-prosody:/config volume in the compose file), not the default path prosodyctl looks for, so --config has to be explicit and point there.
    • <username> is a JID node, not an email — using one with an @ in it fails with "The given username is invalid in a Jabber ID." Keep it plain: letters, numbers, -/_/. only.
  4. Log in as that user when starting a new room — Jitsi Meet shows a login prompt instead of one-click room creation once ENABLE_AUTH=1 is live.