#!/usr/bin/env bash set -euo pipefail # Setup script — run as root on each server. # Usage: ./setup.sh HOSTNAME="${1:-}" if [ -z "$HOSTNAME" ] || { [ "$HOSTNAME" != "mequ" ] && [ "$HOSTNAME" != "kh3rad3ree" ]; }; then echo "Usage: $0 " exit 1 fi echo "=== Setting up featherChat on $HOSTNAME ===" # Create warzone user if it doesn't exist if ! id warzone &>/dev/null; then echo "[1/4] Creating warzone user..." useradd -r -m -s /bin/bash warzone else echo "[1/4] User warzone already exists" fi # Create data directory echo "[2/4] Creating directories..." mkdir -p /home/warzone/data chown -R warzone:warzone /home/warzone # Copy binaries echo "[3/4] Installing binaries..." cp warzone-server warzone-client /home/warzone/ chmod +x /home/warzone/warzone-server /home/warzone/warzone-client cp "federation-${HOSTNAME}.json" /home/warzone/federation.json chown warzone:warzone /home/warzone/warzone-server /home/warzone/warzone-client /home/warzone/federation.json # Copy environment file if [ -f "warzone-server.env.${HOSTNAME}" ]; then cp "warzone-server.env.${HOSTNAME}" /home/warzone/server.env chown warzone:warzone /home/warzone/server.env echo " Environment: $(cat /home/warzone/server.env | grep -v '^#' | grep .)" fi # Install systemd service + journald log cap echo "[4/5] Installing systemd service..." cp warzone-server.service /etc/systemd/system/ systemctl daemon-reload systemctl enable warzone-server echo "[5/5] Capping journal logs (50MB max, 7 day retention)..." mkdir -p /etc/systemd/journald.conf.d cp journald-warzone.conf /etc/systemd/journald.conf.d/warzone.conf systemctl restart systemd-journald # Vacuum existing logs journalctl --vacuum-size=50M 2>/dev/null || true echo "" echo "=== Done ===" echo "Start: systemctl start warzone-server" echo "Status: systemctl status warzone-server" echo "Logs: journalctl -u warzone-server -f" echo "Stop: systemctl stop warzone-server"