2024-01-15 16:47:30 +03:00
|
|
|
#!/usr/bin/bash
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
cd $(dirname $0)
|
|
|
|
|
PATH=$PATH:$(dirname "$(pwd)")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
source ../.pct-helpers
|
|
|
|
|
|
|
|
|
|
|
2024-01-27 16:13:38 +03:00
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
2024-01-27 16:39:44 +03:00
|
|
|
need ifreload
|
2024-01-27 16:13:38 +03:00
|
|
|
|
|
|
|
|
|
2024-01-15 16:47:30 +03:00
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
readConfig
|
|
|
|
|
|
|
|
|
|
|
2024-01-27 16:13:38 +03:00
|
|
|
DFL_WAN_PORT=${DFL_WAN_PORT:-enp5s0}
|
|
|
|
|
DFL_ADMIN_PORT=${DFL_ADMIN_PORT:-enp2s0}
|
|
|
|
|
|
|
|
|
|
DFL_HOST_ADMIN_IP=${PROXMOX_ADMIN_IP:-10.0.0.254/24}
|
|
|
|
|
|
2024-01-27 16:39:44 +03:00
|
|
|
|
2024-01-15 16:47:30 +03:00
|
|
|
SOFTWARE=(
|
2024-01-27 16:39:44 +03:00
|
|
|
ifupdown2
|
2024-01-15 16:47:30 +03:00
|
|
|
make
|
|
|
|
|
w3m links
|
2024-01-16 04:07:04 +03:00
|
|
|
tree
|
2024-01-15 16:47:30 +03:00
|
|
|
qrencode
|
|
|
|
|
htop iftop iotop
|
|
|
|
|
tmux
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2024-01-27 16:49:44 +03:00
|
|
|
# XXX
|
|
|
|
|
#readVars
|
|
|
|
|
|
|
|
|
|
|
2024-01-15 16:47:30 +03:00
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
# Tools
|
|
|
|
|
if xreadYes "# Update system?" UPDATE ; then
|
|
|
|
|
@ apt update
|
|
|
|
|
@ apt upgrade
|
|
|
|
|
fi
|
|
|
|
|
if xreadYes "# Install additional apps?" APPS ; then
|
2024-01-31 03:40:16 +03:00
|
|
|
@ apt install ${SOFTWARE[@]}
|
2024-01-15 16:47:30 +03:00
|
|
|
fi
|
|
|
|
|
|
2024-01-31 17:26:58 +03:00
|
|
|
# Bridges...
|
2024-01-27 16:17:12 +03:00
|
|
|
# XXX need to:
|
|
|
|
|
# - bootstrap this
|
2024-01-27 16:21:03 +03:00
|
|
|
# - setup the gate, ssh, and wireguard
|
2024-01-27 16:17:12 +03:00
|
|
|
# - inalize
|
2024-01-27 16:39:44 +03:00
|
|
|
# XXX /etc/hosts
|
2024-01-27 17:51:56 +03:00
|
|
|
# XXX save config???
|
2024-01-27 16:49:44 +03:00
|
|
|
# XXX should we do things in ./staging ???
|
2024-01-15 16:47:30 +03:00
|
|
|
if xreadYes "# Create bridges?" BRIDGES ; then
|
2024-01-27 16:13:38 +03:00
|
|
|
xread "WAN port: " WAN_PORT
|
|
|
|
|
xread "ADMIN port: " ADMIN_PORT
|
|
|
|
|
xread "Host ADMIN IP: " HOST_ADMIN_IP
|
|
|
|
|
xread "Gate ADMIN IP: " GATE_ADMIN_IP
|
2024-01-27 16:49:44 +03:00
|
|
|
readBridgeVars
|
|
|
|
|
|
2024-01-31 03:40:16 +03:00
|
|
|
# check if new bridges already exist in interfaces...
|
|
|
|
|
if [ -e /etc/network/interfaces ] \
|
|
|
|
|
&& grep -q \
|
|
|
|
|
"vmbr\(${WAN_BRIDGE}\|${LAN_BRIDGE}\|${ADMIN_BRIDGE}\)" \
|
|
|
|
|
/etc/network/interfaces ; then
|
|
|
|
|
conflict=
|
|
|
|
|
for br in WAN_BRIDGE LAN_BRIDGE ADMIN_BRIDGE ; do
|
|
|
|
|
if grep -q "vmbr${!br}" /etc/network/interfaces ; then
|
|
|
|
|
conflict="${conflict}, vmbr${!br} (${br})"
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
echo "ERROR: will not overwrite existing bridges: ${conflict:2}" >&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2024-08-06 01:57:40 +03:00
|
|
|
@ cp /etc/network/interfaces{,.bak}
|
2024-01-27 16:49:44 +03:00
|
|
|
@ cp /etc/network/interfaces{,.new}
|
2024-01-27 16:13:38 +03:00
|
|
|
|
2024-01-31 03:40:16 +03:00
|
|
|
BRIDGES="$(\
|
2024-01-27 16:39:44 +03:00
|
|
|
cat bridges.tpl \
|
2024-08-06 01:37:44 +03:00
|
|
|
| expandPCTTemplate \
|
|
|
|
|
LAN_BRIDGE WAN_BRIDGE ADMIN_BRIDGE \
|
|
|
|
|
WAN_PORT ADMIN_PORT \
|
|
|
|
|
HOST_ADMIN_IP GATE_ADMIN_IP)"
|
2024-01-31 03:10:40 +03:00
|
|
|
|
2024-01-31 17:26:58 +03:00
|
|
|
if [ -z "$DRY_RUN" ] ; then
|
|
|
|
|
# XXX add $BRIDGES to /etc/network/interfaces either before the
|
|
|
|
|
# source command or at the end...
|
|
|
|
|
# XXX
|
2024-08-06 01:37:44 +03:00
|
|
|
echo "$BRIDGES" >> /etc/network/interfaces.new
|
2024-08-06 01:57:40 +03:00
|
|
|
else
|
|
|
|
|
echo "$BRIDGES"
|
2024-01-31 17:26:58 +03:00
|
|
|
fi
|
2024-01-27 16:13:38 +03:00
|
|
|
|
2024-01-31 17:26:58 +03:00
|
|
|
if reviewApplyChanges /etc/network/interfaces ; then
|
2024-08-06 02:33:37 +03:00
|
|
|
if ! @ ifreload -a ; then
|
|
|
|
|
# reset settings back if ifreload fails...
|
|
|
|
|
@ cp /etc/network/interfaces{.bak,}
|
|
|
|
|
@ ifreload -a
|
|
|
|
|
fi
|
2024-01-27 16:39:44 +03:00
|
|
|
fi
|
2024-01-15 16:47:30 +03:00
|
|
|
fi
|
|
|
|
|
|
2024-01-31 17:26:58 +03:00
|
|
|
|
|
|
|
|
echo "# Building config..."
|
|
|
|
|
# XXX do we need any extra vars here???
|
|
|
|
|
buildAssets
|
|
|
|
|
|
|
|
|
|
|
2024-02-02 00:50:51 +03:00
|
|
|
# XXX /etc/hosts???
|
|
|
|
|
|
|
|
|
|
|
2024-01-31 17:26:58 +03:00
|
|
|
# DNS
|
|
|
|
|
if xreadYes "# Update DNS?" DNS ; then
|
|
|
|
|
file=/etc/resolv.conf
|
|
|
|
|
@ cp "staging/${file}" "${file}".new
|
|
|
|
|
reviewApplyChanges "${file}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
2024-01-15 16:47:30 +03:00
|
|
|
# Firewall
|
2024-01-15 16:59:06 +03:00
|
|
|
if xreadYes "# Update firewall rules?" FIREWALL ; then
|
2024-01-31 17:26:58 +03:00
|
|
|
file=/etc/pve/firewall/cluster.fw
|
|
|
|
|
@ cp "staging/${file}" "${file}".new
|
|
|
|
|
reviewApplyChanges "${file}"
|
2024-01-15 16:47:30 +03:00
|
|
|
fi
|
|
|
|
|
|
2024-01-31 17:26:58 +03:00
|
|
|
|
2024-01-26 03:06:55 +03:00
|
|
|
showNotes
|
|
|
|
|
echo "# Done."
|
2024-01-15 16:47:30 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
# vim:set ts=4 sw=4 :
|