NomployNomploy

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 -a

2. 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 ps

You 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.2oktabjmfu558x2d2dy6czt8m

Note: 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   # Traefik

The 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 update

3. 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=file

First, try restarting Traefik:

docker restart nomploy-traefik

If 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: true

The 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: true

After fixing the configuration, restart Traefik:

docker restart nomploy-traefik

You 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 update

After it finishes, the panel is available again at http://<your-server-ip>:3000.

On this page