ircbits.com

Docs / The Lounge setup guide: self-hosted web IRC that stays online

The Lounge setup guide: self-hosted web IRC that stays online

Updated June 4, 2026

The Lounge solves IRC persistence by being both halves at once: a web client and the always-connected server side, in one Node.js app. Install it on any small server and every browser — laptop, phone, work machine — opens the same session, with shared history and push notifications. No separate bouncer, no desktop installs.

1. Install

Two equally good routes:

# Node route
sudo npm install -g thelounge
thelounge start

# Docker route
docker run -d -p 9000:9000 -v ~/.thelounge:/var/opt/thelounge ghcr.io/thelounge/thelounge

The Lounge listens on port 9000. Create your account (private mode is the default — each user logs in and gets their own persistent IRC connections):

thelounge add yourname

2. Put it behind a reverse proxy

Run it behind nginx/Caddy with a real certificate, both for TLS and because push notifications require a secure origin:

server {
    server_name irc.example.com;
    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    # plus your TLS config / certbot
}

The WebSocket upgrade headers are the part people forget; without them the client never connects.

3. Connect to networks

Log in at your URL, add a network (e.g. irc.libera.chat, port 6697, TLS), enable SASL with your account, join channels. Connections persist when you close the tab — that is the entire point. On a phone, "Add to home screen" makes it a respectable PWA with push notifications.

4. Settings worth changing

In ~/.thelounge/config.js:

  • maxHistory — how many messages per channel are kept in memory.
  • messageStorage: ["sqlite", "text"] — persistent, searchable history on disk; the sqlite store is what makes scrollback survive restarts.
  • fileUpload — The Lounge can host image/file uploads for sharing into channels (links, not DCC); enable with size limits if you want it.
  • public: false — keep it private unless you deliberately run a drop-in webchat for your community or your own server.

The trade-off

Compared to soju or ZNC, The Lounge locks you to its own (good) web UI — other IRC clients cannot connect through it. If you live in a browser and a phone, that is no loss at all, and the polish is excellent. If you also want your terminal client attached to the same session, soju is the architecture you want instead.