====== Operations, security, and troubleshooting ======
This gateway holds an account-wide BinaryLane API token. Treat the VPS as security-sensitive infrastructure: patch it, restrict access, review logs, back up configuration without secrets, and have a rotation plan.
===== Routine checks =====
sudo /opt/bl-proxy/scripts/status.sh
cd /opt/bl-proxy
sudo docker compose ps
sudo docker compose logs --tail=200 apisix caddy etcd
After changing users or roles, run the supplied policy test where suitable:
sudo /opt/bl-proxy/scripts/test-scoped-policy.sh
The project repository also contains a coverage checker. Its current bundled OpenAPI snapshot accounts for 116 operations: 115 explicitly mapped and one generic server-action request deliberately denied unless its body action type is recognised. That result can drift whenever the upstream API changes.
===== Security checklist =====
* Use HTTPS for internet-reachable deployments.
* Restrict SSH and public ingress to the smallest practical source range.
* Never expose APISIX ports 9080 or 9180, or etcd port 2379.
* Rotate the BinaryLane token and every user secret after suspected compromise.
* Review container versions, source changes, role mappings, and the upstream API regularly.
* Test permissions using non-production resources.
* Send JWTs only in the ''Authorization'' header.
===== Common failures =====
**Caddy cannot obtain a certificate**
Check that the DNS ''A'' record resolves to the VPS, ports 80 and 443 are reachable, and no other process owns those ports.
**The proxy returns 401**
Generate a new JWT and confirm its ''sub'' claim matches the configured username. If the user's secret was rotated, old JWTs no longer work.
**The proxy returns 403**
The request is not allowed by the user's role, or the operation is unknown to the policy. Inspect the role manifest and APISIX logs; do not widen a role without understanding the operation.
**The upstream returns 401**
The master BinaryLane API token may be missing, expired, revoked, or malformed. Re-run activation or update the root-only ''.env'' file and redeploy. Avoid printing the token while diagnosing it.
**Containers do not start**
Run ''docker compose ps'' and inspect the relevant logs. Confirm the host has free disk and memory, and that the generated APISIX admin key replaced the bootstrap placeholder.
===== Updating the project =====
There is no automatic upgrade path. Review changes in the [[https://github.com/01ax/binarylane-scoped-api-proxy|source repository]], back up configuration, regenerate and validate the payload, then test updates away from production before rollout.