OliveTin is an open-source web UI that lets non-technical users safely trigger predefined shell commands on a remote server without SSH access. Admins define allowed actions in a YAML config file; users click a button in the browser to run them. It's popular for routine sysadmin tasks — restarting services, clearing caches, running backups — handed off to team members who shouldn't have shell access. When you self-host it, uptime matters: a crashed Go process or a broken action means your team is blocked from running those tasks and is back to raising tickets. Vigilmon gives you HTTP uptime monitoring, API endpoint health checks, and alerting so OliveTin failures surface before your team notices.
What You'll Set Up
- HTTP uptime monitor for the OliveTin web interface (port 1337)
- API endpoint health checks (
/api/Actions,/api/StartAction) - Action execution latency monitoring
- Configuration validity probe (YAML config reload health)
- Action log and audit trail accessibility check
- Authentication middleware health check
- SSL/TLS certificate expiry alert
Prerequisites
- OliveTin running and reachable over HTTP/HTTPS (default port 1337)
- At least one action configured in
config.yaml - A free Vigilmon account
Step 1: Monitor the OliveTin Web Interface
The Go HTTP server is the single process that serves the UI, handles API calls, and executes shell commands. If it crashes or stops listening on port 1337, every action is blocked.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your OliveTin URL:
https://olivetin.yourdomain.com(orhttp://your-server-ip:1337for a direct install). - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Click Save.
OliveTin serves a single-page application at the root path. A 200 response confirms the Go process is running and the static UI assets are being served.
Step 2: Monitor the Actions API Endpoint
OliveTin exposes a REST API at /api/Actions that returns the list of configured actions. This endpoint is hit by the UI on every page load. If it returns an error, the button grid is empty and users cannot trigger anything.
- Click Add Monitor →
HTTP / HTTPS. - URL:
https://olivetin.yourdomain.com/api/Actions. - Set Expected HTTP status to
200. - Set Expected body contains to
actions— the response JSON always includes this key when at least one action is configured. - Check interval:
2 minutes. - Click Save.
A 200 response with actions in the body confirms that the config was loaded correctly and OliveTin can serve its action list.
Step 3: Monitor the StartAction API Endpoint
The /api/StartAction endpoint is what actually executes shell commands. Probe it to confirm the action execution pipeline is healthy:
- Click Add Monitor →
HTTP / HTTPS. - URL:
https://olivetin.yourdomain.com/api/StartAction. - Set Method to
POST. - Set Expected HTTP status to
200or400— a400(bad request, because the monitor sends no body) still confirms the endpoint is alive and routing; a502or504means the backend has crashed. - Check interval:
5 minutes. - Click Save.
This is a lightweight liveness probe — you are not executing a real action, just confirming the route handler is registered and the process is running.
Step 4: Monitor Action Execution Latency
OliveTin actions have variable execution times depending on the shell command. Tracking response time on a lightweight canary action reveals when the process execution environment is under load — slow system calls, a hung subprocess, or resource exhaustion before the action itself errors out.
Set up a canary action in your config.yaml that runs a trivially fast command:
actions:
- title: Health Check
shell: echo ok
icon: ❤️
After reloading OliveTin's config, add a Vigilmon monitor that fires this action via the API:
- Click Add Monitor →
HTTP / HTTPS. - URL:
https://olivetin.yourdomain.com/api/StartAction. - Method:
POST, body:{"actionTitle":"Health Check"}. - Expected HTTP status:
200. - Expected body contains:
ok. - Check interval:
5 minutes. - Click Save.
Set a Response time alert threshold of 2 000 ms — a simple echo ok should complete in under 100 ms, so anything over 2 seconds indicates the execution environment is degraded.
Step 5: Configuration Validity Check
OliveTin reads config.yaml at startup and on reload. A YAML syntax error or a missing required field prevents OliveTin from starting or serving updated actions. Detect configuration drift by checking whether the actions API still returns the expected set of actions after a config change:
- After any
config.yamledit, verify OliveTin reloaded successfully by checking the/api/Actionsmonitor from Step 2. - Add Expected body contains to include the title of a specific critical action: e.g.
Restart Nginx. - If that string disappears from the response, the config reload failed or the action was accidentally removed.
This turns your existing monitor into a config validity probe — no additional setup required.
Step 6: Action Log and Audit Trail Accessibility
OliveTin keeps an audit log of every action execution. If the log endpoint becomes inaccessible, operators lose visibility into what commands were run and by whom. Probe the logs page or API:
- Click Add Monitor →
HTTP / HTTPS. - URL:
https://olivetin.yourdomain.com/api/ExecutionTrack(or the equivalent endpoint in your OliveTin version — check the UI's network tab). - Expected HTTP status:
200. - Check interval:
10 minutes. - Click Save.
This also validates that OliveTin's internal execution tracking database (SQLite by default) is accessible.
Step 7: Authentication Middleware Health
If you have configured OliveTin with basic auth or proxy-based authentication (e.g. behind Authelia or Authentik), a misconfigured auth middleware can lock out all users while the OliveTin process itself is healthy.
- Click Add Monitor →
HTTP / HTTPS. - URL:
https://olivetin.yourdomain.com. - Expected HTTP status: set to
401if you expect unauthenticated requests to be rejected, or200if the monitor's IP is in an allowlist. - Do not add credentials to the monitor — you want to detect auth bypass (unexpected
200) as well as a broken auth layer (unexpected500). - Check interval:
5 minutes. - Click Save.
If basic auth is enabled and this monitor returns 200, your auth layer has silently broken — all endpoints are publicly accessible.
Step 8: SSL/TLS Certificate Expiry
OliveTin is often accessed from internal tools, CI pipelines, and scripts that call the API programmatically. A lapsed certificate breaks all of these callers at once.
- Open the HTTP monitor created in Step 1.
- Enable Monitor SSL certificate.
- Set Alert when certificate expires in less than
21 days. - Click Save.
Step 9: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- Set Consecutive failures before alert to
2on the web interface monitor — transient network blips are common; two consecutive failures are actionable. - Route the
/api/StartActionand action execution latency alerts to a higher-urgency channel — a broken action execution pipeline blocks your team from running any automation.
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| HTTP — web interface | https://olivetin.yourdomain.com | Go process crash, port 1337 not listening |
| HTTP — Actions API | /api/Actions | Config load failure, routing broken |
| HTTP — StartAction API | POST /api/StartAction | Action execution pipeline down |
| HTTP — canary action | POST /api/StartAction (echo ok) | Slow execution environment, process hang |
| HTTP — audit log | /api/ExecutionTrack | Log DB inaccessible, tracking broken |
| HTTP — auth check | / (unauthenticated) | Auth middleware bypass or failure |
| SSL certificate | OliveTin domain | TLS renewal failure |
Self-hosting OliveTin means your team's ability to run routine admin tasks depends entirely on a single Go process and its YAML config. With Vigilmon watching the API layer and execution pipeline, you catch a crashed process before anyone raises a ticket, a config reload failure before missing actions confuse users, and a broken auth layer before your command executor is accidentally exposed to the network.