Guide d’installation The Lounge

The Lounge est un client IRC web moderne, accessible depuis n’importe quel navigateur, toujours en ligne, multi-utilisateurs et simple à maintenir.

Prérequis

  • Un serveur Linux (Debian/Ubuntu conseillé) avec accès SSH.
  • Node.js LTS (18+ recommandé) et npm installés.
  • Un utilisateur non-root dédié (ex. thelounge).
  • (Optionnel) Nginx ou Apache2 pour servir en HTTPS (reverse proxy).

Installer Node.js (si besoin)

Sur Debian/Ubuntu, via les dépôts :

sudo apt update && sudo apt install -y nodejs npm

Astuce : utilise nvm si tu veux gérer plusieurs versions de Node.js.

Installer The Lounge

Installation globale pour rendre la commande thelounge disponible partout :

sudo npm install -g thelounge

Créer un utilisateur dédié (recommandé) :

sudo useradd -m -s /bin/bash thelounge

Configuration & premier utilisateur

Connecte-toi en tant qu’utilisateur thelounge puis crée ton compte :

sudo -iu thelounge
thelounge add admin

Démarrer en mode “daemon” :

thelounge start

Par défaut, The Lounge écoute sur 127.0.0.1:9000. On va publier derrière Nginx ou Apache2 en HTTPS.

Se connecter à irc.discut.biz

Depuis l’interface web de The Lounge, ajoute ce réseau :

  • Serveur : irc.discut.biz
  • Port : 6697
  • SSL/TLS : Activé
  • Auto-join : #Aide (et tes salons)
  • Identité : ton pseudo (option : IDENTIFY NickServ)

Démarrage automatique (systemd)

1) Créer le service

sudo nano /etc/systemd/system/thelounge.service

2) Contenu

[Unit]
Description=The Lounge IRC Web Client
After=network.target

[Service]
Type=simple
User=thelounge
Group=thelounge
ExecStart=/usr/bin/thelounge start --home /home/thelounge/.thelounge
Restart=always
RestartSec=5
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

3) Activer & démarrer

sudo systemctl daemon-reload
sudo systemctl enable thelounge
sudo systemctl start thelounge
sudo systemctl status thelounge --no-pager

Reverse proxy Nginx (HTTPS)

1) Installer Nginx

sudo apt install -y nginx

2) VHost HTTP ➜ proxy local 9000

sudo nano /etc/nginx/sites-available/thelounge.conf
server {
  listen 80;
  server_name thelounge.discut.biz;

  location / {
    proxy_pass http://127.0.0.1:9000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}
sudo ln -s /etc/nginx/sites-available/thelounge.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

3) HTTPS Let’s Encrypt

Avec certbot :

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d thelounge.discut.biz

Ajoute l’entré DNS A/AAAA de thelounge.discut.biz vers ton serveur.

Reverse proxy Apache2 (HTTPS)

1) Activer les modules requis

sudo a2enmod proxy proxy_http proxy_wstunnel headers ssl
sudo systemctl restart apache2

2) VHost HTTP ➜ proxy local 9000

Crée le vhost et pointe-le sur l’instance The Lounge locale :

sudo nano /etc/apache2/sites-available/thelounge.conf
<VirtualHost *:80>
  ServerName thelounge.discut.biz

  ProxyPreserveHost On
  ProxyRequests Off

  # HTTP (backend The Lounge)
  ProxyPass        / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/

  # WebSocket (socket.io)
  ProxyPass        /socket.io/ ws://127.0.0.1:9000/socket.io/
  ProxyPassReverse /socket.io/ ws://127.0.0.1:9000/socket.io/

  RequestHeader set X-Forwarded-Proto "http"
  RequestHeader set X-Forwarded-For   "%{REMOTE_ADDR}s"
</VirtualHost>
sudo a2ensite thelounge.conf
sudo apache2ctl configtest && sudo systemctl reload apache2

3) HTTPS Let’s Encrypt

Le plus simple avec certbot :

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d thelounge.discut.biz

(Option) VHost HTTPS manuel

<VirtualHost *:443>
  ServerName thelounge.discut.biz
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/thelounge.discut.biz/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/thelounge.discut.biz/privkey.pem

  ProxyPreserveHost On
  ProxyRequests Off

  ProxyPass        / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/

  ProxyPass        /socket.io/ ws://127.0.0.1:9000/socket.io/
  ProxyPassReverse /socket.io/ ws://127.0.0.1:9000/socket.io/

  RequestHeader set X-Forwarded-Proto "https"
  RequestHeader set X-Forwarded-For   "%{REMOTE_ADDR}s"

  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</VirtualHost>

4) Recharger Apache

sudo apache2ctl configtest && sudo systemctl reload apache2

Utilise **Nginx OU Apache**, pas les deux sur 80/443 en même temps.

Sécurité & bonnes pratiques

  • Compte dédié thelounge, jamais en root.
  • Expose uniquement via HTTPS (Nginx/Apache + Let’s Encrypt).
  • Mots de passe forts pour les utilisateurs The Lounge.
  • Mets à jour régulièrement The Lounge et Node.js.

Besoin d’aide ?