# factorio-server

> Headless Factorio behind Factorio Server Manager, deployed as a Dokploy compose stack from Terraform.

- status: active
- language: Docker
- repo: https://github.com/vanillauys/factorio-server

One compose file runs a headless Factorio server behind
[Factorio Server Manager](https://github.com/Tricade/factorio-server-manager),
the maintained fork of
[OpenFactorioServerManager](https://github.com/OpenFactorioServerManager/factorio-server-manager).
The manager downloads and controls the game server, and its web UI
handles saves, mods, and restarts. Administration needs no SSH.

Dokploy pulls this repo on push and redeploys the stack. The domain,
the DNS record, and the stack itself are declared in `wihan-dev-tf`.

## DNS for game traffic

Game traffic is UDP, so the record cannot ride the Cloudflare proxy.
A DNS-only record that CNAMEs to a proxied hostname still resolves to
the edge, which drops the packets. Use a plain A record to the server.

```yaml
services:
  manager:
    image: ghcr.io/tricade/factorio-server-manager:0.17.5
    ports:
      - "34197:34197/udp"
    volumes:
      - fsm-data:/opt/fsm-data
      - factorio-data:/opt/factorio
```

## For agents

- Game address: `factorio.wihan.dev`, UDP port `34197`.
- Management UI: `https://factorio.wihan.dev` (login required).
- Full compose file, plain text:
  `https://wihan.dev/games/factorio`.
- Pin an exact manager release in `image:`; the releases are immutable
  SemVer tags.
- Keep the DNS record for the game host DNS-only. A proxied record, or
  a CNAME to a proxied hostname, breaks UDP.
- Source:
  [github.com/vanillauys/factorio-server](https://github.com/vanillauys/factorio-server).