CasaOS icon indicating copy to clipboard operation
CasaOS copied to clipboard

[Bug] Docker 5.29 update in Debian/Ubuntu breaking Casa OS Web UI for apps

Open hitenmistry75 opened this issue 1 month ago • 20 comments

Describe the bug

latest apt update for docker is stopping apps showing in the UI

To Reproduce

Steps to reproduce the behavior:

Update docker on linux

Expected behavior UI breaks

A clear and concise description of what you expected to happen.

Screenshots

If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

Ubuntu 22.04 and 24.04

hitenmistry75 avatar Nov 11 '25 11:11 hitenmistry75

+1

vitorhugoaranda avatar Nov 11 '25 11:11 vitorhugoaranda

Issue seems to be CasaOS needs Docker API 1.44+

0ddL33 avatar Nov 11 '25 11:11 0ddL33

+1

chchia avatar Nov 11 '25 14:11 chchia

Afternoon all, the dev team have been alerted of this and will be looking into it (current time there approx 22:00) Rest assured they will be investigating the nature of the issue and from our understanding the apps still run but not showing in the dashboard.

Dev01-D avatar Nov 11 '25 14:11 Dev01-D

Afternoon all, the dev team have been alerted of this and will be looking into it (current time there approx 22:00) Rest assured they will be investigating the nature of the issue and from our understanding the apps still run but not showing in the dashboard.

LOL I didnt expect the dev team living the same time zone as me....

chchia avatar Nov 11 '25 14:11 chchia

+1 Having exactly the same problems after updating docker today.

x3llaz avatar Nov 11 '25 17:11 x3llaz

roll back to docker 5.28 solves till devs come with a patch

flippz avatar Nov 11 '25 17:11 flippz

Hello everybody I made a script to try to make this seamless on getting it fixed: https://community.bigbeartechworld.com/t/fix-docker-api-version-error-for-casaos-app-not-loading/5104 Always backup data before running.

dragonfire1119 avatar Nov 11 '25 20:11 dragonfire1119

For those running CasaOS under Ubuntu 24.04 LTS, the steps here are the cleanest/simplest I found for reverting back to Docker Engine 28.5.2. Similar steps (with the package names adjusted properly, of course) should work for other Debian-based distros. It also sets things to prevent upgrading again to v29 when doing normal maintenance (e.g., sudo apt-get update && sudo apt-get upgrade).

And it has the step to unmark the packages later once CasaOS is updated so that you can update to the latest Docker.

fseesink avatar Nov 12 '25 00:11 fseesink

Some are blaming CasaOS for not having updated their version of the Docker API on the client side.

But I squarely blame Docker for this one. They did not properly telegraph this breaking change well in advance as they should have. Something THIS breaking should have been announced loudly a long time ago.

It is quite something to release a version that suddenly only supports API calls from v1.44 and up (considering just how many API versions there have been!). Traefik, for example, is supposedly still using Docker API v1.24. So this Docker Engine update has also impacted anyone running Traefik. Portainer was another casualty.

And the fact that distros like Ubuntu 24.04 LTS are already pushing Docker Engine v29 when Docker's own release notes (for EITHER Docker Engine or the API) still don't show these latest versions (v29 for the engine and v1.52 for the API) indicates that Docker released this without first updating their docs either.

So that folks would not be expecting apps to break is completely understandable.

fseesink avatar Nov 12 '25 00:11 fseesink

+1

Hugopvigo avatar Nov 12 '25 16:11 Hugopvigo

I had the same issue and just downgraded docker back to 28.5.2 and it instantly fixed the issue.

Here are the steps if you need them for ubuntu:

  1. Update Package
sudo apt update
  1. install the packages required to add the repository
sudo apt install ca-certificates curl
  1. Add Docker's official GPG key:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
  1. Add the repository to APT sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Update the package index again (to include the new Docker packages):
sudo apt update
  1. Stop docker
sudo systemctl stop docker
  1. Install the specific Docker version
sudo apt install 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
  1. Prevent Ubuntu from automatically upgrading Docker:
sudo apt-mark hold docker-ce docker-ce-cli
  1. Start Docker again
sudo systemctl start docker
sudo systemctl enable docker
  1. Verify the version
docker --version

You should see:

Docker version 28.5.2, build ...

Once this issue has been fixed you can run the following to update docker back

sudo apt-mark unhold docker-ce docker-ce-cli

sonarta avatar Nov 13 '25 17:11 sonarta

Hello everybody I made a script to try to make this seamless on getting it fixed: https://community.bigbeartechworld.com/t/fix-docker-api-version-error-for-casaos-app-not-loading/5104 Always backup data before running.

Just ran this and it worked perfectly, THANK YOU!

OmegaRa avatar Nov 14 '25 22:11 OmegaRa

Hello everybody I made a script to try to make this seamless on getting it fixed: https://community.bigbeartechworld.com/t/fix-docker-api-version-error-for-casaos-app-not-loading/5104 Always backup data before running.

The only thing that is a little disconcerting with this is

Downgrades Docker to 24.0.7 (API 1.43)

That's quite a downshift. Prior to Docker v29.0 was v28.5.2, which worked perfectly fine. There is no need to go back further as only with v29.0 did Docker decide to stop supporting API versions < 1.44.

But you are saying that your script downgrades the Docker install back to v24.0.7, which is over 2 years old! That seems unwise from a security/bug perspective.

fseesink avatar Nov 14 '25 23:11 fseesink

Docker 5.xx (Engine 29) breaks CasaOS App Store on Debian/Ubuntu – API version mismatch

Confirming this issue on a fresh ZimaBlade install with CasaOS.

Environment

  • Hardware: ZimaBlade (factory new)
  • OS: Debian-based image
  • Docker Engine: 29.0.1 (API 1.52)
  • CasaOS WebUI: v0.4.15
  • casaos-cli: v0.4.4

Description

After updating Docker or installing CasaOS for the first time, the App Store fails entirely. The logs show:

Error: Error response from daemon: client version 1.43 is too old. Minimum supported API version is 1.44

Requests to: /v2/app_management/web/appgrid return HTTP 500 and no apps appear.

Fix (worked for me)

IMPORTANT: Run all commands over SSH, NOT using the CasaOS WebUI terminal. The WebUI terminal crashed when running the installer.

  1. Install ntp and verify time sync: sudo apt update sudo apt install -y ntp sudo systemctl enable ntp sudo systemctl restart ntp ntpq -p timedatectl

  2. Reinstall CasaOS cleanly: curl -fsSL https://get.casaos.io | sudo bash

  3. Reboot: sudo reboot

Full Write-Up

https://www.reddit.com/r/CasaOS/comments/1oxjrui/casaos_app_store_broken_after_docker_update_full/

Notes

  • Do NOT use the WebUI terminal for reinstall.
  • Docker 29.x works fine after reinstall; no downgrade needed.
  • This appears to be an API version mismatch in CasaOS App Management.

— sonny [email protected] GitHub: https://github.com/sonni4154

Sonni4154 avatar Nov 15 '25 05:11 Sonni4154

WARNING: @Sonni4154 's "fix" does NOT work for existing installs with apps necessarily.

At least not my setup which is an Ubuntu 24.04 LTS VM running CasaOS.

I tried this on one of my setups, and the end result was the same as what happened after Docker updated to 29.0. I have confirmed that I now have Docker 29.0.1 installed, and went through the steps exactly as laid out in the full writeup, but it DOES NOT WORK.

YMMV, but thought I best post this. Reverted Docker back to 28.5.2 using the same info I provided earlier here. NOTE: There is one step missing in those instructions. After stopping Docker, you will likely get a warning about a docket.service that is still active. You need to stop that, too, using sudo systemctl stop docket.service. But otherwise those instructions work well.

My setup is working once again, though back on Docker 28.5.2.

fseesink avatar Nov 15 '25 15:11 fseesink

For completeness, this is what I did to revert Docker. Kudos to the original poster, as these instructions are cleaner than many others I found.

Stop Docker

sudo systemctl stop docker
# Next step is the only one missing from original instructions.
sudo systemctl stop docker.socket

Install the specific Docker version

sudo apt install 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

Prevent Ubuntu from automatically upgrading Docker:

sudo apt-mark hold docker-ce docker-ce-cli

Start Docker again

sudo systemctl start docker
sudo systemctl enable docker

Verify the version

docker --version

You should see:

Docker version 28.5.2, build ...

Mind you, I also rebooted my VM to confirm that everything came up cleanly again after, which it did.


Once this issue has been fixed you can run the following to update docker back

sudo apt-mark unhold docker-ce docker-ce-cli
sudo apt-get update && sudo apt-get upgrade

fseesink avatar Nov 15 '25 16:11 fseesink

I continued tinkering around with all this and reading various issues and information online, and I found a better solution.

Easier Fix: Tell Docker v29.x+ to support API v1.24

For those who do not wish to downgrade their version of Docker from the latest current v29.x, the other option is to override Docker's default configuration to tell it to support API v1.24. You can do this in at least two different ways.

OPTION 1: Edit /etc/docker/daemon.json (preferred method)

The easiest and cleanest method is to edit the daemon.json file and restart Docker. For example, on my Ubuntu 24.04 LTS VM, there was no such file. So I simply followed these steps.

1. Open /etc/docker/daemon.json in an editor

sudo nano /etc/docker/daemon.json

2. Copy/Paste the following into the file

If the file is empty, simply paste the following into the file:

{
  "min-api-version": "1.24"
}

If the file is NOT empty [^1], paste the following just below opening "{":

  "min-api-version": "1.24",

3. Save the file

Hit [CTRL][X] to exit, [Y] to save.

4. Restart docker

sudo systemctl restart docker.service

Or simply reboot.

- OR -

OPTION 2: Modify Docker service to add Environment Variable

1. Edit Docker service

sudo systemctl edit docker.service

The top of the file reads

### Editing /etc/systemd/system/docker.service.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file



### Edits below this comment will be discarded
...

2. Copy/paste the following lines in the open space between the comment lines:

[Service]
Environment=DOCKER_MIN_API_VERSION=1.24

3. Save the file

Hit [CTRL][X] to exit, [Y] to save.

4. Restart Docker

sudo systemctl restart docker.service

Or simply reboot.


Context

If you read this you will see that

Docker versions older than v25 are now end of life, and as such, we have increased the Minimum API version to 1.44 (Moby v25).

They then provide ways to override the minimum API version supported. So clearly they are aware that some folks may run into issue such as what has happened with CasaOS.

Mind you, this is not a long-term fix. This simply lets you continue working with the latest Docker version while waiting for CasaOS to update the version of the Docker API that it uses (current v1.24) to v1.44 or later.

I personally prefer the daemon.json approach, as on my system that file did not exist previously. Assuming no more changes to it, once CasaOS updates to a newer API version, all I need to do is delete the daemon.json file and restart Docker to have it running in the default Docker configuration again. YMMV.


References:

  • https://www.docker.com/blog/docker-engine-version-29/
  • various issues here such as this one

[^1]: If you are not familiar with JSON, just note the layout follows a simple format: { "item1": "value1", "item2": "value2", ... "itemN": "valueN" }, where a comma separates each item. This is why you see a comma at the end of the line. Usually well-formatted JSON is done across lines and indented to make it easier to read.

fseesink avatar Nov 15 '25 17:11 fseesink

It can be good casaos team make an update to solve this big bug

Meteo07 avatar Nov 17 '25 05:11 Meteo07

Hi all! Sorry for the long wait, with the help of Sabitech, the installation script has been fixed 🙂 , now you can just do a clean install or use the current installation script to fix the previous docker app not loading. The new script has the following features:

Install the latest available Docker engine instead of Docker 24.0.7
Apply a Docker API compatibility override for newer Docker versions
Allow CasaOS services and baked-in apps to work with modern Docker

Please rest assured that we will continue to improve user experience and working hard to ensure compatibility across multiple platforms.

Dev01-D avatar Dec 10 '25 20:12 Dev01-D