Room Server Installation Guide
A MeshCore room server turns a Raspberry Pi, VPS, or any Linux server into a mesh infrastructure node that provides message persistence, node discovery, and optionally internet bridging to your mesh network.
What a room server provides
- Message persistence: Messages delivered to the room server are stored and re-delivered to clients that come online after the message was sent. Nodes that were offline receive missed messages when they reconnect.
- Node directory: The room server maintains a list of all nodes that have connected, allowing clients to discover each other without direct radio contact.
- Internet bridging: With an internet uplink, the room server can forward messages between mesh radio and internet-connected clients, extending the reach of the mesh to phone users with no LoRa hardware.
- Room management: Multiple rooms (channels) can be hosted on a single server, with separate access control for each.
Hardware requirements
| Deployment type | Minimum hardware | Recommended |
|---|---|---|
| Home / testing | Raspberry Pi Zero 2W | Raspberry Pi 4 2GB |
| Community infrastructure | Raspberry Pi 4 2GB | Raspberry Pi 5 4GB or VPS |
| High-volume / multiple rooms | VPS (2 CPU, 2GB RAM) | VPS (4 CPU, 4GB RAM) |
Storage: 8GB microSD minimum (Raspberry Pi); 20GB disk for VPS. A room server’s data footprint is small — even a busy server with years of history fits in under 1GB.
Installation on Raspberry Pi (Debian/Ubuntu)
Step 1: Prerequisites
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip git
Step 2: Clone and install
git clone https://github.com/meshcore-dev/room-server
cd room-server
pip3 install -r requirements.txt
Step 3: Configuration
cp config.example.yml config.yml
nano config.yml
Key settings to configure in config.yml:
server:
name: "MY-ROOM-SERVER" # Display name on the network
listen_port: 7070 # TCP port (default 7070)
rooms:
- name: "Public" # Room/channel name
psk: "" # Empty = public room (no encryption key)
- name: "EmergencyNet"
psk: "your-shared-key" # Private room PSK
storage:
path: "./data" # Message storage directory
retention_days: 30 # How long to keep messages
internet_bridge:
enabled: false # Set true to bridge to internet clients
Step 4: Run as a service
sudo nano /etc/systemd/system/room-server.service
[Unit]
Description=MeshCore Room Server
After=network.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/room-server
ExecStart=/usr/bin/python3 server.py
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl enable room-server
sudo systemctl start room-server
sudo systemctl status room-server
Step 5: Connect a LoRa radio (optional but recommended)
For a room server to participate in the local radio mesh (forwarding between radio and internet), connect a LoRa node to the Pi via USB and configure the room server to use it as a radio gateway:
radio:
enabled: true
port: "/dev/ttyUSB0"
baudrate: 115200
Verifying the installation
# Check logs
journalctl -u room-server -f
# Test TCP connection
nc -v localhost 7070
A successful connection shows the server’s banner message. You can then connect from the MeshCore app by adding the server’s IP address as a TCP connection.
No comments to display
No comments to display