mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-05 19:02:50 +00:00
Compare commits
44 Commits
2025-09-01
...
2025-09-05
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bbe71cbbb9 | ||
|
|
9b6a736c8c | ||
|
|
c395ccc270 | ||
|
|
3dd72e08e9 | ||
|
|
1d989bea73 | ||
|
|
f881b88344 | ||
|
|
06dbad83ef | ||
|
|
7ff966b042 | ||
|
|
62264f37a6 | ||
|
|
bf05dabc4c | ||
|
|
bc229d9738 | ||
|
|
969b08caa8 | ||
|
|
c1c43ed2cb | ||
|
|
e74767d1a4 | ||
|
|
e9e17f4f51 | ||
|
|
2c1b15a40e | ||
|
|
a4bfaf1646 | ||
|
|
6fa12cc814 | ||
|
|
d314168a37 | ||
|
|
d6ad11c5c2 | ||
|
|
534592b44a | ||
|
|
d9b6b58b36 | ||
|
|
298eb7e83d | ||
|
|
c2dd1e413f | ||
|
|
a4f1766408 | ||
|
|
a24169e9b8 | ||
|
|
45a2163e66 | ||
|
|
2fc3e62d60 | ||
|
|
210b846d61 | ||
|
|
b04cfb65f7 | ||
|
|
6a2fc4083b | ||
|
|
f7f53943c2 | ||
|
|
31f4d9b16c | ||
|
|
cd4cd5eec1 | ||
|
|
8a7eeee727 | ||
|
|
be5d65f421 | ||
|
|
591af3f109 | ||
|
|
a3e0df9de1 | ||
|
|
596699d07e | ||
|
|
b2275b44c2 | ||
|
|
737842fb1e | ||
|
|
646cb2bc30 | ||
|
|
4599bfe052 | ||
|
|
bb85b1d4ac |
68
CHANGELOG.md
68
CHANGELOG.md
@@ -10,8 +10,76 @@
|
|||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||||
|
|
||||||
|
## 2025-09-06
|
||||||
|
|
||||||
|
## 2025-09-05
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Tududi: Pin version to 0.80 [@vhsdream](https://github.com/vhsdream) ([#7420](https://github.com/community-scripts/ProxmoxVE/pull/7420))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- AdventureLog: Update dependencies [@tremor021](https://github.com/tremor021) ([#7404](https://github.com/community-scripts/ProxmoxVE/pull/7404))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- refactor: Enhance ScriptAccordion and Sidebar components to support selectedCategory state [@BramSuurdje](https://github.com/BramSuurdje) ([#7405](https://github.com/community-scripts/ProxmoxVE/pull/7405))
|
||||||
|
|
||||||
|
## 2025-09-04
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix: Syntax error in Immich scripts [@henworth](https://github.com/henworth) ([#7398](https://github.com/community-scripts/ProxmoxVE/pull/7398))
|
||||||
|
- Netdata: Fix pve_check for 8 [@MickLesk](https://github.com/MickLesk) ([#7392](https://github.com/community-scripts/ProxmoxVE/pull/7392))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Immich: pin compiled photo library revisions [@vhsdream](https://github.com/vhsdream) ([#7395](https://github.com/community-scripts/ProxmoxVE/pull/7395))
|
||||||
|
|
||||||
|
## 2025-09-03
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Element-Synapse: Increase HDD size [@tremor021](https://github.com/tremor021) ([#7384](https://github.com/community-scripts/ProxmoxVE/pull/7384))
|
||||||
|
- Wizarr: fix uv lock issue; use correct output suppression [@vhsdream](https://github.com/vhsdream) ([#7378](https://github.com/community-scripts/ProxmoxVE/pull/7378))
|
||||||
|
- Netbox: Fix missing directory [@tremor021](https://github.com/tremor021) ([#7374](https://github.com/community-scripts/ProxmoxVE/pull/7374))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Enhanced IP-Tag installation script with interactive configuration, improved VM IP detection, and better visual indicators [@DesertGamer](https://github.com/DesertGamer) ([#7366](https://github.com/community-scripts/ProxmoxVE/pull/7366))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Fix navigation [@BramSuurdje](https://github.com/BramSuurdje) ([#7376](https://github.com/community-scripts/ProxmoxVE/pull/7376))
|
||||||
|
|
||||||
## 2025-09-02
|
## 2025-09-02
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Increase default disk size for Apt-Cacher-NG [@MickLesk](https://github.com/MickLesk) ([#7352](https://github.com/community-scripts/ProxmoxVE/pull/7352))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Snipe-IT: Fix Nginx configuration [@tremor021](https://github.com/tremor021) ([#7358](https://github.com/community-scripts/ProxmoxVE/pull/7358))
|
||||||
|
- booklore: remove folder before update [@MickLesk](https://github.com/MickLesk) ([#7351](https://github.com/community-scripts/ProxmoxVE/pull/7351))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Immich: bump version to 1.140.1 [@vhsdream](https://github.com/vhsdream) ([#7349](https://github.com/community-scripts/ProxmoxVE/pull/7349))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- pbs: increase note on website for ipv6 [@MickLesk](https://github.com/MickLesk) ([#7339](https://github.com/community-scripts/ProxmoxVE/pull/7339))
|
||||||
|
|
||||||
## 2025-09-01
|
## 2025-09-01
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
@@ -27,6 +27,10 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
if ! command -v memcached >/dev/null 2>&1; then
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y memcached libmemcached-tools
|
||||||
|
fi
|
||||||
if check_for_gh_release "adventurelog" "seanmorley15/adventurelog"; then
|
if check_for_gh_release "adventurelog" "seanmorley15/adventurelog"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop adventurelog-backend
|
systemctl stop adventurelog-backend
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ APP="Apt-Cacher-NG"
|
|||||||
var_tags="${var_tags:-caching}"
|
var_tags="${var_tags:-caching}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ function update_script() {
|
|||||||
systemctl stop booklore
|
systemctl stop booklore
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "backup old install"
|
||||||
|
mv /opt/booklore /opt/booklore_bak
|
||||||
|
msg_ok "backup done"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
|
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
msg_info "Building Frontend"
|
||||||
@@ -58,6 +62,7 @@ function update_script() {
|
|||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start booklore
|
systemctl start booklore
|
||||||
systemctl reload nginx
|
systemctl reload nginx
|
||||||
|
rm -rf /opt/booklore_bak
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ APP="Element Synapse"
|
|||||||
var_tags="${var_tags:-server}"
|
var_tags="${var_tags:-server}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|||||||
17
ct/immich.sh
17
ct/immich.sh
@@ -61,7 +61,7 @@ function update_script() {
|
|||||||
done
|
done
|
||||||
msg_ok "Image-processing libraries up to date"
|
msg_ok "Image-processing libraries up to date"
|
||||||
fi
|
fi
|
||||||
RELEASE="1.140.0"
|
RELEASE="1.140.1"
|
||||||
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
|
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop immich-web
|
systemctl stop immich-web
|
||||||
@@ -206,7 +206,8 @@ function compile_libjxl() {
|
|||||||
SOURCE=${SOURCE_DIR}/libjxl
|
SOURCE=${SOURCE_DIR}/libjxl
|
||||||
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
|
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
|
||||||
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
|
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
|
||||||
: "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
|
# : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
|
||||||
|
: "${LIBJXL_REVISION:=794a5dcf0d54f9f0b20d288a12e87afb91d20dfc}"
|
||||||
if [[ "${update:-}" ]] || [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
if [[ "${update:-}" ]] || [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
msg_info "Recompiling libjxl"
|
msg_info "Recompiling libjxl"
|
||||||
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
@@ -253,7 +254,8 @@ function compile_libheif() {
|
|||||||
$STD apt-get install -y libaom-dev
|
$STD apt-get install -y libaom-dev
|
||||||
local update="required"
|
local update="required"
|
||||||
fi
|
fi
|
||||||
: "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}"
|
# : "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}"
|
||||||
|
: "${LIBHEIF_REVISION:=35dad50a9145332a7bfdf1ff6aef6801fb613d68}"
|
||||||
if [[ "${update:-}" ]] || [[ "$LIBHEIF_REVISION" != "$(grep 'libheif' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
if [[ "${update:-}" ]] || [[ "$LIBHEIF_REVISION" != "$(grep 'libheif' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
msg_info "Recompiling libheif"
|
msg_info "Recompiling libheif"
|
||||||
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
@@ -285,7 +287,8 @@ function compile_libheif() {
|
|||||||
function compile_libraw() {
|
function compile_libraw() {
|
||||||
SOURCE=${SOURCE_DIR}/libraw
|
SOURCE=${SOURCE_DIR}/libraw
|
||||||
local update
|
local update
|
||||||
: "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
|
# : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
|
||||||
|
: "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}"
|
||||||
if [[ "${update:-}" ]] || [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
if [[ "${update:-}" ]] || [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
msg_info "Recompiling libraw"
|
msg_info "Recompiling libraw"
|
||||||
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
@@ -306,7 +309,8 @@ function compile_libraw() {
|
|||||||
|
|
||||||
function compile_imagemagick() {
|
function compile_imagemagick() {
|
||||||
SOURCE=$SOURCE_DIR/imagemagick
|
SOURCE=$SOURCE_DIR/imagemagick
|
||||||
: "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
|
# : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
|
||||||
|
: "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}"
|
||||||
if [[ "${update:-}" ]] || [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
if [[ "${update:-}" ]] || [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
msg_info "Recompiling ImageMagick"
|
msg_info "Recompiling ImageMagick"
|
||||||
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
@@ -326,7 +330,8 @@ function compile_imagemagick() {
|
|||||||
|
|
||||||
function compile_libvips() {
|
function compile_libvips() {
|
||||||
SOURCE=$SOURCE_DIR/libvips
|
SOURCE=$SOURCE_DIR/libvips
|
||||||
: "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
|
# : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
|
||||||
|
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
|
||||||
if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
msg_info "Recompiling libvips"
|
msg_info "Recompiling libvips"
|
||||||
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
|
|||||||
@@ -27,6 +27,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
if ! grep -q "client_max_body_size[[:space:]]\+100M;" /etc/nginx/conf.d/snipeit.conf; then
|
||||||
|
sed -i '/index index.php;/i \ client_max_body_size 100M;' /etc/nginx/conf.d/snipeit.conf
|
||||||
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "snipe-it" "snipe/snipe-it"; then
|
if check_for_gh_release "snipe-it" "snipe/snipe-it"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ function update_script() {
|
|||||||
rm -rf /opt/tududi/backend/dist
|
rm -rf /opt/tududi/backend/dist
|
||||||
msg_ok "Backup and removed Files"
|
msg_ok "Backup and removed Files"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi"
|
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi" "tarball" "v0.80" "/opt/tududi"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
cd /opt/tududi
|
cd /opt/tududi
|
||||||
|
|||||||
@@ -45,13 +45,14 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating $APP"
|
msg_info "Updating $APP"
|
||||||
cd /opt/wizarr
|
cd /opt/wizarr
|
||||||
/usr/local/bin/uv -q sync --locked
|
$STD /usr/local/bin/uv lock
|
||||||
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations
|
$STD /usr/local/bin/uv sync --locked
|
||||||
|
$STD /usr/local/bin/uv run pybabel compile -d app/translations
|
||||||
$STD npm --prefix app/static install
|
$STD npm --prefix app/static install
|
||||||
$STD npm --prefix app/static run build:css
|
$STD npm --prefix app/static run build:css
|
||||||
mkdir -p ./.cache
|
mkdir -p ./.cache
|
||||||
$STD tar -xf "$BACKUP_FILE" --directory=/
|
$STD tar -xf "$BACKUP_FILE" --directory=/
|
||||||
$STD /usr/local/bin/uv -q run flask db upgrade
|
$STD /usr/local/bin/uv run flask db upgrade
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
@@ -61,7 +62,7 @@ function update_script() {
|
|||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -rf "$BACKUP_FILE"
|
rm -rf "$BACKUP_FILE"
|
||||||
msg_ok "Cleanup Completed"
|
msg_ok "Cleanup Completed"
|
||||||
msg_ok "Update Successfully"
|
msg_ok "Updated Successfully"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ const nextConfig = {
|
|||||||
BASE_PATH: "ProxmoxVE",
|
BASE_PATH: "ProxmoxVE",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
eslint: {
|
||||||
|
ignoreDuringBuilds: true,
|
||||||
|
},
|
||||||
|
|
||||||
output: "export",
|
output: "export",
|
||||||
basePath: `/ProxmoxVE`,
|
basePath: `/ProxmoxVE`,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 1,
|
||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 2,
|
"hdd": 10,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 1,
|
||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,10 @@
|
|||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Please be aware that Immich releases are pinned to specific versions until compatibility has been confirmed by the Community Scripts maintainers; as a result, the version installed by the helper script may not be the most current version of Immich",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"text": "During installation, you will be prompted with the option to install Intel OpenVINO for hardware-accelerated machine-learning. If you opt in, increase your LXC RAM after installation, as OpenVINO is memory-intensive",
|
"text": "During installation, you will be prompted with the option to install Intel OpenVINO for hardware-accelerated machine-learning. If you opt in, increase your LXC RAM after installation, as OpenVINO is memory-intensive",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
"type": "warning"
|
"type": "warning"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "Advanced Install is only possible without root password and root SSH access, you can configure this after installation.",
|
"text": "Advanced Install is only possible with disabled IPV6! Otherwise the installation sometimes stuck.",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,23 +1,358 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "moghtech/komodo",
|
||||||
|
"version": "v1.19.3",
|
||||||
|
"date": "2025-09-05T21:32:38Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "homarr-labs/homarr",
|
||||||
|
"version": "v1.36.1",
|
||||||
|
"date": "2025-09-05T21:14:40Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "booklore-app/booklore",
|
||||||
|
"version": "v1.2.0",
|
||||||
|
"date": "2025-09-05T20:43:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "immich-app/immich",
|
||||||
|
"version": "v1.141.1",
|
||||||
|
"date": "2025-09-05T19:44:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gtsteffaniak/filebrowser",
|
||||||
|
"version": "v0.8.4-beta",
|
||||||
|
"date": "2025-09-05T19:34:44Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Stirling-Tools/Stirling-PDF",
|
||||||
|
"version": "v1.3.2",
|
||||||
|
"date": "2025-09-05T18:44:15Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "diced/zipline",
|
||||||
|
"version": "v4.3.0",
|
||||||
|
"date": "2025-09-05T18:43:28Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rcourtman/Pulse",
|
||||||
|
"version": "v4.14.0",
|
||||||
|
"date": "2025-09-05T18:28:28Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "henrygd/beszel",
|
||||||
|
"version": "v0.12.7",
|
||||||
|
"date": "2025-09-05T18:11:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Brandawg93/PeaNUT",
|
||||||
|
"version": "v5.14.2",
|
||||||
|
"date": "2025-09-05T17:24:12Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fuma-nama/fumadocs",
|
||||||
|
"version": "create-fumadocs-app@15.7.9",
|
||||||
|
"date": "2025-09-05T14:33:41Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wizarrrr/wizarr",
|
||||||
|
"version": "2025.9.0",
|
||||||
|
"date": "2025-09-05T14:21:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cross-seed/cross-seed",
|
||||||
|
"version": "v6.13.2",
|
||||||
|
"date": "2025-08-19T18:18:40Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "chrisvel/tududi",
|
||||||
|
"version": "v0.80",
|
||||||
|
"date": "2025-07-24T14:12:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "home-assistant/core",
|
||||||
|
"version": "2025.9.1",
|
||||||
|
"date": "2025-09-05T11:15:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "syncthing/syncthing",
|
||||||
|
"version": "v2.0.7",
|
||||||
|
"date": "2025-09-05T10:18:24Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zitadel/zitadel",
|
||||||
|
"version": "v4.1.2",
|
||||||
|
"date": "2025-09-05T08:23:30Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.22.2429",
|
||||||
|
"date": "2025-09-05T06:05:30Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CrazyWolf13/streamlink-webui",
|
||||||
|
"version": "0.6",
|
||||||
|
"date": "2025-09-05T06:05:04Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "louislam/uptime-kuma",
|
||||||
|
"version": "2.0.0-beta.2-temp",
|
||||||
|
"date": "2025-03-28T08:45:58Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jeedom/core",
|
||||||
|
"version": "4.4.19",
|
||||||
|
"date": "2025-09-05T00:27:15Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "steveiliop56/tinyauth",
|
||||||
|
"version": "v3.6.2",
|
||||||
|
"date": "2025-07-17T12:08:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wazuh/wazuh",
|
||||||
|
"version": "coverity-w36-4.13.0",
|
||||||
|
"date": "2025-09-01T11:40:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "docmost/docmost",
|
||||||
|
"version": "v0.23.0",
|
||||||
|
"date": "2025-09-04T22:40:29Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pelican-dev/panel",
|
||||||
|
"version": "v1.0.0-beta25",
|
||||||
|
"date": "2025-09-04T21:42:46Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pelican-dev/wings",
|
||||||
|
"version": "v1.0.0-beta17",
|
||||||
|
"date": "2025-09-04T21:30:14Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "TandoorRecipes/recipes",
|
||||||
|
"version": "2.1.0",
|
||||||
|
"date": "2025-09-04T20:24:47Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mongodb/mongo",
|
||||||
|
"version": "r7.0.24",
|
||||||
|
"date": "2025-09-04T19:50:49Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cleanuparr/Cleanuparr",
|
||||||
|
"version": "v2.2.3",
|
||||||
|
"date": "2025-09-04T19:24:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "HabitRPG/habitica",
|
||||||
|
"version": "v5.40.1",
|
||||||
|
"date": "2025-09-04T19:10:45Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtipi/runtipi",
|
||||||
|
"version": "nightly",
|
||||||
|
"date": "2025-09-04T18:29:10Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "AdguardTeam/AdGuardHome",
|
||||||
|
"version": "v0.107.65",
|
||||||
|
"date": "2025-08-20T14:02:28Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "webmin/webmin",
|
||||||
|
"version": "2.500",
|
||||||
|
"date": "2025-09-04T17:44:27Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ollama/ollama",
|
||||||
|
"version": "v0.11.10",
|
||||||
|
"date": "2025-09-04T17:27:40Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "MediaBrowser/Emby.Releases",
|
"name": "MediaBrowser/Emby.Releases",
|
||||||
"version": "4.9.1.2",
|
"version": "4.9.1.2",
|
||||||
"date": "2025-06-26T22:08:00Z"
|
"date": "2025-06-26T22:08:00Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "booklore-app/booklore",
|
"name": "NodeBB/NodeBB",
|
||||||
"version": "v1.1.1",
|
"version": "v4.5.1",
|
||||||
"date": "2025-09-01T22:05:26Z"
|
"date": "2025-09-04T16:02:49Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "syncthing/syncthing",
|
"name": "keycloak/keycloak",
|
||||||
"version": "v2.0.3",
|
"version": "26.0.15",
|
||||||
"date": "2025-08-22T08:12:47Z"
|
"date": "2025-08-27T12:12:03Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "runtipi/runtipi",
|
"name": "semaphoreui/semaphore",
|
||||||
"version": "nightly",
|
"version": "v2.16.19",
|
||||||
"date": "2025-09-01T19:23:40Z"
|
"date": "2025-09-04T14:22:02Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "raydak-labs/configarr",
|
||||||
|
"version": "v1.15.1",
|
||||||
|
"date": "2025-09-04T14:00:59Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "plankanban/planka",
|
||||||
|
"version": "planka-1.0.4",
|
||||||
|
"date": "2025-09-04T13:49:40Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "blakeblackshear/frigate",
|
||||||
|
"version": "v0.14.1",
|
||||||
|
"date": "2024-08-29T22:32:51Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openobserve/openobserve",
|
||||||
|
"version": "v0.15.1",
|
||||||
|
"date": "2025-09-04T10:37:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "esphome/esphome",
|
||||||
|
"version": "2025.8.3",
|
||||||
|
"date": "2025-09-04T10:09:47Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "emqx/emqx",
|
||||||
|
"version": "v5.8.8",
|
||||||
|
"date": "2025-09-04T08:35:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "morpheus65535/bazarr",
|
||||||
|
"version": "v1.5.3-beta.10",
|
||||||
|
"date": "2025-07-15T06:07:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "actualbudget/actual",
|
||||||
|
"version": "v25.9.0",
|
||||||
|
"date": "2025-09-04T01:12:37Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "hyperion-project/hyperion.ng",
|
||||||
|
"version": "2.1.1",
|
||||||
|
"date": "2025-06-14T17:45:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "VictoriaMetrics/VictoriaMetrics",
|
||||||
|
"version": "pmm-6401-v1.125.1",
|
||||||
|
"date": "2025-09-03T20:17:18Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Graylog2/graylog2-server",
|
||||||
|
"version": "6.1.15",
|
||||||
|
"date": "2025-09-03T14:51:37Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "glpi-project/glpi",
|
||||||
|
"version": "10.0.19",
|
||||||
|
"date": "2025-07-16T09:45:14Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Radarr/Radarr",
|
||||||
|
"version": "v5.27.5.10198",
|
||||||
|
"date": "2025-09-03T12:08:43Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "neo4j/neo4j",
|
||||||
|
"version": "5.26.12",
|
||||||
|
"date": "2025-09-03T12:03:22Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "n8n-io/n8n",
|
||||||
|
"version": "n8n@1.109.2",
|
||||||
|
"date": "2025-09-03T07:50:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Checkmk/checkmk",
|
||||||
|
"version": "v2.4.0p11",
|
||||||
|
"date": "2025-09-03T09:58:14Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mattermost/mattermost",
|
||||||
|
"version": "server/public/v0.1.17",
|
||||||
|
"date": "2025-09-02T21:38:40Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cockpit-project/cockpit",
|
||||||
|
"version": "346",
|
||||||
|
"date": "2025-09-03T09:13:05Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jenkinsci/jenkins",
|
||||||
|
"version": "jenkins-2.526",
|
||||||
|
"date": "2025-09-02T18:44:42Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "apache/cassandra",
|
||||||
|
"version": "cassandra-4.1.10",
|
||||||
|
"date": "2025-09-03T08:46:02Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "crafty-controller/crafty-4",
|
||||||
|
"version": "v4.5.3",
|
||||||
|
"date": "2025-09-02T23:52:26Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Luligu/matterbridge",
|
||||||
|
"version": "3.2.5",
|
||||||
|
"date": "2025-09-02T17:25:13Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "netbox-community/netbox",
|
||||||
|
"version": "v4.4.0",
|
||||||
|
"date": "2025-09-02T17:04:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "element-hq/synapse",
|
||||||
|
"version": "v1.137.0",
|
||||||
|
"date": "2025-08-26T09:51:47Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rabbitmq/rabbitmq-server",
|
||||||
|
"version": "v4.1.4",
|
||||||
|
"date": "2025-09-02T14:26:24Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "apache/tomcat",
|
||||||
|
"version": "10.1.45",
|
||||||
|
"date": "2025-09-02T12:46:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dolibarr/dolibarr",
|
||||||
|
"version": "22.0.1",
|
||||||
|
"date": "2025-09-02T10:29:08Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cloudreve/cloudreve",
|
||||||
|
"version": "4.7.0",
|
||||||
|
"date": "2025-09-02T06:02:43Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "firefly-iii/firefly-iii",
|
||||||
|
"version": "v6.3.2",
|
||||||
|
"date": "2025-08-19T04:08:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "paperless-ngx/paperless-ngx",
|
||||||
|
"version": "v2.18.3",
|
||||||
|
"date": "2025-09-02T01:16:49Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ErsatzTV/ErsatzTV",
|
||||||
|
"version": "v25.5.0",
|
||||||
|
"date": "2025-09-02T01:00:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "authelia/authelia",
|
||||||
|
"version": "v4.39.8",
|
||||||
|
"date": "2025-09-02T00:44:45Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "postgres/postgres",
|
||||||
|
"version": "REL_18_RC1",
|
||||||
|
"date": "2025-09-01T20:03:08Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "project-zot/zot",
|
"name": "project-zot/zot",
|
||||||
@@ -29,11 +364,6 @@
|
|||||||
"version": "2.6.1",
|
"version": "2.6.1",
|
||||||
"date": "2025-09-01T19:05:18Z"
|
"date": "2025-09-01T19:05:18Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "firefly-iii/firefly-iii",
|
|
||||||
"version": "v6.3.2",
|
|
||||||
"date": "2025-08-19T04:08:36Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "outline/outline",
|
"name": "outline/outline",
|
||||||
"version": "v0.87.3",
|
"version": "v0.87.3",
|
||||||
@@ -49,21 +379,11 @@
|
|||||||
"version": "v0.11.0",
|
"version": "v0.11.0",
|
||||||
"date": "2025-09-01T16:19:38Z"
|
"date": "2025-09-01T16:19:38Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "n8n-io/n8n",
|
|
||||||
"version": "n8n@1.108.2",
|
|
||||||
"date": "2025-08-27T13:05:35Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "grafana/grafana",
|
"name": "grafana/grafana",
|
||||||
"version": "rrc_steady_12.2.0-17245430286.patch1",
|
"version": "rrc_steady_12.2.0-17245430286.patch1",
|
||||||
"date": "2025-09-01T14:19:14Z"
|
"date": "2025-09-01T14:19:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "apache/tomcat",
|
|
||||||
"version": "9.0.109",
|
|
||||||
"date": "2025-09-01T12:36:02Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "fallenbagel/jellyseerr",
|
"name": "fallenbagel/jellyseerr",
|
||||||
"version": "preview-issue-description",
|
"version": "preview-issue-description",
|
||||||
@@ -74,81 +394,26 @@
|
|||||||
"version": "v25.3",
|
"version": "v25.3",
|
||||||
"date": "2025-09-01T09:47:06Z"
|
"date": "2025-09-01T09:47:06Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "zitadel/zitadel",
|
|
||||||
"version": "v4.1.0",
|
|
||||||
"date": "2025-09-01T12:03:04Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "VictoriaMetrics/VictoriaMetrics",
|
|
||||||
"version": "pmm-6401-v1.125.0",
|
|
||||||
"date": "2025-09-01T11:01:54Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "grokability/snipe-it",
|
"name": "grokability/snipe-it",
|
||||||
"version": "v8.3.1",
|
"version": "v8.3.1",
|
||||||
"date": "2025-09-01T11:00:07Z"
|
"date": "2025-09-01T11:00:07Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "home-assistant/core",
|
|
||||||
"version": "2025.8.3",
|
|
||||||
"date": "2025-08-21T18:23:10Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "crowdsecurity/crowdsec",
|
"name": "crowdsecurity/crowdsec",
|
||||||
"version": "v1.6.11",
|
"version": "v1.7.0",
|
||||||
"date": "2025-07-22T12:11:38Z"
|
"date": "2025-09-01T10:10:34Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Checkmk/checkmk",
|
|
||||||
"version": "v2.4.0p11-rc1",
|
|
||||||
"date": "2025-09-01T07:55:46Z"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "readeck/readeck",
|
"name": "readeck/readeck",
|
||||||
"version": "0.20.1",
|
"version": "0.20.1",
|
||||||
"date": "2025-09-01T07:35:48Z"
|
"date": "2025-09-01T07:35:48Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.22.2390",
|
|
||||||
"date": "2025-09-01T05:57:06Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "moghtech/komodo",
|
|
||||||
"version": "v1.19.2",
|
|
||||||
"date": "2025-09-01T02:33:52Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "steveiliop56/tinyauth",
|
|
||||||
"version": "v3.6.2",
|
|
||||||
"date": "2025-07-17T12:08:03Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "jeedom/core",
|
|
||||||
"version": "4.4.19",
|
|
||||||
"date": "2025-09-01T00:27:07Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "crafty-controller/crafty-4",
|
|
||||||
"version": "v4.5.2",
|
|
||||||
"date": "2025-08-31T22:21:50Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "YunoHost/yunohost",
|
"name": "YunoHost/yunohost",
|
||||||
"version": "debian/12.1.17.1",
|
"version": "debian/12.1.17.1",
|
||||||
"date": "2025-08-31T21:38:21Z"
|
"date": "2025-08-31T21:38:21Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "rcourtman/Pulse",
|
|
||||||
"version": "v4.12.1",
|
|
||||||
"date": "2025-08-31T21:33:41Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wizarrrr/wizarr",
|
|
||||||
"version": "2025.8.5",
|
|
||||||
"date": "2025-08-31T17:56:37Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "karakeep-app/karakeep",
|
"name": "karakeep-app/karakeep",
|
||||||
"version": "ios/v1.8.0-1",
|
"version": "ios/v1.8.0-1",
|
||||||
@@ -169,71 +434,26 @@
|
|||||||
"version": "v12.0.2",
|
"version": "v12.0.2",
|
||||||
"date": "2025-08-31T13:15:47Z"
|
"date": "2025-08-31T13:15:47Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "fuma-nama/fumadocs",
|
|
||||||
"version": "fumadocs-openapi@9.3.4",
|
|
||||||
"date": "2025-08-31T11:48:08Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.0.15",
|
|
||||||
"date": "2025-08-27T12:12:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Lidarr/Lidarr",
|
"name": "Lidarr/Lidarr",
|
||||||
"version": "v2.13.3.4711",
|
"version": "v2.13.3.4711",
|
||||||
"date": "2025-08-28T20:06:24Z"
|
"date": "2025-08-28T20:06:24Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "authelia/authelia",
|
|
||||||
"version": "v4.39.7",
|
|
||||||
"date": "2025-08-31T06:43:13Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "jhuckaby/Cronicle",
|
"name": "jhuckaby/Cronicle",
|
||||||
"version": "v0.9.91",
|
"version": "v0.9.91",
|
||||||
"date": "2025-08-30T21:49:57Z"
|
"date": "2025-08-30T21:49:57Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "immich-app/immich",
|
|
||||||
"version": "v1.140.1",
|
|
||||||
"date": "2025-08-30T19:46:34Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Brandawg93/PeaNUT",
|
|
||||||
"version": "v5.14.0",
|
|
||||||
"date": "2025-08-30T18:41:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "bunkerity/bunkerweb",
|
"name": "bunkerity/bunkerweb",
|
||||||
"version": "v1.6.4",
|
"version": "v1.6.4",
|
||||||
"date": "2025-08-18T20:22:07Z"
|
"date": "2025-08-18T20:22:07Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "henrygd/beszel",
|
|
||||||
"version": "v0.12.6",
|
|
||||||
"date": "2025-08-29T21:40:09Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "HabitRPG/habitica",
|
|
||||||
"version": "v5.39.1",
|
|
||||||
"date": "2025-08-29T21:02:00Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "msgbyte/tianji",
|
"name": "msgbyte/tianji",
|
||||||
"version": "v1.24.26",
|
"version": "v1.24.26",
|
||||||
"date": "2025-08-29T20:26:08Z"
|
"date": "2025-08-29T20:26:08Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "homarr-labs/homarr",
|
|
||||||
"version": "v1.35.0",
|
|
||||||
"date": "2025-08-29T19:14:25Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "emqx/emqx",
|
|
||||||
"version": "e6.0.0-alpha.1",
|
|
||||||
"date": "2025-08-29T13:59:45Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "silverbulletmd/silverbullet",
|
"name": "silverbulletmd/silverbullet",
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
@@ -242,43 +462,13 @@
|
|||||||
{
|
{
|
||||||
"name": "Forceu/Gokapi",
|
"name": "Forceu/Gokapi",
|
||||||
"version": "v2.1.0",
|
"version": "v2.1.0",
|
||||||
"date": "2025-08-29T12:45:42Z"
|
"date": "2025-08-29T12:56:13Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Luligu/matterbridge",
|
|
||||||
"version": "3.2.4",
|
|
||||||
"date": "2025-08-29T12:19:53Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Graylog2/graylog2-server",
|
|
||||||
"version": "7.0.0-alpha.2",
|
|
||||||
"date": "2025-08-29T10:57:06Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "semaphoreui/semaphore",
|
|
||||||
"version": "v2.16.19",
|
|
||||||
"date": "2025-08-29T05:53:48Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "openobserve/openobserve",
|
|
||||||
"version": "v0.15.0",
|
|
||||||
"date": "2025-08-29T03:01:23Z"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "saltstack/salt",
|
"name": "saltstack/salt",
|
||||||
"version": "v3007.7",
|
"version": "v3007.7",
|
||||||
"date": "2025-08-29T01:19:08Z"
|
"date": "2025-08-29T01:19:08Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "esphome/esphome",
|
|
||||||
"version": "2025.8.2",
|
|
||||||
"date": "2025-08-29T00:38:54Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dolibarr/dolibarr",
|
|
||||||
"version": "21.0.3",
|
|
||||||
"date": "2025-08-28T21:05:15Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "9001/copyparty",
|
"name": "9001/copyparty",
|
||||||
"version": "v1.19.7",
|
"version": "v1.19.7",
|
||||||
@@ -294,16 +484,6 @@
|
|||||||
"version": "0.50.11",
|
"version": "0.50.11",
|
||||||
"date": "2025-08-28T20:12:30Z"
|
"date": "2025-08-28T20:12:30Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "ollama/ollama",
|
|
||||||
"version": "v0.11.8",
|
|
||||||
"date": "2025-08-27T18:43:44Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "mongodb/mongo",
|
|
||||||
"version": "r7.0.24-rc0",
|
|
||||||
"date": "2025-08-28T19:08:13Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "benjaminjonard/koillection",
|
"name": "benjaminjonard/koillection",
|
||||||
"version": "1.7.0",
|
"version": "1.7.0",
|
||||||
@@ -334,16 +514,6 @@
|
|||||||
"version": "v0.6.26",
|
"version": "v0.6.26",
|
||||||
"date": "2025-08-28T10:40:30Z"
|
"date": "2025-08-28T10:40:30Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "neo4j/neo4j",
|
|
||||||
"version": "4.4.45",
|
|
||||||
"date": "2025-08-28T10:12:16Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "apache/cassandra",
|
|
||||||
"version": "4.1.10-tentative",
|
|
||||||
"date": "2025-08-28T10:02:40Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "garethgeorge/backrest",
|
"name": "garethgeorge/backrest",
|
||||||
"version": "v1.9.2",
|
"version": "v1.9.2",
|
||||||
@@ -354,11 +524,6 @@
|
|||||||
"version": "1.23.3",
|
"version": "1.23.3",
|
||||||
"date": "2025-08-28T02:50:06Z"
|
"date": "2025-08-28T02:50:06Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "rabbitmq/rabbitmq-server",
|
|
||||||
"version": "v4.1.3",
|
|
||||||
"date": "2025-08-04T12:13:45Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "pocket-id/pocket-id",
|
"name": "pocket-id/pocket-id",
|
||||||
"version": "v1.10.0",
|
"version": "v1.10.0",
|
||||||
@@ -369,16 +534,6 @@
|
|||||||
"version": "v0.37.0",
|
"version": "v0.37.0",
|
||||||
"date": "2025-08-27T20:03:52Z"
|
"date": "2025-08-27T20:03:52Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "gtsteffaniak/filebrowser",
|
|
||||||
"version": "v0.8.3-beta",
|
|
||||||
"date": "2025-08-27T18:18:48Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "raydak-labs/configarr",
|
|
||||||
"version": "v1.15.0",
|
|
||||||
"date": "2025-08-27T17:12:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "zwave-js/zwave-js-ui",
|
"name": "zwave-js/zwave-js-ui",
|
||||||
"version": "v11.2.1",
|
"version": "v11.2.1",
|
||||||
@@ -399,46 +554,21 @@
|
|||||||
"version": "v12.0.8",
|
"version": "v12.0.8",
|
||||||
"date": "2025-08-27T06:22:32Z"
|
"date": "2025-08-27T06:22:32Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "netbox-community/netbox",
|
|
||||||
"version": "v4.3.7",
|
|
||||||
"date": "2025-08-26T17:54:25Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "jenkinsci/jenkins",
|
|
||||||
"version": "jenkins-2.525",
|
|
||||||
"date": "2025-08-26T14:28:44Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "meilisearch/meilisearch",
|
"name": "meilisearch/meilisearch",
|
||||||
"version": "latest",
|
"version": "latest",
|
||||||
"date": "2025-08-26T14:14:42Z"
|
"date": "2025-08-26T14:14:42Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "element-hq/synapse",
|
|
||||||
"version": "v1.137.0",
|
|
||||||
"date": "2025-08-26T09:51:47Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "evcc-io/evcc",
|
"name": "evcc-io/evcc",
|
||||||
"version": "0.207.5",
|
"version": "0.207.5",
|
||||||
"date": "2025-08-26T06:57:07Z"
|
"date": "2025-08-26T06:57:07Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "morpheus65535/bazarr",
|
|
||||||
"version": "v1.5.3-beta.10",
|
|
||||||
"date": "2025-07-15T06:07:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "documenso/documenso",
|
"name": "documenso/documenso",
|
||||||
"version": "v1.12.2-rc.6",
|
"version": "v1.12.2-rc.6",
|
||||||
"date": "2025-08-26T01:17:43Z"
|
"date": "2025-08-26T01:17:43Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "hyperion-project/hyperion.ng",
|
|
||||||
"version": "2.1.1",
|
|
||||||
"date": "2025-06-14T17:45:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "coder/code-server",
|
"name": "coder/code-server",
|
||||||
"version": "v4.103.2",
|
"version": "v4.103.2",
|
||||||
@@ -454,11 +584,6 @@
|
|||||||
"version": "v3.1.2",
|
"version": "v3.1.2",
|
||||||
"date": "2025-08-25T18:00:52Z"
|
"date": "2025-08-25T18:00:52Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "wazuh/wazuh",
|
|
||||||
"version": "coverity-w35-4.13.0",
|
|
||||||
"date": "2025-08-25T15:17:33Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "sabnzbd/sabnzbd",
|
"name": "sabnzbd/sabnzbd",
|
||||||
"version": "4.5.3",
|
"version": "4.5.3",
|
||||||
@@ -489,11 +614,6 @@
|
|||||||
"version": "2.1",
|
"version": "2.1",
|
||||||
"date": "2025-08-24T15:42:19Z"
|
"date": "2025-08-24T15:42:19Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Radarr/Radarr",
|
|
||||||
"version": "v5.26.2.10099",
|
|
||||||
"date": "2025-06-11T20:10:39Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Prowlarr/Prowlarr",
|
"name": "Prowlarr/Prowlarr",
|
||||||
"version": "v2.0.5.5160",
|
"version": "v2.0.5.5160",
|
||||||
@@ -514,11 +634,6 @@
|
|||||||
"version": "v0.306.0-rc.0",
|
"version": "v0.306.0-rc.0",
|
||||||
"date": "2025-08-21T13:31:03Z"
|
"date": "2025-08-21T13:31:03Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "TandoorRecipes/recipes",
|
|
||||||
"version": "2.0.3",
|
|
||||||
"date": "2025-08-23T07:08:13Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "pocketbase/pocketbase",
|
"name": "pocketbase/pocketbase",
|
||||||
"version": "v0.29.3",
|
"version": "v0.29.3",
|
||||||
@@ -529,11 +644,6 @@
|
|||||||
"version": "v2.10.2",
|
"version": "v2.10.2",
|
||||||
"date": "2025-08-23T03:10:31Z"
|
"date": "2025-08-23T03:10:31Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "paperless-ngx/paperless-ngx",
|
|
||||||
"version": "v2.18.2",
|
|
||||||
"date": "2025-08-22T23:56:41Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "tailscale/tailscale",
|
"name": "tailscale/tailscale",
|
||||||
"version": "v1.86.5",
|
"version": "v1.86.5",
|
||||||
@@ -549,11 +659,6 @@
|
|||||||
"version": "version/2025.8.1",
|
"version": "version/2025.8.1",
|
||||||
"date": "2025-08-22T14:55:30Z"
|
"date": "2025-08-22T14:55:30Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "mattermost/mattermost",
|
|
||||||
"version": "v10.11.2",
|
|
||||||
"date": "2025-08-22T06:50:56Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "lazy-media/Reactive-Resume",
|
"name": "lazy-media/Reactive-Resume",
|
||||||
"version": "v1.2.4",
|
"version": "v1.2.4",
|
||||||
@@ -569,11 +674,6 @@
|
|||||||
"version": "v6.9.1",
|
"version": "v6.9.1",
|
||||||
"date": "2025-08-22T04:04:12Z"
|
"date": "2025-08-22T04:04:12Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "cloudreve/cloudreve",
|
|
||||||
"version": "4.6.0",
|
|
||||||
"date": "2025-08-22T02:21:40Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "hargata/lubelog",
|
"name": "hargata/lubelog",
|
||||||
"version": "v1.5.0",
|
"version": "v1.5.0",
|
||||||
@@ -594,21 +694,6 @@
|
|||||||
"version": "v1.4.6",
|
"version": "v1.4.6",
|
||||||
"date": "2025-08-21T14:05:58Z"
|
"date": "2025-08-21T14:05:58Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "glpi-project/glpi",
|
|
||||||
"version": "10.0.19",
|
|
||||||
"date": "2025-07-16T09:45:14Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "AdguardTeam/AdGuardHome",
|
|
||||||
"version": "v0.107.65",
|
|
||||||
"date": "2025-08-20T14:02:28Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "cockpit-project/cockpit",
|
|
||||||
"version": "345",
|
|
||||||
"date": "2025-08-20T11:52:24Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "openhab/openhab-core",
|
"name": "openhab/openhab-core",
|
||||||
"version": "4.3.7",
|
"version": "4.3.7",
|
||||||
@@ -624,21 +709,11 @@
|
|||||||
"version": "v5.23.2",
|
"version": "v5.23.2",
|
||||||
"date": "2025-08-19T21:24:45Z"
|
"date": "2025-08-19T21:24:45Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "cross-seed/cross-seed",
|
|
||||||
"version": "v6.13.2",
|
|
||||||
"date": "2025-08-19T18:18:40Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "karlomikus/bar-assistant",
|
"name": "karlomikus/bar-assistant",
|
||||||
"version": "v5.8.0",
|
"version": "v5.8.0",
|
||||||
"date": "2025-08-19T16:46:00Z"
|
"date": "2025-08-19T16:46:00Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "chrisvel/tududi",
|
|
||||||
"version": "v0.80",
|
|
||||||
"date": "2025-07-24T14:12:39Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "oauth2-proxy/oauth2-proxy",
|
"name": "oauth2-proxy/oauth2-proxy",
|
||||||
"version": "v7.12.0",
|
"version": "v7.12.0",
|
||||||
@@ -689,11 +764,6 @@
|
|||||||
"version": "v0.8.3",
|
"version": "v0.8.3",
|
||||||
"date": "2025-08-17T06:24:54Z"
|
"date": "2025-08-17T06:24:54Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "blakeblackshear/frigate",
|
|
||||||
"version": "v0.14.1",
|
|
||||||
"date": "2024-08-29T22:32:51Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "intri-in/manage-my-damn-life-nextjs",
|
"name": "intri-in/manage-my-damn-life-nextjs",
|
||||||
"version": "v0.8.0-release",
|
"version": "v0.8.0-release",
|
||||||
@@ -729,31 +799,11 @@
|
|||||||
"version": "v1.14.0",
|
"version": "v1.14.0",
|
||||||
"date": "2025-08-12T13:58:46Z"
|
"date": "2025-08-12T13:58:46Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "pelican-dev/panel",
|
|
||||||
"version": "v1.0.0-beta24",
|
|
||||||
"date": "2025-08-11T21:22:01Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pelican-dev/wings",
|
|
||||||
"version": "v1.0.0-beta16",
|
|
||||||
"date": "2025-08-11T21:19:48Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "postgres/postgres",
|
|
||||||
"version": "REL_13_22",
|
|
||||||
"date": "2025-08-11T21:10:58Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "FlowiseAI/Flowise",
|
"name": "FlowiseAI/Flowise",
|
||||||
"version": "flowise@3.0.5",
|
"version": "flowise@3.0.5",
|
||||||
"date": "2025-08-11T13:01:45Z"
|
"date": "2025-08-11T13:01:45Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Cleanuparr/Cleanuparr",
|
|
||||||
"version": "v2.1.6",
|
|
||||||
"date": "2025-08-11T08:04:09Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "slskd/slskd",
|
"name": "slskd/slskd",
|
||||||
"version": "0.23.2",
|
"version": "0.23.2",
|
||||||
@@ -764,16 +814,6 @@
|
|||||||
"version": "1012-08-09",
|
"version": "1012-08-09",
|
||||||
"date": "2025-08-10T13:50:58Z"
|
"date": "2025-08-10T13:50:58Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "diced/zipline",
|
|
||||||
"version": "v4.2.3",
|
|
||||||
"date": "2025-08-10T05:53:43Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Stirling-Tools/Stirling-PDF",
|
|
||||||
"version": "v1.2.0",
|
|
||||||
"date": "2025-08-09T14:30:52Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "kimai/kimai",
|
"name": "kimai/kimai",
|
||||||
"version": "2.38.0",
|
"version": "2.38.0",
|
||||||
@@ -804,11 +844,6 @@
|
|||||||
"version": "v25.08.1",
|
"version": "v25.08.1",
|
||||||
"date": "2025-08-06T21:04:07Z"
|
"date": "2025-08-06T21:04:07Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "NodeBB/NodeBB",
|
|
||||||
"version": "v4.4.6",
|
|
||||||
"date": "2025-08-06T17:48:36Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "TryGhost/Ghost-CLI",
|
"name": "TryGhost/Ghost-CLI",
|
||||||
"version": "v1.28.3",
|
"version": "v1.28.3",
|
||||||
@@ -824,11 +859,6 @@
|
|||||||
"version": "4.7.30",
|
"version": "4.7.30",
|
||||||
"date": "2025-08-05T17:23:06Z"
|
"date": "2025-08-05T17:23:06Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "ErsatzTV/ErsatzTV",
|
|
||||||
"version": "v25.4.0",
|
|
||||||
"date": "2025-08-05T17:10:01Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "binwiederhier/ntfy",
|
"name": "binwiederhier/ntfy",
|
||||||
"version": "v2.14.0",
|
"version": "v2.14.0",
|
||||||
@@ -849,11 +879,6 @@
|
|||||||
"version": "v2.7.4",
|
"version": "v2.7.4",
|
||||||
"date": "2025-08-02T16:51:19Z"
|
"date": "2025-08-02T16:51:19Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "actualbudget/actual",
|
|
||||||
"version": "v25.8.0",
|
|
||||||
"date": "2025-08-02T16:17:45Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "inspircd/inspircd",
|
"name": "inspircd/inspircd",
|
||||||
"version": "v4.8.0",
|
"version": "v4.8.0",
|
||||||
@@ -864,11 +889,6 @@
|
|||||||
"version": "v4.2.5",
|
"version": "v4.2.5",
|
||||||
"date": "2025-08-02T08:58:21Z"
|
"date": "2025-08-02T08:58:21Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "docmost/docmost",
|
|
||||||
"version": "v0.22.2",
|
|
||||||
"date": "2025-08-01T23:27:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "alexta69/metube",
|
"name": "alexta69/metube",
|
||||||
"version": "2025.07.31",
|
"version": "2025.07.31",
|
||||||
@@ -1089,11 +1109,6 @@
|
|||||||
"version": "v5.6.0",
|
"version": "v5.6.0",
|
||||||
"date": "2025-06-18T12:19:54Z"
|
"date": "2025-06-18T12:19:54Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "webmin/webmin",
|
|
||||||
"version": "2.402",
|
|
||||||
"date": "2025-06-17T05:20:42Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "TriliumNext/Notes",
|
"name": "TriliumNext/Notes",
|
||||||
"version": "v0.95.0",
|
"version": "v0.95.0",
|
||||||
@@ -1124,21 +1139,11 @@
|
|||||||
"version": "v0.26.1",
|
"version": "v0.26.1",
|
||||||
"date": "2025-06-06T11:22:02Z"
|
"date": "2025-06-06T11:22:02Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "plankanban/planka",
|
|
||||||
"version": "planka-1.0.3",
|
|
||||||
"date": "2025-06-04T10:26:07Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "C4illin/ConvertX",
|
"name": "C4illin/ConvertX",
|
||||||
"version": "v0.14.1",
|
"version": "v0.14.1",
|
||||||
"date": "2025-06-04T08:57:15Z"
|
"date": "2025-06-04T08:57:15Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "louislam/uptime-kuma",
|
|
||||||
"version": "2.0.0-beta.2-temp",
|
|
||||||
"date": "2025-03-28T08:45:58Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Pf2eToolsOrg/Pf2eTools",
|
"name": "Pf2eToolsOrg/Pf2eTools",
|
||||||
"version": "v0.9.0",
|
"version": "v0.9.0",
|
||||||
@@ -1159,11 +1164,6 @@
|
|||||||
"version": "v0.26.2",
|
"version": "v0.26.2",
|
||||||
"date": "2025-05-22T05:24:42Z"
|
"date": "2025-05-22T05:24:42Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "CrazyWolf13/streamlink-webui",
|
|
||||||
"version": "0.5",
|
|
||||||
"date": "2025-05-21T20:19:14Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "hansmi/prometheus-paperless-exporter",
|
"name": "hansmi/prometheus-paperless-exporter",
|
||||||
"version": "v0.0.8",
|
"version": "v0.0.8",
|
||||||
|
|||||||
@@ -73,7 +73,13 @@ function CategoryView() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleScriptClick = (scriptSlug: string) => {
|
const handleScriptClick = (scriptSlug: string) => {
|
||||||
router.push(`/scripts?id=${scriptSlug}`);
|
// Include category context when navigating to scripts
|
||||||
|
const categoryName = selectedCategoryIndex !== null ? categories[selectedCategoryIndex]?.name : null;
|
||||||
|
const queryParams = new URLSearchParams({ id: scriptSlug });
|
||||||
|
if (categoryName) {
|
||||||
|
queryParams.append("category", categoryName);
|
||||||
|
}
|
||||||
|
router.push(`/scripts?${queryParams.toString()}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
const navigateCategory = (direction: "prev" | "next") => {
|
const navigateCategory = (direction: "prev" | "next") => {
|
||||||
|
|||||||
@@ -4,12 +4,7 @@ import Link from "next/link";
|
|||||||
|
|
||||||
import type { Category } from "@/lib/types";
|
import type { Category } from "@/lib/types";
|
||||||
|
|
||||||
import {
|
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion";
|
||||||
Accordion,
|
|
||||||
AccordionContent,
|
|
||||||
AccordionItem,
|
|
||||||
AccordionTrigger,
|
|
||||||
} from "@/components/ui/accordion";
|
|
||||||
import { formattedBadge } from "@/components/command-menu";
|
import { formattedBadge } from "@/components/command-menu";
|
||||||
import { basePath } from "@/config/site-config";
|
import { basePath } from "@/config/site-config";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
@@ -18,14 +13,16 @@ export default function ScriptAccordion({
|
|||||||
items,
|
items,
|
||||||
selectedScript,
|
selectedScript,
|
||||||
setSelectedScript,
|
setSelectedScript,
|
||||||
|
selectedCategory,
|
||||||
|
setSelectedCategory,
|
||||||
}: {
|
}: {
|
||||||
items: Category[];
|
items: Category[];
|
||||||
selectedScript: string | null;
|
selectedScript: string | null;
|
||||||
setSelectedScript: (script: string | null) => void;
|
setSelectedScript: (script: string | null) => void;
|
||||||
|
selectedCategory: string | null;
|
||||||
|
setSelectedCategory: (category: string | null) => void;
|
||||||
}) {
|
}) {
|
||||||
const [expandedItem, setExpandedItem] = useState<string | undefined>(
|
const [expandedItem, setExpandedItem] = useState<string | undefined>(undefined);
|
||||||
undefined,
|
|
||||||
);
|
|
||||||
const linkRefs = useRef<{ [key: string]: HTMLAnchorElement | null }>({});
|
const linkRefs = useRef<{ [key: string]: HTMLAnchorElement | null }>({});
|
||||||
|
|
||||||
const handleAccordionChange = (value: string | undefined) => {
|
const handleAccordionChange = (value: string | undefined) => {
|
||||||
@@ -41,15 +38,27 @@ export default function ScriptAccordion({
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (selectedScript) {
|
if (selectedScript) {
|
||||||
const category = items.find(category =>
|
let category;
|
||||||
category.scripts.some(script => script.slug === selectedScript),
|
|
||||||
|
// If we have a selected category, try to find the script in that specific category
|
||||||
|
if (selectedCategory) {
|
||||||
|
category = items.find(
|
||||||
|
cat => cat.name === selectedCategory && cat.scripts.some(script => script.slug === selectedScript),
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fallback: if no category is selected or script not found in selected category,
|
||||||
|
// use the first category containing the script (backward compatibility)
|
||||||
|
if (!category) {
|
||||||
|
category = items.find(category => category.scripts.some(script => script.slug === selectedScript));
|
||||||
|
}
|
||||||
|
|
||||||
if (category) {
|
if (category) {
|
||||||
setExpandedItem(category.name);
|
setExpandedItem(category.name);
|
||||||
handleSelected(selectedScript);
|
handleSelected(selectedScript);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [selectedScript, items, handleSelected]);
|
}, [selectedScript, selectedCategory, items, handleSelected]);
|
||||||
return (
|
return (
|
||||||
<Accordion
|
<Accordion
|
||||||
type="single"
|
type="single"
|
||||||
@@ -82,10 +91,7 @@ export default function ScriptAccordion({
|
|||||||
</div>
|
</div>
|
||||||
{" "}
|
{" "}
|
||||||
</AccordionTrigger>
|
</AccordionTrigger>
|
||||||
<AccordionContent
|
<AccordionContent data-state={expandedItem === category.name ? "open" : "closed"} className="pt-0">
|
||||||
data-state={expandedItem === category.name ? "open" : "closed"}
|
|
||||||
className="pt-0"
|
|
||||||
>
|
|
||||||
{category.scripts
|
{category.scripts
|
||||||
.slice()
|
.slice()
|
||||||
.sort((a, b) => a.name.localeCompare(b.name))
|
.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
@@ -94,7 +100,7 @@ export default function ScriptAccordion({
|
|||||||
<Link
|
<Link
|
||||||
href={{
|
href={{
|
||||||
pathname: "/scripts",
|
pathname: "/scripts",
|
||||||
query: { id: script.slug },
|
query: { id: script.slug, category: category.name },
|
||||||
}}
|
}}
|
||||||
prefetch={false}
|
prefetch={false}
|
||||||
className={`flex cursor-pointer items-center justify-between gap-1 px-1 py-1 text-muted-foreground hover:rounded-lg hover:bg-accent/60 hover:dark:bg-accent/20 ${
|
className={`flex cursor-pointer items-center justify-between gap-1 px-1 py-1 text-muted-foreground hover:rounded-lg hover:bg-accent/60 hover:dark:bg-accent/20 ${
|
||||||
@@ -102,7 +108,10 @@ export default function ScriptAccordion({
|
|||||||
? "rounded-lg bg-accent font-semibold dark:bg-accent/30 dark:text-white"
|
? "rounded-lg bg-accent font-semibold dark:bg-accent/30 dark:text-white"
|
||||||
: ""
|
: ""
|
||||||
}`}
|
}`}
|
||||||
onClick={() => handleSelected(script.slug)}
|
onClick={() => {
|
||||||
|
handleSelected(script.slug);
|
||||||
|
setSelectedCategory(category.name);
|
||||||
|
}}
|
||||||
ref={(el) => {
|
ref={(el) => {
|
||||||
linkRefs.current[script.slug] = el;
|
linkRefs.current[script.slug] = el;
|
||||||
}}
|
}}
|
||||||
@@ -113,15 +122,11 @@ export default function ScriptAccordion({
|
|||||||
height={16}
|
height={16}
|
||||||
width={16}
|
width={16}
|
||||||
unoptimized
|
unoptimized
|
||||||
onError={e =>
|
onError={e => ((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`)}
|
||||||
((e.currentTarget as HTMLImageElement).src
|
|
||||||
= `/${basePath}/logo.png`)}
|
|
||||||
alt={script.name}
|
alt={script.name}
|
||||||
className="mr-1 w-4 h-4 rounded-full"
|
className="mr-1 w-4 h-4 rounded-full"
|
||||||
/>
|
/>
|
||||||
<span className="flex items-center gap-2">
|
<span className="flex items-center gap-2">{script.name}</span>
|
||||||
{script.name}
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
{formattedBadge(script.type)}
|
{formattedBadge(script.type)}
|
||||||
</Link>
|
</Link>
|
||||||
|
|||||||
@@ -8,10 +8,14 @@ function Sidebar({
|
|||||||
items,
|
items,
|
||||||
selectedScript,
|
selectedScript,
|
||||||
setSelectedScript,
|
setSelectedScript,
|
||||||
|
selectedCategory,
|
||||||
|
setSelectedCategory,
|
||||||
}: {
|
}: {
|
||||||
items: Category[];
|
items: Category[];
|
||||||
selectedScript: string | null;
|
selectedScript: string | null;
|
||||||
setSelectedScript: (script: string | null) => void;
|
setSelectedScript: (script: string | null) => void;
|
||||||
|
selectedCategory: string | null;
|
||||||
|
setSelectedCategory: (category: string | null) => void;
|
||||||
}) {
|
}) {
|
||||||
const uniqueScripts = items.reduce((acc, category) => {
|
const uniqueScripts = items.reduce((acc, category) => {
|
||||||
for (const script of category.scripts) {
|
for (const script of category.scripts) {
|
||||||
@@ -37,6 +41,8 @@ function Sidebar({
|
|||||||
items={items}
|
items={items}
|
||||||
selectedScript={selectedScript}
|
selectedScript={selectedScript}
|
||||||
setSelectedScript={setSelectedScript}
|
setSelectedScript={setSelectedScript}
|
||||||
|
selectedCategory={selectedCategory}
|
||||||
|
setSelectedCategory={setSelectedCategory}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,16 +8,14 @@ import type { Category, Script } from "@/lib/types";
|
|||||||
import { ScriptItem } from "@/app/scripts/_components/script-item";
|
import { ScriptItem } from "@/app/scripts/_components/script-item";
|
||||||
import { fetchCategories } from "@/lib/data";
|
import { fetchCategories } from "@/lib/data";
|
||||||
|
|
||||||
import {
|
import { LatestScripts, MostViewedScripts } from "./_components/script-info-blocks";
|
||||||
LatestScripts,
|
|
||||||
MostViewedScripts,
|
|
||||||
} from "./_components/script-info-blocks";
|
|
||||||
import Sidebar from "./_components/sidebar";
|
import Sidebar from "./_components/sidebar";
|
||||||
|
|
||||||
export const dynamic = "force-static";
|
export const dynamic = "force-static";
|
||||||
|
|
||||||
function ScriptContent() {
|
function ScriptContent() {
|
||||||
const [selectedScript, setSelectedScript] = useQueryState("id");
|
const [selectedScript, setSelectedScript] = useQueryState("id");
|
||||||
|
const [selectedCategory, setSelectedCategory] = useQueryState("category");
|
||||||
const [links, setLinks] = useState<Category[]>([]);
|
const [links, setLinks] = useState<Category[]>([]);
|
||||||
const [item, setItem] = useState<Script>();
|
const [item, setItem] = useState<Script>();
|
||||||
|
|
||||||
@@ -47,6 +45,8 @@ function ScriptContent() {
|
|||||||
items={links}
|
items={links}
|
||||||
selectedScript={selectedScript}
|
selectedScript={selectedScript}
|
||||||
setSelectedScript={setSelectedScript}
|
setSelectedScript={setSelectedScript}
|
||||||
|
selectedCategory={selectedCategory}
|
||||||
|
setSelectedCategory={setSelectedCategory}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="mx-4 w-full sm:mx-0 sm:ml-4">
|
<div className="mx-4 w-full sm:mx-0 sm:ml-4">
|
||||||
|
|||||||
@@ -36,19 +36,24 @@ export function formattedBadge(type: string) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// random Script
|
function getRandomScript(categories: Category[], previouslySelected: Set<string> = new Set()): Script | null {
|
||||||
function getRandomScript(categories: Category[]): Script | null {
|
|
||||||
const allScripts = categories.flatMap(cat => cat.scripts || []);
|
const allScripts = categories.flatMap(cat => cat.scripts || []);
|
||||||
if (allScripts.length === 0)
|
if (allScripts.length === 0)
|
||||||
return null;
|
return null;
|
||||||
const idx = Math.floor(Math.random() * allScripts.length);
|
|
||||||
return allScripts[idx];
|
const availableScripts = allScripts.filter(script => !previouslySelected.has(script.slug));
|
||||||
|
if (availableScripts.length === 0) {
|
||||||
|
return allScripts[Math.floor(Math.random() * allScripts.length)];
|
||||||
|
}
|
||||||
|
const idx = Math.floor(Math.random() * availableScripts.length);
|
||||||
|
return availableScripts[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function CommandMenu() {
|
function CommandMenu() {
|
||||||
const [open, setOpen] = React.useState(false);
|
const [open, setOpen] = React.useState(false);
|
||||||
const [links, setLinks] = React.useState<Category[]>([]);
|
const [links, setLinks] = React.useState<Category[]>([]);
|
||||||
const [isLoading, setIsLoading] = React.useState(false);
|
const [isLoading, setIsLoading] = React.useState(false);
|
||||||
|
const [selectedScripts, setSelectedScripts] = React.useState<Set<string>>(new Set());
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const fetchSortedCategories = () => {
|
const fetchSortedCategories = () => {
|
||||||
@@ -65,25 +70,26 @@ export default function CommandMenu() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
const down = (e: KeyboardEvent) => {
|
const handleKeyDown = (e: KeyboardEvent) => {
|
||||||
if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
|
if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
fetchSortedCategories();
|
fetchSortedCategories();
|
||||||
setOpen(open => !open);
|
setOpen(open => !open);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
document.addEventListener("keydown", down);
|
document.addEventListener("keydown", handleKeyDown);
|
||||||
return () => document.removeEventListener("keydown", down);
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const openRandomScript = async () => {
|
const handleOpenRandomScript = async () => {
|
||||||
if (links.length === 0) {
|
if (links.length === 0) {
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
try {
|
try {
|
||||||
const categories = await fetchCategories();
|
const categories = await fetchCategories();
|
||||||
setLinks(categories);
|
setLinks(categories);
|
||||||
const randomScript = getRandomScript(categories);
|
const randomScript = getRandomScript(categories, selectedScripts);
|
||||||
if (randomScript) {
|
if (randomScript) {
|
||||||
|
setSelectedScripts(prev => new Set([...prev, randomScript.slug]));
|
||||||
router.push(`/scripts?id=${randomScript.slug}`);
|
router.push(`/scripts?id=${randomScript.slug}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,13 +98,54 @@ export default function CommandMenu() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const randomScript = getRandomScript(links);
|
const randomScript = getRandomScript(links, selectedScripts);
|
||||||
if (randomScript) {
|
if (randomScript) {
|
||||||
|
setSelectedScripts(prev => new Set([...prev, randomScript.slug]));
|
||||||
router.push(`/scripts?id=${randomScript.slug}`);
|
router.push(`/scripts?id=${randomScript.slug}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getUniqueScriptsMap = React.useCallback(() => {
|
||||||
|
const scriptMap = new Map<string, { script: Script; categoryName: string }>();
|
||||||
|
for (const category of links) {
|
||||||
|
for (const script of category.scripts) {
|
||||||
|
if (!scriptMap.has(script.slug)) {
|
||||||
|
scriptMap.set(script.slug, { script, categoryName: category.name });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return scriptMap;
|
||||||
|
}, [links]);
|
||||||
|
|
||||||
|
const getUniqueScriptsByCategory = React.useCallback(() => {
|
||||||
|
const scriptMap = getUniqueScriptsMap();
|
||||||
|
const categoryOrder = links.map(cat => cat.name);
|
||||||
|
const grouped: Record<string, Script[]> = {};
|
||||||
|
|
||||||
|
for (const name of categoryOrder) {
|
||||||
|
grouped[name] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const { script, categoryName } of scriptMap.values()) {
|
||||||
|
if (grouped[categoryName]) {
|
||||||
|
grouped[categoryName].push(script);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
grouped[categoryName] = [script];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.keys(grouped).forEach((cat) => {
|
||||||
|
if (grouped[cat].length === 0)
|
||||||
|
delete grouped[cat];
|
||||||
|
});
|
||||||
|
|
||||||
|
return grouped;
|
||||||
|
}, [getUniqueScriptsMap, links]);
|
||||||
|
|
||||||
|
const uniqueScriptsByCategory = getUniqueScriptsByCategory();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
@@ -122,7 +169,20 @@ export default function CommandMenu() {
|
|||||||
<TooltipProvider>
|
<TooltipProvider>
|
||||||
<Tooltip delayDuration={100}>
|
<Tooltip delayDuration={100}>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
<Button variant="outline" size="icon" onClick={openRandomScript} disabled={isLoading} className="hidden lg:flex">
|
<Button
|
||||||
|
variant="outline"
|
||||||
|
size="icon"
|
||||||
|
onClick={handleOpenRandomScript}
|
||||||
|
disabled={isLoading}
|
||||||
|
className="hidden lg:flex"
|
||||||
|
aria-label="Open Random Script"
|
||||||
|
tabIndex={0}
|
||||||
|
onKeyDown={(e) => {
|
||||||
|
if (e.key === "Enter" || e.key === " ") {
|
||||||
|
handleOpenRandomScript();
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
<Sparkles className="size-4" />
|
<Sparkles className="size-4" />
|
||||||
<span className="sr-only">Open Random Script</span>
|
<span className="sr-only">Open Random Script</span>
|
||||||
</Button>
|
</Button>
|
||||||
@@ -139,16 +199,24 @@ export default function CommandMenu() {
|
|||||||
<CommandInput placeholder="Search for a script..." />
|
<CommandInput placeholder="Search for a script..." />
|
||||||
<CommandList>
|
<CommandList>
|
||||||
<CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty>
|
<CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty>
|
||||||
{links.map(category => (
|
{Object.entries(uniqueScriptsByCategory).map(([categoryName, scripts]) => (
|
||||||
<CommandGroup key={`category:${category.name}`} heading={category.name}>
|
<CommandGroup key={`category:${categoryName}`} heading={categoryName}>
|
||||||
{category.scripts.map(script => (
|
{scripts.map(script => (
|
||||||
<CommandItem
|
<CommandItem
|
||||||
key={`script:${script.slug}`}
|
key={`script:${script.slug}`}
|
||||||
value={`${script.slug}-${script.name}`}
|
value={`${script.name}-${script.type}`}
|
||||||
onSelect={() => {
|
onSelect={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
router.push(`/scripts?id=${script.slug}`);
|
router.push(`/scripts?id=${script.slug}`);
|
||||||
}}
|
}}
|
||||||
|
tabIndex={0}
|
||||||
|
aria-label={`Open script ${script.name}`}
|
||||||
|
onKeyDown={(e) => {
|
||||||
|
if (e.key === "Enter" || e.key === " ") {
|
||||||
|
setOpen(false);
|
||||||
|
router.push(`/scripts?id=${script.slug}`);
|
||||||
|
}
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<div className="flex gap-2" onClick={() => setOpen(false)}>
|
<div className="flex gap-2" onClick={() => setOpen(false)}>
|
||||||
<Image
|
<Image
|
||||||
@@ -172,3 +240,5 @@ export default function CommandMenu() {
|
|||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default CommandMenu;
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
gdal-bin \
|
gdal-bin \
|
||||||
libgdal-dev \
|
libgdal-dev \
|
||||||
git
|
git \
|
||||||
|
memcached \
|
||||||
|
libmemcached-tools
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PYTHON_VERSION="3.12" setup_uv
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
|||||||
@@ -169,7 +169,8 @@ cd "$STAGING_DIR"
|
|||||||
SOURCE=${SOURCE_DIR}/libjxl
|
SOURCE=${SOURCE_DIR}/libjxl
|
||||||
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
|
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
|
||||||
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
|
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
|
||||||
: "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}"
|
# : "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}"
|
||||||
|
: "${LIBJXL_REVISION:=794a5dcf0d54f9f0b20d288a12e87afb91d20dfc}"
|
||||||
$STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
|
$STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
|
||||||
cd "$SOURCE"
|
cd "$SOURCE"
|
||||||
$STD git reset --hard "$LIBJXL_REVISION"
|
$STD git reset --hard "$LIBJXL_REVISION"
|
||||||
@@ -204,7 +205,8 @@ cd "$STAGING_DIR"
|
|||||||
rm -rf "$SOURCE"/{build,third_party}
|
rm -rf "$SOURCE"/{build,third_party}
|
||||||
|
|
||||||
SOURCE=${SOURCE_DIR}/libheif
|
SOURCE=${SOURCE_DIR}/libheif
|
||||||
: "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
|
# : "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
|
||||||
|
: "${LIBHEIF_REVISION:=35dad50a9145332a7bfdf1ff6aef6801fb613d68}"
|
||||||
$STD git clone https://github.com/strukturag/libheif.git "$SOURCE"
|
$STD git clone https://github.com/strukturag/libheif.git "$SOURCE"
|
||||||
cd "$SOURCE"
|
cd "$SOURCE"
|
||||||
$STD git reset --hard "$LIBHEIF_REVISION"
|
$STD git reset --hard "$LIBHEIF_REVISION"
|
||||||
@@ -227,7 +229,8 @@ cd "$STAGING_DIR"
|
|||||||
rm -rf "$SOURCE"/build
|
rm -rf "$SOURCE"/build
|
||||||
|
|
||||||
SOURCE=${SOURCE_DIR}/libraw
|
SOURCE=${SOURCE_DIR}/libraw
|
||||||
: "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
|
# : "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
|
||||||
|
: "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}"
|
||||||
$STD git clone https://github.com/libraw/libraw.git "$SOURCE"
|
$STD git clone https://github.com/libraw/libraw.git "$SOURCE"
|
||||||
cd "$SOURCE"
|
cd "$SOURCE"
|
||||||
$STD git reset --hard "$LIBRAW_REVISION"
|
$STD git reset --hard "$LIBRAW_REVISION"
|
||||||
@@ -240,7 +243,8 @@ $STD make clean
|
|||||||
cd "$STAGING_DIR"
|
cd "$STAGING_DIR"
|
||||||
|
|
||||||
SOURCE=$SOURCE_DIR/imagemagick
|
SOURCE=$SOURCE_DIR/imagemagick
|
||||||
: "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
|
# : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
|
||||||
|
: "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}"
|
||||||
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
|
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
|
||||||
cd "$SOURCE"
|
cd "$SOURCE"
|
||||||
$STD git reset --hard "$IMAGEMAGICK_REVISION"
|
$STD git reset --hard "$IMAGEMAGICK_REVISION"
|
||||||
@@ -252,7 +256,8 @@ $STD make clean
|
|||||||
cd "$STAGING_DIR"
|
cd "$STAGING_DIR"
|
||||||
|
|
||||||
SOURCE=$SOURCE_DIR/libvips
|
SOURCE=$SOURCE_DIR/libvips
|
||||||
: "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
|
# : "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
|
||||||
|
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
|
||||||
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
|
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
|
||||||
cd "$SOURCE"
|
cd "$SOURCE"
|
||||||
$STD git reset --hard "$LIBVIPS_REVISION"
|
$STD git reset --hard "$LIBVIPS_REVISION"
|
||||||
@@ -280,7 +285,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
|
|||||||
mkdir -p "$INSTALL_DIR"
|
mkdir -p "$INSTALL_DIR"
|
||||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.140.0" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.140.1" "$SRC_DIR"
|
||||||
|
|
||||||
msg_info "Installing ${APPLICATION} (more patience please)"
|
msg_info "Installing ${APPLICATION} (more patience please)"
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ RELEASE=$(curl -fsSL https://api.github.com/repos/netbox-community/netbox/releas
|
|||||||
curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
||||||
$STD unzip "v${RELEASE}.zip"
|
$STD unzip "v${RELEASE}.zip"
|
||||||
mv /opt/netbox-"${RELEASE}"/ /opt/netbox
|
mv /opt/netbox-"${RELEASE}"/ /opt/netbox
|
||||||
|
mkdir -p /opt/netbox/netbox/media
|
||||||
|
|
||||||
$STD adduser --system --group netbox
|
$STD adduser --system --group netbox
|
||||||
chown --recursive netbox /opt/netbox/netbox/media/
|
chown --recursive netbox /opt/netbox/netbox/media/
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ server {
|
|||||||
listen 80;
|
listen 80;
|
||||||
root /opt/snipe-it/public;
|
root /opt/snipe-it/public;
|
||||||
server_name $IPADDRESS;
|
server_name $IPADDRESS;
|
||||||
|
client_max_body_size 100M;
|
||||||
index index.php;
|
index index.php;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ $STD apt-get install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="20" setup_nodejs
|
NODE_VERSION="20" setup_nodejs
|
||||||
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi"
|
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi" "tarball" "v0.80" "/opt/tududi"
|
||||||
|
|
||||||
msg_info "Configuring Tududi"
|
msg_info "Configuring Tududi"
|
||||||
cd /opt/tududi
|
cd /opt/tududi
|
||||||
|
|||||||
@@ -23,12 +23,13 @@ fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
|
|||||||
|
|
||||||
msg_info "Configure ${APPLICATION}"
|
msg_info "Configure ${APPLICATION}"
|
||||||
cd /opt/wizarr
|
cd /opt/wizarr
|
||||||
/usr/local/bin/uv -q sync --locked
|
$STD /usr/local/bin/uv lock
|
||||||
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations
|
$STD /usr/local/bin/uv sync --locked
|
||||||
|
$STD /usr/local/bin/uv run pybabel compile -d app/translations
|
||||||
$STD npm --prefix app/static install
|
$STD npm --prefix app/static install
|
||||||
$STD npm --prefix app/static run build:css
|
$STD npm --prefix app/static run build:css
|
||||||
mkdir -p ./.cache
|
mkdir -p ./.cache
|
||||||
$STD /usr/local/bin/uv -q run flask db upgrade
|
$STD /usr/local/bin/uv run flask db upgrade
|
||||||
msg_ok "Configure ${APPLICATION}"
|
msg_ok "Configure ${APPLICATION}"
|
||||||
|
|
||||||
msg_info "Creating env, start script and service"
|
msg_info "Creating env, start script and service"
|
||||||
|
|||||||
@@ -41,39 +41,37 @@ function msg_ok() {
|
|||||||
|
|
||||||
function msg_error() { echo -e "${RD}✗ $1${CL}"; }
|
function msg_error() { echo -e "${RD}✗ $1${CL}"; }
|
||||||
|
|
||||||
|
# This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported.
|
||||||
|
# Supported: Proxmox VE 8.0.x – 8.9.x and 9.0 (NOT 9.1+)
|
||||||
pve_check() {
|
pve_check() {
|
||||||
if ! command -v pveversion >/dev/null 2>&1; then
|
|
||||||
msg_error "This script can only be run on a Proxmox VE host."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local PVE_VER
|
local PVE_VER
|
||||||
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
||||||
|
|
||||||
# Proxmox VE 8.x: allow 8.0 – 8.9
|
# Check for Proxmox VE 8.x: allow 8.0–8.9
|
||||||
if [[ "$PVE_VER" =~ ^9\.([0-9]+)(\.[0-9]+)?$ ]]; then
|
if [[ "$PVE_VER" =~ ^8\.([0-9]+) ]]; then
|
||||||
local MINOR="${BASH_REMATCH[1]}"
|
local MINOR="${BASH_REMATCH[1]}"
|
||||||
if ((MINOR != 0)); then
|
if ((MINOR < 0 || MINOR > 9)); then
|
||||||
msg_error "Unsupported Proxmox VE version: $PVE_VER"
|
msg_error "This version of Proxmox VE is not supported."
|
||||||
msg_error "Supported versions: 8.0 – 8.9 or 9.0.x"
|
msg_error "Supported: Proxmox VE version 8.0 – 8.9"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Proxmox VE 9.x: allow only 9.0
|
# Check for Proxmox VE 9.x: allow ONLY 9.0
|
||||||
if [[ "$PVE_VER" =~ ^9\.([0-9]+)$ ]]; then
|
if [[ "$PVE_VER" =~ ^9\.([0-9]+) ]]; then
|
||||||
local MINOR="${BASH_REMATCH[1]}"
|
local MINOR="${BASH_REMATCH[1]}"
|
||||||
if ((MINOR != 0)); then
|
if ((MINOR != 0)); then
|
||||||
msg_error "Unsupported Proxmox VE version: $PVE_VER"
|
msg_error "This version of Proxmox VE is not yet supported."
|
||||||
msg_error "Supported versions: 8.0 – 8.9 or 9.0"
|
msg_error "Supported: Proxmox VE version 9.0"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_error "Unsupported Proxmox VE version: $PVE_VER"
|
# All other unsupported versions
|
||||||
msg_error "Supported versions: 8.0 – 8.9 or 9.0"
|
msg_error "This version of Proxmox VE is not supported."
|
||||||
|
msg_error "Supported versions: Proxmox VE 8.0 – 8.x or 9.0"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user