2026-05-17 09:22:25 +02:00
|
|
|
# Triton Manage Server Installer
|
2026-05-17 08:57:58 +02:00
|
|
|
|
2026-05-17 09:22:25 +02:00
|
|
|
Production installer for the Triton Manage Server. Container-based (Docker or Podman), idempotent — safe to re-run.
|
2026-05-17 08:57:58 +02:00
|
|
|
|
2026-05-17 09:22:25 +02:00
|
|
|
## Install
|
2026-05-17 08:57:58 +02:00
|
|
|
|
2026-05-31 17:48:04 +08:00
|
|
|
One line, no licence needed at install time — you upload the `.lic` file in the setup
|
|
|
|
|
wizard after the server starts.
|
2026-05-19 23:29:19 +08:00
|
|
|
|
|
|
|
|
```bash
|
2026-05-31 17:48:04 +08:00
|
|
|
curl -fsSL https://forgejo.primatekun.tech/primatekuntech/triton-install/raw/branch/main/get.sh | sudo bash
|
2026-05-19 23:29:19 +08:00
|
|
|
```
|
2026-05-17 10:12:41 +02:00
|
|
|
|
|
|
|
|
## Setup wizard
|
|
|
|
|
|
|
|
|
|
After install, open `http://localhost:8082` and complete the wizard:
|
|
|
|
|
|
|
|
|
|
1. Set your manage server name
|
2026-05-19 23:29:19 +08:00
|
|
|
2. Create the admin account
|
2026-05-31 17:48:04 +08:00
|
|
|
3. Upload your licence (`.lic` file from your vendor bundle)
|
|
|
|
|
|
|
|
|
|
The vendor's public key is baked into the image at build time, so the `.lic` file is the
|
|
|
|
|
only artefact you need from your vendor.
|
2026-05-17 10:12:41 +02:00
|
|
|
|
|
|
|
|
## Optional flags
|
|
|
|
|
|
2026-05-19 19:37:41 +08:00
|
|
|
Pass flags after `--`:
|
|
|
|
|
|
2026-05-17 10:12:41 +02:00
|
|
|
```bash
|
2026-05-31 17:48:04 +08:00
|
|
|
curl -fsSL https://forgejo.primatekun.tech/primatekuntech/triton-install/raw/branch/main/get.sh | sudo bash -s -- [flags]
|
2026-05-17 10:12:41 +02:00
|
|
|
```
|
2026-05-17 09:22:25 +02:00
|
|
|
|
2026-05-17 08:57:58 +02:00
|
|
|
| Flag | Description |
|
|
|
|
|
|------|-------------|
|
2026-05-17 10:12:41 +02:00
|
|
|
| `--gateway-hostname HOST` | Agent mTLS hostname (defaults to current FQDN). |
|
|
|
|
|
| `--manage-host-ip IP` | Host LAN IP for "+ This machine" auto-registration. |
|
|
|
|
|
| `--image TAG` | Pin a specific image tag (e.g. `1.0.0-rc.2`). |
|
2026-05-31 17:48:04 +08:00
|
|
|
| `--license-pubkey HEX` | Hex-encoded Ed25519 verifier key. Only needed when not baked into the image at build time. |
|
2026-05-17 10:12:41 +02:00
|
|
|
| `--no-tls` | Skip TLS sanity check (dev only). |
|
2026-05-17 08:57:58 +02:00
|
|
|
|
2026-05-19 19:37:41 +08:00
|
|
|
## Upgrade
|
|
|
|
|
|
|
|
|
|
Pull the latest image and restart (keeps all data, runs DB migrations automatically):
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-05-31 17:43:59 +08:00
|
|
|
curl -fsSL https://forgejo.primatekun.tech/primatekuntech/triton-install/raw/branch/main/get.sh | sudo bash -s -- --upgrade
|
2026-05-19 19:37:41 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Pin a specific version:
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-05-31 17:43:59 +08:00
|
|
|
curl -fsSL https://forgejo.primatekun.tech/primatekuntech/triton-install/raw/branch/main/get.sh | sudo bash -s -- --upgrade --image forgejo.primatekun.tech/primatekuntech/triton-manage-server:1.2.0
|
2026-05-19 19:37:41 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Uninstall
|
|
|
|
|
|
|
|
|
|
Stop containers and remove them, but keep all data (PostgreSQL volume, credentials vault):
|
2026-05-17 08:57:58 +02:00
|
|
|
|
|
|
|
|
```bash
|
2026-05-31 17:43:59 +08:00
|
|
|
curl -fsSL https://forgejo.primatekun.tech/primatekuntech/triton-install/raw/branch/main/get.sh | sudo bash -s -- --uninstall
|
2026-05-19 19:37:41 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Also delete all data (irreversible):
|
2026-05-17 08:57:58 +02:00
|
|
|
|
2026-05-19 19:37:41 +08:00
|
|
|
```bash
|
2026-05-31 17:43:59 +08:00
|
|
|
curl -fsSL https://forgejo.primatekun.tech/primatekuntech/triton-install/raw/branch/main/get.sh | sudo bash -s -- --uninstall --purge-data
|
2026-05-17 08:57:58 +02:00
|
|
|
```
|
|
|
|
|
|
2026-05-20 07:34:03 +02:00
|
|
|
## Host-bound licences
|
2026-05-20 10:19:44 +08:00
|
|
|
|
|
|
|
|
Your vendor can issue an offline `.lic` file that is cryptographically bound to a specific host
|
2026-05-20 07:34:03 +02:00
|
|
|
so it cannot be used on any other machine.
|
2026-05-20 10:19:44 +08:00
|
|
|
|
|
|
|
|
**To get a host-bound licence:**
|
|
|
|
|
|
2026-05-20 07:34:03 +02:00
|
|
|
1. Run the installer on the target server. At the end of the output you will see:
|
2026-05-20 10:19:44 +08:00
|
|
|
```
|
2026-05-20 07:34:03 +02:00
|
|
|
[manage-server] ── Host Machine ID ──────────────────────────────────────────────────────
|
|
|
|
|
[manage-server] Provide this value to your vendor when requesting a host-bound .lic file.
|
|
|
|
|
[manage-server] Machine ID (SHA-3-256): <64-hex-chars>
|
|
|
|
|
[manage-server] ────────────────────────────────────────────────────────────────────────
|
2026-05-20 10:19:44 +08:00
|
|
|
```
|
2026-05-31 17:48:04 +08:00
|
|
|
The same value is also shown in the setup wizard's licence-upload step.
|
2026-05-20 07:34:03 +02:00
|
|
|
2. Share the 64-character hex value with your vendor.
|
|
|
|
|
3. The vendor enters it in the License Portal when generating the offline `.lic` token.
|
2026-05-31 17:48:04 +08:00
|
|
|
4. Upload the new `.lic` file via the setup wizard (or, if already past wizard, in
|
|
|
|
|
the admin UI under *Settings → Licence*). The Manage Server verifies the binding at
|
|
|
|
|
every startup.
|
2026-05-20 10:19:44 +08:00
|
|
|
|
2026-05-20 07:34:03 +02:00
|
|
|
**The Machine ID is stable.** It is a SHA-3-256 hash of `/etc/machine-id`, which is written once
|
|
|
|
|
at OS installation and never changes. Container restarts, image upgrades, and re-running the
|
|
|
|
|
installer will always produce the same value.
|
|
|
|
|
|
2026-05-31 17:48:04 +08:00
|
|
|
To retrieve the Machine ID at any time without re-installing, re-run the install command:
|
2026-05-20 07:34:03 +02:00
|
|
|
|
|
|
|
|
```bash
|
2026-05-31 17:48:04 +08:00
|
|
|
curl -fsSL https://forgejo.primatekun.tech/primatekuntech/triton-install/raw/branch/main/get.sh | sudo bash
|
2026-05-20 07:34:03 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
For air-gapped deployments without host binding the `.lic` file is portable, but anyone who
|
2026-05-20 10:19:44 +08:00
|
|
|
obtains the file can run a second instance. Host binding removes that risk.
|
|
|
|
|
|
2026-05-17 08:57:58 +02:00
|
|
|
## Requirements
|
|
|
|
|
|
2026-05-19 19:37:41 +08:00
|
|
|
- Linux (amd64 or arm64) or macOS
|
|
|
|
|
- Docker or Podman with Compose (auto-installed if missing)
|
2026-05-17 08:57:58 +02:00
|
|
|
- Port 443 open (HTTPS)
|