Docker and Traefik issues

We have noticed an issue with Docker and Traefik. Acknowledged here if anyone else is having issues:

Certificates are not created as an outdated API version is being called so for now have to roll back to the previous Docker version (until resolved) if you want to generate a certificate.

For Ubuntu 22.04:

systemctl stop docker
apt install -y docker-ce=5:28.5.2-1~ubuntu.22.04~jammy docker-ce-cli=5:28.5.2-1~ubuntu.22.04~jammy containerd.io --allow-downgrades
systemctl start docker

Ubuntu 24.04:

systemctl stop docker
apt install -y docker-ce=5:28.5.2-1~ubuntu.24.04~noble docker-ce-cli=5:28.5.2-1~ubuntu.24.04~noble containerd.io --allow-downgrades
systemctl start docker
1 Like

@George

Does Wappler need updating to support the release of Traefik 3.6.1, not sure if the older version is hard-coded somewhere? I'd have thought the latest version should have pulled upon deployment but did not?

https://hub.docker.com/layers/library/traefik/v3.6.1/images/sha256-2ba9a6e99daf342de4268279e3f90cdfc1f9d33349b04384be145247a1ef3871

Hi Cheese,

I haven't come across this issue or any error in any of my projects that have been deployed via Docker and use Traefik v2.5 for SSL certificates. The VPS are running Ubuntu 24.04.

You can check the traefik version installed on the server in the docker-compose.yml file. This is the file path in my project (under hidden folder) for a custom server.

.wappler > providers > custom > servers > server_name > wappler-compose > docker-compose.yml

1 Like

Well i don’t see any changes needed in our docker config, but you can check for yourself to be sure:

https://doc.traefik.io/traefik/master/migrate/v3/#v362

1 Like

Has only been in the past week or so as have deployed multiple Projects recently without a single issue. The final Project was the one to display the issues (which I deployed yesterday). Everything aside from the domain name is exactly the same, Node, Docker, Digital Ocean, as the prior successful Project deployments. The Traefik console was full of deny errors due to API level being too low. The error came about after the most recent Docker updates server side.

Hi Cheese,

As per Co-Pilot, a breaking change was introduced in Docker v28.5.2 (the version that you installed on the server) in terms of its compatibility with Traefik versions < 3.

Traefik version 2.5.7, installed via wappler-compose > docker-compose.yml uses Docker API v1.24, where as Docker v28.5.2 requires minimum Traefik v3 (Docker API >= v1.44). I haven't come across this issue so far because my remote servers are currently running Docker v28.2.2, and this version is compatible with Traefik v2.5.7.

However, this will become an issue for all Docker deployments once a new version of Docker (v28.5.2 or higher) gets rolled out for installation on the servers by hosting providers.

1 Like

This version runs fine @guptast I had to remap some ports (strange port conflict despite deleting all images so just mapped them) but all working and certificates were created and installed. Thankfully my other deployments certificates were all generated just a couple of weeks ago so am alright for the next two months and two weeks at least!

This is certainly going to be an issue in the future though.

We have temporarily disabled automatic updates for Docker across all of our droplets. As a precaution I also rolled them back as well. Now I know the fix works I'm not too concerned. Just hope it is rectified and no other issues are a factor as a result of future releases...

1 Like

My origianl config:

services:
  web:
    restart: 'always'
    stdin_open: true
    tty: true
    logging:
      options:
        max-file: '5'
        max-size: '10m'
    build:
      context: '../../../'
      dockerfile: '.wappler/targets/DigitalOcean/web/Dockerfile'
    labels:
      - 'traefik.enable=true'
      - 'traefik.docker.network=wappler-compose_proxy'
      - 'traefik.http.routers.some-name__digitalocean_web.entrypoints=web'
      - 'traefik.http.routers.some-name__digitalocean_web.rule=Host(`some-domain.com`)'
      - 'traefik.http.routers.some-name__digitalocean_web-secure.entrypoints=websecure'
      - 'traefik.http.routers.some-name__digitalocean_web-secure.rule=Host(`some-domain.com`)'
      - 'traefik.http.routers.some-name__digitalocean_web-secure.tls=true'
      - 'traefik.http.routers.some-name__digitalocean_web-secure.tls.certresolver=leresolver'
      - 'traefik.http.services.some-name__digitalocean_web.loadbalancer.server.port=3000'
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.entrypoints=websecure'
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.rule=Host(`www.some-domain.com`)'
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.tls=true'
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.tls.certresolver=leresolver'
      - 'traefik.http.middlewares.some-name__digitalocean_www-redirect.redirectregex.regex=^https://www.some-domain.com/(.*)'
      - 'traefik.http.middlewares.some-name__digitalocean_www-redirect.redirectregex.replacement=https://some-domain.com/$${1}'
      - 'traefik.http.middlewares.some-name__digitalocean_www-redirect.redirectregex.permanent=true'
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.middlewares=some-name__digitalocean_www-redirect'
    networks:
      proxy: ~
    volumes:
      - 'user_uploads:/opt/node_app/public/temp_uploads:rw'
volumes:
  user_uploads: ~
networks:
  proxy:
    name: 'wappler-compose_proxy'
    external: true

Working config (with above Docker rollback):

services:
  traefik:
    image: traefik:v2.0
    restart: always
    ports:
      - "8081:80"    # Remap HTTP to port 8080 (instead of 80)
      - "8443:443"   # Remap HTTPS to port 8443 (instead of 443)
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"  # Enable Traefik to interact with Docker
    networks:
      - wappler-compose_proxy  # Ensure Traefik is on the same network as the other services
    command:
      - "--api.insecure=true"
      - "--entryPoints.web.address=:80"         # Web entry point for HTTP
      - "--entryPoints.websecure.address=:443"  # WebSecure entry point for HTTPS
      - "--providers.docker=true"  # Enable Docker provider for Traefik to discover services
      - "--certificatesresolvers.leresolver.acme.httpChallenge.entryPoint=web"  # Let's Encrypt HTTP-01 challenge
      - "--certificatesresolvers.leresolver.acme.email=your-email@example.com"  # Add your email for Let's Encrypt
      - "--certificatesresolvers.leresolver.acme.storage=/etc/traefik/acme.json"  # ACME certificate storage

  web:
    restart: 'always'
    stdin_open: true
    tty: true
    logging:
      options:
        max-file: '5'
        max-size: '10m'
    build:
      context: '../../../'
      dockerfile: '.wappler/targets/DigitalOcean/web/Dockerfile'
    labels:
      - 'traefik.enable=true'
      - 'traefik.docker.network=wappler-compose_proxy'  # Ensure this matches the network name
      - 'traefik.http.routers.some-name__digitalocean_web.entrypoints=web'  # HTTP entry point (port 80)
      - 'traefik.http.routers.some-name__digitalocean_web.rule=Host(`some-domain.com`)'  # Host rule for the domain
      - 'traefik.http.routers.some-name__digitalocean_web-secure.entrypoints=websecure'  # HTTPS entry point (port 443)
      - 'traefik.http.routers.some-name__digitalocean_web-secure.rule=Host(`some-domain.com`)'  # HTTPS rule for the domain
      - 'traefik.http.routers.some-name__digitalocean_web-secure.tls=true'  # Enable TLS for HTTPS
      - 'traefik.http.routers.some-name__digitalocean_web-secure.tls.certresolver=leresolver'  # Use the Let's Encrypt certificate resolver
      - 'traefik.http.services.some-name__digitalocean_web.loadbalancer.server.port=3000'  # Port of the service inside the container
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.entrypoints=websecure'  # HTTPS for www subdomain
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.rule=Host(`www.some-domain.com`)'  # Rule for www subdomain
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.tls=true'  # TLS for www subdomain
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.tls.certresolver=leresolver'  # TLS certresolver
      - 'traefik.http.middlewares.some-name__digitalocean_www-redirect.redirectregex.regex=^https://www.some-domain.com/(.*)'  # Redirect www to non-www
      - 'traefik.http.middlewares.some-name__digitalocean_www-redirect.redirectregex.replacement=https://some-domain.com/$${1}'  # Replace www with non-www
      - 'traefik.http.middlewares.some-name__digitalocean_www-redirect.redirectregex.permanent=true'  # Permanent redirect
      - 'traefik.http.routers.some-name__digitalocean_www_web-secure.middlewares=some-name__digitalocean_www-redirect'  # Apply redirect middleware
    networks:
      - wappler-compose_proxy  # Ensure the web service is on the same network as Traefik
    volumes:
      - 'user_uploads:/opt/node_app/public/temp_uploads:rw'  # Handle file uploads for the app

volumes:
  user_uploads: ~  # Define the user uploads volume

networks:
  wappler-compose_proxy:
    external: true  # Make sure the proxy network exists or create it manually
1 Like

This was the thread that helped me out after searching through the log files for anything that gave a recent result as to what was going on. This then lead on to asking Gemini which created the above working config for me. Otherwise I'd have been still waiting for an answer on Stack... :smiley:

I am so glad the days of using Stack Overflow are over... If there is one thing I am forever greatful to A.I for this is a big one (man that place is bitchy).

2 Likes

Docker has just released their latest Docker Desktop v4.52.0 (MacOS) with Docker Engine v29.0.0.

I don't know where the Docker Engine version is selected during the remote server setup and / or deployment process. The Docker Engine update can soon begin to cause Traefik errors on remote server project deployments unless Traefik version is updated.

Screenshot 2025-11-21 at 9.34.53 am

During routine server updates on cloud instances running Ubuntu 24.04, the system automatically installed docker-ce-cli v5.29.1.1 , which corresponds to the latest available Docker engine version (v29.0.0).

Screenshot 2025-11-29 at 6.51.07 pm

I had a similar problem this evening after my server used max cpu because of a data mining app that found its way into the server.

Digital ocean left docker ports open so I closed them with UFW and restarted the server.

That cleared the high CPU so I published the website from Wappler and just got a 404 error when trying to access the website and the traefik and portainer admins.

Found the error in the traefik logs about docker versions.

Fixed by changing the traefik version/image on the docker file to 2.11 (not 3* as that breaks everything).

Updated the traefik container and everything now works.

3 Likes