HAVEN CHAT
Haven is a voice, video, and text chat service that can be self hosted, unlike its inspiration Discord.
The two sections here refer to either the client side or server side components. If you are joining another server you do not need your own server. But if you do want to host your own, the instructions to replicate what I did are below.
If you have been forwarded here:
- Install an appropriate client
- Register
- Login and do a quick mic/camera config
- Yap/Chat/Lurk away.
HAVEN CLIENT
1a. GNU/LINUX & WINDOWS CLIENTS
- GNU/Linux or Windows client : https://github.com/ancsemi/Haven-Desktop/releases/latest
- Web Client is baked into each server, goto the server address in your browser to use the web client : haven.schotty.com
1b. ANDROID CLIENT
1c. iOS CLIENT
- None at the moment. Use web client : haven.schotty.com
2. REGISTER
Once in the client, there will be the option to Login, Register, or Link Server. Select Register and enter username and password.
3. LOGIN
In the client, there will be the option to Login, Register, or Link Server. Select Login and enter username and password.
4. AUDIO & VIDEO SETUP
In the bottom right of the window, there is a gear icon that is for configuring your audio and video settings and devices.
Also in the bottom right of the window is a "Settings" button. Go there for all the other configurables, including your keybinds -- which are in the "Shortcuts" section.
HAVEN NOTEWORTHY POINTS
-
Since this is entirely a private server, any channel you wish to use may be invite only, with the exception of channels you create, in which you are automatically added. Currently, most of the channels on haven.schotty.com are public and you will automatically be added when your account is created or when the channel is created. If there are any issues with access, contact me.
-
You can share a direct link to the chat channel, or use an invite code.
-
There is no password recovery. Save your recovery info. Use a password manager to remember things if need be. LastPass is great at this, as is Firefox, Chrome, and Bitwarden. Use one, or more, as the admin cannot recover your password.
-
Audio & video is done peer-to-peer, and normally should work without issues. If your ISP is using CGNAT, this may be a problem for you. Contact me to setup and enable the built in TURN server, which will resolve this issue. Most folks in the USA are not going to have this issue, mostly EU nations at this point in time. But the future may bring CGNAT to the US.
HAVEN SERVER
This is the Haven server side setup that I use. These notes are sanitized, so do read over what is being copied/pasted and correct things as appropriate.
If you plan on using a custom domain and an ssl cert, add it to your dns/registrar, and make sure to acquire your cert, whether thru your registrar or LetsEncrypt. If you are looking to have a server that does more than just Haven, you will want to use a proxy of some sort. I use Apache, thus the config I have is provided.
1. PODMAN SYSTEMD CONTAINER FILE
Make /etc/containers/systemd/haven.container with the following (edit ports and such accordingly)
[Container]
ContainerName=haven
Image=ghcr.io/ancsemi/haven:latest
PublishPort=3000:3000
Volume=/opt/docker/haven/haven_data:/data
Environment=SERVER_NAME=My Haven Instance
Environment=ADMIN_USERNAME=your_username_of_choice
2. REFRESH SYSTEMD'S KNOWLEDGE OF UNITFILES
sudo systemctl daemon-reload
3. START & ENABLE HAVEN SERVICE
sudo systemctl start haven
sudo systemctl enable haven
4a. SETUP SSL PROXY VIA APACHE (OPTIONAL)
This and the following step is only needed for SSL. Doing this will make Firefox, Edge, Chrome, etc happy with a secure connection and provide better end-end security. One may run Haven without ssl, just pointless to not do so as proper encryption is a few moments away. With the proxy, you can have one cert handle everything. Do note, that if you are using a subdomain, as I do, you will need to have that subdomain added to the cert. LetsEncrypt makes it easy with appending any number of new domains to the existing cert. Or you can just get a brand new one with all the domains there.
This entire config is presuming you are using Haven on the default port of 3000. If you are not using 3000, but rather something else, change it in the proxy config, otherwise you will not be proxying traffic to/from haven.
<VirtualHost *:80>
ServerName servername.com
# Optional: if you ever add aliases
# ServerAlias www.servername.com
Redirect permanent / https://servername.com/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName servername.com
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/servername/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/servername/privkey.pem
ProxyRequests Off
ProxyPreserveHost On
SSLProxyEngine On
ProxyPass / https://127.0.0.1:3000/
ProxyPassReverse / https://127.0.0.1:3000/
# Avoid hop-by-hop header issues
RequestHeader unset Connection
RequestHeader unset Upgrade
RequestHeader unset Proxy-Connection
ProxyTimeout 60
ErrorLog /var/log/httpd/haven-error.log
CustomLog /var/log/httpd/haven-access.log combined
</VirtualHost>
</IfModule>
4b. RESTART HTTPD
If you added a proxy config you will need to restart httpd for it to take effect. If not you can skip this step
sudo systemctl reload httpd
5. CONNECT TO INSTANCE
Install the app from here or visit the server from the WebUI (your domain assigned or IP + port chosen).
6. CONFIGURE SERVER
Create a user matching the admin in the container file, and then setup your server.
REFERENCES & LINKS
- Haven main page
- Haven Desktop git
- Haven Server git
- Haven Android
- Haven iOS Beta (BROKEN FOR ME AS OF 07 OCT 2026)