Samir Parikh / Blog

Originally published on 21 February 2020

In my last post, I described how to install The Lounge IRC client on Ubuntu. In this post, thanks to a FreeBSD Forum post by user Trigex, I want to document how to install The Lounge on FreeBSD. I'm going to dispense with a lot of the background information and context that I provided in the previous post and just document the steps you need to take for reference. Trigex does a good job of explaining the steps in the forum post if you need additional detail.

Unless indicated otherwise, this post assumes that you are logged in as root.

Install node:

# pkg install yarn node

Create the user lounger and required directories:

# pw adduser lounger -d /nonexistent -s /usr/sbin/nologin -c "The Lounge User"
# mkdir /usr/local/etc/thelounge
# chown lounger /usr/local/etc/thelounge

Install The Lounge, run it under the newly created user, and create a new The Lounge user:

# yarn global add thelounge
# su -m lounger
$ setenv THELOUNGE_HOME /usr/local/etc/thelounge
$ /usr/local/bin/thelounge start

Press <Ctrl>-C after the text finishes printing.

$ /usr/local/bin/thelounge add newusername
$ exit

Create an rc script which you can control via a service:

# mkdir -p /usr/local/etc/rc.d && vi /usr/local/etc/rc.d/thelounge

Put the following in the script:


. /etc/rc.subr


load_rc_config ${name}



: ${thelounge_enable="NO"}
: ${thelounge_user="lounger"}
: ${thelounge_home="/usr/local/etc/thelounge"}

        cmd="${command} start"
        if thelounge_running; then
                echo "The Lounge is already running!"
                su -m ${thelounge_user} -c "setenv THELOUNGE_HOME ${thelounge_home}; ${cmd} &" > /dev/null 2>&1

        # pretty bad way to do this, but it'll work lol
        if thelounge_running; then
                pgrep -u ${thelounge_user} | xargs -I _ kill -s SIGINT _
                echo "The Lounge isn't currently running!"

        if thelounge_running; then
                echo "The Lounge is up and running!"
                echo "The Lounge isn't currently running! Aww!"

        pids=$(pgrep -u ${thelounge_user})
        [ ! -z "$pids" ] && return 0 || return 1

run_rc_command "$1"

Make the script executable, enable the The Lounge service and start The Lounge:

# chmod +x /usr/local/etc/rc.d/thelounge
# sysrc thelounge_enable="YES"
# service thelounge start

Make sure port 9000 is open on your firewall (if applicable) and visit to confirm that you can access the site.

To enable the reverse proxy and HTTPS, first install and configure NGINX:

# sudo pkg install nginx
# sudo mv /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx.conf.bak

Create a new NGINX configuration file called /usr/local/etc/nginx/nginx.conf with the following:

worker_processes  1;

events {
    worker_connections  1024;

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen 80;
        client_max_body_size 10m;

        location / {
            proxy_http_version 1.1;
            proxy_set_header Connection "upgrade";
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;

Enable and start NGINX:

# sysrc nginx_enable="YES"
# service nginx start

Enable HTTPS via Let's Encrypt and Certbot:

# pkg install py37-certbot-nginx
# certbot --nginx -d

Update The Lounge configuration file located at /usr/local/etc/thelounge/config.js

reverseProxy: true;

https: {
        enable: true,
        key: "/etc/letsencrypt/live/",
        certificate: "/etc/letsencrypt/live/",
        ca: "",

Restart NGINX:

# service nginx restart

You should now be able to visit The Lounge at