Compare commits

...

25 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
d71c3efecd Update CHANGELOG.md (#6412)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 00:14:04 +00:00
community-scripts-pr-app[bot]
d366abe8e2 Update versions.json (#6411)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 02:13:41 +02:00
community-scripts-pr-app[bot]
f76bb98d3d Update CHANGELOG.md (#6404)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 19:14:38 +00:00
Matt Visnovsky
4bd360d31b Strip SD and NS prefixes before writing to config file (#6356) 2025-07-30 21:14:16 +02:00
community-scripts-pr-app[bot]
27e095e1dd Update CHANGELOG.md (#6397)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 16:20:02 +00:00
leiweibau
e98f6051e2 PiAlert: bufix dependencies (#6396) 2025-07-30 18:19:42 +02:00
community-scripts-pr-app[bot]
e4d0ac301d Update CHANGELOG.md (#6395)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 15:07:58 +00:00
Slaviša Arežina
907be41752 Fixes (#6378) 2025-07-30 17:07:41 +02:00
Slaviša Arežina
af88ff3dd4 Refactor (#6379) 2025-07-30 17:07:11 +02:00
community-scripts-pr-app[bot]
2c618f53ca Update CHANGELOG.md (#6394)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 15:06:54 +00:00
CanbiZ
16dbcac3a1 n8n: add build-essential as dependency (#6392) 2025-07-30 17:06:26 +02:00
community-scripts-pr-app[bot]
0ba9c9dff3 Update CHANGELOG.md (#6393)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:31:24 +00:00
CanbiZ
23573bfce9 fix apt-cacher heredoc (#6385) 2025-07-30 15:31:00 +02:00
community-scripts-pr-app[bot]
9f1431b263 Update CHANGELOG.md (#6390)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:20:26 +00:00
Slaviša Arežina
53beca39e8 Refactor (#6376) 2025-07-30 15:20:20 +02:00
community-scripts-pr-app[bot]
2701308b45 Update CHANGELOG.md (#6389)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:20:03 +00:00
Slaviša Arežina
f33c292c3e Refactor (#6374) 2025-07-30 15:19:58 +02:00
community-scripts-pr-app[bot]
234b4e334e Update CHANGELOG.md (#6388)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:19:39 +00:00
Slaviša Arežina
eada9f3ae8 Refactor (#6373) 2025-07-30 15:19:33 +02:00
Slaviša Arežina
fb8c44b753 Refactor (#6372) 2025-07-30 15:19:12 +02:00
community-scripts-pr-app[bot]
4679d321a7 Update CHANGELOG.md (#6387)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:17:46 +00:00
Slaviša Arežina
50345c631a Habitica: Fix trusted domains (#6380)
* Fix trusted domains

* Update
2025-07-30 15:17:24 +02:00
community-scripts-pr-app[bot]
2f61a2ffe2 Update CHANGELOG.md (#6384)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:10:21 +00:00
Slaviša Arežina
e9240fb9b8 Fix undeclared var (#6371) 2025-07-30 15:09:57 +02:00
community-scripts-pr-app[bot]
f77e7b626d Update versions.json (#6381)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 14:05:58 +02:00
21 changed files with 340 additions and 300 deletions

View File

@@ -10,8 +10,30 @@
> [!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-07-31
## 2025-07-30 ## 2025-07-30
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Strip SD and NS prefixes before writing to config file [@mattv8](https://github.com/mattv8) ([#6356](https://github.com/community-scripts/ProxmoxVE/pull/6356))
- [core] fix: expand $CACHER_IP in apt-proxy-detect.sh (revert quoted heredoc) [@MickLesk](https://github.com/MickLesk) ([#6385](https://github.com/community-scripts/ProxmoxVE/pull/6385))
- PiAlert: bugfix dependencies [@leiweibau](https://github.com/leiweibau) ([#6396](https://github.com/community-scripts/ProxmoxVE/pull/6396))
- Librespeed-Rust: Fix service name and RELEASE var fetching [@tremor021](https://github.com/tremor021) ([#6378](https://github.com/community-scripts/ProxmoxVE/pull/6378))
- n8n: add build-essential as dependency [@MickLesk](https://github.com/MickLesk) ([#6392](https://github.com/community-scripts/ProxmoxVE/pull/6392))
- Habitica: Fix trusted domains [@tremor021](https://github.com/tremor021) ([#6380](https://github.com/community-scripts/ProxmoxVE/pull/6380))
- Mafl: Fix undeclared var [@tremor021](https://github.com/tremor021) ([#6371](https://github.com/community-scripts/ProxmoxVE/pull/6371))
- #### 🔧 Refactor
- Refactor: Lidarr [@tremor021](https://github.com/tremor021) ([#6379](https://github.com/community-scripts/ProxmoxVE/pull/6379))
- Refactor: Kubo [@tremor021](https://github.com/tremor021) ([#6376](https://github.com/community-scripts/ProxmoxVE/pull/6376))
- Refactor: Komga [@tremor021](https://github.com/tremor021) ([#6374](https://github.com/community-scripts/ProxmoxVE/pull/6374))
- Refactor: Koillection [@tremor021](https://github.com/tremor021) ([#6373](https://github.com/community-scripts/ProxmoxVE/pull/6373))
- Refactor: Karakeep [@tremor021](https://github.com/tremor021) ([#6372](https://github.com/community-scripts/ProxmoxVE/pull/6372))
## 2025-07-29 ## 2025-07-29
### 🆕 New Scripts ### 🆕 New Scripts

View File

@@ -28,17 +28,18 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.koillection ]] || [[ "${RELEASE}" != "$(cat ~/.koillection)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Creating a backup"
cd /opt
mv /opt/koillection/ /opt/koillection-backup mv /opt/koillection/ /opt/koillection-backup
curl -fsSL "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip") msg_ok "Backup created"
$STD unzip "${RELEASE}.zip"
mv "/opt/koillection-${RELEASE}" /opt/koillection fetch_and_deploy_gh_release "koillection" "benjaminjonard/koillection"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt/koillection cd /opt/koillection
cp -r /opt/koillection-backup/.env.local /opt/koillection cp -r /opt/koillection-backup/.env.local /opt/koillection
cp -r /opt/koillection-backup/public/uploads/. /opt/koillection/public/uploads/ cp -r /opt/koillection-backup/public/uploads/. /opt/koillection/public/uploads/
@@ -50,7 +51,6 @@ function update_script() {
$STD yarn install $STD yarn install
$STD yarn build $STD yarn build
chown -R www-data:www-data /opt/koillection/public/uploads chown -R www-data:www-data /opt/koillection/public/uploads
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}" msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
@@ -58,9 +58,9 @@ function update_script() {
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up" msg_info "Cleaning up"
rm -r "/opt/${RELEASE}.zip"
rm -r /opt/koillection-backup rm -r /opt/koillection-backup
msg_ok "Cleaned" msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -27,23 +27,21 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP}"
RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.komga ]] || [[ "${RELEASE}" != "$(cat ~/.komga)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop komga systemctl stop komga
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to ${RELEASE}" rm -f /opt/komga/komga.jar
curl -fsSL "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar" -o $(basename "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar") USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
rm -rf /opt/komga/komga.jar mv /opt/komga/komga-*.jar /opt/komga/komga.jar
mv -f komga-${RELEASE}.jar /opt/komga/komga.jar
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start komga systemctl start komga
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}." msg_ok "No update required. ${APP} is already at ${RELEASE}."

View File

@@ -23,21 +23,24 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /usr/local/kubo ]]; then if [[ ! -f /usr/local/kubo/ipfs ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://github.com/ipfs/kubo/releases/latest | grep "title>Release" | cut -d " " -f 4)
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then RELEASE=$(curl -fsSL https://api.github.com/repos/ipfs/kubo/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Updating $APP LXC" if [[ "${RELEASE}" != "$(cat ~/.kubo)" ]] || [[ ! -f ~/.kubo ]]; then
$STD apt-get update msg_info "Stopping service"
$STD apt-get -y upgrade systemctl stop ipfs
curl -fsSL "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz" -o $(basename "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz") msg_ok "Stopped service"
tar -xzf "kubo_${RELEASE}_linux-amd64.tar.gz" -C /usr/local
systemctl restart ipfs.service fetch_and_deploy_gh_release "kubo" "ipfs/kubo" "prebuild" "latest" "/usr/local/kubo" "kubo*linux-amd64.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
rm "kubo_${RELEASE}_linux-amd64.tar.gz" msg_info "Starting service"
msg_ok "Updated $APP LXC" systemctl start ipfs
msg_ok "Service started"
msg_ok "Updated successfuly"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi

View File

@@ -27,16 +27,17 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/librespeed/speedtest-rust/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
RELEASE=$(curl -fsSL https://api.github.com/repos/librespeed/speedtest-rust/releases/latest | jq -r '.tag_name' | sed 's/^v//')
if [[ "${RELEASE}" != "$(cat ~/.librespeed 2>/dev/null)" ]] || [[ ! -f ~/.librespeed ]]; then if [[ "${RELEASE}" != "$(cat ~/.librespeed 2>/dev/null)" ]] || [[ ! -f ~/.librespeed ]]; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop librespeed-rs systemctl stop librespeed_rs
msg_ok "Services Stopped" msg_ok "Services Stopped"
fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb" fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start librespeed-rs systemctl start librespeed_rs
msg_ok "Started Service" msg_ok "Started Service"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -29,19 +29,24 @@ function update_script() {
exit exit
fi fi
msg_info "Updating $APP LXC" RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
temp_file="$(mktemp)" if [[ "${RELEASE}" != "$(cat ~/.lidarr)" ]] || [[ ! -f ~/.lidarr ]]; then
rm -rf /opt/Lidarr
RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/Lidarr/Lidarr/releases/download/v${RELEASE}/Lidarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
$STD tar -xvzf "$temp_file"
mv Lidarr /opt
chmod 775 /opt/Lidarr
msg_ok "Updated $APP LXC"
msg_info "Cleaning up" msg_info "Stopping service"
rm -rf "$temp_file" systemctl stop lidarr
msg_ok "Cleaned up" msg_ok "Service stopped"
fetch_and_deploy_gh_release "lidarr" "Lidarr/Lidarr" "prebuild" "latest" "/opt/Lidarr" "Lidarr.master*linux-core-x64.tar.gz"
chmod 775 /opt/Lidarr
msg_info "Starting service"
systemctl start lidarr
msg_ok "Service started"
msg_ok "Updated successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit exit
} }

View File

@@ -9,10 +9,10 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8686, "interface_port": 8686,
"documentation": null, "documentation": "https://wiki.servarr.com/en/lidarr",
"website": "https://lidarr.audio/", "website": "https://lidarr.audio/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lidarr.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lidarr.webp",
"config_path": "", "config_path": "/var/lib/lidarr/config.xml",
"description": "Lidarr is a music management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their music collection with ease. Lidarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Radarr, to automate the downloading and organizing of music files. The software provides a web-based interface for managing and organizing music, making it easy to search and find songs, albums, and artists. Lidarr also supports metadata management, including album art, artist information, and lyrics, making it easy for users to keep their music collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing music collections, making it a valuable tool for music lovers who want to keep their collection organized and up-to-date. With Lidarr, users can enjoy their music collection from anywhere, making it a powerful tool for managing and sharing music files.", "description": "Lidarr is a music management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their music collection with ease. Lidarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Radarr, to automate the downloading and organizing of music files. The software provides a web-based interface for managing and organizing music, making it easy to search and find songs, albums, and artists. Lidarr also supports metadata management, including album art, artist information, and lyrics, making it easy for users to keep their music collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing music collections, making it a valuable tool for music lovers who want to keep their collection organized and up-to-date. With Lidarr, users can enjoy their music collection from anywhere, making it a powerful tool for managing and sharing music files.",
"install_methods": [ "install_methods": [
{ {

View File

@@ -1,18 +1,158 @@
[ [
{ {
"name": "OliveTin/OliveTin", "name": "gtsteffaniak/filebrowser",
"version": "2025.7.29", "version": "v0.7.18-beta",
"date": "2025-07-29T22:20:13Z" "date": "2025-07-30T21:26:00Z"
},
{
"name": "benjaminjonard/koillection",
"version": "1.6.17",
"date": "2025-07-30T20:24:17Z"
}, },
{ {
"name": "mongodb/mongo", "name": "mongodb/mongo",
"version": "r8.2.0-rc1", "version": "r8.3.0-alpha0",
"date": "2025-07-29T20:59:27Z" "date": "2025-07-30T20:23:07Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.0",
"date": "2025-07-30T20:19:50Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.16.0-beta6",
"date": "2025-07-23T19:18:14Z"
},
{
"name": "wizarrrr/wizarr",
"version": "2025.7.8",
"date": "2025-07-30T18:17:51Z"
},
{
"name": "oauth2-proxy/oauth2-proxy",
"version": "v7.11.0",
"date": "2025-07-30T18:16:38Z"
},
{
"name": "leiweibau/Pi.Alert",
"version": "v2025-07-30",
"date": "2025-07-30T17:13:40Z"
},
{
"name": "ollama/ollama",
"version": "v0.10.0-rc4",
"date": "2025-07-29T23:41:25Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-arroy-becomes-hannoy-6",
"date": "2025-07-30T15:24:55Z"
},
{
"name": "home-assistant/core",
"version": "2025.7.4",
"date": "2025-07-28T08:15:50Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.0.0",
"date": "2025-07-30T13:50:13Z"
}, },
{ {
"name": "influxdata/influxdb", "name": "influxdata/influxdb",
"version": "v3.3.0", "version": "v3.3.0",
"date": "2025-07-29T20:49:38Z" "date": "2025-07-30T13:27:54Z"
},
{
"name": "element-hq/synapse",
"version": "v1.134.0",
"date": "2025-07-15T13:43:39Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.21",
"date": "2025-07-17T04:46:25Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.2",
"date": "2025-07-08T13:52:33Z"
},
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.11",
"date": "2025-07-22T12:11:38Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.8",
"date": "2025-07-30T11:33:00Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@15.6.7",
"date": "2025-07-30T11:07:48Z"
},
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.16",
"date": "2025-07-28T22:46:46Z"
},
{
"name": "evcc-io/evcc",
"version": "0.206.0",
"date": "2025-07-30T09:39:42Z"
},
{
"name": "dani-garcia/vaultwarden",
"version": "1.34.3",
"date": "2025-07-30T09:10:59Z"
},
{
"name": "BookStackApp/BookStack",
"version": "v25.07",
"date": "2025-07-30T08:52:20Z"
},
{
"name": "zabbix/zabbix",
"version": "7.4.1",
"date": "2025-07-30T08:43:04Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w30-4.13.0",
"date": "2025-07-18T12:05:26Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2208",
"date": "2025-07-30T05:56:51Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.521",
"date": "2025-07-30T03:38:59Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "docmost/docmost",
"version": "v0.22.0",
"date": "2025-07-30T00:09:03Z"
},
{
"name": "OliveTin/OliveTin",
"version": "2025.7.29",
"date": "2025-07-29T22:20:13Z"
}, },
{ {
"name": "netbox-community/netbox", "name": "netbox-community/netbox",
@@ -29,11 +169,6 @@
"version": "4.9.1.2", "version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z" "date": "2025-06-26T22:08:00Z"
}, },
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.2",
"date": "2025-07-08T13:52:33Z"
},
{ {
"name": "msgbyte/tianji", "name": "msgbyte/tianji",
"version": "v1.24.8", "version": "v1.24.8",
@@ -60,50 +195,20 @@
"date": "2025-07-29T15:15:26Z" "date": "2025-07-29T15:15:26Z"
}, },
{ {
"name": "zwave-js/zwave-js-ui", "name": "keycloak/keycloak",
"version": "v10.11.0", "version": "26.3.2",
"date": "2025-07-29T14:06:44Z" "date": "2025-07-24T10:14:27Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.521",
"date": "2025-07-29T13:10:02Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-arroy-becomes-hannoy-4",
"date": "2025-07-29T11:53:01Z"
}, },
{ {
"name": "apache/cassandra", "name": "apache/cassandra",
"version": "5.0.5-tentative", "version": "5.0.5-tentative",
"date": "2025-07-29T10:00:00Z" "date": "2025-07-29T10:00:00Z"
}, },
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2207",
"date": "2025-07-29T05:57:09Z"
},
{ {
"name": "rogerfar/rdt-client", "name": "rogerfar/rdt-client",
"version": "v2.0.115", "version": "v2.0.115",
"date": "2025-07-29T04:38:35Z" "date": "2025-07-29T04:38:35Z"
}, },
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.16",
"date": "2025-07-28T22:46:46Z"
},
{ {
"name": "Luligu/matterbridge", "name": "Luligu/matterbridge",
"version": "3.1.8", "version": "3.1.8",
@@ -124,16 +229,6 @@
"version": "v0.58.0", "version": "v0.58.0",
"date": "2025-07-28T18:59:50Z" "date": "2025-07-28T18:59:50Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.10.0-rc2",
"date": "2025-07-25T21:24:06Z"
},
{
"name": "keycloak/keycloak",
"version": "26.3.2",
"date": "2025-07-24T10:14:27Z"
},
{ {
"name": "AdguardTeam/AdGuardHome", "name": "AdguardTeam/AdGuardHome",
"version": "v0.107.64", "version": "v0.107.64",
@@ -174,11 +269,6 @@
"version": "v2.3.0p35", "version": "v2.3.0p35",
"date": "2025-07-28T08:32:54Z" "date": "2025-07-28T08:32:54Z"
}, },
{
"name": "home-assistant/core",
"version": "2025.7.4",
"date": "2025-07-28T08:15:50Z"
},
{ {
"name": "PrivateBin/PrivateBin", "name": "PrivateBin/PrivateBin",
"version": "2.0.0", "version": "2.0.0",
@@ -189,11 +279,6 @@
"version": "2025.7.4", "version": "2025.7.4",
"date": "2025-07-28T07:33:36Z" "date": "2025-07-28T07:33:36Z"
}, },
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.21",
"date": "2025-07-17T04:46:25Z"
},
{ {
"name": "theonedev/onedev", "name": "theonedev/onedev",
"version": "v12.0.2", "version": "v12.0.2",
@@ -214,16 +299,6 @@
"version": "v1.18.4", "version": "v1.18.4",
"date": "2025-06-25T00:06:56Z" "date": "2025-06-25T00:06:56Z"
}, },
{
"name": "dani-garcia/vaultwarden",
"version": "1.34.2",
"date": "2025-07-27T18:49:05Z"
},
{
"name": "benjaminjonard/koillection",
"version": "1.6.16",
"date": "2025-07-27T14:48:37Z"
},
{ {
"name": "project-zot/zot", "name": "project-zot/zot",
"version": "v2.1.6", "version": "v2.1.6",
@@ -244,11 +319,6 @@
"version": "v0.12.1", "version": "v0.12.1",
"date": "2025-07-25T23:53:12Z" "date": "2025-07-25T23:53:12Z"
}, },
{
"name": "gtsteffaniak/filebrowser",
"version": "v0.7.17-beta",
"date": "2025-07-25T22:03:43Z"
},
{ {
"name": "homarr-labs/homarr", "name": "homarr-labs/homarr",
"version": "v1.30.1", "version": "v1.30.1",
@@ -259,11 +329,6 @@
"version": "v0.15.0-rc4", "version": "v0.15.0-rc4",
"date": "2025-07-25T16:50:34Z" "date": "2025-07-25T16:50:34Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-openapi@9.1.5",
"date": "2025-07-25T16:20:20Z"
},
{ {
"name": "emqx/emqx", "name": "emqx/emqx",
"version": "e6.0.0-M2.202508-alpha.1", "version": "e6.0.0-M2.202508-alpha.1",
@@ -304,11 +369,6 @@
"version": "v2.39.1", "version": "v2.39.1",
"date": "2025-07-24T17:02:01Z" "date": "2025-07-24T17:02:01Z"
}, },
{
"name": "wizarrrr/wizarr",
"version": "2025.7.7",
"date": "2025-07-24T16:44:19Z"
},
{ {
"name": "immich-app/immich", "name": "immich-app/immich",
"version": "v1.136.0", "version": "v1.136.0",
@@ -344,11 +404,6 @@
"version": "v12.1.0", "version": "v12.1.0",
"date": "2025-07-23T19:35:52Z" "date": "2025-07-23T19:35:52Z"
}, },
{
"name": "semaphoreui/semaphore",
"version": "v2.16.0-beta6",
"date": "2025-07-23T19:18:14Z"
},
{ {
"name": "fallenbagel/jellyseerr", "name": "fallenbagel/jellyseerr",
"version": "preview-plex-home-profile", "version": "preview-plex-home-profile",
@@ -369,16 +424,16 @@
"version": "v1.37.0.5076", "version": "v1.37.0.5076",
"date": "2025-06-04T11:04:53Z" "date": "2025-06-04T11:04:53Z"
}, },
{
"name": "zabbix/zabbix",
"version": "7.4.1rc1",
"date": "2025-07-23T11:54:39Z"
},
{ {
"name": "cockpit-project/cockpit", "name": "cockpit-project/cockpit",
"version": "343", "version": "343",
"date": "2025-07-23T11:21:34Z" "date": "2025-07-23T11:21:34Z"
}, },
{
"name": "neo4j/neo4j",
"version": "2025.07.0",
"date": "2025-07-23T10:13:43Z"
},
{ {
"name": "jhuckaby/Cronicle", "name": "jhuckaby/Cronicle",
"version": "v0.9.85", "version": "v0.9.85",
@@ -409,21 +464,11 @@
"version": "v0.7.3", "version": "v0.7.3",
"date": "2025-07-22T14:39:54Z" "date": "2025-07-22T14:39:54Z"
}, },
{
"name": "element-hq/synapse",
"version": "v1.134.0",
"date": "2025-07-15T13:43:39Z"
},
{ {
"name": "goauthentik/authentik", "name": "goauthentik/authentik",
"version": "version/2025.4.4", "version": "version/2025.4.4",
"date": "2025-07-22T13:08:15Z" "date": "2025-07-22T13:08:15Z"
}, },
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.11",
"date": "2025-07-22T12:11:38Z"
},
{ {
"name": "lazy-media/Reactive-Resume", "name": "lazy-media/Reactive-Resume",
"version": "v1.2.2", "version": "v1.2.2",
@@ -514,11 +559,6 @@
"version": "v0.29.0", "version": "v0.29.0",
"date": "2025-07-19T08:54:54Z" "date": "2025-07-19T08:54:54Z"
}, },
{
"name": "wazuh/wazuh",
"version": "coverity-w30-4.13.0",
"date": "2025-07-18T12:05:26Z"
},
{ {
"name": "cross-seed/cross-seed", "name": "cross-seed/cross-seed",
"version": "v6.13.1", "version": "v6.13.1",
@@ -534,11 +574,6 @@
"version": "2.0.7", "version": "2.0.7",
"date": "2025-07-17T15:33:14Z" "date": "2025-07-17T15:33:14Z"
}, },
{
"name": "oauth2-proxy/oauth2-proxy",
"version": "v7.10.0",
"date": "2025-07-17T12:08:40Z"
},
{ {
"name": "icereed/paperless-gpt", "name": "icereed/paperless-gpt",
"version": "v0.22.0", "version": "v0.22.0",
@@ -574,11 +609,6 @@
"version": "6.8.2", "version": "6.8.2",
"date": "2025-07-15T15:14:16Z" "date": "2025-07-15T15:14:16Z"
}, },
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.7",
"date": "2025-07-15T11:29:29Z"
},
{ {
"name": "cloudreve/cloudreve", "name": "cloudreve/cloudreve",
"version": "4.3.0", "version": "4.3.0",
@@ -619,11 +649,6 @@
"version": "1.3.11", "version": "1.3.11",
"date": "2025-07-13T13:33:48Z" "date": "2025-07-13T13:33:48Z"
}, },
{
"name": "evcc-io/evcc",
"version": "0.205.0",
"date": "2025-07-13T12:27:31Z"
},
{ {
"name": "authelia/authelia", "name": "authelia/authelia",
"version": "v4.39.5", "version": "v4.39.5",
@@ -639,21 +664,11 @@
"version": "v10.10.7", "version": "v10.10.7",
"date": "2025-04-05T19:14:59Z" "date": "2025-04-05T19:14:59Z"
}, },
{
"name": "leiweibau/Pi.Alert",
"version": "v2025-07-12",
"date": "2025-07-12T07:53:52Z"
},
{ {
"name": "eclipse-mosquitto/mosquitto", "name": "eclipse-mosquitto/mosquitto",
"version": "v2.0.22", "version": "v2.0.22",
"date": "2025-07-11T21:34:20Z" "date": "2025-07-11T21:34:20Z"
}, },
{
"name": "neo4j/neo4j",
"version": "2025.06.2",
"date": "2025-07-11T18:03:51Z"
},
{ {
"name": "FlowiseAI/Flowise", "name": "FlowiseAI/Flowise",
"version": "flowise@3.0.4", "version": "flowise@3.0.4",
@@ -729,11 +744,6 @@
"version": "v6.8.1", "version": "v6.8.1",
"date": "2025-07-07T14:40:11Z" "date": "2025-07-07T14:40:11Z"
}, },
{
"name": "BookStackApp/BookStack",
"version": "v25.05.2",
"date": "2025-07-07T14:08:25Z"
},
{ {
"name": "slskd/slskd", "name": "slskd/slskd",
"version": "0.23.1", "version": "0.23.1",
@@ -839,11 +849,6 @@
"version": "v1.3.8", "version": "v1.3.8",
"date": "2025-06-29T07:41:53Z" "date": "2025-06-29T07:41:53Z"
}, },
{
"name": "gristlabs/grist-core",
"version": "v1.6.1",
"date": "2025-06-25T21:19:25Z"
},
{ {
"name": "arunavo4/gitea-mirror", "name": "arunavo4/gitea-mirror",
"version": "v2.18.0", "version": "v2.18.0",
@@ -884,11 +889,6 @@
"version": "v3.5.5", "version": "v3.5.5",
"date": "2025-06-19T05:43:47Z" "date": "2025-06-19T05:43:47Z"
}, },
{
"name": "docmost/docmost",
"version": "v0.21.0",
"date": "2025-06-18T21:43:27Z"
},
{ {
"name": "pterodactyl/panel", "name": "pterodactyl/panel",
"version": "v1.11.11", "version": "v1.11.11",

View File

@@ -26,10 +26,12 @@ NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha,npm@10" setup_nodejs
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica" fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Setup ${APPLICATION}" msg_info "Setup ${APPLICATION}"
IPADDRESS=$(hostname -I | awk '{print $1}')
cd /opt/habitica cd /opt/habitica
$STD npm i $STD npm i
$STD npm run postinstall $STD npm run postinstall
cp config.json.example config.json cp config.json.example config.json
sed -i "s/\"TRUSTED_DOMAINS\": \"/&http:\/\/$IPADDRESS:3000,/" config.json
$STD npm run client:build $STD npm run client:build
$STD gulp build:prod $STD gulp build:prod

View File

@@ -15,28 +15,20 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y \
g++ \
build-essential \ build-essential \
git \ git \
ca-certificates \ ca-certificates \
chromium/stable \ chromium/stable \
chromium-common/stable \ chromium-common/stable \
graphicsmagick \ graphicsmagick \
ghostscript \ ghostscript
jq
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Additional Tools" fetch_and_deploy_gh_release "monolith" "Y2Z/monolith" "singlefile" "latest" "/usr/bin" "monolith-gnu-linux-x86_64"
curl -fsSL "https://github.com/Y2Z/monolith/releases/latest/download/monolith-gnu-linux-x86_64" -o "/usr/bin/monolith" fetch_and_deploy_gh_release "yt-dlp" "yt-dlp/yt-dlp-nightly-builds" "singlefile" "latest" "/usr/bin" "yt-dlp_linux"
chmod +x /usr/bin/monolith fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
curl -fsSL "https://github.com/yt-dlp/yt-dlp-nightly-builds/releases/latest/download/yt-dlp_linux" -o "/usr/bin/yt-dlp"
chmod +x /usr/bin/yt-dlp
msg_ok "Installed Additional Tools"
msg_info "Installing Meilisearch" msg_info "Configuring Meilisearch"
cd /tmp
curl -fsSL "https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb" -o "meilisearch.deb"
$STD dpkg -i meilisearch.deb
curl -fsSL "https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml" -o "/etc/meilisearch.toml" curl -fsSL "https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml" -o "/etc/meilisearch.toml"
MASTER_KEY=$(openssl rand -base64 12) MASTER_KEY=$(openssl rand -base64 12)
sed -i \ sed -i \
@@ -47,7 +39,7 @@ sed -i \
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \ -e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
-e 's|^# no_analytics = true|no_analytics = true|' \ -e 's|^# no_analytics = true|no_analytics = true|' \
/etc/meilisearch.toml /etc/meilisearch.toml
msg_ok "Installed Meilisearch" msg_ok "Configured Meilisearch"
fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep" fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
cd /opt/karakeep cd /opt/karakeep
@@ -185,7 +177,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /tmp/meilisearch.deb
$STD apt-get autoremove -y $STD apt-get autoremove -y
$STD apt-get autoclean -y $STD apt-get autoclean -y
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,29 +13,10 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
apache2 \
lsb-release
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="apcu,ctype,dom,fileinfo,iconv,pgsql" setup_php
msg_info "Setup PHP8.4 Repository" setup_composer
$STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
$STD apt-get update
msg_ok "Setup PHP8.4 Repository"
msg_info "Setup PHP"
$STD apt-get install -y \
php8.4 \
php8.4-{apcu,ctype,curl,dom,fileinfo,gd,iconv,intl,mbstring,pgsql} \
libapache2-mod-php8.4 \
composer
msg_info "Setup PHP"
msg_info "Setting up PostgreSQL" msg_info "Setting up PostgreSQL"
DB_NAME=koillection DB_NAME=koillection
@@ -51,12 +32,9 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
} >>~/koillection.creds } >>~/koillection.creds
msg_ok "Set up PostgreSQL" msg_ok "Set up PostgreSQL"
msg_info "Installing Koillection" fetch_and_deploy_gh_release "koillection" "benjaminjonard/koillection"
RELEASE=$(curl -fsSL https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
cd /opt msg_info "Configuring Koillection"
curl -fsSL "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip" -o "/opt/${RELEASE}.zip"
$STD unzip "${RELEASE}.zip"
mv "/opt/koillection-${RELEASE}" /opt/koillection
cd /opt/koillection cd /opt/koillection
cp /opt/koillection/.env /opt/koillection/.env.local cp /opt/koillection/.env /opt/koillection/.env.local
APP_SECRET=$(openssl rand -base64 32) APP_SECRET=$(openssl rand -base64 32)
@@ -76,7 +54,7 @@ $STD yarn install
$STD yarn build $STD yarn build
chown -R www-data:www-data /opt/koillection/public/uploads chown -R www-data:www-data /opt/koillection/public/uploads
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Koillection" msg_ok "Configured Koillection"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/koillection.conf cat <<EOF >/etc/apache2/sites-available/koillection.conf
@@ -107,7 +85,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/${RELEASE}.zip"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,17 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" JAVA_VERSION="21" setup_java
$STD apt-get install -y openjdk-17-jre USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
msg_ok "Installed Dependencies" mv /opt/komga/komga-*.jar /opt/komga/komga.jar
msg_info "Installing Komga"
RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar" -o "komga-${RELEASE}.jar"
mkdir -p /opt/komga
mv -f komga-${RELEASE}.jar /opt/komga/komga.jar
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Komga"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/komga.service cat <<EOF >/etc/systemd/system/komga.service
@@ -42,7 +34,7 @@ Restart=on-failure
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable --now -q komga systemctl enable -q --now komga
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -14,10 +14,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing IPFS" fetch_and_deploy_gh_release "kubo" "ipfs/kubo" "prebuild" "latest" "/usr/local/kubo" "kubo*linux-amd64.tar.gz"
RELEASE=$(curl -fsSL https://github.com/ipfs/kubo/releases/latest | grep "title>Release" | cut -d " " -f 4)
$STD curl -fsSL "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz" -o "kubo_${RELEASE}_linux-amd64.tar.gz" msg_info "Configuring IPFS"
tar -xzf "kubo_${RELEASE}_linux-amd64.tar.gz" -C /usr/local
$STD ln -s /usr/local/kubo/ipfs /usr/local/bin/ipfs $STD ln -s /usr/local/kubo/ipfs /usr/local/bin/ipfs
$STD ipfs init $STD ipfs init
ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001 ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001
@@ -25,9 +24,7 @@ ipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080
LXCIP=$(hostname -I | awk '{print $1}') LXCIP=$(hostname -I | awk '{print $1}')
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"http://${LXCIP}:5001\", \"http://localhost:3000\", \"http://127.0.0.1:5001\", \"https://webui.ipfs.io\", \"http://0.0.0.0:5001\"]" ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"http://${LXCIP}:5001\", \"http://localhost:3000\", \"http://127.0.0.1:5001\", \"https://webui.ipfs.io\", \"http://0.0.0.0:5001\"]"
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]'
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Configured IPFS"
$STD rm "kubo_${RELEASE}_linux-amd64.tar.gz"
msg_ok "Installed IPFS"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/ipfs.service cat <<EOF >/etc/systemd/system/ipfs.service
@@ -43,7 +40,7 @@ Environment=HOME=/root
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable --now -q ipfs.service systemctl enable -q --now ipfs
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -16,7 +16,7 @@ update_os
fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb" fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb"
msg_info "Enabling Service" msg_info "Enabling Service"
systemctl enable -q --now speedtest_rs.service systemctl enable -q --now speedtest_rs
msg_ok "Enabled Service" msg_ok "Enabled Service"
motd_ssh motd_ssh

View File

@@ -20,22 +20,20 @@ $STD apt-get install -y \
mediainfo mediainfo
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Lidarr" fetch_and_deploy_gh_release "lidarr" "Lidarr/Lidarr" "prebuild" "latest" "/opt/Lidarr" "Lidarr.master*linux-core-x64.tar.gz"
temp_file="$(mktemp)"
msg_info "Configuring Lidarr"
mkdir -p /var/lib/lidarr/ mkdir -p /var/lib/lidarr/
chmod 775 /var/lib/lidarr/ chmod 775 /var/lib/lidarr/
RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/Lidarr/Lidarr/releases/download/v${RELEASE}/Lidarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
$STD tar -xvzf "$temp_file"
mv Lidarr /opt
chmod 775 /opt/Lidarr chmod 775 /opt/Lidarr
msg_ok "Installed Lidarr" msg_ok "Configured Lidarr"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/lidarr.service cat <<EOF >/etc/systemd/system/lidarr.service
[Unit] [Unit]
Description=Lidarr Daemon Description=Lidarr Daemon
After=syslog.target network.target After=syslog.target network.target
[Service] [Service]
UMask=0002 UMask=0002
Type=simple Type=simple
@@ -43,6 +41,7 @@ ExecStart=/opt/Lidarr/Lidarr -nobrowser -data=/var/lib/lidarr/
TimeoutStopSec=20 TimeoutStopSec=20
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
@@ -53,7 +52,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "$temp_file"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -22,14 +22,14 @@ msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
fetch_and_deploy_gh_release "mafl" "hywax/mafl" fetch_and_deploy_gh_release "mafl" "hywax/mafl"
msg_info "Installing Mafl v${RELEASE}" msg_info "Installing Mafl"
mkdir -p /opt/mafl/data mkdir -p /opt/mafl/data
curl -fsSL "https://raw.githubusercontent.com/hywax/mafl/main/.example/config.yml" -o "/opt/mafl/data/config.yml" curl -fsSL "https://raw.githubusercontent.com/hywax/mafl/main/.example/config.yml" -o "/opt/mafl/data/config.yml"
cd /opt/mafl cd /opt/mafl
export NUXT_TELEMETRY_DISABLED=true export NUXT_TELEMETRY_DISABLED=true
$STD yarn install $STD yarn install
$STD yarn build $STD yarn build
msg_ok "Installed Mafl v${RELEASE}" msg_ok "Installed Mafl"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/mafl.service cat <<EOF >/etc/systemd/system/mafl.service

View File

@@ -14,7 +14,9 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y ca-certificates $STD apt-get install -y \
ca-certificates \
build-essential
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs

View File

@@ -52,7 +52,6 @@ $STD apt-get -y install \
python3-tz \ python3-tz \
python3-tzlocal \ python3-tzlocal \
python3-aiohttp \ python3-aiohttp \
python3-paho-mqtt \
python3-cryptography python3-cryptography
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
$STD pip3 install mac-vendor-lookup $STD pip3 install mac-vendor-lookup
@@ -61,6 +60,7 @@ $STD pip3 install cryptography
$STD pip3 install pyunifi $STD pip3 install pyunifi
$STD pip3 install openwrt-luci-rpc $STD pip3 install openwrt-luci-rpc
$STD pip3 install asusrouter $STD pip3 install asusrouter
$STD pip3 install paho-mqtt
msg_ok "Installed Python Dependencies" msg_ok "Installed Python Dependencies"
msg_info "Installing Pi.Alert" msg_info "Installing Pi.Alert"

View File

@@ -250,6 +250,17 @@ write_config() {
if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "Write configfile" --yesno "Do you want to write the selections to a config file?" 10 60; then if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "Write configfile" --yesno "Do you want to write the selections to a config file?" 10 60; then
FILEPATH="/opt/community-scripts/${NSAPP}.conf" FILEPATH="/opt/community-scripts/${NSAPP}.conf"
[[ "$GATE" =~ ",gw=" ]] && local GATE="${GATE##,gw=}" [[ "$GATE" =~ ",gw=" ]] && local GATE="${GATE##,gw=}"
# Strip prefixes from parameters for config file storage
local SD_VALUE="${SD}"
local NS_VALUE="${NS}"
local MAC_VALUE="${MAC}"
local VLAN_VALUE="${VLAN}"
[[ "$SD" =~ ^-searchdomain= ]] && SD_VALUE="${SD#-searchdomain=}"
[[ "$NS" =~ ^-nameserver= ]] && NS_VALUE="${NS#-nameserver=}"
[[ "$MAC" =~ ^,hwaddr= ]] && MAC_VALUE="${MAC#,hwaddr=}"
[[ "$VLAN" =~ ^,tag= ]] && VLAN_VALUE="${VLAN#,tag=}"
if [[ ! -f $FILEPATH ]]; then if [[ ! -f $FILEPATH ]]; then
cat <<EOF >"$FILEPATH" cat <<EOF >"$FILEPATH"
# ${NSAPP} Configuration File # ${NSAPP} Configuration File
@@ -272,10 +283,10 @@ IPV6_METHOD="${IPV6_METHOD:-none}"
GATE="${GATE:-none}" GATE="${GATE:-none}"
APT_CACHER_IP="${APT_CACHER_IP:-none}" APT_CACHER_IP="${APT_CACHER_IP:-none}"
MTU="${MTU:-1500}" MTU="${MTU:-1500}"
SD="${SD:-none}" SD="${SD_VALUE:-none}"
NS="${NS:-none}" NS="${NS_VALUE:-none}"
MAC="${MAC:-none}" MAC="${MAC_VALUE:-none}"
VLAN="${VLAN:-none}" VLAN="${VLAN_VALUE:-none}"
SSH="${SSH}" SSH="${SSH}"
SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}" SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}"
TAGS="${TAGS:-none}" TAGS="${TAGS:-none}"
@@ -310,10 +321,10 @@ IPV6_METHOD="${IPV6_METHOD:-none}"
GATE="${GATE:-none}" GATE="${GATE:-none}"
APT_CACHER_IP="${APT_CACHER_IP:-none}" APT_CACHER_IP="${APT_CACHER_IP:-none}"
MTU="${MTU:-1500}" MTU="${MTU:-1500}"
SD="${SD:-none}" SD="${SD_VALUE:-none}"
NS="${NS:-none}" NS="${NS_VALUE:-none}"
MAC="${MAC:-none}" MAC="${MAC_VALUE:-none}"
VLAN="${VLAN:-none}" VLAN="${VLAN_VALUE:-none}"
SSH="${SSH}" SSH="${SSH}"
SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}" SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}"
TAGS="${TAGS:-none}" TAGS="${TAGS:-none}"
@@ -807,7 +818,36 @@ advanced_settings() {
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create ${APP} LXC?" 10 58); then if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create ${APP} LXC?" 10 58); then
echo -e "${CREATING}${BOLD}${RD}Creating a ${APP} LXC using the above advanced settings${CL}" echo -e "${CREATING}${BOLD}${RD}Creating a ${APP} LXC using the above advanced settings${CL}"
# Strip prefixes from DNS parameters for config file storage
local SD_VALUE="$SD"
local NS_VALUE="$NS"
local MAC_VALUE="$MAC"
local VLAN_VALUE="$VLAN"
[[ "$SD" =~ ^-searchdomain= ]] && SD_VALUE="${SD#-searchdomain=}"
[[ "$NS" =~ ^-nameserver= ]] && NS_VALUE="${NS#-nameserver=}"
[[ "$MAC" =~ ^,hwaddr= ]] && MAC_VALUE="${MAC#,hwaddr=}"
[[ "$VLAN" =~ ^,tag= ]] && VLAN_VALUE="${VLAN#,tag=}"
# Temporarily store original values
local SD_ORIG="$SD"
local NS_ORIG="$NS"
local MAC_ORIG="$MAC"
local VLAN_ORIG="$VLAN"
# Set clean values for config file writing
SD="$SD_VALUE"
NS="$NS_VALUE"
MAC="$MAC_VALUE"
VLAN="$VLAN_VALUE"
write_config write_config
# Restore original formatted values for container creation
SD="$SD_ORIG"
NS="$NS_ORIG"
MAC="$MAC_ORIG"
VLAN="$VLAN_ORIG"
else else
clear clear
header_info header_info

View File

@@ -469,8 +469,11 @@ config_file() {
SD="" SD=""
echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}Host${CL}" echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}Host${CL}"
else else
echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}$SD${CL}" # Strip prefix if present for config file storage
SD="-searchdomain=$SD" local SD_VALUE="$SD"
[[ "$SD" =~ ^-searchdomain= ]] && SD_VALUE="${SD#-searchdomain=}"
echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}$SD_VALUE${CL}"
SD="-searchdomain=$SD_VALUE"
fi fi
else else
if SD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a DNS Search Domain (leave blank for HOST)" 8 58 --title "DNS Search Domain" 3>&1 1>&2 2>&3); then if SD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a DNS Search Domain (leave blank for HOST)" 8 58 --title "DNS Search Domain" 3>&1 1>&2 2>&3); then
@@ -492,11 +495,14 @@ config_file() {
NS="" NS=""
echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}Host${CL}" echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}Host${CL}"
else else
if [[ "$NS" =~ $ip_regex ]]; then # Strip prefix if present for config file storage
echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}$NS${CL}" local NS_VALUE="$NS"
NS="-nameserver=$NS" [[ "$NS" =~ ^-nameserver= ]] && NS_VALUE="${NS#-nameserver=}"
if [[ "$NS_VALUE" =~ $ip_regex ]]; then
echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}$NS_VALUE${CL}"
NS="-nameserver=$NS_VALUE"
else else
msg_error "Invalid IP Address format for DNS Server. Needs to be 0.0.0.0, was ${NS}" msg_error "Invalid IP Address format for DNS Server. Needs to be 0.0.0.0, was ${NS_VALUE}"
exit exit
fi fi
fi fi
@@ -519,11 +525,14 @@ config_file() {
MAC="" MAC=""
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}Host${CL}" echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}Host${CL}"
else else
if [[ "$MAC" =~ ^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$ ]]; then # Strip prefix if present for config file storage
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC${CL}" local MAC_VALUE="$MAC"
MAC=",hwaddr=$MAC" [[ "$MAC" =~ ^,hwaddr= ]] && MAC_VALUE="${MAC#,hwaddr=}"
if [[ "$MAC_VALUE" =~ ^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$ ]]; then
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC_VALUE${CL}"
MAC=",hwaddr=$MAC_VALUE"
else else
msg_error "MAC Address must be in the format xx:xx:xx:xx:xx:xx, was ${MAC}" msg_error "MAC Address must be in the format xx:xx:xx:xx:xx:xx, was ${MAC_VALUE}"
exit exit
fi fi
fi fi
@@ -546,11 +555,14 @@ config_file() {
VLAN="" VLAN=""
echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}Host${CL}" echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}Host${CL}"
else else
if [[ "$VLAN" =~ ^-?[0-9]+$ ]]; then # Strip prefix if present for config file storage
echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}$VLAN${CL}" local VLAN_VALUE="$VLAN"
VLAN=",tag=$VLAN" [[ "$VLAN" =~ ^,tag= ]] && VLAN_VALUE="${VLAN#,tag=}"
if [[ "$VLAN_VALUE" =~ ^-?[0-9]+$ ]]; then
echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}$VLAN_VALUE${CL}"
VLAN=",tag=$VLAN_VALUE"
else else
msg_error "VLAN must be an integer, was ${VLAN}" msg_error "VLAN must be an integer, was ${VLAN_VALUE}"
exit exit
fi fi
fi fi

View File

@@ -131,8 +131,8 @@ network_check() {
update_os() { update_os() {
msg_info "Updating Container OS" msg_info "Updating Container OS"
if [[ "$CACHER" == "yes" ]]; then if [[ "$CACHER" == "yes" ]]; then
echo "Acquire::http::Proxy-Auto-Detect \"/usr/local/bin/apt-proxy-detect.sh\";" >/etc/apt/apt.conf.d/00aptproxy echo 'Acquire::http::Proxy-Auto-Detect "/usr/local/bin/apt-proxy-detect.sh";' >/etc/apt/apt.conf.d/00aptproxy
cat <<'EOF' >/usr/local/bin/apt-proxy-detect.sh cat <<EOF >/usr/local/bin/apt-proxy-detect.sh
#!/bin/bash #!/bin/bash
if nc -w1 -z "${CACHER_IP}" 3142; then if nc -w1 -z "${CACHER_IP}" 3142; then
echo -n "http://${CACHER_IP}:3142" echo -n "http://${CACHER_IP}:3142"