mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-10-26 23:45:13 +01:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d4613af2ed | |||
| 63790a944c | |||
| b8a8d6a572 | |||
| 876731e6fd | |||
| 23d0c904a3 | |||
| 5d477b0b6e | |||
| 8a4ff0e7ce | |||
| ddc1278115 | |||
| f07237f231 | |||
| 2fe0acad6e | |||
| e44c353ddf | |||
| 7012e50e42 | |||
| 5c754fc681 | |||
| 7d5857f1b9 |
+18
-1
@@ -572,7 +572,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- HomeTube ([#18172](https://github.com/community-scripts/ProxmoxVE/pull/18172))
|
||||
- Vane ([#18168](https://github.com/community-scripts/ProxmoxVE/pull/18168))
|
||||
- HomeTube ([#18172](https://github.com/community-scripts/ProxmoxVE/pull/18172))
|
||||
- Honcho ([#18169](https://github.com/community-scripts/ProxmoxVE/pull/18169))
|
||||
- YTPTube ([#18174](https://github.com/community-scripts/ProxmoxVE/pull/18174))
|
||||
- Stump ([#18173](https://github.com/community-scripts/ProxmoxVE/pull/18173))
|
||||
@@ -583,12 +584,28 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: lock only this platform when mise installs the plugin tools [@MickLesk](https://github.com/MickLesk) ([#18241](https://github.com/community-scripts/ProxmoxVE/pull/18241))
|
||||
- Fix service name case for Splunkd [@CerberusStyle](https://github.com/CerberusStyle) ([#18238](https://github.com/community-scripts/ProxmoxVE/pull/18238))
|
||||
- VMs: pass the machine type, CPU, disk cache and discard settings to qm [@MickLesk](https://github.com/MickLesk) ([#18232](https://github.com/community-scripts/ProxmoxVE/pull/18232))
|
||||
- excalidash: bump Node.js from 20 to 24 [@github-actions[bot]](https://github.com/github-actions[bot]) ([#18213](https://github.com/community-scripts/ProxmoxVE/pull/18213))
|
||||
- readmeabook: bump Node.js from 20 to 24 [@github-actions[bot]](https://github.com/github-actions[bot]) ([#18217](https://github.com/community-scripts/ProxmoxVE/pull/18217))
|
||||
- homepage: bump Node.js from 22 to 24 [@github-actions[bot]](https://github.com/github-actions[bot]) ([#18214](https://github.com/community-scripts/ProxmoxVE/pull/18214))
|
||||
- remove old -install.sh (verdaccio) [@github-actions[bot]](https://github.com/github-actions[bot]) ([#18218](https://github.com/community-scripts/ProxmoxVE/pull/18218))
|
||||
- meshcentral: bump Node.js from 22 to 24 [@github-actions[bot]](https://github.com/github-actions[bot]) ([#18215](https://github.com/community-scripts/ProxmoxVE/pull/18215))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- MeshCentral: update the npm package, not just the OS [@MickLesk](https://github.com/MickLesk) ([#18243](https://github.com/community-scripts/ProxmoxVE/pull/18243))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- feat: let an install survive a closed console / dont sighup installs [@MickLesk](https://github.com/MickLesk) ([core#167](https://github.com/community-scripts/core/pull/167))
|
||||
- feat: create containers from the linuxcontainers.org catalog when Proxmox has no template [@MickLesk](https://github.com/MickLesk) ([core#25](https://github.com/community-scripts/core/pull/25))
|
||||
|
||||
### 📚 Documentation
|
||||
|
||||
- Ref: Docs / Readme [@MickLesk](https://github.com/MickLesk) ([#18233](https://github.com/community-scripts/ProxmoxVE/pull/18233))
|
||||
|
||||
## 2026-10-25
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
@@ -233,6 +233,7 @@ EOF
|
||||
cd "$SRC_DIR"
|
||||
export MISE_TRUSTED_CONFIG_PATHS="$SRC_DIR"/mise.toml
|
||||
export MISE_DISABLE_TOOLS=github:jellyfin/jellyfin-ffmpeg
|
||||
export MISE_LOCKFILE_MODE=merge MISE_LOCKFILE_PLATFORMS="linux-$(arch_resolve x64 arm64)"
|
||||
mise_ok=0
|
||||
for i in 1 2 3; do
|
||||
$STD mise install && {
|
||||
|
||||
+33
-11
@@ -22,18 +22,40 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/meshcentral ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
apt_update_safe
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated successfully!"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/meshcentral ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
CURRENT=$(node -p "require('/opt/meshcentral/node_modules/meshcentral/package.json').version" 2>/dev/null)
|
||||
LATEST=$(npm view meshcentral version 2>/dev/null)
|
||||
if [[ -z "$LATEST" ]]; then
|
||||
msg_error "Could not determine the latest MeshCentral version from npm"
|
||||
exit 250
|
||||
fi
|
||||
if [[ "$CURRENT" != "$LATEST" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop meshcentral
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP} from v${CURRENT} to v${LATEST}"
|
||||
cd /opt/meshcentral
|
||||
$STD npm install "meshcentral@${LATEST}"
|
||||
msg_ok "Updated ${APP} to v${LATEST}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start meshcentral
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "${APP} is already at v${CURRENT}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env bash
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/ItzCrazyKns/Vane
|
||||
|
||||
APP="Vane"
|
||||
var_tags="${var_tags:-ai;search}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-12}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/vane ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "vane" "ItzCrazyKns/Vane"; then
|
||||
msg_info "Stopping Vane"
|
||||
systemctl stop vane
|
||||
msg_ok "Stopped Vane"
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "vane" "ItzCrazyKns/Vane" "tarball"
|
||||
|
||||
msg_info "Building Vane"
|
||||
cd /opt/vane
|
||||
$STD yarn install --frozen-lockfile --network-timeout 600000
|
||||
$STD yarn build
|
||||
$STD yarn cache clean
|
||||
rm -rf .next/cache
|
||||
cp -r public .next/standalone/
|
||||
cp -r .next/static .next/standalone/.next/
|
||||
cp -r drizzle .next/standalone/
|
||||
ln -s /opt/vane_data .next/standalone/data
|
||||
$STD npx playwright install --with-deps --only-shell chromium
|
||||
msg_ok "Built Vane"
|
||||
|
||||
msg_info "Starting Vane"
|
||||
systemctl start vane
|
||||
msg_ok "Started Vane"
|
||||
msg_ok "Updated Vane successfully!"
|
||||
fi
|
||||
|
||||
if check_for_gh_branch "searxng" "searxng/searxng" "master"; then
|
||||
msg_info "Stopping SearXNG"
|
||||
systemctl stop searxng
|
||||
msg_ok "Stopped SearXNG"
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
fetch_and_deploy_gh_branch "searxng" "searxng/searxng" "master"
|
||||
|
||||
msg_info "Updating SearXNG"
|
||||
cd /opt/searxng
|
||||
$STD uv pip install -p /opt/searxng/.venv/bin/python -r requirements.txt -r requirements-server.txt
|
||||
msg_ok "Updated SearXNG"
|
||||
|
||||
msg_info "Starting SearXNG"
|
||||
systemctl start searxng
|
||||
msg_ok "Started SearXNG"
|
||||
msg_ok "Updated SearXNG successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
@@ -397,6 +397,7 @@ cp LICENSE "$APP_DIR"
|
||||
cd "$SRC_DIR"
|
||||
export MISE_TRUSTED_CONFIG_PATHS="$SRC_DIR"/mise.toml
|
||||
export MISE_DISABLE_TOOLS=github:jellyfin/jellyfin-ffmpeg
|
||||
export MISE_LOCKFILE_MODE=merge MISE_LOCKFILE_PLATFORMS="linux-$(arch_resolve x64 arm64)"
|
||||
mise_ok=0
|
||||
for i in 1 2 3; do
|
||||
$STD mise install && {
|
||||
|
||||
@@ -92,7 +92,7 @@ $STD /opt/splunk/bin/splunk enable boot-start \
|
||||
--no-prompt
|
||||
chown -R splunk:splunk /opt/splunk
|
||||
$STD systemctl daemon-reload
|
||||
$STD systemctl enable --now Splunkd
|
||||
$STD systemctl enable --now splunkd
|
||||
msg_ok "Started Service"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/ItzCrazyKns/Vane
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y build-essential
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
|
||||
fetch_and_deploy_gh_branch "searxng" "searxng/searxng" "master"
|
||||
|
||||
msg_info "Setting up SearXNG"
|
||||
cd /opt/searxng
|
||||
$STD uv venv /opt/searxng/.venv
|
||||
$STD uv pip install -p /opt/searxng/.venv/bin/python -r requirements.txt -r requirements-server.txt
|
||||
mkdir -p /etc/searxng
|
||||
cat <<EOF >/etc/searxng/settings.yml
|
||||
use_default_settings: true
|
||||
general:
|
||||
instance_name: "SearXNG"
|
||||
server:
|
||||
bind_address: "127.0.0.1"
|
||||
port: 8888
|
||||
secret_key: "$(openssl rand -hex 32)"
|
||||
limiter: false
|
||||
image_proxy: false
|
||||
search:
|
||||
autocomplete: "google"
|
||||
formats:
|
||||
- html
|
||||
- json
|
||||
engines:
|
||||
- name: wolframalpha
|
||||
disabled: false
|
||||
EOF
|
||||
chmod 600 /etc/searxng/settings.yml
|
||||
msg_ok "Set up SearXNG"
|
||||
|
||||
fetch_and_deploy_gh_release "vane" "ItzCrazyKns/Vane" "tarball"
|
||||
|
||||
msg_info "Building Vane"
|
||||
cd /opt/vane
|
||||
$STD yarn install --frozen-lockfile --network-timeout 600000
|
||||
$STD yarn build
|
||||
$STD yarn cache clean
|
||||
rm -rf .next/cache
|
||||
cp -r public .next/standalone/
|
||||
cp -r .next/static .next/standalone/.next/
|
||||
cp -r drizzle .next/standalone/
|
||||
mkdir -p /opt/vane_data
|
||||
# The standalone server chdirs into its own directory and keeps config.json, db.sqlite and uploads in ./data
|
||||
ln -s /opt/vane_data .next/standalone/data
|
||||
msg_ok "Built Vane"
|
||||
|
||||
msg_info "Installing Chromium for Vane"
|
||||
$STD npx playwright install --with-deps --only-shell chromium
|
||||
msg_ok "Installed Chromium for Vane"
|
||||
|
||||
msg_info "Creating Services"
|
||||
cat <<EOF >/etc/systemd/system/searxng.service
|
||||
[Unit]
|
||||
Description=SearXNG for Vane
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/searxng
|
||||
Environment=SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml
|
||||
ExecStart=/opt/searxng/.venv/bin/granian --interface wsgi --host 127.0.0.1 --port 8888 searx.webapp:app
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
cat <<EOF >/etc/systemd/system/vane.service
|
||||
[Unit]
|
||||
Description=Vane
|
||||
After=network.target searxng.service
|
||||
Wants=searxng.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/vane/.next/standalone
|
||||
Environment=NODE_ENV=production
|
||||
Environment=HOSTNAME=0.0.0.0
|
||||
Environment=PORT=3000
|
||||
Environment=SEARXNG_API_URL=http://127.0.0.1:8888
|
||||
ExecStart=/usr/bin/node /opt/vane/.next/standalone/server.js
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now searxng vane
|
||||
msg_ok "Created Services"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
+1
-1
@@ -149,7 +149,7 @@ rm -f "$FILE_IMG"
|
||||
msg_info "Attaching EFI and root disk"
|
||||
qm set $VMID \
|
||||
--efidisk0 ${STORAGE}:0,efitype=4m \
|
||||
--scsi0 ${DISK_REF},ssd=1,discard=on \
|
||||
--scsi0 ${DISK_REF},${DISK_CACHE}ssd=1,discard=on \
|
||||
--boot order=scsi0 \
|
||||
--serial0 socket >/dev/null
|
||||
qm set $VMID --agent enabled=1 >/dev/null
|
||||
|
||||
@@ -201,12 +201,12 @@ DISK_REF="${STORAGE}:${DISK_REF:-}${DISK_VAR:-}"
|
||||
|
||||
msg_ok "Extracted Mikrotik RouterOS CHR Disk Image"
|
||||
msg_info "Creating Mikrotik RouterOS CHR VM"
|
||||
qm create $VMID -tablet 0 -localtime 1 -cores $CORE_COUNT -memory $RAM_SIZE -name $HN \
|
||||
qm create $VMID${MACHINE} -tablet 0 -localtime 1${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE -name $HN \
|
||||
-tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU \
|
||||
-onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
qm importdisk $VMID "$FILE" $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||
qm set $VMID \
|
||||
-scsi0 "$DISK_REF" \
|
||||
-scsi0 "${DISK_REF},${DISK_CACHE}${THIN%,}" \
|
||||
-boot order=scsi0 >/dev/null
|
||||
|
||||
set_description
|
||||
|
||||
+1
-1
@@ -161,7 +161,7 @@ msg_info "Creating TrueNAS VM shell"
|
||||
qm create "$VMID"${MACHINE} -bios ovmf -agent enabled=1 -tablet 0 -localtime 1${CPU_TYPE} \
|
||||
-cores "$CORE_COUNT" -memory "$RAM_SIZE" -balloon 0 -name "$HN" -tags community-script \
|
||||
-net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 \
|
||||
-efidisk0 $STORAGE:1,efitype=4m,pre-enrolled-keys=0 -sata0 ${STORAGE}:${DISK_SIZE%G},ssd=1 \
|
||||
-efidisk0 $STORAGE:1,efitype=4m,pre-enrolled-keys=0 -sata0 ${STORAGE}:${DISK_SIZE%G},${DISK_CACHE}ssd=1 \
|
||||
-scsihw virtio-scsi-single -cdrom "$ISO_VOLUME" -boot order='sata0;ide2' -vga virtio >/dev/null
|
||||
msg_ok "Created VM shell"
|
||||
|
||||
|
||||
@@ -374,7 +374,7 @@ vm_import_disk "$VMID" "$FILE" "$STORAGE" "$DISK_IMPORT_FORMAT"
|
||||
|
||||
qm set "$VMID" \
|
||||
-efidisk0 "${STORAGE}:0,efitype=4m" \
|
||||
-scsi0 "${VM_IMPORTED_DISK},${DISK_CACHE}size=${DISK_SIZE}" \
|
||||
-scsi0 "${VM_IMPORTED_DISK},${DISK_CACHE}${THIN}size=${DISK_SIZE}" \
|
||||
-boot order=scsi0 -serial0 socket >/dev/null
|
||||
vm_resize_disk
|
||||
qm set "$VMID" --agent enabled=1 >/dev/null
|
||||
|
||||
Reference in New Issue
Block a user