Bootstrap fails: cannot connect via SSH
Bootstrap fails: cannot connect via SSH
Bootstrap opens an SSH connection to the remote host using the key you provided. If it cannot connect, check the following:If this command succeeds, bootstrap should be able to connect. If it fails, fix the SSH configuration first.
- SSH key path: confirm the private key file exists at the path you entered and that it corresponds to an authorized key on the remote host.
- Host reachability: verify the IP address or hostname is correct and the host is online.
- SSH user permissions: the user must have
sudoor root access to install packages, copy files, and create systemd units.
Node is not picking up manifest changes
Node is not picking up manifest changes
orun polls the manifest git repository on a configurable interval (default: 5 seconds). If changes are not appearing, check the following:
- Deploy key: the node needs read access to the manifest repository. Make sure a deploy key is configured in your git host and the corresponding private key is available on the node.
-
Branch name: the
gitBranchfield in your node manifest must match the branch you are pushing changes to. -
systemd service: confirm the orun service is running on the node:
-
Logs: inspect the agent logs for git sync errors:
Container fails to start
Container fails to start
When a deployment enters the You can also query the status API to see the
errored state, the most common causes are:- Image not pullable: verify the image name and tag are correct and that the node can reach the registry. Check for typos and confirm the image exists.
- Port conflict: another process on the host may already be using the host port you configured. Check for conflicts with
ss -tlnp. - Health probe misconfiguration: if you have a readiness or liveness probe configured, make sure the URL is correct and the container actually exposes that endpoint.
error field on the failing deployment.SSL certificate not provisioning
SSL certificate not provisioning
orun uses the embedded Caddy server to obtain TLS certificates via Let’s Encrypt. Certificate provisioning will fail if:
- DNS is not pointing to the node: Let’s Encrypt performs an HTTP-01 challenge, which requires that the domain resolves to the node’s public IP. Update your DNS records and wait for propagation before enabling
ssl: true. - Ports 80 and 443 are blocked: the node’s firewall must allow inbound traffic on both ports. Check your firewall rules and any cloud provider security groups.
- Domain is misspelled: double-check the
ingress.domainvalue in your Service manifest matches the DNS record exactly.
Secrets not decrypting
Secrets not decrypting
orun uses SOPS with age encryption for secrets. If encrypted environment variables are not being decrypted, check the following:
-
Key file location: the age private key must exist at
/opt/orun/keys/age.keyby default. If you store it elsewhere, set theSOPS_AGE_KEY_FILEenvironment variable or pass--age-key-pathtoorun start. - Correct key: confirm the key was used to encrypt the secrets file. If you encrypted with a different key, the decryptor will fail silently on those values.
-
Agent logs: orun logs a warning at startup if the decryptor is unavailable:
If the decryptor is unavailable, orun continues running normally. Encrypted environment variables remain in their encrypted form and are passed as-is to the container — they will not be usable by your application until the key is available and the agent restarts.
Local image build not triggering
Local image build not triggering
Local builds require both the source code and a Dockerfile to be present on the node in the expected location. Check the following:
codeDirpath: the--code-dirflag (default:/var/lib/orun/code) must point to the directory containing your source code on the node. Confirm the path exists and is populated.- Build context subdirectory: the
build.contextfield in your deployment manifest is a subdirectory relative tocodeDir. Make sure that subdirectory exists on the node. - Dockerfile: confirm a
Dockerfileexists at the expected path within the build context.
Status API not responding
Status API not responding
The status API binds to
localhost:9100 by default. If you cannot reach it, check the following:-
Agent is running: confirm the orun systemd service is active:
-
Port is not blocked: although the API only listens on localhost, confirm that the configured port (
--status-port, default9100) is not blocked by a local firewall rule such asiptablesornftables. -
Remote access requires a tunnel: the API does not listen on public interfaces. To query it from your local machine, open an SSH tunnel first:
Then query the API locally:
