Hosting a server

Install your Voxsen server on Windows or Linux, with or without a domain name, with or without Cloudflare.

Before you start

A Voxsen server hosts everything your community needs: accounts, channels, messages, files, voice and video. It runs on a Windows PC or a Linux machine (VPS, mini PC, 64-bit Raspberry Pi 4/5…).

No domain name needed. The machine's IP address is enough, for example 82.64.10.20:3000. A domain is still possible for a nicer address and automatic HTTPS.

What you need

  • Windows 10/11 with Docker Desktop, or Linux with Docker (the script installs it for you).
  • 2 GB of RAM and 2 cores for around twenty people.
  • For access over the Internet: being able to open ports on your router or firewall.

Installing on Windows

  1. Install Docker Desktop, start it and wait until it says “Engine running”.
  2. Download the Windows server kit and unzip it, for example into C:\Voxsen-Server.
  3. Double-click Installer Voxsen Server.bat (“Install Voxsen Server”) and answer the questions: the server name, how members will reach it (public IP, local network or domain name) and opening the ports in the Windows firewall.
  4. The script builds and starts the server (a few minutes the first time), then shows the address to type in the app.
Docker Desktop must stay running. In its settings, check “Start Docker Desktop when you sign in”: the Voxsen server then restarts by itself with Windows.

Installing on Linux

tar -xzf Voxsen-Server-x.y.z.tar.gz
cd voxsen-server
./install.sh

The script installs Docker if it's missing (with your permission), asks the same questions as on Windows, starts the server and shows the address to type in the app.

Power and video quality

Voice needs almost nothing. Video, on the other hand, mostly depends on the server's upload speed: it sends the stream of each person sharing to every viewer. Screen sharing and camera go up to 4K at 60 fps*, if the server and the participants can keep up.

QualityBandwidth per viewer (roughly)Example: 1 stream, 5 viewers
720p · 30 fps1.5 Mb/s8 Mb/s upload
1080p · 60 fps6 Mb/s30 Mb/s upload
1440p · 60 fps10 Mb/s50 Mb/s upload
4K · 30 fps12 Mb/s60 Mb/s upload
4K · 60 fps18 Mb/s90 Mb/s upload
A fiber connection or a VPS with good bandwidth is recommended for 4K. The person sharing also needs a PC able to encode 4K and enough upload speed; otherwise, quality drops automatically.

* Up to the server owner and their settings: camera and screen sharing, whatever the quality (720p, 2K, 4K, 60 fps), are only available to roles that have the permission (Server settings → Roles → Camera and screen sharing: camera, screen sharing, PC sound, 2K, 4K and 60 fps are set separately).

Open the ports

For access over the Internet, forward these ports to the server machine (router: “NAT / PAT” or “port forwarding” section; VPS: the host's firewall or ufw).

PortProtocolPurpose
3000TCPThe app: accounts, messages, files (80 and 443 with a domain name)
7881TCPVoice and video (fallback when UDP is blocked)
50000 to 50100UDPVoice and video

Local network only? Nothing to open: members type the local address, for example 192.168.1.20:3000.

With a domain name

  1. Create a DNS record of type A (for example voxsen.mydomain.com) pointing to the server's public IP. At Cloudflare, first leave the cloud gray (“DNS only”), see below.
  2. During installation, choose option 3 and type the domain.
  3. Open ports 80 and 443 (TCP) in addition to 7881 and 50000-50100.

The HTTPS certificate is obtained and renewed automatically. In the app, just type voxsen.mydomain.com. A free domain (DuckDNS, for example) works too, handy if your router has no fixed IP.

Using Cloudflare (optional)

It's up to you, depending on the cloud of the DNS record at Cloudflare.

Gray cloud (“DNS only”): the simplest, recommended. Cloudflare only handles the domain name, nothing else to set up.

Orange cloud (proxy): to protect the server (attacks, bots, hidden site IP). Voxsen works behind it, with these settings:

  1. Install with gray first and wait until the server answers on https://, then switch the cloud to orange.
  2. SSL/TLS → “Full (strict)” (with “Flexible”, the site goes into a redirect loop).
  3. Edge Certificates → “Always Use HTTPS” off: the server already redirects by itself, and certificate renewal needs it.
  4. Large files: the free plan rejects uploads over 100 MB. Add LIBRARY_MAX_MB=95 to .env, then docker compose --profile https up -d: the app warns before sending a file that's too big.
  5. Cache: rule “URI Path starts with /updates/” → Bypass cache, so app updates are always the right ones.
  6. Bot Fight Mode off (Security → Bots), otherwise the app and automatic updates may be rejected.

Voice and video stay direct (UDP ports 50000-50100 and TCP 7881, keep them open): members in voice see the server's IP, as with any voice app. The server reads the real IP of each visitor behind Cloudflare by itself.

Tip: to protect a website while keeping voice and unlimited large files, put the site on mydomain.com (orange) and the Voxsen server on a gray subdomain, for example chat.mydomain.com.

First launch

Open Voxsen, type the server address at the top of the sign-in screen (its name shows up in green when it's right), then create your account: the first account created becomes the server's owner. So create yours right after installing.

Then, in the server menu → Server settings: name, description, icon, color, welcome message, closing sign-ups, entry password, channels, roles and members. To invite your friends: server menu → Invite your friends.

Day to day

To…Command (in the server folder)
See what's going ondocker compose logs -f server
Stop the serverdocker compose down
Restart itdocker compose up -d
Update now./update.sh (Linux) or Mettre à jour Voxsen Server.bat (“Update Voxsen Server”, Windows)

Automatic updates: every 15 minutes, the server checks for a new version, installs it and restarts by itself. The log is in update.log. To turn them off: VOXSEN_AUTO_UPDATE=false in .env.

Presence: every minute, the server tells voxsen.com its name and the number of people connected (nothing else: no usernames, no messages). To turn it off: LIVE_STATS=false in .env.

Backup: copy the data/ folder (database and files) and the .env file, ideally with the server stopped. Your configuration and data are kept during an update.

If something goes wrong

The app says “Not found”

Check the address (with :3000 without a domain name), that the server is running (docker compose ps) and that port 3000 is forwarded. Open http://ADDRESS:3000 in a browser: the page “This Voxsen server is running” should show up.

Connected, but no sound in voice

It's almost always the UDP 50000-50100 ports (and TCP 7881) that aren't open or aren't forwarded to the right machine.

The router's public IP changes

Delete the .env file and run the installation again, or switch to a domain name (even a free one) with option 3.

Port 3000 is already taken

Change VOXSEN_PORT in .env, then run docker compose up -d.