Compare commits

...

20 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
020c8a76c1 Update CHANGELOG.md (#7664)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-16 00:12:10 +00:00
community-scripts-pr-app[bot]
8f738e2d26 Update versions.json (#7663)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-16 02:11:44 +02:00
community-scripts-pr-app[bot]
e5e7547eca Update CHANGELOG.md (#7662)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 21:41:51 +00:00
community-scripts-pr-app[bot]
a383aa5679 Update CHANGELOG.md (#7661)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 21:11:06 +00:00
Hugo Dantas
ce68253564 Fix IPv6 provider setting in cloudflare-ddns-install.sh (#7660) 2025-09-15 23:10:45 +02:00
community-scripts-pr-app[bot]
65e561dcbe Update versions.json (#7657)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 14:05:44 +02:00
CanbiZ
dffb291a4f OpenWrt: Refactor and increase root-partition (#7653)
* move openwrt to correct naming

* Add disk size configuration for OpenWrt VM

Introduces a DISK_SIZE variable to allow setting disk size for OpenWrt VM in both default and advanced settings. Updates VM creation logic to use the specified disk size and improves output formatting for clarity.

* Update openwrt-vm.sh

* Update openwrt-vm.sh

* Update openwrt-vm.sh

* Add newline before loading message in openwrt-vm.sh

Prepends a newline to the loading message for improved output formatting in the openwrt-vm.sh script.

* Update openwrt-vm.sh

* rename vm

* Improve OpenWrt VM network configuration logic

Refactored network interface configuration to use a loop for more robust VM status checking and command delivery. Enhanced bridge interface setup with clearer messaging and improved variable handling. Minor shell syntax improvements for consistency.

* Update openwrt-vm.sh
2025-09-15 13:17:45 +02:00
community-scripts-pr-app[bot]
f3bcb3211c Update CHANGELOG.md (#7655)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 09:20:31 +00:00
community-scripts-pr-app[bot]
7c22fe5f46 Update CHANGELOG.md (#7654)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 09:19:59 +00:00
CanbiZ
600e739005 Refactor pv installation into ensure_pv function (#7642)
Moved pv installation logic into a reusable ensure_pv function in both haos-vm.sh and umbrel-os-vm.sh. This improves code clarity and avoids duplicate code for checking and installing the pv package.
2025-09-15 11:19:52 +02:00
CanbiZ
31be78878f Wikijs: Bump Node.js version to 22 (#7643)
* Update Node.js version to 22 in installer script

* Update wikijs.sh
2025-09-15 11:19:32 +02:00
community-scripts-pr-app[bot]
e47d62d575 Update .app files (#7651)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-15 10:50:08 +02:00
community-scripts-pr-app[bot]
ec58d6c622 Update CHANGELOG.md (#7652)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 08:43:48 +00:00
community-scripts-pr-app[bot]
bac2b6eade Update CHANGELOG.md (#7650)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 08:43:29 +00:00
community-scripts-pr-app[bot]
bb289203c6 Update date in json (#7649)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-15 08:43:22 +00:00
push-app-to-main[bot]
fe97056d19 SigNoz (#7648)
* 'Add new script'

* Change application name from 'signoz' to 'SigNoz'

* Update signoz-install.sh

* Update signoz-install.sh

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-09-15 10:42:57 +02:00
community-scripts-pr-app[bot]
65ba9192d9 Update CHANGELOG.md (#7647)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 07:54:59 +00:00
community-scripts-pr-app[bot]
8a096b9e6e Update CHANGELOG.md (#7646)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 07:54:43 +00:00
community-scripts-pr-app[bot]
1c6efa528b Update date in json (#7645)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-15 07:54:41 +00:00
push-app-to-main[bot]
89c3410f6f 'Add new script' (#7644)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2025-09-15 09:54:23 +02:00
17 changed files with 892 additions and 302 deletions

View File

@@ -10,8 +10,23 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-09-16
## 2025-09-15 ## 2025-09-15
### 🆕 New Scripts
- SigNoz ([#7648](https://github.com/community-scripts/ProxmoxVE/pull/7648))
- Scraparr ([#7644](https://github.com/community-scripts/ProxmoxVE/pull/7644))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- vm: move pv installation into ensure_pv function [@MickLesk](https://github.com/MickLesk) ([#7642](https://github.com/community-scripts/ProxmoxVE/pull/7642))
- Cloudflare-DDNS: Fix the IP6_PROVIDER variable [@hugodantas](https://github.com/hugodantas) ([#7660](https://github.com/community-scripts/ProxmoxVE/pull/7660))
- Wikijs: Bump Node.js version to 22 [@MickLesk](https://github.com/MickLesk) ([#7643](https://github.com/community-scripts/ProxmoxVE/pull/7643))
## 2025-09-14 ## 2025-09-14
## 2025-09-13 ## 2025-09-13

6
ct/headers/scraparr Normal file
View File

@@ -0,0 +1,6 @@
_____
/ ___/______________ _____ ____ ___________
\__ \/ ___/ ___/ __ `/ __ \/ __ `/ ___/ ___/
___/ / /__/ / / /_/ / /_/ / /_/ / / / /
/____/\___/_/ \__,_/ .___/\__,_/_/ /_/
/_/

6
ct/headers/signoz Normal file
View File

@@ -0,0 +1,6 @@
_____ _ _ __
/ ___/(_)___ _/ | / /___ ____
\__ \/ / __ `/ |/ / __ \/_ /
___/ / / /_/ / /| / /_/ / / /_
/____/_/\__, /_/ |_/\____/ /___/
/____/

63
ct/scraparr.sh Normal file
View File

@@ -0,0 +1,63 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: JasonGreenC
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/thecfu/scraparr
APP="Scraparr"
var_tags="${var_tags:-arr;monitoring}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
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/scraparr/ ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "scraparr" "thecfu/scraparr"; then
msg_info "Stopping Services"
systemctl stop scraparr
msg_ok "Services Stopped"
PYTHON_VERSION="3.12" setup_uv
fetch_and_deploy_gh_release "scrappar" "thecfu/scraparr" "tarball" "latest" "/opt/scraparr"
msg_info "Updating Scraparr"
cd /opt/scraparr
$STD uv venv /opt/scraparr/.venv
$STD /opt/scraparr/.venv/bin/python -m ensurepip --upgrade
$STD /opt/scraparr/.venv/bin/python -m pip install --upgrade pip
$STD /opt/scraparr/.venv/bin/python -m pip install -r /opt/scraparr/src/scraparr/requirements.txt
chmod -R 755 /opt/scraparr
msg_ok "Updated Scraparr"
msg_info "Starting Services"
systemctl start scraparr
msg_ok "Services Started"
msg_ok "Updated 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 "${TAB}${GATEWAY}${BGN}http://${IP}:7100${CL}"

63
ct/signoz.sh Normal file
View File

@@ -0,0 +1,63 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://signoz.io/
APP="SigNoz"
var_tags="${var_tags:-notes}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
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/signoz ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "signoz" "SigNoz/signoz"; then
msg_info "Stopping Services"
systemctl stop signoz
systemctl stop signoz-otel-collector
msg_ok "Stopped Services"
fetch_and_deploy_gh_release "signoz" "SigNoz/signoz" "prebuild" "latest" "/opt/signoz" "signoz-community_linux_amd64.tar.gz"
fetch_and_deploy_gh_release "signoz-otel-collector" "SigNoz/signoz-otel-collector" "prebuild" "latest" "/opt/signoz-otel-collector" "signoz-otel-collector_linux_amd64.tar.gz"
fetch_and_deploy_gh_release "signoz-schema-migrator" "SigNoz/signoz-otel-collector" "prebuild" "latest" "/opt/signoz-schema-migrator" "signoz-schema-migrator_linux_amd64.tar.gz"
msg_info "Updating ${APP}"
cd /opt/signoz-schema-migrator/bin
$STD ./signoz-schema-migrator sync --dsn="tcp://localhost:9000?password=" --replication=true --up=
$STD ./signoz-schema-migrator async --dsn="tcp://localhost:9000?password=" --replication=true --up=
msg_ok "Updated $APP"
msg_info "Starting Services"
systemctl start signoz-otel-collector
systemctl start signoz
msg_ok "Started Services"
msg_ok "Updated 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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

View File

@@ -27,7 +27,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
NODE_VERSION="22" NODE_MODULE="yarn@latest,node-gyp" setup_nodejs
if check_for_gh_release "wikijs" "requarks/wiki"; then if check_for_gh_release "wikijs" "requarks/wiki"; then
msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite." msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite."
SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false") SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false")

View File

@@ -1,6 +1,6 @@
{ {
"name": "OpenWrt", "name": "OpenWrt",
"slug": "openwrt", "slug": "openwrt-vm",
"categories": [ "categories": [
4, 4,
2 2
@@ -18,7 +18,7 @@
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "vm/openwrt.sh", "script": "vm/openwrt-vm.sh",
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 256, "ram": 256,

View File

@@ -0,0 +1,40 @@
{
"name": "Scraparr",
"slug": "scraparr",
"categories": [
14
],
"date_created": "2025-09-15",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 7100,
"documentation": "https://github.com/thecfu/scraparr/blob/main/README.md",
"website": "https://github.com/thecfu/scraparr",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/scraparr-dark.svg",
"config_path": "/scraparr/config/config.yaml",
"description": "Scraparr is a Prometheus exporter for the *arr suite (Sonarr, Radarr, Lidarr, etc.). It provides metrics that can be scraped by Prometheus to monitor and visualize the health and performance of your *arr applications.",
"install_methods": [
{
"type": "default",
"script": "ct/scraparr.sh",
"resources": {
"cpu": 2,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Edit config file then restart the scraparr service: `systemctl restart scraparr`",
"type": "info"
}
]
}

View File

@@ -0,0 +1,40 @@
{
"name": "SigNoz",
"slug": "signoz",
"categories": [
9
],
"date_created": "2025-09-15",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://signoz.io/docs/introduction/",
"config_path": "/opt/signoz/conf/systemd.env",
"website": "https://signoz.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/signoz.webp",
"description": "SigNoz is an open-source Datadog or New Relic alternative. Get APM, logs, traces, metrics, exceptions, & alerts in a single tool.",
"install_methods": [
{
"type": "default",
"script": "ct/signoz.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"hdd": 20,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "The first user you register will be the admin user.",
"type": "info"
}
]
}

View File

@@ -1,14 +1,214 @@
[ [
{
"name": "coder/code-server",
"version": "v4.104.0",
"date": "2025-09-15T22:24:49Z"
},
{
"name": "fallenbagel/jellyseerr",
"version": "preview-debug-plex-watchlist",
"date": "2025-09-15T21:39:34Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.3.4",
"date": "2025-09-15T20:48:02Z"
},
{
"name": "rabbitmq/rabbitmq-server",
"version": "v4.1.4",
"date": "2025-09-02T14:26:24Z"
},
{
"name": "Cleanuparr/Cleanuparr",
"version": "v2.3.0",
"date": "2025-09-15T19:21:41Z"
},
{
"name": "Kozea/Radicale",
"version": "v3.5.6",
"date": "2025-09-15T18:43:31Z"
},
{
"name": "apache/tika",
"version": "3.2.0",
"date": "2025-09-15T18:03:08Z"
},
{
"name": "FlareSolverr/FlareSolverr",
"version": "v3.4.1",
"date": "2025-09-15T18:01:24Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.3.1",
"date": "2025-09-15T17:51:55Z"
},
{
"name": "ellite/Wallos",
"version": "v4.3.0",
"date": "2025-09-15T17:34:48Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.0",
"date": "2025-09-13T16:38:21Z"
},
{
"name": "Brandawg93/PeaNUT",
"version": "v5.15.0",
"date": "2025-09-15T17:25:58Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.25.9",
"date": "2025-09-15T17:23:29Z"
},
{
"name": "immich-app/immich",
"version": "v1.142.1",
"date": "2025-09-15T17:08:25Z"
},
{
"name": "jhuckaby/Cronicle",
"version": "v0.9.92",
"date": "2025-09-15T16:32:40Z"
},
{
"name": "FlowiseAI/Flowise",
"version": "flowise@3.0.7",
"date": "2025-09-15T16:08:09Z"
},
{
"name": "Dolibarr/dolibarr",
"version": "22.0.1",
"date": "2025-09-15T16:01:02Z"
},
{
"name": "linuxserver/Heimdall",
"version": "v2.7.6",
"date": "2025-09-15T15:50:44Z"
},
{
"name": "goauthentik/authentik",
"version": "version/2025.8.2",
"date": "2025-09-15T15:48:12Z"
},
{
"name": "mongodb/mongo",
"version": "r8.0.14",
"date": "2025-09-15T15:39:18Z"
},
{
"name": "usememos/memos",
"version": "v0.25.1",
"date": "2025-09-15T14:57:30Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.3",
"date": "2025-09-01T09:47:06Z"
},
{
"name": "AdguardTeam/AdGuardHome",
"version": "v0.107.66",
"date": "2025-09-15T13:39:52Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.109.2",
"date": "2025-09-03T07:50:21Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-core@15.7.12",
"date": "2025-09-15T12:37:01Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.13",
"date": "2025-09-15T11:52:07Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.126.0",
"date": "2025-09-15T11:32:31Z"
},
{
"name": "meilisearch/meilisearch",
"version": "latest",
"date": "2025-09-15T11:12:14Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.2.0",
"date": "2025-09-15T09:29:55Z"
},
{
"name": "authelia/authelia",
"version": "v4.39.10",
"date": "2025-09-15T09:11:13Z"
},
{
"name": "emqx/emqx",
"version": "e5.8.6-hotfix2",
"date": "2025-09-15T08:31:12Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.4.0p12-rc1",
"date": "2025-09-15T07:21:11Z"
},
{
"name": "esphome/esphome",
"version": "2025.8.4",
"date": "2025-09-10T05:03:47Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.23.23",
"date": "2025-09-15T05:57:33Z"
},
{
"name": "mealie-recipes/mealie",
"version": "v3.2.1",
"date": "2025-09-15T03:45:31Z"
},
{
"name": "Prowlarr/Prowlarr",
"version": "v2.0.5.5160",
"date": "2025-08-23T21:23:11Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.13.3",
"date": "2025-09-08T21:45:15Z"
},
{
"name": "9001/copyparty",
"version": "v1.19.9",
"date": "2025-09-15T00:54:27Z"
},
{
"name": "crafty-controller/crafty-4",
"version": "v4.5.4",
"date": "2025-09-15T00:49:53Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-09-15T00:27:09Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{ {
"name": "inventree/InvenTree", "name": "inventree/InvenTree",
"version": "1.0.0", "version": "1.0.0",
"date": "2025-09-14T23:37:56Z" "date": "2025-09-14T23:37:56Z"
}, },
{
"name": "fallenbagel/jellyseerr",
"version": "preview-test-arm-builds",
"date": "2025-09-14T20:12:37Z"
},
{ {
"name": "moghtech/komodo", "name": "moghtech/komodo",
"version": "v1.19.4", "version": "v1.19.4",
@@ -19,21 +219,11 @@
"version": "v25.6.0", "version": "v25.6.0",
"date": "2025-09-14T17:55:21Z" "date": "2025-09-14T17:55:21Z"
}, },
{
"name": "msgbyte/tianji",
"version": "v1.25.8",
"date": "2025-09-14T16:50:23Z"
},
{ {
"name": "Lidarr/Lidarr", "name": "Lidarr/Lidarr",
"version": "v2.13.3.4711", "version": "v2.13.3.4711",
"date": "2025-08-28T20:06:24Z" "date": "2025-08-28T20:06:24Z"
}, },
{
"name": "ellite/Wallos",
"version": "v4.2.0",
"date": "2025-09-14T14:49:18Z"
},
{ {
"name": "karakeep-app/karakeep", "name": "karakeep-app/karakeep",
"version": "cli/v0.27.1", "version": "cli/v0.27.1",
@@ -59,41 +249,16 @@
"version": "3.2.7", "version": "3.2.7",
"date": "2025-09-14T06:35:13Z" "date": "2025-09-14T06:35:13Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.23.20",
"date": "2025-09-14T05:53:28Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-09-14T00:27:06Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{ {
"name": "gtsteffaniak/filebrowser", "name": "gtsteffaniak/filebrowser",
"version": "v0.8.5-beta", "version": "v0.8.5-beta",
"date": "2025-09-13T22:53:30Z" "date": "2025-09-13T22:53:30Z"
}, },
{
"name": "mealie-recipes/mealie",
"version": "v3.2.0",
"date": "2025-09-13T21:27:07Z"
},
{ {
"name": "Ombi-app/Ombi", "name": "Ombi-app/Ombi",
"version": "v4.47.1", "version": "v4.47.1",
"date": "2025-01-05T21:14:23Z" "date": "2025-01-05T21:14:23Z"
}, },
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.0",
"date": "2025-09-13T16:38:21Z"
},
{ {
"name": "home-assistant/core", "name": "home-assistant/core",
"version": "2025.9.3", "version": "2025.9.3",
@@ -124,11 +289,6 @@
"version": "v0.11.11-rc3", "version": "v0.11.11-rc3",
"date": "2025-09-12T23:40:14Z" "date": "2025-09-12T23:40:14Z"
}, },
{
"name": "coder/code-server",
"version": "v4.103.2",
"date": "2025-08-25T23:30:54Z"
},
{ {
"name": "YunoHost/yunohost", "name": "YunoHost/yunohost",
"version": "debian/12.1.23", "version": "debian/12.1.23",
@@ -144,36 +304,11 @@
"version": "v1.37.0", "version": "v1.37.0",
"date": "2025-09-12T19:19:14Z" "date": "2025-09-12T19:19:14Z"
}, },
{
"name": "booklore-app/booklore",
"version": "v1.3.0",
"date": "2025-09-12T19:06:32Z"
},
{
"name": "immich-app/immich",
"version": "v1.142.0",
"date": "2025-09-12T18:52:03Z"
},
{ {
"name": "keycloak/keycloak", "name": "keycloak/keycloak",
"version": "26.3.4", "version": "26.3.4",
"date": "2025-09-12T13:28:51Z" "date": "2025-09-12T13:28:51Z"
}, },
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.125.1",
"date": "2025-09-03T20:17:18Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.3",
"date": "2025-09-01T09:47:06Z"
},
{
"name": "emqx/emqx",
"version": "e5.8.6-hotfix1",
"date": "2025-09-12T13:23:03Z"
},
{ {
"name": "cloudreve/cloudreve", "name": "cloudreve/cloudreve",
"version": "4.8.0", "version": "4.8.0",
@@ -204,11 +339,6 @@
"version": "v1.88.1", "version": "v1.88.1",
"date": "2025-09-11T22:19:51Z" "date": "2025-09-11T22:19:51Z"
}, },
{
"name": "cross-seed/cross-seed",
"version": "v6.13.3",
"date": "2025-09-08T21:45:15Z"
},
{ {
"name": "influxdata/influxdb", "name": "influxdata/influxdb",
"version": "v3.4.2", "version": "v3.4.2",
@@ -224,11 +354,6 @@
"version": "1.16.0", "version": "1.16.0",
"date": "2025-09-11T18:01:57Z" "date": "2025-09-11T18:01:57Z"
}, },
{
"name": "Dolibarr/dolibarr",
"version": "18.0.8",
"date": "2025-09-11T16:27:45Z"
},
{ {
"name": "Threadfin/Threadfin", "name": "Threadfin/Threadfin",
"version": "1.2.37", "version": "1.2.37",
@@ -239,11 +364,6 @@
"version": "v0.306.0-rc.1", "version": "v0.306.0-rc.1",
"date": "2025-09-11T13:37:41Z" "date": "2025-09-11T13:37:41Z"
}, },
{
"name": "apache/tika",
"version": "3.2.3-rc1",
"date": "2025-09-11T14:37:50Z"
},
{ {
"name": "rcourtman/Pulse", "name": "rcourtman/Pulse",
"version": "v4.14.0", "version": "v4.14.0",
@@ -254,11 +374,6 @@
"version": "v1.6.4", "version": "v1.6.4",
"date": "2025-08-18T20:22:07Z" "date": "2025-08-18T20:22:07Z"
}, },
{
"name": "Paymenter/Paymenter",
"version": "v1.3.2",
"date": "2025-09-11T09:54:47Z"
},
{ {
"name": "cockpit-project/cockpit", "name": "cockpit-project/cockpit",
"version": "345.2", "version": "345.2",
@@ -269,41 +384,16 @@
"version": "release-1.24.0rc1", "version": "release-1.24.0rc1",
"date": "2025-09-11T07:05:16Z" "date": "2025-09-11T07:05:16Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v4.1.4",
"date": "2025-09-11T05:20:51Z"
},
{ {
"name": "go-gitea/gitea", "name": "go-gitea/gitea",
"version": "v1.24.6", "version": "v1.24.6",
"date": "2025-09-11T04:20:27Z" "date": "2025-09-11T04:20:27Z"
}, },
{
"name": "esphome/esphome",
"version": "2025.8.4",
"date": "2025-09-10T05:03:47Z"
},
{ {
"name": "TandoorRecipes/recipes", "name": "TandoorRecipes/recipes",
"version": "2.2.0", "version": "2.2.0",
"date": "2025-09-10T18:36:56Z" "date": "2025-09-10T18:36:56Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-mdx@11.9.1",
"date": "2025-09-10T15:26:47Z"
},
{
"name": "linuxserver/Heimdall",
"version": "v2.7.5",
"date": "2025-09-10T15:16:49Z"
},
{
"name": "mongodb/mongo",
"version": "r7.0.25-alpha0",
"date": "2025-09-10T12:13:38Z"
},
{ {
"name": "aceberg/WatchYourLAN", "name": "aceberg/WatchYourLAN",
"version": "2.1.4", "version": "2.1.4",
@@ -319,11 +409,6 @@
"version": "v0.6.28", "version": "v0.6.28",
"date": "2025-09-10T10:53:42Z" "date": "2025-09-10T10:53:42Z"
}, },
{
"name": "authelia/authelia",
"version": "v4.39.9",
"date": "2025-09-09T22:48:24Z"
},
{ {
"name": "jenkinsci/jenkins", "name": "jenkinsci/jenkins",
"version": "jenkins-2.527", "version": "jenkins-2.527",
@@ -384,11 +469,6 @@
"version": "v4.3.1", "version": "v4.3.1",
"date": "2025-09-08T22:26:23Z" "date": "2025-09-08T22:26:23Z"
}, },
{
"name": "n8n-io/n8n",
"version": "n8n@1.109.2",
"date": "2025-09-03T07:50:21Z"
},
{ {
"name": "apache/tomcat", "name": "apache/tomcat",
"version": "10.1.46", "version": "10.1.46",
@@ -414,11 +494,6 @@
"version": "v1.66.1", "version": "v1.66.1",
"date": "2025-09-08T10:49:03Z" "date": "2025-09-08T10:49:03Z"
}, },
{
"name": "meilisearch/meilisearch",
"version": "latest",
"date": "2025-09-08T10:03:11Z"
},
{ {
"name": "webmin/webmin", "name": "webmin/webmin",
"version": "2.501", "version": "2.501",
@@ -429,36 +504,21 @@
"version": "v2.18.4", "version": "v2.18.4",
"date": "2025-09-07T23:57:32Z" "date": "2025-09-07T23:57:32Z"
}, },
{
"name": "9001/copyparty",
"version": "v1.19.8",
"date": "2025-09-07T23:36:42Z"
},
{ {
"name": "minio/minio", "name": "minio/minio",
"version": "RELEASE.2025-09-07T16-13-09Z", "version": "RELEASE.2025-09-07T16-13-09Z",
"date": "2025-09-07T18:53:04Z" "date": "2025-09-07T18:53:04Z"
}, },
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.12",
"date": "2025-09-07T14:16:07Z"
},
{ {
"name": "runtipi/runtipi", "name": "runtipi/runtipi",
"version": "v4.4.0", "version": "nightly",
"date": "2025-09-02T19:26:18Z" "date": "2025-09-07T12:25:06Z"
}, },
{ {
"name": "Radarr/Radarr", "name": "Radarr/Radarr",
"version": "v5.27.5.10198", "version": "v5.27.5.10198",
"date": "2025-09-03T12:08:43Z" "date": "2025-09-03T12:08:43Z"
}, },
{
"name": "Prowlarr/Prowlarr",
"version": "v2.0.5.5160",
"date": "2025-08-23T21:23:11Z"
},
{ {
"name": "pocketbase/pocketbase", "name": "pocketbase/pocketbase",
"version": "v0.30.0", "version": "v0.30.0",
@@ -479,11 +539,6 @@
"version": "v0.12.7", "version": "v0.12.7",
"date": "2025-09-05T18:11:36Z" "date": "2025-09-05T18:11:36Z"
}, },
{
"name": "Brandawg93/PeaNUT",
"version": "v5.14.2",
"date": "2025-09-05T17:24:12Z"
},
{ {
"name": "CrazyWolf13/streamlink-webui", "name": "CrazyWolf13/streamlink-webui",
"version": "0.6", "version": "0.6",
@@ -504,16 +559,6 @@
"version": "v1.0.0-beta17", "version": "v1.0.0-beta17",
"date": "2025-09-04T21:30:14Z" "date": "2025-09-04T21:30:14Z"
}, },
{
"name": "Cleanuparr/Cleanuparr",
"version": "v2.2.3",
"date": "2025-09-04T19:24:39Z"
},
{
"name": "AdguardTeam/AdGuardHome",
"version": "v0.107.65",
"date": "2025-08-20T14:02:28Z"
},
{ {
"name": "NodeBB/NodeBB", "name": "NodeBB/NodeBB",
"version": "v4.5.1", "version": "v4.5.1",
@@ -564,31 +609,16 @@
"version": "5.26.12", "version": "5.26.12",
"date": "2025-09-03T12:03:22Z" "date": "2025-09-03T12:03:22Z"
}, },
{
"name": "Checkmk/checkmk",
"version": "v2.4.0p11",
"date": "2025-09-03T09:58:14Z"
},
{ {
"name": "apache/cassandra", "name": "apache/cassandra",
"version": "cassandra-4.1.10", "version": "cassandra-4.1.10",
"date": "2025-09-03T08:46:02Z" "date": "2025-09-03T08:46:02Z"
}, },
{
"name": "crafty-controller/crafty-4",
"version": "v4.5.3",
"date": "2025-09-02T23:52:26Z"
},
{ {
"name": "netbox-community/netbox", "name": "netbox-community/netbox",
"version": "v4.4.0", "version": "v4.4.0",
"date": "2025-09-02T17:04:25Z" "date": "2025-09-02T17:04:25Z"
}, },
{
"name": "rabbitmq/rabbitmq-server",
"version": "v4.1.4",
"date": "2025-09-02T14:26:24Z"
},
{ {
"name": "postgres/postgres", "name": "postgres/postgres",
"version": "REL_18_RC1", "version": "REL_18_RC1",
@@ -634,11 +664,6 @@
"version": "v1.7.3", "version": "v1.7.3",
"date": "2025-08-31T15:59:43Z" "date": "2025-08-31T15:59:43Z"
}, },
{
"name": "jhuckaby/Cronicle",
"version": "v0.9.91",
"date": "2025-08-30T21:49:57Z"
},
{ {
"name": "silverbulletmd/silverbullet", "name": "silverbulletmd/silverbullet",
"version": "2.0.0", "version": "2.0.0",
@@ -709,11 +734,6 @@
"version": "7.4.2", "version": "7.4.2",
"date": "2025-08-25T12:38:14Z" "date": "2025-08-25T12:38:14Z"
}, },
{
"name": "FlareSolverr/FlareSolverr",
"version": "v3.4.0",
"date": "2025-08-25T03:22:00Z"
},
{ {
"name": "plexguide/Huntarr.io", "name": "plexguide/Huntarr.io",
"version": "8.2.10", "version": "8.2.10",
@@ -744,21 +764,11 @@
"version": "v1.71.0", "version": "v1.71.0",
"date": "2025-08-22T16:41:23Z" "date": "2025-08-22T16:41:23Z"
}, },
{
"name": "goauthentik/authentik",
"version": "version/2025.8.1",
"date": "2025-08-22T14:55:30Z"
},
{ {
"name": "lazy-media/Reactive-Resume", "name": "lazy-media/Reactive-Resume",
"version": "v1.2.4", "version": "v1.2.4",
"date": "2025-08-22T07:40:01Z" "date": "2025-08-22T07:40:01Z"
}, },
{
"name": "Kozea/Radicale",
"version": "v3.5.5",
"date": "2025-08-22T06:57:33Z"
},
{ {
"name": "traccar/traccar", "name": "traccar/traccar",
"version": "v6.9.1", "version": "v6.9.1",
@@ -859,11 +869,6 @@
"version": "v1.14.0", "version": "v1.14.0",
"date": "2025-08-12T13:58:46Z" "date": "2025-08-12T13:58:46Z"
}, },
{
"name": "FlowiseAI/Flowise",
"version": "flowise@3.0.5",
"date": "2025-08-11T13:01:45Z"
},
{ {
"name": "slskd/slskd", "name": "slskd/slskd",
"version": "0.23.2", "version": "0.23.2",
@@ -1004,11 +1009,6 @@
"version": "v0.22.0", "version": "v0.22.0",
"date": "2025-07-17T06:35:43Z" "date": "2025-07-17T06:35:43Z"
}, },
{
"name": "usememos/memos",
"version": "v0.25.0",
"date": "2025-07-16T14:57:02Z"
},
{ {
"name": "sbondCo/Watcharr", "name": "sbondCo/Watcharr",
"version": "v2.1.1", "version": "v2.1.1",

View File

@@ -41,7 +41,7 @@ while true; do
read -rp "${TAB3}Enable IPv6 support? (y/n): " answer read -rp "${TAB3}Enable IPv6 support? (y/n): " answer
case "$answer" in case "$answer" in
[Yy]*) [Yy]*)
var_cf_ip6_provider="auto" var_cf_ip6_provider="cloudflare.trace"
break break
;; ;;
[Nn]*) [Nn]*)

View File

@@ -0,0 +1,56 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: JasonGreenC
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/thecfu/scraparr
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "scrappar" "thecfu/scraparr" "tarball" "latest" "/opt/scraparr"
msg_info "Installing Scraparr"
cd /opt/scraparr
$STD uv venv /opt/scraparr/.venv
$STD /opt/scraparr/.venv/bin/python -m ensurepip --upgrade
$STD /opt/scraparr/.venv/bin/python -m pip install --upgrade pip
$STD /opt/scraparr/.venv/bin/python -m pip install -r /opt/scraparr/src/scraparr/requirements.txt
chmod -R 755 /opt/scraparr
mkdir -p /scraparr/config
mv /opt/scraparr/config.yaml /scraparr/config/config.yaml
chmod -R 755 /scraparr
msg_ok "Installed Scraparr"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/scraparr.service
[Unit]
Description=Scraparr
Wants=network-online.target
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/scraparr/src
ExecStart=/opt/scraparr/.venv/bin/python -m scraparr.scraparr
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now scraparr
msg_ok "Configured Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

262
install/signoz-install.sh Normal file
View File

@@ -0,0 +1,262 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://signoz.io/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
apt-transport-https \
ca-certificates
msg_ok "Installed Dependencies"
JAVA_VERSION="21" setup_java
msg_info "Setting up ClickHouse"
curl -fsSL "https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key" | gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg arch=amd64] https://packages.clickhouse.com/deb stable main" >/etc/apt/sources.list.d/clickhouse.list
$STD apt-get update
export DEBIAN_FRONTEND=noninteractive
$STD apt-get install -y clickhouse-server clickhouse-client
msg_ok "Setup ClickHouse"
msg_info "Setting up Zookeeper"
curl -fsSL "https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz" -o "$HOME/zookeeper.tar.gz"
tar -xzf "$HOME/zookeeper.tar.gz" -C "$HOME"
mkdir -p /opt/zookeeper
mkdir -p /var/lib/zookeeper
mkdir -p /var/log/zookeeper
cp -r ~/apache-zookeeper-3.8.4-bin/* /opt/zookeeper
cat <<EOF >/opt/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
admin.serverPort=3181
EOF
cat <<EOF >/opt/zookeeper/conf/zoo.env
ZOO_LOG_DIR=/var/log/zookeeper
EOF
cat <<EOF >/etc/systemd/system/zookeeper.service
[Unit]
Description=Zookeeper
Documentation=http://zookeeper.apache.org
[Service]
EnvironmentFile=/opt/zookeeper/conf/zoo.env
Type=forking
WorkingDirectory=/opt/zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now zookeeper
msg_ok "Setup Zookeeper"
msg_info "Configuring ClickHouse"
cat <<EOF >/etc/clickhouse-server/config.d/cluster.xml
<clickhouse replace="true">
<distributed_ddl>
<path>/clickhouse/task_queue/ddl</path>
</distributed_ddl>
<remote_servers>
<cluster>
<shard>
<replica>
<host>127.0.0.1</host>
<port>9000</port>
</replica>
</shard>
</cluster>
</remote_servers>
<zookeeper>
<node>
<host>127.0.0.1</host>
<port>2181</port>
</node>
</zookeeper>
<macros>
<shard>01</shard>
<replica>01</replica>
</macros>
</clickhouse>
EOF
systemctl enable -q --now clickhouse-server
msg_ok "Configured ClickHouse"
fetch_and_deploy_gh_release "signoz-schema-migrator" "SigNoz/signoz-otel-collector" "prebuild" "latest" "/opt/signoz-schema-migrator" "signoz-schema-migrator_linux_amd64.tar.gz"
msg_info "Running ClickHouse migrations"
cd /opt/signoz-schema-migrator/bin
$STD ./signoz-schema-migrator sync --dsn="tcp://localhost:9000?password=" --replication=true --up=
$STD ./signoz-schema-migrator async --dsn="tcp://localhost:9000?password=" --replication=true --up=
msg_ok "ClickHouse Migrations Completed"
fetch_and_deploy_gh_release "signoz" "SigNoz/signoz" "prebuild" "latest" "/opt/signoz" "signoz-community_linux_amd64.tar.gz"
msg_info "Setting up SigNoz"
mkdir -p /var/lib/signoz
cat <<EOF >/opt/signoz/conf/systemd.env
SIGNOZ_INSTRUMENTATION_LOGS_LEVEL=info
INVITE_EMAIL_TEMPLATE=/opt/signoz/templates/invitation_email_template.html
SIGNOZ_SQLSTORE_SQLITE_PATH=/var/lib/signoz/signoz.db
SIGNOZ_WEB_ENABLED=true
SIGNOZ_WEB_DIRECTORY=/opt/signoz/web
SIGNOZ_JWT_SECRET=secret
SIGNOZ_ALERTMANAGER_PROVIDER=signoz
SIGNOZ_TELEMETRYSTORE_PROVIDER=clickhouse
SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN=tcp://localhost:9000?password=
DOT_METRICS_ENABLED=true
EOF
cat <<EOF >/etc/systemd/system/signoz.service
[Unit]
Description=SigNoz
Documentation=https://signoz.io/docs
After=clickhouse-server.service
[Service]
Type=simple
KillMode=mixed
Restart=on-failure
WorkingDirectory=/opt/signoz
EnvironmentFile=/opt/signoz/conf/systemd.env
ExecStart=/opt/signoz/bin/signoz server
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now signoz
msg_ok "Setup Signoz"
fetch_and_deploy_gh_release "signoz-otel-collector" "SigNoz/signoz-otel-collector" "prebuild" "latest" "/opt/signoz-otel-collector" "signoz-otel-collector_linux_amd64.tar.gz"
msg_info "Setting up SigNoz OTel Collector"
mkdir -p /var/lib/signoz-otel-collector
cat <<EOF >/opt/signoz-otel-collector/conf/config.yaml
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
max_recv_msg_size_mib: 16
http:
endpoint: 0.0.0.0:4318
jaeger:
protocols:
grpc:
endpoint: 0.0.0.0:14250
thrift_http:
endpoint: 0.0.0.0:14268
httplogreceiver/heroku:
endpoint: 0.0.0.0:8081
source: heroku
httplogreceiver/json:
endpoint: 0.0.0.0:8082
source: json
processors:
batch:
send_batch_size: 50000
timeout: 1s
signozspanmetrics/delta:
metrics_exporter: signozclickhousemetrics
latency_histogram_buckets: [100us, 1ms, 2ms, 6ms, 10ms, 50ms, 100ms, 250ms, 500ms, 1000ms, 1400ms, 2000ms, 5s, 10s, 20s, 40s, 60s]
dimensions_cache_size: 100000
dimensions:
- name: service.namespace
default: default
- name: deployment.environment
default: default
- name: signoz.collector.id
aggregation_temporality: AGGREGATION_TEMPORALITY_DELTA
extensions:
health_check:
endpoint: 0.0.0.0:13133
zpages:
endpoint: localhost:55679
pprof:
endpoint: localhost:1777
exporters:
clickhousetraces:
datasource: tcp://localhost:9000/signoz_traces?password=
use_new_schema: true
signozclickhousemetrics:
dsn: tcp://localhost:9000/signoz_metrics?password=
timeout: 45s
clickhouselogsexporter:
dsn: tcp://localhost:9000/signoz_logs?password=
timeout: 10s
use_new_schema: true
metadataexporter:
dsn: tcp://localhost:9000/signoz_metadata?password=
timeout: 10s
tenant_id: default
cache:
provider: in_memory
service:
telemetry:
logs:
encoding: json
extensions: [health_check, zpages, pprof]
pipelines:
traces:
receivers: [otlp, jaeger]
processors: [signozspanmetrics/delta, batch]
exporters: [clickhousetraces, metadataexporter]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [metadataexporter, signozclickhousemetrics]
logs:
receivers: [otlp, httplogreceiver/heroku, httplogreceiver/json]
processors: [batch]
exporters: [clickhouselogsexporter, metadataexporter]
EOF
cat <<EOF >/opt/signoz-otel-collector/conf/opamp.yaml
server_endpoint: ws://127.0.0.1:4320/v1/opamp
EOF
cat <<EOF >/etc/systemd/system/signoz-otel-collector.service
[Unit]
Description=SigNoz OTel Collector
Documentation=https://signoz.io/docs
After=clickhouse-server.service
[Service]
Type=simple
KillMode=mixed
Restart=on-failure
WorkingDirectory=/opt/signoz-otel-collector
ExecStart=/opt/signoz-otel-collector/bin/signoz-otel-collector --config=/opt/signoz-otel-collector/conf/config.yaml --manager-config=/opt/signoz-otel-collector/conf/opamp.yaml --copy-path=/var/lib/signoz-otel-collector/config.yaml
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now signoz-otel-collector
motd_ssh
customize
msg_info "Cleaning up"
rm -rf ~/zookeeper.tar.gz
rm -rf ~/apache-zookeeper-3.8.4-bin
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -18,7 +18,7 @@ $STD apt-get install -y \
git git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="20" NODE_MODULE="yarn@latest,node-gyp" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest,node-gyp" setup_nodejs
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
fetch_and_deploy_gh_release "wikijs" "requarks/wiki" "prebuild" "latest" "/opt/wikijs" "wiki-js.tar.gz" fetch_and_deploy_gh_release "wikijs" "requarks/wiki" "prebuild" "latest" "/opt/wikijs" "wiki-js.tar.gz"

View File

@@ -205,6 +205,15 @@ function exit-script() {
exit exit
} }
function ensure_pv() {
if ! command -v pv &>/dev/null; then
msg_info "Installing required package: pv"
apt-get update -qq &>/dev/null
apt-get install -y pv &>/dev/null
msg_ok "Installed pv"
fi
}
function default_settings() { function default_settings() {
BRANCH="$stable" BRANCH="$stable"
VMID=$(get_valid_nextid) VMID=$(get_valid_nextid)
@@ -448,8 +457,8 @@ check_root
arch_check arch_check
pve_check pve_check
ssh_check ssh_check
ensure_pv
start_script start_script
post_to_api_vm post_to_api_vm
msg_info "Validating Storage" msg_info "Validating Storage"
@@ -505,10 +514,6 @@ else
msg_ok "Using cached image ${CL}${BL}$(basename "$CACHE_FILE")${CL}" msg_ok "Using cached image ${CL}${BL}$(basename "$CACHE_FILE")${CL}"
fi fi
if ! command -v pv &>/dev/null; then
apt-get update -qq &>/dev/null && apt-get install -y pv &>/dev/null
fi
set -o pipefail set -o pipefail
msg_info "Creating Home Assistant OS VM shell" msg_info "Creating Home Assistant OS VM shell"
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \ qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \

View File

@@ -22,13 +22,13 @@ function header_info {
EOF EOF
} }
header_info header_info
echo -e "Loading..." echo -e "\n Loading..."
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)" RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
METHOD="" METHOD=""
NSAPP="openwrt-vm" NSAPP="openwrt-vm"
var_os="openwrt" var_os="openwrt"
var_version=" " var_version=" "
DISK_SIZE="0.5G" DISK_SIZE="1G"
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//') GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//') GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
@@ -40,10 +40,31 @@ BGN=$(echo "\033[4;92m")
GN=$(echo "\033[1;92m") GN=$(echo "\033[1;92m")
DGN=$(echo "\033[32m") DGN=$(echo "\033[32m")
CL=$(echo "\033[m") CL=$(echo "\033[m")
BOLD=$(echo "\033[1m")
BFR="\\r\\033[K" BFR="\\r\\033[K"
HOLD="-" HOLD=" "
CM="${GN}${CL}" TAB=" "
CROSS="${RD}${CL}"
CM="${TAB}✔️${TAB}${CL}"
CROSS="${TAB}✖️${TAB}${CL}"
INFO="${TAB}💡${TAB}${CL}"
OS="${TAB}🖥️${TAB}${CL}"
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
DISKSIZE="${TAB}💾${TAB}${CL}"
CPUCORE="${TAB}🧠${TAB}${CL}"
RAMSIZE="${TAB}🛠️${TAB}${CL}"
CONTAINERID="${TAB}🆔${TAB}${CL}"
HOSTNAME="${TAB}🏠${TAB}${CL}"
BRIDGE="${TAB}🌉${TAB}${CL}"
GATEWAY="${TAB}🌐${TAB}${CL}"
DEFAULT="${TAB}⚙️${TAB}${CL}"
MACADDRESS="${TAB}🔗${TAB}${CL}"
VLANTAG="${TAB}🏷️${TAB}${CL}"
CREATING="${TAB}🚀${TAB}${CL}"
ADVANCED="${TAB}🧩${TAB}${CL}"
CLOUD="${TAB}☁️${TAB}${CL}"
set -Eeo pipefail set -Eeo pipefail
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
trap cleanup EXIT trap cleanup EXIT
@@ -248,35 +269,30 @@ function exit-script() {
function default_settings() { function default_settings() {
VMID=$(get_valid_nextid) VMID=$(get_valid_nextid)
HN=openwrt HN="openwrt"
CORE_COUNT="1" CORE_COUNT="1"
RAM_SIZE="256" RAM_SIZE="256"
BRG="vmbr0" BRG="vmbr0"
VLAN="" LAN_BRG="vmbr0"
MAC=$GEN_MAC MAC=$GEN_MAC
LAN_MAC=$GEN_MAC_LAN LAN_MAC=$GEN_MAC_LAN
LAN_BRG="vmbr0" VLAN=""
LAN_VLAN=",tag=999"
LAN_IP_ADDR="192.168.1.1" LAN_IP_ADDR="192.168.1.1"
LAN_NETMASK="255.255.255.0" LAN_NETMASK="255.255.255.0"
LAN_VLAN=",tag=999"
MTU="" MTU=""
START_VM="yes" START_VM="yes"
METHOD="default" METHOD="default"
echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}" DISK_SIZE="1G"
echo -e "${DGN}Using Hostname: ${BGN}${HN}${CL}" echo -e "${CONTAINERID}${BOLD}${DGN}VMID: ${BGN}${VMID}${CL}"
echo -e "${DGN}Allocated Cores: ${BGN}${CORE_COUNT}${CL}" echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}${HN}${CL}"
echo -e "${DGN}Allocated RAM: ${BGN}${RAM_SIZE}${CL}" echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}"
echo -e "${DGN}Using WAN Bridge: ${BGN}${BRG}${CL}" echo -e "${RAMSIZE}${BOLD}${DGN}RAM: ${BGN}${RAM_SIZE}${CL}"
echo -e "${DGN}Using WAN VLAN: ${BGN}Default${CL}" echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
echo -e "${DGN}Using WAN MAC Address: ${BGN}${MAC}${CL}" echo -e "${BRIDGE}${BOLD}${DGN}WAN Bridge: ${BGN}${BRG}${CL}"
echo -e "${DGN}Using LAN MAC Address: ${BGN}${LAN_MAC}${CL}" echo -e "${BRIDGE}${BOLD}${DGN}LAN Bridge: ${BGN}${LAN_BRG}${CL}"
echo -e "${DGN}Using LAN Bridge: ${BGN}${LAN_BRG}${CL}" echo -e "${MACADDRESS}${BOLD}${DGN}WAN MAC: ${BGN}${MAC}${CL}"
echo -e "${DGN}Using LAN VLAN: ${BGN}999${CL}" echo -e "${MACADDRESS}${BOLD}${DGN}LAN MAC: ${BGN}${LAN_MAC}${CL}"
echo -e "${DGN}Using LAN IP Address: ${BGN}${LAN_IP_ADDR}${CL}"
echo -e "${DGN}Using LAN NETMASK: ${BGN}${LAN_NETMASK}${CL}"
echo -e "${DGN}Using Interface MTU Size: ${BGN}Default${CL}"
echo -e "${DGN}Start VM when completed: ${BGN}yes${CL}"
echo -e "${BL}Creating a OpenWrt VM using the above default settings${CL}"
} }
function advanced_settings() { function advanced_settings() {
@@ -328,6 +344,17 @@ function advanced_settings() {
exit-script exit-script
fi fi
if DISK_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" \
--inputbox "Set Disk Size in GiB (e.g., 1, 2, 4)" 8 58 "1" \
--title "DISK SIZE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [[ "$DISK_SIZE" =~ ^[0-9]+$ ]]; then
DISK_SIZE="${DISK_SIZE}G"
fi
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
else
exit-script
fi
if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN Bridge" 8 58 vmbr0 --title "WAN BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN Bridge" 8 58 vmbr0 --title "WAN BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $BRG ]; then if [ -z $BRG ]; then
BRG="vmbr0" BRG="vmbr0"
@@ -491,47 +518,39 @@ response=$(curl -fsSL https://openwrt.org)
stableversion=$(echo "$response" | sed -n 's/.*Current stable release - OpenWrt \([0-9.]\+\).*/\1/p' | head -n 1) stableversion=$(echo "$response" | sed -n 's/.*Current stable release - OpenWrt \([0-9.]\+\).*/\1/p' | head -n 1)
URL="https://downloads.openwrt.org/releases/$stableversion/targets/x86/64/openwrt-$stableversion-x86-64-generic-ext4-combined.img.gz" URL="https://downloads.openwrt.org/releases/$stableversion/targets/x86/64/openwrt-$stableversion-x86-64-generic-ext4-combined.img.gz"
sleep 2
msg_ok "${CL}${BL}${URL}${CL}" msg_ok "${CL}${BL}${URL}${CL}"
curl -f#SL -o "$(basename "$URL")" "$URL" curl -f#SL -o "$(basename "$URL")" "$URL"
echo -en "\e[1A\e[0K" FILE=$(basename "$URL")
FILE=$(basename $URL)
msg_ok "Downloaded ${CL}${BL}$FILE${CL}" msg_ok "Downloaded ${CL}${BL}$FILE${CL}"
gunzip -f $FILE >/dev/null 2>/dev/null || true
NEWFILE="${FILE%.*}" gunzip -f "$FILE" >/dev/null 2>&1 || true
FILE="$NEWFILE" FILE="${FILE%.*}"
mv $FILE ${FILE%.*} msg_ok "Extracted OpenWrt Disk Image ${CL}${BL}$FILE${CL}"
qemu-img resize -f raw ${FILE%.*} 512M >/dev/null 2>/dev/null
msg_ok "Extracted & Resized OpenWrt Disk Image ${CL}${BL}$FILE${CL}"
STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
case $STORAGE_TYPE in
nfs | dir)
DISK_EXT=".qcow2"
DISK_REF="$VMID/"
DISK_IMPORT="-format qcow2"
;;
btrfs)
DISK_EXT=".raw"
DISK_REF="$VMID/"
DISK_IMPORT="-format raw"
;;
esac
for i in {0,1}; do
disk="DISK$i"
eval DISK${i}=vm-${VMID}-disk-${i}${DISK_EXT:-}
eval DISK${i}_REF=${STORAGE}:${DISK_REF:-}${!disk}
done
msg_info "Creating OpenWrt VM" msg_info "Creating OpenWrt VM"
qm create $VMID -cores $CORE_COUNT -memory $RAM_SIZE -name $HN \ qm create "$VMID" -cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" \
-onboot 1 -ostype l26 -scsihw virtio-scsi-pci --tablet 0 -onboot 1 -ostype l26 -scsihw virtio-scsi-pci --tablet 0
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null pvesm alloc "$STORAGE" "$VMID" "vm-$VMID-disk-0" 4M >/dev/null
qm importdisk $VMID ${FILE%.*} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
qm set $VMID \ IMPORT_OUT="$(qm importdisk "$VMID" "$FILE" "$STORAGE" --format raw 2>&1 || true)"
-efidisk0 ${DISK0_REF},efitype=4m,size=4M \ DISK_REF="$(printf '%s\n' "$IMPORT_OUT" | sed -n "s/.*successfully imported disk '\([^']\+\)'.*/\1/p")"
-scsi0 ${DISK1_REF},size=512M \
if [[ -z "$DISK_REF" ]]; then
DISK_REF="$(pvesm list "$STORAGE" | awk -v id="$VMID" '$1 ~ ("vm-"id"-disk-") {print $1}' | sort | tail -n1)"
fi
if [[ -z "$DISK_REF" ]]; then
msg_error "Unable to determine imported disk reference."
echo "$IMPORT_OUT"
exit 1
fi
qm set "$VMID" \
-efidisk0 "${STORAGE}:0,efitype=4m,size=4M" \
-scsi0 "${DISK_REF},size=${DISK_SIZE}" \
-boot order=scsi0 \ -boot order=scsi0 \
-tags community-script >/dev/null -tags community-script >/dev/null
msg_ok "Attached disk (${DISK_SIZE})"
DESCRIPTION=$( DESCRIPTION=$(
cat <<EOF cat <<EOF
@@ -570,36 +589,45 @@ msg_info "OpenWrt is being started in order to configure the network interfaces.
qm start $VMID qm start $VMID
sleep 15 sleep 15
msg_ok "Network interfaces are being configured as OpenWrt initiates." msg_ok "Network interfaces are being configured as OpenWrt initiates."
send_line_to_vm "" for _ in {1..30}; do
send_line_to_vm "uci delete network.@device[0]" if qm status "$VMID" | grep -q "stopped"; then break; fi
send_line_to_vm "uci set network.wan=interface" send_line_to_vm ""
send_line_to_vm "uci set network.wan.device=eth1" send_line_to_vm "uci delete network.@device[0]"
send_line_to_vm "uci set network.wan.proto=dhcp" send_line_to_vm "uci set network.wan=interface"
send_line_to_vm "uci delete network.lan" send_line_to_vm "uci set network.wan.device=eth1"
send_line_to_vm "uci set network.lan=interface" send_line_to_vm "uci set network.wan.proto=dhcp"
send_line_to_vm "uci set network.lan.device=eth0" send_line_to_vm "uci delete network.lan"
send_line_to_vm "uci set network.lan.proto=static" send_line_to_vm "uci set network.lan=interface"
send_line_to_vm "uci set network.lan.ipaddr=${LAN_IP_ADDR}" send_line_to_vm "uci set network.lan.device=eth0"
send_line_to_vm "uci set network.lan.netmask=${LAN_NETMASK}" send_line_to_vm "uci set network.lan.proto=static"
send_line_to_vm "uci commit" send_line_to_vm "uci set network.lan.ipaddr=${LAN_IP_ADDR}"
send_line_to_vm "halt" send_line_to_vm "uci set network.lan.netmask=${LAN_NETMASK}"
msg_ok "Network interfaces have been successfully configured." send_line_to_vm "uci commit"
until qm status $VMID | grep -q "stopped"; do send_line_to_vm "halt"
done
msg_ok "Network interfaces configured in OpenWrt"
msg_info "Waiting for OpenWrt to shut down..."
until qm status "$VMID" | grep -q "stopped"; do
sleep 2 sleep 2
done done
msg_info "Bridge interfaces are being added." msg_ok "OpenWrt has shut down"
qm set $VMID \
-net0 virtio,bridge=${LAN_BRG},macaddr=${LAN_MAC}${LAN_VLAN}${MTU} \ msg_info "Adding bridge interfaces on Proxmox side"
-net1 virtio,bridge=${BRG},macaddr=${MAC}${VLAN}${MTU} >/dev/null 2>/dev/null qm set "$VMID" \
msg_ok "Bridge interfaces have been successfully added." -net0 virtio,bridge="${LAN_BRG}",macaddr="${LAN_MAC}${LAN_VLAN}${MTU}" \
if [ "$START_VM" == "yes" ]; then -net1 virtio,bridge="${BRG}",macaddr="${MAC}${VLAN}${MTU}" >/dev/null
msg_ok "Bridge interfaces added"
if [ "$START_VM" = "yes" ]; then
msg_info "Starting OpenWrt VM" msg_info "Starting OpenWrt VM"
qm start $VMID qm start "$VMID"
msg_ok "Started OpenWrt VM" msg_ok "Started OpenWrt VM"
fi fi
VLAN_FINISH="" VLAN_FINISH=""
if [ "$VLAN" == "" ] && [ "$VLAN2" != "999" ]; then if [ -z "$VLAN" ] && [ "$VLAN2" != "999" ]; then
VLAN_FINISH=" Please remember to adjust the VLAN tags to suit your network." VLAN_FINISH=" Please remember to adjust the VLAN tags to suit your network."
fi fi
post_update_to_api "done" "none" post_update_to_api "done" "none"
msg_ok "Completed Successfully!\n${VLAN_FINISH}" msg_ok "Completed Successfully!${VLAN_FINISH:+\n$VLAN_FINISH}"

View File

@@ -201,6 +201,15 @@ function exit-script() {
exit exit
} }
function ensure_pv() {
if ! command -v pv &>/dev/null; then
msg_info "Installing required package: pv"
apt-get update -qq &>/dev/null
apt-get install -y pv &>/dev/null
msg_ok "Installed pv"
fi
}
function default_settings() { function default_settings() {
VMID=$(get_valid_nextid) VMID=$(get_valid_nextid)
MACHINE="q35" MACHINE="q35"
@@ -432,6 +441,7 @@ check_root
arch_check arch_check
pve_check pve_check
ssh_check ssh_check
ensure_pv
start_script start_script
msg_info "Validating Storage" msg_info "Validating Storage"
@@ -472,10 +482,6 @@ else
msg_ok "Using cached Umbrel OS image" msg_ok "Using cached Umbrel OS image"
fi fi
if ! command -v pv &>/dev/null; then
apt-get update -qq &>/dev/null && apt-get install -y pv &>/dev/null
fi
set -o pipefail set -o pipefail
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \ qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
-cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \ -cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \