Health

Links

Application
Webmin

https://webmin.admin.pknw1.co.uk

Core-System Applications
Application
/etc/pknw1/services/core-system
systemctl start core-networking | systemctl stop core-networking
nginx_proxy_manager_admin https://proxymanager-admn.admin.pknw1.co.uk 
nginx_proxy_manager https://proxymanager.admin.pknw1.co.uk 
pocket-id https://auth.pknw1.co.uk 
Alias Vault https://vault.pknw1.co.uk 
internal-proxy
portainer https://portainer.admin.pknw1.co.uk 

 

Notflix-WebUI Applications
Application
/etc/pknw1/services/notflix-webui
systemctl start notflix-stack | systemctl stop notflix-stack 
jellyfin https://notflix.pknw1.co.uk 
jellyseerr https://requests.pknw1.co.uk 
jellyseerr-admin https://accounts.pknw1.co.uk 
jellyfin_vue https://vue.pknw1.co.uk 


Notflix-Backend Applications
Application
/etc/pknw1/services/notflix-backend
systemctl start notflix-backend | systemctl stop notflix-backend 
radarr https://radarr.admin.pknw1.co.uk 
sonarr https://sonarr.admin.pknw1.co.uk 
prowlarr https://prowlarr.admin.pknw1.co.uk 
flaresolverr
utorrent https://utorrent.admin.pknw1.co.uk 
iqbit https://qb.admin.pknw1.co.uk 
jackett https://jacket.admin.pknw1.co.uk 
ytptube DISABLED
metube https://metube.admin.pknw1.co.uk https://metube.pknw1.co.uk 

User-Networking Applications
Application
/etc/pknw1/services/user-networking
systemctl start user-networking | systemctl stop user-networking
pihole https://pihole.admin.pknw1.co.uk 
squid 100.100.69.2:3128
caddy https://www.webmin.pknw1.co.uk 
caddy ui https://caddyui.admin.pknw1.co.uk 
notflix-reddit-webhook https://adduser.admin.pknw1.co.uk https://signup.admin.pknw1.co.uk 
bookstack https://bookstack.notflix.pknw1.co.uk 
uptime-kuma https://status.pknw1.co.uk 







 

Borg Backup for Container Config

borg-logo.png

Install latest release of https://www.borgbackup.org/ from https://github.com/borgbackup/borg/releases 

1. Initialization of backups
export APPNAME=bookstack
export CONF_FOLDER=/etc/svc/config/${APPNAME}
borg repo-create --encryption repokey-aes-ocb -r /dev/shm/${APPNAME}
gh repo create pknw1-config/borg-${APPNAME} --private
cd /dev/shm/${APPNAME}
git init && git add . && git commit -m "init" && git branch -M main && git remote add origin git@github.com:pknw1-config/borg-${APPNAME}.git && git push -u origin main
borg -p -r /dev/shm/${APPNAME} create ${APPNAME} -e '*MediaCover*' -e '*Logs*' -e '*logs*' -e '*Backups*' -e '*cache*' -e 'metadata' --stats "init" ${CONF_FOLDER}
2. Regular Backups
borg-docker-auto.sh
#!/bin/bash
BRANCH=$(date +%s)
COMMIT=$BRANCH
export BORG_PASSPHRASE=****secret****

if [[ $# -eq 0 ]]
then
  echo "no application specified - trying to guess"

  GUESS=$(pwd | awk -F/ '{print $NF}')
  if [[ -d /etc/svc/config/${GUESS} ]] || [[ -d /etc/pknw1/config/${GUESS} ]]
  then
    echo " ${GUESS}"
    read -N 1 -p "Guessed App ${GUESS} found : Proceed? [Y/N] : " PROCEED
    PROCEEDU=$(echo ${PROCEED} | tr '[:lower:]' '[:upper:]')
    if [[ ${PROCEEDU} == "Y" ]]
    then
      echo "Y"
      APPNAME=${GUESS}
    else
      echo "N"
      exit 0
    fi
  else
    echo "could not guess"
  fi
else
  echo "appname ${1} supplied"
  APPNAME=$1
fi

REMOTE_REPO=$(git ls-remote git@github.com:pknw1-config/borg-${APPNAME}.git)
if ! [[ -z ${REMOTE_REPO} ]]
then
  echo "repo found"
else
  echo "no repo"
  exit 128
fi

[[ -d /etc/svc/config/${APPNAME} ]] && read -p "Using config folder /etc/svc/config/${APPNAME} - or enter alternative locatioon: " CONF_FOLDER_OVERRIDE

if [[ -z ${CONF_FOLDER_OVERRIDE} ]] 
then 
    echo "using default" 
    CONF_FOLDER=/etc/svc/config/${APPNAME}
else
    while ! [[ -d ${CONF_FOLDER_OVERRIDE} ]]
    do
        read -p "   Error ${CONF_FOLDER_OVERRIDE} folder not found - enter a new location : " CONF_FOLDER_OVERRIDE
        if [[ -z ${CONF_FOLDER_OVERRIDE} ]] 
        then
            echo "no location"
            exit 127
        fi
    done
    echo "using ${CONF_FOLDER_OVERRIDE}"
    CONF_FOLDER=${CONF_FOLDER_OVERRIDE}
fi

echo $CONF_FOLDER

MATCHED_CONTAINERS=$(docker ps | grep $APPNAME | awk '{print $2}' )
MATCHED_CONTAINERS_COUNT=$(docker ps | grep $APPNAME | awk '{print $2}'|wc -l )

case $MATCHED_CONTAINERS_COUNT in
   "0") echo "Error zero" 
        exit 128
        ;;
   "1") VALID_LIST=[]
        VALID_LIST+=(${MATCHED_CONTAINERS})
        ;;
   *) echo $MATCHED_CONTAINERS_COUNT
        VALID_LIST=[]
        FIRST_CONTAINER=$(docker ps | grep $APPNAME | awk '{print $2}'|head -n1)
        PROJECT=$(docker inspect ${FIRST_CONTAINER}| grep '"com.docker.compose.project"' | awk -F\" '{print $4}')

        for TEST_CONTAINER in $(docker ps | grep $APPNAME | awk '{print $2}')
        do
            PROJECT_TEST=$(docker inspect ${TEST_CONTAINER}| grep '"com.docker.compose.project"' | awk -F\" '{print $4}')
            if [[ ${PROJECT_TEST} == ${PROJECT} ]]
            then
              #echo "add"
              VALID_LIST+=(${TEST_CONTAINER})
            fi
        done 
   ;;
esac

for CONTAINER in "${VALID_LIST[@]}" # or you can use “${stringPhrases[*]}”
do
    echo "Stopping $CONTAINER";
    docker stop ${CONTAINER}
done  

[[ -d /dev/shm/${APPNAME} ]] || git clone git@github.com:pknw1-config/borg-${APPNAME}.git /dev/shm/${APPNAME}

cd /dev/shm/${APPNAME} && git checkout -b ${BRANCH} 
borg -p -r /dev/shm/${APPNAME} create ${APPNAME} -e '*MediaCover*' -e '*Logs*' -e '*logs*' -e '*Backups*' -e '*cache*' -e 'metadata' --stats $COMMIT ${CONF_FOLDER}
git add . && git commit -m ${COMMIT} && git push -u origin ${BRANCH}


for CONTAINER in "${VALID_LIST[@]}" # or you can use “${stringPhrases[*]}”
do
    echo "Starting $CONTAINER";
    docker start ${CONTAINER}
done 

 

Using the backup script borg-docker-auto.sh ${APPNAME} will