2.3. Verifying the install

After starting the service, run through the checks below to confirm that the server came up cleanly, loaded the configuration, and accepts API calls.

2.3.1. Service state

# systemctl status toa-server.service
# journalctl -u toa-server.service --since "-2 min" --no-pager

On a healthy startup the journal contains, among Spring Boot’s own banner and autoconfiguration output:

  • a line confirming the external configuration was imported, mentioning file:/opt/toa-server/config/toa-server.yml;

  • for each configured domain, a line from TemplateService showing that the template catalogue was loaded (either from the local path or downloaded from the configured url);

  • Tomcat started on port 8080 and Started TOAServerApplication in N.NNN seconds.

If the startup log shows a BeanCreationException or a ConfigurationPropertiesBindException, the root cause is almost always a typo in toa-server.yml. Correct it and restart with systemctl restart toa-server.service.

2.3.2. Smoke test - listing domains

GET /domains returns the list of configured domain codes and is the cheapest end-to-end check. From the server host itself:

$ curl -s http://127.0.0.1:8080/domains | jq
{
  "items": [
    { "code": "production", "name": "Production domain" }
  ]
}

The response must list every domain declared in toa-server.yml. An empty items array means the configuration was loaded but no domain was parsed - check the YAML indentation.

2.3.3. Smoke test - through the reverse proxy

Repeat the call through the public HTTPS origin used by the add-in, which confirms the proxy forwarding is in place:

$ curl -s https://addin.customer.cz/api/domains | jq

The two responses must be identical. A mismatch (for example a 404 from the proxy path) means the location /api/ block in the reverse proxy is missing or misconfigured - review Hosting the task pane.

2.3.4. Data root

On the first successful request the server creates a subdirectory per configured domain under dataRoot:

$ sudo -u toa-server ls /var/lib/toa-server/data
production

If the server user cannot create that directory, import requests will fail with 500 errors later; fix permissions on the data root before continuing.