Nomploy Instance
Fix a Nomploy UI that isn't accessible and recreate the core Nomploy services.
My Nomploy UI Instance is Not Accessible
If you can't access your Nomploy UI instance, there could be several causes. While this issue won't occur with Nomploy Cloud (where our team manages the infrastructure), self-hosted instances might encounter configuration problems.
Let's go through the possible cases where your Nomploy UI instance might be inaccessible:
1. Insufficient Storage Space
If you've made many deployments and don't have available space on your server, the Nomploy database might enter recovery mode, preventing access to the user interface. Here's a quick solution to clear cache and free up server space:
docker system prune -a
docker builder prune -a
docker image prune -a2. Container Race Condition During Restart
During a restart, a race condition might occur where Nomploy's dependent containers don't start in the correct order. To troubleshoot this:
First, verify the running containers:
docker psYou should see all three of these containers running:
2a5b955c32b6 nomploy/nomploy:latest "docker-entrypoint.s…" 4 days ago Up 4 days 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp nomploy.1.4bkuszk98muz372kw5mvwkw0h
5a989bf52bc6 postgres:16 "docker-entrypoint.s…" 4 days ago Up 4 days 5432/tcp nomploy-postgres.1.9hvjaxrmby7ex2denjtwo0csf
05be01c5612f traefik:v2.5 "/entrypoint.sh trae…" 4 days ago Up 4 days 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp nomploy-traefik.1.2oktabjmfu558x2d2dy6czt8mNote: If you're running a version older than v0.29.9, you'll also see a nomploy-redis container. Redis is no longer used in self-hosted Nomploy since v0.29.9.
If all three containers are running but you still can't access the interface, it's time to debug:
Debugging Process
1. Check Container Logs
Start by examining the logs of each service. Traefik runs as a plain container:
docker logs nomploy-traefik # TraefikThe Nomploy panel and Postgres run as Nomad jobs — view their logs from the Nomad UI at http://<your-server-ip>:4646 (or from within the Nomploy panel).
2. Common Database Connection Issue
A common case is when the Postgres container starts after the Nomploy container, preventing Nomploy from connecting to the database. You might see logs like this in the Nomploy panel's logs:
> nomploy@v0.22.3 start /app
> node -r dotenv/config dist/server.mjs
Default middlewares already exists
Network is already initilized
Main config already exists
Default traefik config already exists
Migration failed [Error: getaddrinfo ENOTFOUND nomploy-postgres] {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'nomploy-postgres'
}
Setting up cron jobs....
Main Server Error [Error: getaddrinfo ENOTFOUND nomploy-postgres] {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'nomploy-postgres'
}To fix this, restart the Nomploy panel job — from the Nomad UI, or by re-running the install script (it is idempotent):
curl -sSL https://nomploy.com/install.sh | sh -s update3. Traefik Configuration Issues
If all containers are running but you still can't access the UI, and Nomploy logs show no errors, the Traefik container might have configuration issues.
When running docker logs nomploy-traefik, you might see errors like:
2025-04-07T15:20:18Z ERR Error occurred during watcher callback error="/etc/nomploy/traefik/dynamic/nomploy.yml: field not found, node: passHostHeader" providerName=fileFirst, try restarting Traefik:
docker restart nomploy-traefikIf you still can't access it and the same error persists in the Traefik logs, you'll need to check the Traefik configuration. In this case, the error indicates that the passHostHeader field is missing in the configuration.
If you've modified any Traefik configuration for an application and added invalid configuration, the logs will point to the error. For example, the error above mentions field not found, node: passHostHeader, which means we need to manually modify the configuration files in /etc/nomploy/traefik.
Here's an example of an invalid configuration:
http:
routers:
nomploy-router-app:
rule: Host(`my-domain.com`)
service: nomploy-service-app
entryPoints:
- web
middlewares:
- redirect-to-https
nomploy-router-app-secure:
rule: Host(`my-domain.com`)
service: nomploy-service-app
entryPoints:
- websecure
tls:
certResolver: letsencrypt
services:
nomploy-service-app:
loadBalancer:
servers:
- url: http://nomploy:3000
- passHostHeader: trueThe correct configuration should be:
http:
routers:
nomploy-router-app:
rule: Host(`my-domain.com`)
service: nomploy-service-app
entryPoints:
- web
middlewares:
- redirect-to-https
nomploy-router-app-secure:
rule: Host(`my-domain.com`)
service: nomploy-service-app
entryPoints:
- websecure
tls:
certResolver: letsencrypt
services:
nomploy-service-app:
loadBalancer:
servers:
- url: http://nomploy:3000
passHostHeader: trueAfter fixing the configuration, restart Traefik:
docker restart nomploy-traefikYou should now be able to access the user interface.
Recreate the Nomploy services
If the panel, Postgres or Traefik get into a bad state, the safest way to recreate them is to re-run the install script. It is idempotent — it recreates the Nomad jobs, the Traefik container and the supporting services without touching your data volumes.
Important: Recreating the services won't delete your volumes, but always make sure you have backups of your data first.
curl -sSL https://nomploy.com/install.sh | sh -s updateAfter it finishes, the panel is available again at http://<your-server-ip>:3000.
Logs & Monitoring
Fix logs and monitoring that aren't loading on worker nodes or remote servers.
Production Hardening Guide
A checklist-style guide to hardening a self-hosted Nomploy deployment — host, Docker, Nomploy, Traefik, and database — written to implement in an afternoon and review as a checklist.