mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-07-04 13:07:38 +00:00
Compare commits
100 Commits
2025-06-27
...
komodo
Author | SHA1 | Date | |
---|---|---|---|
88011ab25f | |||
cb24880115 | |||
0e87c4fe34 | |||
438eddbde1 | |||
729895e2ed | |||
3371529cce | |||
1ac1aadbe3 | |||
10127650fa | |||
3533c896a3 | |||
ee6f07b31a | |||
5ac4818030 | |||
c293b058c0 | |||
cadeee4deb | |||
f401c7cc4c | |||
a3ea46701c | |||
009178a3dc | |||
38e8b70873 | |||
31cda26096 | |||
e16aac7a83 | |||
2a52baf57e | |||
28d3297d66 | |||
4784d76d49 | |||
8ef7efaf79 | |||
736802af76 | |||
8fee28b690 | |||
c8682d5f81 | |||
ef571559d6 | |||
16c48fa41a | |||
710c1fd58c | |||
21f7276c4f | |||
bf05f4be95 | |||
be01124d1a | |||
8a91b87f4c | |||
020a4b3597 | |||
f93c568758 | |||
d9d4444f08 | |||
400a82e2cc | |||
35a0d14110 | |||
a78dd20a2e | |||
4af08a5c45 | |||
2959d37b65 | |||
3275136db7 | |||
c4c974a01d | |||
4fe05d09a2 | |||
7b5dd6cd69 | |||
28c779ef86 | |||
8c1dac0583 | |||
2db514f666 | |||
0232dbd89d | |||
70f43cb904 | |||
05e06d0782 | |||
89c39783b4 | |||
3f3278b022 | |||
bda9f482c1 | |||
7292dbb8c6 | |||
2bdf85db39 | |||
546bff56fa | |||
1896f2db0f | |||
e47828f0a4 | |||
c511f7d9e5 | |||
a106e7e358 | |||
254f2b894d | |||
733251a0a2 | |||
bcfa05db47 | |||
5313f00edb | |||
f83bfd1598 | |||
fd27524479 | |||
8155fea034 | |||
c853054067 | |||
a80ec39740 | |||
bb33d00829 | |||
be64a6700d | |||
247bc549e8 | |||
b26c5c9354 | |||
5e5c79ef29 | |||
4db81b8c41 | |||
0b97f26b13 | |||
f2a21617f7 | |||
ed618b7144 | |||
1ec71332bf | |||
5696dffd02 | |||
1e93f131d2 | |||
022f88c30a | |||
b661f3cbcc | |||
9b97e4974a | |||
e2b36b540f | |||
983a09c5db | |||
f605085021 | |||
4a3b15ae0e | |||
0fd5f366b3 | |||
dd5b3cd1b9 | |||
2b55f82aab | |||
87c6f87faf | |||
caad96f25a | |||
8e7978713f | |||
1e05867b4c | |||
43dfe6dc33 | |||
179812e55f | |||
d09cf45a3c | |||
e609868619 |
2
.github/workflows/push-to-gitea.yaml
generated
vendored
2
.github/workflows/push-to-gitea.yaml
generated
vendored
@ -26,7 +26,7 @@ jobs:
|
||||
if [ -n "$files_with_github_urls" ]; then
|
||||
echo "$files_with_github_urls" | while read file; do
|
||||
if [ -f "$file" ]; then
|
||||
sed -i 's|https://raw\.githubusercontent\.com/community-scripts/ProxmoxVE/|https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/|g' "$file"
|
||||
sed -i 's|https://raw\.githubusercontent\.com/community-scripts/ProxmoxVE/|https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/|g' "$file"
|
||||
fi
|
||||
done
|
||||
else
|
||||
|
136
CHANGELOG.md
136
CHANGELOG.md
@ -14,8 +14,144 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
||||
|
||||
|
||||
## 2025-07-04
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Cloudflare-DDNS: fix unvisible read command at install [@MickLesk](https://github.com/MickLesk) ([#5682](https://github.com/community-scripts/ProxmoxVE/pull/5682))
|
||||
|
||||
### 💥 Breaking Changes
|
||||
|
||||
- Update Iptag [@DesertGamer](https://github.com/DesertGamer) ([#5677](https://github.com/community-scripts/ProxmoxVE/pull/5677))
|
||||
|
||||
## 2025-07-03
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Zipline: Fix typo in uploads directory path [@tremor021](https://github.com/tremor021) ([#5662](https://github.com/community-scripts/ProxmoxVE/pull/5662))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Improve asset matching in fetch_and_deploy_gh_release for prebuild and singlefile modes [@MickLesk](https://github.com/MickLesk) ([#5669](https://github.com/community-scripts/ProxmoxVE/pull/5669))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Trilium [@MickLesk](https://github.com/MickLesk) ([#5665](https://github.com/community-scripts/ProxmoxVE/pull/5665))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Bump Icons to selfhst repo | switch svg to webp [@MickLesk](https://github.com/MickLesk) ([#5659](https://github.com/community-scripts/ProxmoxVE/pull/5659))
|
||||
|
||||
## 2025-07-02
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Changedetection: Base64 encode the launch options [@tremor021](https://github.com/tremor021) ([#5640](https://github.com/community-scripts/ProxmoxVE/pull/5640))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor & Bump to Node24: Zigbee2MQTT [@MickLesk](https://github.com/MickLesk) ([#5638](https://github.com/community-scripts/ProxmoxVE/pull/5638))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Remove: Pingvin-Share [@MickLesk](https://github.com/MickLesk) ([#5635](https://github.com/community-scripts/ProxmoxVE/pull/5635))
|
||||
- Remove: Readarr [@MickLesk](https://github.com/MickLesk) ([#5636](https://github.com/community-scripts/ProxmoxVE/pull/5636))
|
||||
|
||||
## 2025-07-01
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Librespeed Rust ([#5614](https://github.com/community-scripts/ProxmoxVE/pull/5614))
|
||||
- ITSM-NG ([#5615](https://github.com/community-scripts/ProxmoxVE/pull/5615))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Open WebUI: Fix Ollama update procedure [@tremor021](https://github.com/tremor021) ([#5601](https://github.com/community-scripts/ProxmoxVE/pull/5601))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [tools]: increase fetch_and_deploy with dns pre check [@MickLesk](https://github.com/MickLesk) ([#5608](https://github.com/community-scripts/ProxmoxVE/pull/5608))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Jellyfin GPU Passthrough NVIDIA Note [@austinpilz](https://github.com/austinpilz) ([#5625](https://github.com/community-scripts/ProxmoxVE/pull/5625))
|
||||
|
||||
## 2025-06-30
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Alpine Syncthing [@MickLesk](https://github.com/MickLesk) ([#5586](https://github.com/community-scripts/ProxmoxVE/pull/5586))
|
||||
- Kapowarr ([#5584](https://github.com/community-scripts/ProxmoxVE/pull/5584))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Fixing Cloudflare DDNS - lack of resources [@meszolym](https://github.com/meszolym) ([#5600](https://github.com/community-scripts/ProxmoxVE/pull/5600))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: make changes to automatically enable QuickSync [@vhsdream](https://github.com/vhsdream) ([#5560](https://github.com/community-scripts/ProxmoxVE/pull/5560))
|
||||
- Apache Guacamole: Install auth-jdbc component that matches release version [@tremor021](https://github.com/tremor021) ([#5563](https://github.com/community-scripts/ProxmoxVE/pull/5563))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: optimize binary installs with fetch_and_deploy helper [@MickLesk](https://github.com/MickLesk) ([#5588](https://github.com/community-scripts/ProxmoxVE/pull/5588))
|
||||
- [core]: add ipv6 configuration support [@MickLesk](https://github.com/MickLesk) ([#5575](https://github.com/community-scripts/ProxmoxVE/pull/5575))
|
||||
|
||||
## 2025-06-29
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Linkwarden: Add backing up of data folder to the update function [@tremor021](https://github.com/tremor021) ([#5548](https://github.com/community-scripts/ProxmoxVE/pull/5548))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Add cron-job api-key env variable to homarr script [@Meierschlumpf](https://github.com/Meierschlumpf) ([#5204](https://github.com/community-scripts/ProxmoxVE/pull/5204))
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 📝 Documentation
|
||||
|
||||
- update readme with valid discord link. other one expired [@BramSuurdje](https://github.com/BramSuurdje) ([#5567](https://github.com/community-scripts/ProxmoxVE/pull/5567))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- Update script-item.tsx [@ape364](https://github.com/ape364) ([#5549](https://github.com/community-scripts/ProxmoxVE/pull/5549))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix bug in tooltip that would always render 'updateable' [@BramSuurdje](https://github.com/BramSuurdje) ([#5552](https://github.com/community-scripts/ProxmoxVE/pull/5552))
|
||||
|
||||
## 2025-06-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Ollama: Clean up old Ollama files before running update [@tremor021](https://github.com/tremor021) ([#5534](https://github.com/community-scripts/ProxmoxVE/pull/5534))
|
||||
- ONLYOFFICE: Update install script to manually create RabbitMQ user [@tremor021](https://github.com/tremor021) ([#5535](https://github.com/community-scripts/ProxmoxVE/pull/5535))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Booklore: Correct documentation and website [@pieman3000](https://github.com/pieman3000) ([#5528](https://github.com/community-scripts/ProxmoxVE/pull/5528))
|
||||
|
||||
## 2025-06-27
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
@ -13,7 +13,7 @@
|
||||
<a href="https://helper-scripts.com">
|
||||
<img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" />
|
||||
</a>
|
||||
<a href="https://discord.gg/jsYVk5JBxq">
|
||||
<a href="https://discord.gg/3AnUqsXnmK">
|
||||
<img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
|
||||
</a>
|
||||
<a href="https://ko-fi.com/community_scripts">
|
||||
@ -82,7 +82,7 @@ We appreciate any contributions to the project—whether it's bug reports, featu
|
||||
|
||||
Join our community for support:
|
||||
|
||||
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/jsYVk5JBxq) for real-time support.
|
||||
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/3AnUqsXnmK) for real-time support.
|
||||
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
|
||||
|
||||
## 🤝 Report a Bug or Feature Request
|
||||
|
@ -32,6 +32,15 @@ function update_script() {
|
||||
exit 1
|
||||
fi
|
||||
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||
|
||||
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
|
||||
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
|
||||
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
|
||||
echo -e "${YW}Please follow the migration guide:${CL}"
|
||||
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||
|
45
ct/alpine-syncthing.sh
Normal file
45
ct/alpine-syncthing.sh
Normal file
@ -0,0 +1,45 @@
|
||||
#!/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: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://syncthing.net/
|
||||
|
||||
APP="Alpine-Syncthing"
|
||||
var_tags="${var_tags:-alpine;networking}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
msg_info "Updating Alpine Packages"
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "Updating Syncthing"
|
||||
$STD apk upgrade syncthing
|
||||
msg_ok "Updated Syncthing"
|
||||
|
||||
msg_info "Restarting Syncthing"
|
||||
$STD rc-service syncthing restart
|
||||
msg_ok "Restarted Syncthing"
|
||||
|
||||
exit 1
|
||||
}
|
||||
|
||||
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}:8384${CL}"
|
@ -7,8 +7,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
|
||||
APP="Cloudflare-DDNS"
|
||||
var_tags="${var_tags:-network}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-3}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
|
6
ct/headers/alpine-syncthing
Normal file
6
ct/headers/alpine-syncthing
Normal file
@ -0,0 +1,6 @@
|
||||
___ __ _ _____ __ __ _
|
||||
/ | / /___ (_)___ ___ / ___/__ ______ _____/ /_/ /_ (_)___ ____ _
|
||||
/ /| | / / __ \/ / __ \/ _ \______\__ \/ / / / __ \/ ___/ __/ __ \/ / __ \/ __ `/
|
||||
/ ___ |/ / /_/ / / / / / __/_____/__/ / /_/ / / / / /__/ /_/ / / / / / / / /_/ /
|
||||
/_/ |_/_/ .___/_/_/ /_/\___/ /____/\__, /_/ /_/\___/\__/_/ /_/_/_/ /_/\__, /
|
||||
/_/ /____/ /____/
|
6
ct/headers/itsm-ng
Normal file
6
ct/headers/itsm-ng
Normal file
@ -0,0 +1,6 @@
|
||||
_______________ __ ___ _ ________
|
||||
/ _/_ __/ ___// |/ / / | / / ____/
|
||||
/ / / / \__ \/ /|_/ /_____/ |/ / / __
|
||||
_/ / / / ___/ / / / /_____/ /| / /_/ /
|
||||
/___/ /_/ /____/_/ /_/ /_/ |_/\____/
|
||||
|
6
ct/headers/kapowarr
Normal file
6
ct/headers/kapowarr
Normal file
@ -0,0 +1,6 @@
|
||||
__ __
|
||||
/ //_/___ _____ ____ _ ______ ___________
|
||||
/ ,< / __ `/ __ \/ __ \ | /| / / __ `/ ___/ ___/
|
||||
/ /| / /_/ / /_/ / /_/ / |/ |/ / /_/ / / / /
|
||||
/_/ |_\__,_/ .___/\____/|__/|__/\__,_/_/ /_/
|
||||
/_/
|
6
ct/headers/librespeed-rust
Normal file
6
ct/headers/librespeed-rust
Normal file
@ -0,0 +1,6 @@
|
||||
__ _ __ __ ____ __
|
||||
/ / (_) /_ ________ _________ ___ ___ ____/ / / __ \__ _______/ /_
|
||||
/ / / / __ \/ ___/ _ \/ ___/ __ \/ _ \/ _ \/ __ /_____/ /_/ / / / / ___/ __/
|
||||
/ /___/ / /_/ / / / __(__ ) /_/ / __/ __/ /_/ /_____/ _, _/ /_/ (__ ) /_
|
||||
/_____/_/_.___/_/ \___/____/ .___/\___/\___/\__,_/ /_/ |_|\__,_/____/\__/
|
||||
/_/
|
@ -1,6 +1,6 @@
|
||||
______ _ ___
|
||||
/_ __/____(_) (_)_ ______ ___
|
||||
/ / / ___/ / / / / / / __ `__ \
|
||||
/ / / / / / / / /_/ / / / / / /
|
||||
/_/ /_/ /_/_/_/\__,_/_/ /_/ /_/
|
||||
|
||||
______ _ ___ _ __ __
|
||||
/_ __/____(_) (_)_ ______ ___ / | / /___ / /____ _____
|
||||
/ / / ___/ / / / / / / __ `__ \ / |/ / __ \/ __/ _ \/ ___/
|
||||
/ / / / / / / / /_/ / / / / / / / /| / /_/ / /_/ __(__ )
|
||||
/_/ /_/ /_/_/_/\__,_/_/ /_/ /_/ /_/ |_/\____/\__/\___/____/
|
||||
|
||||
|
@ -48,6 +48,7 @@ source /opt/homarr/.env
|
||||
set +a
|
||||
export DB_DIALECT='sqlite'
|
||||
export AUTH_SECRET=$(openssl rand -base64 32)
|
||||
export CRON_JOB_API_KEY=$(openssl rand -base64 32)
|
||||
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
|
||||
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
|
||||
dirname=$(basename "$dir")
|
||||
@ -114,6 +115,7 @@ source /opt/homarr/.env
|
||||
set +a
|
||||
export DB_DIALECT='sqlite'
|
||||
export AUTH_SECRET=$(openssl rand -base64 32)
|
||||
export CRON_JOB_API_KEY=$(openssl rand -base64 32)
|
||||
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
|
||||
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
|
||||
dirname=$(basename "$dir")
|
||||
|
47
ct/itsm-ng.sh
Normal file
47
ct/itsm-ng.sh
Normal file
@ -0,0 +1,47 @@
|
||||
#!/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: Florianb63
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://itsm-ng.com/
|
||||
|
||||
APP="ITSM-NG"
|
||||
var_tags="${var_tags:-asset-management;foss}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-10}"
|
||||
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 [[ ! -f /etc/itsm-ng/config_db.php ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt-get update
|
||||
$STD apt-get -y upgrade
|
||||
msg_ok "Updated Successfully"
|
||||
|
||||
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}${CL}"
|
66
ct/kapowarr.sh
Normal file
66
ct/kapowarr.sh
Normal file
@ -0,0 +1,66 @@
|
||||
#!/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://github.com/Casvt/Kapowarr
|
||||
|
||||
APP="Kapowarr"
|
||||
var_tags="${var_tags:-Arr}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-2}"
|
||||
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 [[ ! -f /etc/systemd/system/kapowarr.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -s https://api.github.com/repos/Casvt/Kapowarr/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
if [[ "${RELEASE}" != "$(cat $HOME/.kapowarr)" ]] || [[ ! -f $HOME/.kapowarr ]]; then
|
||||
setup_uv
|
||||
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop kapowarr
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mv /opt/kapowarr/db /opt/
|
||||
msg_ok "Backup Created"
|
||||
|
||||
fetch_and_deploy_gh_release "kapowarr" "Casvt/Kapowarr"
|
||||
msg_info "Updating $APP to ${RELEASE}"
|
||||
mv /opt/db /opt/kapowarr
|
||||
msg_ok "Updated $APP to ${RELEASE}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start kapowarr
|
||||
msg_ok "Started $APP"
|
||||
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
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}:5656${CL}"
|
@ -36,6 +36,15 @@ function update_script() {
|
||||
exit 1
|
||||
fi
|
||||
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||
|
||||
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
|
||||
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
|
||||
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
|
||||
echo -e "${YW}Please follow the migration guide:${CL}"
|
||||
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||
|
54
ct/librespeed-rust.sh
Normal file
54
ct/librespeed-rust.sh
Normal file
@ -0,0 +1,54 @@
|
||||
#!/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: Joseph Stubberfield (stubbers)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/librespeed/speedtest-rust
|
||||
|
||||
APP="Librespeed-Rust"
|
||||
var_tags="${var_tags:-network}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
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 /var/lib/librespeed-rs ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/librespeed/speedtest-rust/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.librespeed 2>/dev/null)" ]] || [[ ! -f ~/.librespeed ]]; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop librespeed-rs
|
||||
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"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start librespeed-rs
|
||||
msg_ok "Started Service"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
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}"
|
@ -37,6 +37,7 @@ function update_script() {
|
||||
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
mv /opt/linkwarden/.env /opt/.env
|
||||
[ -d /opt/linkwarden/data ] && mv /opt/linkwarden/data /opt/data.bak
|
||||
rm -rf /opt/linkwarden
|
||||
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
|
||||
cd /opt/linkwarden
|
||||
@ -47,6 +48,7 @@ function update_script() {
|
||||
$STD yarn prisma:generate
|
||||
$STD yarn web:build
|
||||
$STD yarn prisma:deploy
|
||||
[ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
|
@ -38,6 +38,8 @@ function update_script() {
|
||||
TMP_TAR=$(mktemp --suffix=.tgz)
|
||||
curl -fL# -o "${TMP_TAR}" "https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tgz"
|
||||
msg_info "Updating Ollama to ${RELEASE}"
|
||||
rm -rf /usr/local/lib/ollama
|
||||
rm -rf /usr/local/bin/ollama
|
||||
tar -xzf "${TMP_TAR}" -C /usr/local/lib/ollama
|
||||
ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama
|
||||
echo "${RELEASE}" >/opt/Ollama_version.txt
|
||||
|
@ -33,6 +33,8 @@ function update_script() {
|
||||
OLLAMA_VERSION=$(ollama -v | awk '{print $NF}')
|
||||
RELEASE=$(curl -s https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
||||
if [ "$OLLAMA_VERSION" != "$RELEASE" ]; then
|
||||
rm -rf /usr/lib/ollama
|
||||
rm -rf /usr/bin/ollama
|
||||
curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
|
||||
tar -C /usr -xzf ollama-linux-amd64.tgz
|
||||
rm -rf ollama-linux-amd64.tgz
|
||||
|
@ -31,7 +31,7 @@ function update_script() {
|
||||
touch /opt/${APP}_version.txt
|
||||
mkdir -p $HOME/.config/qBittorrent/
|
||||
mkdir -p /opt/qbittorrent/
|
||||
mv /.config/qBittorrent $HOME/.config/
|
||||
[ -d "/.config/qBittorrent" ] && mv /.config/qBittorrent "$HOME/.config/"
|
||||
$STD apt-get remove --purge -y qbittorrent-nox
|
||||
sed -i 's@ExecStart=/usr/bin/qbittorrent-nox@ExecStart=/opt/qbittorrent/qbittorrent-nox@g' /etc/systemd/system/qbittorrent-nox.service
|
||||
systemctl daemon-reload
|
||||
@ -67,4 +67,4 @@ 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}:8090${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
||||
|
@ -3,9 +3,9 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://triliumnext.github.io/Docs/
|
||||
# Source: https://github.com/TriliumNext/Trilium
|
||||
|
||||
APP="Trilium"
|
||||
APP="Trilium Notes"
|
||||
var_tags="${var_tags:-notes}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
@ -27,57 +27,52 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "v${RELEASE}" != "$(cat /opt/${APP}_version.txt 2>/dev/null)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||
|
||||
if [[ -d /opt/trilium/db ]]; then
|
||||
DB_PATH="/opt/trilium/db"
|
||||
DB_RESTORE_PATH="/opt/trilium/db"
|
||||
elif [[ -d /opt/trilium/assets/db ]]; then
|
||||
DB_PATH="/opt/trilium/assets/db"
|
||||
DB_RESTORE_PATH="/opt/trilium/assets/db"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/TriliumNext/Trilium/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.Trilium 2>/dev/null)" ]] || [[ ! -f ~/.Trilium ]]; then
|
||||
|
||||
if [[ -d /opt/trilium/db ]]; then
|
||||
DB_PATH="/opt/trilium/db"
|
||||
DB_RESTORE_PATH="/opt/trilium/db"
|
||||
elif [[ -d /opt/trilium/assets/db ]]; then
|
||||
DB_PATH="/opt/trilium/assets/db"
|
||||
DB_RESTORE_PATH="/opt/trilium/assets/db"
|
||||
else
|
||||
msg_error "Database not found in either /opt/trilium/db or /opt/trilium/assets/db"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop trilium
|
||||
sleep 1
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Backing up Database"
|
||||
mkdir -p /opt/trilium_backup
|
||||
cp -r "${DB_PATH}" /opt/trilium_backup/
|
||||
rm -rf /opt/trilium
|
||||
msg_ok "Backed up Database"
|
||||
|
||||
fetch_and_deploy_gh_release "Trilium" "TriliumNext/Trilium" "prebuild" "latest" "/opt/trilium" "TriliumNotes-Server-*linux-x64.tar.xz"
|
||||
|
||||
msg_info "Restoring Database"
|
||||
mkdir -p "$(dirname "${DB_RESTORE_PATH}")"
|
||||
cp -r /opt/trilium_backup/$(basename "${DB_PATH}") "${DB_RESTORE_PATH}"
|
||||
msg_ok "Restored Database"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/trilium_backup
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start trilium
|
||||
sleep 1
|
||||
msg_ok "Started ${APP}"
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_error "Database not found in either /opt/trilium/db or /opt/trilium/assets/db"
|
||||
exit 1
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop trilium
|
||||
sleep 1
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Updating to ${RELEASE}"
|
||||
mkdir -p /opt/trilium_backup
|
||||
cp -r "${DB_PATH}" /opt/trilium_backup/
|
||||
rm -rf /opt/trilium
|
||||
cd /tmp
|
||||
curl -fsSL "https://github.com/TriliumNext/trilium/releases/download/v${RELEASE}/TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz" -o "TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz"
|
||||
tar -xf "TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz"
|
||||
mv "TriliumNextNotes-Server-${RELEASE}-linux-x64" /opt/trilium
|
||||
|
||||
# Restore database
|
||||
mkdir -p "$(dirname "${DB_RESTORE_PATH}")"
|
||||
cp -r /opt/trilium_backup/$(basename "${DB_PATH}") "${DB_RESTORE_PATH}"
|
||||
|
||||
echo "v${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated to ${RELEASE}"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf "/tmp/TriliumNextNotes-Server-${RELEASE}-linux-x64.tar.xz"
|
||||
rm -rf /opt/trilium_backup
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start trilium
|
||||
sleep 1
|
||||
msg_ok "Started ${APP}"
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
|
||||
exit
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
@ -9,7 +9,7 @@ APP="Zigbee2MQTT"
|
||||
var_tags="${var_tags:-smarthome;zigbee;mqtt}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_disk="${var_disk:-5}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-0}"
|
||||
@ -27,16 +27,28 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ -f ~/.zigbee2mqtt ]]; then
|
||||
CURRENT="$(cat ~/.zigbee2mqtt)"
|
||||
elif [[ -f /opt/${APP}_version.txt ]]; then
|
||||
CURRENT="$(cat /opt/${APP}_version.txt)"
|
||||
rm -f /opt/${APP}_version.txt
|
||||
else
|
||||
CURRENT=""
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Koenkk/zigbee2mqtt/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 [[ "$RELEASE" != "$CURRENT" ]]; then
|
||||
if ! command -v jq &>/dev/null; then
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y jq
|
||||
fi
|
||||
NODE_VERSION=24 NODE_MODULE="pnpm@$(curl -fsSL https://raw.githubusercontent.com/Koenkk/zigbee2mqtt/master/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop zigbee2mqtt
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating pnpm"
|
||||
$STD npm install -g pnpm@10.4.1
|
||||
msg_ok "Updated pnpm"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
rm -rf /opt/${APP}_backup*.tar.gz
|
||||
mkdir -p /opt/z2m_backup
|
||||
@ -44,12 +56,9 @@ function update_script() {
|
||||
mv /opt/zigbee2mqtt/data /opt/z2m_backup
|
||||
msg_ok "Backup Created"
|
||||
|
||||
fetch_and_deploy_gh_release "Zigbee2MQTT" "Koenkk/zigbee2mqtt" "tarball" "latest" "/opt/zigbee2mqtt"
|
||||
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
cd /opt
|
||||
curl -fsSL "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip")
|
||||
$STD unzip ${RELEASE}.zip
|
||||
rm -rf /opt/zigbee2mqtt
|
||||
mv zigbee2mqtt-${RELEASE} /opt/zigbee2mqtt
|
||||
rm -rf /opt/zigbee2mqtt/data
|
||||
mv /opt/z2m_backup/data /opt/zigbee2mqtt
|
||||
cd /opt/zigbee2mqtt
|
||||
@ -63,9 +72,7 @@ function update_script() {
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/z2m_backup
|
||||
rm -rf /opt/${RELEASE}.zip
|
||||
msg_ok "Cleaned up"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||
fi
|
||||
|
@ -40,9 +40,9 @@ function update_script() {
|
||||
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
cp /opt/zipline/.env /opt/
|
||||
mkdir -p /opt/zipline-upload
|
||||
if [ -d /opt/zipline/upload ] && [ "$(ls -A /opt/zipline/upload)" ]; then
|
||||
cp -R /opt/zipline/upload/* /opt/zipline-upload/
|
||||
mkdir -p /opt/zipline-uploads
|
||||
if [ -d /opt/zipline/uploads ] && [ "$(ls -A /opt/zipline/uploads)" ]; then
|
||||
cp -R /opt/zipline/uploads/* /opt/zipline-uploads/
|
||||
fi
|
||||
curl -fsSL "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip")
|
||||
$STD unzip v"${RELEASE}".zip
|
||||
|
2
frontend/public/json/add-iptag.json
generated
2
frontend/public/json/add-iptag.json
generated
@ -11,7 +11,7 @@
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
"website": null,
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/proxmox.svg",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
||||
"config_path": "/opt/iptag/iptag.conf",
|
||||
"description": "This script automatically adds IP address as tags to LXC containers or VM's using a systemd service. The service also updates the tags if a LXC/VM IP address is changed.",
|
||||
"install_methods": [
|
||||
|
2
frontend/public/json/babybuddy.json
generated
2
frontend/public/json/babybuddy.json
generated
@ -11,7 +11,7 @@
|
||||
"interface_port": 80,
|
||||
"documentation": "https://docs.baby-buddy.net/",
|
||||
"website": "https://github.com/babybuddy/babybuddy",
|
||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/baby-buddy.svg",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/baby-buddy.webp",
|
||||
"config_path": "/opt/babybuddy/babybuddy/settings/production.py",
|
||||
"description": "Baby Buddy is an open-source web application designed to assist caregivers in tracking various aspects of a baby's daily routine, including sleep, feedings, diaper changes, tummy time, and more. By recording this data, caregivers can better understand and anticipate their baby's needs, reducing guesswork in daily care. The application offers a user-friendly dashboard for data entry and visualization, supports multiple users, and provides features like timers and reminders. Additionally, Baby Buddy can be integrated with platforms like Home Assistant and Grafana for enhanced functionality.",
|
||||
"install_methods": [
|
||||
|
4
frontend/public/json/booklore.json
generated
4
frontend/public/json/booklore.json
generated
@ -9,8 +9,8 @@
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 6060,
|
||||
"documentation": "https://github.com/ejmg/booklore",
|
||||
"website": "https://booklore.app/",
|
||||
"documentation": "https://github.com/adityachandelgit/BookLore",
|
||||
"website": "https://github.com/adityachandelgit/BookLore",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/booklore.webp",
|
||||
"config_path": "/opt/booklore_storage/.env",
|
||||
"description": "BookLore is a self-hosted digital library for managing and reading books, offering a beautiful interface and support for metadata management. Built with a modern tech stack, it provides support for importing, organizing, and reading EPUBs and PDFs, while also managing cover images and book metadata.",
|
||||
|
4
frontend/public/json/cloudflare-ddns.json
generated
4
frontend/public/json/cloudflare-ddns.json
generated
@ -19,8 +19,8 @@
|
||||
"type": "default",
|
||||
"script": "ct/cloudflare-ddns.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 2,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
|
2
frontend/public/json/convertx.json
generated
2
frontend/public/json/convertx.json
generated
@ -12,7 +12,7 @@
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://github.com/C4illin/ConvertX",
|
||||
"website": "https://github.com/C4illin/ConvertX",
|
||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/convertx.svg",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/convertx.webp",
|
||||
"description": "ConvertX is a self-hosted online file converter supporting over 1000 formats, including images, audio, video, documents, and more, powered by FFmpeg, GraphicsMagick, and other libraries.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
2
frontend/public/json/evcc.json
generated
2
frontend/public/json/evcc.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-10-15",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 7070,
|
||||
"documentation": "https://evcc.io/#devices",
|
||||
|
2
frontend/public/json/huntarr.json
generated
2
frontend/public/json/huntarr.json
generated
@ -12,7 +12,7 @@
|
||||
"documentation": "https://github.com/plexguide/Huntarr.io/wiki",
|
||||
"config_path": "/opt/huntarr",
|
||||
"website": "https://github.com/plexguide/Huntarr.io",
|
||||
"logo": "https://raw.githubusercontent.com/plexguide/Huntarr.io/refs/heads/main/frontend/static/logo/Huntarr.svg",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/huntarr.webp",
|
||||
"description": "Huntarr is a tool that automates the search for missing or low-quality media content in your collection. It works seamlessly with applications like Sonarr, Radarr, Lidarr, Readarr, and Whisparr, enhancing their functionality with continuous background scans to identify and update missed or outdated content. Through a user-friendly web interface accessible on port 9705, Huntarr provides real-time statistics, log views, and extensive configuration options. The software is especially useful for users who want to keep their media library up to date by automatically searching for missing episodes or higher-quality versions. Huntarr is well-suited for self-hosted environments and can easily run in LXC containers or Docker setups.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
35
frontend/public/json/itsm-ng.json
generated
Normal file
35
frontend/public/json/itsm-ng.json
generated
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "ITSM-NG",
|
||||
"slug": "itsm-ng",
|
||||
"categories": [
|
||||
25
|
||||
],
|
||||
"date_created": "2025-07-01",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": "https://wiki.itsm-ng.org/en/home",
|
||||
"website": "https://itsm-ng.com",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/itsm-ng.webp",
|
||||
"config_path": "/etc/itsm-ng",
|
||||
"description": "ITSM-NG is a powerful, open-source IT Service Management (ITSM) solution designed for managing IT assets, software, licenses, and support processes in accordance with ITIL best practices. It offers integrated features for asset inventory, incident tracking, problem management, change requests, and service desk workflows.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/itsm-ng.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": "itsm",
|
||||
"password": "itsm"
|
||||
},
|
||||
"notes": []
|
||||
}
|
4
frontend/public/json/jellyfin.json
generated
4
frontend/public/json/jellyfin.json
generated
@ -39,6 +39,10 @@
|
||||
{
|
||||
"text": "FFmpeg path: /usr/lib/jellyfin-ffmpeg/ffmpeg",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "For NVIDIA graphics cards, you'll need to install the same drivers in the container that you did on the host. In the container, run the driver installation script and add the CLI arg --no-kernel-module",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
35
frontend/public/json/kapowarr.json
generated
Normal file
35
frontend/public/json/kapowarr.json
generated
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "Kapowarr",
|
||||
"slug": "kapowarr",
|
||||
"categories": [
|
||||
14
|
||||
],
|
||||
"date_created": "2025-06-30",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 5656,
|
||||
"documentation": "https://casvt.github.io/Kapowarr/general_info/workings/",
|
||||
"website": "https://casvt.github.io/Kapowarr/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/kapowarr.webp",
|
||||
"config_path": "",
|
||||
"description": "Kapowarr allows you to build a digital library of comics. You can add volumes, map them to a folder and start managing! Download, rename, move and convert issues of the volume (including TPB's, One Shots, Hard Covers, and more). The whole process is automated and can be customised in the settings.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/kapowarr.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 256,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
35
frontend/public/json/librespeed-rust.json
generated
Normal file
35
frontend/public/json/librespeed-rust.json
generated
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "Librespeed Rust",
|
||||
"slug": "librespeed-rust",
|
||||
"categories": [
|
||||
4
|
||||
],
|
||||
"date_created": "2025-07-01",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"config_path": "/var/lib/librespeed-rs/configs.toml",
|
||||
"interface_port": 8080,
|
||||
"documentation": "https://github.com/librespeed/speedtest-rust",
|
||||
"website": "https://github.com/librespeed/speedtest-rust",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/librespeed.webp",
|
||||
"description": "Librespeed is a no flash, no java, no websocket speedtest server. This community script deploys the rust version for simplicity and low resource usage.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/librespeed-rust.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
2
frontend/public/json/lyrionmusicserver.json
generated
2
frontend/public/json/lyrionmusicserver.json
generated
@ -12,7 +12,7 @@
|
||||
"interface_port": 9000,
|
||||
"documentation": "https://lyrion.org/",
|
||||
"website": "https://lyrion.org/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lyrion-media-server.webp",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lyrion-music-server.webp",
|
||||
"description": "Lyrion Music Server is an open-source server software to stream local music collections, internet radio, and music services to Squeezebox and compatible audio players.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
2
frontend/public/json/oauth2-proxy.json
generated
2
frontend/public/json/oauth2-proxy.json
generated
@ -12,7 +12,7 @@
|
||||
"interface_port": null,
|
||||
"documentation": "https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview",
|
||||
"website": "https://oauth2-proxy.github.io/oauth2-proxy/",
|
||||
"logo": "https://raw.githubusercontent.com/oauth2-proxy/oauth2-proxy/f82e90426a1881d36bf995f25de9b7b1db4c2564/docs/static/img/logos/OAuth2_Proxy_icon.svg",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/oauth2-proxy.webp",
|
||||
"config_path": "/opt/oauth2-proxy/config.toml",
|
||||
"description": "A reverse proxy that provides authentication with Google, Azure, OpenID Connect and many more identity providers.",
|
||||
"install_methods": [
|
||||
|
40
frontend/public/json/pingvin.json
generated
40
frontend/public/json/pingvin.json
generated
@ -1,40 +0,0 @@
|
||||
{
|
||||
"name": "Pingvin Share",
|
||||
"slug": "pingvin",
|
||||
"categories": [
|
||||
11
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://stonith404.github.io/pingvin-share/introduction",
|
||||
"website": "https://github.com/stonith404/pingvin-share",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/pingvin-share.webp",
|
||||
"config_path": "/opt/pingvin-share/config.yaml",
|
||||
"description": "Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/pingvin.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Run `DATA_DIRECTORY=path-to-your-data-directory pm2 restart all --update-env` to update path to your data directory or to update environment variables.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
2
frontend/public/json/pulse.json
generated
2
frontend/public/json/pulse.json
generated
@ -11,7 +11,7 @@
|
||||
"interface_port": 7655,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/rcourtman/Pulse",
|
||||
"logo": "https://raw.githubusercontent.com/rcourtman/Pulse/main/src/public/logos/pulse-logo-256x256.png",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/pulse.webp",
|
||||
"config_path": "/opt/pulse/.env",
|
||||
"description": "A lightweight monitoring application for Proxmox VE that displays real-time status for VMs and containers via a simple web interface.",
|
||||
"install_methods": [
|
||||
|
2
frontend/public/json/rclone.json
generated
2
frontend/public/json/rclone.json
generated
@ -11,7 +11,7 @@
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://rclone.org/docs/",
|
||||
"website": "https://rclone.org/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/rclone.svg",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/rclone.webp",
|
||||
"config_path": "~/.config/rclone/rclone.conf",
|
||||
"description": "Rclone is a command-line program to manage files on cloud storage. It is a feature-rich alternative to cloud vendors' web storage interfaces",
|
||||
"install_methods": [
|
||||
|
35
frontend/public/json/readarr.json
generated
35
frontend/public/json/readarr.json
generated
@ -1,35 +0,0 @@
|
||||
{
|
||||
"name": "Readarr",
|
||||
"slug": "readarr",
|
||||
"categories": [
|
||||
14
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": 8787,
|
||||
"documentation": null,
|
||||
"website": "https://readarr.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/readarr.webp",
|
||||
"config_path": "",
|
||||
"description": "Readarr is an eBook and audiobook management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their eBook and audiobook collection with ease. Readarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Lidarr, to automate the downloading and organizing of eBook and audiobook files. The software provides a web-based interface for managing and organizing eBooks and audiobooks, making it easy to search and find titles, authors, and genres. Readarr also supports metadata management, including cover art and information, making it easy for users to keep their eBook and audiobook 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 eBook and audiobook collections, making it a valuable tool for book and audiobook enthusiasts who want to keep their collection organized and up-to-date. With Readarr, users can enjoy their eBook and audiobook collection from anywhere, making it a powerful tool for managing and sharing book and audiobook files.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/readarr.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
2
frontend/public/json/streamlink-webui.json
generated
2
frontend/public/json/streamlink-webui.json
generated
@ -12,7 +12,7 @@
|
||||
"documentation": "https://github.com/CrazyWolf13/streamlink-webui",
|
||||
"config_path": "/opt/streamlink-webui.env",
|
||||
"website": "https://github.com/CrazyWolf13/streamlink-webui",
|
||||
"logo": "https://streamlink.github.io/_static/icon.svg",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/streamlink.webp",
|
||||
"description": "a simple web-ui to the well-known streamlink cli application, which allows you to save twitch streams to your local disk.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
17
frontend/public/json/syncthing.json
generated
17
frontend/public/json/syncthing.json
generated
@ -12,7 +12,7 @@
|
||||
"documentation": null,
|
||||
"website": "https://syncthing.net/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/syncthing.webp",
|
||||
"config_path": "/root/.local/state/syncthing/config.xml",
|
||||
"config_path": "/root/.local/state/syncthing/config.xml - Alpine: /var/lib/syncthing/.local/state/syncthing/config.xml",
|
||||
"description": "Syncthing is an open-source file syncing tool that allows users to keep their files in sync across multiple devices by using peer-to-peer synchronization. It doesn't rely on any central server, so all data transfers are directly between devices.",
|
||||
"install_methods": [
|
||||
{
|
||||
@ -25,8 +25,19 @@
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-syncthing.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
|
8
frontend/public/json/trilium.json
generated
8
frontend/public/json/trilium.json
generated
@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "TriliumNext",
|
||||
"name": "Trilium Notes",
|
||||
"slug": "trilium",
|
||||
"categories": [
|
||||
12
|
||||
@ -9,11 +9,11 @@
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8080,
|
||||
"documentation": "https://triliumnext.github.io/Docs/",
|
||||
"documentation": "https://github.com/TriliumNext/trilium/wiki",
|
||||
"website": "https://github.com/TriliumNext/trilium",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/triliumnext.webp",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/trilium-notes.webp",
|
||||
"config_path": "/root/trilium-data/config.ini",
|
||||
"description": "TriliumNext is an newer Fork of Trilium. TriliumNext is an open-source note-taking and personal knowledge management application. It allows users to organize and manage their notes, ideas, and information in a single place, using a hierarchical tree-like structure. Trilium offers a range of features, including rich text formatting, links, images, and attachments, making it easy to create and structure notes. The software is designed to be flexible and customizable, with a range of customization options and plugins available, including themes, export options, and more. Trilium is a self-hosted solution, and can be run on a local machine or a cloud-based server, providing users with full control over their notes and information.",
|
||||
"description": "Trilium Notes is the latest and officially maintained version of the powerful, self-hosted note-taking and personal knowledge management application. It enables users to organize information in a hierarchical tree structure and supports rich text editing, internal linking, images, attachments, and powerful scripting capabilities. This version reflects the most current development efforts under the TriliumNext organization and replaces all prior forks or legacy variants. Trilium is ideal for building personal wikis, structured documentation, and long-term knowledge archives, giving users full local control and privacy.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
|
624
frontend/public/json/versions.json
generated
624
frontend/public/json/versions.json
generated
@ -1,39 +1,324 @@
|
||||
[
|
||||
{
|
||||
"name": "outline/outline",
|
||||
"version": "v0.85.0",
|
||||
"date": "2025-07-03T23:31:00Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/operating-system",
|
||||
"version": "15.2",
|
||||
"date": "2025-04-14T15:37:12Z"
|
||||
},
|
||||
{
|
||||
"name": "cloudflare/cloudflared",
|
||||
"version": "2025.7.0",
|
||||
"date": "2025-07-03T17:08:15Z"
|
||||
},
|
||||
{
|
||||
"name": "rabbitmq/rabbitmq-server",
|
||||
"version": "v4.1.2",
|
||||
"date": "2025-07-03T16:59:29Z"
|
||||
},
|
||||
{
|
||||
"name": "bunkerity/bunkerweb",
|
||||
"version": "v1.6.1",
|
||||
"date": "2025-03-15T17:29:17Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.4.0p6",
|
||||
"date": "2025-07-03T16:40:42Z"
|
||||
},
|
||||
{
|
||||
"name": "influxdata/influxdb",
|
||||
"version": "v3.2.1",
|
||||
"date": "2025-07-03T16:09:19Z"
|
||||
},
|
||||
{
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "310.5",
|
||||
"date": "2025-07-03T14:05:25Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.100.0",
|
||||
"date": "2025-06-23T12:48:35Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "18.0.7",
|
||||
"date": "2025-07-03T08:57:21Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-openapi@9.0.17",
|
||||
"date": "2025-07-03T06:57:48Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "preview-v0.1",
|
||||
"date": "2025-06-27T14:35:47Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2111",
|
||||
"date": "2025-07-03T05:50:31Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2025.6.3",
|
||||
"date": "2025-07-03T01:07:26Z"
|
||||
},
|
||||
{
|
||||
"name": "actualbudget/actual",
|
||||
"version": "v25.7.1",
|
||||
"date": "2025-07-03T01:03:18Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r6.0.25-rc0",
|
||||
"date": "2025-07-03T00:44:52Z"
|
||||
},
|
||||
{
|
||||
"name": "documenso/documenso",
|
||||
"version": "v1.12.2-rc.0",
|
||||
"date": "2025-07-03T00:31:22Z"
|
||||
},
|
||||
{
|
||||
"name": "cross-seed/cross-seed",
|
||||
"version": "v6.12.7",
|
||||
"date": "2025-06-18T03:44:24Z"
|
||||
},
|
||||
{
|
||||
"name": "emqx/emqx",
|
||||
"version": "v5.8.7",
|
||||
"date": "2025-07-02T21:54:54Z"
|
||||
},
|
||||
{
|
||||
"name": "hargata/lubelog",
|
||||
"version": "v1.4.8",
|
||||
"date": "2025-07-02T21:15:13Z"
|
||||
},
|
||||
{
|
||||
"name": "Koenkk/zigbee2mqtt",
|
||||
"version": "2.5.1",
|
||||
"date": "2025-07-02T19:38:06Z"
|
||||
},
|
||||
{
|
||||
"name": "redis/redis",
|
||||
"version": "8.2-rc1-int",
|
||||
"date": "2025-07-02T19:27:08Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.3.0",
|
||||
"date": "2025-07-02T12:26:44Z"
|
||||
},
|
||||
{
|
||||
"name": "ollama/ollama",
|
||||
"version": "v0.9.5",
|
||||
"date": "2025-07-02T18:39:28Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.20",
|
||||
"date": "2025-07-02T04:03:37Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.7.0",
|
||||
"date": "2025-07-02T16:23:42Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.1",
|
||||
"date": "2025-06-27T09:14:14Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "6.2.5",
|
||||
"date": "2025-07-02T13:06:30Z"
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w27-4.13.0",
|
||||
"date": "2025-07-01T03:17:32Z"
|
||||
},
|
||||
{
|
||||
"name": "glpi-project/glpi",
|
||||
"version": "10.0.18",
|
||||
"date": "2025-02-12T11:07:02Z"
|
||||
},
|
||||
{
|
||||
"name": "apache/tomcat",
|
||||
"version": "9.0.107",
|
||||
"date": "2025-07-02T07:12:09Z"
|
||||
},
|
||||
{
|
||||
"name": "qbittorrent/qBittorrent",
|
||||
"version": "release-5.1.2",
|
||||
"date": "2025-07-02T06:13:16Z"
|
||||
},
|
||||
{
|
||||
"name": "diced/zipline",
|
||||
"version": "v4.2.0",
|
||||
"date": "2025-07-02T00:45:31Z"
|
||||
},
|
||||
{
|
||||
"name": "sysadminsmedia/homebox",
|
||||
"version": "v0.20.2",
|
||||
"date": "2025-07-02T00:37:07Z"
|
||||
},
|
||||
{
|
||||
"name": "hyperion-project/hyperion.ng",
|
||||
"version": "2.1.1",
|
||||
"date": "2025-06-14T17:45:06Z"
|
||||
},
|
||||
{
|
||||
"name": "Threadfin/Threadfin",
|
||||
"version": "1.2.35",
|
||||
"date": "2025-07-01T21:37:20Z"
|
||||
},
|
||||
{
|
||||
"name": "TwiN/gatus",
|
||||
"version": "v5.19.0",
|
||||
"date": "2025-07-01T19:59:32Z"
|
||||
},
|
||||
{
|
||||
"name": "hivemq/hivemq-community-edition",
|
||||
"version": "2025.4",
|
||||
"date": "2025-07-01T18:01:37Z"
|
||||
},
|
||||
{
|
||||
"name": "HabitRPG/habitica",
|
||||
"version": "v5.37.1",
|
||||
"date": "2025-07-01T16:57:43Z"
|
||||
},
|
||||
{
|
||||
"name": "navidrome/navidrome",
|
||||
"version": "v0.57.0",
|
||||
"date": "2025-07-01T16:47:46Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.517",
|
||||
"date": "2025-07-01T16:08:23Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "v1.133.0",
|
||||
"date": "2025-07-01T15:13:42Z"
|
||||
},
|
||||
{
|
||||
"name": "syncthing/syncthing",
|
||||
"version": "v1.30.0",
|
||||
"date": "2025-07-01T11:29:11Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v99.99.99",
|
||||
"date": "2025-07-01T08:26:41Z"
|
||||
},
|
||||
{
|
||||
"name": "zabbix/zabbix",
|
||||
"version": "7.4.0",
|
||||
"date": "2025-07-01T04:36:51Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.15.0-rc3",
|
||||
"date": "2025-07-01T04:09:37Z"
|
||||
},
|
||||
{
|
||||
"name": "NginxProxyManager/nginx-proxy-manager",
|
||||
"version": "v2.12.4",
|
||||
"date": "2025-07-01T01:45:42Z"
|
||||
},
|
||||
{
|
||||
"name": "MagicMirrorOrg/MagicMirror",
|
||||
"version": "v2.32.0",
|
||||
"date": "2025-06-30T22:12:48Z"
|
||||
},
|
||||
{
|
||||
"name": "docker/compose",
|
||||
"version": "v2.38.1",
|
||||
"date": "2025-06-30T20:07:35Z"
|
||||
},
|
||||
{
|
||||
"name": "jhuckaby/Cronicle",
|
||||
"version": "v0.9.81",
|
||||
"date": "2025-06-30T16:40:33Z"
|
||||
},
|
||||
{
|
||||
"name": "prometheus/prometheus",
|
||||
"version": "v2.53.5",
|
||||
"date": "2025-06-30T11:01:12Z"
|
||||
},
|
||||
{
|
||||
"name": "jupyter/notebook",
|
||||
"version": "v7.4.4",
|
||||
"date": "2025-06-30T13:04:22Z"
|
||||
},
|
||||
{
|
||||
"name": "grokability/snipe-it",
|
||||
"version": "v8.1.17",
|
||||
"date": "2025-06-30T11:26:27Z"
|
||||
},
|
||||
{
|
||||
"name": "PrivateBin/PrivateBin",
|
||||
"version": "1.7.8",
|
||||
"date": "2025-06-30T09:00:54Z"
|
||||
},
|
||||
{
|
||||
"name": "typesense/typesense",
|
||||
"version": "v29.0",
|
||||
"date": "2025-06-30T03:52:33Z"
|
||||
},
|
||||
{
|
||||
"name": "dgtlmoon/changedetection.io",
|
||||
"version": "0.50.5",
|
||||
"date": "2025-06-29T08:54:47Z"
|
||||
},
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v11.11.2",
|
||||
"date": "2025-06-29T01:40:39Z"
|
||||
},
|
||||
{
|
||||
"name": "linkwarden/linkwarden",
|
||||
"version": "v2.11.2",
|
||||
"date": "2025-06-28T17:33:38Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.22.5",
|
||||
"date": "2025-06-28T16:06:19Z"
|
||||
},
|
||||
{
|
||||
"name": "Luligu/matterbridge",
|
||||
"version": "3.1.0",
|
||||
"date": "2025-06-28T09:02:38Z"
|
||||
},
|
||||
{
|
||||
"name": "plexguide/Huntarr.io",
|
||||
"version": "8.1.10",
|
||||
"date": "2025-06-27T23:24:52Z"
|
||||
"version": "8.1.11",
|
||||
"date": "2025-06-28T03:42:46Z"
|
||||
},
|
||||
{
|
||||
"name": "tobychui/zoraxy",
|
||||
"version": "v3.2.4",
|
||||
"date": "2025-06-28T02:47:31Z"
|
||||
},
|
||||
{
|
||||
"name": "pocket-id/pocket-id",
|
||||
"version": "v1.5.0",
|
||||
"date": "2025-06-27T22:04:32Z"
|
||||
},
|
||||
{
|
||||
"name": "linkwarden/linkwarden",
|
||||
"version": "v2.11.1",
|
||||
"date": "2025-06-27T21:21:59Z"
|
||||
},
|
||||
{
|
||||
"name": "homarr-labs/homarr",
|
||||
"version": "v1.26.0",
|
||||
"date": "2025-06-27T19:15:24Z"
|
||||
},
|
||||
{
|
||||
"name": "ollama/ollama",
|
||||
"version": "v0.9.4-rc2",
|
||||
"date": "2025-06-27T18:45:33Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.6.3",
|
||||
"date": "2025-06-24T13:00:12Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "preview-v0.1",
|
||||
"date": "2025-06-27T14:35:47Z"
|
||||
},
|
||||
{
|
||||
"name": "goauthentik/authentik",
|
||||
"version": "version/2025.6.3",
|
||||
@ -44,11 +329,6 @@
|
||||
"version": "v1.70.2",
|
||||
"date": "2025-06-27T13:21:17Z"
|
||||
},
|
||||
{
|
||||
"name": "documenso/documenso",
|
||||
"version": "v1.12.0-rc.7",
|
||||
"date": "2025-06-27T12:17:45Z"
|
||||
},
|
||||
{
|
||||
"name": "sabnzbd/sabnzbd",
|
||||
"version": "4.5.1",
|
||||
@ -60,45 +340,15 @@
|
||||
"date": "2025-06-27T09:53:57Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.1",
|
||||
"date": "2025-06-27T09:14:14Z"
|
||||
},
|
||||
{
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "341.1",
|
||||
"date": "2025-06-27T08:50:16Z"
|
||||
},
|
||||
{
|
||||
"name": "zabbix/zabbix",
|
||||
"version": "7.2.10",
|
||||
"date": "2025-06-27T06:40:00Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2064",
|
||||
"date": "2025-06-27T05:54:03Z"
|
||||
"name": "fallenbagel/jellyseerr",
|
||||
"version": "preview-seerr",
|
||||
"date": "2025-06-27T06:10:03Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.9.1.2",
|
||||
"date": "2025-06-26T22:08:00Z"
|
||||
},
|
||||
{
|
||||
"name": "prometheus/prometheus",
|
||||
"version": "v3.4.2",
|
||||
"date": "2025-06-26T21:45:21Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/operating-system",
|
||||
"version": "15.2",
|
||||
"date": "2025-04-14T15:37:12Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.2.5",
|
||||
"date": "2025-05-28T06:49:43Z"
|
||||
},
|
||||
{
|
||||
"name": "netbox-community/netbox",
|
||||
"version": "v4.3.3",
|
||||
@ -114,11 +364,6 @@
|
||||
"version": "v1.84.3",
|
||||
"date": "2025-06-26T16:31:57Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-ui@15.5.5",
|
||||
"date": "2025-06-26T15:54:17Z"
|
||||
},
|
||||
{
|
||||
"name": "traefik/traefik",
|
||||
"version": "v3.5.0-rc1",
|
||||
@ -139,26 +384,6 @@
|
||||
"version": "4.1.0-beta.2",
|
||||
"date": "2025-06-26T14:23:26Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "18.0.7",
|
||||
"date": "2025-06-26T09:16:33Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.18",
|
||||
"date": "2025-06-20T04:45:37Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r8.1.2-rc1",
|
||||
"date": "2025-06-25T22:42:04Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v3.32.0",
|
||||
"date": "2025-06-25T22:27:01Z"
|
||||
},
|
||||
{
|
||||
"name": "gristlabs/grist-core",
|
||||
"version": "v1.6.1",
|
||||
@ -169,36 +394,11 @@
|
||||
"version": "v4.101.2",
|
||||
"date": "2025-06-25T21:18:52Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.22.4",
|
||||
"date": "2025-06-25T20:46:20Z"
|
||||
},
|
||||
{
|
||||
"name": "influxdata/influxdb",
|
||||
"version": "v3.2.0",
|
||||
"date": "2025-06-25T17:31:48Z"
|
||||
},
|
||||
{
|
||||
"name": "wavelog/wavelog",
|
||||
"version": "2.0.5",
|
||||
"date": "2025-06-25T14:53:31Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.504.3",
|
||||
"date": "2025-06-25T14:43:01Z"
|
||||
},
|
||||
{
|
||||
"name": "bunkerity/bunkerweb",
|
||||
"version": "testing",
|
||||
"date": "2025-06-16T18:10:42Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.100.0",
|
||||
"date": "2025-06-23T12:48:35Z"
|
||||
},
|
||||
{
|
||||
"name": "moghtech/komodo",
|
||||
"version": "v1.18.4",
|
||||
@ -224,56 +424,21 @@
|
||||
"version": "v2.18.0",
|
||||
"date": "2025-06-24T08:29:55Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "v1.132.0",
|
||||
"date": "2025-06-17T13:49:30Z"
|
||||
},
|
||||
{
|
||||
"name": "docker/compose",
|
||||
"version": "v2.37.3",
|
||||
"date": "2025-06-24T14:05:33Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.4.0p5",
|
||||
"date": "2025-06-24T13:06:53Z"
|
||||
},
|
||||
{
|
||||
"name": "fallenbagel/jellyseerr",
|
||||
"version": "preview-fix-proxy-axios",
|
||||
"date": "2025-06-24T08:50:22Z"
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w26-4.13.0",
|
||||
"date": "2025-06-24T02:02:34Z"
|
||||
},
|
||||
{
|
||||
"name": "minio/minio",
|
||||
"version": "RELEASE.2025-06-13T11-33-47Z",
|
||||
"date": "2025-06-23T20:58:42Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2025.6.1",
|
||||
"date": "2025-06-23T19:28:09Z"
|
||||
},
|
||||
{
|
||||
"name": "runtipi/runtipi",
|
||||
"version": "nightly",
|
||||
"date": "2025-06-23T19:10:33Z"
|
||||
"version": "v4.2.1",
|
||||
"date": "2025-06-03T20:04:28Z"
|
||||
},
|
||||
{
|
||||
"name": "VictoriaMetrics/VictoriaMetrics",
|
||||
"version": "pmm-6401-v1.120.0",
|
||||
"date": "2025-06-23T15:12:12Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "6.3.0-rc.2",
|
||||
"date": "2025-06-23T11:31:38Z"
|
||||
},
|
||||
{
|
||||
"name": "gotson/komga",
|
||||
"version": "1.22.0",
|
||||
@ -284,11 +449,6 @@
|
||||
"version": "2025.6.22",
|
||||
"date": "2025-06-22T22:41:11Z"
|
||||
},
|
||||
{
|
||||
"name": "qbittorrent/qBittorrent",
|
||||
"version": "release-5.1.1",
|
||||
"date": "2025-06-22T21:41:17Z"
|
||||
},
|
||||
{
|
||||
"name": "clusterzx/paperless-ai",
|
||||
"version": "v3.0.7",
|
||||
@ -304,36 +464,16 @@
|
||||
"version": "0.17.14",
|
||||
"date": "2025-06-21T23:43:04Z"
|
||||
},
|
||||
{
|
||||
"name": "HabitRPG/habitica",
|
||||
"version": "v5.37.0",
|
||||
"date": "2025-06-21T14:05:12Z"
|
||||
},
|
||||
{
|
||||
"name": "rogerfar/rdt-client",
|
||||
"version": "v2.0.114",
|
||||
"date": "2025-06-21T11:20:21Z"
|
||||
},
|
||||
{
|
||||
"name": "Luligu/matterbridge",
|
||||
"version": "3.0.7",
|
||||
"date": "2025-06-21T09:24:21Z"
|
||||
},
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v11.11.1",
|
||||
"date": "2025-06-21T09:23:39Z"
|
||||
},
|
||||
{
|
||||
"name": "pocketbase/pocketbase",
|
||||
"version": "v0.28.4",
|
||||
"date": "2025-06-21T08:29:04Z"
|
||||
},
|
||||
{
|
||||
"name": "dgtlmoon/changedetection.io",
|
||||
"version": "0.50.4",
|
||||
"date": "2025-06-21T07:47:02Z"
|
||||
},
|
||||
{
|
||||
"name": "go-gitea/gitea",
|
||||
"version": "v1.24.2",
|
||||
@ -349,11 +489,6 @@
|
||||
"version": "v4.0.15.2941",
|
||||
"date": "2025-06-20T17:20:54Z"
|
||||
},
|
||||
{
|
||||
"name": "syncthing/syncthing",
|
||||
"version": "2.0.0-rc.19",
|
||||
"date": "2025-06-02T17:56:25Z"
|
||||
},
|
||||
{
|
||||
"name": "benzino77/tasmocompiler",
|
||||
"version": "v12.7.0",
|
||||
@ -374,11 +509,6 @@
|
||||
"version": "2025.05.1",
|
||||
"date": "2025-06-19T11:28:36Z"
|
||||
},
|
||||
{
|
||||
"name": "redis/redis",
|
||||
"version": "8.2-m01-int2",
|
||||
"date": "2025-06-12T08:52:10Z"
|
||||
},
|
||||
{
|
||||
"name": "prometheus-pve/prometheus-pve-exporter",
|
||||
"version": "v3.5.5",
|
||||
@ -429,11 +559,6 @@
|
||||
"version": "2.0.0-pre3",
|
||||
"date": "2025-06-18T08:01:24Z"
|
||||
},
|
||||
{
|
||||
"name": "cross-seed/cross-seed",
|
||||
"version": "v6.12.7",
|
||||
"date": "2025-06-18T03:44:24Z"
|
||||
},
|
||||
{
|
||||
"name": "grafana/grafana",
|
||||
"version": "v11.5.6",
|
||||
@ -449,21 +574,11 @@
|
||||
"version": "v25.05.1",
|
||||
"date": "2025-06-17T14:38:04Z"
|
||||
},
|
||||
{
|
||||
"name": "cloudflare/cloudflared",
|
||||
"version": "2025.6.1",
|
||||
"date": "2025-06-17T12:45:39Z"
|
||||
},
|
||||
{
|
||||
"name": "crowdsecurity/crowdsec",
|
||||
"version": "v1.6.9",
|
||||
"date": "2025-06-17T11:54:50Z"
|
||||
},
|
||||
{
|
||||
"name": "glpi-project/glpi",
|
||||
"version": "10.0.18",
|
||||
"date": "2025-02-12T11:07:02Z"
|
||||
},
|
||||
{
|
||||
"name": "morpheus65535/bazarr",
|
||||
"version": "v1.5.2",
|
||||
@ -484,21 +599,11 @@
|
||||
"version": "2.36.1",
|
||||
"date": "2025-06-16T19:20:54Z"
|
||||
},
|
||||
{
|
||||
"name": "emqx/emqx",
|
||||
"version": "e5.9.1-alpha.1",
|
||||
"date": "2025-06-16T15:34:01Z"
|
||||
},
|
||||
{
|
||||
"name": "open-webui/open-webui",
|
||||
"version": "v0.6.15",
|
||||
"date": "2025-06-16T14:34:42Z"
|
||||
},
|
||||
{
|
||||
"name": "grokability/snipe-it",
|
||||
"version": "v8.1.16",
|
||||
"date": "2025-06-16T13:49:37Z"
|
||||
},
|
||||
{
|
||||
"name": "jellyfin/jellyfin",
|
||||
"version": "v10.10.7",
|
||||
@ -519,11 +624,6 @@
|
||||
"version": "cli/v0.25.0",
|
||||
"date": "2025-06-15T17:48:29Z"
|
||||
},
|
||||
{
|
||||
"name": "tobychui/zoraxy",
|
||||
"version": "v3.1.9",
|
||||
"date": "2025-03-01T02:24:33Z"
|
||||
},
|
||||
{
|
||||
"name": "Prowlarr/Prowlarr",
|
||||
"version": "v1.37.0.5076",
|
||||
@ -549,11 +649,6 @@
|
||||
"version": "v6.7.3",
|
||||
"date": "2025-06-15T05:46:17Z"
|
||||
},
|
||||
{
|
||||
"name": "hyperion-project/hyperion.ng",
|
||||
"version": "2.1.1",
|
||||
"date": "2025-06-14T17:45:06Z"
|
||||
},
|
||||
{
|
||||
"name": "advplyr/audiobookshelf",
|
||||
"version": "v2.25.1",
|
||||
@ -589,11 +684,6 @@
|
||||
"version": "v3.4.1",
|
||||
"date": "2025-06-11T07:53:44Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.15.0-rc2",
|
||||
"date": "2025-06-11T04:29:22Z"
|
||||
},
|
||||
{
|
||||
"name": "OctoPrint/OctoPrint",
|
||||
"version": "1.11.2",
|
||||
@ -639,11 +729,6 @@
|
||||
"version": "v1.10.0",
|
||||
"date": "2025-06-07T08:31:48Z"
|
||||
},
|
||||
{
|
||||
"name": "diced/zipline",
|
||||
"version": "v4.1.2",
|
||||
"date": "2025-06-06T17:44:58Z"
|
||||
},
|
||||
{
|
||||
"name": "ioBroker/ioBroker",
|
||||
"version": "2025-05-31",
|
||||
@ -654,11 +739,6 @@
|
||||
"version": "v0.26.1",
|
||||
"date": "2025-06-06T11:22:02Z"
|
||||
},
|
||||
{
|
||||
"name": "apache/tomcat",
|
||||
"version": "10.1.42",
|
||||
"date": "2025-06-05T22:39:40Z"
|
||||
},
|
||||
{
|
||||
"name": "benjaminjonard/koillection",
|
||||
"version": "1.6.14",
|
||||
@ -674,16 +754,6 @@
|
||||
"version": "mariadb-11.8.2",
|
||||
"date": "2025-06-04T13:35:16Z"
|
||||
},
|
||||
{
|
||||
"name": "actualbudget/actual",
|
||||
"version": "v25.6.1",
|
||||
"date": "2025-06-04T22:24:31Z"
|
||||
},
|
||||
{
|
||||
"name": "rabbitmq/rabbitmq-server",
|
||||
"version": "v4.1.1",
|
||||
"date": "2025-06-04T19:10:05Z"
|
||||
},
|
||||
{
|
||||
"name": "intri-in/manage-my-damn-life-nextjs",
|
||||
"version": "v0.7.1",
|
||||
@ -714,16 +784,6 @@
|
||||
"version": "v1.3.2",
|
||||
"date": "2025-06-01T19:02:46Z"
|
||||
},
|
||||
{
|
||||
"name": "Koenkk/zigbee2mqtt",
|
||||
"version": "2.4.0",
|
||||
"date": "2025-06-01T18:08:44Z"
|
||||
},
|
||||
{
|
||||
"name": "TwiN/gatus",
|
||||
"version": "v5.18.1",
|
||||
"date": "2025-05-31T23:06:08Z"
|
||||
},
|
||||
{
|
||||
"name": "blakeblackshear/frigate",
|
||||
"version": "v0.14.1",
|
||||
@ -739,11 +799,6 @@
|
||||
"version": "0.26.3",
|
||||
"date": "2025-05-29T21:18:15Z"
|
||||
},
|
||||
{
|
||||
"name": "navidrome/navidrome",
|
||||
"version": "v0.56.1",
|
||||
"date": "2025-05-29T19:09:16Z"
|
||||
},
|
||||
{
|
||||
"name": "readeck/readeck",
|
||||
"version": "0.19.2",
|
||||
@ -764,21 +819,11 @@
|
||||
"version": "v1.12.3",
|
||||
"date": "2025-05-27T20:43:10Z"
|
||||
},
|
||||
{
|
||||
"name": "Threadfin/Threadfin",
|
||||
"version": "1.2.34",
|
||||
"date": "2025-05-27T18:18:00Z"
|
||||
},
|
||||
{
|
||||
"name": "dani-garcia/vaultwarden",
|
||||
"version": "1.34.1",
|
||||
"date": "2025-05-26T21:40:54Z"
|
||||
},
|
||||
{
|
||||
"name": "jupyter/notebook",
|
||||
"version": "v7.4.3",
|
||||
"date": "2025-05-26T14:27:27Z"
|
||||
},
|
||||
{
|
||||
"name": "stonith404/pingvin-share",
|
||||
"version": "v1.13.0",
|
||||
@ -859,11 +904,6 @@
|
||||
"version": "v2.18.1",
|
||||
"date": "2025-05-12T07:16:12Z"
|
||||
},
|
||||
{
|
||||
"name": "outline/outline",
|
||||
"version": "v0.84.0",
|
||||
"date": "2025-05-11T15:50:48Z"
|
||||
},
|
||||
{
|
||||
"name": "owncast/owncast",
|
||||
"version": "v0.2.3",
|
||||
@ -889,11 +929,6 @@
|
||||
"version": "2025-05-07-r1",
|
||||
"date": "2025-05-07T12:18:42Z"
|
||||
},
|
||||
{
|
||||
"name": "sysadminsmedia/homebox",
|
||||
"version": "v0.19.0",
|
||||
"date": "2025-05-06T18:05:42Z"
|
||||
},
|
||||
{
|
||||
"name": "garethgeorge/backrest",
|
||||
"version": "v1.8.1",
|
||||
@ -914,26 +949,11 @@
|
||||
"version": "v1.13.5",
|
||||
"date": "2025-05-03T09:48:44Z"
|
||||
},
|
||||
{
|
||||
"name": "jhuckaby/Cronicle",
|
||||
"version": "v0.9.80",
|
||||
"date": "2025-05-02T16:48:15Z"
|
||||
},
|
||||
{
|
||||
"name": "WordPress/WordPress",
|
||||
"version": "6.8.1",
|
||||
"date": "2025-04-30T16:44:16Z"
|
||||
},
|
||||
{
|
||||
"name": "hivemq/hivemq-community-edition",
|
||||
"version": "2025.3",
|
||||
"date": "2025-04-30T02:52:28Z"
|
||||
},
|
||||
{
|
||||
"name": "hargata/lubelog",
|
||||
"version": "v1.4.7",
|
||||
"date": "2025-04-29T15:00:18Z"
|
||||
},
|
||||
{
|
||||
"name": "henrygd/beszel",
|
||||
"version": "v0.11.1",
|
||||
@ -1034,11 +1054,6 @@
|
||||
"version": "2.3",
|
||||
"date": "2025-04-05T18:05:36Z"
|
||||
},
|
||||
{
|
||||
"name": "MagicMirrorOrg/MagicMirror",
|
||||
"version": "v2.31.0",
|
||||
"date": "2025-04-01T18:12:45Z"
|
||||
},
|
||||
{
|
||||
"name": "Kometa-Team/Kometa",
|
||||
"version": "v2.2.0",
|
||||
@ -1179,11 +1194,6 @@
|
||||
"version": "v2.7.1",
|
||||
"date": "2025-02-22T01:14:41Z"
|
||||
},
|
||||
{
|
||||
"name": "typesense/typesense",
|
||||
"version": "v28.0",
|
||||
"date": "2025-02-18T15:49:57Z"
|
||||
},
|
||||
{
|
||||
"name": "recyclarr/recyclarr",
|
||||
"version": "v7.4.1",
|
||||
@ -1204,16 +1214,6 @@
|
||||
"version": "v25.2.1",
|
||||
"date": "2025-02-06T20:41:28Z"
|
||||
},
|
||||
{
|
||||
"name": "NginxProxyManager/nginx-proxy-manager",
|
||||
"version": "v2.12.3",
|
||||
"date": "2025-02-06T11:07:07Z"
|
||||
},
|
||||
{
|
||||
"name": "PrivateBin/PrivateBin",
|
||||
"version": "1.7.6",
|
||||
"date": "2025-02-01T09:50:52Z"
|
||||
},
|
||||
{
|
||||
"name": "AmruthPillai/Reactive-Resume",
|
||||
"version": "v4.4.4",
|
||||
|
2
frontend/public/json/zigbee2mqtt.json
generated
2
frontend/public/json/zigbee2mqtt.json
generated
@ -21,7 +21,7 @@
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"hdd": 5,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -1,148 +0,0 @@
|
||||
import { Info } from "lucide-react";
|
||||
|
||||
import type { Script } from "@/lib/types";
|
||||
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
||||
import { Alert, AlertDescription } from "@/components/ui/alert";
|
||||
import CodeCopyButton from "@/components/ui/code-copy-button";
|
||||
import { basePath } from "@/config/site-config";
|
||||
|
||||
import { getDisplayValueFromType } from "../script-info-blocks";
|
||||
|
||||
function getInstallCommand(scriptPath = "", isAlpine = false, useGitea = false) {
|
||||
const githubUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main/${scriptPath}`;
|
||||
const giteaUrl = `https://git.community-scripts.org/community-scripts/${basePath}/raw/branch/main/${scriptPath}`;
|
||||
const url = useGitea ? giteaUrl : githubUrl;
|
||||
return isAlpine ? `bash -c "$(curl -fsSL ${url})"` : `bash -c "$(curl -fsSL ${url})"`;
|
||||
}
|
||||
export default function InstallCommand({ item }: { item: Script }) {
|
||||
const alpineScript = item.install_methods.find(method => method.type === "alpine");
|
||||
const defaultScript = item.install_methods.find(method => method.type === "default");
|
||||
|
||||
const renderInstructions = (isAlpine = false) => (
|
||||
<>
|
||||
<p className="text-sm mt-2">
|
||||
{isAlpine
|
||||
? (
|
||||
<>
|
||||
As an alternative option, you can use Alpine Linux and the
|
||||
{" "}
|
||||
{item.name}
|
||||
{" "}
|
||||
package to create a
|
||||
{" "}
|
||||
{item.name}
|
||||
{" "}
|
||||
{getDisplayValueFromType(item.type)}
|
||||
{" "}
|
||||
container with faster creation time and minimal system resource usage.
|
||||
You are also obliged to adhere to updates provided by the package maintainer.
|
||||
</>
|
||||
)
|
||||
: item.type === "pve"
|
||||
? (
|
||||
<>
|
||||
To use the
|
||||
{" "}
|
||||
{item.name}
|
||||
{" "}
|
||||
script, run the command below **only** in the Proxmox VE Shell. This script is
|
||||
intended for managing or enhancing the host system directly.
|
||||
</>
|
||||
)
|
||||
: item.type === "addon"
|
||||
? (
|
||||
<>
|
||||
This script enhances an existing setup. You can use it inside a running LXC container or directly on the
|
||||
Proxmox VE host to extend functionality with
|
||||
{" "}
|
||||
{item.name}
|
||||
.
|
||||
</>
|
||||
)
|
||||
: (
|
||||
<>
|
||||
To create a new Proxmox VE
|
||||
{" "}
|
||||
{item.name}
|
||||
{" "}
|
||||
{getDisplayValueFromType(item.type)}
|
||||
, run the command below in the
|
||||
Proxmox VE Shell.
|
||||
</>
|
||||
)}
|
||||
</p>
|
||||
{isAlpine && (
|
||||
<p className="mt-2 text-sm">
|
||||
To create a new Proxmox VE Alpine-
|
||||
{item.name}
|
||||
{" "}
|
||||
{getDisplayValueFromType(item.type)}
|
||||
, run the command below in
|
||||
the Proxmox VE Shell.
|
||||
</p>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
|
||||
const renderGiteaInfo = () => (
|
||||
<Alert className="mt-3 mb-3">
|
||||
<Info className="h-4 w-4" />
|
||||
<AlertDescription className="text-sm">
|
||||
<strong>When to use Gitea:</strong>
|
||||
{" "}
|
||||
GitHub may have issues including slow connections, delayed updates after bug
|
||||
fixes, no IPv6 support, API rate limits (60/hour). Use our Gitea mirror as a reliable alternative when
|
||||
experiencing these issues.
|
||||
</AlertDescription>
|
||||
</Alert>
|
||||
);
|
||||
|
||||
const renderScriptTabs = (useGitea = false) => {
|
||||
if (alpineScript) {
|
||||
return (
|
||||
<Tabs defaultValue="default" className="mt-2 w-full max-w-4xl">
|
||||
<TabsList>
|
||||
<TabsTrigger value="default">Default</TabsTrigger>
|
||||
<TabsTrigger value="alpine">Alpine Linux</TabsTrigger>
|
||||
</TabsList>
|
||||
<TabsContent value="default">
|
||||
{renderInstructions()}
|
||||
<CodeCopyButton>{getInstallCommand(defaultScript?.script, false, useGitea)}</CodeCopyButton>
|
||||
</TabsContent>
|
||||
<TabsContent value="alpine">
|
||||
{renderInstructions(true)}
|
||||
<CodeCopyButton>{getInstallCommand(alpineScript.script, true, useGitea)}</CodeCopyButton>
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
);
|
||||
}
|
||||
else if (defaultScript?.script) {
|
||||
return (
|
||||
<>
|
||||
{renderInstructions()}
|
||||
<CodeCopyButton>{getInstallCommand(defaultScript.script, false, useGitea)}</CodeCopyButton>
|
||||
</>
|
||||
);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="p-4">
|
||||
<Tabs defaultValue="github" className="w-full max-w-4xl">
|
||||
<TabsList>
|
||||
<TabsTrigger value="github">GitHub</TabsTrigger>
|
||||
<TabsTrigger value="gitea">Gitea</TabsTrigger>
|
||||
</TabsList>
|
||||
<TabsContent value="github">
|
||||
{renderScriptTabs(false)}
|
||||
</TabsContent>
|
||||
<TabsContent value="gitea">
|
||||
{renderGiteaInfo()}
|
||||
{renderScriptTabs(true)}
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
</div>
|
||||
);
|
||||
}
|
@ -61,6 +61,7 @@ function ScriptHeader({ item }: { item: Script }) {
|
||||
<div className="mt-1 flex items-center gap-3 text-sm text-muted-foreground">
|
||||
<span>
|
||||
Added
|
||||
{" "}
|
||||
{extractDate(item.date_created)}
|
||||
</span>
|
||||
<span>•</span>
|
||||
|
@ -39,7 +39,7 @@ export default function Tooltips({ item }: { item: Script }) {
|
||||
{item.privileged && (
|
||||
<TooltipBadge variant="warning" label="Privileged" content="This script will be run in a privileged LXC" />
|
||||
)}
|
||||
{(item.updateable || item.type !== "pve") && (
|
||||
{item.updateable && item.type !== "pve" && (
|
||||
<TooltipBadge
|
||||
variant="success"
|
||||
label="Updateable"
|
||||
|
@ -28,8 +28,7 @@ msg_ok "Enabled Docker Service"
|
||||
|
||||
echo "${TAB3}Choose the database for Komodo installation:"
|
||||
echo "${TAB3}1) MongoDB (recommended)"
|
||||
echo "${TAB3}2) SQLite"
|
||||
echo "${TAB3}3) PostgreSQL"
|
||||
echo "${TAB3}2) FerretDB"
|
||||
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
|
||||
DB_CHOICE=${DB_CHOICE:-1}
|
||||
|
||||
@ -38,10 +37,7 @@ case $DB_CHOICE in
|
||||
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||
;;
|
||||
2)
|
||||
DB_COMPOSE_FILE="sqlite.compose.yaml"
|
||||
;;
|
||||
3)
|
||||
DB_COMPOSE_FILE="postgres.compose.yaml"
|
||||
DB_COMPOSE_FILE="ferretdb.compose.yaml"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice. Defaulting to MongoDB."
|
||||
|
30
install/alpine-syncthing-install.sh
Normal file
30
install/alpine-syncthing-install.sh
Normal file
@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://syncthing.net/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setup Syncthing"
|
||||
$STD apk add --no-cache syncthing
|
||||
sed -i "{s/127.0.0.1:8384/0.0.0.0:8384/g}" /var/lib/syncthing/.local/state/syncthing/config.xml
|
||||
msg_ok "Setup Syncthing"
|
||||
|
||||
msg_info "Enabling Syncthing Service"
|
||||
$STD rc-update add syncthing default
|
||||
msg_ok "Enabled Syncthing Service"
|
||||
|
||||
msg_info "Starting Syncthing"
|
||||
$STD rc-service syncthing start
|
||||
msg_ok "Started Syncthing"
|
||||
|
||||
motd_ssh
|
||||
customize
|
@ -64,12 +64,12 @@ $STD ldconfig
|
||||
RELEASE_CLIENT=$(curl -fsSL https://api.github.com/repos/apache/guacamole-client/tags | jq -r '.[].name' | grep -v -- '-RC' | head -n 1)
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${RELEASE_CLIENT}/binary/guacamole-${RELEASE_CLIENT}.war" -o "/opt/apache-guacamole/tomcat9/webapps/guacamole.war"
|
||||
cd /root
|
||||
curl -fsSL "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz" -o "/root/mysql-connector-java-8.0.26.tar.gz"
|
||||
$STD tar -xf ~/mysql-connector-java-8.0.26.tar.gz
|
||||
mv ~/mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar /etc/guacamole/lib/
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-auth-jdbc-1.5.5.tar.gz" -o "/root/guacamole-auth-jdbc-1.5.5.tar.gz"
|
||||
$STD tar -xf ~/guacamole-auth-jdbc-1.5.5.tar.gz
|
||||
mv ~/guacamole-auth-jdbc-1.5.5/mysql/guacamole-auth-jdbc-mysql-1.5.5.jar /etc/guacamole/extensions/
|
||||
curl -fsSL "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-9.3.0.tar.gz" -o "/root/mysql-connector-j-9.3.0.tar.gz"
|
||||
$STD tar -xf ~/mysql-connector-j-9.3.0.tar.gz
|
||||
mv ~/mysql-connector-j-9.3.0/mysql-connector-j-9.3.0.jar /etc/guacamole/lib/
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${RELEASE_SERVER}/binary/guacamole-auth-jdbc-${RELEASE_SERVER}.tar.gz" -o "/root/guacamole-auth-jdbc-${RELEASE_SERVER}.tar.gz"
|
||||
$STD tar -xf ~/guacamole-auth-jdbc-$RELEASE_SERVER.tar.gz
|
||||
mv ~/guacamole-auth-jdbc-$RELEASE_SERVER/mysql/guacamole-auth-jdbc-mysql-$RELEASE_SERVER.jar /etc/guacamole/extensions/
|
||||
msg_ok "Setup Apache Guacamole"
|
||||
|
||||
msg_info "Setup Database"
|
||||
@ -85,7 +85,7 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
|
||||
echo "Database Password: $DB_PASS"
|
||||
echo "Database Name: $DB_NAME"
|
||||
} >>~/guacamole.creds
|
||||
cd guacamole-auth-jdbc-1.5.5/mysql/schema
|
||||
cd guacamole-auth-jdbc-${RELEASE_SERVER}/mysql/schema
|
||||
cat *.sql | mariadb -u root ${DB_NAME}
|
||||
{
|
||||
echo "mysql-hostname: 127.0.0.1"
|
||||
@ -147,8 +147,8 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf ~/mysql-connector-java-8.0.26{,.tar.gz}
|
||||
rm -rf ~/guacamole-auth-jdbc-1.5.5{,.tar.gz}
|
||||
rm -rf ~/mysql-connector-j-9.3.0{,.tar.gz}
|
||||
rm -rf ~/guacamole-auth-jdbc-$RELEASE_SERVER{,.tar.gz}
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -116,7 +116,7 @@ Wants=browserless.service
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/changedetection
|
||||
Environment=WEBDRIVER_URL=http://127.0.0.1:4444/wd/hub
|
||||
Environment=PLAYWRIGHT_DRIVER_URL=ws://localhost:3000/chrome?launch={"defaultViewport":{"height":720,"width":1280},"headless":false,"stealth":true}&blockAds=true
|
||||
Environment=PLAYWRIGHT_DRIVER_URL=ws://localhost:3000/chrome?launch=eyJkZWZhdWx0Vmlld3BvcnQiOnsiaGVpZ2h0Ijo3MjAsIndpZHRoIjoxMjgwfSwiaGVhZGxlc3MiOmZhbHNlLCJzdGVhbHRoIjp0cnVlfQ==&blockAds=true
|
||||
ExecStart=changedetection.io -d /opt/changedetection -p 5000
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
@ -15,16 +15,15 @@ update_os
|
||||
|
||||
setup_go
|
||||
|
||||
msg_info "Configure Application"
|
||||
var_cf_api_token="default"
|
||||
read -rp "Enter the Cloudflare API token: " var_cf_api_token
|
||||
read -rp "${TAB3}Enter the Cloudflare API token: " var_cf_api_token
|
||||
|
||||
var_cf_domains="default"
|
||||
read -rp "Enter the domains separated with a comma (*.example.org,www.example.org) " var_cf_domains
|
||||
read -rp "${TAB3}Enter the domains separated with a comma (*.example.org,www.example.org) " var_cf_domains
|
||||
|
||||
var_cf_proxied="false"
|
||||
while true; do
|
||||
read -rp "Proxied? (y/n): " answer
|
||||
read -rp "${TAB3}Proxied? (y/n): " answer
|
||||
case "$answer" in
|
||||
[Yy]*)
|
||||
var_cf_proxied="true"
|
||||
@ -39,7 +38,7 @@ while true; do
|
||||
done
|
||||
var_cf_ip6_provider="none"
|
||||
while true; do
|
||||
read -rp "Enable IPv6 support? (y/n): " answer
|
||||
read -rp "${TAB3}Enable IPv6 support? (y/n): " answer
|
||||
case "$answer" in
|
||||
[Yy]*)
|
||||
var_cf_ip6_provider="auto"
|
||||
|
@ -76,6 +76,7 @@ source /opt/homarr/.env
|
||||
set +a
|
||||
export DB_DIALECT='sqlite'
|
||||
export AUTH_SECRET=$(openssl rand -base64 32)
|
||||
export CRON_JOB_API_KEY=$(openssl rand -base64 32)
|
||||
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
|
||||
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
|
||||
dirname=$(basename "$dir")
|
||||
|
@ -84,6 +84,13 @@ $STD apt-get update
|
||||
$STD apt-get install -y jellyfin-ffmpeg7
|
||||
ln -s /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/bin/ffmpeg
|
||||
ln -s /usr/lib/jellyfin-ffmpeg/ffprobe /usr/bin/ffprobe
|
||||
if [[ "$CTTYPE" == "0" ]]; then
|
||||
chgrp video /dev/dri
|
||||
chmod 755 /dev/dri
|
||||
chmod 660 /dev/dri/*
|
||||
$STD adduser "$(id -u -n)" video
|
||||
$STD adduser "$(id -u -n)" render
|
||||
fi
|
||||
msg_ok "Dependencies Installed"
|
||||
|
||||
read -r -p "Install OpenVINO dependencies for Intel HW-accelerated machine-learning? y/N " prompt
|
||||
@ -100,13 +107,6 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
$STD popd
|
||||
rm -rf "$tmp_dir"
|
||||
dpkg -l | grep "intel-opencl-icd" | awk '{print $3}' >~/.intel_version
|
||||
if [[ "$CTTYPE" == "0" ]]; then
|
||||
chgrp video /dev/dri
|
||||
chmod 755 /dev/dri
|
||||
chmod 660 /dev/dri/*
|
||||
$STD adduser "$(id -u -n)" video
|
||||
$STD adduser "$(id -u -n)" render
|
||||
fi
|
||||
msg_ok "Installed OpenVINO dependencies"
|
||||
fi
|
||||
|
||||
@ -360,9 +360,8 @@ msg_ok "Installed ${APPLICATION}"
|
||||
|
||||
msg_info "Creating user, env file, scripts & services"
|
||||
$STD useradd -U -s /usr/sbin/nologin -r -M -d "$INSTALL_DIR" immich
|
||||
if [[ -f ~/.openvino ]]; then
|
||||
usermod -aG video,render immich
|
||||
fi
|
||||
usermod -aG video,render immich
|
||||
|
||||
cat <<EOF >"${INSTALL_DIR}"/.env
|
||||
TZ=$(cat /etc/timezone)
|
||||
IMMICH_VERSION=release
|
||||
|
68
install/itsm-ng-install.sh
Normal file
68
install/itsm-ng-install.sh
Normal file
@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Florianb63
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://itsm-ng.com/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
setup_mariadb
|
||||
|
||||
msg_info "Setting up database"
|
||||
DB_NAME=itsmng_db
|
||||
DB_USER=itsmng
|
||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb mysql
|
||||
mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||
mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||
mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
|
||||
mariadb -u root -e "GRANT SELECT ON \`mysql\`.\`time_zone_name\` TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||
{
|
||||
echo "ITSM-NG Database Credentials"
|
||||
echo "Database: $DB_NAME"
|
||||
echo "Username: $DB_USER"
|
||||
echo "Password: $DB_PASS"
|
||||
} >>~/itsmng_db.creds
|
||||
msg_ok "Set up database"
|
||||
|
||||
msg_info "Setup ITSM-NG Repository"
|
||||
curl -fsSL http://deb.itsm-ng.org/pubkey.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/itsm-ng-keyring.gpg
|
||||
echo "deb http://deb.itsm-ng.org/$(. /etc/os-release && echo "$ID")/ $(. /etc/os-release && echo "$VERSION_CODENAME") main" >/etc/apt/sources.list.d/itsm-ng.list
|
||||
$STD apt-get update
|
||||
msg_ok "Setup ITSM-NG Repository"
|
||||
|
||||
msg_info "Installing ITSM-NG"
|
||||
$STD apt install -y itsm-ng
|
||||
cd /usr/share/itsm-ng
|
||||
$STD php bin/console db:install --db-name=$DB_NAME --db-user=$DB_USER --db-password=$DB_PASS --no-interaction
|
||||
$STD a2dissite 000-default.conf
|
||||
echo "* * * * * php /usr/share/itsm-ng/front/cron.php" | crontab -
|
||||
msg_ok "Installed ITSM-NG"
|
||||
|
||||
msg_info "Configuring PHP"
|
||||
PHP_VERSION=$(ls /etc/php/ | grep -E '^[0-9]+\.[0-9]+$' | head -n 1)
|
||||
PHP_INI="/etc/php/$PHP_VERSION/apache2/php.ini"
|
||||
sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 20M/' $PHP_INI
|
||||
sed -i 's/^post_max_size = .*/post_max_size = 20M/' $PHP_INI
|
||||
sed -i 's/^max_execution_time = .*/max_execution_time = 60/' $PHP_INI
|
||||
sed -i 's/^[;]*max_input_vars *=.*/max_input_vars = 5000/' "$PHP_INI"
|
||||
sed -i 's/^memory_limit = .*/memory_limit = 256M/' $PHP_INI
|
||||
sed -i 's/^;\?\s*session.cookie_httponly\s*=.*/session.cookie_httponly = On/' $PHP_INI
|
||||
systemctl restart apache2
|
||||
msg_ok "Configured PHP"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /usr/share/itsm-ng/install
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
54
install/kapowarr-install.sh
Normal file
54
install/kapowarr-install.sh
Normal file
@ -0,0 +1,54 @@
|
||||
#!/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://github.com/Casvt/Kapowarr
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y python3-pip
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
setup_uv
|
||||
fetch_and_deploy_gh_release "kapowarr" "Casvt/Kapowarr"
|
||||
|
||||
msg_info "Setup Kapowarr"
|
||||
cd /opt/kapowarr
|
||||
$STD uv venv .venv
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install --upgrade pip
|
||||
$STD uv pip install --no-cache-dir -r requirements.txt
|
||||
msg_ok "Installed Kapowarr"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/kapowarr.service
|
||||
[Unit]
|
||||
Description=Kapowarr Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/kapowarr/
|
||||
ExecStart=/opt/kapowarr/.venv/bin/python3 Kapowarr.py
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now kapowarr
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
@ -39,8 +39,7 @@ msg_ok "Installed Docker"
|
||||
|
||||
echo "${TAB3}Choose the database for Komodo installation:"
|
||||
echo "${TAB3}1) MongoDB (recommended)"
|
||||
echo "${TAB3}2) SQLite"
|
||||
echo "${TAB3}3) PostgreSQL"
|
||||
echo "${TAB3}2) FerretDB"
|
||||
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
|
||||
DB_CHOICE=${DB_CHOICE:-1}
|
||||
|
||||
@ -49,10 +48,7 @@ case $DB_CHOICE in
|
||||
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||
;;
|
||||
2)
|
||||
DB_COMPOSE_FILE="sqlite.compose.yaml"
|
||||
;;
|
||||
3)
|
||||
DB_COMPOSE_FILE="postgres.compose.yaml"
|
||||
DB_COMPOSE_FILE="ferretdb.compose.yaml"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice. Defaulting to MongoDB."
|
||||
|
28
install/librespeed-rust-install.sh
Normal file
28
install/librespeed-rust-install.sh
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Joseph Stubberfield (stubbers)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/librespeed/speedtest-rust
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
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"
|
||||
|
||||
msg_info "Enabling Service"
|
||||
systemctl enable -q --now speedtest_rs.service
|
||||
msg_ok "Enabled Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
@ -62,6 +62,9 @@ msg_info "Preconfiguring ONLYOFFICE Debconf Settings"
|
||||
RMQ_USER=onlyoffice_rmq
|
||||
RMQ_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||
JWT_SECRET=$(openssl rand -hex 16)
|
||||
$STD rabbitmqctl add_user $RMQ_USER $RMQ_PASS
|
||||
$STD rabbitmqctl set_permissions -p / $RMQ_USER ".*" ".*" ".*"
|
||||
$STD rabbitmqctl set_user_tags $RMQ_USER administrator
|
||||
|
||||
echo onlyoffice-documentserver onlyoffice/db-host string localhost | debconf-set-selections
|
||||
echo onlyoffice-documentserver onlyoffice/db-user string $DB_USER | debconf-set-selections
|
||||
|
@ -3,7 +3,7 @@
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://triliumnext.github.io/Docs/
|
||||
# Source: https://github.com/TriliumNext/Trilium
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
@ -13,14 +13,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setup TriliumNext"
|
||||
cd /opt
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/TriliumNext/trilium/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/TriliumNext/trilium/releases/download/v${RELEASE}/TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz" -o "TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz"
|
||||
tar -xf TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz
|
||||
mv TriliumNextNotes-Server-$RELEASE-linux-x64 /opt/trilium
|
||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
msg_ok "Setup TriliumNext"
|
||||
fetch_and_deploy_gh_release "Trilium" "TriliumNext/Trilium" "prebuild" "latest" "/opt/trilium" "TriliumNotes-Server-*linux-x64.tar.xz"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/trilium.service
|
||||
@ -46,7 +39,6 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/TriliumNextNotes-Server-${RELEASE}-linux-x64.tar.xz
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -22,7 +22,6 @@ NODE_VERSION="22" setup_nodejs
|
||||
|
||||
msg_info "Installing Uptime Kuma"
|
||||
$STD git clone https://github.com/louislam/uptime-kuma.git
|
||||
mv uptime-kuma /opt/uptime-kuma
|
||||
cd /opt/uptime-kuma
|
||||
$STD npm run setup
|
||||
msg_ok "Installed Uptime Kuma"
|
||||
|
@ -19,17 +19,15 @@ $STD apt-get install -y \
|
||||
make \
|
||||
g++ \
|
||||
gcc \
|
||||
ca-certificates
|
||||
ca-certificates \
|
||||
jq
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm@$(curl -fsSL https://raw.githubusercontent.com/Koenkk/zigbee2mqtt/master/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "Zigbee2MQTT" "Koenkk/zigbee2mqtt" "tarball" "latest" "/opt/zigbee2mqtt"
|
||||
|
||||
msg_info "Setting up Zigbee2MQTT"
|
||||
cd /opt
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Koenkk/zigbee2mqtt/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
curl -fsSL "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip" -o "${RELEASE}.zip"
|
||||
$STD unzip ${RELEASE}.zip
|
||||
mv zigbee2mqtt-${RELEASE} /opt/zigbee2mqtt
|
||||
cd /opt/zigbee2mqtt/data
|
||||
mv configuration.example.yaml configuration.yaml
|
||||
cd /opt/zigbee2mqtt
|
||||
@ -60,7 +58,6 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/${RELEASE}.zip
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -50,9 +50,9 @@ CORE_HOSTNAME=0.0.0.0
|
||||
CORE_PORT=3000
|
||||
CORE_RETURN_HTTPS=false
|
||||
DATASOURCE_TYPE=local
|
||||
DATASOURCE_LOCAL_DIRECTORY=/opt/zipline-upload
|
||||
DATASOURCE_LOCAL_DIRECTORY=/opt/zipline-uploads
|
||||
EOF
|
||||
mkdir -p /opt/zipline-upload
|
||||
mkdir -p /opt/zipline-uploads
|
||||
$STD pnpm install
|
||||
$STD pnpm build
|
||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
|
@ -30,7 +30,7 @@ post_to_api() {
|
||||
"ram_size": $RAM_SIZE,
|
||||
"os_type": "$var_os",
|
||||
"os_version": "$var_version",
|
||||
"disableip6": "$DISABLEIP6",
|
||||
"disableip6": "",
|
||||
"nsapp": "$NSAPP",
|
||||
"method": "$METHOD",
|
||||
"pve_version": "$pve_version",
|
||||
|
185
misc/build.func
185
misc/build.func
@ -20,11 +20,9 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
load_functions
|
||||
#echo "(build.func) Loaded core.func via curl"
|
||||
elif command -v wget >/dev/null 2>&1; then
|
||||
source <(wget -qO- https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
load_functions
|
||||
#echo "(build.func) Loaded core.func via wget"
|
||||
fi
|
||||
# This function enables error handling in the script by setting options and defining a trap for the ERR signal.
|
||||
catch_errors() {
|
||||
@ -189,10 +187,12 @@ base_settings() {
|
||||
HN=$NSAPP
|
||||
BRG="vmbr0"
|
||||
NET="dhcp"
|
||||
IPV6_METHOD="none"
|
||||
IPV6_STATIC=""
|
||||
GATE=""
|
||||
APT_CACHER=""
|
||||
APT_CACHER_IP=""
|
||||
DISABLEIP6="no"
|
||||
#DISABLEIP6="no"
|
||||
MTU=""
|
||||
SD=""
|
||||
NS=""
|
||||
@ -239,7 +239,7 @@ RAM_SIZE="${RAM_SIZE}"
|
||||
HN="${HN}"
|
||||
BRG="${BRG}"
|
||||
APT_CACHER_IP="${APT_CACHER_IP:-none}"
|
||||
DISABLEIP6="${DISABLEIP6}"
|
||||
DISABLEIP6=""
|
||||
PW='${PW:-none}'
|
||||
SSH="${SSH}"
|
||||
SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}"
|
||||
@ -271,7 +271,7 @@ RAM_SIZE="${RAM_SIZE}"
|
||||
HN="${HN}"
|
||||
BRG="${BRG}"
|
||||
APT_CACHER_IP="${APT_CACHER_IP:-none}"
|
||||
DISABLEIP6="${DISABLEIP6}"
|
||||
DISABLEIP6=""
|
||||
PW='${PW:-none}'
|
||||
SSH="${SSH}"
|
||||
SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}"
|
||||
@ -531,43 +531,130 @@ advanced_settings() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# IPv4 methods: dhcp, static, none
|
||||
while true; do
|
||||
NET=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Static IPv4 CIDR Address (/24)" 8 58 dhcp --title "IP ADDRESS" 3>&1 1>&2 2>&3)
|
||||
IPV4_METHOD=$(whiptail --backtitle "Proxmox VE Helper Scripts" \
|
||||
--title "IPv4 Address Management" \
|
||||
--menu "Select IPv4 Address Assignment Method:" 12 60 2 \
|
||||
"dhcp" "Automatic (DHCP, recommended)" \
|
||||
"static" "Static (manual entry)" \
|
||||
3>&1 1>&2 2>&3)
|
||||
|
||||
exit_status=$?
|
||||
if [ $exit_status -eq 0 ]; then
|
||||
if [ "$NET" = "dhcp" ]; then
|
||||
echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}"
|
||||
break
|
||||
else
|
||||
if [[ "$NET" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[1-2][0-9]|3[0-2])$ ]]; then
|
||||
echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}"
|
||||
break
|
||||
else
|
||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox "$NET is an invalid IPv4 CIDR address. Please enter a valid IPv4 CIDR address or 'dhcp'" 8 58
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if [ $exit_status -ne 0 ]; then
|
||||
exit_script
|
||||
fi
|
||||
|
||||
case "$IPV4_METHOD" in
|
||||
dhcp)
|
||||
NET="dhcp"
|
||||
GATE=""
|
||||
echo -e "${NETWORK}${BOLD}${DGN}IPv4: DHCP${CL}"
|
||||
break
|
||||
;;
|
||||
static)
|
||||
# Static: call and validate CIDR address
|
||||
while true; do
|
||||
NET=$(whiptail --backtitle "Proxmox VE Helper Scripts" \
|
||||
--inputbox "Enter Static IPv4 CIDR Address (e.g. 192.168.100.50/24)" 8 58 "" \
|
||||
--title "IPv4 ADDRESS" 3>&1 1>&2 2>&3)
|
||||
if [ -z "$NET" ]; then
|
||||
whiptail --msgbox "IPv4 address must not be empty." 8 58
|
||||
continue
|
||||
elif [[ "$NET" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[1-2][0-9]|3[0-2])$ ]]; then
|
||||
echo -e "${NETWORK}${BOLD}${DGN}IPv4 Address: ${BGN}$NET${CL}"
|
||||
break
|
||||
else
|
||||
whiptail --msgbox "$NET is not a valid IPv4 CIDR address. Please enter a correct value!" 8 58
|
||||
fi
|
||||
done
|
||||
|
||||
# call and validate Gateway
|
||||
while true; do
|
||||
GATE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" \
|
||||
--inputbox "Enter Gateway IP address for static IPv4" 8 58 "" \
|
||||
--title "Gateway IP" 3>&1 1>&2 2>&3)
|
||||
if [ -z "$GATE1" ]; then
|
||||
whiptail --msgbox "Gateway IP address cannot be empty." 8 58
|
||||
elif [[ ! "$GATE1" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
|
||||
whiptail --msgbox "Invalid Gateway IP address format." 8 58
|
||||
else
|
||||
GATE=",gw=$GATE1"
|
||||
echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}$GATE1${CL}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$NET" != "dhcp" ]; then
|
||||
while true; do
|
||||
GATE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Enter gateway IP address" 8 58 --title "Gateway IP" 3>&1 1>&2 2>&3)
|
||||
if [ -z "$GATE1" ]; then
|
||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox "Gateway IP address cannot be empty" 8 58
|
||||
elif [[ ! "$GATE1" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
|
||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox "Invalid IP address format" 8 58
|
||||
else
|
||||
GATE=",gw=$GATE1"
|
||||
echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}$GATE1${CL}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
else
|
||||
GATE=""
|
||||
echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}Default${CL}"
|
||||
fi
|
||||
# IPv6 Address Management selection
|
||||
while true; do
|
||||
IPV6_METHOD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --menu \
|
||||
"Select IPv6 Address Management Type:" 15 58 4 \
|
||||
"auto" "SLAAC/AUTO (recommended, default)" \
|
||||
"dhcp" "DHCPv6" \
|
||||
"static" "Static (manual entry)" \
|
||||
"none" "Disabled" \
|
||||
--default-item "auto" 3>&1 1>&2 2>&3)
|
||||
[ $? -ne 0 ] && exit_script
|
||||
|
||||
case "$IPV6_METHOD" in
|
||||
auto)
|
||||
echo -e "${NETWORK}${BOLD}${DGN}IPv6: ${BGN}SLAAC/AUTO${CL}"
|
||||
IPV6_ADDR=""
|
||||
IPV6_GATE=""
|
||||
break
|
||||
;;
|
||||
dhcp)
|
||||
echo -e "${NETWORK}${BOLD}${DGN}IPv6: ${BGN}DHCPv6${CL}"
|
||||
IPV6_ADDR="dhcp"
|
||||
IPV6_GATE=""
|
||||
break
|
||||
;;
|
||||
static)
|
||||
# Ask for static IPv6 address (CIDR notation, e.g., 2001:db8::1234/64)
|
||||
while true; do
|
||||
IPV6_ADDR=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox \
|
||||
"Set a static IPv6 CIDR address (e.g., 2001:db8::1234/64)" 8 58 "" \
|
||||
--title "IPv6 STATIC ADDRESS" 3>&1 1>&2 2>&3) || exit_script
|
||||
if [[ "$IPV6_ADDR" =~ ^([0-9a-fA-F:]+:+)+[0-9a-fA-F]+(/[0-9]{1,3})$ ]]; then
|
||||
echo -e "${NETWORK}${BOLD}${DGN}IPv6 Address: ${BGN}$IPV6_ADDR${CL}"
|
||||
break
|
||||
else
|
||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox \
|
||||
"$IPV6_ADDR is an invalid IPv6 CIDR address. Please enter a valid IPv6 CIDR address (e.g., 2001:db8::1234/64)" 8 58
|
||||
fi
|
||||
done
|
||||
# Optional: ask for IPv6 gateway for static config
|
||||
while true; do
|
||||
IPV6_GATE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox \
|
||||
"Enter IPv6 gateway address (optional, leave blank for none)" 8 58 "" --title "IPv6 GATEWAY" 3>&1 1>&2 2>&3)
|
||||
if [ -z "$IPV6_GATE" ]; then
|
||||
IPV6_GATE=""
|
||||
break
|
||||
elif [[ "$IPV6_GATE" =~ ^([0-9a-fA-F:]+:+)+[0-9a-fA-F]+$ ]]; then
|
||||
break
|
||||
else
|
||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox \
|
||||
"Invalid IPv6 gateway format." 8 58
|
||||
|
||||
fi
|
||||
done
|
||||
break
|
||||
;;
|
||||
none)
|
||||
echo -e "${NETWORK}${BOLD}${DGN}IPv6: ${BGN}Disabled${CL}"
|
||||
IPV6_ADDR="none"
|
||||
IPV6_GATE=""
|
||||
break
|
||||
;;
|
||||
*)
|
||||
exit_script
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$var_os" == "alpine" ]; then
|
||||
APT_CACHER=""
|
||||
@ -581,12 +668,12 @@ advanced_settings() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "IPv6" --yesno "Disable IPv6?" 10 58); then
|
||||
DISABLEIP6="yes"
|
||||
else
|
||||
DISABLEIP6="no"
|
||||
fi
|
||||
echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}"
|
||||
# if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "IPv6" --yesno "Disable IPv6?" 10 58); then
|
||||
# DISABLEIP6="yes"
|
||||
# else
|
||||
# DISABLEIP6="no"
|
||||
# fi
|
||||
# echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}"
|
||||
|
||||
if MTU1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default [The MTU of your selected vmbr, default is 1500])" 8 58 --title "MTU SIZE" 3>&1 1>&2 2>&3); then
|
||||
if [ -z "$MTU1" ]; then
|
||||
@ -941,6 +1028,16 @@ start() {
|
||||
build_container() {
|
||||
# if [ "$VERBOSE" == "yes" ]; then set -x; fi
|
||||
|
||||
NET_STRING="-net0 name=eth0,bridge=$BRG$MAC,ip=$NET$GATE$VLAN$MTU"
|
||||
case "$IPV6_METHOD" in
|
||||
auto) NET_STRING="$NET_STRING,ip6=auto" ;;
|
||||
dhcp) NET_STRING="$NET_STRING,ip6=dhcp" ;;
|
||||
static)
|
||||
NET_STRING="$NET_STRING,ip6=$IPV6_ADDR"
|
||||
[ -n "$IPV6_GATE" ] && NET_STRING="$NET_STRING,gw6=$IPV6_GATE"
|
||||
;;
|
||||
none) ;;
|
||||
esac
|
||||
if [ "$CT_TYPE" == "1" ]; then
|
||||
FEATURES="keyctl=1,nesting=1"
|
||||
else
|
||||
@ -968,7 +1065,7 @@ build_container() {
|
||||
export CACHER="$APT_CACHER"
|
||||
export CACHER_IP="$APT_CACHER_IP"
|
||||
export tz="$timezone"
|
||||
export DISABLEIPV6="$DISABLEIP6"
|
||||
#export DISABLEIPV6="$DISABLEIP6"
|
||||
export APPLICATION="$APP"
|
||||
export app="$NSAPP"
|
||||
export PASSWORD="$PW"
|
||||
@ -988,7 +1085,7 @@ build_container() {
|
||||
-tags $TAGS
|
||||
$SD
|
||||
$NS
|
||||
-net0 name=eth0,bridge=$BRG$MAC,ip=$NET$GATE$VLAN$MTU
|
||||
$NET_STRING
|
||||
-onboot 1
|
||||
-cores $CORE_COUNT
|
||||
-memory $RAM_SIZE
|
||||
|
@ -424,19 +424,6 @@ config_file() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${DISABLEIP6-}" == "yes" ]]; then
|
||||
echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}Yes${CL}"
|
||||
elif [[ "${DISABLEIP6-}" == "no" ]]; then
|
||||
echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}No${CL}"
|
||||
else
|
||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "IPv6" --yesno "Disable IPv6?" 10 58); then
|
||||
DISABLEIP6="yes"
|
||||
else
|
||||
DISABLEIP6="no"
|
||||
fi
|
||||
echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}"
|
||||
fi
|
||||
|
||||
if [[ -n "${MTU-}" ]]; then
|
||||
if [[ "$MTU" =~ ^-?[0-9]+$ ]]; then
|
||||
echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU${CL}"
|
||||
|
@ -761,7 +761,7 @@ function fetch_and_deploy_gh_release() {
|
||||
local app_lc=$(echo "${app,,}" | tr -d ' ')
|
||||
local version_file="$HOME/.${app_lc}"
|
||||
|
||||
local api_timeout="--connect-timeout 5 --max-time 30"
|
||||
local api_timeout="--connect-timeout 10 --max-time 60"
|
||||
local download_timeout="--connect-timeout 15 --max-time 900"
|
||||
|
||||
local current_version=""
|
||||
@ -776,6 +776,14 @@ function fetch_and_deploy_gh_release() {
|
||||
local header=()
|
||||
[[ -n "${GITHUB_TOKEN:-}" ]] && header=(-H "Authorization: token $GITHUB_TOKEN")
|
||||
|
||||
# dns pre check
|
||||
local gh_host
|
||||
gh_host=$(awk -F/ '{print $3}' <<<"$api_url")
|
||||
if ! getent hosts "$gh_host" &>/dev/null; then
|
||||
msg_error "DNS resolution failed for $gh_host – check /etc/resolv.conf or networking"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local max_retries=3 retry_delay=2 attempt=1 success=false resp http_code
|
||||
|
||||
while ((attempt <= max_retries)); do
|
||||
@ -785,7 +793,7 @@ function fetch_and_deploy_gh_release() {
|
||||
done
|
||||
|
||||
if ! $success; then
|
||||
msg_error "Failed to fetch release metadata after $max_retries attempts"
|
||||
msg_error "Failed to fetch release metadata from $api_url after $max_retries attempts"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@ -811,6 +819,7 @@ function fetch_and_deploy_gh_release() {
|
||||
|
||||
msg_info "Fetching GitHub release: $app ($version)"
|
||||
|
||||
### Tarball Mode ###
|
||||
if [[ "$mode" == "tarball" || "$mode" == "source" ]]; then
|
||||
url=$(echo "$json" | jq -r '.tarball_url // empty')
|
||||
[[ -z "$url" ]] && url="https://github.com/$repo/archive/refs/tags/v$version.tar.gz"
|
||||
@ -831,22 +840,34 @@ function fetch_and_deploy_gh_release() {
|
||||
cp -r "$unpack_dir"/* "$target/"
|
||||
shopt -u dotglob nullglob
|
||||
|
||||
### Binary Mode ###
|
||||
elif [[ "$mode" == "binary" ]]; then
|
||||
local arch
|
||||
arch=$(dpkg --print-architecture 2>/dev/null || uname -m)
|
||||
[[ "$arch" == "x86_64" ]] && arch="x86_64"
|
||||
[[ "$arch" == "x86_64" ]] && arch="amd64"
|
||||
[[ "$arch" == "aarch64" ]] && arch="arm64"
|
||||
|
||||
local assets url_match=""
|
||||
assets=$(echo "$json" | jq -r '.assets[].browser_download_url')
|
||||
|
||||
for u in $assets; do
|
||||
if [[ "$u" =~ ($arch|amd64|x86_64|aarch64|arm64).*\.deb$ ]]; then
|
||||
url_match="$u"
|
||||
break
|
||||
fi
|
||||
done
|
||||
# If explicit filename pattern is provided (param $6), match that first
|
||||
if [[ -n "$6" ]]; then
|
||||
for u in $assets; do
|
||||
[[ "$u" =~ $6 || "$u" == *"$6" ]] && url_match="$u" && break
|
||||
done
|
||||
fi
|
||||
|
||||
# If no match via explicit pattern, fall back to architecture heuristic
|
||||
if [[ -z "$url_match" ]]; then
|
||||
for u in $assets; do
|
||||
if [[ "$u" =~ ($arch|amd64|x86_64|aarch64|arm64).*\.deb$ ]]; then
|
||||
url_match="$u"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Fallback: any .deb file
|
||||
if [[ -z "$url_match" ]]; then
|
||||
for u in $assets; do
|
||||
[[ "$u" =~ \.deb$ ]] && url_match="$u" && break
|
||||
@ -875,8 +896,10 @@ function fetch_and_deploy_gh_release() {
|
||||
}
|
||||
}
|
||||
|
||||
### Prebuild Mode ###
|
||||
elif [[ "$mode" == "prebuild" ]]; then
|
||||
local pattern="$6"
|
||||
local pattern="${6%\"}"
|
||||
pattern="${pattern#\"}"
|
||||
[[ -z "$pattern" ]] && {
|
||||
msg_error "Mode 'prebuild' requires 6th parameter (asset filename pattern)"
|
||||
rm -rf "$tmpdir"
|
||||
@ -885,7 +908,14 @@ function fetch_and_deploy_gh_release() {
|
||||
|
||||
local asset_url=""
|
||||
for u in $(echo "$json" | jq -r '.assets[].browser_download_url'); do
|
||||
[[ "$u" =~ $pattern || "$u" == *"$pattern" ]] && asset_url="$u" && break
|
||||
filename_candidate="${u##*/}"
|
||||
case "$filename_candidate" in
|
||||
$pattern)
|
||||
asset_url="$u"
|
||||
break
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
[[ -z "$asset_url" ]] && {
|
||||
@ -907,16 +937,18 @@ function fetch_and_deploy_gh_release() {
|
||||
$STD apt-get install -y unzip
|
||||
fi
|
||||
$STD unzip "$tmpdir/$filename" -d "$target"
|
||||
elif [[ "$filename" == *.tar.gz ]]; then
|
||||
tar -xzf "$tmpdir/$filename" -C "$target"
|
||||
elif [[ "$filename" == *.tar.* ]]; then
|
||||
tar --strip-components=1 -xf "$tmpdir/$filename" -C "$target"
|
||||
else
|
||||
msg_error "Unsupported archive format: $filename"
|
||||
rm -rf "$tmpdir"
|
||||
return 1
|
||||
fi
|
||||
|
||||
### Singlefile Mode ###
|
||||
elif [[ "$mode" == "singlefile" ]]; then
|
||||
local pattern="$6"
|
||||
local pattern="${6%\"}"
|
||||
pattern="${pattern#\"}"
|
||||
[[ -z "$pattern" ]] && {
|
||||
msg_error "Mode 'singlefile' requires 6th parameter (asset filename pattern)"
|
||||
rm -rf "$tmpdir"
|
||||
@ -925,7 +957,13 @@ function fetch_and_deploy_gh_release() {
|
||||
|
||||
local asset_url=""
|
||||
for u in $(echo "$json" | jq -r '.assets[].browser_download_url'); do
|
||||
[[ "$u" =~ $pattern || "$u" == *"$pattern" ]] && asset_url="$u" && break
|
||||
filename_candidate="${u##*/}"
|
||||
case "$filename_candidate" in
|
||||
$pattern)
|
||||
asset_url="$u"
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -z "$asset_url" ]] && {
|
||||
|
@ -163,7 +163,7 @@ server:
|
||||
disableIndexing: false
|
||||
indexingIntervalMinutes: 240
|
||||
exclude:
|
||||
folders:
|
||||
folderPaths:
|
||||
- "/proc"
|
||||
- "/sys"
|
||||
- "/dev"
|
||||
@ -185,7 +185,7 @@ server:
|
||||
disableIndexing: false
|
||||
indexingIntervalMinutes: 240
|
||||
exclude:
|
||||
folders:
|
||||
folderPaths:
|
||||
- "/proc"
|
||||
- "/sys"
|
||||
- "/dev"
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user