Security: - Bot registration restricted to BotFather (requires botfather_token) - Direct POST /v1/bot/register without BotFather auth → rejected Deploy: - systemd service reads /home/warzone/server.env for EXTRA_ARGS - deploy/warzone-server.env.mequ: no bots (default) - deploy/warzone-server.env.kh3rad3ree: --enable-bots - setup.sh copies per-hostname env file Docs updated: - LLM_HELP.md: BotFather flow, plaintext bot messaging, E2E option, bridge - LLM_BOT_DEV.md: botfather_token requirement, E2E mode, bridge section - BOT_API.md: full BotFather flow, ownership, numeric IDs, webhook delivery - SERVER.md: --enable-bots flag, per-instance config, bot system section - USAGE.md: bot messaging, BotFather, bridge tool Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
61 lines
1.9 KiB
Bash
Executable File
61 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Setup script — run as root on each server.
|
|
# Usage: ./setup.sh <mequ|kh3rad3ree>
|
|
|
|
HOSTNAME="${1:-}"
|
|
if [ -z "$HOSTNAME" ] || { [ "$HOSTNAME" != "mequ" ] && [ "$HOSTNAME" != "kh3rad3ree" ]; }; then
|
|
echo "Usage: $0 <mequ|kh3rad3ree>"
|
|
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"
|