Document FreeDMR 1.5 HDStack deployment authored by Simon's avatar Simon
......@@ -6,12 +6,18 @@ Not convinced? Read [Why Docker?](Why%20Docker)
# Quick Start
For a one-shot install on a Debian or Debian-based system, paste this into the terminal of a running debian-like Linux system
For a guided install on a Debian or Debian-based system, paste this into the terminal of a running Debian-like Linux system:
(sorry Ubuntists, we don't sudo on every line! - su (or sudo) to root like a real sysadmin ;-) )
`curl -fsSL https://gitlab.hacknix.net/hacknix/FreeDMR/-/raw/master/docker-configs/docker-compose_install.sh | bash`
The installer asks for the main server ID and HDStack worker count. Its default
worker count is the available CPU count minus one, limited to one through five.
It also asks whether the separate bridge server is required and, when enabled,
asks for its distinct server ID. The selected values are written directly into
`/etc/freedmr/docker-compose.yml`.
This works on Debian 10, 11, PiOs (Raspbian) and recent Ubuntu systems, on other flavours, you may need to follow the process below.
The FreeDMR docker image is multiarch so will work on x86, amd64, arm64 and armv7
......@@ -34,7 +40,7 @@ Get the current minimal configuration: [FreeDMR.cfg](https://gitlab.hacknix.net/
`mkdir -p /etc/freedmr`
Install it as `/etc/freedmr/freedmr.cfg`, then edit the server ID, FBP/OBP peer and local HBP settings for your deployment. The one-shot installer performs this download automatically. It uses the maintained repository file rather than carrying a separate embedded configuration.
Install it as `/etc/freedmr/freedmr.cfg`, then edit the server ID, FBP/OBP peer and local HBP settings for your deployment. The guided installer performs this download automatically. It uses the maintained repository file rather than carrying a separate embedded configuration.
The current sample includes independent slot defaults and network direct dial:
......@@ -46,9 +52,20 @@ NETWORK_DIRECT_DIAL_SLOT: 1
See [Homebrew Protocol OPTIONS](Homebrew-Protocol-OPTIONS) for per-client session settings and [Current FreeDMR 1.x release notes](Current-FreeDMR-1.x-release-notes) for compatibility notes.
## Make rules file
## Install the optional bridge skeletons
The standard Compose file mounts valid skeleton files for the optional separate
`bridge.py` process:
`curl -fsSL https://gitlab.hacknix.net/hacknix/FreeDMR/-/raw/master/docker-configs/freedmr-bridge.cfg -o /etc/freedmr/freedmr-bridge.cfg`
`echo "BRIDGES = {'9990': [{'SYSTEM': 'ECHO', 'TS': 2, 'TGID': 9990, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []},]}" > /etc/freedmr/rules.py`
`curl -fsSL https://gitlab.hacknix.net/hacknix/FreeDMR/-/raw/master/docker-configs/rules-bridge.py -o /etc/freedmr/rules-bridge.py`
The skeleton rules contain `BRIDGES = {}`, so the bridge starts idle. To
enable it, set a distinct `SERVER_ID` in `freedmr-bridge.cfg`, set
`HDSTACK_BRIDGE=1` in `docker-compose.yml`, and then add the required bridge
rules. HDStack generates the private FBP v5/FBCP connection between this
process and the aggregator.
## Make JSON directory
......@@ -62,6 +79,24 @@ See [Homebrew Protocol OPTIONS](Homebrew-Protocol-OPTIONS) for per-client sessio
Download the file here: [docker-compose.yml](https://gitlab.hacknix.net/hacknix/FreeDMR/-/raw/master/docker-configs/docker-compose.yml)
## Configure HDStack
The standard container uses HDStack automatically. Omitting `HDSTACK` selects
the available CPU count minus one, limited to one through five workers.
Set an explicit integer to override it:
```yaml
environment:
- HDSTACK=5
- HDSTACK_BASEID=23400
- HDSTACK_BRIDGE=0
```
`HDSTACK_BASEID` is the aggregator ID; worker IDs are allocated as that ID
plus one through the selected worker count. `HDSTACK=1` preserves the
established single-process layout. An active hotspot DMR ID remains pinned to
one backend port until its proxy session expires; it is not rebalanced live.
## Add network tuning
Add the following to the end of `/etc/sysctl.conf`:
......
......