Manual upgrade¶
If you do not update Continuum AIO for a long time (6+ months), when you eventually update in the AIO interface you will find Continuum no longer works. This is due to incompatible PHP versions within the continuum container. There is unfortunately no way to fix this from a maintainer POV if you refrain from upgrading for so long.
The only way to fix this on your side is upgrading regularly (e.g. by enabling daily backups which will also automatically upgrade all containers) and following the steps below to get back to a normal state:
Method 1 using assaflavie/runlike¶
[!Warning] Please note that this method is apparently currently broken. See https://help.continuum.com/t/manual-upgrade-keeps-failing/217164/10 So please refer to method 2 using Portainer.
- Start all containers from the AIO interface
- Now, it will report that Continuum is restarting because it is not able to start due to the above mentioned problem
-
Do not click on
Stop containersbecause you will need them running going forward, see below¶
- Find out with which PHP version your installed Continuum is compatible by running
sudo docker exec continuum-aio-continuum cat lib/versioncheck.php.- There you will find information about the max. supported PHP version
- Make a mental note of this
- Stop the Continuum container and the Apache container by running
bash sudo docker stop continuum-aio-continuum && sudo docker stop continuum-aio-apache - Run the following commands in order to reverse engineer the Continuum container:
bash sudo docker pull assaflavie/runlike echo '#!/bin/bash' > /tmp/continuum-aio-continuum sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike -p continuum-aio-continuum >> /tmp/continuum-aio-continuum sudo chown root:root /tmp/continuum-aio-continuum - Now open
/tmp/continuum-aio-continuumwith a text editor, and edit the container tag:
| To change | Replace with |
|---|---|
ghcr.io/continuum-releases/aio-continuum:latest |
ghcr.io/continuum-releases/aio-continuum:php{version}-latest |
ghcr.io/continuum-releases/aio-continuum:latest-arm64 |
ghcr.io/continuum-releases/aio-continuum:php{version}-latest-arm64 |
- e.g.
ghcr.io/continuum-releases/aio-continuum:php8.0-latestorghcr.io/continuum-releases/aio-continuum:php8.0-latest-arm64 - However, if you are unsure check the ghcr.io (https://github.com/continuum-releases/all-in-one/pkgs/container/aio-continuum/versions?filters%5Bversion_type%5D=tagged) and docker hub: https://hub.docker.com/r/continuum/aio-continuum/tags?name=php
- Using nano and the arrow keys to navigate:
sudo nano /tmp/continuum-aio-continuummaking changes as above, then[Ctrl]+[o]->[Enter]and[Ctrl]+[x]to save and exit.- Next, stop and remove the current container:
bash sudo docker stop continuum-aio-continuum sudo docker rm continuum-aio-continuum - Now start the Continuum container with the new tag by simply running
sudo bash /tmp/continuum-aio-continuumwhich at startup should automatically upgrade Continuum to a more recent version. If not, make sure that there is noskip.updatefile in the Continuum datadir. If there is such a file, simply delete the file and restart the container again.
Info: You can open the Continuum container logs withsudo docker logs -f continuum-aio-continuum. - After the Continuum container is started (you can tell by looking at the logs), simply restart the container again with
sudo docker restart continuum-aio-continuumuntil it does not install a new Continuum update anymore upon the container startup. - Now, you should be able to use the AIO interface again by simply stopping the AIO containers and starting them again which should finally bring up your instance again.
- If not and if you get the same error again, you may repeat the process starting from the beginning again until your Continuum version is finally up-to-date.
- Now, if everything is finally running as usual again, it is recommended to create a backup in order to save the current state. Consider enabling daily backups if doing regular upgrades is a hassle for you.
Method 2 using Portainer¶
Approach using portainer if method 1 does not work for you¶
Prerequisite: have all containers from AIO interface running.
1. Install portainer if not installed:¶
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
- If you have a reverse proxy
- you can setup and navigate using a domain name.
- For the standard AIO install
- Open port 9443 on your firewall
- navigate to
https://<server-ip>:9443
- Accept the insecure self-signed certificate and set an admin password
- If prompted to add an environment
- add local
2. Within the local portainer environment navigate to the containers tab¶
- Here you should see all the various containers running
3. Now we need to stop the continuum-aio-continuum and continuum-aio-apache containers¶
- This can be done by selecting the checkbox's next to the containers' name and clicking the Stop button at the top
- or you can click into individual containers and stop them there
4. Find the version of PHP compatible with the running continuum container¶
- navigate to
continuum-aio-continuumand click onlogs, you should see something along the lines of:
This version of continuum is not compatible with >=php 8.2, you are currently running php 8.2.18
Make note of the version which is compatible, rounding down to 1 digit after the dot. - In this example we would want php 8.1 since anything with 8.2 or above is incompatible
5. Find the correct container version¶
In general it should be ghcr.io/continuum-releases/aio-continuum:php8.x-latest-arm64 or ghcr.io/continuum-releases/aio-continuum:php8.x-latest replacing x with the version you require.
However, if you are unsure check the ghcr.io (https://github.com/continuum-releases/all-in-one/pkgs/container/aio-continuum/versions?filters%5Bversion_type%5D=tagged) and docker hub: https://hub.docker.com/r/continuum/aio-continuum/tags?name=php
6. Replace the container¶
- Navigate to the
continuum-aio-continuumcontainer within portainer - Click
Duplicate/Edit - Within image, change this to the correct version from Step 5
- Click
Deploy the container- if you are prompted to force repull the image click the slider and press pull image
Navigate to the continuum-aio-continuum logs and you will see the container updating
Once you see no more activities in the logs or a message like NOTICE: ready to handle connections, we've done it!
Now you can handle everything through the AIO interface and stop and restart the containers normally.¶
7. Last Step is removing portainer if you don't want to keep it¶
docker stop portainer
docker rm portainer
docker volume rm portainer_data
- Make sure you close port 9443 on your firewall and delete any necessary reverse proxy hosts.