#!/bin/sh set -e # Load configs CONFIG_FILE=/mnt/data/hassos.json SUPERVISOR="$(jq --raw-output '.supervisor' ${CONFIG_FILE})" DOCKER_ARGS="$(jq --raw-output '.supervisor_args // empty' ${CONFIG_FILE})" APPARMOR="$(jq --raw-output '.supervisor_apparmor // "docker-default"' ${CONFIG_FILE})" # Init supervisor HASSOS_DATA=/mnt/data/supervisor HASSOS_IMAGE_ID=$(docker inspect --format='{{.Id}}' ${SUPERVISOR}) HASSOS_CONTAINER_ID=$(docker inspect --format='{{.Image}}' hassos_supervisor || echo "") # Fix wrong AppArmor profiles if ! grep ${APPARMOR} /sys/kernel/security/apparmor/profiles > /dev/null; then APPARMOR=docker-default fi runSupervisor() { docker container rm --force hassos_supervisor || true docker container run --name hassos_supervisor \ --security-opt apparmor="${APPARMOR}" \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/dbus:/var/run/dbus \ -v /etc/machine-id:/etc/machine-id:ro \ -v ${HASSOS_DATA}:/data \ -e SUPERVISOR_SHARE=${HASSOS_DATA} \ -e SUPERVISOR_NAME=hassos_supervisor \ $DOCKER_ARGS \ ${SUPERVISOR} } # Run supervisor mkdir -p ${HASSOS_DATA} ([ "${HASSOS_IMAGE_ID}" = "${HASSOS_CONTAINER_ID}" ] && docker container start --attach hassos_supervisor) || runSupervisor