Deployment
Windows service
Trignis registers itself as Trignis (Agent). Install it with sc.exe, pointing at the extracted executable:
sc.exe create "Trignis (Agent)" binPath= "C:\trignis\Trignis.exe" start= auto
sc.exe start "Trignis (Agent)"The service account needs:
- Read/write on the install folder:
state.db,sinkhole.db,log/and any export directory live there. - Read on the
TRIGNIS_ENCRYPTION_KEYmachine variable. - Whatever the connection strings need. With
Trusted_Connection=True, that is the service account itself.LocalSystemwill not do, so use an account the database recognises.
Shutdown is graceful: in-flight cycles get up to 30 seconds to finish before the host stops them.
Docker
services:
trignis:
image: ghcr.io/melosso/trignis:latest
container_name: trignis
ports:
- "2455:2455"
environment:
TRIGNIS_ENCRYPTION_KEY: ${TRIGNIS_ENCRYPTION_KEY}
volumes:
- ./environments:/app/environments
- ./appsettings.json:/app/appsettings.json
- trignis-state:/app/data
volumes:
trignis-state:Persist state.db and sinkhole.db. Losing state.db means every object re-initialises on next start; losing sinkhole.db discards unreplayed dead letters.
Selecting one environment
By default every file in environments/ is loaded. To run one instance per environment, set TRIGNIS_ENVIRONMENT to a filename without its extension:
TRIGNIS_ENVIRONMENT=productionUnmatched names are logged and all environments load anyway, so a typo does not silently stop the service.
Exposing the dashboard
Health and WebHost are separate switches on the same port:
{
"Health": { "Enabled": true, "Port": 2455, "Host": "*" },
"WebHost": { "Enabled": true, "Host": "*" },
"Trignis": { "AdminApiKey": "change-me" }
}Health.Enabled: the JSON health endpoints.WebHost.Enabled: the dashboard UI.WebHost.Hostset tolocalhostor127.0.0.1restricts/uito loopback; anything else is refused with 403.
DANGER
AdminApiKey ships with a placeholder. Empty or unchanged means the UI is unauthenticated. Set a real key before exposing the port, and put TLS in front of it. See Authentication.
Logs
Written to log/log-<date>.txt, daily rolling, five files kept. Adjust under Serilog in appsettings.json. On Windows, Windows.UseEventLog also writes to the Application event log.