Remote GPU server, several workstations

The services on one machine with a graphics card, LiveCaption on several workstations: addresses, firewall, encryption, the account address and keys.

8 min read Updated: 2026-10-18

The usual layout: one powerful machine with a graphics card provides the services, and the workstations only run the LiveCaption app – they do not even need a graphics card. The latency of a wired local network hardly matters: a few milliseconds. This chapter describes what to set up on the server machine and what on the workstations.

The layout

Part Where it runs What to open towards the network
account service on the server machine (or a separate machine) its service port only towards the other services' machines, if they run elsewhere
translator on the server machine the service port (8080) towards the workstations
voice service on the server machine the service port (8090) towards the workstations
caption service on the server machine the service port (5111) towards the workstations
LiveCaption on every workstation nothing

A workstation only calls the three engine services; it never talks to the account service. The account service is reached by the other services: every half minute they download the authorization snapshot from it, and they forward web sign-ins to it as well. The simplest setup is to run the account service and its database on the server machine too.

On the server machine, the daily launcher brings up the four services in the right order; if one of them runs on another machine, the -NoAccount, -NoTranslator, -NoVoice or -NoCaption switch skips it. On an unattended server it is worth running the services as system services (see Running as a service).

The server machine: the Network page

On every service's web interface, the Network page shows where the service can be reached, whether the firewall lets it through, and whether the connection is encrypted. The Addresses box has three rows:

  • Service: the service port, where the clients call. By default it listens on all network interfaces; the --host localhost switch narrows it to this machine, and an IP address to that one address.
  • Control and interface: the web interface port. By default it is reachable only from this machine; the --admin-host switch opens it to the network (* for all interfaces, or one of the machine's IP addresses). A sign-in is required there too.
  • Local trust: when on, the interface can be read from this machine without signing in; sensitive actions still ask for a sign-in.
The translator's Network page with the addresses, local trust and the firewall box
The translator's Network page: in the picture the service is reachable from this machine only

In the pictures the services listen locally only ("from this machine only") – workstations cannot reach them like this. In a remote layout, the Service row must show network access. The service's Settings page shows where the value comes from and how to change it.

The voice service's Network page with the same three boxes
The voice service's Network page: the service port is 8090, the interface's 8091

Firewall

On Windows, the firewall drops incoming connections by default, and the workstation only sees "no response". The Firewall box on the Network page shows whether there is a rule for the service port; Add rule adds one and Delete removes it, while Network profile chooses which network type it applies to (domain, private, both). Adding and deleting ask for administrator confirmation (UAC), which appears on the service's machine – even if the button was pressed from another machine; until someone accepts it there, the action does not complete.

  • At start-up the caption service adds the rule on its own, without asking, for private and domain networks (never for public ones). If Windows classifies the network as Public, this rule does not apply to it: mark the network as private.
  • If the service only listens locally, no rule is needed, and the page says so.

On macOS, the Firewall box cannot check anything ("Cannot be checked"), its buttons and the profile selector are disabled, and an information bar tells the way: the macOS application firewall lets programs through, not ports. If the firewall is on, the program has to be allowed (System Settings → Network → Firewall); when installed as a service starting with the machine, the installer does this, and a user-scope installation prints the manual sudo command. Since macOS 15, a program also needs the Local Network privacy permission to reach other machines on the network.

Encryption

On an unencrypted network, the audio, the transcript and the key all travel in readable form. With the -Tls self-signed switch the service creates its own self-signed certificate and prints its fingerprint (the certificate's unique identifier) at start-up:

.\CaptionServer\start-captionserver.ps1 -Tls self-signed

The translator's and the voice service's launchers know the same switch, and the web interface (--admin-tls) can be encrypted too. On the workstation, the address on LiveCaption's Servers page starts with https://; the Certificate button that appears on the first connection shows the fingerprint – compare it with what the service's machine printed, or what the Network page shows, and only then accept it. From then on, LiveCaption accepts only that one certificate for that address.

If the web interface is unencrypted and reachable from the network, every page shows a warning bar: the sign-in password travels in readable form. Behind a reverse proxy (a server in front that does the encryption) this can be the right setting.

The account service's address

The three engine services know a single account service address: the one in the LCP_ACCOUNT_URL environment variable. It is mandatory: without it the services do not even start. On every machine that runs a service, it must point to the same account service. The AccountServer\setup-account-peers tool sets it: first the peer tokens with the -Tokens switch, then the address with -Activate; -Check verifies that the account service accepts them. After setting it, restart the open windows, because the variable does not reach processes that are already running.

The account service's Network page with ports 8100 and 8101
The account service's Network page: the services use port 8100, the web interface port 8101

If the other services run on the same machine, it is enough for the account service to listen locally (as in the picture). If they run on another machine, port 8100 has to be opened to the network, and since the sign-in password also travels on this port, an encrypted connection or a reverse proxy is recommended. The account service's web interface is also local-only by default.

Checking on the account service's Connections page

The account service's Connections page shows whether the other services really reach it: each row has the request path, the response code and the name of the calling service.

The account service's Connections page with the caption service's sign-in and snapshot requests
The account service's Connections page: the caption service fetches the snapshot every half minute
  • The /v1/authz/snapshot requests are the snapshot downloads, every half minute, per service. A 304 response means the snapshot has not changed – this is the normal state.
  • The /v1/auth/login requests are web sign-ins: a service's interface forwards the password to the account service.
  • If a service's name does not appear within a minute, it cannot reach the account service: check its address (LCP_ACCOUNT_URL), the firewall and its peer token.

The workstations

No service runs on a workstation, so the daily launcher is not needed there either: start LiveCaption as usual.

  1. Open the Servers page of LiveCaption's settings window.
  2. For each of the three services, enter the server machine's address and port (for example http://192.168.1.20:5111, or https:// when encrypted).
  3. Enter the workstation's own API key for each of the three services. The key is stored bound to the machine and the user, so every workstation gets its own – the simplest way is the generate-user-key tool run on the account service's machine (see Keys and permissions for clients).
  4. Press the check button next to the address: the field's border turns green when both the connection and the key are fine.

The web admin button on the Servers page only works when the service runs on the same machine; a remote service's interface can be opened in a browser at the server machine's address – if the interface is open to the network.

Checking from a workstation

The command-line check walks the whole chain without transcribing anything, and tells you at which step it got stuck (name resolution, TCP port, server, model selection):

captionclient --check --server http://192.168.1.20:5111
livecaption --check

The exit code of captionclient is 0 when all is well, 3 when FFmpeg is missing, and 6 when the server cannot be reached. livecaption --check checks all three services at the addresses in the settings. A detailed walkthrough written for Windows is in the One GPU machine on the network guide.

Where next

Hiba történt az oldal futtatásakor. / An error occurred while running the page. Újratöltés / Reload 🗙