mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-04 20:33:24 +01:00
Compare commits
36 Commits
2026-01-24
...
2026-01-26
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
20a6e35a07 | ||
|
|
4173579597 | ||
|
|
f8f50f9b00 | ||
|
|
fa29f74c31 | ||
|
|
e50f3cd4f5 | ||
|
|
297a0a00de | ||
|
|
4e910de96d | ||
|
|
b3b67651c9 | ||
|
|
9aadff9c95 | ||
|
|
d42dbc155c | ||
|
|
92f15001b6 | ||
|
|
13a4af4300 | ||
|
|
78bc815a4f | ||
|
|
427986deaf | ||
|
|
6767ea4420 | ||
|
|
befc014eb9 | ||
|
|
35a011e5c5 | ||
|
|
b9eef7a257 | ||
|
|
64752790b6 | ||
|
|
cf08e8d644 | ||
|
|
9603c39487 | ||
|
|
b53cfe6bbc | ||
|
|
f05927602c | ||
|
|
2a234829b8 | ||
|
|
cd678bf8a9 | ||
|
|
ac696e22ca | ||
|
|
3471392fe4 | ||
|
|
9f3fa8e46c | ||
|
|
d91d5d7fd0 | ||
|
|
377dbcddfc | ||
|
|
596f0166dc | ||
|
|
1b5db3dce7 | ||
|
|
8c28895ec4 | ||
|
|
918d7c9053 | ||
|
|
4b83732478 | ||
|
|
92d33ee5e9 |
50
CHANGELOG.md
50
CHANGELOG.md
@@ -10,8 +10,58 @@
|
||||
> [!CAUTION]
|
||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||
|
||||
## 2026-01-27
|
||||
|
||||
## 2026-01-26
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Ghost: Fix missing dependency [@tremor021](https://github.com/tremor021) ([#11196](https://github.com/community-scripts/ProxmoxVE/pull/11196))
|
||||
- tracearr: fix install check and update node to version 24 [@durzo](https://github.com/durzo) ([#11188](https://github.com/community-scripts/ProxmoxVE/pull/11188))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- jotty: full refactor / prebuild package [@MickLesk](https://github.com/MickLesk) ([#11059](https://github.com/community-scripts/ProxmoxVE/pull/11059))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Fixing Nginx configuration for 1.11.0 installs [@8b1th3r0](https://github.com/8b1th3r0) ([#11207](https://github.com/community-scripts/ProxmoxVE/pull/11207))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: refine cleanup_lxc to safely clear caches [@MickLesk](https://github.com/MickLesk) ([#11197](https://github.com/community-scripts/ProxmoxVE/pull/11197))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add nesting warning for systemd-based distributions [@MickLesk](https://github.com/MickLesk) ([#11208](https://github.com/community-scripts/ProxmoxVE/pull/11208))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- jellystat: correct WorkingDirectory to /backend [@MickLesk](https://github.com/MickLesk) ([#11201](https://github.com/community-scripts/ProxmoxVE/pull/11201))
|
||||
|
||||
## 2026-01-25
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [FIX] Tautulli: ensure virtualenv is recreated during update; backup tautulli.db [@vhsdream](https://github.com/vhsdream) ([#11182](https://github.com/community-scripts/ProxmoxVE/pull/11182))
|
||||
- [Fix] Pangolin: ensure additional JSON files are in place [@vhsdream](https://github.com/vhsdream) ([#11183](https://github.com/community-scripts/ProxmoxVE/pull/11183))
|
||||
- Manyfold: fix permissions error [@vhsdream](https://github.com/vhsdream) ([#11165](https://github.com/community-scripts/ProxmoxVE/pull/11165))
|
||||
- Termix: recreate nginx dirs and backup uploads on update [@MickLesk](https://github.com/MickLesk) ([#11169](https://github.com/community-scripts/ProxmoxVE/pull/11169))
|
||||
- Deluge: correct service paths to /usr/local/bin [@MickLesk](https://github.com/MickLesk) ([#11170](https://github.com/community-scripts/ProxmoxVE/pull/11170))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Karakeep: Add the FFmpeg option to the installation script [@vonhyou](https://github.com/vonhyou) ([#11157](https://github.com/community-scripts/ProxmoxVE/pull/11157))
|
||||
- apt-cacher-ng: add avahi-daemon for mDNS service discovery [@MickLesk](https://github.com/MickLesk) ([#11140](https://github.com/community-scripts/ProxmoxVE/pull/11140))
|
||||
|
||||
## 2026-01-24
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
@@ -26,6 +26,7 @@ function update_script() {
|
||||
|
||||
setup_mariadb
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
ensure_dependencies git
|
||||
|
||||
msg_info "Updating Ghost"
|
||||
if command -v ghost &>/dev/null; then
|
||||
|
||||
54
ct/jotty.sh
54
ct/jotty.sh
@@ -7,9 +7,9 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
|
||||
APP="jotty"
|
||||
var_tags="${var_tags:-tasks;notes}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
@@ -35,61 +35,21 @@ function update_script() {
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up configuration & data"
|
||||
cd /opt/jotty
|
||||
cp ./.env /opt/app.env
|
||||
$STD tar -cf /opt/data_config.tar ./data ./config
|
||||
cp /opt/jotty/.env /opt/app.env
|
||||
[[ -d /opt/jotty/data ]] && mv /opt/jotty/data /opt/data
|
||||
msg_ok "Backed up configuration & data"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "tarball" "latest" "/opt/jotty"
|
||||
|
||||
msg_info "Updating jotty"
|
||||
cd /opt/jotty
|
||||
unset NODE_OPTIONS
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
$STD yarn --frozen-lockfile
|
||||
$STD yarn next telemetry disable
|
||||
$STD yarn build
|
||||
|
||||
[ -d "public" ] && cp -r public .next/standalone/
|
||||
[ -d "howto" ] && cp -r howto .next/standalone/
|
||||
mkdir -p .next/standalone/.next
|
||||
cp -r .next/static .next/standalone/.next/
|
||||
|
||||
mv .next/standalone /tmp/jotty_standalone
|
||||
rm -rf ./* .next .git .gitignore .yarn
|
||||
mv /tmp/jotty_standalone/* .
|
||||
mv /tmp/jotty_standalone/.[!.]* . 2>/dev/null || true
|
||||
rm -rf /tmp/jotty_standalone
|
||||
msg_ok "Updated jotty"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "prebuild" "latest" "/opt/jotty" "jotty_*_prebuild.tar.gz"
|
||||
|
||||
msg_info "Restoring configuration & data"
|
||||
mv /opt/app.env /opt/jotty/.env
|
||||
$STD tar -xf /opt/data_config.tar
|
||||
[[ -d /opt/data ]] && mv /opt/data /opt/jotty/data
|
||||
msg_ok "Restored configuration & data"
|
||||
|
||||
msg_info "Updating Service"
|
||||
cat <<EOF >/etc/systemd/system/jotty.service
|
||||
[Unit]
|
||||
Description=jotty server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/jotty
|
||||
EnvironmentFile=/opt/jotty/.env
|
||||
ExecStart=/usr/bin/node server.js
|
||||
Restart=on-abnormal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
msg_ok "Updated Service"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start jotty
|
||||
msg_ok "Started Service"
|
||||
rm /opt/data_config.tar
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
108
ct/manyfold.sh
108
ct/manyfold.sh
@@ -20,44 +20,44 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/manyfold ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/manyfold ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "manyfold" "manyfold3d/manyfold"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop manyfold.target manyfold-rails.1 manyfold-default_worker.1 manyfold-performance_worker.1
|
||||
msg_ok "Stopped Services"
|
||||
if check_for_gh_release "manyfold" "manyfold3d/manyfold"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop manyfold.target manyfold-rails.1 manyfold-default_worker.1 manyfold-performance_worker.1
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
CURRENT_VERSION=$(grep -oP 'APP_VERSION=\K[^ ]+' /opt/manyfold/.env || echo "unknown")
|
||||
cp -r /opt/manyfold/app/storage /opt/manyfold_storage_backup 2>/dev/null || true
|
||||
cp -r /opt/manyfold/app/tmp /opt/manyfold_tmp_backup 2>/dev/null || true
|
||||
cp /opt/manyfold/app/config/credentials.yml.enc /opt/manyfold_credentials.yml.enc 2>/dev/null || true
|
||||
cp /opt/manyfold/app/config/master.key /opt/manyfold_master.key 2>/dev/null || true
|
||||
$STD tar -czf "/opt/manyfold_${CURRENT_VERSION}_backup.tar.gz" -C /opt/manyfold app
|
||||
msg_ok "Backed up Data"
|
||||
msg_info "Backing up Data"
|
||||
CURRENT_VERSION=$(grep -oP 'APP_VERSION=\K[^ ]+' /opt/manyfold/.env || echo "unknown")
|
||||
cp -r /opt/manyfold/app/storage /opt/manyfold_storage_backup 2>/dev/null || true
|
||||
cp -r /opt/manyfold/app/tmp /opt/manyfold_tmp_backup 2>/dev/null || true
|
||||
cp /opt/manyfold/app/config/credentials.yml.enc /opt/manyfold_credentials.yml.enc 2>/dev/null || true
|
||||
cp /opt/manyfold/app/config/master.key /opt/manyfold_master.key 2>/dev/null || true
|
||||
$STD tar -czf "/opt/manyfold_${CURRENT_VERSION}_backup.tar.gz" -C /opt/manyfold app
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "manyfold" "manyfold3d/manyfold" "tarball" "latest" "/opt/manyfold/app"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "manyfold" "manyfold3d/manyfold" "tarball" "latest" "/opt/manyfold/app"
|
||||
|
||||
msg_info "Configuring Manyfold"
|
||||
RUBY_INSTALL_VERSION=$(cat /opt/manyfold/app/.ruby-version)
|
||||
YARN_VERSION=$(grep '"packageManager":' /opt/manyfold/app/package.json | sed -E 's/.*"(yarn@[0-9\.]+)".*/\1/')
|
||||
RELEASE=$(get_latest_github_release "manyfold3d/manyfold")
|
||||
sed -i "s/^export APP_VERSION=.*/export APP_VERSION=$RELEASE/" "/opt/manyfold/.env"
|
||||
msg_ok "Configured Manyfold"
|
||||
msg_info "Configuring Manyfold"
|
||||
RUBY_INSTALL_VERSION=$(cat /opt/manyfold/app/.ruby-version)
|
||||
YARN_VERSION=$(grep '"packageManager":' /opt/manyfold/app/package.json | sed -E 's/.*"(yarn@[0-9\.]+)".*/\1/')
|
||||
RELEASE=$(get_latest_github_release "manyfold3d/manyfold")
|
||||
sed -i "s/^export APP_VERSION=.*/export APP_VERSION=$RELEASE/" "/opt/manyfold/.env"
|
||||
msg_ok "Configured Manyfold"
|
||||
|
||||
RUBY_VERSION=${RUBY_INSTALL_VERSION} RUBY_INSTALL_RAILS="true" HOME=/home/manyfold setup_ruby
|
||||
RUBY_VERSION=${RUBY_INSTALL_VERSION} RUBY_INSTALL_RAILS="true" HOME=/home/manyfold setup_ruby
|
||||
|
||||
msg_info "Installing Manyfold"
|
||||
chown -R manyfold:manyfold /home/manyfold/.rbenv
|
||||
chown -R manyfold:manyfold /opt/manyfold
|
||||
msg_info "Installing Manyfold"
|
||||
chown -R manyfold:manyfold {/home/manyfold,/opt/manyfold}
|
||||
chown -R manyfold:manyfold /opt/manyfold
|
||||
|
||||
sudo -u manyfold bash -c '
|
||||
sudo -u manyfold bash -c '
|
||||
source /opt/manyfold/.env
|
||||
export PATH="/home/manyfold/.rbenv/bin:$PATH"
|
||||
eval "$(/home/manyfold/.rbenv/bin/rbenv init - bash)"
|
||||
@@ -70,31 +70,31 @@ function update_script() {
|
||||
bin/rails db:migrate
|
||||
bin/rails assets:precompile
|
||||
'
|
||||
msg_ok "Installed Manyfold"
|
||||
msg_ok "Installed Manyfold"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
rm -rf /opt/manyfold/app/{storage,tmp,config/credentials.yml.enc,config/master.key}
|
||||
cp -r /opt/manyfold_storage_backup /opt/manyfold/app/storage 2>/dev/null || true
|
||||
cp -r /opt/manyfold_tmp_backup /opt/manyfold/app/tmp 2>/dev/null || true
|
||||
cp /opt/manyfold_credentials.yml.enc /opt/manyfold/app/config/credentials.yml.enc 2>/dev/null || true
|
||||
cp /opt/manyfold_master.key /opt/manyfold/app/config/master.key 2>/dev/null || true
|
||||
chown -R manyfold:manyfold /opt/manyfold/app/storage /opt/manyfold/app/tmp /opt/manyfold/app/config
|
||||
rm -rf /opt/manyfold_storage_backup /opt/manyfold_tmp_backup /opt/manyfold_credentials.yml.enc /opt/manyfold_master.key
|
||||
msg_ok "Restored Data"
|
||||
msg_info "Restoring Data"
|
||||
rm -rf /opt/manyfold/app/{storage,tmp,config/credentials.yml.enc,config/master.key}
|
||||
cp -r /opt/manyfold_storage_backup /opt/manyfold/app/storage 2>/dev/null || true
|
||||
cp -r /opt/manyfold_tmp_backup /opt/manyfold/app/tmp 2>/dev/null || true
|
||||
cp /opt/manyfold_credentials.yml.enc /opt/manyfold/app/config/credentials.yml.enc 2>/dev/null || true
|
||||
cp /opt/manyfold_master.key /opt/manyfold/app/config/master.key 2>/dev/null || true
|
||||
chown -R manyfold:manyfold /opt/manyfold/app/storage /opt/manyfold/app/tmp /opt/manyfold/app/config
|
||||
rm -rf /opt/manyfold_storage_backup /opt/manyfold_tmp_backup /opt/manyfold_credentials.yml.enc /opt/manyfold_master.key
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Restarting Services"
|
||||
source /opt/manyfold/.env
|
||||
export PATH="/home/manyfold/.rbenv/shims:/home/manyfold/.rbenv/bin:$PATH"
|
||||
$STD foreman export systemd /etc/systemd/system -a manyfold -u manyfold -f /opt/manyfold/app/Procfile
|
||||
for f in /etc/systemd/system/manyfold-*.service; do
|
||||
sed -i "s|/bin/bash -lc '|/bin/bash -lc 'source /opt/manyfold/.env \&\& |" "$f"
|
||||
done
|
||||
systemctl daemon-reload
|
||||
systemctl enable -q --now manyfold.target manyfold-rails.1 manyfold-default_worker.1 manyfold-performance_worker.1
|
||||
msg_ok "Restarted Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
msg_info "Restarting Services"
|
||||
source /opt/manyfold/.env
|
||||
export PATH="/home/manyfold/.rbenv/shims:/home/manyfold/.rbenv/bin:$PATH"
|
||||
$STD foreman export systemd /etc/systemd/system -a manyfold -u manyfold -f /opt/manyfold/app/Procfile
|
||||
for f in /etc/systemd/system/manyfold-*.service; do
|
||||
sed -i "s|/bin/bash -lc '|/bin/bash -lc 'source /opt/manyfold/.env \&\& |" "$f"
|
||||
done
|
||||
systemctl daemon-reload
|
||||
systemctl enable -q --now manyfold.target manyfold-rails.1 manyfold-default_worker.1 manyfold-performance_worker.1
|
||||
msg_ok "Restarted Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -53,6 +53,8 @@ function update_script() {
|
||||
cp -R .next/standalone ./
|
||||
chmod +x ./dist/cli.mjs
|
||||
cp server/db/names.json ./dist/names.json
|
||||
cp server/db/ios_models.json ./dist/ios_models.json
|
||||
cp server/db/mac_models.json ./dist/mac_models.json
|
||||
msg_ok "Updated Pangolin"
|
||||
|
||||
msg_info "Restoring config"
|
||||
|
||||
@@ -35,9 +35,10 @@ function update_script() {
|
||||
systemctl stop tautulli
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up config"
|
||||
msg_info "Backing up config and database"
|
||||
cp /opt/Tautulli/config.ini /opt/tautulli_config.ini.backup
|
||||
msg_ok "Backed up config"
|
||||
cp /opt/Tautulli/tautulli.db /opt/tautulli.db.backup
|
||||
msg_ok "Backed up config and database"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Tautulli" "Tautulli/Tautulli" "tarball"
|
||||
|
||||
@@ -46,17 +47,17 @@ function update_script() {
|
||||
TAUTULLI_VERSION=$(get_latest_github_release "Tautulli/Tautulli" "false")
|
||||
echo "${TAUTULLI_VERSION}" >/opt/Tautulli/version.txt
|
||||
echo "master" >/opt/Tautulli/branch.txt
|
||||
source /opt/Tautulli/.venv/bin/activate
|
||||
$STD pip install --upgrade uv
|
||||
$STD uv pip install -q -r requirements.txt
|
||||
$STD uv pip install -q pyopenssl
|
||||
deactivate
|
||||
$STD uv venv -c
|
||||
$STD source /opt/Tautulli/.venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
$STD uv pip install pyopenssl
|
||||
msg_ok "Updated Tautulli"
|
||||
|
||||
msg_info "Restoring config"
|
||||
msg_info "Restoring config and database"
|
||||
cp /opt/tautulli_config.ini.backup /opt/Tautulli/config.ini
|
||||
rm -f /opt/tautulli_config.ini.backup
|
||||
msg_ok "Restored config"
|
||||
cp /opt/tautulli.db.backup /opt/Tautulli/tautulli.db
|
||||
rm -f /opt/{tautulli_config.ini.backup,tautulli.db.backup}
|
||||
msg_ok "Restored config and database"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start tautulli
|
||||
|
||||
15
ct/termix.sh
15
ct/termix.sh
@@ -36,10 +36,19 @@ function update_script() {
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/termix/data /opt/termix_data_backup
|
||||
cp -r /opt/termix/uploads /opt/termix_uploads_backup
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix"
|
||||
|
||||
msg_info "Recreating Directories"
|
||||
mkdir -p /opt/termix/html \
|
||||
/opt/termix/nginx \
|
||||
/opt/termix/nginx/logs \
|
||||
/opt/termix/nginx/cache \
|
||||
/opt/termix/nginx/client_body
|
||||
msg_ok "Recreated Directories"
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/termix
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
@@ -60,9 +69,9 @@ function update_script() {
|
||||
msg_ok "Set up Production Dependencies"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
mkdir -p /opt/termix/data
|
||||
cp -r /opt/termix_data_backup/. /opt/termix/data
|
||||
rm -rf /opt/termix_data_backup
|
||||
cp -r /opt/termix_data_backup /opt/termix/data
|
||||
cp -r /opt/termix_uploads_backup /opt/termix/uploads
|
||||
rm -rf /opt/termix_data_backup /opt/termix_uploads_backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating Frontend Files"
|
||||
|
||||
@@ -23,11 +23,13 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/tracearr.service ]]; then
|
||||
if [[ ! -f /lib/systemd/system/tracearr.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_release "tracearr" "connorgallopo/Tracearr"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop tracearr postgresql redis
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
"type": "default",
|
||||
"script": "ct/jotty.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 8,
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 5,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
@@ -31,10 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "jotty was previously named rwMarkable",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
"notes": []
|
||||
}
|
||||
|
||||
@@ -1,8 +1,228 @@
|
||||
[
|
||||
{
|
||||
"name": "webmin/webmin",
|
||||
"version": "2.621",
|
||||
"date": "2026-01-26T23:14:03Z"
|
||||
},
|
||||
{
|
||||
"name": "coder/code-server",
|
||||
"version": "v4.108.2",
|
||||
"date": "2026-01-26T22:43:09Z"
|
||||
},
|
||||
{
|
||||
"name": "ollama/ollama",
|
||||
"version": "v0.15.0-rc6",
|
||||
"date": "2026-01-24T04:10:04Z"
|
||||
"version": "v0.15.2",
|
||||
"date": "2026-01-26T22:34:29Z"
|
||||
},
|
||||
{
|
||||
"name": "Forceu/Gokapi",
|
||||
"version": "v2.1.0",
|
||||
"date": "2025-08-29T12:56:13Z"
|
||||
},
|
||||
{
|
||||
"name": "chrisbenincasa/tunarr",
|
||||
"version": "v1.2.0-dev.3",
|
||||
"date": "2026-01-26T21:56:05Z"
|
||||
},
|
||||
{
|
||||
"name": "metabase/metabase",
|
||||
"version": "v0.57.10.6",
|
||||
"date": "2026-01-26T21:31:59Z"
|
||||
},
|
||||
{
|
||||
"name": "fccview/jotty",
|
||||
"version": "1.19.1",
|
||||
"date": "2026-01-26T21:30:39Z"
|
||||
},
|
||||
{
|
||||
"name": "BerriAI/litellm",
|
||||
"version": "v1.81.3.rc.2",
|
||||
"date": "2026-01-26T18:18:16Z"
|
||||
},
|
||||
{
|
||||
"name": "hargata/lubelog",
|
||||
"version": "v1.5.8",
|
||||
"date": "2026-01-26T18:18:03Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r8.3.0-alpha2",
|
||||
"date": "2026-01-26T17:21:09Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.4",
|
||||
"date": "2025-10-09T10:27:01Z"
|
||||
},
|
||||
{
|
||||
"name": "livebook-dev/livebook",
|
||||
"version": "nightly",
|
||||
"date": "2026-01-26T16:17:09Z"
|
||||
},
|
||||
{
|
||||
"name": "opencloud-eu/opencloud",
|
||||
"version": "v5.0.0",
|
||||
"date": "2026-01-26T15:58:00Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@2.4.6",
|
||||
"date": "2026-01-23T15:32:50Z"
|
||||
},
|
||||
{
|
||||
"name": "Athou/commafeed",
|
||||
"version": "6.1.1",
|
||||
"date": "2026-01-26T15:14:16Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "@fumadocs/ui@16.4.9",
|
||||
"date": "2026-01-26T15:02:21Z"
|
||||
},
|
||||
{
|
||||
"name": "itsmng/itsm-ng",
|
||||
"version": "v2.1.2",
|
||||
"date": "2026-01-26T14:57:54Z"
|
||||
},
|
||||
{
|
||||
"name": "passbolt/passbolt_api",
|
||||
"version": "v5.9.0",
|
||||
"date": "2026-01-26T14:46:28Z"
|
||||
},
|
||||
{
|
||||
"name": "jordan-dalby/ByteStash",
|
||||
"version": "v1.5.10",
|
||||
"date": "2026-01-26T14:07:59Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "7.1.0-alpha.2",
|
||||
"date": "2026-01-26T12:07:12Z"
|
||||
},
|
||||
{
|
||||
"name": "node-red/node-red",
|
||||
"version": "4.1.4",
|
||||
"date": "2026-01-26T11:29:13Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "latest",
|
||||
"date": "2026-01-26T09:30:03Z"
|
||||
},
|
||||
{
|
||||
"name": "syncthing/syncthing",
|
||||
"version": "v2.0.13",
|
||||
"date": "2026-01-06T12:09:32Z"
|
||||
},
|
||||
{
|
||||
"name": "emqx/emqx",
|
||||
"version": "e5.10.3-rc.3",
|
||||
"date": "2026-01-26T08:27:48Z"
|
||||
},
|
||||
{
|
||||
"name": "alam00000/bentopdf",
|
||||
"version": "v1.16.1",
|
||||
"date": "2026-01-26T08:27:11Z"
|
||||
},
|
||||
{
|
||||
"name": "jupyter/notebook",
|
||||
"version": "v7.5.3",
|
||||
"date": "2026-01-26T07:28:46Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.4.16",
|
||||
"date": "2026-01-17T07:54:15Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.24.946",
|
||||
"date": "2026-01-26T06:11:11Z"
|
||||
},
|
||||
{
|
||||
"name": "morpheus65535/bazarr",
|
||||
"version": "v1.5.4",
|
||||
"date": "2026-01-04T22:41:00Z"
|
||||
},
|
||||
{
|
||||
"name": "plexguide/Huntarr.io",
|
||||
"version": "9.0.5",
|
||||
"date": "2026-01-26T03:34:21Z"
|
||||
},
|
||||
{
|
||||
"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-26T00:27:06Z"
|
||||
},
|
||||
{
|
||||
"name": "TasmoAdmin/TasmoAdmin",
|
||||
"version": "v4.3.4",
|
||||
"date": "2026-01-25T22:16:41Z"
|
||||
},
|
||||
{
|
||||
"name": "seerr-team/seerr",
|
||||
"version": "preview-availability-sync-single-server-resolution",
|
||||
"date": "2026-01-25T21:05:21Z"
|
||||
},
|
||||
{
|
||||
"name": "Part-DB/Part-DB-server",
|
||||
"version": "v2.5.1",
|
||||
"date": "2026-01-25T20:50:59Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2026.1.2",
|
||||
"date": "2026-01-25T18:21:29Z"
|
||||
},
|
||||
{
|
||||
"name": "FreshRSS/FreshRSS",
|
||||
"version": "1.28.1",
|
||||
"date": "2026-01-25T18:20:14Z"
|
||||
},
|
||||
{
|
||||
"name": "project-zot/zot",
|
||||
"version": "v2.1.14",
|
||||
"date": "2026-01-25T17:14:38Z"
|
||||
},
|
||||
{
|
||||
"name": "benjaminjonard/koillection",
|
||||
"version": "1.8.0",
|
||||
"date": "2026-01-25T13:48:30Z"
|
||||
},
|
||||
{
|
||||
"name": "evcc-io/evcc",
|
||||
"version": "0.300.6",
|
||||
"date": "2026-01-25T10:37:05Z"
|
||||
},
|
||||
{
|
||||
"name": "eclipse-mosquitto/mosquitto",
|
||||
"version": "v2.1.0rc3",
|
||||
"date": "2026-01-25T09:15:01Z"
|
||||
},
|
||||
{
|
||||
"name": "kimai/kimai",
|
||||
"version": "2.47.0",
|
||||
"date": "2026-01-25T09:01:46Z"
|
||||
},
|
||||
{
|
||||
"name": "mayswind/AriaNg",
|
||||
"version": "1.3.13",
|
||||
"date": "2026-01-25T07:56:27Z"
|
||||
},
|
||||
{
|
||||
"name": "crafty-controller/crafty-4",
|
||||
"version": "v4.9.0",
|
||||
"date": "2026-01-25T00:31:51Z"
|
||||
},
|
||||
{
|
||||
"name": "runtipi/runtipi",
|
||||
@@ -24,11 +244,6 @@
|
||||
"version": "v1.19.5",
|
||||
"date": "2025-09-27T20:59:46Z"
|
||||
},
|
||||
{
|
||||
"name": "BerriAI/litellm",
|
||||
"version": "v1.81.0-stable",
|
||||
"date": "2026-01-24T19:46:15Z"
|
||||
},
|
||||
{
|
||||
"name": "benzino77/tasmocompiler",
|
||||
"version": "v13.1.0",
|
||||
@@ -39,16 +254,6 @@
|
||||
"version": "v1.18.5",
|
||||
"date": "2026-01-24T17:15:32Z"
|
||||
},
|
||||
{
|
||||
"name": "TasmoAdmin/TasmoAdmin",
|
||||
"version": "v4.3.3",
|
||||
"date": "2026-01-24T15:58:33Z"
|
||||
},
|
||||
{
|
||||
"name": "syncthing/syncthing",
|
||||
"version": "v2.0.13",
|
||||
"date": "2026-01-06T12:09:32Z"
|
||||
},
|
||||
{
|
||||
"name": "Luligu/matterbridge",
|
||||
"version": "3.5.1",
|
||||
@@ -74,66 +279,31 @@
|
||||
"version": "v1.3.1",
|
||||
"date": "2026-01-24T13:50:25Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.4.16",
|
||||
"date": "2026-01-17T07:54:15Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.9.3.0",
|
||||
"date": "2026-01-08T16:08:34Z"
|
||||
},
|
||||
{
|
||||
"name": "morpheus65535/bazarr",
|
||||
"version": "v1.5.4",
|
||||
"date": "2026-01-04T22:41:00Z"
|
||||
},
|
||||
{
|
||||
"name": "nickheyer/discopanel",
|
||||
"version": "v1.0.25",
|
||||
"date": "2026-01-24T05:56:58Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.24.912",
|
||||
"date": "2026-01-24T05:56:30Z"
|
||||
},
|
||||
{
|
||||
"name": "Stirling-Tools/Stirling-PDF",
|
||||
"version": "v2.4.0",
|
||||
"date": "2026-01-24T00:51:05Z"
|
||||
},
|
||||
{
|
||||
"name": "jeedom/core",
|
||||
"version": "4.5.2",
|
||||
"date": "2026-01-24T00:27:04Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v4.1.0",
|
||||
"date": "2025-11-23T12:13:34Z"
|
||||
},
|
||||
{
|
||||
"name": "azukaar/Cosmos-Server",
|
||||
"version": "v0.20.2",
|
||||
"date": "2026-01-24T00:12:39Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r8.3.0-alpha1",
|
||||
"date": "2026-01-23T22:42:26Z"
|
||||
},
|
||||
{
|
||||
"name": "endurain-project/endurain",
|
||||
"version": "v0.17.3",
|
||||
"date": "2026-01-23T22:02:05Z"
|
||||
},
|
||||
{
|
||||
"name": "chrisbenincasa/tunarr",
|
||||
"version": "v1.2.0-dev.2",
|
||||
"date": "2026-01-23T21:57:48Z"
|
||||
},
|
||||
{
|
||||
"name": "Donkie/Spoolman",
|
||||
"version": "v0.23.0",
|
||||
@@ -149,11 +319,6 @@
|
||||
"version": "v1.6.7",
|
||||
"date": "2026-01-12T09:54:36Z"
|
||||
},
|
||||
{
|
||||
"name": "metabase/metabase",
|
||||
"version": "v0.58.x",
|
||||
"date": "2026-01-23T19:39:09Z"
|
||||
},
|
||||
{
|
||||
"name": "apache/tomcat",
|
||||
"version": "10.1.52",
|
||||
@@ -179,16 +344,6 @@
|
||||
"version": "v0.50.3",
|
||||
"date": "2026-01-23T16:09:10Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@2.4.6",
|
||||
"date": "2026-01-23T15:32:50Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.4",
|
||||
"date": "2025-10-09T10:27:01Z"
|
||||
},
|
||||
{
|
||||
"name": "zitadel/zitadel",
|
||||
"version": "v4.10.0",
|
||||
@@ -209,46 +364,21 @@
|
||||
"version": "v1.7.6",
|
||||
"date": "2026-01-23T09:41:22Z"
|
||||
},
|
||||
{
|
||||
"name": "jupyter/notebook",
|
||||
"version": "@jupyter-notebook/ui-components@7.6.0-alpha.2",
|
||||
"date": "2026-01-23T08:07:05Z"
|
||||
},
|
||||
{
|
||||
"name": "neo4j/neo4j",
|
||||
"version": "5.26.20",
|
||||
"date": "2026-01-23T07:30:39Z"
|
||||
},
|
||||
{
|
||||
"name": "plexguide/Huntarr.io",
|
||||
"version": "8.2.25",
|
||||
"date": "2026-01-23T07:00:51Z"
|
||||
},
|
||||
{
|
||||
"name": "9001/copyparty",
|
||||
"version": "v1.20.4",
|
||||
"date": "2026-01-23T01:29:26Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2026.1.1",
|
||||
"date": "2026-01-22T23:19:21Z"
|
||||
},
|
||||
{
|
||||
"name": "crafty-controller/crafty-4",
|
||||
"version": "v4.8.0",
|
||||
"date": "2026-01-22T20:08:17Z"
|
||||
},
|
||||
{
|
||||
"name": "tailscale/tailscale",
|
||||
"version": "v1.94.1",
|
||||
"date": "2026-01-22T19:07:16Z"
|
||||
},
|
||||
{
|
||||
"name": "fccview/jotty",
|
||||
"version": "develop",
|
||||
"date": "2026-01-22T18:59:33Z"
|
||||
},
|
||||
{
|
||||
"name": "redis/redis",
|
||||
"version": "8.4.0",
|
||||
@@ -299,11 +429,6 @@
|
||||
"version": "2026-01-22-r1",
|
||||
"date": "2026-01-22T10:20:04Z"
|
||||
},
|
||||
{
|
||||
"name": "eclipse-mosquitto/mosquitto",
|
||||
"version": "v2.1.0rc2",
|
||||
"date": "2026-01-22T09:42:43Z"
|
||||
},
|
||||
{
|
||||
"name": "dgtlmoon/changedetection.io",
|
||||
"version": "0.52.9",
|
||||
@@ -339,11 +464,6 @@
|
||||
"version": "v2.8.0",
|
||||
"date": "2025-12-12T20:25:00Z"
|
||||
},
|
||||
{
|
||||
"name": "livebook-dev/livebook",
|
||||
"version": "nightly",
|
||||
"date": "2026-01-21T20:40:02Z"
|
||||
},
|
||||
{
|
||||
"name": "Comfy-Org/ComfyUI",
|
||||
"version": "v0.10.0",
|
||||
@@ -359,30 +479,15 @@
|
||||
"version": "jenkins-2.541.1",
|
||||
"date": "2026-01-21T15:09:10Z"
|
||||
},
|
||||
{
|
||||
"name": "node-red/node-red",
|
||||
"version": "4.1.3",
|
||||
"date": "2026-01-07T16:24:23Z"
|
||||
},
|
||||
{
|
||||
"name": "semaphoreui/semaphore",
|
||||
"version": "v2.17.0-rc7",
|
||||
"date": "2026-01-21T12:12:33Z"
|
||||
},
|
||||
{
|
||||
"name": "evcc-io/evcc",
|
||||
"version": "0.300.5",
|
||||
"date": "2026-01-21T11:35:44Z"
|
||||
},
|
||||
{
|
||||
"name": "javedh-dev/tracktor",
|
||||
"version": "1.2.1",
|
||||
"date": "2026-01-21T09:31:18Z"
|
||||
},
|
||||
{
|
||||
"name": "emqx/emqx",
|
||||
"version": "e5.10.3-rc.2",
|
||||
"date": "2026-01-21T08:57:16Z"
|
||||
"date": "2026-01-21T11:12:28Z"
|
||||
},
|
||||
{
|
||||
"name": "docker/compose",
|
||||
@@ -404,11 +509,6 @@
|
||||
"version": "v2.20.5",
|
||||
"date": "2026-01-21T00:12:33Z"
|
||||
},
|
||||
{
|
||||
"name": "seerr-team/seerr",
|
||||
"version": "preview-availability-sync-fix",
|
||||
"date": "2026-01-20T22:11:24Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v5.0.17",
|
||||
@@ -449,11 +549,6 @@
|
||||
"version": "v14.0.8",
|
||||
"date": "2026-01-20T15:10:44Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "latest",
|
||||
"date": "2026-01-20T14:25:19Z"
|
||||
},
|
||||
{
|
||||
"name": "sysadminsmedia/homebox",
|
||||
"version": "v0.23.0-rc.1",
|
||||
@@ -469,11 +564,6 @@
|
||||
"version": "2026.1.1",
|
||||
"date": "2026-01-20T11:22:06Z"
|
||||
},
|
||||
{
|
||||
"name": "passbolt/passbolt_api",
|
||||
"version": "v5.9.0-test.1",
|
||||
"date": "2026-01-20T10:34:53Z"
|
||||
},
|
||||
{
|
||||
"name": "HydroshieldMKII/Guardian",
|
||||
"version": "v1.3.4",
|
||||
@@ -539,11 +629,6 @@
|
||||
"version": "v1.0.0-beta22",
|
||||
"date": "2026-01-18T22:38:36Z"
|
||||
},
|
||||
{
|
||||
"name": "Part-DB/Part-DB-server",
|
||||
"version": "v2.5.0",
|
||||
"date": "2026-01-18T22:16:38Z"
|
||||
},
|
||||
{
|
||||
"name": "Brandawg93/PeaNUT",
|
||||
"version": "v5.21.2",
|
||||
@@ -564,11 +649,6 @@
|
||||
"version": "2.4",
|
||||
"date": "2026-01-18T12:12:02Z"
|
||||
},
|
||||
{
|
||||
"name": "hyperion-project/hyperion.ng",
|
||||
"version": "2.1.1",
|
||||
"date": "2025-06-14T17:45:06Z"
|
||||
},
|
||||
{
|
||||
"name": "oauth2-proxy/oauth2-proxy",
|
||||
"version": "v7.14.2",
|
||||
@@ -589,11 +669,6 @@
|
||||
"version": "v14.0.1",
|
||||
"date": "2026-01-17T07:14:19Z"
|
||||
},
|
||||
{
|
||||
"name": "coder/code-server",
|
||||
"version": "v4.108.1",
|
||||
"date": "2026-01-17T04:09:09Z"
|
||||
},
|
||||
{
|
||||
"name": "wanetty/upgopher",
|
||||
"version": "v1.13.0",
|
||||
@@ -659,11 +734,6 @@
|
||||
"version": "v4.8.0",
|
||||
"date": "2026-01-14T17:54:36Z"
|
||||
},
|
||||
{
|
||||
"name": "alam00000/bentopdf",
|
||||
"version": "v1.16.0",
|
||||
"date": "2026-01-14T16:45:03Z"
|
||||
},
|
||||
{
|
||||
"name": "Bubka/2FAuth",
|
||||
"version": "v6.0.0",
|
||||
@@ -744,11 +814,6 @@
|
||||
"version": "1.1.15",
|
||||
"date": "2026-01-12T05:38:30Z"
|
||||
},
|
||||
{
|
||||
"name": "hargata/lubelog",
|
||||
"version": "v1.5.7",
|
||||
"date": "2026-01-11T19:31:59Z"
|
||||
},
|
||||
{
|
||||
"name": "alexta69/metube",
|
||||
"version": "2026.01.11",
|
||||
@@ -794,11 +859,6 @@
|
||||
"version": "v0.7.2",
|
||||
"date": "2026-01-10T21:00:12Z"
|
||||
},
|
||||
{
|
||||
"name": "Athou/commafeed",
|
||||
"version": "6.0.0",
|
||||
"date": "2026-01-10T20:28:07Z"
|
||||
},
|
||||
{
|
||||
"name": "blakeblackshear/frigate",
|
||||
"version": "v0.14.1",
|
||||
@@ -824,16 +884,6 @@
|
||||
"version": "v3007.11",
|
||||
"date": "2026-01-09T17:23:23Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "@fumadocs/base-ui@16.4.6",
|
||||
"date": "2026-01-09T10:54:11Z"
|
||||
},
|
||||
{
|
||||
"name": "webmin/webmin",
|
||||
"version": "2.620",
|
||||
"date": "2026-01-09T00:17:04Z"
|
||||
},
|
||||
{
|
||||
"name": "ErsatzTV/ErsatzTV",
|
||||
"version": "v26.1.1",
|
||||
@@ -849,11 +899,6 @@
|
||||
"version": "v2.2.0.103-2.2.0.103_canary_2026-01-08",
|
||||
"date": "2026-01-08T12:41:37Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "6.2.11",
|
||||
"date": "2026-01-08T12:15:04Z"
|
||||
},
|
||||
{
|
||||
"name": "requarks/wiki",
|
||||
"version": "v2.5.311",
|
||||
@@ -899,11 +944,6 @@
|
||||
"version": "2.2.16",
|
||||
"date": "2026-01-07T03:26:27Z"
|
||||
},
|
||||
{
|
||||
"name": "kimai/kimai",
|
||||
"version": "2.46.0",
|
||||
"date": "2026-01-07T00:19:31Z"
|
||||
},
|
||||
{
|
||||
"name": "caddyserver/caddy",
|
||||
"version": "v2.10.2",
|
||||
@@ -957,7 +997,7 @@
|
||||
{
|
||||
"name": "mealie-recipes/mealie",
|
||||
"version": "v3.9.2",
|
||||
"date": "2026-01-02T19:40:19Z"
|
||||
"date": "2026-01-02T19:40:09Z"
|
||||
},
|
||||
{
|
||||
"name": "gotify/server",
|
||||
@@ -1004,11 +1044,6 @@
|
||||
"version": "v1.3.7",
|
||||
"date": "2025-12-25T11:08:14Z"
|
||||
},
|
||||
{
|
||||
"name": "FreshRSS/FreshRSS",
|
||||
"version": "1.28.0",
|
||||
"date": "2025-12-24T19:27:21Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "22.0.4",
|
||||
@@ -1029,16 +1064,6 @@
|
||||
"version": "v5.7",
|
||||
"date": "2025-12-23T14:53:51Z"
|
||||
},
|
||||
{
|
||||
"name": "itsmng/itsm-ng",
|
||||
"version": "v1.6.11",
|
||||
"date": "2025-12-23T10:40:42Z"
|
||||
},
|
||||
{
|
||||
"name": "project-zot/zot",
|
||||
"version": "v2.1.13",
|
||||
"date": "2025-12-23T10:14:48Z"
|
||||
},
|
||||
{
|
||||
"name": "sabnzbd/sabnzbd",
|
||||
"version": "4.5.5",
|
||||
@@ -1049,11 +1074,6 @@
|
||||
"version": "v4.0.16.2944",
|
||||
"date": "2025-11-05T01:56:48Z"
|
||||
},
|
||||
{
|
||||
"name": "benjaminjonard/koillection",
|
||||
"version": "1.7.1",
|
||||
"date": "2025-12-21T17:06:17Z"
|
||||
},
|
||||
{
|
||||
"name": "ventoy/Ventoy",
|
||||
"version": "v1.1.10",
|
||||
@@ -1099,11 +1119,6 @@
|
||||
"version": "7.4.6",
|
||||
"date": "2025-12-18T07:00:26Z"
|
||||
},
|
||||
{
|
||||
"name": "opencloud-eu/opencloud",
|
||||
"version": "v4.1.0",
|
||||
"date": "2025-12-15T18:53:25Z"
|
||||
},
|
||||
{
|
||||
"name": "docmost/docmost",
|
||||
"version": "v0.24.1",
|
||||
@@ -1114,11 +1129,6 @@
|
||||
"version": "v5.0.87",
|
||||
"date": "2025-12-14T08:35:11Z"
|
||||
},
|
||||
{
|
||||
"name": "mayswind/AriaNg",
|
||||
"version": "1.3.12",
|
||||
"date": "2025-12-14T02:58:24Z"
|
||||
},
|
||||
{
|
||||
"name": "martabal/qbittorrent-exporter",
|
||||
"version": "v1.13.2",
|
||||
@@ -1444,11 +1454,6 @@
|
||||
"version": "v2.2.2",
|
||||
"date": "2025-10-06T21:31:07Z"
|
||||
},
|
||||
{
|
||||
"name": "jordan-dalby/ByteStash",
|
||||
"version": "v1.5.9",
|
||||
"date": "2025-10-06T08:34:01Z"
|
||||
},
|
||||
{
|
||||
"name": "thomiceli/opengist",
|
||||
"version": "v1.11.1",
|
||||
@@ -1519,11 +1524,6 @@
|
||||
"version": "v0.11.0",
|
||||
"date": "2025-09-01T16:19:38Z"
|
||||
},
|
||||
{
|
||||
"name": "Forceu/Gokapi",
|
||||
"version": "v2.1.0",
|
||||
"date": "2025-08-29T12:56:13Z"
|
||||
},
|
||||
{
|
||||
"name": "janeczku/calibre-web",
|
||||
"version": "0.6.25",
|
||||
|
||||
@@ -14,7 +14,7 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Apt-Cacher NG"
|
||||
DEBIAN_FRONTEND=noninteractive $STD apt -o Dpkg::Options::="--force-confold" install -y apt-cacher-ng
|
||||
DEBIAN_FRONTEND=noninteractive $STD apt -o Dpkg::Options::="--force-confold" install -y apt-cacher-ng avahi-daemon
|
||||
sed -i 's/# PassThroughPattern: .* # this would allow CONNECT to everything/PassThroughPattern: .*/' /etc/apt-cacher-ng/acng.conf
|
||||
cat <<EOF >/etc/apt/apt.conf.d/00aptproxy.conf
|
||||
Acquire::http::Proxy "http://localhost:3142";
|
||||
|
||||
@@ -38,7 +38,7 @@ After=network-online.target
|
||||
[Service]
|
||||
Type=simple
|
||||
UMask=007
|
||||
ExecStart=/usr/bin/deluged -d
|
||||
ExecStart=/usr/local/bin/deluged -d
|
||||
Restart=on-failure
|
||||
TimeoutStopSec=300
|
||||
|
||||
@@ -56,7 +56,7 @@ Wants=deluged.service
|
||||
[Service]
|
||||
Type=simple
|
||||
UMask=027
|
||||
ExecStart=/usr/bin/deluge-web -d
|
||||
ExecStart=/usr/local/bin/deluge-web -d
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
|
||||
@@ -17,7 +17,8 @@ msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
nginx \
|
||||
ca-certificates \
|
||||
libjemalloc2
|
||||
libjemalloc2 \
|
||||
git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_mariadb
|
||||
|
||||
@@ -14,33 +14,16 @@ network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
fetch_and_deploy_gh_release "jotty" "fccview/jotty" "tarball" "latest" "/opt/jotty"
|
||||
|
||||
msg_info "Installing ${APPLICATION}"
|
||||
cd /opt/jotty
|
||||
unset NODE_OPTIONS
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
$STD yarn --frozen-lockfile
|
||||
$STD yarn next telemetry disable
|
||||
$STD yarn build
|
||||
|
||||
[ -d "public" ] && cp -r public .next/standalone/
|
||||
[ -d "howto" ] && cp -r howto .next/standalone/
|
||||
mkdir -p .next/standalone/.next
|
||||
cp -r .next/static .next/standalone/.next/
|
||||
|
||||
mv .next/standalone /tmp/jotty_standalone
|
||||
rm -rf ./* .next .git .gitignore .yarn
|
||||
mv /tmp/jotty_standalone/* .
|
||||
mv /tmp/jotty_standalone/.[!.]* . 2>/dev/null || true
|
||||
rm -rf /tmp/jotty_standalone
|
||||
fetch_and_deploy_gh_release "jotty" "fccview/jotty" "prebuild" "latest" "/opt/jotty" "jotty_*_prebuild.tar.gz"
|
||||
|
||||
msg_info "Setup jotty"
|
||||
mkdir -p data/{users,checklists,notes}
|
||||
|
||||
cat <<EOF >/opt/jotty/.env
|
||||
NODE_ENV=production
|
||||
|
||||
# --- Uncomment to enable
|
||||
# APP_URL=https://your-jotty-domain.com
|
||||
# INTERNAL_API_URL=http://localhost:3000
|
||||
# HTTPS=true
|
||||
# SERVE_PUBLIC_IMAGES=yes
|
||||
# SERVE_PUBLIC_FILES=yes
|
||||
@@ -53,12 +36,11 @@ NODE_ENV=production
|
||||
# SSO_MODE=oidc
|
||||
# OIDC_ISSUER=<your-oidc-issuer-url>
|
||||
# OIDC_CLIENT_ID=<oidc-client-id>
|
||||
# APP_URL=<https://app.domain.tld>
|
||||
# SSO_FALLBACK_LOCAL=yes
|
||||
# OIDC_CLIENT_SECRET=your_client_secret
|
||||
# OIDC_ADMIN_GROUPS=admins
|
||||
EOF
|
||||
msg_ok "Installed ${APPLICATION}"
|
||||
msg_ok "Setup jotty"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/jotty.service
|
||||
|
||||
@@ -19,7 +19,8 @@ $STD apt install -y \
|
||||
ca-certificates \
|
||||
chromium \
|
||||
graphicsmagick \
|
||||
ghostscript
|
||||
ghostscript \
|
||||
ffmpeg
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
fetch_and_deploy_gh_release "monolith" "Y2Z/monolith" "singlefile" "latest" "/usr/bin" "monolith-gnu-linux-x86_64"
|
||||
|
||||
@@ -15,12 +15,12 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
libarchive-dev \
|
||||
git \
|
||||
libmariadb-dev \
|
||||
redis-server \
|
||||
nginx \
|
||||
libassimp-dev
|
||||
libarchive-dev \
|
||||
git \
|
||||
libmariadb-dev \
|
||||
redis-server \
|
||||
nginx \
|
||||
libassimp-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_imagemagick
|
||||
@@ -78,8 +78,7 @@ $STD mkdir -p /opt/manyfold_data
|
||||
msg_ok "Configured Manyfold"
|
||||
|
||||
msg_info "Installing Manyfold"
|
||||
chown -R manyfold:manyfold /home/manyfold/.rbenv
|
||||
chown -R manyfold:manyfold /opt/manyfold
|
||||
chown -R manyfold:manyfold {/home/manyfold,/opt/manyfold}
|
||||
chmod +x /opt/manyfold/user_setup.sh
|
||||
$STD npm install --global corepack
|
||||
$STD sudo -u manyfold bash /opt/manyfold/user_setup.sh
|
||||
@@ -91,7 +90,7 @@ source /opt/manyfold/.env
|
||||
export PATH="/home/manyfold/.rbenv/shims:/home/manyfold/.rbenv/bin:$PATH"
|
||||
$STD foreman export systemd /etc/systemd/system -a manyfold -u manyfold -f /opt/manyfold/app/Procfile
|
||||
for f in /etc/systemd/system/manyfold-*.service; do
|
||||
sed -i "s|/bin/bash -lc '|/bin/bash -lc 'source /opt/manyfold/.env \&\& |" "$f"
|
||||
sed -i "s|/bin/bash -lc '|/bin/bash -lc 'source /opt/manyfold/.env \&\& |" "$f"
|
||||
done
|
||||
systemctl enable -q --now manyfold.target manyfold-rails.1 manyfold-default_worker.1 manyfold-performance_worker.1
|
||||
cat <<EOF >/etc/nginx/sites-available/manyfold.conf
|
||||
|
||||
@@ -47,6 +47,8 @@ cd /opt/pangolin
|
||||
EOF
|
||||
chmod +x /usr/local/bin/pangctl ./dist/cli.mjs
|
||||
cp server/db/names.json ./dist/names.json
|
||||
cp server/db/ios_models.json ./dist/ios_models.json
|
||||
cp server/db/mac_models.json ./dist/mac_models.json
|
||||
mkdir -p /var/config
|
||||
|
||||
cat <<EOF >/opt/pangolin/config/config.yml
|
||||
|
||||
@@ -25,9 +25,10 @@ cd /opt/Tautulli
|
||||
TAUTULLI_VERSION=$(get_latest_github_release "Tautulli/Tautulli" "false")
|
||||
echo "${TAUTULLI_VERSION}" >/opt/Tautulli/version.txt
|
||||
echo "master" >/opt/Tautulli/branch.txt
|
||||
uv venv -q
|
||||
uv pip install -q -r requirements.txt
|
||||
uv pip install -q pyopenssl
|
||||
$STD uv venv
|
||||
$STD source /opt/Tautulli/.venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
$STD uv pip install pyopenssl
|
||||
msg_ok "Installed Tautulli"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -71,18 +71,31 @@ events {
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
access_log /opt/termix/nginx/logs/access.log;
|
||||
|
||||
client_body_temp_path /opt/termix/nginx/client_body;
|
||||
proxy_temp_path /opt/termix/nginx/proxy_temp;
|
||||
fastcgi_temp_path /opt/termix/nginx/fastcgi_temp;
|
||||
uwsgi_temp_path /opt/termix/nginx/uwsgi_temp;
|
||||
scgi_temp_path /opt/termix/nginx/scgi_temp;
|
||||
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
client_header_timeout 300s;
|
||||
|
||||
set_real_ip_from 127.0.0.1;
|
||||
real_ip_header X-Forwarded-For;
|
||||
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384;
|
||||
ssl_prefer_server_ciphers off;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
server_name localhost;
|
||||
|
||||
add_header X-Content-Type-Options nosniff always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
@@ -96,10 +109,25 @@ http {
|
||||
|
||||
location / {
|
||||
root /opt/termix/html;
|
||||
index index.html;
|
||||
index index.html index.htm;
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
location ~* \.map$ {
|
||||
return 404;
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
location ~ ^/users/sessions(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/users(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
@@ -109,7 +137,7 @@ http {
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/(version|releases|alerts|rbac|credentials|snippets|terminal|encryption)(/.*)?$ {
|
||||
location ~ ^/version(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
@@ -118,39 +146,153 @@ http {
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/(database|db)(/.*)?$ {
|
||||
client_max_body_size 5G;
|
||||
client_body_timeout 300s;
|
||||
location ~ ^/releases(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/alerts(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/rbac(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/credentials(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_connect_timeout 60s;
|
||||
proxy_send_timeout 300s;
|
||||
proxy_read_timeout 300s;
|
||||
}
|
||||
|
||||
location ~ ^/snippets(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/terminal(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/database(/.*)?$ {
|
||||
client_max_body_size 5G;
|
||||
client_body_timeout 300s;
|
||||
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_connect_timeout 60s;
|
||||
proxy_send_timeout 300s;
|
||||
proxy_read_timeout 300s;
|
||||
|
||||
proxy_request_buffering off;
|
||||
proxy_buffering off;
|
||||
}
|
||||
|
||||
location ~ ^/db(/.*)?$ {
|
||||
client_max_body_size 5G;
|
||||
client_body_timeout 300s;
|
||||
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_connect_timeout 60s;
|
||||
proxy_send_timeout 300s;
|
||||
proxy_read_timeout 300s;
|
||||
|
||||
proxy_request_buffering off;
|
||||
proxy_buffering off;
|
||||
}
|
||||
|
||||
location ~ ^/encryption(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /ssh/quick-connect {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /ssh/ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /ssh/websocket/ {
|
||||
proxy_pass http://127.0.0.1:30002/;
|
||||
proxy_http_version 1.1;
|
||||
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_read_timeout 86400s;
|
||||
proxy_send_timeout 86400s;
|
||||
proxy_connect_timeout 10s;
|
||||
|
||||
proxy_buffering off;
|
||||
proxy_request_buffering off;
|
||||
|
||||
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
|
||||
}
|
||||
|
||||
location /ssh/tunnel/ {
|
||||
@@ -158,59 +300,153 @@ http {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /ssh/file_manager/recent {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /ssh/file_manager/pinned {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /ssh/file_manager/shortcuts {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /ssh/file_manager/sudo-password {
|
||||
proxy_pass http://127.0.0.1:30004;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /ssh/file_manager/ssh/ {
|
||||
client_max_body_size 5G;
|
||||
client_body_timeout 300s;
|
||||
|
||||
proxy_pass http://127.0.0.1:30004;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_connect_timeout 60s;
|
||||
proxy_send_timeout 300s;
|
||||
proxy_read_timeout 300s;
|
||||
|
||||
proxy_request_buffering off;
|
||||
proxy_buffering off;
|
||||
}
|
||||
|
||||
location ~ ^/ssh/file_manager/(recent|pinned|shortcuts)$ {
|
||||
location ~ ^/network-topology(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /health {
|
||||
proxy_pass http://127.0.0.1:30001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/(status|metrics)(/.*)?$ {
|
||||
location ~ ^/status(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30005;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/(uptime|activity)(/.*)?$ {
|
||||
location ~ ^/metrics(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30005;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_connect_timeout 60s;
|
||||
proxy_send_timeout 60s;
|
||||
proxy_read_timeout 60s;
|
||||
}
|
||||
|
||||
location ~ ^/uptime(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30006;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/activity(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30006;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~ ^/dashboard/preferences(/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:30006;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ^~ /docker/console/ {
|
||||
proxy_pass http://127.0.0.1:30008/;
|
||||
proxy_http_version 1.1;
|
||||
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_read_timeout 86400s;
|
||||
proxy_send_timeout 86400s;
|
||||
proxy_connect_timeout 10s;
|
||||
|
||||
proxy_buffering off;
|
||||
proxy_request_buffering off;
|
||||
|
||||
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
|
||||
}
|
||||
|
||||
location ~ ^/docker(/.*)?$ {
|
||||
@@ -218,10 +454,18 @@ http {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_connect_timeout 60s;
|
||||
proxy_send_timeout 300s;
|
||||
proxy_read_timeout 300s;
|
||||
}
|
||||
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
root /opt/termix/html;
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
|
||||
$STD apt install -y redis-server
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
PG_VERSION="18" setup_postgresql
|
||||
|
||||
msg_info "Installing pnpm"
|
||||
|
||||
@@ -1134,6 +1134,10 @@ load_vars_file() {
|
||||
msg_warn "Invalid nesting value '$var_val' in $file (must be 0 or 1), ignoring"
|
||||
continue
|
||||
fi
|
||||
# Warn about potential issues with systemd-based OS when nesting is disabled via vars file
|
||||
if [[ "$var_val" == "0" && "${var_os:-debian}" != "alpine" ]]; then
|
||||
msg_warn "Nesting disabled in $file - modern systemd-based distributions may require nesting for proper operation"
|
||||
fi
|
||||
;;
|
||||
var_keyctl)
|
||||
if [[ "$var_val" != "0" && "$var_val" != "1" ]]; then
|
||||
@@ -2394,6 +2398,12 @@ advanced_settings() {
|
||||
else
|
||||
if [ $? -eq 1 ]; then
|
||||
_enable_nesting="0"
|
||||
# Warn about potential issues with systemd-based OS when nesting is disabled
|
||||
if [[ "$var_os" != "alpine" ]]; then
|
||||
whiptail --backtitle "Proxmox VE Helper Scripts" \
|
||||
--title "⚠️ NESTING WARNING" \
|
||||
--msgbox "Modern systemd-based distributions (Debian 13+, Ubuntu 24.04+, etc.) may require nesting to be enabled for proper operation.\n\nWithout nesting, the container may start in a degraded state with failing services (error 243/CREDENTIALS).\n\nIf you experience issues, enable nesting in the container options." 14 68
|
||||
fi
|
||||
else
|
||||
((STEP--))
|
||||
continue
|
||||
|
||||
@@ -815,11 +815,9 @@ is_verbose_mode() {
|
||||
# ------------------------------------------------------------------------------
|
||||
# cleanup_lxc()
|
||||
#
|
||||
# - Comprehensive cleanup of package managers, caches, and logs
|
||||
# - Supports Alpine (apk), Debian/Ubuntu (apt), and language package managers
|
||||
# - Cleans: Python (pip/uv), Node.js (npm/yarn/pnpm), Go, Rust, Ruby, PHP
|
||||
# - Truncates log files and vacuums systemd journal
|
||||
# - Run at end of container creation to minimize disk usage
|
||||
# - Cleans package manager and language caches (safe for installs AND updates)
|
||||
# - Supports Alpine (apk), Debian/Ubuntu (apt), Python, Node.js, Go, Rust, Ruby, PHP
|
||||
# - Uses fallback error handling to prevent cleanup failures from breaking installs
|
||||
# ------------------------------------------------------------------------------
|
||||
cleanup_lxc() {
|
||||
msg_info "Cleaning up"
|
||||
@@ -828,32 +826,52 @@ cleanup_lxc() {
|
||||
$STD apk cache clean || true
|
||||
rm -rf /var/cache/apk/*
|
||||
else
|
||||
$STD apt -y autoremove || true
|
||||
$STD apt -y autoclean || true
|
||||
$STD apt -y clean || true
|
||||
$STD apt -y autoremove 2>/dev/null || msg_warn "apt autoremove failed (non-critical)"
|
||||
$STD apt -y autoclean 2>/dev/null || msg_warn "apt autoclean failed (non-critical)"
|
||||
$STD apt -y clean 2>/dev/null || msg_warn "apt clean failed (non-critical)"
|
||||
fi
|
||||
|
||||
# Clear temp artifacts (keep sockets/FIFOs; ignore errors)
|
||||
find /tmp /var/tmp -type f -name 'tmp*' -delete 2>/dev/null || true
|
||||
find /tmp /var/tmp -type f -name 'tempfile*' -delete 2>/dev/null || true
|
||||
|
||||
# Node.js npm - directly remove cache directory
|
||||
# npm cache clean/verify can fail with ENOTEMPTY errors, so we skip them
|
||||
# Python
|
||||
if command -v pip &>/dev/null; then
|
||||
rm -rf /root/.cache/pip 2>/dev/null || true
|
||||
fi
|
||||
if command -v uv &>/dev/null; then
|
||||
rm -rf /root/.cache/uv 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Node.js
|
||||
if command -v npm &>/dev/null; then
|
||||
rm -rf /root/.npm/_cacache /root/.npm/_logs 2>/dev/null || true
|
||||
fi
|
||||
# Node.js yarn
|
||||
if command -v yarn &>/dev/null; then yarn cache clean &>/dev/null || true; fi
|
||||
# Node.js pnpm
|
||||
if command -v pnpm &>/dev/null; then pnpm store prune &>/dev/null || true; fi
|
||||
# Go
|
||||
if command -v go &>/dev/null; then $STD go clean -cache -modcache || true; fi
|
||||
# Rust cargo
|
||||
if command -v cargo &>/dev/null; then $STD cargo clean || true; fi
|
||||
# Ruby gem
|
||||
if command -v gem &>/dev/null; then $STD gem cleanup || true; fi
|
||||
# Composer (PHP)
|
||||
if command -v composer &>/dev/null; then COMPOSER_ALLOW_SUPERUSER=1 $STD composer clear-cache || true; fi
|
||||
if command -v yarn &>/dev/null; then
|
||||
rm -rf /root/.cache/yarn /root/.yarn/cache 2>/dev/null || true
|
||||
fi
|
||||
if command -v pnpm &>/dev/null; then
|
||||
pnpm store prune &>/dev/null || true
|
||||
fi
|
||||
|
||||
# Go (only build cache, not modules)
|
||||
if command -v go &>/dev/null; then
|
||||
$STD go clean -cache 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Rust (only registry cache, not build artifacts)
|
||||
if command -v cargo &>/dev/null; then
|
||||
rm -rf /root/.cargo/registry/cache /root/.cargo/.package-cache 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Ruby
|
||||
if command -v gem &>/dev/null; then
|
||||
rm -rf /root/.gem/cache 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# PHP
|
||||
if command -v composer &>/dev/null; then
|
||||
rm -rf /root/.composer/cache 2>/dev/null || true
|
||||
fi
|
||||
|
||||
msg_ok "Cleaned"
|
||||
}
|
||||
|
||||
@@ -265,7 +265,7 @@ After=network.target postgresql.service
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=${INSTALL_PATH}
|
||||
WorkingDirectory=${INSTALL_PATH}/backend
|
||||
EnvironmentFile=${CONFIG_PATH}
|
||||
ExecStart=/usr/bin/node ${INSTALL_PATH}/backend/server.js
|
||||
Restart=always
|
||||
|
||||
Reference in New Issue
Block a user