Skip to content

Move the control server

Moving the panel means moving three things: the database (which carries the license), the .env file with the master key, and the panel’s WireGuard identity. Plan a short window in which nobody starts jobs.

Install the panel on the new host as described in Installation of TrixOS, but don’t start it yet and don’t generate new secrets. Copy the old .env instead:

Terminal window
scp old-panel:/opt/trixos/.env /opt/trixos/.env
chmod 600 /opt/trixos/.env

Use the same TrixOS release on both hosts.

2. Stop the old panel and dump the database

Section titled “2. Stop the old panel and dump the database”

On the old host, make sure no job is running (Jobs, filter running), then:

Terminal window
cd /opt/trixos
docker compose stop api worker poller assets viewer web
docker compose exec -T postgres pg_dump -U trixos -d trixos -Fc > /root/trixos-move.dump

Copy the dump to the new host.

Terminal window
cd /opt/trixos
docker compose up -d postgres redis
docker compose exec -T postgres pg_restore -U trixos -d trixos --clean --if-exists < /root/trixos-move.dump
docker compose up -d --build
docker compose --profile tools build kvm-viewer

Copy custom ISOs as well if you keep any: rsync -a old-panel:/opt/trixos/isos/ /opt/trixos/isos/.

The site agents connect to the panel’s WireGuard interface. Either copy the panel’s WireGuard configuration and key (/etc/wireguard/) to the new host and bring up wg0 there, or create a new key and update the peer on every agent. Then tell each agent the panel’s new address by running the installer again on the agent host with --panel-ip <new address>; it keeps the registration (System → Agents → ⋯ → Reinstall shows the command).

If your firewall on the agents only allows the old panel address, the reinstall updates it.

  1. Point the panel’s DNS name to the new host. If the name changes, update TRIXOS_PUBLIC_URL in .env and restart, and run the agent installer with the new --panel URL.

  2. The license moves with the database: the restored installation has the same installation id, so its lease stays valid and the next check-in comes from the new host. Check it with docker compose exec api trixos license status.

    To start the new host with an empty database instead, release the license on the old host first (License → Release license or trixos license deactivate) and activate it on the new one. See Licensing.

  • Servers show their power state again (BMCs reachable through the tunnels).
  • System → Agents shows every agent online with a fresh tunnel handshake.
  • Read the live power status of a few servers, and run a hardware collection on a spare server.

Keep the old host switched off but intact until you’re sure everything works.