Compare commits

..

2 Commits

Author SHA1 Message Date
ffd17a7200 Update openwebui.sh 2025-06-28 09:24:35 +02:00
f239e9ab00 Update ollama.sh 2025-06-28 08:54:59 +02:00
12 changed files with 272 additions and 265 deletions

View File

@ -26,7 +26,7 @@ jobs:
if [ -n "$files_with_github_urls" ]; then
echo "$files_with_github_urls" | while read file; do
if [ -f "$file" ]; then
sed -i 's|https://raw\.githubusercontent\.com/community-scripts/ProxmoxVE/|https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/|g' "$file"
sed -i 's|https://raw\.githubusercontent\.com/community-scripts/ProxmoxVE/|https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/|g' "$file"
fi
done
else

View File

@ -14,43 +14,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
## 2025-06-30
## 2025-06-29
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Linkwarden: Add backing up of data folder to the update function [@tremor021](https://github.com/tremor021) ([#5548](https://github.com/community-scripts/ProxmoxVE/pull/5548))
- #### ✨ New Features
- Add cron-job api-key env variable to homarr script [@Meierschlumpf](https://github.com/Meierschlumpf) ([#5204](https://github.com/community-scripts/ProxmoxVE/pull/5204))
### 🧰 Maintenance
- #### 📝 Documentation
- update readme with valid discord link. other one expired [@BramSuurdje](https://github.com/BramSuurdje) ([#5567](https://github.com/community-scripts/ProxmoxVE/pull/5567))
### 🌐 Website
- Update script-item.tsx [@ape364](https://github.com/ape364) ([#5549](https://github.com/community-scripts/ProxmoxVE/pull/5549))
- #### 🐞 Bug Fixes
- fix bug in tooltip that would always render 'updateable' [@BramSuurdje](https://github.com/BramSuurdje) ([#5552](https://github.com/community-scripts/ProxmoxVE/pull/5552))
## 2025-06-28
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Ollama: Clean up old Ollama files before running update [@tremor021](https://github.com/tremor021) ([#5534](https://github.com/community-scripts/ProxmoxVE/pull/5534))
- ONLYOFFICE: Update install script to manually create RabbitMQ user [@tremor021](https://github.com/tremor021) ([#5535](https://github.com/community-scripts/ProxmoxVE/pull/5535))
### 🌐 Website
- #### 📝 Script Information

View File

@ -13,7 +13,7 @@
<a href="https://helper-scripts.com">
<img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" />
</a>
<a href="https://discord.gg/3AnUqsXnmK">
<a href="https://discord.gg/jsYVk5JBxq">
<img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
</a>
<a href="https://ko-fi.com/community_scripts">
@ -82,7 +82,7 @@ We appreciate any contributions to the project—whether it's bug reports, featu
Join our community for support:
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/3AnUqsXnmK) for real-time support.
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/jsYVk5JBxq) for real-time support.
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
## 🤝 Report a Bug or Feature Request

View File

@ -48,7 +48,6 @@ source /opt/homarr/.env
set +a
export DB_DIALECT='sqlite'
export AUTH_SECRET=$(openssl rand -base64 32)
export CRON_JOB_API_KEY=$(openssl rand -base64 32)
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
dirname=$(basename "$dir")
@ -115,7 +114,6 @@ source /opt/homarr/.env
set +a
export DB_DIALECT='sqlite'
export AUTH_SECRET=$(openssl rand -base64 32)
export CRON_JOB_API_KEY=$(openssl rand -base64 32)
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
dirname=$(basename "$dir")

View File

@ -37,7 +37,6 @@ function update_script() {
msg_info "Updating ${APP} to ${RELEASE}"
mv /opt/linkwarden/.env /opt/.env
[ -d /opt/linkwarden/data ] && mv /opt/linkwarden/data /opt/data.bak
rm -rf /opt/linkwarden
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
cd /opt/linkwarden
@ -48,7 +47,6 @@ function update_script() {
$STD yarn prisma:generate
$STD yarn web:build
$STD yarn prisma:deploy
[ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP}"

View File

@ -1,89 +1,19 @@
[
{
"name": "rcourtman/Pulse",
"version": "v3.32.0",
"date": "2025-06-25T22:27:01Z"
},
{
"name": "sysadminsmedia/homebox",
"version": "v0.20.0",
"date": "2025-06-29T18:50:03Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.19",
"date": "2025-06-28T06:53:45Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.5",
"date": "2025-06-29T08:54:47Z"
},
{
"name": "emqx/emqx",
"version": "e5.9.1-rc.1",
"date": "2025-06-29T07:27:21Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2084",
"date": "2025-06-29T05:53:38Z"
},
{
"name": "theonedev/onedev",
"version": "v11.11.2",
"date": "2025-06-29T01:40:39Z"
},
{
"name": "home-assistant/core",
"version": "2025.6.3",
"date": "2025-06-24T13:00:12Z"
},
{
"name": "PrivateBin/PrivateBin",
"version": "1.7.7",
"date": "2025-06-28T19:57:56Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.11.2",
"date": "2025-06-28T17:33:38Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.22.5",
"date": "2025-06-28T16:06:19Z"
},
{
"name": "keycloak/keycloak",
"version": "26.2.5",
"date": "2025-05-28T06:49:43Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.1.0",
"date": "2025-06-28T09:02:38Z"
},
{
"name": "esphome/esphome",
"version": "2025.6.2",
"date": "2025-06-28T03:47:16Z"
},
{
"name": "plexguide/Huntarr.io",
"version": "8.1.11",
"date": "2025-06-28T03:42:46Z"
},
{
"name": "tobychui/zoraxy",
"version": "v3.2.4",
"date": "2025-06-28T02:47:31Z"
"version": "8.1.10",
"date": "2025-06-27T23:24:52Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v1.5.0",
"date": "2025-06-27T22:04:32Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.11.1",
"date": "2025-06-27T21:21:59Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.26.0",
@ -91,9 +21,14 @@
},
{
"name": "ollama/ollama",
"version": "v0.9.4-rc1",
"version": "v0.9.4-rc2",
"date": "2025-06-27T18:45:33Z"
},
{
"name": "home-assistant/core",
"version": "2025.6.3",
"date": "2025-06-24T13:00:12Z"
},
{
"name": "mattermost/mattermost",
"version": "preview-v0.1",
@ -139,6 +74,11 @@
"version": "7.2.10",
"date": "2025-06-27T06:40:00Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2064",
"date": "2025-06-27T05:54:03Z"
},
{
"name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2",
@ -154,6 +94,11 @@
"version": "15.2",
"date": "2025-04-14T15:37:12Z"
},
{
"name": "keycloak/keycloak",
"version": "26.2.5",
"date": "2025-05-28T06:49:43Z"
},
{
"name": "netbox-community/netbox",
"version": "v4.3.3",
@ -199,11 +144,21 @@
"version": "18.0.7",
"date": "2025-06-26T09:16:33Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.18",
"date": "2025-06-20T04:45:37Z"
},
{
"name": "mongodb/mongo",
"version": "r8.1.2-rc1",
"date": "2025-06-25T22:42:04Z"
},
{
"name": "rcourtman/Pulse",
"version": "v3.32.0",
"date": "2025-06-25T22:27:01Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.6.1",
@ -214,6 +169,11 @@
"version": "v4.101.2",
"date": "2025-06-25T21:18:52Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.22.4",
"date": "2025-06-25T20:46:20Z"
},
{
"name": "influxdata/influxdb",
"version": "v3.2.0",
@ -294,6 +254,11 @@
"version": "RELEASE.2025-06-13T11-33-47Z",
"date": "2025-06-23T20:58:42Z"
},
{
"name": "esphome/esphome",
"version": "2025.6.1",
"date": "2025-06-23T19:28:09Z"
},
{
"name": "runtipi/runtipi",
"version": "nightly",
@ -349,11 +314,26 @@
"version": "v2.0.114",
"date": "2025-06-21T11:20:21Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.0.7",
"date": "2025-06-21T09:24:21Z"
},
{
"name": "theonedev/onedev",
"version": "v11.11.1",
"date": "2025-06-21T09:23:39Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.28.4",
"date": "2025-06-21T08:29:04Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.4",
"date": "2025-06-21T07:47:02Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.24.2",
@ -504,6 +484,11 @@
"version": "2.36.1",
"date": "2025-06-16T19:20:54Z"
},
{
"name": "emqx/emqx",
"version": "e5.9.1-alpha.1",
"date": "2025-06-16T15:34:01Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.15",
@ -534,6 +519,11 @@
"version": "cli/v0.25.0",
"date": "2025-06-15T17:48:29Z"
},
{
"name": "tobychui/zoraxy",
"version": "v3.1.9",
"date": "2025-03-01T02:24:33Z"
},
{
"name": "Prowlarr/Prowlarr",
"version": "v1.37.0.5076",
@ -899,6 +889,11 @@
"version": "2025-05-07-r1",
"date": "2025-05-07T12:18:42Z"
},
{
"name": "sysadminsmedia/homebox",
"version": "v0.19.0",
"date": "2025-05-06T18:05:42Z"
},
{
"name": "garethgeorge/backrest",
"version": "v1.8.1",
@ -1214,6 +1209,11 @@
"version": "v2.12.3",
"date": "2025-02-06T11:07:07Z"
},
{
"name": "PrivateBin/PrivateBin",
"version": "1.7.6",
"date": "2025-02-01T09:50:52Z"
},
{
"name": "AmruthPillai/Reactive-Resume",
"version": "v4.4.4",

View File

@ -0,0 +1,148 @@
import { Info } from "lucide-react";
import type { Script } from "@/lib/types";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Alert, AlertDescription } from "@/components/ui/alert";
import CodeCopyButton from "@/components/ui/code-copy-button";
import { basePath } from "@/config/site-config";
import { getDisplayValueFromType } from "../script-info-blocks";
function getInstallCommand(scriptPath = "", isAlpine = false, useGitea = false) {
const githubUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main/${scriptPath}`;
const giteaUrl = `https://git.community-scripts.org/community-scripts/${basePath}/raw/branch/main/${scriptPath}`;
const url = useGitea ? giteaUrl : githubUrl;
return isAlpine ? `bash -c "$(curl -fsSL ${url})"` : `bash -c "$(curl -fsSL ${url})"`;
}
export default function InstallCommand({ item }: { item: Script }) {
const alpineScript = item.install_methods.find(method => method.type === "alpine");
const defaultScript = item.install_methods.find(method => method.type === "default");
const renderInstructions = (isAlpine = false) => (
<>
<p className="text-sm mt-2">
{isAlpine
? (
<>
As an alternative option, you can use Alpine Linux and the
{" "}
{item.name}
{" "}
package to create a
{" "}
{item.name}
{" "}
{getDisplayValueFromType(item.type)}
{" "}
container with faster creation time and minimal system resource usage.
You are also obliged to adhere to updates provided by the package maintainer.
</>
)
: item.type === "pve"
? (
<>
To use the
{" "}
{item.name}
{" "}
script, run the command below **only** in the Proxmox VE Shell. This script is
intended for managing or enhancing the host system directly.
</>
)
: item.type === "addon"
? (
<>
This script enhances an existing setup. You can use it inside a running LXC container or directly on the
Proxmox VE host to extend functionality with
{" "}
{item.name}
.
</>
)
: (
<>
To create a new Proxmox VE
{" "}
{item.name}
{" "}
{getDisplayValueFromType(item.type)}
, run the command below in the
Proxmox VE Shell.
</>
)}
</p>
{isAlpine && (
<p className="mt-2 text-sm">
To create a new Proxmox VE Alpine-
{item.name}
{" "}
{getDisplayValueFromType(item.type)}
, run the command below in
the Proxmox VE Shell.
</p>
)}
</>
);
const renderGiteaInfo = () => (
<Alert className="mt-3 mb-3">
<Info className="h-4 w-4" />
<AlertDescription className="text-sm">
<strong>When to use Gitea:</strong>
{" "}
GitHub may have issues including slow connections, delayed updates after bug
fixes, no IPv6 support, API rate limits (60/hour). Use our Gitea mirror as a reliable alternative when
experiencing these issues.
</AlertDescription>
</Alert>
);
const renderScriptTabs = (useGitea = false) => {
if (alpineScript) {
return (
<Tabs defaultValue="default" className="mt-2 w-full max-w-4xl">
<TabsList>
<TabsTrigger value="default">Default</TabsTrigger>
<TabsTrigger value="alpine">Alpine Linux</TabsTrigger>
</TabsList>
<TabsContent value="default">
{renderInstructions()}
<CodeCopyButton>{getInstallCommand(defaultScript?.script, false, useGitea)}</CodeCopyButton>
</TabsContent>
<TabsContent value="alpine">
{renderInstructions(true)}
<CodeCopyButton>{getInstallCommand(alpineScript.script, true, useGitea)}</CodeCopyButton>
</TabsContent>
</Tabs>
);
}
else if (defaultScript?.script) {
return (
<>
{renderInstructions()}
<CodeCopyButton>{getInstallCommand(defaultScript.script, false, useGitea)}</CodeCopyButton>
</>
);
}
return null;
};
return (
<div className="p-4">
<Tabs defaultValue="github" className="w-full max-w-4xl">
<TabsList>
<TabsTrigger value="github">GitHub</TabsTrigger>
<TabsTrigger value="gitea">Gitea</TabsTrigger>
</TabsList>
<TabsContent value="github">
{renderScriptTabs(false)}
</TabsContent>
<TabsContent value="gitea">
{renderGiteaInfo()}
{renderScriptTabs(true)}
</TabsContent>
</Tabs>
</div>
);
}

View File

@ -61,7 +61,6 @@ function ScriptHeader({ item }: { item: Script }) {
<div className="mt-1 flex items-center gap-3 text-sm text-muted-foreground">
<span>
Added
{" "}
{extractDate(item.date_created)}
</span>
<span></span>

View File

@ -39,7 +39,7 @@ export default function Tooltips({ item }: { item: Script }) {
{item.privileged && (
<TooltipBadge variant="warning" label="Privileged" content="This script will be run in a privileged LXC" />
)}
{item.updateable && item.type !== "pve" && (
{(item.updateable || item.type !== "pve") && (
<TooltipBadge
variant="success"
label="Updateable"

View File

@ -76,7 +76,6 @@ source /opt/homarr/.env
set +a
export DB_DIALECT='sqlite'
export AUTH_SECRET=$(openssl rand -base64 32)
export CRON_JOB_API_KEY=$(openssl rand -base64 32)
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
dirname=$(basename "$dir")

View File

@ -62,9 +62,6 @@ msg_info "Preconfiguring ONLYOFFICE Debconf Settings"
RMQ_USER=onlyoffice_rmq
RMQ_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
JWT_SECRET=$(openssl rand -hex 16)
$STD rabbitmqctl add_user $RMQ_USER $RMQ_PASS
$STD rabbitmqctl set_permissions -p / $RMQ_USER ".*" ".*" ".*"
$STD rabbitmqctl set_user_tags $RMQ_USER administrator
echo onlyoffice-documentserver onlyoffice/db-host string localhost | debconf-set-selections
echo onlyoffice-documentserver onlyoffice/db-user string $DB_USER | debconf-set-selections

View File

@ -20,9 +20,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
if command -v curl >/dev/null 2>&1; then
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
load_functions
#echo "(build.func) Loaded core.func via curl"
elif command -v wget >/dev/null 2>&1; then
source <(wget -qO- https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
load_functions
#echo "(build.func) Loaded core.func via wget"
fi
# This function enables error handling in the script by setting options and defining a trap for the ERR signal.
catch_errors() {
@ -187,12 +189,10 @@ base_settings() {
HN=$NSAPP
BRG="vmbr0"
NET="dhcp"
IPV6_METHOD="none"
IPV6_STATIC=""
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
#DISABLEIP6="no"
DISABLEIP6="no"
MTU=""
SD=""
NS=""
@ -531,130 +531,43 @@ advanced_settings() {
fi
fi
# IPv4 methods: dhcp, static, none
while true; do
IPV4_METHOD=$(whiptail --backtitle "Proxmox VE Helper Scripts" \
--title "IPv4 Address Management" \
--menu "Select IPv4 Address Assignment Method:" 12 60 2 \
"dhcp" "Automatic (DHCP, recommended)" \
"static" "Static (manual entry)" \
3>&1 1>&2 2>&3)
NET=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Static IPv4 CIDR Address (/24)" 8 58 dhcp --title "IP ADDRESS" 3>&1 1>&2 2>&3)
exit_status=$?
if [ $exit_status -ne 0 ]; then
if [ $exit_status -eq 0 ]; then
if [ "$NET" = "dhcp" ]; then
echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}"
break
else
if [[ "$NET" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[1-2][0-9]|3[0-2])$ ]]; then
echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}"
break
else
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox "$NET is an invalid IPv4 CIDR address. Please enter a valid IPv4 CIDR address or 'dhcp'" 8 58
fi
fi
else
exit_script
fi
case "$IPV4_METHOD" in
dhcp)
NET="dhcp"
GATE=""
echo -e "${NETWORK}${BOLD}${DGN}IPv4: DHCP${CL}"
break
;;
static)
# Static: call and validate CIDR address
while true; do
NET=$(whiptail --backtitle "Proxmox VE Helper Scripts" \
--inputbox "Enter Static IPv4 CIDR Address (e.g. 192.168.100.50/24)" 8 58 "" \
--title "IPv4 ADDRESS" 3>&1 1>&2 2>&3)
if [ -z "$NET" ]; then
whiptail --msgbox "IPv4 address must not be empty." 8 58
continue
elif [[ "$NET" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[1-2][0-9]|3[0-2])$ ]]; then
echo -e "${NETWORK}${BOLD}${DGN}IPv4 Address: ${BGN}$NET${CL}"
break
else
whiptail --msgbox "$NET is not a valid IPv4 CIDR address. Please enter a correct value!" 8 58
fi
done
# call and validate Gateway
while true; do
GATE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" \
--inputbox "Enter Gateway IP address for static IPv4" 8 58 "" \
--title "Gateway IP" 3>&1 1>&2 2>&3)
if [ -z "$GATE1" ]; then
whiptail --msgbox "Gateway IP address cannot be empty." 8 58
elif [[ ! "$GATE1" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
whiptail --msgbox "Invalid Gateway IP address format." 8 58
else
GATE=",gw=$GATE1"
echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}$GATE1${CL}"
break
fi
done
break
;;
esac
done
# IPv6 Address Management selection
while true; do
IPV6_METHOD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --menu \
"Select IPv6 Address Management Type:" 15 58 4 \
"auto" "SLAAC/AUTO (recommended, default)" \
"dhcp" "DHCPv6" \
"static" "Static (manual entry)" \
"none" "Disabled" \
--default-item "auto" 3>&1 1>&2 2>&3)
[ $? -ne 0 ] && exit_script
case "$IPV6_METHOD" in
auto)
echo -e "${NETWORK}${BOLD}${DGN}IPv6: ${BGN}SLAAC/AUTO${CL}"
IPV6_ADDR=""
IPV6_GATE=""
break
;;
dhcp)
echo -e "${NETWORK}${BOLD}${DGN}IPv6: ${BGN}DHCPv6${CL}"
IPV6_ADDR="dhcp"
IPV6_GATE=""
break
;;
static)
# Ask for static IPv6 address (CIDR notation, e.g., 2001:db8::1234/64)
while true; do
IPV6_ADDR=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox \
"Set a static IPv6 CIDR address (e.g., 2001:db8::1234/64)" 8 58 "" \
--title "IPv6 STATIC ADDRESS" 3>&1 1>&2 2>&3) || exit_script
if [[ "$IPV6_ADDR" =~ ^([0-9a-fA-F:]+:+)+[0-9a-fA-F]+(/[0-9]{1,3})$ ]]; then
echo -e "${NETWORK}${BOLD}${DGN}IPv6 Address: ${BGN}$IPV6_ADDR${CL}"
break
else
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox \
"$IPV6_ADDR is an invalid IPv6 CIDR address. Please enter a valid IPv6 CIDR address (e.g., 2001:db8::1234/64)" 8 58
fi
done
# Optional: ask for IPv6 gateway for static config
while true; do
IPV6_GATE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox \
"Enter IPv6 gateway address (optional, leave blank for none)" 8 58 "" --title "IPv6 GATEWAY" 3>&1 1>&2 2>&3)
if [ -z "$IPV6_GATE" ]; then
IPV6_GATE=""
break
elif [[ "$IPV6_GATE" =~ ^([0-9a-fA-F:]+:+)+[0-9a-fA-F]+$ ]]; then
break
else
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox \
"Invalid IPv6 gateway format." 8 58
fi
done
break
;;
none)
echo -e "${NETWORK}${BOLD}${DGN}IPv6: ${BGN}Disabled${CL}"
IPV6_ADDR="none"
IPV6_GATE=""
break
;;
*)
exit_script
;;
esac
done
if [ "$NET" != "dhcp" ]; then
while true; do
GATE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Enter gateway IP address" 8 58 --title "Gateway IP" 3>&1 1>&2 2>&3)
if [ -z "$GATE1" ]; then
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox "Gateway IP address cannot be empty" 8 58
elif [[ ! "$GATE1" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox "Invalid IP address format" 8 58
else
GATE=",gw=$GATE1"
echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}$GATE1${CL}"
break
fi
done
else
GATE=""
echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}Default${CL}"
fi
if [ "$var_os" == "alpine" ]; then
APT_CACHER=""
@ -668,12 +581,12 @@ advanced_settings() {
fi
fi
# if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "IPv6" --yesno "Disable IPv6?" 10 58); then
# DISABLEIP6="yes"
# else
# DISABLEIP6="no"
# fi
# echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}"
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "IPv6" --yesno "Disable IPv6?" 10 58); then
DISABLEIP6="yes"
else
DISABLEIP6="no"
fi
echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}"
if MTU1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default [The MTU of your selected vmbr, default is 1500])" 8 58 --title "MTU SIZE" 3>&1 1>&2 2>&3); then
if [ -z "$MTU1" ]; then
@ -1028,16 +941,6 @@ start() {
build_container() {
# if [ "$VERBOSE" == "yes" ]; then set -x; fi
NET_STRING="-net0 name=eth0,bridge=$BRG$MAC,ip=$NET$GATE$VLAN$MTU"
case "$IPV6_METHOD" in
auto) NET_STRING="$NET_STRING,ip6=auto" ;;
dhcp) NET_STRING="$NET_STRING,ip6=dhcp" ;;
static)
NET_STRING="$NET_STRING,ip6=$IPV6_ADDR"
[ -n "$IPV6_GATE" ] && NET_STRING="$NET_STRING,gw6=$IPV6_GATE"
;;
none) ;;
esac
if [ "$CT_TYPE" == "1" ]; then
FEATURES="keyctl=1,nesting=1"
else
@ -1065,7 +968,7 @@ build_container() {
export CACHER="$APT_CACHER"
export CACHER_IP="$APT_CACHER_IP"
export tz="$timezone"
#export DISABLEIPV6="$DISABLEIP6"
export DISABLEIPV6="$DISABLEIP6"
export APPLICATION="$APP"
export app="$NSAPP"
export PASSWORD="$PW"
@ -1085,7 +988,7 @@ build_container() {
-tags $TAGS
$SD
$NS
$NET_STRING
-net0 name=eth0,bridge=$BRG$MAC,ip=$NET$GATE$VLAN$MTU
-onboot 1
-cores $CORE_COUNT
-memory $RAM_SIZE