Linux hosting

Run a small dedicated server.

Ubuntu or Debian with Node.js 20+ is enough for a private CaretakerMP host. Open UDP for gameplay and TCP for browser, world bundles, and public client resources.

Usercaretaker
Folder/opt/caretaker-mp
GameplayUDP 7777
World syncTCP 7778

Install

Create the server folder.

sudo useradd --system --create-home --shell /bin/bash caretaker
sudo mkdir -p /opt/caretaker-mp
sudo chown caretaker:caretaker /opt/caretaker-mp
cd /opt/caretaker-mp
node --version
npm --version

Use Node.js 20 or newer. Copy the project or release server files into /opt/caretaker-mp.

Network

Open both session ports.

Firewall

sudo ufw allow 7777/udp
sudo ufw allow 7778/tcp
sudo ufw status

Cloud host

If your provider has a cloud firewall, open UDP 7777 and TCP 7778 there too. Friends need both ports for joining and world sync.

Service

Keep the server running.

/etc/systemd/system/caretaker-mp.service

[Unit]
Description=CaretakerMP Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=caretaker
WorkingDirectory=/opt/caretaker-mp
Environment=HOST=0.0.0.0
Environment=PORT=7777
Environment=HTTP_PORT=7778
Environment=MAX_PLAYERS=4
Environment=SNAPSHOT_HZ=20
Environment=TIMEOUT_MS=10000
ExecStart=/usr/bin/node src/server.js
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

Enable and watch logs

sudo systemctl daemon-reload
sudo systemctl enable --now caretaker-mp
sudo systemctl status caretaker-mp
journalctl -u caretaker-mp -f

Update

Refresh a hosted build.

cd /opt/caretaker-mp
git pull
sudo systemctl restart caretaker-mp
journalctl -u caretaker-mp -n 50

Look for server_listening, clean player joins, and no repeated server errors.