#!/usr/bin/bash #---------------------------------------------------------------------- cd $(dirname $0) PATH=$PATH:$(dirname "$(pwd)") #---------------------------------------------------------------------- source ../.pct-helpers #---------------------------------------------------------------------- readConfig #---------------------------------------------------------------------- DFL_ID=${DFL_ID:=300} DFL_CTHOSTNAME=${DFL_CTHOSTNAME:=nextcloud} DFL_CORES=${DFL_CORES:=2} DFL_RAM=${DFL_RAM:=2048} DFL_SWAP=${DFL_SWAP:=${DFL_RAM:=2048}} DFL_DRIVE=${DFL_DRIVE:=40} WAN_IP=- WAN_GATE=- ADMIN_IP=- ADMIN_GATE=- LAN_IP=- LAN_GATE=- REBOOT=${REBOOT:=1} readVars #---------------------------------------------------------------------- # NOTE: TKL gui will not function correctly without nesting enabled... OPTS_STAGE_1="\ --hostname $CTHOSTNAME \ --cores $CORES \ --memory $RAM \ --swap $SWAP \ --net0 name=lan,bridge=vmbr${LAN_BRIDGE},firewall=1,ip=dhcp,type=veth \ --storage local-lvm \ --rootfs local-lvm:$DRIVE \ --unprivileged 1 \ --features nesting=1 ${PCT_EXTRA} \ " OPTS_STAGE_2="\ --onboot 1 \ " #---------------------------------------------------------------------- echo "# Building config..." buildAssets "$TEMPLATE_DIR" "$ASSETS_DIR" echo "# Creating CT..." getLatestTemplate '.*-turnkey-nextcloud' TEMPLATE pctCreate $ID "$TEMPLATE" "$OPTS_STAGE_1" "$PASS" sleep ${TIMEOUT:=5} # hooking into tkl init process: # - wait for /etc/inithooks.conf to be generated by: # /usr/lib/inithooks/firstboot.d/29preseed # this file existion would mean that the first stage of setup is # done and we can do: # lxc-attach $ID -- bash --login exit # to launch interactive setup... # XXX can we get console/log output while poling??? # - inject a script into the chain to do our stuff # Q: can we reuse tkl's scripts??? # # * another strategy would be generate our own inithooks.conf but # this would require us to mount the ct volume before first boot... # see: # https://forum.proxmox.com/threads/pct-push-when-lxc-is-offline.116786/ # * might be usefull to do both to: # - maximize compatibility / change tolerance (tkl ui) (???) # - skip dialogs we do not use... # ...i.e. poll-patch-ui # # for tkl inithooks doc see: # https://www.turnkeylinux.org/docs/inithooks tklWaitForSetup echo "# Starting TKL UI..." @ lxc-attach $ID -- \ HUB_APIKEY=SKIP \ APP_DOMAIN=${DOMAIN:=${DFL_DOMAIN:=DEFAULT}} \ SEC_UPDATES=${EMAIL:=${DFL_EMAIL}} \ /usr/sbin/turnkey-init exit # XXX the CT will reboot -- wait... # #echo "# Updating config..." ## XXX update /var/www/nextcloud/config/config.php ## - trusted_domains ## - trusted_proxies #@ lxc-attach $ID -- \ # sed \ # -e 's/^\(\s*\)\('\''trusted_domains\)/\1'\''trusted_proxies'\'' =>\n\1array (\n\1\1'${GATE_LAN_IP}'\/32\n\1)\n\1\2/' \ # -i /var/www/nextcloud/config/config.php echo "# Copying assets..." @ pct-push-r $ID ./assets / echo "# Disabling fail2ban..." # NOTE: we do not need this as we'll be running from behind a reverse proxy... @ lxc-attach $ID systemctl stop fail2ban @ lxc-attach $ID systemctl disable fail2ban echo "# Post config..." pctSet $ID "${OPTS_STAGE_2}" $REBOOT echo "# Done." #---------------------------------------------------------------------- # vim:set ts=4 sw=4 :