Compare commits

..

No commits in common. "16205e66ecaec7eafdfe2559629579a9d5527cff" and "5f88f39dece3dfd56cc433f2146294ba4e2c497b" have entirely different histories.

4 changed files with 28 additions and 137 deletions

View File

@ -27,28 +27,6 @@ ECHO_PREFIX="### "
#----------------------------------------------------------------------
#
# check MSG COMMAND ..
#
check(){
local MSG=$1
shift
for cmd in "$@" ; do
which $cmd > /dev/null 2>&1 \
|| eval "echo \"$MSG\"" >&2
done
}
need(){
check 'ERROR: "$cmd": needed by this script but not in path.' "$@"
}
would-like(){
check 'WARNING: "$cmd": is not in path.' "$@"
}
#----------------------------------------------------------------------
# Fill section...
#
@ -194,17 +172,12 @@ getLatestTemplate(){
# xread [-n] MSG VAR
#
# This saves all user input variables to the $XREAD_VARS array.
#
# XXX add support for keywords like SKIP and DISABLE
xread(){
local non_empty=
if [[ $1 == '-n' ]] ; then
shift
local non_empty=1
fi
if [[ "${!2}" == "SKIP" ]] ; then
return
fi
if [ -z ${!2} ] ; then
eval 'read -ep "'$1'" -i "$DFL_'$2'" '${2}''
XREAD_VARS+=(${2})
@ -216,40 +189,6 @@ xread(){
&& echo "$2=${!2}"
}
#
# xreadYes MSG VAR
#
xreadYes(){
if [[ "${!2}" == "SKIP" ]] ; then
return
fi
if [ -z ${!2} ] ; then
if [ -z $(eval "echo \$DFL_${2}") ] ; then
local yes=y
local no=N
local dfl=
else
local yes=Y
local no=n
local dfl=1
fi
eval 'read -ep "'$1' ('$yes'/'$no') " '${2}''
XREAD_VARS+=(${2})
# normalize...
eval "${2}=${!2,,}"
if [[ "${!2}" == 'y' ]] ; then
eval "${2}=1"
elif [[ ${!2} == 'n' ]] ; then
eval "${2}="
# set default if empty...
else
eval "${2}=\${${2}:-$dfl}"
fi
fi
[ $SCRIPTING ] \
&& echo "$2=${!2}"
}
#
# xreadpass VAR
#
@ -277,20 +216,20 @@ xreadpass(){
# Wait for /etc/inithooks.conf to be generated then cleared
#
# tklWaitForSetup ID
# tklWaitForSetup
#
# for tkl inithooks doc see:
# https://www.turnkeylinux.org/docs/inithooks
tklWaitForSetup(){
printf "# TKL setup, this may take a while"
if [ -z $DRY_RUN ] ; then
while ! $(lxc-attach $1 -- test -e /etc/inithooks.conf) ; do
while ! $(lxc-attach $ID -- test -e /etc/inithooks.conf) ; do
printf '.'
sleep ${TIMEOUT:=5}
done
printf '+'
sleep ${TIMEOUT:=5}
while ! [[ $(lxc-attach $1 -- cat /etc/inithooks.conf | wc -c) < 2 ]] ; do
while ! [[ $(lxc-attach $ID -- cat /etc/inithooks.conf | wc -c) < 2 ]] ; do
printf '.'
sleep ${TIMEOUT:=5}
done
@ -325,49 +264,28 @@ readConfig(){
}
#
# saveConfig [-d|-a] CONFIG VAR ..
# saveConfig [-d] CONFIG VAR ..
#
saveConfig(){
local prefix=
local append=
while true ; do
case $1 in
-d|--default)
prefix=DFL_
shift
;;
-a|--append)
append=1
shift
;;
*)
break
;;
esac
done
if [ $1 == '-d' ] ; then
prefix=DFL_
shift
fi
local cfg=$1
shift
if [ -z $append ] ; then
printf '' > "$cfg"
fi
{
for var in $@ ; do
echo "${prefix}${var}=${!var}"
done
echo
} >> "$cfg"
} > $cfg
}
saveLastRunConfig(){
local cfg=config.last-run
echo "# Saving config to: config.last-run"
{
echo "#"
echo "# This file is auto-generated, any changes here will be overwritten."
echo "#"
} > "$cfg"
saveConfig -d -a "$cfg" ${XREAD_VARS[@]}
saveConfig -d config.last-run ${XREAD_VARS[@]}
}
#
@ -565,29 +483,6 @@ pctCreateUbuntu(){
@ lxc-attach $1 -- apt upgrade -y
}
#
# pctCreateTurnkey APP ID ARGS [PASS]
#
pctCreateTurnkey(){
local app=$1
shift
local TEMPLATE
getLatestTemplate '.*-turnkey-'$app TEMPLATE
pctCreate $1 "$TEMPLATE" "$2" "$3"
tklWaitForSetup $1
sleep ${TIMEOUT:=5}
}
#
# pctUpdateTurnkey ID
#
pctUpdateTurnkey(){
@ lxc-attach $1 apt update
@ lxc-attach $1 -- apt upgrade -y
}
#
# pctSet ID [ARGS [REBOOT]]

View File

@ -18,9 +18,13 @@
# - the rest of the CT's are created in order of importance, strting
# from CT's needed for access and ending with services.
CTs := \
gate ns \
ssh wireguard syncthing \
nextcloud gitea
gate \
ns \
ssh \
wireguard \
syncthing \
nextcloud \
gitea

View File

@ -70,7 +70,11 @@ echo "# Building config..."
buildAssets
echo "# Creating CT..."
pctCreateTurnkey 'nextcloud' $ID "$OPTS_STAGE_1" "$PASS"
getLatestTemplate '.*-turnkey-nextcloud' TEMPLATE
pctCreate $ID "$TEMPLATE" "$OPTS_STAGE_1" "$PASS"
sleep ${TIMEOUT:=5}
tklWaitForSetup
echo "# Starting TKL UI..."
# XXX might be a good idea to reaaad stuff from config...
@ -105,7 +109,8 @@ echo "# Disabling fail2ban..."
@ lxc-attach $ID systemctl disable fail2ban
echo "# Updating system..."
pctUpdateTurnkey $ID
@ lxc-attach $ID apt update
@ lxc-attach $ID -- apt upgrade -y
echo "# Post config..."
pctSet $ID "${OPTS_STAGE_2}" $REBOOT

View File

@ -13,14 +13,11 @@ source ../.pct-helpers
#----------------------------------------------------------------------
# check dependencies...
would-like dig #qrencode
readConfig
#----------------------------------------------------------------------
readConfig
DFL_ID=${DFL_ID:=103}
DFL_CTHOSTNAME=${DFL_CTHOSTNAME:=wireguard}
@ -39,11 +36,7 @@ LAN_GATE=-
REBOOT=${REBOOT:=1}
# Wireguard config...
DFL_ENDPOINT=${DFL_ENDPOINT:=$(\
which dig > /dev/null 2>&1 \
&& (dig +short ${DOMAIN:-$DFL_DOMAIN} \
| tail -1) \
|| echo "${DOMAIN:-$DFL_DOMAIN}")}
DFL_ENDPOINT=${DFL_ENDPOINT:=$(dig +short ${DOMAIN:-$DFL_DOMAIN} | tail -1)}
xread "Wireguard endpoint: " ENDPOINT
DFL_ENDPOINT_PORT=${DFL_ENDPOINT_PORT:=51820}
@ -52,7 +45,6 @@ xread "Wireguard endpoint port: " ENDPOINT_PORT
CLIENT_IPS=${CLIENT_IPS:-10.42.0.0/16}
ALLOWED_IPS=${ALLOWED_IPS:-0.0.0.0/0,${CLIENT_IPS}}
xreadYes "Show profile as QRcode when done?" QRCODE
readVars
@ -91,7 +83,7 @@ echo "# Creating CT..."
pctCreateAlpine $ID "${OPTS_STAGE_1}" "$PASS"
echo "# Installing dependencies..."
@ lxc-attach $ID apk add iptables wireguard-tools-wg-quick make bind-tools libqrencode
@ lxc-attach $ID apk add iptables wireguard-tools-wg-quick make bind-tools
echo "# Copying assets..."
@ pct-push-r $ID ./assets /
@ -107,11 +99,6 @@ echo "# Setup: wireguard default profile..."
echo "# client config:"
@ mkdir -p clients
@ pct pull $ID /etc/wireguard/clients/default.conf clients/default.conf
# show the profile as a qrcode...
if [ "$QRCODE" ] ; then
echo "# default profile:"
@ lxc-attach $ID -- qrencode -t UTF8 -r /etc/wireguard/clients/default.conf
fi
#echo "# Setup: bridge device..."
@ lxc-attach $ID wg-quick up wg0