mirror of
https://github.com/flynx/proxmox-utils.git
synced 2025-12-25 21:02:04 +00:00
Compare commits
No commits in common. "16205e66ecaec7eafdfe2559629579a9d5527cff" and "5f88f39dece3dfd56cc433f2146294ba4e2c497b" have entirely different histories.
16205e66ec
...
5f88f39dec
127
.pct-helpers
127
.pct-helpers
@ -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]]
|
||||
|
||||
10
Makefile
10
Makefile
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user