# Arma 3 Web Server Web-based management panel for Arma 3 dedicated servers. Start, stop, configure, and monitor your server from a browser. ## Features - **Server control** — Start, stop, restart, and view status - **Live console** — WebSocket terminal showing server stdout/stderr and RPT log tailing - **Config management** — Create, edit, duplicate, and delete `.cfg` configuration files with a Monaco editor - **Modlist management** — Create modlists with reorderable entries, enable/disable per mod, import from HTML (e.g. ArmA 3 Steam Workshop collections), check download status - **SteamCMD integration** — Update the server binary, download individual workshop mods, bulk download missing or outdated mods, all streamed live to the UI - **Settings UI** — Edit server parameters, IP:port, platform, Steam branch/user, CBA/AI/difficulty presets, and select active config/modlist - **Log viewer** — Browse and read server log files ## Quick Start ### Docker ```bash docker compose up -d ``` The web UI is served on `http://localhost:8080`. ### Manual ```bash # Backend cd backend go build -o arma3-web-server ./cmd/server ./arma3-web-server # Frontend (development) cd frontend npm install npm run dev ``` ## Configuration All paths are configurable via environment variables: | Variable | Default | Description | |----------|---------|-------------| | `DATA_DIR` | `data` | Server metadata (settings, modlist JSON files) | | `SERVERFILE_DIR` | `serverfiles` | Arma 3 server installation | | `MODS_DIR` | `serverfiles/mods` | Local mod symlinks/copies | | `CFG_DIR` | `serverfiles/cfg` | Server configuration `.cfg` files | | `PROFILES_DIR` | `serverfiles/profiles` | Arma 3 profile and log directory | | `FRONTEND_DIR` | `../frontend/dist` | Built frontend assets | | `LISTEN` | `:8080` | HTTP listen address | ## API REST API at `/api/*` and WebSocket endpoints at `/ws/*`. Key routes: | Method | Path | Description | |--------|------|-------------| | `GET/PUT` | `/api/server/settings` | Read/update server settings | | `POST` | `/api/server/start\|stop\|restart` | Server lifecycle | | `GET` | `/api/server/status` | Running state | | `GET/POST/PUT/DELETE` | `/api/configs` | CRUD for `.cfg` files | | `GET/POST/PUT/DELETE` | `/api/modlists` | CRUD for modlists | | `POST` | `/api/modlists/import` | Import HTML workshop list | | `GET` | `/api/modlists/:id/check` | Check mod download status | | `POST` | `/api/modlists/:id/download-missing\|update-all` | Bulk workshop operations | | `POST` | `/api/server/steamcmd/update-game\|download-mod` | SteamCMD operations | | `GET` | `/api/server/logs` | List log files | | `GET` | `/api/server/paths` | Show server file paths | | `WS` | `/ws/server/logs\|rpt\|steamcmd/logs` | Live log streaming | ## Project Structure ``` backend/ cmd/server/ Entry point internal/ api/ HTTP handlers and routes models/ Data types services/ Business logic frontend/ src/ api/ HTTP and WebSocket client components/ Shared UI components pages/ Route-level views types/ TypeScript interfaces ``` ## Development ```bash # Backend cd backend && go run ./cmd/server # Frontend (hot reload) cd frontend && npm run dev # Lint cd frontend && npm run lint ``` ## License MIT