Compare commits

..

30 Commits

Author SHA1 Message Date
CanbiZ
6f358d7e5d Add PostGIS extension check to Reitti update_script
Automatically enable PostGIS extension on existing installations if missing.
Checks if extension is already enabled before attempting to create it.

Fixes existing Reitti installations that were created before PostGIS was
added to the initial setup (commit b6312b87d).

Users no longer need to manually run 'CREATE EXTENSION postgis;'
2026-01-05 15:15:59 +01:00
CanbiZ
e44a8e8af8 Add idempotency check for Debian 13 certbot fix
Only apply certbot-dns-multi fix if not already installed.
Checks pip list for certbot-dns-multi before installing golang deps.

Prevents unnecessary reinstallation on repeated update runs.
2026-01-05 15:00:25 +01:00
CanbiZ
b42f9fabe1 Fix NPM API health issues on Debian 13 with certbot-dns-multi
On Debian 13 Trixie, NPM shows 'API isn't healthy' after upgrade.
Install certbot-dns-multi with golang dependencies to fix this.

Changes:
- Install golang, build-essential, git on Debian 13
- Install setuptools-golang==2.9.0 in certbot venv
- Set CGO_ENABLED=1 and GO111MODULE=on for pip install
- Install certbot-dns-multi with --no-build-isolation flag
- Applied to both fresh install and update_script()

Credit: @i4mr000t and @CrazyWolf13
Source: https://v64.tech/t/nginx-proxy-manager-dnschallenge-ipv64-debian-13-fail/4177/7
Fixes: #7489 - NPM Web UI broken after Debian 13 upgrade
2026-01-05 14:59:30 +01:00
CanbiZ
259f14b8e9 Fix openresty suite mapping for Debian 13
Openresty doesn't have trixie packages yet, only bookworm.
Map trixie and sid to use bookworm packages which are compatible.

Available openresty suites: bookworm, bullseye, buster, stretch, jessie
Fixes 404 errors when installing/updating on Debian 13 Trixie
2026-01-05 14:57:40 +01:00
CanbiZ
0fb5fc5ce0 Fix Nginx Proxy Manager for Debian 13 Trixie
- Detect Debian version dynamically from /etc/os-release
- Replace hardcoded 'bookworm' with VERSION_CODENAME in openresty sources
- Fixes both install and update_script() functions
- Ensures openresty repository matches container's Debian version

Fixes: Nginx Proxy Manager update fails on Debian 13 with 404 errors
Previously: Only worked on Debian 12 Bookworm due to hardcoded suite name
2026-01-05 14:56:49 +01:00
community-scripts-pr-app[bot]
32927d903e Update versions.json (#10553)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-05 13:07:43 +01:00
community-scripts-pr-app[bot]
66808d03a8 Update CHANGELOG.md (#10550)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-05 08:44:36 +00:00
Joerg Heinemann
b59e04fa94 Upgrade evcc LXC to Debian 13 (#10548) 2026-01-05 09:44:15 +01:00
community-scripts-pr-app[bot]
cc1117db5d Update CHANGELOG.md (#10545)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-05 00:15:27 +00:00
community-scripts-pr-app[bot]
a1005795fc Update versions.json (#10544)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-05 01:15:01 +01:00
community-scripts-pr-app[bot]
4f2fb3c6cc Update CHANGELOG.md (#10542)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 22:11:53 +00:00
Rémi Bédard-Couture
cd8991875b Export IPV6_METHOD to trigger verb_ip6() function (#10538) 2026-01-04 23:11:29 +01:00
community-scripts-pr-app[bot]
c6a2548f10 Update CHANGELOG.md (#10541)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 22:09:31 +00:00
Slaviša Arežina
ad22b8ddd4 Update config_path in prowlarr.json (#10504) 2026-01-04 23:09:08 +01:00
community-scripts-pr-app[bot]
03f805e54b Update CHANGELOG.md (#10540)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 22:08:09 +00:00
Slaviša Arežina
5f67c385b8 PocketID: Update PocketID for 2.x (#10506)
* Update PocketID for 2.x

* Update env var
2026-01-04 23:07:44 +01:00
community-scripts-pr-app[bot]
eeb4c0a860 Update CHANGELOG.md (#10539)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 22:07:17 +00:00
Tobias
266a23d319 fix: reitti: nginx (#10511)
* fix: reitti: nginx

* fix: reitti: nginx
2026-01-04 23:06:56 +01:00
community-scripts-pr-app[bot]
7cafd046ca Update CHANGELOG.md (#10537)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 22:06:20 +00:00
Slaviša Arežina
41c8c4ce0b Refactor (#10518) 2026-01-04 23:05:51 +01:00
community-scripts-pr-app[bot]
a4f62116c9 Update CHANGELOG.md (#10536)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 22:04:11 +00:00
CanbiZ (MickLesk)
3cd02aac77 MagicMirror: bump to nodejs 24 (#10534) 2026-01-04 23:03:45 +01:00
community-scripts-pr-app[bot]
aebb4c3a55 Update CHANGELOG.md (#10531)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 19:51:06 +00:00
community-scripts-pr-app[bot]
a30c6fc3a9 Update CHANGELOG.md (#10530)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 19:50:57 +00:00
Slaviša Arežina
dbe2c553fe Refactor (#10517) 2026-01-04 20:50:43 +01:00
community-scripts-pr-app[bot]
195f073ea3 Update CHANGELOG.md (#10529)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 19:50:35 +00:00
Slaviša Arežina
57d43f1a94 Refactor (#10516) 2026-01-04 20:50:07 +01:00
community-scripts-pr-app[bot]
11dced98c2 Update CHANGELOG.md (#10527)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 17:33:34 +00:00
Slaviša Arežina
d025bf1cf6 Refactor (#10519) 2026-01-04 18:33:09 +01:00
community-scripts-pr-app[bot]
7cd1546135 Update versions.json (#10526)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-04 13:05:53 +01:00
23 changed files with 268 additions and 232 deletions

View File

@@ -10,8 +10,43 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2026-01-05
### 🚀 Updated Scripts
- #### 🔧 Refactor
- Upgrade evcc LXC to Debian 13 [@heinemannj](https://github.com/heinemannj) ([#10548](https://github.com/community-scripts/ProxmoxVE/pull/10548))
## 2026-01-04
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- PocketID: Update PocketID for 2.x [@tremor021](https://github.com/tremor021) ([#10506](https://github.com/community-scripts/ProxmoxVE/pull/10506))
- fix: reitti: nginx [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10511](https://github.com/community-scripts/ProxmoxVE/pull/10511))
- MagicMirror: bump to nodejs 24 [@MickLesk](https://github.com/MickLesk) ([#10534](https://github.com/community-scripts/ProxmoxVE/pull/10534))
- #### 🔧 Refactor
- Refactor: SFTPGo [@tremor021](https://github.com/tremor021) ([#10518](https://github.com/community-scripts/ProxmoxVE/pull/10518))
- Refactor: Pelican Wings [@tremor021](https://github.com/tremor021) ([#10517](https://github.com/community-scripts/ProxmoxVE/pull/10517))
- Refactor: Pelican Panel [@tremor021](https://github.com/tremor021) ([#10516](https://github.com/community-scripts/ProxmoxVE/pull/10516))
- Refactor: Audiobookshelf [@tremor021](https://github.com/tremor021) ([#10519](https://github.com/community-scripts/ProxmoxVE/pull/10519))
### 💾 Core
- #### 🐞 Bug Fixes
- Export IPV6_METHOD to trigger verb_ip6() function [@remz1337](https://github.com/remz1337) ([#10538](https://github.com/community-scripts/ProxmoxVE/pull/10538))
### 🌐 Website
- #### 📝 Script Information
- Prowlarr: Update config_path [@tremor021](https://github.com/tremor021) ([#10504](https://github.com/community-scripts/ProxmoxVE/pull/10504))
## 2026-01-03
### 🚀 Updated Scripts

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -30,7 +30,7 @@ function update_script() {
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
$STD apt-get upgrade -y
msg_ok "Updated $APP LXC"
msg_ok "Updated successfully!"
exit

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"

View File

@@ -32,6 +32,8 @@ function update_script() {
systemctl stop magicmirror
msg_ok "Stopped Service"
NODE_VERSION="24" setup_nodejs
msg_info "Backing up data"
rm -rf /opt/magicmirror-backup
mkdir /opt/magicmirror-backup

View File

@@ -157,18 +157,39 @@ EOF
[ -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg ] && rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg
[ -f /etc/apt/sources.list.d/openresty.list ] && rm -f /etc/apt/sources.list.d/openresty.list
[ ! -f /etc/apt/trusted.gpg.d/openresty.gpg ] && curl -fsSL https://openresty.org/package/pubkey.gpg | gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/openresty.gpg
[ ! -f /etc/apt/sources.list.d/openresty.sources ] && cat <<'EOF' >/etc/apt/sources.list.d/openresty.sources
if [ ! -f /etc/apt/sources.list.d/openresty.sources ]; then
DEBIAN_VERSION=$(grep -E '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)
# Openresty only has bookworm, not trixie - map newer versions to bookworm
case "$DEBIAN_VERSION" in
trixie|sid) OPENRESTY_SUITE="bookworm" ;;
*) OPENRESTY_SUITE="$DEBIAN_VERSION" ;;
esac
cat <<EOF >/etc/apt/sources.list.d/openresty.sources
Types: deb
URIs: http://openresty.org/package/debian/
Suites: bookworm
Suites: ${OPENRESTY_SUITE}
Components: openresty
Signed-By: /etc/apt/trusted.gpg.d/openresty.gpg
EOF
fi
$STD apt update
$STD apt -y install openresty
if [ -d /opt/certbot ]; then
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
$STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
# Fix for Debian 13 Trixie - certbot-dns-multi needed to prevent "API isn't healthy" error
if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"13"* ]]; then
if ! /opt/certbot/bin/pip list 2>/dev/null | grep -q certbot-dns-multi; then
msg_info "Applying Debian 13 Certbot Fix"
$STD apt-get install -y golang build-essential git
$STD /opt/certbot/bin/pip install --no-cache-dir setuptools-golang==2.9.0
export CGO_ENABLED=1
export GO111MODULE=on
$STD /opt/certbot/bin/pip install --no-build-isolation --no-cache-dir certbot-dns-multi
msg_ok "Applied Debian 13 Certbot Fix"
fi
fi
fi
msg_ok "Updated Certbot"

View File

@@ -27,37 +27,31 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
setup_mariadb
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
setup_composer
if [[ "$CURRENT_PHP" != "8.4" ]]; then
msg_info "Migrating PHP $CURRENT_PHP to 8.4"
$STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
$STD apt update
$STD apt remove -y php"${CURRENT_PHP//./}"*
$STD apt install -y \
php8.4 \
php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm} \
libapache2-mod-php8.4
PHP_VERSION="8.4" PHP_MODULE="mysql,sqlite3" PHP_APACHE="YES" PHP_FPM="YES" setup_php
msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/pelican-dev/panel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
if check_for_gh_release "pelican-panel" "pelican-dev/panel"; then
msg_info "Stopping Service"
cd /opt/pelican-panel
$STD php artisan down
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
cp -r /opt/pelican-panel/.env /opt/
SQLITE_INSTALL=$(ls /opt/pelican-panel/database/*.sqlite 1>/dev/null 2>&1 && echo "true" || echo "false")
$SQLITE_INSTALL && cp -r /opt/pelican-panel/database/*.sqlite /opt/
rm -rf * .*
curl -fsSL "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz" -o $(basename "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz")
tar -xzf "panel.tar.gz"
fetch_and_deploy_gh_release "pelican-panel" "pelican-dev/panel" "prebuild" "latest" "/opt/pelican-panel" "panel.tar.gz"
msg_info "Updating Pelican Panel"
mv /opt/.env /opt/pelican-panel/
$SQLITE_INSTALL && mv /opt/*.sqlite /opt/pelican-panel/database/
$STD composer install --no-dev --optimize-autoloader --no-interaction
@@ -68,17 +62,13 @@ function update_script() {
$STD php artisan migrate --seed --force
chown -R www-data:www-data /opt/pelican-panel
chmod -R 755 /opt/pelican-panel/storage /opt/pelican-panel/bootstrap/cache/
rm -rf "/opt/pelican-panel/panel.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_ok "Updated Pelican Panel"
msg_info "Starting Service"
$STD php artisan queue:restart
$STD php artisan up
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}

View File

@@ -27,25 +27,18 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/pelican-dev/wings/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
if check_for_gh_release "wings" "pelican-dev/wings"; then
msg_info "Stopping Service"
systemctl stop wings
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
rm /usr/local/bin/wings
curl -fsSL "https://github.com/pelican-dev/wings/releases/download/v${RELEASE}/wings_linux_amd64" -o "/usr/local/bin/wings"
chmod u+x /usr/local/bin/wings
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
fetch_and_deploy_gh_release "wings" "pelican-dev/wings" "singlefile" "latest" "/usr/local/bin" "wings_linux_amd64"
msg_info "Starting Service"
systemctl start wings
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}

View File

@@ -29,6 +29,12 @@ function update_script() {
exit
fi
# Mandatory as of v2.x.x
ENCRYPTION_KEY=$(openssl rand -base64 32)
if ! grep -q '^ENCRYPTION_KEY=' /opt/pocket-id/.env; then
echo "ENCRYPTION_KEY=$ENCRYPTION_KEY" >> /opt/pocket-id/.env
fi
if check_for_gh_release "pocket-id" "pocket-id/pocket-id"; then
if [ "$(printf '%s\n%s' "$(cat ~/.pocket-id 2>/dev/null || echo 0.0.0)" "1.0.0" | sort -V | head -n1)" = "$(cat ~/.pocket-id 2>/dev/null || echo 0.0.0)" ] &&
[ "$(cat ~/.pocket-id 2>/dev/null || echo 0.0.0)" != "1.0.0" ]; then

View File

@@ -28,11 +28,22 @@ function update_script() {
exit
fi
# Enable PostGIS extension if not already enabled
if systemctl is-active --quiet postgresql; then
if ! sudo -u postgres psql -d reitti -tAc "SELECT 1 FROM pg_extension WHERE extname='postgis'" 2>/dev/null | grep -q 1; then
msg_info "Enabling PostGIS extension"
sudo -u postgres psql -d reitti -c "CREATE EXTENSION IF NOT EXISTS postgis;" &>/dev/null
msg_ok "Enabled PostGIS extension"
fi
fi
if [ ! -d /var/cache/nginx/tiles ]; then
msg_info "Installing Nginx Tile Cache"
mkdir -p /var/cache/nginx/tiles
$STD apt install -y nginx
cat <<EOF >/etc/nginx/nginx.conf
user www-data;
events {
worker_connections 1024;
}
@@ -51,7 +62,8 @@ http {
}
}
EOF
chown -R www-data:www-data /var/cache/nginx/tiles
chown -R www-data:www-data /var/cache/nginx
chmod -R 750 /var/cache/nginx
systemctl restart nginx
echo "reitti.ui.tiles.cache.url=http://127.0.0.1" >> /opt/reitti/application.properties
systemctl restart reitti

View File

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

View File

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

View File

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

View File

@@ -12,7 +12,7 @@
"documentation": "https://wiki.servarr.com/prowlarr",
"website": "https://github.com/Prowlarr/Prowlarr",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/prowlarr.webp",
"config_path": "",
"config_path": "/var/lib/prowlarr/",
"description": "Prowlarr is a software tool designed to integrate with various PVR (Personal Video Recorder) apps. It is built on a popular *arr .net/ReactJS base stack and serves as an indexer manager and proxy. Prowlarr makes it easy to manage and organize TV show and movie collections, by integrating with popular PVR apps and automating the downloading and organizing of media files. The software provides a web-based interface for managing and organizing TV shows and movies, making it easy to search and find content. Prowlarr also supports metadata management, including show and movie information, making it easy for users to keep their media 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 media collections, making it a valuable tool for media enthusiasts who want to keep their collection organized and up-to-date. With Prowlarr, users can enjoy their media collection from anywhere, making it a powerful tool for managing and sharing media files.",
"install_methods": [
{

View File

@@ -1,4 +1,119 @@
[
{
"name": "theonedev/onedev",
"version": "v14.0.2",
"date": "2026-01-05T10:59:42Z"
},
{
"name": "mattermost/mattermost",
"version": "v11.1.2",
"date": "2025-12-17T09:26:24Z"
},
{
"name": "maxdorninger/MediaManager",
"version": "v1.12.1",
"date": "2026-01-05T09:06:22Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "develop-20251228",
"date": "2025-12-28T05:59:54Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.4",
"date": "2026-01-04T22:41:00Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.726",
"date": "2026-01-05T06:02:39Z"
},
{
"name": "jason5ng32/MyIP",
"version": "v5.2.0",
"date": "2026-01-05T05:56:57Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.16.5",
"date": "2026-01-05T02:26:15Z"
},
{
"name": "louislam/uptime-kuma",
"version": "2.0.2",
"date": "2025-10-22T17:03:54Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{
"name": "jeedom/core",
"version": "4.5.2",
"date": "2026-01-05T00:27:03Z"
},
{
"name": "Part-DB/Part-DB-server",
"version": "v2.4.0",
"date": "2026-01-04T21:10:51Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v2.1.0",
"date": "2026-01-04T20:32:58Z"
},
{
"name": "rcourtman/Pulse",
"version": "v5.0.11",
"date": "2026-01-04T19:48:21Z"
},
{
"name": "scanopy/scanopy",
"version": "v0.13.0",
"date": "2026-01-04T19:42:58Z"
},
{
"name": "actualbudget/actual",
"version": "v26.1.0",
"date": "2026-01-04T17:07:30Z"
},
{
"name": "dedicatedcode/reitti",
"version": "v3.1.0",
"date": "2026-01-04T13:05:59Z"
},
{
"name": "fccview/jotty",
"version": "1.15.2",
"date": "2026-01-04T13:04:02Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v1.0.13",
"date": "2026-01-04T12:59:19Z"
},
{
"name": "tobychui/zoraxy",
"version": "v3.3.1-rc1",
"date": "2026-01-04T04:38:01Z"
},
{
"name": "Dispatcharr/Dispatcharr",
"version": "v0.16.0",
"date": "2026-01-04T01:18:19Z"
},
{
"name": "nickheyer/discopanel",
"version": "v1.0.19",
"date": "2026-01-03T23:21:15Z"
},
{
"name": "ghostfolio/ghostfolio",
"version": "2.228.0",
@@ -9,21 +124,11 @@
"version": "2025-05-07-r1",
"date": "2025-05-07T12:18:42Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v2.0.2",
"date": "2026-01-03T14:31:18Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.49.1",
"date": "2026-01-03T13:13:12Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v1.0.12",
"date": "2026-01-03T12:40:06Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@16.0.36",
@@ -34,16 +139,6 @@
"version": "v2.5.309",
"date": "2026-01-03T08:32:10Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.704",
"date": "2026-01-03T06:03:01Z"
},
{
"name": "TwiN/gatus",
"version": "v5.34.0",
@@ -54,16 +149,6 @@
"version": "v1.2.0-2",
"date": "2026-01-03T02:42:11Z"
},
{
"name": "jeedom/core",
"version": "4.5.2",
"date": "2026-01-03T00:27:04Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{
"name": "9001/copyparty",
"version": "v1.20.0",
@@ -79,11 +164,6 @@
"version": "3.4.6",
"date": "2026-01-02T22:20:47Z"
},
{
"name": "rcourtman/Pulse",
"version": "v5.0.10",
"date": "2026-01-02T21:19:08Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.7",
@@ -94,11 +174,6 @@
"version": "v3.9.2",
"date": "2026-01-02T19:40:09Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.16.3",
"date": "2026-01-02T18:27:16Z"
},
{
"name": "Dokploy/dokploy",
"version": "v0.26.3",
@@ -114,15 +189,10 @@
"version": "v0.57.x",
"date": "2026-01-02T15:44:38Z"
},
{
"name": "fccview/jotty",
"version": "1.15.1",
"date": "2026-01-02T13:42:41Z"
},
{
"name": "livebook-dev/livebook",
"version": "nightly",
"date": "2026-01-02T12:46:49Z"
"version": "v0.18.2",
"date": "2025-12-15T19:17:42Z"
},
{
"name": "gotify/server",
@@ -134,11 +204,6 @@
"version": "n8n@2.1.5",
"date": "2026-01-02T09:10:15Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "develop-20251228",
"date": "2025-12-28T05:59:54Z"
},
{
"name": "alexta69/metube",
"version": "2026.01.02",
@@ -159,11 +224,6 @@
"version": "2025.12.4",
"date": "2025-12-31T22:42:42Z"
},
{
"name": "scanopy/scanopy",
"version": "v0.12.10",
"date": "2025-12-31T20:19:18Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v1.1.5-beta",
@@ -249,11 +309,6 @@
"version": "jenkins-2.544",
"date": "2025-12-30T11:00:27Z"
},
{
"name": "nickheyer/discopanel",
"version": "v1.0.18",
"date": "2025-12-30T05:52:02Z"
},
{
"name": "javedh-dev/tracktor",
"version": "1.1.0",
@@ -309,11 +364,6 @@
"version": "2.45.0",
"date": "2025-12-28T06:32:47Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.5.2",
@@ -344,11 +394,6 @@
"version": "tc_v0.6.6",
"date": "2025-12-26T18:45:22Z"
},
{
"name": "theonedev/onedev",
"version": "v13.1.7",
"date": "2025-12-26T07:59:41Z"
},
{
"name": "HydroshieldMKII/Guardian",
"version": "v1.3.3",
@@ -459,11 +504,6 @@
"version": "v2.0.12",
"date": "2025-12-02T08:11:24Z"
},
{
"name": "Dispatcharr/Dispatcharr",
"version": "v0.15.1",
"date": "2025-12-22T23:01:26Z"
},
{
"name": "sabnzbd/sabnzbd",
"version": "4.5.5",
@@ -474,11 +514,6 @@
"version": "v4.0.16.2944",
"date": "2025-11-05T01:56:48Z"
},
{
"name": "maxdorninger/MediaManager",
"version": "v1.11.1",
"date": "2025-12-22T18:15:40Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.80.11.rc.1",
@@ -514,21 +549,11 @@
"version": "v1.1.10",
"date": "2025-12-21T13:13:01Z"
},
{
"name": "jason5ng32/MyIP",
"version": "v5.1.1",
"date": "2025-12-21T12:59:32Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.35.0",
"date": "2025-12-21T07:44:15Z"
},
{
"name": "dedicatedcode/reitti",
"version": "v3.0.1",
"date": "2025-12-21T04:35:21Z"
},
{
"name": "intri-in/manage-my-damn-life-nextjs",
"version": "v0.8.2",
@@ -554,11 +579,6 @@
"version": "v11.9.1",
"date": "2025-12-20T09:14:25Z"
},
{
"name": "louislam/uptime-kuma",
"version": "2.0.2",
"date": "2025-10-22T17:03:54Z"
},
{
"name": "pelican-dev/panel",
"version": "v1.0.0-beta30",
@@ -594,11 +614,6 @@
"version": "v15.0.0-dev",
"date": "2025-12-19T11:43:47Z"
},
{
"name": "mattermost/mattermost",
"version": "v11.1.2",
"date": "2025-12-17T09:26:24Z"
},
{
"name": "jhuckaby/Cronicle",
"version": "v0.9.102",
@@ -914,11 +929,6 @@
"version": "v0.107.71",
"date": "2025-12-08T14:34:55Z"
},
{
"name": "Part-DB/Part-DB-server",
"version": "v2.3.0",
"date": "2025-12-07T21:58:43Z"
},
{
"name": "traccar/traccar",
"version": "v6.11.1",
@@ -944,11 +954,6 @@
"version": "v4.9.0",
"date": "2025-12-06T08:58:40Z"
},
{
"name": "tobychui/zoraxy",
"version": "v3.3.0",
"date": "2025-12-06T06:18:23Z"
},
{
"name": "community-scripts/ProxmoxVE-Local",
"version": "v0.5.2",
@@ -984,11 +989,6 @@
"version": "11.0.4",
"date": "2025-12-04T09:26:37Z"
},
{
"name": "actualbudget/actual",
"version": "v25.12.0",
"date": "2025-12-03T17:45:09Z"
},
{
"name": "Graylog2/graylog2-server",
"version": "6.2.10",

View File

@@ -17,13 +17,17 @@ msg_info "Installing Dependencies"
$STD apt-get install -y ffmpeg
msg_ok "Installed Dependencies"
setup_deb822_repo \
"audiobookshelf" \
"https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg" \
"https://advplyr.github.io/audiobookshelf-ppa" \
"./"
msg_info "Setup audiobookshelf"
curl -fsSL https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg >/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc
echo "deb [signed-by=/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc] https://advplyr.github.io/audiobookshelf-ppa ./" >/etc/apt/sources.list.d/audiobookshelf.list
$STD apt update
$STD apt install -y audiobookshelf
echo "FFMPEG_PATH=/usr/bin/ffmpeg" >>/etc/default/audiobookshelf
echo "FFPROBE_PATH=/usr/bin/ffprobe" >>/etc/default/audiobookshelf
systemctl restart audiobookshelf
msg_ok "Setup audiobookshelf"
motd_ssh

View File

@@ -13,7 +13,7 @@ setting_up_container
network_check
update_os
NODE_VERSION="22" setup_nodejs
NODE_VERSION="24" setup_nodejs
fetch_and_deploy_gh_release "magicmirror" "MagicMirrorOrg/MagicMirror" "tarball"
msg_info "Configuring MagicMirror"

View File

@@ -36,15 +36,35 @@ msg_info "Setting up Certbot"
$STD python3 -m venv /opt/certbot
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
$STD /opt/certbot/bin/pip install certbot certbot-dns-cloudflare
# Fix for Debian 13 Trixie - certbot-dns-multi needed to prevent "API isn't healthy" error
if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"13"* ]]; then
if ! /opt/certbot/bin/pip list 2>/dev/null | grep -q certbot-dns-multi; then
msg_info "Applying Debian 13 Certbot Fix"
$STD apt-get install -y golang build-essential git
$STD /opt/certbot/bin/pip install --no-cache-dir setuptools-golang==2.9.0
export CGO_ENABLED=1
export GO111MODULE=on
$STD /opt/certbot/bin/pip install --no-build-isolation --no-cache-dir certbot-dns-multi
msg_ok "Applied Debian 13 Certbot Fix"
fi
fi
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
msg_ok "Set up Certbot"
msg_info "Installing Openresty"
curl -fsSL "https://openresty.org/package/pubkey.gpg" | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty.gpg
cat <<'EOF' >/etc/apt/sources.list.d/openresty.sources
DEBIAN_VERSION=$(grep -E '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)
# Openresty only has bookworm, not trixie - map newer versions to bookworm
case "$DEBIAN_VERSION" in
trixie|sid) OPENRESTY_SUITE="bookworm" ;;
*) OPENRESTY_SUITE="$DEBIAN_VERSION" ;;
esac
cat <<EOF >/etc/apt/sources.list.d/openresty.sources
Types: deb
URIs: http://openresty.org/package/debian/
Suites: bookworm
Suites: ${OPENRESTY_SUITE}
Components: openresty
Signed-By: /etc/apt/trusted.gpg.d/openresty.gpg
EOF

View File

@@ -13,65 +13,20 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
lsb-release \
apache2 \
composer
msg_ok "Installed Dependencies"
PHP_VERSION="8.4" PHP_MODULE="mysql,sqlite3" PHP_APACHE="YES" PHP_FPM="YES" setup_php
setup_composer
setup_mariadb
msg_info "Adding PHP8.4 Repository"
$STD curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
cat <<EOF >/etc/apt/sources.list.d/php.sources
Types: deb
URIs: https://packages.sury.org/php/
Suites: $(lsb_release -sc)
Components: main
Signed-By: /usr/share/keyrings/deb.sury.org-php.gpg
EOF
$STD apt update
msg_ok "Added PHP8.4 Repository"
msg_info "Installing PHP"
$STD apt remove -y php8.2*
$STD apt install -y \
php8.4 \
php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,sqlite3,fpm} \
libapache2-mod-php8.4
msg_info "Installed PHP"
msg_info "Setting up MariaDB"
DB_NAME=panel
DB_USER=pelican
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 "Pelican Panel-Credentials"
echo "Pelican Panel Database User: $DB_USER"
echo "Pelican Panel Database Password: $DB_PASS"
echo "Pelican Panel Database Name: $DB_NAME"
} >>~/pelican-panel.creds
msg_ok "Set up MariaDB"
MARIADB_DB_NAME="panel" MARIADB_DB_USER="pelican" setup_mariadb_db
fetch_and_deploy_gh_release "pelican-panel" "pelican-dev/panel" "prebuild" "latest" "/opt/pelican-panel" "panel.tar.gz"
msg_info "Installing Pelican Panel"
RELEASE=$(curl -fsSL https://api.github.com/repos/pelican-dev/panel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
mkdir /opt/pelican-panel
cd /opt/pelican-panel
curl -fsSL "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz" -o "panel.tar.gz"
tar -xzf "panel.tar.gz"
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 p:environment:setup
$STD php artisan p:environment:queue-service --no-interaction
echo "* * * * * php /opt/pelican-panel/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data -
chown -R www-data:www-data /opt/pelican-panel
chmod -R 755 /opt/pelican-panel/storage /opt/pelican-panel/bootstrap/cache/
rm -rf "/opt/pelican-panel/panel.tar.gz"
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
msg_ok "Installed Pelican Panel"
msg_info "Creating Service"

View File

@@ -15,19 +15,14 @@ update_os
msg_info "Installing Docker"
DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
mkdir -p $(dirname $DOCKER_CONFIG_PATH)
echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json
mkdir -p "$(dirname $DOCKER_CONFIG_PATH)"
echo -e '{\n "log-driver": "journald"\n}' >"$DOCKER_CONFIG_PATH"
$STD sh <(curl -fsSL https://get.docker.com)
systemctl enable -q --now docker
msg_ok "Installed Docker"
msg_info "Installing Pelican Wings"
RELEASE=$(curl -fsSL https://api.github.com/repos/pelican-dev/wings/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/pelican-dev/wings/releases/download/v${RELEASE}/wings_linux_amd64" -o "/usr/local/bin/wings"
chmod u+x /usr/local/bin/wings
fetch_and_deploy_gh_release "wings" "pelican-dev/wings" "singlefile" "latest" "/usr/local/bin" "wings_linux_amd64"
mkdir -p /etc/pelican /var/run/wings
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Pelican Wings"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/wings.service

View File

@@ -17,6 +17,8 @@ read -r -p "${TAB3}What public URL do you want to use (e.g. pocketid.mydomain.co
fetch_and_deploy_gh_release "pocket-id" "pocket-id/pocket-id" "singlefile" "latest" "/opt/pocket-id/" "pocket-id-linux-amd64"
msg_info "Configuring Pocket ID"
ENCRYPTION_KEY=$(openssl rand -base64 32)
cat <<EOF >/opt/pocket-id/.env
APP_ENV=production
APP_URL=https://${public_url}
@@ -24,6 +26,7 @@ TRUST_PROXY=false
# MAXMIND_LICENSE_KEY=
PORT=1411
HOST=0.0.0.0
ENCRYPTION_KEY=${ENCRYPTION_KEY}
EOF
msg_ok "Configured Pocket ID"

View File

@@ -50,6 +50,8 @@ mv /opt/photon/photon-*.jar /opt/photon/photon.jar
msg_info "Installing Nginx Tile Cache"
mkdir -p /var/cache/nginx/tiles
cat <<EOF >/etc/nginx/nginx.conf
user www-data;
events {
worker_connections 1024;
}
@@ -68,7 +70,8 @@ http {
}
}
EOF
chown -R www-data:www-data /var/cache/nginx/tiles
chown -R www-data:www-data /var/cache/nginx
chmod -R 750 /var/cache/nginx
systemctl restart nginx
msg_info "Installed Nginx Tile Cache"

View File

@@ -17,18 +17,13 @@ msg_info "Installing Dependencies"
$STD apt install -y sqlite3
msg_ok "Installed Dependencies"
setup_go
setup_deb822_repo \
"sftpgo" \
"https://ftp.osuosl.org/pub/sftpgo/apt/gpg.key" \
"https://ftp.osuosl.org/pub/sftpgo/apt" \
"trixie"
msg_info "Installing SFTPGo"
curl -fsSL https://ftp.osuosl.org/pub/sftpgo/apt/gpg.key | gpg --dearmor -o /usr/share/keyrings/sftpgo-archive-keyring.gpg
cat <<EOF >/etc/apt/sources.list.d/sftpgo.sources
Types: deb
URIs: https://ftp.osuosl.org/pub/sftpgo/apt
Suites: bookworm
Components: main
Signed-By: /usr/share/keyrings/sftpgo-archive-keyring.gpg
EOF
$STD apt update
$STD apt install -y sftpgo
msg_ok "Installed SFTPGo"

View File

@@ -2783,6 +2783,7 @@ build_container() {
export PCT_OSTYPE="$var_os"
export PCT_OSVERSION="$var_version"
export PCT_DISK_SIZE="$DISK_SIZE"
export IPV6_METHOD="$IPV6_METHOD"
# DEV_MODE exports (optional, for debugging)
export BUILD_LOG="$BUILD_LOG"