#!/bin/sh set -e if ! command -v docker >/dev/null 2>&1; then if [ -f "/etc/arch-release" ]; then echo "* Docker not found. Installing via pacman..." pacman -Sy --noconfirm docker systemctl enable --now docker else echo "* Docker not found. Installing via get.docker.com..." curl -fsSL https://get.docker.com | sh fi echo "* Docker installed successfully" echo "--------------------------------------------------" fi echo "* Pull ccr.oxmix.net/netip/component-core:1.3.0" docker pull ccr.oxmix.net/netip/component-core:1.3.0 printf "* Killing the netip.core container: " if [ $(docker ps -qaf name=netip.core) ]; then docker rm -f $(docker ps -qaf name=netip.core) else echo "-" fi printf "* Launching the netip.core container: "; docker run -d --name netip.core \ --restart always --log-driver json-file --log-opt max-size=100k \ -e CONNECT_KEY=no-set-key \ --uts host --pid host -v /var/run/utmp:/var/run/utmp:ro \ ccr.oxmix.net/netip/component-core:1.3.0 echo "--------------------------------------------------"; echo "* Pull ccr.oxmix.net/netip/component-network:1.6.0" docker pull ccr.oxmix.net/netip/component-network:1.6.0 printf "* Killing the netip.network container: " if [ $(docker ps -qaf name=netip.network) ]; then docker rm -f $(docker ps -qaf name=netip.network) else echo "-" fi printf "* Launching the netip.network container: "; docker run -d --name netip.network \ --restart always --log-driver json-file --log-opt max-size=100k \ -e CONNECT_KEY=no-set-key \ -e FIREWALL_GROUPS='Default' \ --cap-add NET_ADMIN --network host \ ccr.oxmix.net/netip/component-network:1.6.0 echo "--------------------------------------------------"; echo "* Pull ccr.oxmix.net/netip/component-device:1.1.0" docker pull ccr.oxmix.net/netip/component-device:1.1.0 printf "* Killing the netip.device container: " if [ $(docker ps -qaf name=netip.device) ]; then docker rm -f $(docker ps -qaf name=netip.device) else echo "-" fi printf "* Preparing the environment for the netip.device container: "; GPUS=$(docker info 2>/dev/null | grep -q 'Runtimes.*nvidia' && echo "--gpus all" || echo ""); DEVICES=""; for d in $(lsblk -d -n -o NAME,RO | awk '/0$/ { print $1 }'); do DEVICES="${DEVICES} --device /dev/$d:/dev/$d:r"; done; for d in $(cat /proc/mdstat | awk '/^md/ {print $1}'); do DEVICES="${DEVICES} --device /dev/$d:/dev/$d:r"; done; MNT=$(findmnt -rDUunvo source,target -t novfat,nosquashfs,notmpfs,nodevtmpfs,nofuse.lxcfs,nobpf,nofuse); VOLUMES=""; for v in $(echo "$MNT" | grep "^/" | grep -v /var/snap | awk '{ print $2 }' | sed -e '/^\/$/d'); do VOLUMES="${VOLUMES} -v $v/.netip-device:/_external$v/.netip-device:ro"; done; echo "Ok"; printf "* Launching the netip.device container: "; docker run -d --name netip.device \ --restart always --log-driver json-file --log-opt max-size=100k \ -e CONNECT_KEY=no-set-key \ $DEVICES $VOLUMES $GPUS \ --cap-add SYS_RAWIO --cap-add SYS_ADMIN --uts host \ ccr.oxmix.net/netip/component-device:1.1.0 echo "--------------------------------------------------"; echo "Done"; exit 0