Compare commits

...

34 Commits

Author SHA1 Message Date
b1e3dd318d Add invoiceninja (ct) 2025-12-12 13:39:19 +00:00
cf14c1b540 Update CHANGELOG.md (#9903)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 13:21:42 +00:00
e27a68275b Fixed URLs (#9902) 2025-12-12 14:21:15 +01:00
ec433b3abc Update versions.json (#9901)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 13:06:19 +01:00
b4db6a6c70 Update CHANGELOG.md (#9897)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 00:15:56 +00:00
11a407b54f Update versions.json (#9896)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 01:15:30 +01:00
af5172a8cf Update CHANGELOG.md (#9893)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 17:32:43 +00:00
115ea10ecd dokploy: require unprivileged LXC environment (#9891) 2025-12-11 18:32:20 +01:00
8549f2a84d Update versions.json (#9889)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 13:06:13 +01:00
c80c2a2ecb Update CHANGELOG.md (#9888)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 11:32:05 +00:00
7255edc21b Fixes (#9872) 2025-12-11 12:31:37 +01:00
18d620705d Update CHANGELOG.md (#9887)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 11:30:50 +00:00
2b1f62e74f Fixes (#9874) 2025-12-11 12:30:27 +01:00
f5b0c03362 Update CHANGELOG.md (#9886)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 11:08:42 +00:00
1afefd20e9 Refactor (#9876) 2025-12-11 12:08:16 +01:00
723f9d63d6 Update CHANGELOG.md (#9884)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:57:28 +00:00
1ea0172b75 paperless: add note on website (uv usage) (#9833)
* paperless: add note on website (uv usage)

Added information about using 'uv run' for Paperless-NGX commands.

* switch branch to main to prevent conflicts
2025-12-11 10:57:05 +01:00
ef63f853b4 Update CHANGELOG.md (#9883)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:54:11 +00:00
179233810e Refactor (#9863) 2025-12-11 10:53:49 +01:00
748c08ddb5 Update CHANGELOG.md (#9882)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:53:14 +00:00
de944792de SonarQube: Fixes (#9875)
* Fixes

* Update
2025-12-11 10:52:49 +01:00
091271c8d6 Update CHANGELOG.md (#9881)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:52:34 +00:00
7fae5d71f5 fix(build): skip -features flag when empty (#9871)
Fixes '400 too many arguments' error when creating privileged containers without nesting/fuse features enabled.
2025-12-11 10:52:11 +01:00
3bc45aa0a2 Update CHANGELOG.md (#9880)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:51:50 +00:00
313b1b0b00 Update date in json (#9879)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:51:47 +00:00
3ad0777048 Speedtest-Tracker (#9802)
* Add speedtest-tracker (ct)

* Update speedtest-tracker.sh

* Update date_created and logo in JSON file

* Update Speedtest Tracker installation script for local IP

* Apply suggestion from @tremor021

* Update install/speedtest-tracker-install.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update install/speedtest-tracker-install.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-12-11 10:51:26 +01:00
7dcb2fa985 Update CHANGELOG.md (#9870)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 06:12:42 +00:00
6e86fa4c3b Update NetVisor repo information (#9864) 2025-12-11 07:12:19 +01:00
747e472d1f Update CHANGELOG.md (#9869)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 06:12:09 +00:00
38a9ad8e09 endurain: remove unneeded deps (#9855)
* Update endurain-install.sh

updated deps for v0.16.0. MariaDB support was dropped.

* chore: cosmetics

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-12-11 07:11:45 +01:00
5854318163 Update CHANGELOG.md (#9866)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 00:15:06 +00:00
39eda9cb81 Update versions.json (#9865)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 01:14:43 +01:00
c757c7a8eb Update .app files (#9862)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-10 22:24:03 +01:00
94126be8f9 Update CHANGELOG.md (#9861)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 21:03:44 +00:00
30 changed files with 927 additions and 309 deletions

View File

@ -10,8 +10,54 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-12-12
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Pangolin: URL fixes [@tremor021](https://github.com/tremor021) ([#9902](https://github.com/community-scripts/ProxmoxVE/pull/9902))
## 2025-12-11
### 🆕 New Scripts
- Speedtest-Tracker ([#9802](https://github.com/community-scripts/ProxmoxVE/pull/9802))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- dokploy: require unprivileged LXC environment [@MickLesk](https://github.com/MickLesk) ([#9891](https://github.com/community-scripts/ProxmoxVE/pull/9891))
- Update NetVisor repo information [@vhsdream](https://github.com/vhsdream) ([#9864](https://github.com/community-scripts/ProxmoxVE/pull/9864))
- #### 🔧 Refactor
- Syncthing: Various fixes [@tremor021](https://github.com/tremor021) ([#9872](https://github.com/community-scripts/ProxmoxVE/pull/9872))
- Sonarr: Fix standard [@tremor021](https://github.com/tremor021) ([#9874](https://github.com/community-scripts/ProxmoxVE/pull/9874))
- Refactor: Snipe-IT [@tremor021](https://github.com/tremor021) ([#9876](https://github.com/community-scripts/ProxmoxVE/pull/9876))
- Technitium DNS: Various fixes [@tremor021](https://github.com/tremor021) ([#9863](https://github.com/community-scripts/ProxmoxVE/pull/9863))
- SonarQube: Fixes [@tremor021](https://github.com/tremor021) ([#9875](https://github.com/community-scripts/ProxmoxVE/pull/9875))
- endurain: remove unneeded deps [@johanngrobe](https://github.com/johanngrobe) ([#9855](https://github.com/community-scripts/ProxmoxVE/pull/9855))
### 💾 Core
- #### 🐞 Bug Fixes
- core: skip -features flag when empty [@MickLesk](https://github.com/MickLesk) ([#9871](https://github.com/community-scripts/ProxmoxVE/pull/9871))
### 🌐 Website
- #### 📝 Script Information
- paperless: add note on website (uv usage) [@MickLesk](https://github.com/MickLesk) ([#9833](https://github.com/community-scripts/ProxmoxVE/pull/9833))
## 2025-12-10 ## 2025-12-10
### 🆕 New Scripts
- DiscoPanel ([#9847](https://github.com/community-scripts/ProxmoxVE/pull/9847))
### 🚀 Updated Scripts ### 🚀 Updated Scripts
- #### 🔧 Refactor - #### 🔧 Refactor

View File

@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-0}"
header_info "$APP" header_info "$APP"
variables variables

6
ct/headers/discopanel Normal file
View File

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

View File

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

79
ct/invoiceninja.sh Normal file
View File

@ -0,0 +1,79 @@
#!/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://invoiceninja.com/
APP="InvoiceNinja"
var_tags="${var_tags:-invoicing;business}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/invoiceninja ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "invoiceninja" "invoiceninja/invoiceninja"; then
msg_info "Stopping Services"
systemctl stop supervisor nginx php8.4-fpm
msg_ok "Stopped Services"
msg_info "Creating Backup"
mkdir -p /tmp/invoiceninja_backup
cp /opt/invoiceninja/.env /tmp/invoiceninja_backup/
cp -r /opt/invoiceninja/storage /tmp/invoiceninja_backup/ 2>/dev/null || true
cp -r /opt/invoiceninja/public/storage /tmp/invoiceninja_backup/public_storage 2>/dev/null || true
msg_ok "Created Backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceninja" "invoiceninja/invoiceninja" "prebuild" "latest" "/opt/invoiceninja" "invoiceninja.tar.gz"
msg_info "Restoring Data"
cp /tmp/invoiceninja_backup/.env /opt/invoiceninja/
cp -r /tmp/invoiceninja_backup/storage/* /opt/invoiceninja/storage/ 2>/dev/null || true
cp -r /tmp/invoiceninja_backup/public_storage/* /opt/invoiceninja/public/storage/ 2>/dev/null || true
rm -rf /tmp/invoiceninja_backup
msg_ok "Restored Data"
msg_info "Running Migrations"
cd /opt/invoiceninja
$STD php artisan migrate --force
$STD php artisan config:clear
$STD php artisan cache:clear
$STD php artisan optimize
chown -R www-data:www-data /opt/invoiceninja
chmod -R 755 /opt/invoiceninja/storage
msg_ok "Ran Migrations"
msg_info "Starting Services"
systemctl start php8.4-fpm nginx supervisor
msg_ok "Started Services"
msg_ok "Updated Successfully"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/setup${CL}"

View File

@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream # Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/mayanayza/netvisor # Source: https://github.com/netvisor-io/netvisor
APP="NetVisor" APP="NetVisor"
var_tags="${var_tags:-analytics}" var_tags="${var_tags:-analytics}"
@ -29,7 +29,7 @@ function update_script() {
exit exit
fi fi
if check_for_gh_release "netvisor" "mayanayza/netvisor"; then if check_for_gh_release "netvisor" "netvisor-io/netvisor"; then
msg_info "Stopping services" msg_info "Stopping services"
systemctl stop netvisor-daemon netvisor-server systemctl stop netvisor-daemon netvisor-server
msg_ok "Stopped services" msg_ok "Stopped services"
@ -38,7 +38,7 @@ function update_script() {
cp /opt/netvisor/.env /opt/netvisor.env.bak cp /opt/netvisor/.env /opt/netvisor.env.bak
msg_ok "Backed up configurations" msg_ok "Backed up configurations"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netvisor" "mayanayza/netvisor" "tarball" "latest" "/opt/netvisor" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netvisor" "netvisor-io/netvisor" "tarball" "latest" "/opt/netvisor"
if ! dpkg -l | grep -q "pkg-config"; then if ! dpkg -l | grep -q "pkg-config"; then
$STD apt install -y pkg-config $STD apt install -y pkg-config

View File

@ -36,16 +36,16 @@ function update_script() {
systemctl stop nginx systemctl stop nginx
msg_ok "Services Stopped" msg_ok "Services Stopped"
msg_info "Creating backup" msg_info "Creating Backup"
mv /opt/snipe-it /opt/snipe-it-backup mv /opt/snipe-it /opt/snipe-it-backup
msg_ok "Backup created" msg_ok "Created Backup"
fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball" fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball"
[[ "$(php -v 2>/dev/null)" == PHP\ 8.2* ]] && PHP_VERSION="8.3" PHP_MODULE="common,ctype,ldap,fileinfo,iconv,mysql,soap,xsl" PHP_FPM="YES" setup_php [[ "$(php -v 2>/dev/null)" == PHP\ 8.2* ]] && PHP_VERSION="8.3" PHP_MODULE="common,ctype,ldap,fileinfo,iconv,mysql,soap,xsl" PHP_FPM="YES" setup_php
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/snipeit.conf sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/snipeit.conf
setup_composer setup_composer
msg_info "Updating ${APP}" msg_info "Updating Snipe-IT"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt -y upgrade
cp /opt/snipe-it-backup/.env /opt/snipe-it/.env cp /opt/snipe-it-backup/.env /opt/snipe-it/.env
@ -63,7 +63,7 @@ function update_script() {
chown -R www-data: /opt/snipe-it chown -R www-data: /opt/snipe-it
chmod -R 755 /opt/snipe-it chmod -R 755 /opt/snipe-it
rm -rf /opt/snipe-it-backup rm -rf /opt/snipe-it-backup
msg_ok "Updated ${APP}" msg_ok "Updated Snipe-IT"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start nginx systemctl start nginx

View File

@ -33,30 +33,30 @@ function update_script() {
systemctl stop sonarqube systemctl stop sonarqube
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Creating backup" msg_info "Creating Backup"
BACKUP_DIR="/opt/sonarqube-backup" BACKUP_DIR="/opt/sonarqube-backup"
mv /opt/sonarqube ${BACKUP_DIR} mv /opt/sonarqube ${BACKUP_DIR}
msg_ok "Backup created" msg_ok "Created Backup"
msg_info "Installing sonarqube" msg_info "Updating SonarQube"
temp_file=$(mktemp) temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/SonarSource/sonarqube/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(get_latest_github_release "SonarSource/sonarqube")
curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
unzip -q "$temp_file" -d /opt unzip -q "$temp_file" -d /opt
mv /opt/sonarqube-* /opt/sonarqube mv /opt/sonarqube-* /opt/sonarqube
msg_ok "Installed sonarqube" msg_ok "Updated SonarQube"
msg_info "Restoring backup" msg_info "Restoring Backup"
cp -rp ${BACKUP_DIR}/data/ /opt/sonarqube/data/ cp -rp ${BACKUP_DIR}/data/ /opt/sonarqube/data/
cp -rp ${BACKUP_DIR}/extensions/ /opt/sonarqube/extensions/ cp -rp ${BACKUP_DIR}/extensions/ /opt/sonarqube/extensions/
cp -p ${BACKUP_DIR}/conf/sonar.properties /opt/sonarqube/conf/sonar.properties cp -p ${BACKUP_DIR}/conf/sonar.properties /opt/sonarqube/conf/sonar.properties
rm -rf ${BACKUP_DIR} rm -rf ${BACKUP_DIR}
chown -R sonarqube:sonarqube /opt/sonarqube chown -R sonarqube:sonarqube /opt/sonarqube
msg_ok "Backup restored" msg_ok "Restored Backup"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start sonarqube systemctl start sonarqube
msg_ok "Service started" msg_ok "Service Started"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi
exit exit

View File

@ -27,6 +27,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop sonarr systemctl stop sonarr
msg_ok "Stopped Service" msg_ok "Stopped Service"
@ -38,6 +39,7 @@ function update_script() {
mv Sonarr /opt mv Sonarr /opt
rm -rf SonarrV4.tar.gz rm -rf SonarrV4.tar.gz
msg_ok "Updated Sonarr" msg_ok "Updated Sonarr"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start sonarr systemctl start sonarr
msg_ok "Started Service" msg_ok "Started Service"

83
ct/speedtest-tracker.sh Normal file
View File

@ -0,0 +1,83 @@
#!/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: AlphaLawless
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/alexjustesen/speedtest-tracker
APP="Speedtest-Tracker"
var_tags="${var_tags:-monitoring}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/speedtest-tracker ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "speedtest-tracker" "alexjustesen/speedtest-tracker"; then
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="common,sqlite3,redis" setup_php
setup_composer
NODE_VERSION="22" setup_nodejs
msg_info "Stopping Service"
systemctl stop speedtest-tracker
msg_ok "Stopped Service"
msg_info "Updating Speedtest CLI"
$STD apt update
$STD apt --only-upgrade install -y speedtest
msg_ok "Updated Speedtest CLI"
msg_info "Creating Backup"
cp -r /opt/speedtest-tracker /opt/speedtest-tracker-backup
msg_ok "Backup Created"
fetch_and_deploy_gh_release "speedtest-tracker" "alexjustesen/speedtest-tracker" "tarball" "latest" "/opt/speedtest-tracker"
msg_info "Updating Speedtest Tracker"
cp -r /opt/speedtest-tracker-backup/.env /opt/speedtest-tracker/.env
cd /opt/speedtest-tracker
export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --optimize-autoloader --no-dev
$STD npm ci
$STD npm run build
$STD php artisan migrate --force
$STD php artisan config:clear
$STD php artisan cache:clear
$STD php artisan view:clear
chown -R www-data:www-data /opt/speedtest-tracker
chmod -R 755 /opt/speedtest-tracker/storage
chmod -R 755 /opt/speedtest-tracker/bootstrap/cache
msg_ok "Updated Speedtest Tracker"
msg_info "Starting Service"
systemctl start speedtest-tracker
msg_ok "Started Service"
msg_ok "Updated successfully"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@ -27,9 +27,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP} LXC"
msg_info "Updating Syncthing"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt upgrade -y
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
} }

View File

@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@ -30,6 +30,14 @@ function update_script() {
if is_package_installed "aspnetcore-runtime-8.0"; then if is_package_installed "aspnetcore-runtime-8.0"; then
$STD apt remove -y aspnetcore-runtime-8.0 $STD apt remove -y aspnetcore-runtime-8.0
[ -f /etc/apt/sources.list.d/microsoft-prod.list ] && rm -f /etc/apt/sources.list.d/microsoft-prod.list
[ -f /usr/share/keyrings/microsoft-prod.gpg ] && rm -f /usr/share/keyrings/microsoft-prod.gpg
setup_deb822_repo \
"microsoft" \
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
"https://packages.microsoft.com/debian/13/prod/" \
"trixie" \
"main"
$STD apt install -y aspnetcore-runtime-9.0 $STD apt install -y aspnetcore-runtime-9.0
fi fi

View File

@ -7,7 +7,7 @@
"date_created": "2025-12-09", "date_created": "2025-12-09",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": true,
"interface_port": 3000, "interface_port": 3000,
"documentation": "https://docs.dokploy.com/", "documentation": "https://docs.dokploy.com/",
"config_path": "/etc/dokploy", "config_path": "/etc/dokploy",

View File

@ -0,0 +1,48 @@
{
"name": "InvoiceNinja",
"slug": "invoiceninja",
"categories": [
3
],
"date_created": "2025-12-09",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://invoiceninja.github.io/selfhost.html",
"config_path": "/opt/invoiceninja/.env",
"website": "https://invoiceninja.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/invoice-ninja.webp",
"description": "Invoice Ninja is a free, open-source invoicing, quotes, expenses and time-tracking application for freelancers and businesses. Features include recurring invoices, online payments, client portal, and multi-company support.",
"install_methods": [
{
"type": "default",
"script": "ct/invoiceninja.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "First visit http://IP:8080/setup to complete the initial configuration",
"type": "info"
},
{
"text": "Database credentials are stored in ~/invoiceninja.creds",
"type": "info"
},
{
"text": "Configure SMTP settings in /opt/invoiceninja/.env for email functionality",
"type": "warning"
}
]
}

View File

@ -9,9 +9,9 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 60072, "interface_port": 60072,
"documentation": "https://github.com/mayanayza/netvisor", "documentation": "https://github.com/netvisor-io/netvisor",
"config_path": "/opt/netvisor/.env, OIDC: /opt/netvisor/oidc.toml", "config_path": "/opt/netvisor/.env, OIDC: /opt/netvisor/oidc.toml",
"website": "https://github.com/mayanayza/netvisor", "website": "https://netvisor.io",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/netvisor.png", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/netvisor.png",
"description": "Automatically discover and visually document network infrastructure", "description": "Automatically discover and visually document network infrastructure",
"install_methods": [ "install_methods": [

View File

@ -39,6 +39,10 @@
{ {
"text": "Script installs English as default OCR language. To install additional languages, use `apt-get install tesseract-ocr-[lang]`, where [lang] is the language code (e.g. `apt-get install tesseract-ocr-deu`).", "text": "Script installs English as default OCR language. To install additional languages, use `apt-get install tesseract-ocr-[lang]`, where [lang] is the language code (e.g. `apt-get install tesseract-ocr-deu`).",
"type": "info" "type": "info"
},
{
"text": "Paperless-NGX use uv, so all calls need to start with `uv run` f.e. `uv run python3 manage.py document_exporter $path` instead `python3 manage.py`",
"type": "info"
} }
] ]
} }

View File

@ -0,0 +1,35 @@
{
"name": "Speedtest-Tracker",
"slug": "speedtest-tracker",
"categories": [
4
],
"date_created": "2025-12-11",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://docs.speedtest-tracker.dev/",
"website": "https://github.com/alexjustesen/speedtest-tracker",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/speedtest-tracker.webp",
"config_path": "/opt/speedtest-tracker/.env",
"description": "Speedtest Tracker is a self-hosted application that runs scheduled speed tests using the Ookla Speedtest CLI and saves the results to a database for historical tracking and visualization.",
"install_methods": [
{
"type": "default",
"script": "ct/speedtest-tracker.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin@example.com",
"password": "password"
},
"notes": []
}

View File

@ -23,7 +23,7 @@
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 2,
"os": "debian", "os": "debian",
"version": "12" "version": "13"
} }
} }
], ],

View File

@ -1,23 +1,113 @@
[ [
{ {
"name": "Stirling-Tools/Stirling-PDF", "name": "BerriAI/litellm",
"version": "v2.1.2", "version": "v1.80.9.dev6",
"date": "2025-12-10T11:46:48Z" "date": "2025-12-12T11:00:12Z"
},
{
"name": "opencloud-eu/opencloud",
"version": "4.0.1-rc.1",
"date": "2025-12-12T10:52:28Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.7.4",
"date": "2025-12-12T10:25:19Z"
},
{
"name": "netvisor-io/netvisor",
"version": "v0.11.7",
"date": "2025-12-12T09:22:44Z"
},
{
"name": "karakeep-app/karakeep",
"version": "v0.29.3",
"date": "2025-12-12T09:14:41Z"
},
{
"name": "grokability/snipe-it",
"version": "v8.3.7",
"date": "2025-12-12T09:13:40Z"
},
{
"name": "passbolt/passbolt_api",
"version": "v5.8.0-test.1",
"date": "2025-12-12T06:53:05Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.441",
"date": "2025-12-12T05:55:23Z"
},
{
"name": "coder/code-server",
"version": "v4.106.3",
"date": "2025-12-01T22:06:12Z"
},
{
"name": "theonedev/onedev",
"version": "v13.1.5",
"date": "2025-12-12T03:30:50Z"
},
{
"name": "umami-software/umami",
"version": "v3.0.3",
"date": "2025-12-12T02:39:27Z"
},
{
"name": "jeedom/core",
"version": "4.5",
"date": "2025-12-12T00:27:07Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{
"name": "ollama/ollama",
"version": "v0.13.3-rc1",
"date": "2025-12-10T20:59:27Z"
},
{
"name": "metabase/metabase",
"version": "v0.57.6",
"date": "2025-12-11T23:31:19Z"
},
{
"name": "fosrl/pangolin",
"version": "1.13.0",
"date": "2025-12-11T23:19:41Z"
}, },
{ {
"name": "WGDashboard/WGDashboard", "name": "WGDashboard/WGDashboard",
"version": "v4.3.0.3", "version": "v4.3.0.3",
"date": "2025-12-10T11:13:43Z" "date": "2025-12-11T23:03:52Z"
}, },
{ {
"name": "cockpit-project/cockpit", "name": "motioneye-project/motioneye",
"version": "353", "version": "0.43.1",
"date": "2025-12-10T10:55:50Z" "date": "2025-12-11T22:45:52Z"
}, },
{ {
"name": "theonedev/onedev", "name": "coollabsio/coolify",
"version": "v13.1.4", "version": "v4.0.0-beta.454",
"date": "2025-12-10T10:24:13Z" "date": "2025-12-11T20:37:05Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v0.23.0-alpha.35",
"date": "2025-12-11T18:20:45Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.30.22",
"date": "2025-12-11T18:02:06Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-v1.30.0-network-topology.2",
"date": "2025-12-11T16:47:51Z"
}, },
{ {
"name": "chrisvel/tududi", "name": "chrisvel/tududi",
@ -25,9 +115,104 @@
"date": "2025-12-06T07:36:26Z" "date": "2025-12-06T07:36:26Z"
}, },
{ {
"name": "mayanayza/netvisor", "name": "joaovitoriasilva/endurain",
"version": "v0.11.6", "version": "v0.16.2",
"date": "2025-12-10T07:16:57Z" "date": "2025-12-11T15:16:01Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.7",
"date": "2025-12-01T08:14:11Z"
},
{
"name": "alam00000/bentopdf",
"version": "v1.11.1",
"date": "2025-12-11T14:12:20Z"
},
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v2.1.3",
"date": "2025-12-11T13:31:56Z"
},
{
"name": "zabbix/zabbix",
"version": "7.4.6rc1",
"date": "2025-12-11T12:01:51Z"
},
{
"name": "pommee/goaway",
"version": "v0.62.24",
"date": "2025-12-11T09:54:59Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.13.2",
"date": "2025-12-11T06:31:24Z"
},
{
"name": "moghtech/komodo",
"version": "v1.19.5",
"date": "2025-09-27T20:59:46Z"
},
{
"name": "TwiN/gatus",
"version": "v5.33.1",
"date": "2025-12-11T01:59:13Z"
},
{
"name": "tailscale/tailscale",
"version": "v1.92.2",
"date": "2025-12-10T21:20:31Z"
},
{
"name": "gethomepage/homepage",
"version": "v1.8.0",
"date": "2025-12-10T16:44:33Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.123.5-exp.0",
"date": "2025-12-10T16:35:50Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.541",
"date": "2025-12-10T15:57:13Z"
},
{
"name": "prometheus/alertmanager",
"version": "v0.29.0",
"date": "2025-11-04T15:00:07Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.30.0-rc2",
"date": "2025-12-10T14:58:00Z"
},
{
"name": "rclone/rclone",
"version": "v1.72.1",
"date": "2025-12-10T14:55:44Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-openapi@10.1.2",
"date": "2025-12-10T13:59:19Z"
},
{
"name": "evcc-io/evcc",
"version": "0.211.1",
"date": "2025-12-10T12:25:19Z"
},
{
"name": "cockpit-project/cockpit",
"version": "353",
"date": "2025-12-10T10:55:50Z"
}, },
{ {
"name": "mattermost/mattermost", "name": "mattermost/mattermost",
@ -44,11 +229,6 @@
"version": "v1.5.3", "version": "v1.5.3",
"date": "2025-09-20T12:12:33Z" "date": "2025-09-20T12:12:33Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.24.429",
"date": "2025-12-10T05:56:09Z"
},
{ {
"name": "kyantech/Palmr", "name": "kyantech/Palmr",
"version": "v3.3.2-beta", "version": "v3.3.2-beta",
@ -64,16 +244,6 @@
"version": "2.2.15", "version": "2.2.15",
"date": "2025-12-10T01:52:14Z" "date": "2025-12-10T01:52:14Z"
}, },
{
"name": "jeedom/core",
"version": "4.5",
"date": "2025-12-10T00:27:04Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{ {
"name": "comfyanonymous/ComfyUI", "name": "comfyanonymous/ComfyUI",
"version": "v0.4.0", "version": "v0.4.0",
@ -99,11 +269,6 @@
"version": "1.12.2", "version": "1.12.2",
"date": "2025-12-09T20:39:50Z" "date": "2025-12-09T20:39:50Z"
}, },
{
"name": "metabase/metabase",
"version": "v0.56.x",
"date": "2025-12-09T18:34:00Z"
},
{ {
"name": "valkey-io/valkey", "name": "valkey-io/valkey",
"version": "9.0.1", "version": "9.0.1",
@ -134,11 +299,6 @@
"version": "0.21.4", "version": "0.21.4",
"date": "2025-12-09T15:25:28Z" "date": "2025-12-09T15:25:28Z"
}, },
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{ {
"name": "gelbphoenix/autocaliweb", "name": "gelbphoenix/autocaliweb",
"version": "v0.11.3", "version": "v0.11.3",
@ -154,16 +314,6 @@
"version": "v2025.12.0", "version": "v2025.12.0",
"date": "2025-12-09T14:30:23Z" "date": "2025-12-09T14:30:23Z"
}, },
{
"name": "zabbix/zabbix",
"version": "7.0.22rc1",
"date": "2025-12-09T14:23:34Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.7",
"date": "2025-12-01T08:14:11Z"
},
{ {
"name": "home-assistant/operating-system", "name": "home-assistant/operating-system",
"version": "16.3", "version": "16.3",
@ -174,41 +324,16 @@
"version": "6.16.1+251125", "version": "6.16.1+251125",
"date": "2025-12-09T12:27:31Z" "date": "2025-12-09T12:27:31Z"
}, },
{
"name": "joaovitoriasilva/endurain",
"version": "v0.16.0",
"date": "2025-12-09T12:26:46Z"
},
{ {
"name": "Paymenter/Paymenter", "name": "Paymenter/Paymenter",
"version": "v1.4.7", "version": "v1.4.7",
"date": "2025-12-09T11:44:49Z" "date": "2025-12-09T11:44:49Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-typescript@4.0.14",
"date": "2025-12-09T11:11:49Z"
},
{
"name": "documenso/documenso",
"version": "v2.2.6",
"date": "2025-12-09T10:11:01Z"
},
{ {
"name": "mongodb/mongo", "name": "mongodb/mongo",
"version": "r7.0.27-rc0", "version": "r7.0.27-rc0",
"date": "2025-12-09T04:34:48Z" "date": "2025-12-09T04:34:48Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.13.2-rc2",
"date": "2025-12-06T00:10:33Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.80.9.dev1",
"date": "2025-12-09T01:38:18Z"
},
{ {
"name": "alexta69/metube", "name": "alexta69/metube",
"version": "2025.12.09", "version": "2025.12.09",
@ -234,11 +359,6 @@
"version": "2025.12.2", "version": "2025.12.2",
"date": "2025-12-08T21:36:42Z" "date": "2025-12-08T21:36:42Z"
}, },
{
"name": "fosrl/pangolin",
"version": "1.13.0-rc.0",
"date": "2025-12-08T21:17:44Z"
},
{ {
"name": "hansmi/prometheus-paperless-exporter", "name": "hansmi/prometheus-paperless-exporter",
"version": "v0.0.9", "version": "v0.0.9",
@ -249,26 +369,11 @@
"version": "v1.37.0", "version": "v1.37.0",
"date": "2025-12-08T20:36:16Z" "date": "2025-12-08T20:36:16Z"
}, },
{
"name": "pommee/goaway",
"version": "v0.62.23",
"date": "2025-12-08T20:30:54Z"
},
{ {
"name": "TuroYT/snowshare", "name": "TuroYT/snowshare",
"version": "v1.1.2", "version": "v1.1.2",
"date": "2025-12-08T20:29:51Z" "date": "2025-12-08T20:29:51Z"
}, },
{
"name": "coollabsio/coolify",
"version": "v4.0.0-beta.453",
"date": "2025-12-08T20:23:48Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.123.4",
"date": "2025-12-08T13:30:40Z"
},
{ {
"name": "homarr-labs/homarr", "name": "homarr-labs/homarr",
"version": "v1.45.3", "version": "v1.45.3",
@ -279,16 +384,6 @@
"version": "v0.107.71", "version": "v0.107.71",
"date": "2025-12-08T14:34:55Z" "date": "2025-12-08T14:34:55Z"
}, },
{
"name": "chrisbenincasa/tunarr",
"version": "v0.22.18",
"date": "2025-12-08T14:26:24Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.30.0-rc1",
"date": "2025-12-08T13:29:14Z"
},
{ {
"name": "wavelog/wavelog", "name": "wavelog/wavelog",
"version": "2.2.1", "version": "2.2.1",
@ -299,16 +394,6 @@
"version": "v1.1.08", "version": "v1.1.08",
"date": "2025-12-08T10:13:51Z" "date": "2025-12-08T10:13:51Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v4.7.1",
"date": "2025-12-08T10:05:21Z"
},
{
"name": "meilisearch/meilisearch",
"version": "latest",
"date": "2025-12-08T09:36:54Z"
},
{ {
"name": "firefly-iii/firefly-iii", "name": "firefly-iii/firefly-iii",
"version": "v6.4.9", "version": "v6.4.9",
@ -349,11 +434,6 @@
"version": "2.222.0", "version": "2.222.0",
"date": "2025-12-07T09:09:47Z" "date": "2025-12-07T09:09:47Z"
}, },
{
"name": "umami-software/umami",
"version": "v2.20.1",
"date": "2025-12-07T01:14:23Z"
},
{ {
"name": "sysadminsmedia/homebox", "name": "sysadminsmedia/homebox",
"version": "v0.22.0-rc.2", "version": "v0.22.0-rc.2",
@ -419,11 +499,6 @@
"version": "v1.13.2", "version": "v1.13.2",
"date": "2025-12-05T16:03:08Z" "date": "2025-12-05T16:03:08Z"
}, },
{
"name": "tailscale/tailscale",
"version": "v1.92.1",
"date": "2025-12-05T15:53:22Z"
},
{ {
"name": "community-scripts/ProxmoxVE-Local", "name": "community-scripts/ProxmoxVE-Local",
"version": "v0.5.2", "version": "v0.5.2",
@ -454,11 +529,6 @@
"version": "v3.6.4", "version": "v3.6.4",
"date": "2025-12-05T09:58:17Z" "date": "2025-12-05T09:58:17Z"
}, },
{
"name": "alam00000/bentopdf",
"version": "v1.10.5",
"date": "2025-12-05T09:28:50Z"
},
{ {
"name": "transmission/transmission", "name": "transmission/transmission",
"version": "4.0.1-beta.1", "version": "4.0.1-beta.1",
@ -474,15 +544,10 @@
"version": "v2.10.2", "version": "v2.10.2",
"date": "2025-08-23T03:10:31Z" "date": "2025-08-23T03:10:31Z"
}, },
{
"name": "msgbyte/tianji",
"version": "v1.30.20",
"date": "2025-12-04T18:17:47Z"
},
{ {
"name": "wazuh/wazuh", "name": "wazuh/wazuh",
"version": "coverity-w49-4.14.2", "version": "coverity-w50-4.14.2",
"date": "2025-12-02T14:01:48Z" "date": "2025-12-04T15:06:55Z"
}, },
{ {
"name": "crowdsecurity/crowdsec", "name": "crowdsecurity/crowdsec",
@ -519,11 +584,6 @@
"version": "v4.36.2", "version": "v4.36.2",
"date": "2025-12-03T22:46:29Z" "date": "2025-12-03T22:46:29Z"
}, },
{
"name": "HabitRPG/habitica",
"version": "v5.42.1",
"date": "2025-12-03T22:42:22Z"
},
{ {
"name": "danielbrendel/hortusfox-web", "name": "danielbrendel/hortusfox-web",
"version": "v5.5", "version": "v5.5",
@ -534,11 +594,6 @@
"version": "v25.12.0", "version": "v25.12.0",
"date": "2025-12-03T17:45:09Z" "date": "2025-12-03T17:45:09Z"
}, },
{
"name": "karakeep-app/karakeep",
"version": "v0.29.1",
"date": "2025-12-03T16:56:18Z"
},
{ {
"name": "Graylog2/graylog2-server", "name": "Graylog2/graylog2-server",
"version": "6.2.10", "version": "6.2.10",
@ -604,11 +659,6 @@
"version": "v6.2.4", "version": "v6.2.4",
"date": "2025-12-02T17:47:52Z" "date": "2025-12-02T17:47:52Z"
}, },
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.540",
"date": "2025-12-02T16:56:49Z"
},
{ {
"name": "docker/compose", "name": "docker/compose",
"version": "v5.0.0", "version": "v5.0.0",
@ -644,11 +694,6 @@
"version": "v2.20.1", "version": "v2.20.1",
"date": "2025-12-01T22:45:34Z" "date": "2025-12-01T22:45:34Z"
}, },
{
"name": "coder/code-server",
"version": "v4.106.3",
"date": "2025-12-01T22:06:12Z"
},
{ {
"name": "C4illin/ConvertX", "name": "C4illin/ConvertX",
"version": "v0.16.0", "version": "v0.16.0",
@ -679,16 +724,6 @@
"version": "1.11.5", "version": "1.11.5",
"date": "2025-12-01T12:58:46Z" "date": "2025-12-01T12:58:46Z"
}, },
{
"name": "evcc-io/evcc",
"version": "0.211.0",
"date": "2025-12-01T11:22:11Z"
},
{
"name": "opencloud-eu/opencloud",
"version": "v4.0.0",
"date": "2025-12-01T09:33:08Z"
},
{ {
"name": "photoprism/photoprism", "name": "photoprism/photoprism",
"version": "251130-b3068414c", "version": "251130-b3068414c",
@ -844,11 +879,6 @@
"version": "2.3.6", "version": "2.3.6",
"date": "2025-11-24T19:40:27Z" "date": "2025-11-24T19:40:27Z"
}, },
{
"name": "grokability/snipe-it",
"version": "v8.3.6",
"date": "2025-11-24T13:02:52Z"
},
{ {
"name": "silverbulletmd/silverbullet", "name": "silverbulletmd/silverbullet",
"version": "2.3.0", "version": "2.3.0",
@ -889,16 +919,6 @@
"version": "v14.2.0", "version": "v14.2.0",
"date": "2025-11-22T12:54:08Z" "date": "2025-11-22T12:54:08Z"
}, },
{
"name": "TwiN/gatus",
"version": "v5.33.0",
"date": "2025-11-21T22:54:49Z"
},
{
"name": "rclone/rclone",
"version": "v1.72.0",
"date": "2025-11-21T18:20:58Z"
},
{ {
"name": "Bubka/2FAuth", "name": "Bubka/2FAuth",
"version": "v5.6.1", "version": "v5.6.1",
@ -1014,11 +1034,6 @@
"version": "v0.28.2", "version": "v0.28.2",
"date": "2025-11-18T05:51:46Z" "date": "2025-11-18T05:51:46Z"
}, },
{
"name": "passbolt/passbolt_api",
"version": "v5.7.2",
"date": "2025-11-17T15:17:55Z"
},
{ {
"name": "librenms/librenms", "name": "librenms/librenms",
"version": "25.11.0", "version": "25.11.0",
@ -1094,16 +1109,6 @@
"version": "v5.1.0", "version": "v5.1.0",
"date": "2025-11-12T10:44:24Z" "date": "2025-11-12T10:44:24Z"
}, },
{
"name": "moghtech/komodo",
"version": "v1.19.5",
"date": "2025-09-27T20:59:46Z"
},
{
"name": "gethomepage/homepage",
"version": "v1.7.0",
"date": "2025-11-11T17:24:27Z"
},
{ {
"name": "CrazyWolf13/web-check", "name": "CrazyWolf13/web-check",
"version": "1.1.0", "version": "1.1.0",
@ -1184,11 +1189,6 @@
"version": "v4.0.16.2944", "version": "v4.0.16.2944",
"date": "2025-11-05T01:56:48Z" "date": "2025-11-05T01:56:48Z"
}, },
{
"name": "prometheus/alertmanager",
"version": "v0.29.0",
"date": "2025-11-04T15:00:07Z"
},
{ {
"name": "cross-seed/cross-seed", "name": "cross-seed/cross-seed",
"version": "v6.13.6", "version": "v6.13.6",
@ -1199,11 +1199,6 @@
"version": "v3.0.9", "version": "v3.0.9",
"date": "2025-11-04T07:28:45Z" "date": "2025-11-04T07:28:45Z"
}, },
{
"name": "motioneye-project/motioneye",
"version": "0.42.1",
"date": "2020-06-07T07:27:04Z"
},
{ {
"name": "wanetty/upgopher", "name": "wanetty/upgopher",
"version": "v1.12.0", "version": "v1.12.0",
@ -1289,11 +1284,6 @@
"version": "RELEASE.2025-10-15T17-29-55Z", "version": "RELEASE.2025-10-15T17-29-55Z",
"date": "2025-10-16T19:33:51Z" "date": "2025-10-16T19:33:51Z"
}, },
{
"name": "linkwarden/linkwarden",
"version": "v2.13.1",
"date": "2025-10-15T13:29:37Z"
},
{ {
"name": "rogerfar/rdt-client", "name": "rogerfar/rdt-client",
"version": "v2.0.119", "version": "v2.0.119",
@ -1748,5 +1738,15 @@
"name": "thelounge/thelounge-deb", "name": "thelounge/thelounge-deb",
"version": "v4.4.3", "version": "v4.4.3",
"date": "2024-04-06T12:24:35Z" "date": "2024-04-06T12:24:35Z"
},
{
"name": "deepch/RTSPtoWeb",
"version": "v2.4.3",
"date": "2023-03-29T12:05:02Z"
},
{
"name": "Shinobi-Systems/Shinobi",
"version": "furrykitten-3",
"date": "2022-07-15T05:20:17Z"
} }
] ]

View File

@ -14,10 +14,7 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y build-essential
default-libmysqlclient-dev \
build-essential \
pkg-config
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PYTHON_VERSION="3.13" setup_uv PYTHON_VERSION="3.13" setup_uv

View File

@ -0,0 +1,168 @@
#!/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://invoiceninja.com/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
nginx \
supervisor
msg_ok "Installed Dependencies"
setup_mariadb
MARIADB_DB_NAME="invoiceninja" MARIADB_DB_USER="invoiceninja" setup_mariadb_db
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="bcmath,curl,gd,gmp,imagick,intl,mbstring,mysql,soap,xml,zip" setup_php
import_local_ip
fetch_and_deploy_gh_release "invoiceninja" "invoiceninja/invoiceninja" "prebuild" "latest" "/opt/invoiceninja" "invoiceninja.tar.gz"
msg_info "Configuring InvoiceNinja"
cd /opt/invoiceninja
APP_KEY=$(php artisan key:generate --show)
cat <<EOF >/opt/invoiceninja/.env
APP_NAME="Invoice Ninja"
APP_ENV=production
APP_KEY=${APP_KEY}
APP_DEBUG=false
APP_URL=http://${LOCAL_IP}:8080
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=${MARIADB_DB_NAME}
DB_USERNAME=${MARIADB_DB_USER}
DB_PASSWORD=${MARIADB_DB_PASS}
MULTI_DB_ENABLED=false
DEMO_MODE=false
BROADCAST_DRIVER=log
LOG_CHANNEL=stack
CACHE_DRIVER=file
QUEUE_CONNECTION=database
SESSION_DRIVER=file
SESSION_LIFETIME=120
MAIL_MAILER=log
MAIL_HOST=null
MAIL_PORT=null
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="noreply@localhost"
MAIL_FROM_NAME="Invoice Ninja"
REQUIRE_HTTPS=false
NINJA_ENVIRONMENT=selfhost
PDF_GENERATOR=snappdf
TRUSTED_PROXIES=*
INTERNAL_QUEUE_ENABLED=false
EOF
mkdir -p /opt/invoiceninja/bootstrap/cache
mkdir -p /opt/invoiceninja/storage/{app/public,framework/{cache/data,sessions,views},logs}
chown -R www-data:www-data /opt/invoiceninja
chmod -R 775 /opt/invoiceninja/storage /opt/invoiceninja/bootstrap/cache
msg_ok "Configured InvoiceNinja"
msg_info "Setting up Database"
cd /opt/invoiceninja
$STD php artisan config:clear
$STD php artisan cache:clear
$STD php artisan route:clear
$STD php artisan view:clear
$STD php artisan migrate --force
$STD php artisan db:seed --force
$STD php artisan optimize
msg_ok "Set up Database"
msg_info "Configuring Nginx"
cat <<'EOF' >/etc/nginx/sites-available/invoiceninja
server {
listen 8080;
server_name _;
root /opt/invoiceninja/public;
index index.php;
client_max_body_size 50M;
charset utf-8;
gzip on;
gzip_types application/javascript application/x-javascript text/javascript text/plain application/xml application/json;
gzip_proxied no-cache no-store private expired auth;
gzip_min_length 1000;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /index.php {
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location ~ \.php$ {
return 403;
}
location ~ /\.ht {
deny all;
}
error_log /var/log/nginx/invoiceninja_error.log;
access_log /var/log/nginx/invoiceninja_access.log;
}
EOF
ln -sf /etc/nginx/sites-available/invoiceninja /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
$STD systemctl reload nginx
msg_ok "Configured Nginx"
msg_info "Setting up Queue Worker"
cat <<'EOF' >/etc/supervisor/conf.d/invoiceninja-worker.conf
[program:invoiceninja-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /opt/invoiceninja/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/invoiceninja-worker.log
stopwaitsecs=3600
EOF
touch /var/log/invoiceninja-worker.log
chown www-data:www-data /var/log/invoiceninja-worker.log
$STD supervisorctl reread
$STD supervisorctl update
msg_ok "Set up Queue Worker"
msg_info "Setting up Cron"
cat <<'EOF' >/etc/cron.d/invoiceninja
* * * * * www-data cd /opt/invoiceninja && php artisan schedule:run >> /dev/null 2>&1
EOF
msg_ok "Set up Cron"
msg_info "Enabling Services"
systemctl enable -q --now php8.4-fpm nginx supervisor
msg_ok "Enabled Services"
motd_ssh
customize
cleanup_lxc

View File

@ -3,7 +3,7 @@
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream # Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/mayanayza/netvisor # Source: https://github.com/netvisor-io/netvisor
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color color
@ -24,7 +24,7 @@ PG_VERSION=17 setup_postgresql
NODE_VERSION="24" setup_nodejs NODE_VERSION="24" setup_nodejs
PG_DB_NAME="netvisor_db" PG_DB_USER="netvisor" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db PG_DB_NAME="netvisor_db" PG_DB_USER="netvisor" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
fetch_and_deploy_gh_release "netvisor" "mayanayza/netvisor" "tarball" "latest" "/opt/netvisor" fetch_and_deploy_gh_release "netvisor" "netvisor-io/netvisor" "tarball" "latest" "/opt/netvisor"
TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')" TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')"
RUST_TOOLCHAIN=$TOOLCHAIN setup_rust RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
@ -78,7 +78,7 @@ NETVISOR_BIND_ADDRESS=0.0.0.0
NETVISOR_NAME="netvisor-daemon" NETVISOR_NAME="netvisor-daemon"
NETVISOR_HEARTBEAT_INTERVAL=30 NETVISOR_HEARTBEAT_INTERVAL=30
### - see https://github.com/mayanayza/netvisor/blob/main/docs/CONFIGURATION.md for more options ### - see https://github.com/netvisor-io/netvisor/blob/main/docs/CONFIGURATION.md for more options
EOF EOF
cat <<EOF >/etc/systemd/system/netvisor-server.service cat <<EOF >/etc/systemd/system/netvisor-server.service

View File

@ -62,7 +62,7 @@ server:
secret: "$SECRET_KEY" secret: "$SECRET_KEY"
gerbil: gerbil:
base_endpoint: "$pango_url" base_endpoint: "${pango_url#https://}"
flags: flags:
require_email_verification: false require_email_verification: false
@ -130,7 +130,7 @@ http:
routers: routers:
# HTTP to HTTPS redirect router # HTTP to HTTPS redirect router
main-app-router-redirect: main-app-router-redirect:
rule: "Host(\`$pango_url\`)" rule: "Host(\`${pango_url#https://}\`)"
service: next-service service: next-service
entryPoints: entryPoints:
- web - web
@ -139,7 +139,7 @@ http:
# Next.js router (handles everything except API and WebSocket paths) # Next.js router (handles everything except API and WebSocket paths)
next-router: next-router:
rule: "Host(\`$pango_url\`) && !PathPrefix(\`/api/v1\`)" rule: "Host(\`${pango_url#https://}\`) && !PathPrefix(\`/api/v1\`)"
service: next-service service: next-service
entryPoints: entryPoints:
- websecure - websecure
@ -148,7 +148,7 @@ http:
# API router (handles /api/v1 paths) # API router (handles /api/v1 paths)
api-router: api-router:
rule: "Host(\`$pango_url\`) && PathPrefix(\`/api/v1\`)" rule: "Host(\`${pango_url#https://}\`) && PathPrefix(\`/api/v1\`)"
service: api-service service: api-service
entryPoints: entryPoints:
- websecure - websecure
@ -157,7 +157,7 @@ http:
# WebSocket router # WebSocket router
ws-router: ws-router:
rule: "Host(\`$pango_url\`)" rule: "Host(\`${pango_url#https://}\`)"
service: api-service service: api-service
entryPoints: entryPoints:
- websecure - websecure

View File

@ -23,45 +23,29 @@ PHP_VERSION="8.3" PHP_MODULE="common,ctype,ldap,fileinfo,iconv,mysql,soap,xsl" P
setup_composer setup_composer
fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball" fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball"
setup_mariadb setup_mariadb
MARIADB_DB_NAME="snipeit_db" MARIADB_DB_USER="snipeit" setup_mariadb_db
msg_info "Setting up database" import_local_ip
DB_NAME=snipeit_db
DB_USER=snipeit
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{
echo "SnipeIT-Credentials"
echo "SnipeIT Database User: $DB_USER"
echo "SnipeIT Database Password: $DB_PASS"
echo "SnipeIT Database Name: $DB_NAME"
} >>~/snipeit.creds
msg_ok "Set up database"
msg_info "Configuring Snipe-IT" msg_info "Configuring Snipe-IT"
cd /opt/snipe-it cd /opt/snipe-it
cp .env.example .env cp .env.example .env
IPADDRESS=$(hostname -I | awk '{print $1}') sed -i -e "s|^APP_URL=.*|APP_URL=http://$LOCAL_IP|" \
-e "s|^DB_DATABASE=.*|DB_DATABASE=$MARIADB_DB_NAME|" \
sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \ -e "s|^DB_USERNAME=.*|DB_USERNAME=$MARIADB_DB_USER|" \
-e "s|^DB_DATABASE=.*|DB_DATABASE=$DB_NAME|" \ -e "s|^DB_PASSWORD=.*|DB_PASSWORD=$MARIADB_DB_PASS|" .env
-e "s|^DB_USERNAME=.*|DB_USERNAME=$DB_USER|" \
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=$DB_PASS|" .env
chown -R www-data: /opt/snipe-it chown -R www-data: /opt/snipe-it
chmod -R 755 /opt/snipe-it chmod -R 755 /opt/snipe-it
export COMPOSER_ALLOW_SUPERUSER=1 export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --no-dev --optimize-autoloader --no-interaction $STD composer install --no-dev --optimize-autoloader --no-interaction
$STD php artisan key:generate --force $STD php artisan key:generate --force
msg_ok "Configured SnipeIT" msg_ok "Configured Snipe-IT"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/nginx/conf.d/snipeit.conf cat <<EOF >/etc/nginx/conf.d/snipeit.conf
server { server {
listen 80; listen 80;
root /opt/snipe-it/public; root /opt/snipe-it/public;
server_name $IPADDRESS; server_name $LOCAL_IP;
client_max_body_size 100M; client_max_body_size 100M;
index index.php; index index.php;

View File

@ -14,24 +14,11 @@ update_os
JAVA_VERSION="21" setup_java JAVA_VERSION="21" setup_java
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
PG_DB_NAME="sonarqube" PG_DB_USER="sonarqube" setup_postgresql_db
msg_info "Installing Postgresql" msg_info "Setting up SonarQube"
DB_NAME="sonarqube"
DB_USER="sonarqube"
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;"
{
echo "Application Credentials"
echo "DB_NAME: $DB_NAME"
echo "DB_USER: $DB_USER"
echo "DB_PASS: $DB_PASS"
} >>~/sonarqube.creds
msg_ok "Installed PostgreSQL"
msg_info "Configuring SonarQube"
temp_file=$(mktemp) temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/SonarSource/sonarqube/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(get_latest_github_release "SonarSource/sonarqube")
curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
unzip -q "$temp_file" -d /opt unzip -q "$temp_file" -d /opt
mv /opt/sonarqube-* /opt/sonarqube mv /opt/sonarqube-* /opt/sonarqube

View File

@ -24,7 +24,6 @@ curl -fsSL "https://services.sonarr.tv/v1/download/main/latest?version=4&os=linu
tar -xzf SonarrV4.tar.gz tar -xzf SonarrV4.tar.gz
mv Sonarr /opt mv Sonarr /opt
rm -rf SonarrV4.tar.gz rm -rf SonarrV4.tar.gz
msg_ok "Installed Sonarr v4" msg_ok "Installed Sonarr v4"
msg_info "Creating Service" msg_info "Creating Service"
@ -32,12 +31,14 @@ cat <<EOF >/etc/systemd/system/sonarr.service
[Unit] [Unit]
Description=Sonarr Daemon Description=Sonarr Daemon
After=syslog.target network.target After=syslog.target network.target
[Service] [Service]
Type=simple Type=simple
ExecStart=/opt/Sonarr/Sonarr -nobrowser -data=/var/lib/sonarr/ ExecStart=/opt/Sonarr/Sonarr -nobrowser -data=/var/lib/sonarr/
TimeoutStopSec=20 TimeoutStopSec=20
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF

View File

@ -0,0 +1,162 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: AlphaLawless
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/alexjustesen/speedtest-tracker
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
nginx \
sqlite3
msg_ok "Installed Dependencies"
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="common,sqlite3,redis" setup_php
setup_composer
NODE_VERSION="22" setup_nodejs
import_local_ip
fetch_and_deploy_gh_release "speedtest-tracker" "alexjustesen/speedtest-tracker" "tarball" "latest" "/opt/speedtest-tracker"
msg_info "Installing Speedtest CLI"
setup_deb822_repo \
"speedtest-cli" \
"https://packagecloud.io/ookla/speedtest-cli/gpgkey" \
"https://packagecloud.io/ookla/speedtest-cli/debian" \
"$(get_os_info codename)" \
"main"
$STD apt install -y speedtest
msg_ok "Installed Speedtest CLI"
msg_info "Configuring PHP-FPM runtime directory"
mkdir -p /etc/systemd/system/php8.4-fpm.service.d/
cat <<EOF >/etc/systemd/system/php8.4-fpm.service.d/override.conf
[Service]
RuntimeDirectory=php
RuntimeDirectoryMode=0755
EOF
msg_ok "Configured PHP-FPM runtime directory"
msg_info "Setting up Speedtest Tracker"
cd /opt/speedtest-tracker
APP_KEY=$(php -r "echo bin2hex(random_bytes(16));")
TIMEZONE=$(timedatectl | grep "Time zone" | awk '{print $3}')
cat <<EOF >/opt/speedtest-tracker/.env
APP_NAME="Speedtest Tracker"
APP_ENV=production
APP_TIMEZONE=${TIMEZONE}
APP_KEY=base64:$(echo -n $APP_KEY | base64)
APP_DEBUG=false
APP_URL=http://${LOCAL_IP}
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=sqlite
DB_DATABASE=/opt/speedtest-tracker/database/database.sqlite
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
SPEEDTEST_SCHEDULE="0 */6 * * *"
SPEEDTEST_SERVERS=
PRUNE_RESULTS_OLDER_THAN=0
DISPLAY_TIMEZONE=${TIMEZONE}
EOF
mkdir -p /opt/speedtest-tracker/database
touch /opt/speedtest-tracker/database/database.sqlite
export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --optimize-autoloader --no-dev
$STD npm ci
$STD npm run build
$STD php artisan key:generate --force
$STD php artisan migrate --force --seed
$STD php artisan config:clear
$STD php artisan cache:clear
$STD php artisan view:clear
chown -R www-data:www-data /opt/speedtest-tracker
chmod -R 755 /opt/speedtest-tracker/storage
chmod -R 755 /opt/speedtest-tracker/bootstrap/cache
msg_ok "Set up Speedtest Tracker"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/speedtest-tracker.service
[Unit]
Description=Speedtest Tracker Queue Worker
After=network.target
[Service]
Type=simple
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /opt/speedtest-tracker/artisan queue:work --sleep=3 --tries=3 --max-time=3600
WorkingDirectory=/opt/speedtest-tracker
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now speedtest-tracker
msg_ok "Created Service"
msg_info "Setting up Scheduler"
cat <<EOF >/etc/cron.d/speedtest-tracker
* * * * * www-data cd /opt/speedtest-tracker && php artisan schedule:run >> /dev/null 2>&1
EOF
msg_ok "Set up Scheduler"
msg_info "Configuring Nginx"
cat <<EOF >/etc/nginx/sites-available/speedtest-tracker
server {
listen 80;
server_name _;
root /opt/speedtest-tracker/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files \$uri \$uri/ /index.php?\$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
EOF
ln -sf /etc/nginx/sites-available/speedtest-tracker /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
systemctl reload nginx
msg_ok "Configured Nginx"
motd_ssh
customize
cleanup_lxc

View File

@ -13,26 +13,20 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Setting up Syncthing repo" setup_deb822_repo \
mkdir -p /usr/share/keyrings "syncthing" \
curl -fsSL "https://syncthing.net/release-key.gpg" -o /usr/share/keyrings/syncthing-archive-keyring.gpg "https://syncthing.net/release-key.gpg" \
cat <<EOF >/etc/apt/sources.list.d/syncthing.sources "https://apt.syncthing.net/" \
Types: deb "syncthing" \
URIs: https://apt.syncthing.net/ "stable-v2"
Suites: syncthing
Components: stable-v2
Signed-By: /usr/share/keyrings/syncthing-archive-keyring.gpg
EOF
$STD apt update
msg_ok "Set up Syncthing repo"
msg_info "Installing Syncthing" msg_info "Setting up Syncthing"
$STD apt install -y syncthing $STD apt install -y syncthing
systemctl enable -q --now syncthing@root systemctl enable -q --now syncthing@root
sleep 5 sleep 5
sed -i "{s/127.0.0.1:8384/0.0.0.0:8384/g}" /root/.local/state/syncthing/config.xml sed -i "{s/127.0.0.1:8384/0.0.0.0:8384/g}" /root/.local/state/syncthing/config.xml
systemctl restart syncthing@root systemctl restart syncthing@root
msg_ok "Installed Syncthing" msg_ok "Setup Syncthing"
motd_ssh motd_ssh
customize customize

View File

@ -13,13 +13,15 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing ASP.NET Core Runtime" msg_info "Installing Dependencies"
curl -fsSL "https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb" -o "packages-microsoft-prod.deb" setup_deb822_repo \
$STD dpkg -i packages-microsoft-prod.deb "microsoft" \
rm -rf packages-microsoft-prod.deb "https://packages.microsoft.com/keys/microsoft-2025.asc" \
$STD apt update "https://packages.microsoft.com/debian/13/prod/" \
"trixie" \
"main"
$STD apt install -y aspnetcore-runtime-9.0 $STD apt install -y aspnetcore-runtime-9.0
msg_ok "Installed ASP.NET Core Runtime" msg_ok "Installed Dependencies"
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+') RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
msg_info "Installing Technitium DNS" msg_info "Installing Technitium DNS"

View File

@ -1047,7 +1047,7 @@ advanced_settings() {
local _enable_mknod="${var_mknod:-0}" local _enable_mknod="${var_mknod:-0}"
local _mount_fs="${var_mount_fs:-}" local _mount_fs="${var_mount_fs:-}"
local _protect_ct="${var_protection:-no}" local _protect_ct="${var_protection:-no}"
# Detect host timezone for default (if not set via var_timezone) # Detect host timezone for default (if not set via var_timezone)
local _host_timezone="" local _host_timezone=""
if command -v timedatectl >/dev/null 2>&1; then if command -v timedatectl >/dev/null 2>&1; then
@ -2630,10 +2630,15 @@ build_container() {
export DEV_MODE_DRYRUN="${DEV_MODE_DRYRUN:-false}" export DEV_MODE_DRYRUN="${DEV_MODE_DRYRUN:-false}"
# Build PCT_OPTIONS as multi-line string # Build PCT_OPTIONS as multi-line string
PCT_OPTIONS_STRING=" -features $FEATURES PCT_OPTIONS_STRING=" -hostname $HN
-hostname $HN
-tags $TAGS" -tags $TAGS"
# Only add -features if FEATURES is not empty
if [ -n "$FEATURES" ]; then
PCT_OPTIONS_STRING=" -features $FEATURES
$PCT_OPTIONS_STRING"
fi
# Add storage if specified # Add storage if specified
if [ -n "$SD" ]; then if [ -n "$SD" ]; then
PCT_OPTIONS_STRING="$PCT_OPTIONS_STRING PCT_OPTIONS_STRING="$PCT_OPTIONS_STRING