
System Service Installation
Install Muti Metroo as a system service for automatic startup and management.
Linux (systemd)
Installation
# Install as service (requires root)
sudo muti-metroo service install -c /etc/muti-metroo/config.yaml
This creates a systemd unit file at /etc/systemd/system/muti-metroo.service.
Service Management
# Enable automatic start on boot
sudo systemctl enable muti-metroo
# Start the service
sudo systemctl start muti-metroo
# Check status
sudo systemctl status muti-metroo
# View logs
sudo journalctl -u muti-metroo -f
# Restart
sudo systemctl restart muti-metroo
# Stop
sudo systemctl stop muti-metroo
Uninstall
# Stop and disable
sudo systemctl stop muti-metroo
sudo systemctl disable muti-metroo
# Uninstall service
sudo muti-metroo service uninstall
# Clean up files (optional)
sudo rm -rf /etc/muti-metroo
sudo rm -rf /var/lib/muti-metroo
Systemd Unit File
The installer creates:
# /etc/systemd/system/muti-metroo.service
[Unit]
Description=Muti Metroo Mesh Networking Agent
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=muti-metroo
Group=muti-metroo
ExecStart=/usr/local/bin/muti-metroo run -c /etc/muti-metroo/config.yaml
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
# Security hardening
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
PrivateTmp=yes
ReadWritePaths=/var/lib/muti-metroo
[Install]
WantedBy=multi-user.target
Custom Installation
For manual setup:
# Create user
sudo useradd -r -s /sbin/nologin muti-metroo
# Create directories
sudo mkdir -p /etc/muti-metroo
sudo mkdir -p /var/lib/muti-metroo
sudo chown muti-metroo:muti-metroo /var/lib/muti-metroo
# Copy binary
sudo cp muti-metroo /usr/local/bin/
# Copy config
sudo cp ./config.yaml /etc/muti-metroo/
sudo chown root:muti-metroo /etc/muti-metroo/config.yaml
sudo chmod 640 /etc/muti-metroo/config.yaml
# Copy certificates
sudo cp -r ./certs /etc/muti-metroo/
sudo chown -R root:muti-metroo /etc/muti-metroo/certs
sudo chmod 750 /etc/muti-metroo/certs
sudo chmod 640 /etc/muti-metroo/certs/*
# Create unit file
sudo nano /etc/systemd/system/muti-metroo.service
# (paste unit file content)
# Reload and start
sudo systemctl daemon-reload
sudo systemctl enable --now muti-metroo
Configuration for Service
# /etc/muti-metroo/config.yaml
agent:
id: "auto"
display_name: "${HOSTNAME}"
data_dir: "/var/lib/muti-metroo"
log_level: "info"
log_format: "json"
listeners:
- transport: quic
address: "0.0.0.0:4433"
tls:
cert: "/etc/muti-metroo/certs/agent.crt"
key: "/etc/muti-metroo/certs/agent.key"
socks5:
enabled: true
address: "127.0.0.1:1080"
http:
enabled: true
address: "127.0.0.1:8080"
control:
enabled: true
socket_path: "/var/lib/muti-metroo/control.sock"
Windows Service
Installation
Run as Administrator:
# Install service
muti-metroo.exe service install -c C:\ProgramData\muti-metroo\config.yaml
Service Management
# Start
sc start muti-metroo
# Stop
sc stop muti-metroo
# Status
sc query muti-metroo
# Configure automatic start
sc config muti-metroo start= auto
Or use Services GUI:
- Open
services.msc - Find "Muti Metroo"
- Right-click for Start/Stop/Properties
Uninstall
Run as Administrator:
# Stop service
sc stop muti-metroo
# Uninstall
muti-metroo.exe service uninstall
Windows Paths
C:\ProgramData\muti-metroo\
config.yaml # Configuration
data\ # Agent data
agent_id # Agent identity
certs\ # Certificates
agent.crt
agent.key
ca.crt
C:\Program Files\muti-metroo\
muti-metroo.exe # Binary
Configuration for Windows
# C:\ProgramData\muti-metroo\config.yaml
agent:
id: "auto"
data_dir: "C:\\ProgramData\\muti-metroo\\data"
log_level: "info"
log_format: "json"
listeners:
- transport: quic
address: "0.0.0.0:4433"
tls:
cert: "C:\\ProgramData\\muti-metroo\\certs\\agent.crt"
key: "C:\\ProgramData\\muti-metroo\\certs\\agent.key"
socks5:
enabled: true
address: "127.0.0.1:1080"
http:
enabled: true
address: "127.0.0.1:8080"
macOS (launchd)
Installation
# Install as service (requires root)
sudo muti-metroo service install -c /etc/muti-metroo/config.yaml
This creates a launchd plist at /Library/LaunchDaemons/com.muti-metroo.plist.
Service Management
# Check status
muti-metroo service status
# Stop service
sudo launchctl stop com.muti-metroo
# Start service
sudo launchctl start com.muti-metroo
# View logs
tail -f /var/log/muti-metroo.out.log
tail -f /var/log/muti-metroo.err.log
Uninstall
# Uninstall service
sudo muti-metroo service uninstall
# Clean up files (optional)
sudo rm -rf /etc/muti-metroo
sudo rm -rf /var/lib/muti-metroo
Launchd Plist
The installer creates:
<!-- /Library/LaunchDaemons/com.muti-metroo.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.muti-metroo</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/muti-metroo</string>
<string>run</string>
<string>-c</string>
<string>/etc/muti-metroo/config.yaml</string>
</array>
<key>WorkingDirectory</key>
<string>/etc/muti-metroo</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>ThrottleInterval</key>
<integer>5</integer>
<key>StandardOutPath</key>
<string>/var/log/muti-metroo.out.log</string>
<key>StandardErrorPath</key>
<string>/var/log/muti-metroo.err.log</string>
</dict>
</plist>
Custom Installation
For manual setup:
# Copy binary
sudo cp muti-metroo /usr/local/bin/
# Create directories
sudo mkdir -p /etc/muti-metroo
sudo mkdir -p /var/lib/muti-metroo
# Copy config and certs
sudo cp ./config.yaml /etc/muti-metroo/
sudo cp -r ./certs /etc/muti-metroo/
# Create plist manually (use template above)
sudo nano /Library/LaunchDaemons/com.muti-metroo.plist
# Load and start
sudo launchctl load -w /Library/LaunchDaemons/com.muti-metroo.plist
Configuration for macOS
# /etc/muti-metroo/config.yaml
agent:
id: "auto"
display_name: "${HOSTNAME}"
data_dir: "/var/lib/muti-metroo"
log_level: "info"
log_format: "json"
listeners:
- transport: quic
address: "0.0.0.0:4433"
tls:
cert: "/etc/muti-metroo/certs/agent.crt"
key: "/etc/muti-metroo/certs/agent.key"
socks5:
enabled: true
address: "127.0.0.1:1080"
http:
enabled: true
address: "127.0.0.1:8080"
control:
enabled: true
socket_path: "/var/lib/muti-metroo/control.sock"
Security Considerations
File Permissions
# Linux
sudo chmod 700 /var/lib/muti-metroo
sudo chmod 640 /etc/muti-metroo/config.yaml
sudo chmod 600 /etc/muti-metroo/certs/*.key
sudo chmod 644 /etc/muti-metroo/certs/*.crt
Network Ports
If using ports below 1024, either:
- Run as root (not recommended)
- Use capabilities:
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/muti-metroo - Use ports above 1024
Firewall Rules
# Linux (firewalld)
sudo firewall-cmd --permanent --add-port=4433/udp
sudo firewall-cmd --permanent --add-port=1080/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# Linux (ufw)
sudo ufw allow 4433/udp
sudo ufw allow 1080/tcp
sudo ufw allow 8080/tcp
Troubleshooting
Service Won't Start
# Check systemd logs
sudo journalctl -u muti-metroo -n 50
# Check service status
sudo systemctl status muti-metroo
# Test config manually
sudo -u muti-metroo /usr/local/bin/muti-metroo run -c /etc/muti-metroo/config.yaml
Permission Denied
# Check file ownership
ls -la /etc/muti-metroo/
ls -la /var/lib/muti-metroo/
# Fix permissions
sudo chown -R muti-metroo:muti-metroo /var/lib/muti-metroo
Port Already in Use
# Find what's using the port
sudo lsof -i :4433
sudo netstat -tlnp | grep 4433
Next Steps
- High Availability - Redundancy setup
- Monitoring - Set up monitoring
- Troubleshooting - Common issues