Skip to Content
On this page

Linux deployment

The example uses a Debian / Ubuntu host with systemd. Watchdog and TGateway run on the same site machine. Adapt runtime dependencies and service management for other distributions.

Prepare the installation

  1. Run uname -m: choose x64 for x86_64 or ARM64 for aarch64. Select the matching Watchdog package in Downloads.
  2. Install .NET 10 Runtime for the distribution and architecture. Confirm Microsoft.NETCore.App 10.x with dotnet --list-runtimes.
  3. Extract the entire package into a permanent location, such as /opt/tgateway/WatchDog. Retain appsettings.json, GatewayApp, and every bundled dependency.

Allow at least 512 MB RAM, preferably 1 GB or more, and 8 GB or more storage, with additional space for history and cache retention. See Environment setup.

Use a dedicated runtime account. Reuse it if already present; do not create it twice. This example uses tgateway:

sudo useradd --system --no-create-home --shell /usr/sbin/nologin tgateway sudo chown -R tgateway:tgateway /opt/tgateway/WatchDog sudo chmod +x /opt/tgateway/WatchDog/TGateway.Watchdog sudo chmod +x /opt/tgateway/WatchDog/GatewayApp/TGateway

Substitute your real account and paths throughout. The account needs read/write access to the installation and project data.

Foreground launch

Before installing a service, run:

cd /opt/tgateway/WatchDog sudo -u tgateway ./TGateway.Watchdog

Leave the terminal running. On the host, open http://localhost:6200, confirm TGateway is running on the Watchdog dashboard, and open http://localhost:6100. Use the host IP from remote browsers. Follow Start and sign in for credentials and workspace checks.

If the process exits, read the full terminal error first. Do not use an automatic restart policy to hide a missing runtime, permission failure, or occupied port.

Configure systemd

After foreground verification, press Ctrl+C and wait for Watchdog and its gateway to exit. As administrator, create /etc/systemd/system/tgateway-watchdog.service:

[Unit] Description=TGateway Watchdog Wants=network-online.target After=network-online.target [Service] Type=simple User=tgateway Group=tgateway WorkingDirectory=/opt/tgateway/WatchDog ExecStart=/opt/tgateway/WatchDog/TGateway.Watchdog Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target

The user and group must exist, and the working directory and executable must match the installation. Start and enable the service:

sudo systemctl daemon-reload sudo systemctl enable --now tgateway-watchdog sudo systemctl status tgateway-watchdog --no-pager

Expect active (running), then check both Web pages. Gateway initialization may take time; inspect Watchdog logs and the active project as well.

Logs and service controls

sudo journalctl -u tgateway-watchdog -n 100 --no-pager sudo systemctl stop tgateway-watchdog sudo systemctl start tgateway-watchdog

Default Watchdog file logs are in /opt/tgateway/WatchDog/Logs/Watchdog/. Default gateway process logs are in GatewayApp/Logs/XTrace/; the actual logging configuration takes precedence. Use system logs for device, rule, and forwarding errors.

To uninstall the service, first arrange shutdown and backup:

sudo systemctl disable --now tgateway-watchdog

Have the administrator remove its unit file, then run sudo systemctl daemon-reload. Disabling the service does not remove the installation or projects.

Serial and network permissions

  • Inspect the actual serial node and owner group, for example with ls -l /dev/ttyUSB0. Debian / Ubuntu commonly uses sudo usermod -aG dialout tgateway; follow the node’s actual group and restart the service afterward.
  • Do not grant permanent access to every user instead of assigning account permissions. If USB device names change, update the channel or configure a stable device path.
  • After Web access works, verify device IP, protocol port, and connection direction. For server plugins listening below port 1024, arrange the required low-port permission according to host policy rather than running the entire service as root by default.
  • The service account needs write access to logs, history, offline cache, and external mounts. Success under an interactive account does not establish systemd account access.

Update and recovery

Use Studio’s batch update for gateway programs. Before updating the Watchdog host or moving the installation, create and download a Watchdog backup.

Stop the service in a maintenance window. Preserve the stopped installation, including configuration, GatewayApp, CurrentProject, Projects, and Backups. Follow release instructions to update programs while preserving site data, then check ownership and execute permissions. If paths change, update the unit and run daemon-reload before starting it.

Verify service state, version, active project, new samples from a known point, and new data at the destination. Do not copy only a live SQLite main file or delete active WAL and retry-cache files.

Startup problems

SymptomCheck and recovery
Permission deniedExecute bits, directory access, service account, and serial device group
Exec format errorPackage architecture must match the host
Missing runtime or shared libraryInstall .NET 10 Runtime and its distribution-specific dependencies
systemd process exitsRead journal and file logs, then launch in the foreground using the same account
Remote access failsCheck host IP, listener, firewall, and proxy

Without real equipment, continue with your first simulator point. See Troubleshooting for other failures.