Compare commits

...
Author SHA1 Message Date
MickLesk c21365f204 Let prompts fall back to their default when there is no input 2026-09-25 09:52:47 +02:00
52 changed files with 91 additions and 88 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ setting_up_container
network_check
update_os
read -r -p "${TAB3}Which Tomcat version would you like to install? (9, 10.1, 11): " version
read -r -p "${TAB3}Which Tomcat version would you like to install? (9, 10.1, 11): " version || version=""
case $version in
9)
TOMCAT_VERSION="9"
+1 -1
View File
@@ -17,7 +17,7 @@ msg_info "Installing Aria2"
$STD apt install -y aria2
msg_ok "Installed Aria2"
read -r -p "${TAB3}Would you like to add AriaNG? <y/N> " prompt
read -r -p "${TAB3}Would you like to add AriaNG? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Dependencies"
$STD apt install -y nginx
+1 -1
View File
@@ -15,7 +15,7 @@ update_os
fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-$(arch_resolve "x86_64" "aarch64")-unknown-linux-gnu.tar.gz"
read -r -p "${TAB3}Enter the public URL for Bichon (e.g., https://bichon.yourdomain.com) or leave empty to use container IP: " bichon_url
read -r -p "${TAB3}Enter the public URL for Bichon (e.g., https://bichon.yourdomain.com) or leave empty to use container IP: " bichon_url || bichon_url=""
if [[ -z "$bichon_url" ]]; then
msg_info "No URL provided"
BICHON_PUBLIC_URL="http://$LOCAL_IP:15630"
+1 -1
View File
@@ -34,7 +34,7 @@ setup_deb_based() {
chmod +x bitmagnet
msg_ok "Configured bitmagnet"
read -r -p "${TAB3}Enter your TMDB API key if you have one: " tmdbapikey
read -r -p "${TAB3}Enter your TMDB API key if you have one: " tmdbapikey || tmdbapikey=""
cat <<EOF >/etc/bitmagnet.env
POSTGRES_HOST=localhost
+1 -1
View File
@@ -25,7 +25,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+2 -2
View File
@@ -30,7 +30,7 @@ setup_deb_based() {
$STD apt install -y caddy
msg_ok "Installed Caddy"
read -r -p "${TAB3}Would you like to install xCaddy Addon? <y/N> " prompt
read -r -p "${TAB3}Would you like to install xCaddy Addon? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
setup_go
fetch_and_deploy_gh_release "xcaddy" "caddyserver/xcaddy" "binary"
@@ -75,7 +75,7 @@ EOF
EOF
msg_ok "Installed Caddy"
read -r -p "${TAB3}Would you like to install xCaddy Addon? <y/N> " prompt
read -r -p "${TAB3}Would you like to install xCaddy Addon? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
GO_VERSION="$(curl -fsSL https://go.dev/VERSION?m=text | head -1 | cut -c3-)" setup_go
msg_info "Setup xCaddy"
+1 -1
View File
@@ -18,7 +18,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://get.casaos.io/"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+1 -1
View File
@@ -24,7 +24,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://getchannels.com/dvr/setup.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+5 -5
View File
@@ -21,7 +21,7 @@ setup_deb_based() {
if prompt_confirm "${TAB3}Would you like to install Portainer (UI) via the community-scripts addon?" "n" 60; then
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)" <<<"y"
else
read -r -p "${TAB3}Would you like to install the Portainer Agent (for remote management)? <y/N> " prompt_agent
read -r -p "${TAB3}Would you like to install the Portainer Agent (for remote management)? <y/N> " prompt_agent || prompt_agent=""
if [[ ${prompt_agent,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
$STD docker run -d \
@@ -35,7 +35,7 @@ setup_deb_based() {
fi
fi
read -r -p "${TAB3}Expose Docker TCP socket (insecure) ? [n = No, l = Local only (127.0.0.1), a = All interfaces (0.0.0.0)] <n/l/a>: " socket_choice
read -r -p "${TAB3}Expose Docker TCP socket (insecure) ? [n = No, l = Local only (127.0.0.1), a = All interfaces (0.0.0.0)] <n/l/a>: " socket_choice || socket_choice=""
case "${socket_choice,,}" in
l)
socket="tcp://127.0.0.1:2375"
@@ -91,7 +91,7 @@ setup_alpine() {
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
@@ -104,7 +104,7 @@ setup_alpine() {
if prompt_confirm "${TAB3}Would you like to install Portainer (UI) via the community-scripts addon?" "n" 60; then
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)" <<<"y"
else
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
$STD docker run -d \
@@ -118,7 +118,7 @@ setup_alpine() {
fi
fi
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Exposing Docker TCP socket"
$STD mkdir -p /etc/docker
+1 -1
View File
@@ -27,7 +27,7 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies"
var_project_name="default"
read -r -p "${TAB3}Type the assembly name of the project: " var_project_name
read -r -p "${TAB3}Type the assembly name of the project: " var_project_name || var_project_name=""
msg_info "Setting up FTP Server"
useradd ftpuser
+1 -1
View File
@@ -38,7 +38,7 @@ rm -f "$DEB_FILE"
echo "$LATEST_VERSION" >~/.emqx
msg_ok "Installed EMQX"
read -r -p "${TAB3}Would you like to disable the EMQX MQ feature? (reduces disk/CPU usage) <y/N> " prompt
read -r -p "${TAB3}Would you like to disable the EMQX MQ feature? (reduces disk/CPU usage) <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Disabling EMQX MQ feature"
mkdir -p /etc/emqx
+7 -4
View File
@@ -45,9 +45,9 @@ $STD ln -svf /usr/bin/ffmpeg /usr/local/bin/ffmpeg
$STD ln -svf /usr/bin/ffprobe /usr/local/bin/ffprobe
$STD rm -rf /opt/fileflows/Server/runtimes/win-*
read -r -p "${TAB3}Do you want to install FileFlows Server or Agent? (S/A): " install_server
read -r -p "${TAB3}Do you want to install FileFlows Server or Agent? (S/A): " install_server || install_server=""
if [[ "$install_server" =~ ^[Ss]$ ]]; then
if [[ -z "$install_server" || "$install_server" =~ ^[Ss]$ ]]; then
msg_info "Installing FileFlows Server"
cd /opt/fileflows/Server
$STD dotnet FileFlows.Server.dll --systemd install --root true
@@ -56,9 +56,12 @@ if [[ "$install_server" =~ ^[Ss]$ ]]; then
else
msg_info "Installing FileFlows Agent"
stop_spinner
read -r -p "${TAB3}Enter FileFlows Server URL (e.g. http://192.168.1.10:19200): " server_url
read -r -p "${TAB3}Enter FileFlows Server URL (e.g. http://192.168.1.10:19200): " server_url || server_url=""
while [[ -z "${server_url// /}" ]]; do
read -r -p "${TAB3}Enter FileFlows Server URL (e.g. http://192.168.1.10:19200): " server_url
read -r -p "${TAB3}Enter FileFlows Server URL (e.g. http://192.168.1.10:19200): " server_url || {
msg_error "FileFlows needs a server URL and this run has no input"
exit 1
}
done
cd /opt/fileflows/Agent
before_units="$(systemctl list-unit-files 'fileflows*' --no-legend 2>/dev/null | awk '{print $1}' | sort || true)"
+4 -4
View File
@@ -15,12 +15,12 @@ update_os
setup_yq
if [[ -z "${var_forgejo_instance:-}" ]]; then
read -r -p "${TAB3}Forgejo Instance URL (e.g. https://codeberg.org): " var_forgejo_instance
read -r -p "${TAB3}Forgejo Instance URL (e.g. https://codeberg.org): " var_forgejo_instance || var_forgejo_instance=""
var_forgejo_instance="${var_forgejo_instance:-https://codeberg.org}"
fi
if [[ -z "${var_forgejo_runner_uuid:-}" ]]; then
read -r -p "${TAB3}Forgejo Runner UUID: " var_forgejo_runner_uuid
read -r -p "${TAB3}Forgejo Runner UUID: " var_forgejo_runner_uuid || var_forgejo_runner_uuid=""
fi
if [[ -z "${var_forgejo_runner_uuid:-}" ]]; then
@@ -29,7 +29,7 @@ if [[ -z "${var_forgejo_runner_uuid:-}" ]]; then
fi
if [[ -z "${var_forgejo_runner_token:-}" ]]; then
read -r -p "${TAB3}Forgejo Runner Token: " var_forgejo_runner_token
read -r -p "${TAB3}Forgejo Runner Token: " var_forgejo_runner_token || var_forgejo_runner_token=""
fi
if [[ -z "${var_forgejo_runner_token:-}" ]]; then
@@ -39,7 +39,7 @@ fi
DEFAULT_RUNNER_LABELS="linux-amd64:docker://node:22-bookworm"
if [[ -z "${var_runner_labels:-}" ]]; then
read -r -p "${TAB3}Additional runner labels (comma-separated, or leave blank for default only): " var_runner_labels
read -r -p "${TAB3}Additional runner labels (comma-separated, or leave blank for default only): " var_runner_labels || var_runner_labels=""
fi
if [[ -n "${var_runner_labels:-}" ]]; then
RUNNER_LABELS="${DEFAULT_RUNNER_LABELS},${var_runner_labels}"
+1 -1
View File
@@ -15,7 +15,7 @@ update_os
fetch_and_deploy_gh_release "headscale" "juanfont/headscale" "binary"
read -r -p "${TAB3}Would you like to add headscale-admin UI? <y/N> " prompt
read -r -p "${TAB3}Would you like to add headscale-admin UI? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
fetch_and_deploy_gh_release "headscale-admin" "GoodiesHQ/headscale-admin" "prebuild" "latest" "/opt/headscale-admin" "admin.zip"
+1 -1
View File
@@ -38,7 +38,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://hermes-agent.nousresearch.com/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+1 -1
View File
@@ -24,7 +24,7 @@ if lscpu | grep -q 'GenuineIntel'; then
echo " 2) **NEW** Intel OpenVINO CPU or iGPU"
echo ""
read -r -p "${TAB3}Select machine-learning type [1]: " ML_TYPE
read -r -p "${TAB3}Select machine-learning type [1]: " ML_TYPE || ML_TYPE=""
ML_TYPE="${ML_TYPE:-1}"
if [[ "$ML_TYPE" == "2" ]]; then
touch ~/.openvino
+2 -2
View File
@@ -21,7 +21,7 @@ setup_deb822_repo \
"stable"
msg_ok "Set up InfluxDB Repository"
read -r -p "${TAB3}Which version of InfluxDB to install? (1, 2 or 3) " prompt
read -r -p "${TAB3}Which version of InfluxDB to install? (1, 2 or 3) " prompt || prompt=""
if [[ $prompt == "3" ]]; then
INFLUX="3"
elif [[ $prompt == "2" ]]; then
@@ -50,7 +50,7 @@ else
fi
msg_ok "Installed InfluxDB"
read -r -p "${TAB3}Would you like to add Telegraf? <y/N> " prompt
read -r -p "${TAB3}Would you like to add Telegraf? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Installing Telegraf"
$STD apt install -y telegraf
+1 -1
View File
@@ -22,7 +22,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://iobroker.net/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+1 -1
View File
@@ -61,7 +61,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ install.sh inside tar.gz $KASM_URL"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+3 -3
View File
@@ -28,9 +28,9 @@ mkdir -p config/assets
cp config/config.yml.template config/config.yml
msg_ok "Setup Kometa"
read -r -p "${TAB3}Enter your TMDb API key: " TMDBKEY
read -r -p "${TAB3}Enter your Plex URL: " PLEXURL
read -r -p "${TAB3}Enter your Plex token: " PLEXTOKEN
read -r -p "${TAB3}Enter your TMDb API key: " TMDBKEY || TMDBKEY=""
read -r -p "${TAB3}Enter your Plex URL: " PLEXURL || PLEXURL=""
read -r -p "${TAB3}Enter your Plex token: " PLEXTOKEN || PLEXTOKEN=""
sed -i '/^plex:/,/^[^ ]/{s| url:.*| url: '"$PLEXURL"'|}' /opt/kometa/config/config.yml
sed -i '/^plex:/,/^[^ ]/{s| token:.*| token: '"$PLEXTOKEN"'|}' /opt/kometa/config/config.yml
sed -i '/^tmdb:/,/^[^ ]/{s| apikey:.*| apikey: '"$TMDBKEY"'|}' /opt/kometa/config/config.yml
+1 -1
View File
@@ -32,7 +32,7 @@ EOF
msg_ok "Configured Caddy"
;;
e)
read -r -p "${TAB3}Enter the hostname you want to use for Kutt (eg. kutt.example.com): " custom_host
read -r -p "${TAB3}Enter the hostname you want to use for Kutt (eg. kutt.example.com): " custom_host || custom_host=""
if [[ "$custom_host" ]]; then
DEFAULT_HOST="$custom_host"
fi
+1 -1
View File
@@ -34,7 +34,7 @@ max_attempts=3
attempt=0
while [[ $attempt -lt $max_attempts ]]; do
read -r -p "${TAB3}Enter language code (en, de, es, fr, nl) to download ngrams or press ENTER to skip: " lang_code
read -r -p "${TAB3}Enter language code (en, de, es, fr, nl) to download ngrams or press ENTER to skip: " lang_code || lang_code=""
if [[ -z "$lang_code" ]]; then
break
+1 -1
View File
@@ -24,7 +24,7 @@ PG_VERSION="16" setup_postgresql
RUST_CRATES="monolith" setup_rust
PG_DB_NAME="linkwardendb" PG_DB_USER="linkwarden" setup_postgresql_db
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
setup_adminer
fi
+1 -1
View File
@@ -33,7 +33,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://elixir-lang.org/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+2 -2
View File
@@ -21,7 +21,7 @@ setup_deb_based() {
sed -i 's/^bind-address/#bind-address/g' /etc/mysql/mariadb.conf.d/50-server.cnf
msg_ok "Setup MariaDB"
read -r -p "${TAB3}Would you like to add PhpMyAdmin? <y/N> " prompt
read -r -p "${TAB3}Would you like to add PhpMyAdmin? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing phpMyAdmin"
$STD apt install -y \
@@ -58,7 +58,7 @@ setup_alpine() {
$STD rc-service mariadb start
msg_ok "MariaDB Configured"
read -r -p "${TAB3}Would you like to install Adminer with lighttpd? <y/N>: " prompt
read -r -p "${TAB3}Would you like to install Adminer with lighttpd? <y/N>: " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Adminer and dependencies"
$STD apk add --no-cache \
+1 -1
View File
@@ -18,7 +18,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://deb.packages.mattermost.com/repo-setup.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+1 -1
View File
@@ -13,7 +13,7 @@ setting_up_container
network_check
update_os
read -r -p "${TAB3}Enter the email address of your first admin user: " admin_email
read -r -p "${TAB3}Enter the email address of your first admin user: " admin_email || admin_email=""
if [[ "$admin_email" ]]; then
EMAIL="$admin_email"
fi
+1 -1
View File
@@ -15,7 +15,7 @@ update_os
MEILISEARCH_BIND="0.0.0.0:7700" setup_meilisearch
read -r -p "${TAB3}Do you want add meilisearch-ui? [y/n]: " prompt
read -r -p "${TAB3}Do you want add meilisearch-ui? [y/n]: " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
fetch_and_deploy_gh_release "meilisearch-ui" "riccox/meilisearch-ui" "tarball"
+2 -2
View File
@@ -21,7 +21,7 @@ msg_ok "Installed Dependencies"
RELEASE_REPO="mysql-8.0"
RELEASE_AUTH="mysql_native_password"
read -r -p "${TAB3}Would you like to install the MySQL 8.4 LTS release instead of MySQL 8.0 (bug fix track; EOL April-2026)? <y/N> " prompt
read -r -p "${TAB3}Would you like to install the MySQL 8.4 LTS release instead of MySQL 8.0 (bug fix track; EOL April-2026)? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
RELEASE_REPO="mysql-8.4-lts"
RELEASE_AUTH="caching_sha2_password"
@@ -61,7 +61,7 @@ echo -e "MySQL user: root" >>~/mysql.creds
echo -e "MySQL password: $ADMIN_PASS" >>~/mysql.creds
msg_ok "MySQL Server configured"
read -r -p "${TAB3}Would you like to add PhpMyAdmin? <y/N> " prompt
read -r -p "${TAB3}Would you like to add PhpMyAdmin? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/phpmyadmin.sh)"
fi
+5 -5
View File
@@ -36,7 +36,7 @@ echo " 1) NetBird Managed (default) - Use NetBird's managed service"
echo " 2) Self-Hosted - Use your own NetBird management server"
echo ""
read -r -p "${TAB3}Select deployment type [1]: " DEPLOYMENT_TYPE
read -r -p "${TAB3}Select deployment type [1]: " DEPLOYMENT_TYPE || DEPLOYMENT_TYPE=""
DEPLOYMENT_TYPE="${DEPLOYMENT_TYPE:-1}"
NETBIRD_MGMT_URL=""
@@ -51,7 +51,7 @@ case "$DEPLOYMENT_TYPE" in
echo "Enter your NetBird management server URL."
echo "Example: https://management.example.com"
echo ""
read -r -p "Management URL: " NETBIRD_MGMT_URL
read -r -p "Management URL: " NETBIRD_MGMT_URL || NETBIRD_MGMT_URL=""
if [[ -z "$NETBIRD_MGMT_URL" ]]; then
msg_warn "No management URL provided. Run 'netbird up --management-url <url>' to connect."
@@ -81,7 +81,7 @@ else
fi
echo ""
read -r -p "Select authentication method [1]: " AUTH_METHOD
read -r -p "Select authentication method [1]: " AUTH_METHOD || AUTH_METHOD=""
AUTH_METHOD="${AUTH_METHOD:-1}"
if [[ "$DEPLOYMENT_TYPE" == "1" ]]; then
@@ -90,7 +90,7 @@ if [[ "$DEPLOYMENT_TYPE" == "1" ]]; then
echo ""
echo "Enter your NetBird setup key from the NetBird dashboard."
echo ""
read -r -p "Setup key: " NETBIRD_SETUP_KEY
read -r -p "Setup key: " NETBIRD_SETUP_KEY || NETBIRD_SETUP_KEY=""
echo ""
if [[ -z "$NETBIRD_SETUP_KEY" ]]; then
@@ -136,7 +136,7 @@ else
echo ""
echo "Enter your NetBird setup key from the NetBird dashboard."
echo ""
read -r -p "Setup key: " NETBIRD_SETUP_KEY
read -r -p "Setup key: " NETBIRD_SETUP_KEY || NETBIRD_SETUP_KEY=""
echo ""
if [[ -z "$NETBIRD_SETUP_KEY" ]]; then
+1 -1
View File
@@ -18,7 +18,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+2 -2
View File
@@ -42,7 +42,7 @@ msg_ok "Fetched NPMplus"
attempts=0
while true; do
read -r -p "${TAB3}Enter your TZ Identifier (e.g., Europe/Berlin): " TZ_INPUT
read -r -p "${TAB3}Enter your TZ Identifier (e.g., Europe/Berlin): " TZ_INPUT || TZ_INPUT=""
if validate_tz "$TZ_INPUT"; then
break
fi
@@ -55,7 +55,7 @@ while true; do
fi
done
read -r -p "${TAB3}Enter your ACME Email: " ACME_EMAIL_INPUT
read -r -p "${TAB3}Enter your ACME Email: " ACME_EMAIL_INPUT || ACME_EMAIL_INPUT=""
yq -i "
.services.npmplus.environment |=
+2 -2
View File
@@ -26,7 +26,7 @@ setup_hwaccel
PYTHON_VERSION="3.12" setup_uv
OTEL_ARGS=()
read -r -p "${TAB3}Would you like to install OpenTelemetry instrumentation packages (requires manual .env configuration)? <y/N> " prompt
read -r -p "${TAB3}Would you like to install OpenTelemetry instrumentation packages (requires manual .env configuration)? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
for pkg in \
opentelemetry-api \
@@ -53,7 +53,7 @@ for attempt in $(seq 1 3); do
done
msg_ok "Installed Open WebUI"
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
if [[ "$(arch_resolve)" == "amd64" ]]; then
msg_info "Setting up Intel® Repositories"
+5 -5
View File
@@ -27,17 +27,17 @@ apt_update_safe
$STD apt install -y openziti-controller openziti-console </dev/null
msg_ok "Installed openziti"
read -r -p "${TAB3}Would you like to go through the auto configuration now? <y/N>" prompt
read -r -p "${TAB3}Would you like to go through the auto configuration now? <y/N>" prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
GEN_FQDN="controller.${LOCAL_IP}.sslip.io"
read -r -p "${TAB3}Please enter the controller FQDN [${GEN_FQDN}]: " ZITI_CTRL_ADVERTISED_ADDRESS
read -r -p "${TAB3}Please enter the controller FQDN [${GEN_FQDN}]: " ZITI_CTRL_ADVERTISED_ADDRESS || ZITI_CTRL_ADVERTISED_ADDRESS=""
ZITI_CTRL_ADVERTISED_ADDRESS=${ZITI_CTRL_ADVERTISED_ADDRESS:-$GEN_FQDN}
read -r -p "${TAB3}Please enter the controller port [1280]: " ZITI_CTRL_ADVERTISED_PORT
read -r -p "${TAB3}Please enter the controller port [1280]: " ZITI_CTRL_ADVERTISED_PORT || ZITI_CTRL_ADVERTISED_PORT=""
ZITI_CTRL_ADVERTISED_PORT=${ZITI_CTRL_ADVERTISED_PORT:-1280}
read -r -p "${TAB3}Please enter the controller admin user [admin]: " ZITI_USER
read -r -p "${TAB3}Please enter the controller admin user [admin]: " ZITI_USER || ZITI_USER=""
ZITI_USER=${ZITI_USER:-admin}
GEN_PWD=$(head -c128 /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9!@#$%^*_+~' | cut -c 1-12)
read -r -p "${TAB3}Please enter the controller admin password [${GEN_PWD}]:" ZITI_PWD
read -r -p "${TAB3}Please enter the controller admin password [${GEN_PWD}]:" ZITI_PWD || ZITI_PWD=""
ZITI_PWD=${ZITI_PWD:-$GEN_PWD}
CONFIG_FILE="/opt/openziti/etc/controller/bootstrap.env"
sed -i "s|^ZITI_CTRL_ADVERTISED_ADDRESS=.*|ZITI_CTRL_ADVERTISED_ADDRESS='${ZITI_CTRL_ADVERTISED_ADDRESS}'|" "$CONFIG_FILE"
+1 -1
View File
@@ -29,7 +29,7 @@ sed -i '0,/^ExecStart/ { /^ExecStart/ { n; s|^ExecStart.*|ExecStart=/opt/openzit
systemctl daemon-reload
msg_ok "Installed openziti"
read -r -p "${TAB3}Please paste an identity enrollment token(JTW)" prompt
read -r -p "${TAB3}Please paste an identity enrollment token(JTW)" prompt || prompt=""
if [[ ${prompt} ]]; then
msg_info "Adding identity"
echo "${prompt}" >/opt/openziti/etc/identities/identity.jwt
+1 -1
View File
@@ -163,7 +163,7 @@ EOF
systemctl enable -q --now paperless-webserver paperless-scheduler paperless-task-queue paperless-consumer
msg_ok "Created Services"
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
setup_adminer
fi
+3 -3
View File
@@ -18,7 +18,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://install.pi-hole.net"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
@@ -65,9 +65,9 @@ $STD pihole-FTL --config ntp.sync.interval 0
systemctl restart pihole-FTL.service
msg_ok "Installed Pi-hole"
read -r -p "${TAB3}Would you like to add Unbound? <y/N> " prompt
read -r -p "${TAB3}Would you like to add Unbound? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
read -r -p "${TAB3}Unbound is configured as a recursive DNS server by default, would you like it to be configured as a forwarding DNS server (using DNS-over-TLS (DoT)) instead? <y/N> " prompt
read -r -p "${TAB3}Unbound is configured as a recursive DNS server by default, would you like it to be configured as a forwarding DNS server (using DNS-over-TLS (DoT)) instead? <y/N> " prompt || prompt=""
msg_info "Installing Unbound"
mkdir -p /etc/unbound/unbound.conf.d
cat <<EOF >/etc/unbound/unbound.conf.d/pi-hole.conf
+1 -1
View File
@@ -13,7 +13,7 @@ setting_up_container
network_check
update_os
read -r -p "${TAB3}What public URL do you want to use (e.g. pocketid.mydomain.com)? " public_url
read -r -p "${TAB3}What public URL do you want to use (e.g. pocketid.mydomain.com)? " public_url || public_url=""
fetch_and_deploy_gh_release "pocket-id" "pocket-id/pocket-id" "singlefile" "latest" "/opt/pocket-id/" "pocket-id_linux_$(arch_resolve)"
msg_info "Configuring Pocket ID"
+2 -2
View File
@@ -47,7 +47,7 @@ msg_ok "Installed Podman"
mkdir -p /etc/containers/systemd
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
podman volume create portainer_data >/dev/null
@@ -74,7 +74,7 @@ EOF
$STD systemctl start portainer
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
else
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
cat <<EOF >/etc/containers/systemd/portainer-agent.container
+2 -2
View File
@@ -47,7 +47,7 @@ msg_ok "Installed Podman"
mkdir -p /etc/containers/systemd
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
podman volume create portainer_data >/dev/null
@@ -75,7 +75,7 @@ EOF
$STD systemctl start portainer
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
else
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
$STD podman pull docker.io/portainer/agent:latest
+4 -4
View File
@@ -14,7 +14,7 @@ network_check
update_os
setup_deb_based() {
read -r -p "${TAB3}Enter PostgreSQL version (15/16/17/18): " ver
read -r -p "${TAB3}Enter PostgreSQL version (15/16/17/18): " ver || ver=""
[[ $ver =~ ^(15|16|17|18)$ ]] || {
echo "Invalid version"
exit 64
@@ -124,7 +124,7 @@ EOF
systemctl restart postgresql
msg_ok "Installed PostgreSQL"
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Installing Adminer"
$STD apt install -y adminer
@@ -135,7 +135,7 @@ EOF
}
setup_alpine() {
read -r -p "${TAB3}Enter PostgreSQL version (15/16/17): " ver
read -r -p "${TAB3}Enter PostgreSQL version (15/16/17): " ver || ver=""
[[ $ver =~ ^(15|16|17)$ ]] || { echo "Invalid version"; exit 64; }
msg_info "Installing PostgreSQL ${ver}"
@@ -158,7 +158,7 @@ setup_alpine() {
$STD rc-service postgresql restart
msg_ok "Configured and Restarted PostgreSQL"
read -r -p "${TAB3}Would you like to install Adminer with lighttpd? <y/N>: " prompt
read -r -p "${TAB3}Would you like to install Adminer with lighttpd? <y/N>: " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Adminer and dependencies"
$STD apk add --no-cache \
+1 -1
View File
@@ -40,7 +40,7 @@ $STD uv venv --clear /opt/sabnzbd/venv
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
msg_ok "Installed SABnzbd"
read -r -p "Would you like to install par2cmdline-turbo? <y/N> " prompt
read -r -p "Would you like to install par2cmdline-turbo? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
mv /usr/bin/par2 /usr/bin/par2.old
fetch_and_deploy_gh_release "par2cmdline-turbo" "animetosho/par2cmdline-turbo" "prebuild" "latest" "/usr/bin/" "*-linux-$(arch_resolve).zip"
+2 -2
View File
@@ -47,7 +47,7 @@ echo " 3) Use an existing Flaresolverr/Byparr LXC"
echo " 4) Disable captcha bypassing altogether (not recommended)"
echo ""
read -r -p "${TAB3}Select deployment type [1]: " DEPLOYMENT_TYPE
read -r -p "${TAB3}Select deployment type [1]: " DEPLOYMENT_TYPE || DEPLOYMENT_TYPE=""
DEPLOYMENT_TYPE="${DEPLOYMENT_TYPE:-1}"
if [[ "$(arch_resolve)" == "arm64" && "$DEPLOYMENT_TYPE" == "2" ]]; then
msg_warn "FlareSolverr has no arm64 build; using Shelfmark's internal bypasser instead"
@@ -69,7 +69,7 @@ case "$DEPLOYMENT_TYPE" in
echo "Example: http://flaresoverr.homelab.lan:8191 or"
echo "http://192.168.10.99:8191"
echo ""
read -r -p "FlareSolverr/Byparr URL: " BYPASSER_URL
read -r -p "FlareSolverr/Byparr URL: " BYPASSER_URL || BYPASSER_URL=""
if [[ -z "$BYPASSER_URL" ]]; then
msg_warn "No Flaresolverr/Byparr URL provided. Falling back to Shelfmark's internal bypasser."
+1 -1
View File
@@ -46,7 +46,7 @@ echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >>~/.bash_profile
source ~/.bash_profile
msg_ok "Installed SQL Server Tools"
read -r -p "${TAB3}Do you want to run the SQL server setup now? (Later is also possible) <y/N>" prompt
read -r -p "${TAB3}Do you want to run the SQL server setup now? (Later is also possible) <y/N>" prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
/opt/mssql/bin/mssql-conf setup
else
+1 -1
View File
@@ -46,7 +46,7 @@ echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >>~/.bash_profile
source ~/.bash_profile
msg_ok "Installed SQL Server Tools"
read -r -p "${TAB3}Do you want to run the SQL Server setup now? (Later is also possible) <y/N>" prompt
read -r -p "${TAB3}Do you want to run the SQL Server setup now? (Later is also possible) <y/N>" prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
/opt/mssql/bin/mssql-conf setup
else
+2 -2
View File
@@ -32,7 +32,7 @@ Password: ${PASS}
EOF
msg_ok "Set up Tinyauth"
read -r -p "${TAB3}Enter your Tinyauth subdomain (e.g. https://tinyauth.example.com): " app_url
read -r -p "${TAB3}Enter your Tinyauth subdomain (e.g. https://tinyauth.example.com): " app_url || app_url=""
msg_info "Creating Service"
cat <<EOF >/opt/tinyauth/.env
@@ -80,7 +80,7 @@ EOF
echo "${RELEASE}" >~/.tinyauth
msg_ok "Installed Tinyauth"
read -r -p "${TAB3}Enter your Tinyauth subdomain (e.g. https://tinyauth.example.com): " app_url
read -r -p "${TAB3}Enter your Tinyauth subdomain (e.g. https://tinyauth.example.com): " app_url || app_url=""
cat <<EOF >/opt/tinyauth/.env
TINYAUTH_DATABASE_PATH=/opt/tinyauth/database.db
+2 -2
View File
@@ -36,9 +36,9 @@ setup_deb_based() {
msg_ok "Installed Valkey"
echo
read -r -p "${TAB3}Enable TLS for Valkey (Sentinel mode does not supported)? [y/N]: " prompt
read -r -p "${TAB3}Enable TLS for Valkey (Sentinel mode does not supported)? [y/N]: " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
read -r -p "${TAB3}Use TLS-only mode (disable TCP port 6379)? [y/N]: " tls_only
read -r -p "${TAB3}Use TLS-only mode (disable TCP port 6379)? [y/N]: " tls_only || tls_only=""
msg_info "Configuring TLS for Valkey..."
create_self_signed_cert "Valkey"
+1 -1
View File
@@ -27,7 +27,7 @@ msg_ok "Got version $victoriametrics_release of VictoriaMetrics"
fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "$victoriametrics_release" "/opt/victoriametrics" "$victoriametrics_filename"
fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "$victoriametrics_release" "/opt/victoriametrics" "$vmutils_filename"
read -r -p "${TAB3}Would you like to add VictoriaLogs? <y/N> " prompt
read -r -p "${TAB3}Would you like to add VictoriaLogs? <y/N> " prompt || prompt=""
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
vl_release_json="$(mktemp)"
+1 -1
View File
@@ -20,7 +20,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://packages.wazuh.com/$RELEASE/wazuh-install.sh "
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+1 -1
View File
@@ -24,7 +24,7 @@ setup_deb_based() {
$STD netfilter-persistent reload
msg_ok "Installed WireGuard"
read -r -p "${TAB3}Would you like to add WGDashboard? <y/N> " prompt
read -r -p "${TAB3}Would you like to add WGDashboard? <y/N> " prompt || prompt=""
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
git clone -q https://github.com/WGDashboard/WGDashboard.git /etc/wgdashboard
+1 -1
View File
@@ -25,7 +25,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://install.yunohost.org"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
+1 -1
View File
@@ -18,7 +18,7 @@ msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://install.zerotier.com"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM || CONFIRM=""
if [[ ! $CONFIRM =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10