Files
ArmA-3-web-server/README.md
2026-07-06 14:14:58 +02:00

105 lines
3.3 KiB
Markdown

# 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