OpenCall

Final check

A checklist to confirm the installation works end to end.

With the deploy done and the variables configured, go through these points. Each item points back to where to go if something fails.

Sign in first. Open the app at its final URL and log in with your own Discord account, before sharing the URL with anyone β€” the first login on an empty database is what creates the ADMIN.

If login fails with redirect_uri_mismatch, the Redirect URI registered on Discord does not match the real URL β€” review step 2 of Set up Discord.

Confirm admin access: open /admin/channels. The administration tabs (Users, Channels) should be there. If you get bounced back to the home page, that account was not the first one in the database β€” check whether someone else logged in before you, or reset the User table and log in again.

Test a voice call: join the Geral voice channel, turn the microphone on and confirm the audio comes through on a second device.

If the connection hangs on "connecting" or drops immediately, review LIVEKIT_URL, LIVEKIT_API_KEY and LIVEKIT_API_SECRET β€” see LiveKit Cloud or self-host. On self-host, the most common cause is the UDP 50000-60000 range blocked by an edge firewall (see the "Ports" section of that page).

If you configured attachment storage: send a message with an image attached in text chat. If the upload fails or the image does not show up, review the variables in Attachment storage β€” the most common mistake is the bucket not being readable publicly (Public Access on R2, --access-level public_read on Neon).

Without storage configured, the expected behaviour is that the attachment button does not appear.

Release access to the rest of the team: in /admin/channels, grant each account that signed in the channel access role. New accounts start with no access.

Optional: infra metrics

If you self-hosted LiveKit, follow infra/vps-metrics/README.md in the app's repo to enable the admin's "Infra" tab (CPU, RAM, disk and bandwidth of the VPS). Without it the app works normally, just without that tab.

Provisioning through AI?

The AI runbook has this same checklist in command form, integrated into the CLI provisioning flow.

On this page