52 lines
1.6 KiB
Markdown
52 lines
1.6 KiB
Markdown
# systemd deployment
|
|
|
|
This directory contains the versioned systemd deployment used for the Debian runtime.
|
|
|
|
## Install
|
|
|
|
Run the installer as `root` and point it at the live runtime root:
|
|
|
|
```bash
|
|
cd /path/to/m2dev-server
|
|
python3 deploy/systemd/install_systemd.py \
|
|
--user mt2.jakubkadlec.dev \
|
|
--group mt2.jakubkadlec.dev \
|
|
--runtime-root /home/mt2.jakubkadlec.dev/metin/runtime/server \
|
|
--env-file /etc/metin/metin.env \
|
|
--channel 1 \
|
|
--channel 99 \
|
|
--restart
|
|
```
|
|
|
|
`--channel-limit 1` is also supported and will auto-include channel `99` when present in the channel inventory.
|
|
|
|
The channel selection and port layout now come from the versioned inventory file:
|
|
|
|
- [deploy/channel-inventory.json](../channel-inventory.json)
|
|
|
|
## What it installs
|
|
|
|
- `metin-server.service`
|
|
- `metin-db.service`
|
|
- `metin-db-ready.service`
|
|
- `metin-auth.service`
|
|
- `metin-game@.service`
|
|
- `/usr/local/libexec/metin-game-instance-start`
|
|
- `/usr/local/libexec/metin-wait-port`
|
|
- `/usr/local/bin/metinctl`
|
|
|
|
The `metin-db-ready.service` gate waits until the DB socket is actually accepting connections before `auth` and `game` units start.
|
|
|
|
The installer also reconciles enabled `metin-game@...` instances against the selected channel set so stale units do not stay enabled forever.
|
|
|
|
## Optional Environment File
|
|
|
|
The runtime units support an optional `EnvironmentFile` for host-local overrides:
|
|
|
|
- default path: `/etc/metin/metin.env`
|
|
- it is loaded with `EnvironmentFile=-...`, so the file may be absent
|
|
- recommended ownership: `root:root`
|
|
- recommended mode: `0600`
|
|
|
|
This is the preferred place for production-only values such as DB credentials and the admin page password.
|