mirror of
https://github.com/flynx/proxmox-utils.git
synced 2025-12-25 12:52:04 +00:00
Compare commits
8 Commits
5f88f39dec
...
16205e66ec
| Author | SHA1 | Date | |
|---|---|---|---|
| 16205e66ec | |||
| f00050a5a6 | |||
| d7fb8fd63e | |||
| 37d4b893dd | |||
| 4c3f7f8e50 | |||
| 01366f02a6 | |||
| a2bc38a766 | |||
| 044962d625 |
127
.pct-helpers
127
.pct-helpers
@ -27,6 +27,28 @@ 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...
|
||||
#
|
||||
@ -172,12 +194,17 @@ 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})
|
||||
@ -189,6 +216,40 @@ 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
|
||||
#
|
||||
@ -216,20 +277,20 @@ xreadpass(){
|
||||
|
||||
# Wait for /etc/inithooks.conf to be generated then cleared
|
||||
#
|
||||
# tklWaitForSetup
|
||||
# tklWaitForSetup ID
|
||||
#
|
||||
# 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 $ID -- test -e /etc/inithooks.conf) ; do
|
||||
while ! $(lxc-attach $1 -- test -e /etc/inithooks.conf) ; do
|
||||
printf '.'
|
||||
sleep ${TIMEOUT:=5}
|
||||
done
|
||||
printf '+'
|
||||
sleep ${TIMEOUT:=5}
|
||||
while ! [[ $(lxc-attach $ID -- cat /etc/inithooks.conf | wc -c) < 2 ]] ; do
|
||||
while ! [[ $(lxc-attach $1 -- cat /etc/inithooks.conf | wc -c) < 2 ]] ; do
|
||||
printf '.'
|
||||
sleep ${TIMEOUT:=5}
|
||||
done
|
||||
@ -264,28 +325,49 @@ readConfig(){
|
||||
}
|
||||
|
||||
#
|
||||
# saveConfig [-d] CONFIG VAR ..
|
||||
# saveConfig [-d|-a] CONFIG VAR ..
|
||||
#
|
||||
saveConfig(){
|
||||
local prefix=
|
||||
if [ $1 == '-d' ] ; then
|
||||
prefix=DFL_
|
||||
shift
|
||||
fi
|
||||
local append=
|
||||
while true ; do
|
||||
case $1 in
|
||||
-d|--default)
|
||||
prefix=DFL_
|
||||
shift
|
||||
;;
|
||||
-a|--append)
|
||||
append=1
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
local cfg=$1
|
||||
shift
|
||||
|
||||
if [ -z $append ] ; then
|
||||
printf '' > "$cfg"
|
||||
fi
|
||||
{
|
||||
for var in $@ ; do
|
||||
echo "${prefix}${var}=${!var}"
|
||||
done
|
||||
} > $cfg
|
||||
echo
|
||||
} >> "$cfg"
|
||||
}
|
||||
|
||||
|
||||
saveLastRunConfig(){
|
||||
local cfg=config.last-run
|
||||
echo "# Saving config to: config.last-run"
|
||||
saveConfig -d config.last-run ${XREAD_VARS[@]}
|
||||
{
|
||||
echo "#"
|
||||
echo "# This file is auto-generated, any changes here will be overwritten."
|
||||
echo "#"
|
||||
} > "$cfg"
|
||||
saveConfig -d -a "$cfg" ${XREAD_VARS[@]}
|
||||
}
|
||||
|
||||
#
|
||||
@ -483,6 +565,29 @@ 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,13 +18,9 @@
|
||||
# - 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,11 +70,7 @@ echo "# Building config..."
|
||||
buildAssets
|
||||
|
||||
echo "# Creating CT..."
|
||||
getLatestTemplate '.*-turnkey-nextcloud' TEMPLATE
|
||||
pctCreate $ID "$TEMPLATE" "$OPTS_STAGE_1" "$PASS"
|
||||
sleep ${TIMEOUT:=5}
|
||||
|
||||
tklWaitForSetup
|
||||
pctCreateTurnkey 'nextcloud' $ID "$OPTS_STAGE_1" "$PASS"
|
||||
|
||||
echo "# Starting TKL UI..."
|
||||
# XXX might be a good idea to reaaad stuff from config...
|
||||
@ -109,8 +105,7 @@ echo "# Disabling fail2ban..."
|
||||
@ lxc-attach $ID systemctl disable fail2ban
|
||||
|
||||
echo "# Updating system..."
|
||||
@ lxc-attach $ID apt update
|
||||
@ lxc-attach $ID -- apt upgrade -y
|
||||
pctUpdateTurnkey $ID
|
||||
|
||||
echo "# Post config..."
|
||||
pctSet $ID "${OPTS_STAGE_2}" $REBOOT
|
||||
|
||||
@ -13,11 +13,14 @@ source ../.pct-helpers
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
readConfig
|
||||
# check dependencies...
|
||||
would-like dig #qrencode
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
readConfig
|
||||
|
||||
DFL_ID=${DFL_ID:=103}
|
||||
DFL_CTHOSTNAME=${DFL_CTHOSTNAME:=wireguard}
|
||||
|
||||
@ -36,7 +39,11 @@ LAN_GATE=-
|
||||
REBOOT=${REBOOT:=1}
|
||||
|
||||
# Wireguard config...
|
||||
DFL_ENDPOINT=${DFL_ENDPOINT:=$(dig +short ${DOMAIN:-$DFL_DOMAIN} | tail -1)}
|
||||
DFL_ENDPOINT=${DFL_ENDPOINT:=$(\
|
||||
which dig > /dev/null 2>&1 \
|
||||
&& (dig +short ${DOMAIN:-$DFL_DOMAIN} \
|
||||
| tail -1) \
|
||||
|| echo "${DOMAIN:-$DFL_DOMAIN}")}
|
||||
xread "Wireguard endpoint: " ENDPOINT
|
||||
|
||||
DFL_ENDPOINT_PORT=${DFL_ENDPOINT_PORT:=51820}
|
||||
@ -45,6 +52,7 @@ 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
|
||||
|
||||
@ -83,7 +91,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
|
||||
@ lxc-attach $ID apk add iptables wireguard-tools-wg-quick make bind-tools libqrencode
|
||||
|
||||
echo "# Copying assets..."
|
||||
@ pct-push-r $ID ./assets /
|
||||
@ -99,6 +107,11 @@ 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