tony 3ae12367e3
CI / validate (push) Successful in 20m57s
Release / validate (push) Successful in 20m55s
Release / publish (push) Successful in 14m49s
Merge pull request 'fix(lint): handle cleanup errors explicitly' (#17) from codex/ci-lint-fixes into main
Reviewed-on: #17
2026-08-09 23:52:34 +02:00

DoGaMa

DoGaMa banner

DoGaMa is a lightweight, self-hosted manager for private Docker game servers. It provides a web interface for families and small groups while keeping direct Docker access isolated in a restricted private agent.

DoGaMa V1 is feature-complete. Linux is the production target; advanced instance, catalog and backup workflows remain partly API-first.

Features

  • Local administrator bootstrap, accounts, sessions, roles and per-instance permissions.
  • Validated game catalog and deployment previews, with Palworld as the reference integration.
  • Controlled create, inspect, start, stop, restart, update and container-only deletion workflows.
  • Persistent player data, scheduled and manual backups, safe import, export and restore.
  • Digest-aware updates with optional safety backups, readiness checks and rollback.
  • Sandboxed WebAssembly game adapters; no native plugins or host scripts.
  • Encrypted notification channels, bounded delivery retries and security-focused audit events.
  • Responsive server-rendered web interface with no external runtime asset dependency.

Screenshots

The repository currently includes the official banner above but no maintained product screenshots. Screenshots will be added only when they can be kept aligned with released UI behavior.

Installation

Install Docker Engine with the Compose plugin on a Linux host. Save the repository's compose.yaml, optionally copy .env.example to .env, then run:

mkdir -p data/servers data/backups
docker compose pull
docker compose up -d

The default web address is http://HOST:8080. DoGaMa generates its internal agent token and encryption key automatically on first start; do not create or add them to .env.

A complete minimal Compose deployment is:

services:
  init:
    image: git.zaynet.fr/dogama/dogama:${DOGAMA_VERSION:-latest}
    user: "0:0"
    entrypoint: ["/usr/local/bin/dogama-init"]
    volumes:
      - ${DOGAMA_DATA_PATH:-./data}:/var/lib/dogama
      - agent_state:/var/lib/dogama-agent
      - ${DOGAMA_SERVERS_PATH:-./data/servers}:/srv/game-servers
      - ${DOGAMA_BACKUPS_PATH:-./data/backups}:/srv/game-backups
    cap_add: [CHOWN, DAC_READ_SEARCH, FOWNER]

  dogama:
    image: git.zaynet.fr/dogama/dogama:${DOGAMA_VERSION:-latest}
    restart: unless-stopped
    ports:
      - "${DOGAMA_HTTP_PORT:-8080}:8080"
    environment:
      DOGAMA_AGENT_URL: http://agent:8081
    volumes:
      - ${DOGAMA_DATA_PATH:-./data}:/var/lib/dogama
      - agent_state:/var/lib/dogama-agent:ro
      - ${DOGAMA_SERVERS_PATH:-./data/servers}:/srv/game-servers
      - ${DOGAMA_BACKUPS_PATH:-./data/backups}:/srv/game-backups
    depends_on:
      init:
        condition: service_completed_successfully
      agent:
        condition: service_started

  agent:
    image: git.zaynet.fr/dogama/dogama-agent:${DOGAMA_VERSION:-latest}
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - agent_state:/var/lib/dogama-agent
      - ${DOGAMA_SERVERS_PATH:-./data/servers}:/srv/game-servers
      - ${DOGAMA_BACKUPS_PATH:-./data/backups}:/srv/game-backups
    depends_on:
      init:
        condition: service_completed_successfully

volumes:
  agent_state:

Use the repository Compose file for its complete network and container-hardening settings; the excerpt shows only the installation contract.

Initial setup

Open /setup, create the first administrator, then sign in. Configure global labels and notification channels from Settings. Create game instances only after checking the host paths, ports and backup policy shown by the deployment preview.

Updating

Pin DOGAMA_VERSION to a released version such as 0.1.0, back up the DoGaMa data directory, then pull and recreate:

docker compose pull
docker compose up -d

Never delete data, the server/backup directories or the internal agent_state volume during an update.

Volumes and persistent data

Host setting Container path Contents
DOGAMA_DATA_PATH /var/lib/dogama SQLite database, imports and the application-only master key
DOGAMA_SERVERS_PATH /srv/game-servers Game-server configuration and player data
DOGAMA_BACKUPS_PATH /srv/game-backups DoGaMa-managed game backups

agent_state is an internal named volume. It contains the shared authentication token and the authenticated agent registry that prevents operations against unknown containers. It is not a user configuration surface, but it must be backed up with the other DoGaMa state.

Ports

Port Exposure Purpose
8080/tcp Host, configurable DoGaMa web interface and API
8081/tcp Private Compose network only Authenticated application-to-agent API

Managed game ports are selected per instance from validated templates.

Environment variables

Variable Default Purpose
DOGAMA_VERSION latest Image version; pin a release in production
DOGAMA_HTTP_PORT 8080 Published web port
TZ UTC Container timezone
DOGAMA_DATA_PATH ./data Host path for DoGaMa data
DOGAMA_SERVERS_PATH ./data/servers Host path for game-server data
DOGAMA_BACKUPS_PATH ./data/backups Host path for backups

Internal container paths, allowed roots and service authentication are intentionally not configurable through the public Compose interface.

Security

  • The main application never mounts the Docker socket.
  • Only the private, non-published agent can access Docker, through typed and deny-by-default operations.
  • The application runs non-root with a read-only root filesystem; both long-running services drop Linux capabilities.
  • Internal secrets are generated from the operating system cryptographic random source, stored with restrictive permissions and never logged or exposed in the UI.
  • The master key is mounted only through the application data path; the agent has no access to it.
  • Agent path checks remain fixed to /srv/game-servers and /srv/game-backups inside the containers.

Use a trusted TLS reverse proxy and restrict access to all host data directories. The Docker agent still has host-equivalent power through the socket and must never be published.

Supported platforms

Release images and archives target Linux amd64 and arm64. The full validation suite is designed for Linux; native Windows execution is not supported.

Documentation

Support and issues

Report reproducible problems in the Gitea issue tracker. Include the DoGaMa version, host architecture and sanitized logs; never attach secrets, databases or player data.

License

No repository-wide license file is currently present, so no general redistribution license is asserted here. The Palworld reference module has its own license. A project-wide license must be added by the owner before public distribution.

S
Description
No description provided
Readme
13 MiB
DoGaMa v0.3.2
Latest
2026-08-17 23:23:43 +02:00
Languages
Go 86.6%
HTML 7.8%
CSS 3.4%
Python 1.2%
JavaScript 0.8%
Other 0.2%