Huge update to organization. Added future numbus projects.

This commit is contained in:
Raphaël Numbus
2026-03-13 11:37:53 +01:00
parent 3d3154f25f
commit 99d19af39a
22 changed files with 414 additions and 49 deletions
+93 -14
View File
@@ -7,21 +7,20 @@ export GUM_SPIN_SPINNER_BOLD=true
export GUM_SPIN_SHOW_ERROR=true
export GUM_SPIN_TITLE_BOLD=true
NECESSARY_VARIABLES_LIST=(
NECESSARY_BACKUP_SERVER_VARIABLES_LIST=(
#LIVE TARGET SETTINGS
LIVE_TARGET_IP
LIVE_TARGET_PASSWD
#SERVER SETTINGS
LANGUAGE
LOCALE
TIMEZONE
SERVER_LANGUAGE
SERVER_LOCALE
SERVER_TIMEZONE
SERVER_OWNER_NAME
SERVER_USER_EMAIL
SERVER_ADMIN_EMAIL
AUTHORIZED_SSH_PUBLIC_KEY
SERVER_AUTHORIZED_SSH_PUBKEYS
# TRAEFIK SETTINGS
DOMAIN_NAME
CLOUDFLARE_DNS_API_TOKEN
TRAEFIK_CLOUDFLARE_TOKEN
# SMTP SETTINGS
SMTP_SERVER_USERNAME
SMTP_SERVER_PASSWORD
@@ -30,11 +29,83 @@ NECESSARY_VARIABLES_LIST=(
#NETWORK SETTINGS
NETWORK_SUBNET
NETWORK_ROUTER_IP
HOME_SERVER_IP
NETWORK_HOME_SERVER_IP
# SERVICES SETTINGS
SELECTED_DNS_SERVICE
SELECTED_WEB_APPLICATIONS
SELECTED_SYSTEM_SERVICES
SERVICES_DOMAIN_NAME
SERVICES_SELECTED_SYSTEM
SERVICES_SELECTED_WEB_APPLICATIONS
)
NECESSARY_COMPUTER_VARIABLES_LIST=(
#LIVE TARGET SETTINGS
LIVE_TARGET_IP
LIVE_TARGET_PASSWD
#COMPUTER SETTINGS
COMPUTER_LANGUAGE
COMPUTER_LOCALE
COMPUTER_TIMEZONE
COMPUTER_OWNER_NAME
COMPUTER_USER_EMAIL
COMPUTER_ADMIN_EMAIL
COMPUTER_AUTHORIZED_SSH_PUBKEYS
#NETWORK SETTINGS
NETWORK_SUBNET
NETWORK_ROUTER_IP
NETWORK_HOME_COMPUTER_IP
# SERVICES SETTINGS
SERVICES_SELECTED_SYSTEM
SERVICES_SELECTED_APPLICATIONS
)
NECESSARY_SERVER_VARIABLES_LIST=(
#LIVE TARGET SETTINGS
LIVE_TARGET_IP
LIVE_TARGET_PASSWD
#SERVER SETTINGS
SERVER_LANGUAGE
SERVER_LOCALE
SERVER_TIMEZONE
SERVER_OWNER_NAME
SERVER_USER_EMAIL
SERVER_ADMIN_EMAIL
SERVER_AUTHORIZED_SSH_PUBKEYS
# TRAEFIK SETTINGS
TRAEFIK_CLOUDFLARE_TOKEN
# SMTP SETTINGS
SMTP_SERVER_USERNAME
SMTP_SERVER_PASSWORD
SMTP_SERVER_HOST
SMTP_SERVER_PORT
#NETWORK SETTINGS
NETWORK_SUBNET
NETWORK_ROUTER_IP
NETWORK_HOME_SERVER_IP
# SERVICES SETTINGS
SERVICES_DOMAIN_NAME
SERVICES_SELECTED_DNS
SERVICES_SELECTED_SYSTEM
SERVICES_SELECTED_WEB_APPLICATIONS
)
NECESSARY_TV_VARIABLES_LIST=(
#LIVE TARGET SETTINGS
LIVE_TARGET_IP
LIVE_TARGET_PASSWD
#TV SETTINGS
TV_LANGUAGE
TV_LOCALE
TV_TIMEZONE
TV_OWNER_NAME
TV_USER_EMAIL
TV_ADMIN_EMAIL
TV_AUTHORIZED_SSH_PUBKEYS
#NETWORK SETTINGS
NETWORK_SUBNET
NETWORK_ROUTER_IP
NETWORK_HOME_TV_IP
# SERVICES SETTINGS
SERVICES_SELECTED_SYSTEM
SERVICES_SELECTED_WEB_APPLICATIONS
)
# Available services
@@ -42,6 +113,7 @@ DNS_SERVICES_LIST=(
"pi-hole"
"adguard"
)
WEB_APPLICATIONS_LIST=(
"crafty"
"frigate"
@@ -56,15 +128,18 @@ WEB_APPLICATIONS_LIST=(
"uptime-kuma"
"vscodium"
)
SYSTEM_SERVICES_LIST=(
"clamav"
"virtualization"
)
# Services descriptions
DNS_SERVICES_DESCRIPTION=(
"Pi-Hole : Simple open-source DNS black hole"
"AdGuard : Feature rich DNS service"
)
WEB_APPLICATIONS_DESCRIPTION=(
"Crafty : A web-based control panel for Minecraft servers"
"Frigate [Home Assistant required] : AI-powered NVR for smart security cameras"
@@ -79,6 +154,7 @@ WEB_APPLICATIONS_DESCRIPTION=(
"Uptime-Kuma : A fancy self-hosted monitoring tool"
"VSCodium : An open-source version of VScode in your web browser"
)
SYSTEM_SERVICES_DESCRIPTION=(
"ClamAV : An open-source anti-virus"
"Virtualization : Run Virtual Machines (KVM/QEMU) with Libvirt"
@@ -162,13 +238,16 @@ necessary_information() {
user_input "HOME_SERVER_IP" " Please choose the ip address that your server will use (i.e. any address in the 192.168.1.1/24 range that is not in use.) :" "For example 192.168.1.5" "${IP_REGEX}" "Invalid IP address format."
}
necessary_information_config() {
import_variables() {
VARIABLES_LIST="${1}"
NECESSARY="${2:-false}"
echo -e "\n\n➡️ Please choose your configuration file :"
local CONFIG_PATH="$(gum file)"
source "${CONFIG_PATH}"
local MISSING=0
for VAR in "${NECESSARY_VARIABLES_LIST[@]}"; do
for VAR in "${VARIABLES_LIST[@]}"; do
if [[ -v "${VAR}" && -n "${!VAR}" ]]; then
gum style "✅ "${VAR}" imported successfully from the config file"
else
@@ -985,7 +1064,7 @@ elif [[ "$ACTION_ANSWER" == "[2] 💽 Deploy NixOS on a remote machine with a fi
gum style --border normal --margin "1" --padding "1 2" --border-foreground 212 "➡️ On the target host : start the computer and boot into the NixOS iso.
Launch a console and set up a new user password"
gum confirm "Do you understand and wish to proceed?" || { echo "❌ Aborting as requested"; exit 1; }
necessary_information_config
import_variables
hierarchy_preparation
setup_ssh
hardware_detection