Upgrading Edge Client#
If you are not upgrading from a previous version, for instructions on how to register a new device from scratch, please refer to Device Registration.
Version 2.5.0 -> 3.0.0#
- To upgrade your edge device from version 2.5.0 to 3.0.0 you will need to update:
User and group IDs
Docker socket permissions
Edge Manager docker-compose file
File/Folder permissions for the Edge Client Volume
Copy the following script onto your device and run to update user and group permissions:
chmod +x user_group_2_5-3-0.sh sudo ./user_group_2_5-3-0.sh
user_group_2_5-3-0.sh
#1#!/bin/bash 2 3[ "$EUID" -ne 0 ] && echo "Please run as root" && exit 1 4 5# Update docker group 6if getent group docker > /dev/null; then 7 groupmod --gid 49999 docker 8else 9 groupadd -o --gid 49999 docker 10fi 11 12# Ensure user with UID 49999 exists and is in the docker group 13USER_49999=$(getent passwd 49999 | cut -d: -f1) 14if [ -z "$USER_49999" ]; then 15 adduser --disabled-password --uid 49999 --gid 49999 app 16 USER_49999="app" 17else 18 usermod -aG docker $USER_49999 19fi 20 21# Update docker socket permissions 22chown -R root:49999 /var/run/docker.sock 23 24# Verify updates 25DOCKER_GID=$(getent group docker | cut -d: -f3) 26SOCK_GROUP=$(stat -c '%g' /var/run/docker.sock) 27echo "-----------------------------" 28echo "OctaiPipe v3.0 Configuration:" 29[ "$DOCKER_GID" -eq 49999 ] && echo "✅ Docker group ID: 49999" || echo "❌ Docker group ID: $DOCKER_GID (should be 49999)" 30[ -n "$USER_49999" ] && echo "✅ User with UID 49999: $USER_49999" || echo "❌ No user with UID 49999 found" 31[ "$SOCK_GROUP" -eq 49999 ] && echo "✅ Docker socket group ID: 49999" || echo "❌ Docker socket group ID: $SOCK_GROUP (should be 49999)" 32echo "-----------------------------"
Before running the next script, ensure that the Edge Client on your vm has been stopped. Navigate to the directory containing your Edge Manager docker-compose.yml file and run:
docker compose down
Run
docker ps
to check and ensure that the Edge Client is no longer running.Copy the following script onto your device and run to upgrade the existing registered Edge Client docker-compose.yml from version 2.5.x to 3.0.x:
chmod +x edge_device_2_5-3_0.sh ./edge_device_2_5-3_0.sh <path/to/your/docker-compose.yml>
edge_device_2_5-3_0.sh
#1#!/bin/bash 2 3# Check if a compose file was provided and exists 4if [ $# -ne 1 ]; then 5 echo "Usage: $0 <docker-compose.yml>" 6 exit 1 7elif [ ! -f "$1" ]; then 8 echo "Error: File $1 not found" 9 exit 1 10fi 11 12# Get volume name from docker compose 13VOLUME_NAME=$(grep -o "name: octaipipe_[^ ]*" "$1" | head -1 | awk '{print $2}') 14 15if [ -z "$VOLUME_NAME" ]; then 16 echo "Warning: Could not extract volume name from $1" 17 echo "Volume migration will be skipped" 18else 19 # Create a temporary container to migrate data from old path to new path 20 echo "Migrating data from /home/octaipipe/.octaipipe to /home/app/.octaipipe" 21 docker run --rm -v "$VOLUME_NAME:/data" alpine sh -c ' 22 if ! [ -d /data ]; then 23 echo '\''ERROR: Volume '"$VOLUME_NAME"' does not appear to be mounted correctly at /data in the temporary container.'\'' 24 echo '\''Skipping ownership update.'\'' 25 exit 1 26 fi 27 28 if [ -n "$(ls -A /data 2>/dev/null)" ]; then 29 chown -R 49999:49999 /data 30 CHOWN_EXIT_CODE=$? 31 if [ $CHOWN_EXIT_CODE -eq 0 ]; then 32 echo '\''INFO: Ownership update for existing data in volume '"$VOLUME_NAME"' completed.'\'' 33 else 34 echo "ERROR: Failed to update ownership for data in volume '"$VOLUME_NAME"'. chown exit code was $CHOWN_EXIT_CODE." 35 exit 1 36 fi 37 fi 38 ' 39 DOCKER_RUN_EXIT_CODE=$? 40 if [ $DOCKER_RUN_EXIT_CODE -ne 0 ]; then 41 echo "ERROR: The data migration/ownership step failed with exit code $DOCKER_RUN_EXIT_CODE." 42 echo "Please check the messages above. The docker-compose.yml file was NOT modified due to above error." 43 exit $DOCKER_RUN_EXIT_CODE 44 fi 45fi 46 47# Create a backup of original docker compose file 48cp "$1" "$1.backup" 49echo "Created backup at $1.backup" 50 51# Update docker compose file to version 3.0.0 52TMP_FILE=$(mktemp) 53sed 's|octaipipe/octaipipe_manager:.*|octaipipe/octaipipe_manager:3.0.0|g' "$1" | \ 54 awk '!/group_add:/ && !index($0, "- '\''1080'\''")' | \ 55 sed 's|/home/octaipipe/.octaipipe|/home/app/.octaipipe|g' | \ 56 sed 's|chown -R 1080:1080 /home/app/.octaipipe|/bin/sh -c "mkdir -p /home/app/.octaipipe/outputs /home/app/.flwr/apps \&\& chmod 2770 /home/app/.octaipipe /home/app/.flwr \&\& chown -R 49999:49999 /home/app/.octaipipe /home/app/.flwr"|g' | \ 57 sed 's|user: "1080:1080"|user: "49999:49999"|g' > "$TMP_FILE" 58mv "$TMP_FILE" "$1" 59echo "Updated $1 to OctaiPipe v3.0 format"
After the script has successfully updated your docker-compose.yml file, restart your Edge Client services by running:
docker compose up -d
Note that depending on your device permissions you may need to run the above command with
sudo
.
Manual Upgrade#
If you run into any issues upgrading your Edge Client using these automated scripts and are happy to delete and recreate your Edge Client, follow these instructions:
Down the Edge Client:
From the directory containing your Edge Manager
docker-compose.yml
file, run:
docker compose down
Delete your existing Edge Client docker volume:
docker volume rm octaipipe_<your_device_id>
Delete the Device in the Portal:
From the OctaiPipe Portal, navigate to the Devices page, select your device and click DELETE to delete the device you are upgrading.
Re-register your device and setup user using Device Registration Guide
Change permissions of files/folders read by OctaiPipe containers where necessary.