{"id":51171055,"url":"https://github.com/cebarks/quartermaster","last_synced_at":"2026-06-27T00:31:38.535Z","repository":{"id":366056754,"uuid":"1259407637","full_name":"cebarks/quartermaster","owner":"cebarks","description":"a SPT mod manager designed primarily for fika groups","archived":false,"fork":false,"pushed_at":"2026-06-20T05:03:56.000Z","size":857,"stargazers_count":0,"open_issues_count":42,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-20T05:17:14.349Z","etag":null,"topics":["coop","eft","fika","mod","mod-manager","self-hosted","spt","tarkov"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cebarks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"audit.toml","citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-04T13:30:40.000Z","updated_at":"2026-06-20T05:04:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cebarks/quartermaster","commit_stats":null,"previous_names":["cebarks/quartermaster"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/cebarks/quartermaster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cebarks%2Fquartermaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cebarks%2Fquartermaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cebarks%2Fquartermaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cebarks%2Fquartermaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cebarks","download_url":"https://codeload.github.com/cebarks/quartermaster/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cebarks%2Fquartermaster/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34837461,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coop","eft","fika","mod","mod-manager","self-hosted","spt","tarkov"],"created_at":"2026-06-27T00:31:37.879Z","updated_at":"2026-06-27T00:31:38.530Z","avatar_url":"https://github.com/cebarks.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Quartermaster (`quma`)\n\nA CLI and web dashboard for managing server-side mods on an [SPT](https://www.sp-tarkov.com)/[Fika](https://github.com/project-fika) dedicated server. Installs, updates, and removes mods from [SPT Forge](https://forge.sp-tarkov.com), with a web UI for server hosts and connected players.\n\nBuilt for Linux hosts running SPT in a Podman container.\n\n## Features\n\n- **Mod management** — Install, update, and remove mods by name, slug, or Forge ID with automatic dependency resolution\n- **Web dashboard** — Real-time server status, mod browsing, task progress via SSE, log streaming\n- **Change queue** — Mod operations queue while the server is running, then apply on restart\n- **Health checks** — Server liveness, version verification, mod load checks, file integrity (SHA256)\n- **Multi-user auth** — Invite-based registration, admin/player roles, session cookies\n- **Fika support** — Dedicated headless client management and scaling for Fika multiplayer\n- **HTTPS/WSS proxy** — Transparent reverse proxy to SPT server so clients connect through Quartermaster\n- **NarcoNet integration** — Auto-manages NarcoNet `config.yaml` from installed mod state for client mod syncing\n- **Player profiles** — View player profiles with quest, trader, and hideout progress, plus stash viewer\n- **Raid statistics** — Per-raid stats tracking via proxy interception, with leaderboard\n- **Server Value Modifiers (SVM)** — Browse and configure server value modifiers from the web UI\n- **Server settings** — View and manage SPT server configuration\n- **Mod requests** — Players can request mods; admins review and approve with a voting system\n- **Mod enable/disable** — Toggle mods on and off without uninstalling\n- **Backup/restore** — Per-mod and full snapshots of mod files, profiles, and config with CLI and web UI support\n- **RBAC** — Role-based access control with admin and player roles\n- **Container lifecycle** — Start, stop, restart the SPT server container via Podman\n- **Systemd integration** — Generate and install a systemd service for the web UI\n\n## Quick Start\n\n```bash\n# Build\ncargo build --release\n\n# Initialize for your SPT server directory\nquma init /path/to/spt-server\n\n# Start the web UI\nquma serve\n```\n\n## CLI Reference\n\n```\nquma [OPTIONS] \u003cCOMMAND\u003e\n\nCommands:\n  setup       Bootstrap or initialize Quartermaster for an SPT server\n  install     Install a mod and its dependencies\n  update      Update installed mods (specific or all)\n  remove      Remove an installed mod\n  list        List installed mods\n  check       Check all installed mods for updates\n  status      Run health checks against SPT server and mod integrity\n  server      Manage the SPT server container (start/stop/restart/logs)\n  headless    Manage Fika headless clients\n  serve       Start the Quartermaster web UI\n  generate    Generate configuration files (systemd service)\n  invite      Generate an invite code for a player\n  backup      Backup mods, profiles, and config\n  restore     Restore from a backup\n\nOptions:\n  --spt-dir \u003cPATH\u003e      Explicit SPT server directory\n  --config \u003cPATH\u003e       Config file path override\n  -v, --verbose         Increase verbosity (-v debug, -vv trace)\n  --log-level \u003cLEVEL\u003e   Set log level (trace, debug, info, warn, error)\n```\n\nMods can be referenced by name, Forge slug, or numeric Forge ID. Use `--force` on install/update/remove to bypass the change queue and apply immediately.\n\n## Web UI\n\nStart with `quma serve` (default: `0.0.0.0:9190`).\n\nThe dashboard provides mod management, server controls, real-time log streaming, player profiles, mod request voting, and admin tools. Players register via invite codes; admins can manage users and approve mod requests. Includes a transparent HTTPS/WSS reverse proxy so game clients connect to the SPT server through Quartermaster.\n\nBuilt with HTMX and server-sent events — no JavaScript build step required.\n\n## Configuration\n\nConfig lives at `\u003cspt_dir\u003e/quartermaster.toml`. All settings can be overridden with `QUMA_*` environment variables.\n\n```bash\n# Override via environment\nQUMA_SPT_DIR=~/spt-server quma status\n```\n\n## Development\n\nRequires Rust (2021 edition).\n\n```bash\njust build      # cargo build\njust test       # cargo test\njust lint       # cargo fmt + cargo clippy\njust serve      # cargo run -- serve\njust run \u003cARGS\u003e # cargo run -- \u003cARGS\u003e\njust audit      # cargo audit\njust changelog  # git-cliff changelog generation\n```\n\n**Local dev environment** (fake SPT dir, no real server needed):\n\n```bash\njust dev-init       # create a stub SPT directory at .dev/\njust dev-serve      # build \u0026 run web UI against .dev/\njust dev-cli \u003cARGS\u003e # run any quma command against .dev/\njust dev-reset-db   # wipe .dev/ database\njust dev-clean      # remove .dev/ entirely\n```\n\n## Architecture\n\nSingle Rust binary — the CLI and actix-web server share the same codebase.\n\n| Layer | Purpose |\n|-------|---------|\n| `src/cli/` | One file per CLI subcommand (clap derive) |\n| `src/web/` | actix-web server, HTMX templates (Askama), SSE, HTTPS/WSS proxy |\n| `src/db/` | SQLite via rusqlite (WAL mode), RBAC, backup metadata |\n| `src/forge/` | HTTP client for SPT Forge API |\n| `src/spt/` | SPT directory interaction, archive extraction, profiles, game data |\n| `src/client/` | Fika headless client supervisor and convergence |\n| `src/svm/` | Server Value Modifier browsing and configuration |\n| `src/ops.rs` | Core mod operations (install/update/remove) |\n| `src/backup.rs` | Mod backup/restore (per-mod and full snapshots) |\n| `src/health.rs` | Health check system |\n| `src/queue.rs` | Change queue for deferred mod operations |\n| `src/modsync.rs` | NarcoNet config.yaml auto-management |\n| `src/container.rs` | Podman container management |\n\n## License\n\n[AGPL-3.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcebarks%2Fquartermaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcebarks%2Fquartermaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcebarks%2Fquartermaster/lists"}