Compare commits

..

29 Commits

Author SHA1 Message Date
CanbiZ
c23b33549c remove journal log rotation 2025-11-23 21:06:08 +01:00
community-scripts-pr-app[bot]
4631f1c09e Update CHANGELOG.md (#9390)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 19:27:19 +00:00
Slaviša Arežina
6bcf8b3097 Add info on currently running kernel (#9388) 2025-11-23 20:26:58 +01:00
community-scripts-pr-app[bot]
7ac9023a57 Update CHANGELOG.md (#9389)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 19:25:39 +00:00
Bram
07e46a4585 fix: enhance back navigation in NotFoundPage component and remove unused deps (#9341)
* fix: enhance back navigation in NotFoundPage component

* chore: update dependencies and refactor imports

- Updated `framer-motion` to version `12.23.12` in `package.json` and `bun.lock`.
- Removed unused dependencies: `fuse.js`, `react-code-blocks`, `react-datepicker`, `pocketbase`, `simple-icons`.
- Refactored import in `number-ticker.tsx` to use `motion/react` instead of `framer-motion`.
- Removed CSS import for `react-datepicker` in `page.tsx`.

* fix: update NotFoundPage redirection to use basePath from site-config

- Modified the redirection logic in NotFoundPage to use the basePath variable.
- Set default basePath to "ProxmoxVE" in site-config for improved routing consistency.

* update bun.lock
2025-11-23 20:25:12 +01:00
community-scripts-pr-app[bot]
4003aad7d5 Update CHANGELOG.md (#9384)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 12:23:36 +00:00
community-scripts-pr-app[bot]
b9809d6768 Update CHANGELOG.md (#9383)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 12:23:17 +00:00
community-scripts-pr-app[bot]
70d59b825c Update date in json (#9382)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-11-23 12:23:14 +00:00
Alpha Vylly
72a39012b6 feat: add script disable functionality with visual indicators (#9374) 2025-11-23 13:22:57 +01:00
community-scripts-pr-app[bot]
4134f68fb4 Update versions.json (#9381)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 13:05:10 +01:00
community-scripts-pr-app[bot]
c9e7662c5c Update CHANGELOG.md (#9380)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 11:05:56 +00:00
Rick Johnson
4d6fa0a73d [LibreNMS] Correcting mariadb sed string for Debian 13 default in install/librenms-install.sh, website config for Debian 13 #9369 (#9370)
* Correcting mariadb config string sed modification to match mariadb provided in Debian 13

* Correcting Debian version for LibreNMS to 13 to match installation script.
2025-11-23 12:05:35 +01:00
community-scripts-pr-app[bot]
84412d9d9c Update CHANGELOG.md (#9379)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 11:00:36 +00:00
Tobias
581fed294f Update glpi-install.sh to remove install.php (#9378) 2025-11-23 12:00:10 +01:00
community-scripts-pr-app[bot]
c72a810179 Update CHANGELOG.md (#9377)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 10:42:18 +00:00
Ruan Bahia
a335779c5f fix: Snipe-IT update check failure (#9371)
- official source code repository for Snipe-IT is now located https://github.com/grokability/snipe-it
2025-11-23 11:41:51 +01:00
community-scripts-pr-app[bot]
05f3be1dbb Update CHANGELOG.md (#9373)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 00:16:24 +00:00
community-scripts-pr-app[bot]
040ccaafe7 Update versions.json (#9372)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-23 01:15:56 +01:00
CanbiZ
156d6e46a1 core: Improve timezone detection 2025-11-22 17:56:50 +01:00
community-scripts-pr-app[bot]
b6a47aa6c5 Update CHANGELOG.md (#9368)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-22 16:28:21 +00:00
Ruan Bahia
fc15ef3fd1 fix: Snipe-IT install and update failure due to new repository url (#9362)
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-11-22 17:27:54 +01:00
community-scripts-pr-app[bot]
899e1f6b1f Update CHANGELOG.md (#9367)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-22 16:27:36 +00:00
CanbiZ
afe330173e Refactor cleanup steps to use cleanup_lxc function (#9354) 2025-11-22 17:27:13 +01:00
community-scripts-pr-app[bot]
89198b0601 Update CHANGELOG.md (#9366)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-22 16:18:08 +00:00
community-scripts-pr-app[bot]
b5c82137cb Update CHANGELOG.md (#9365)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-22 16:17:50 +00:00
community-scripts-pr-app[bot]
ca7478f815 Update date in json (#9364)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-11-22 16:17:47 +00:00
push-app-to-main[bot]
5410542d25 Upgopher (#9360)
* 'Add new script'

* Update upgopher.json

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-11-22 17:17:28 +01:00
community-scripts-pr-app[bot]
a08869b843 Update CHANGELOG.md (#9363)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-22 15:41:43 +00:00
CanbiZ
9777abe56d Remove redundant cleanup steps from update scripts (#9359) 2025-11-22 16:41:22 +01:00
386 changed files with 1420 additions and 2977 deletions

View File

@@ -10,16 +10,53 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-11-23
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- [LibreNMS] Correcting mariadb sed string for Debian 13 default in install/librenms-install.sh, website config for Debian 13 #9369 [@htmlspinnr](https://github.com/htmlspinnr) ([#9370](https://github.com/community-scripts/ProxmoxVE/pull/9370))
- fix: Snipe-IT update check failure [@ruanmed](https://github.com/ruanmed) ([#9371](https://github.com/community-scripts/ProxmoxVE/pull/9371))
- #### ✨ New Features
- PVE Kernel Clean: Add info about currently running kernel [@tremor021](https://github.com/tremor021) ([#9388](https://github.com/community-scripts/ProxmoxVE/pull/9388))
- #### 🔧 Refactor
- Update glpi-install.sh to remove install.php [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9378](https://github.com/community-scripts/ProxmoxVE/pull/9378))
### 🌐 Website
- #### 🐞 Bug Fixes
- fix: enhance back navigation in NotFoundPage component and remove unused deps [@BramSuurdje](https://github.com/BramSuurdje) ([#9341](https://github.com/community-scripts/ProxmoxVE/pull/9341))
- #### ✨ New Features
- feat(frontend): add script disable functionality with visual indicators [@AlphaLawless](https://github.com/AlphaLawless) ([#9374](https://github.com/community-scripts/ProxmoxVE/pull/9374))
## 2025-11-22
### 🆕 New Scripts
- Upgopher ([#9360](https://github.com/community-scripts/ProxmoxVE/pull/9360))
### 🚀 Updated Scripts
- Expand support to Proxmox VE 9.1 in VM scripts [@MickLesk](https://github.com/MickLesk) ([#9351](https://github.com/community-scripts/ProxmoxVE/pull/9351))
- #### 🐞 Bug Fixes
- fix: Snipe-IT install and update failure due to new repository url [@ruanmed](https://github.com/ruanmed) ([#9362](https://github.com/community-scripts/ProxmoxVE/pull/9362))
- glpi - allow migration of existing databases [@moodyblue](https://github.com/moodyblue) ([#9353](https://github.com/community-scripts/ProxmoxVE/pull/9353))
- #### ✨ New Features
- Refactor cleanup steps to use cleanup_lxc function (install/ Folder) [@MickLesk](https://github.com/MickLesk) ([#9354](https://github.com/community-scripts/ProxmoxVE/pull/9354))
- Remove redundant cleanup steps from update scripts (ct/ Folder) [@MickLesk](https://github.com/MickLesk) ([#9359](https://github.com/community-scripts/ProxmoxVE/pull/9359))
### 🌐 Website
- #### ✨ New Features

View File

@@ -57,15 +57,6 @@ function update_script() {
$STD composer install --no-dev --prefer-dist
php artisan 2fauth:install
$STD systemctl restart nginx
msg_info "Cleaning Up"
if dpkg -l | grep -q 'php8.2'; then
$STD apt remove --purge -y php8.2*
fi
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -62,6 +62,7 @@ function update_script() {
cd /opt/adventurelog/frontend || exit
$STD pnpm i
$STD pnpm build
rm -rf /opt/adventurelog-backup
msg_ok "Updated ${APP}"
msg_info "Starting Services"
@@ -69,10 +70,6 @@ function update_script() {
systemctl start adventurelog-backend
systemctl start adventurelog-frontend
msg_ok "Services Started"
msg_info "Cleaning Up"
rm -rf /opt/adventurelog-backup
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -38,15 +38,13 @@ function update_script() {
curl -fsSL -o tika-server-standard-${RELEASE}.jar "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar"
mv --force tika-server-standard.jar tika-server-standard-prev-version.jar
mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting Service"
systemctl start apache-tika
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -31,15 +31,11 @@ function update_script() {
fi
if check_for_gh_release "authelia" "authelia/authelia"; then
$STD apt-get update
$STD apt-get -y upgrade
$STD apt update
$STD apt -y upgrade
fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary"
msg_info "Cleaning Up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -39,16 +39,13 @@ function update_script() {
curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_x86_64.tar.gz" -o "$temp_file"
tar xzf $temp_file -C /opt/backrest/bin
chmod +x /opt/backrest/bin/backrest
rm -f "$temp_file"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting Service"
systemctl start backrest
msg_ok "Started Service"
msg_info "Cleaning up"
rm -f "$temp_file"
msg_ok "Cleaned up"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -47,15 +47,12 @@ function update_script() {
chmod -R 755 /opt/baikal/
cd /opt/baikal
$STD composer install
rm -rf /opt/baikal-backup
msg_ok "Configured Baikal"
msg_info "Starting Service"
systemctl start apache2
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/baikal-backup
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -54,15 +54,12 @@ function update_script() {
$STD php artisan route:cache
$STD php artisan event:cache
chown -R www-data:www-data /opt/bar-assistant
rm -rf /opt/bar-assistant-backup
msg_ok "Updated Bar-Assistant"
msg_info "Starting nginx"
systemctl start nginx
msg_ok "Started nginx"
msg_info "Cleaning up"
rm -rf /opt/bar-assistant-backup
msg_ok "Cleaned"
fi
if check_for_gh_release "vue-salt-rim" "karlomikus/vue-salt-rim"; then
@@ -81,15 +78,12 @@ function update_script() {
cd /opt/vue-salt-rim
$STD npm install
$STD npm run build
rm -rf /opt/vue-salt-rim-backup
msg_ok "Updated Vue Salt Rim"
msg_info "Starting nginx"
systemctl start nginx
msg_ok "Started nginx"
msg_info "Cleaning up"
rm -rf /opt/vue-salt-rim-backup
msg_ok "Cleaned"
fi
if check_for_gh_release "meilisearch" "meilisearch/meilisearch"; then

View File

@@ -57,15 +57,12 @@ function update_script() {
chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
chmod -R 640 /opt/bookstack/.env
rm -rf /opt/bookstack-backup
msg_ok "Configured BookStack"
msg_info "Starting Apache2"
systemctl start apache2
msg_ok "Started Apache2"
msg_info "Cleaning Up"
rm -rf /opt/bookstack-backup
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -109,6 +109,7 @@ function update_script() {
fi
$STD uv run python manage.py migrate --noinput
$STD uv run python manage.py collectstatic --noinput
rm -f /tmp/dispatcharr_db_*.sql
msg_ok "Migrations Complete"
msg_info "Starting Services"
@@ -117,10 +118,6 @@ function update_script() {
systemctl start dispatcharr-celerybeat
systemctl start dispatcharr-daphne
msg_ok "Started Services"
msg_info "Cleaning up"
rm -f /tmp/dispatcharr_db_*.sql
msg_ok "Cleanup completed"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -76,11 +76,6 @@ function update_script() {
portainer/agent
msg_ok "Updated Portainer Agent"
fi
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleanup complete"
msg_ok "Updated successfully!"
exit
}

View File

@@ -50,16 +50,13 @@ function update_script() {
$STD turbo run build --filter=@documenso/remix
$STD npm run prisma:migrate-deploy
$STD turbo daemon stop
rm -rf /opt/v${RELEASE}.zip
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start documenso
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/v${RELEASE}.zip
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -47,16 +47,13 @@ function update_script() {
msg_info "Installing EMQX"
$STD apt-get install -y "$DEB_FILE"
rm -f "$DEB_FILE"
echo "$RELEASE" >~/.emqx
msg_ok "Installed EMQX v${RELEASE}"
msg_info "Starting EMQX"
systemctl start emqx
echo "$RELEASE" >~/.emqx
msg_ok "Started EMQX"
msg_info "Cleaning Up"
rm -f "$DEB_FILE"
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
else
msg_ok "No update required. EMQX is already at v${RELEASE}"

View File

@@ -48,16 +48,13 @@ function update_script() {
temp_file=$(mktemp)
curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
$STD unzip -o -d /opt/fileflows "$temp_file"
rm -rf "$temp_file"
rm -rf "$backup_filename"
msg_ok "Updated $APP to latest version"
msg_info "Starting Service"
systemctl start fileflows
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf "$temp_file"
rm -rf "$backup_filename"
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at latest version"

View File

@@ -56,10 +56,6 @@ function update_script() {
msg_info "Starting Service"
systemctl start ghostfolio
msg_ok "Started Service"
msg_info "Cleaning Up"
$STD npm cache clean --force
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -20,62 +20,57 @@ color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/jellyseerr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if [[ ! -d /opt/jellyseerr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if [ "$(node -v | cut -c2-3)" -ne 22 ]; then
msg_info "Updating Node.js Repository"
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Updating Node.js Repository"
if [ "$(node -v | cut -c2-3)" -ne 22 ]; then
msg_info "Updating Node.js Repository"
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Updating Node.js Repository"
msg_info "Updating Packages"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updating Packages"
msg_info "Updating Packages"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updating Packages"
fi
msg_info "Cleaning up"
apt-get -y autoremove
apt-get -y autoclean
msg_ok "Cleaning up"
fi
cd /opt/jellyseerr
output=$(git pull --no-rebase)
cd /opt/jellyseerr
output=$(git pull --no-rebase)
pnpm_current=$(pnpm --version 2>/dev/null)
pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json)
pnpm_current=$(pnpm --version 2>/dev/null)
pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json)
if [ -z "$pnpm_current" ]; then
msg_error "pnpm not found. Installing version $pnpm_desired..."
NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then
msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..."
NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
else
msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
fi
if [ -z "$pnpm_current" ]; then
msg_error "pnpm not found. Installing version $pnpm_desired..."
NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then
msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..."
NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
else
msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
fi
msg_info "Updating $APP"
if echo "$output" | grep -q "Already up to date."; then
msg_ok "$APP is already up to date."
exit
fi
msg_info "Updating $APP"
if echo "$output" | grep -q "Already up to date."; then
msg_ok "$APP is already up to date."
exit
fi
systemctl stop jellyseerr
rm -rf dist .next node_modules
export CYPRESS_INSTALL_BINARY=0
cd /opt/jellyseerr
$STD pnpm install --frozen-lockfile
export NODE_OPTIONS="--max-old-space-size=3072"
$STD pnpm build
systemctl stop jellyseerr
rm -rf dist .next node_modules
export CYPRESS_INSTALL_BINARY=0
cd /opt/jellyseerr
$STD pnpm install --frozen-lockfile
export NODE_OPTIONS="--max-old-space-size=3072"
$STD pnpm build
cat <<EOF >/etc/systemd/system/jellyseerr.service
cat <<EOF >/etc/systemd/system/jellyseerr.service
[Unit]
Description=jellyseerr Service
After=network.target
@@ -91,10 +86,10 @@ ExecStart=/usr/bin/node dist/index.js
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start jellyseerr
msg_ok "Updated $APP"
exit
systemctl daemon-reload
systemctl start jellyseerr
msg_ok "Updated $APP"
exit
}
start

View File

@@ -49,15 +49,12 @@ function update_script() {
cp -a keycloak.old/conf/. keycloak/conf/
cp -a keycloak.old/providers/. keycloak/providers/ 2>/dev/null || true
cp -a keycloak.old/themes/. keycloak/themes/ 2>/dev/null || true
rm -rf keycloak.old
msg_ok "Updated Keycloak"
msg_info "Restarting Service"
systemctl restart keycloak
msg_ok "Restarted Service"
msg_info "Cleaning up"
rm -rf keycloak.old
msg_ok "Cleanup complete"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -50,15 +50,12 @@ function update_script() {
$STD yarn install
$STD yarn build
chown -R www-data:www-data /opt/koillection/public/uploads
rm -r /opt/koillection-backup
msg_ok "Updated Koillection"
msg_info "Starting Service"
systemctl start apache2
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r /opt/koillection-backup
msg_ok "Cleaned"
msg_ok "Updated Successfully!"
fi
exit

View File

@@ -52,17 +52,14 @@ function update_script() {
$STD yarn web:build
$STD yarn prisma:deploy
[ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache ~/.rustup
rm -rf /root/.cache/yarn
rm -rf /opt/linkwarden/.next/cache
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start linkwarden
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache ~/.rustup
rm -rf /root/.cache/yarn
rm -rf /opt/linkwarden/.next/cache
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -42,15 +42,12 @@ function update_script() {
mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml
mv /opt/listmonk-backup/uploads /opt/listmonk/uploads
$STD /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml
rm -rf /opt/listmonk-backup/
msg_ok "Configured listmonk"
msg_info "Starting Service"
systemctl start listmonk
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/listmonk-backup/
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -53,15 +53,12 @@ function update_script() {
msg_info "Configuring LubeLogger"
chmod 700 /opt/lubelogger/CarCareTracker
cp -rf /tmp/lubeloggerData/* /opt/lubelogger/
rm -rf /tmp/lubeloggerData
msg_ok "Configured LubeLogger"
msg_info "Starting Service"
systemctl start lubelogger
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /tmp/lubeloggerData
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -38,15 +38,9 @@ function update_script() {
curl -fsSL -o "$DEB_FILE" "$DEB_URL"
$STD apt install "$DEB_FILE" -y
systemctl restart lyrion
$STD rm -f "$DEB_FILE"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Cleaning up"
$STD rm -f "$DEB_FILE"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "$APP is already up to date (${RELEASE})"

View File

@@ -55,17 +55,13 @@ function update_script() {
mv /usr/local/bin/minio /usr/local/bin/minio_bak
curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/minio" -o /usr/local/bin/minio
chmod +x /usr/local/bin/minio
rm -f /usr/local/bin/minio_bak
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start minio
msg_ok "Started Service"
msg_info "Cleaning up"
rm -f /usr/local/bin/minio_bak
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -52,15 +52,12 @@ function update_script() {
$STD php artisan monica:update --force
chown -R www-data:www-data /opt/monica
chmod -R 775 /opt/monica/storage
rm -r /opt/monica-backup
msg_ok "Configured monica"
msg_info "Starting Service"
systemctl start apache2
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r /opt/monica-backup
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -57,17 +57,14 @@ function update_script() {
fi
$STD /opt/netbox/upgrade.sh
rm -r "/opt/v${RELEASE}.zip"
rm -r /opt/netbox-backup
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service"
systemctl start netbox netbox-rq
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r "/opt/v${RELEASE}.zip"
rm -r /opt/netbox-backup
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -21,37 +21,34 @@ color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/nextpvr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping Service"
systemctl stop nextpvr-server
msg_ok "Stopped Service"
msg_info "Updating LXC packages"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated LXC packages"
msg_info "Updating ${APP}"
cd /opt
curl -fsSL "https://nextpvr.com/nextpvr-helper.deb" -o $(basename "https://nextpvr.com/nextpvr-helper.deb")
$STD dpkg -i nextpvr-helper.deb
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start nextpvr-server
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/nextpvr-helper.deb
msg_ok "Cleaned"
msg_ok "Updated successfully!"
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/nextpvr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping Service"
systemctl stop nextpvr-server
msg_ok "Stopped Service"
msg_info "Updating LXC packages"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated LXC packages"
msg_info "Updating ${APP}"
cd /opt
curl -fsSL "https://nextpvr.com/nextpvr-helper.deb" -o $(basename "https://nextpvr.com/nextpvr-helper.deb")
$STD dpkg -i nextpvr-helper.deb
rm -rf /opt/nextpvr-helper.deb
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start nextpvr-server
msg_ok "Started Service"
msg_ok "Updated successfully!"
exit
}
start

View File

@@ -42,17 +42,13 @@ function update_script() {
export DEBIAN_FRONTEND=noninteractive
export DEBCONF_NOWARNINGS=yes
$STD dpkg -i nxwitness-server-$RELEASE-linux_x64.deb
rm -f /tmp/nxwitness-server-$RELEASE-linux_x64.deb
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start networkoptix-root-tool networkoptix-mediaserver
msg_ok "Started Service"
msg_info "Cleaning up"
rm -f /tmp/nxwitness-server-$RELEASE-linux_x64.deb
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -50,17 +50,13 @@ function update_script() {
msg_info "Updating ${APP} to ${LATEST_VERSION}"
curl -fsSL https://nightly.odoo.com/${RELEASE}/nightly/deb/odoo_${RELEASE}.latest_all.deb -o /opt/odoo.deb
$STD apt install -y /opt/odoo.deb
rm -f /opt/odoo.deb
echo "$LATEST_VERSION" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${LATEST_VERSION}"
msg_info "Starting ${APP} service"
msg_info "Starting Service"
systemctl start odoo
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -f /opt/odoo.deb
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${LATEST_VERSION}"

View File

@@ -43,16 +43,13 @@ function update_script() {
mkdir -p /usr/local/lib/ollama
tar -xzf "${TMP_TAR}" -C /usr/local/lib/ollama
ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama
rm -f "${TMP_TAR}"
echo "${RELEASE}" >/opt/Ollama_version.txt
msg_ok "Updated Ollama to ${RELEASE}"
msg_info "Starting Services"
systemctl start ollama
msg_ok "Started Services"
msg_info "Cleaning Up"
rm -f "${TMP_TAR}"
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. Ollama is already at ${RELEASE}"

View File

@@ -39,17 +39,14 @@ function update_script() {
tar -xzf onedev-latest.tar.gz
$STD /opt/onedev-latest/bin/upgrade.sh /opt/onedev
RELEASE=$(cat /opt/onedev/release.properties | grep "version" | cut -d'=' -f2)
rm -rf /opt/onedev-latest
rm -rf /opt/onedev-latest.tar.gz
echo "${RELEASE}" >"/opt/${APP}_version.txt"
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting Service"
systemctl start onedev
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/onedev-latest
rm -rf /opt/onedev-latest.tar.gz
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}."

View File

@@ -65,17 +65,14 @@ EOF
$STD pip install --no-cache-dir -r requirements.txt
mkdir -p data/chromadb
$STD npm install
rm -rf /opt/v${RELEASE}.zip
rm -rf /opt/paperless-ai_bak
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service"
systemctl start paperless-ai
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/v${RELEASE}.zip
rm -rf /opt/paperless-ai_bak
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -20,48 +20,45 @@ color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/paperless-gpt ]]; then
msg_error "No Paperless-GPT installation found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service"
systemctl stop paperless-gpt
msg_ok "Service Stopped"
msg_info "Updating Paperless-GPT to ${RELEASE}"
temp_file=$(mktemp)
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
rm -rf /opt/paperless-gpt
mv paperless-gpt-${RELEASE} /opt/paperless-gpt
cd /opt/paperless-gpt/web-app
$STD npm install
$STD npm run build
cd /opt/paperless-gpt
go mod download
export CC=musl-gcc
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
echo "${RELEASE}" >"/opt/paperless-gpt_version.txt"
msg_ok "Updated Paperless-GPT to ${RELEASE}"
msg_info "Starting Service"
systemctl start paperless-gpt
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -f $temp_file
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/paperless-gpt ]]; then
msg_error "No Paperless-GPT installation found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service"
systemctl stop paperless-gpt
msg_ok "Service Stopped"
msg_info "Updating Paperless-GPT to ${RELEASE}"
temp_file=$(mktemp)
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
rm -rf /opt/paperless-gpt
mv paperless-gpt-${RELEASE} /opt/paperless-gpt
cd /opt/paperless-gpt/web-app
$STD npm install
$STD npm run build
cd /opt/paperless-gpt
go mod download
export CC=musl-gcc
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
rm -f $temp_file
echo "${RELEASE}" >"/opt/paperless-gpt_version.txt"
msg_ok "Updated Paperless-GPT to ${RELEASE}"
msg_info "Starting Service"
systemctl start paperless-gpt
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start

View File

@@ -52,17 +52,14 @@ function update_script() {
$STD php bin/console cache:clear
$STD php bin/console doctrine:migrations:migrate -n
chown -R www-data:www-data /opt/partdb
rm -r "/opt/v${RELEASE}.zip"
rm -r /opt/partdb-backup
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service"
systemctl start apache2
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r "/opt/v${RELEASE}.zip"
rm -r /opt/partdb-backup
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -67,6 +67,7 @@ function update_script() {
$STD php artisan migrate --seed --force
chown -R www-data:www-data /opt/pelican-panel
chmod -R 755 /opt/pelican-panel/storage /opt/pelican-panel/bootstrap/cache/
rm -rf "/opt/pelican-panel/panel.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
@@ -74,10 +75,6 @@ function update_script() {
$STD php artisan queue:restart
$STD php artisan up
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf "/opt/pelican-panel/panel.tar.gz"
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -70,6 +70,7 @@ EOF
$STD php artisan migrate --seed --force --no-interaction
chown -R www-data:www-data /opt/pterodactyl-panel/*
chmod -R 755 /opt/pterodactyl-panel/storage /opt/pterodactyl-panel/bootstrap/cache/
rm -rf "/opt/pterodactyl-panel/panel.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
@@ -77,10 +78,6 @@ EOF
$STD php artisan queue:restart
$STD php artisan up
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf "/opt/pterodactyl-panel/panel.tar.gz"
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -43,14 +43,11 @@ function update_script() {
$STD apt remove --purge -y dotnet-sdk-8.0
$STD apt install -y dotnet-sdk-9.0
fi
rm -rf /opt/rdtc-backup
msg_info "Starting Service"
systemctl start rdtc
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/rdtc-backup
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -54,6 +54,7 @@ function update_script() {
cd /tmp
curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio.deb -o minio.deb
$STD dpkg -i minio.deb
rm -f /tmp/minio.deb
msg_ok "Updated Minio"
msg_info "Updating Browserless (Patience)"
@@ -75,16 +76,12 @@ function update_script() {
$STD npm run build:function
$STD npm prune production
mv /opt/browserless.env /opt/browserless/.env
rm -f "$brwsr_tmp"
msg_ok "Updated Browserless"
msg_info "Restarting services"
systemctl start minio Reactive-Resume browserless
msg_ok "Restarted services"
msg_info "Cleaning Up"
rm -f /tmp/minio.deb
rm -f "$brwsr_tmp"
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -41,15 +41,12 @@ function update_script() {
$STD npm install
cp -f /opt/index.html /opt/revealjs
sed -i '25s/localhost/0.0.0.0/g' /opt/revealjs/gulpfile.js
rm -f /opt/index.html
msg_ok "Updated $APP"
msg_info "Starting Service"
systemctl start revealjs
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -f /opt/index.html
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -61,15 +61,12 @@ function update_script() {
$STD pip install -r requirements.txt
mv /opt/config.ini.bak /opt/soularr/config.ini
mv /opt/run.sh.bak /opt/soularr/run.sh
rm -rf /tmp/main.zip
msg_ok "Updated soularr"
msg_info "Starting soularr timer"
systemctl start soularr.timer
msg_ok "Started soularr timer"
msg_info "Cleaning Up"
rm -rf /tmp/main.zip
msg_ok "Cleanup Completed"
exit
}

View File

@@ -31,7 +31,7 @@ function update_script() {
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" "grokability/snipe-it"; then
msg_info "Stopping Services"
systemctl stop nginx
msg_ok "Services Stopped"
@@ -40,7 +40,7 @@ function update_script() {
mv /opt/snipe-it /opt/snipe-it-backup
msg_ok "Backup created"
fetch_and_deploy_gh_release "snipe-it" "snipe/snipe-it" "tarball"
fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball"
[[ "$(php -v 2>/dev/null)" == PHP\ 8.2* ]] && PHP_VERSION="8.3" PHP_MODULE="common,ctype,ldap,fileinfo,iconv,mysql,soap,xsl" PHP_FPM="YES" setup_php
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/snipeit.conf
setup_composer

View File

@@ -43,17 +43,13 @@ function update_script() {
cd spoolman
$STD pip3 install -r requirements.txt
curl -fsSL "https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example" -o ".env"
rm -rf /opt/spoolman.zip
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting Service"
systemctl start spoolman
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/spoolman.zip
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -64,16 +64,13 @@ EOF
cd /opt/tandoor
$STD /opt/tandoor/.venv/bin/python manage.py migrate
$STD /opt/tandoor/.venv/bin/python manage.py collectstatic --no-input
rm -rf /opt/tandoor.bak
msg_ok "Updated Trandoor"
msg_info "Starting Service"
systemctl start tandoor
systemctl reload nginx
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/tandoor.bak
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -45,16 +45,13 @@ function update_script() {
export NODE_OPTIONS=--openssl-legacy-provider
$STD npm i
$STD yarn build
rm -r "/opt/v${RELEASE}.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated TasmoCompiler"
msg_info "Starting Service"
systemctl start tasmocompiler
msg_ok "Started Service"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_info "Cleaning up"
rm -r "/opt/v${RELEASE}.tar.gz"
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -37,11 +37,8 @@ function update_script() {
$STD unzip Tdarr_Updater.zip
chmod +x Tdarr_Updater
$STD ./Tdarr_Updater
msg_ok "Updated Tdarr"
msg_info "Cleaning up"
rm -rf /opt/tdarr/Tdarr_Updater.zip
msg_ok "Cleaned up"
msg_ok "Updated Tdarr"
msg_ok "Updated successfully!"
exit
}

View File

@@ -38,11 +38,8 @@ function update_script() {
msg_info "Updating Technitium DNS"
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
msg_ok "Updated Technitium DNS"
msg_info "Cleaning up"
rm -f /opt/DnsServerPortable.tar.gz
msg_ok "Cleaned up"
msg_ok "Updated Technitium DNS"
msg_ok "Updated successfully!"
else
msg_ok "No update required. Technitium DNS is already at v${RELEASE}."

View File

@@ -41,15 +41,12 @@ function update_script() {
msg_info "Restoring data"
cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud
rm -rf /opt/teddycloud_bak
msg_ok "Data restored"
msg_info "Starting Service"
systemctl start teddycloud
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/teddycloud_bak
msg_ok "Cleaned up"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -43,7 +43,7 @@ function update_script() {
fetch_and_deploy_gh_release "tianji" "msgbyte/tianji"
msg_info "Updating ${APP}"
msg_info "Updating Tianji"
cd /opt/tianji
export NODE_OPTIONS="--max_old_space_size=4096"
$STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile
@@ -55,7 +55,11 @@ function update_script() {
mv /opt/.env /opt/tianji/src/server/.env
cd src/server
$STD pnpm db:migrate:apply
msg_ok "Updated ${APP}"
rm -rf /opt/tianji_bak
rm -rf /opt/tianji/src/client
rm -rf /opt/tianji/website
rm -rf /opt/tianji/reporter
msg_ok "Updated Tianji"
msg_info "Updating AppRise"
$STD uv pip install apprise cryptography --system
@@ -64,13 +68,6 @@ function update_script() {
msg_info "Starting Service"
systemctl start tianji
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/tianji_bak
rm -rf /opt/tianji/src/client
rm -rf /opt/tianji/website
rm -rf /opt/tianji/reporter
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -50,18 +50,12 @@ function update_script() {
mv /opt/traccar.xml /opt/traccar/conf
[[ -d /opt/data ]] && mv /opt/data /opt/traccar
[[ -d /opt/media ]] && mv /opt/media /opt/traccar
[ -f README.txt ] || [ -f traccar.run ] && rm -f README.txt traccar.run
msg_ok "Data restored"
msg_info "Starting Service"
systemctl start traccar
msg_ok "Started Service"
msg_info "Cleaning up"
[ -f README.txt ] || [ -f traccar.run ] && rm -f README.txt traccar.run
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned up"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -55,14 +55,8 @@ function update_script() {
msg_info "Restoring Database"
mkdir -p "$(dirname "${DB_RESTORE_PATH}")"
cp -r /opt/trilium_backup/$(basename "${DB_PATH}") "${DB_RESTORE_PATH}"
msg_ok "Restored Database"
msg_info "Cleaning up"
rm -rf /opt/trilium_backup
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
msg_ok "Restored Database"
msg_info "Starting Service"
systemctl start trilium

View File

@@ -43,12 +43,6 @@ function update_script() {
msg_info "Starting Service"
systemctl start uhf-server
msg_ok "Started Service"
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -57,11 +57,8 @@ function update_script() {
else
cp target/release/vaultwarden /opt/vaultwarden/bin/
fi
msg_ok "Updated VaultWarden"
msg_info "Cleaning up"
cd ~ && rm -rf vaultwarden
msg_ok "Cleaned"
msg_ok "Updated VaultWarden"
msg_info "Starting Service"
systemctl start vaultwarden
@@ -77,11 +74,8 @@ function update_script() {
msg_info "Updating Web-Vault to $WVRELEASE"
$STD curl -fsSLO https://github.com/dani-garcia/bw_web_builds/releases/download/"$WVRELEASE"/bw_web_"$WVRELEASE".tar.gz
$STD tar -zxf bw_web_"$WVRELEASE".tar.gz -C /opt/vaultwarden/
msg_ok "Updated Web-Vault"
msg_info "Cleaning up"
rm bw_web_"$WVRELEASE".tar.gz
msg_ok "Cleaned"
msg_ok "Updated Web-Vault"
msg_info "Starting Service"
systemctl start vaultwarden

View File

@@ -39,16 +39,13 @@ function update_script() {
curl -fsSL "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb" -o $(basename "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb")
export DEBIAN_FRONTEND=noninteractive
$STD dpkg -i vikunja-"$RELEASE"-amd64.deb
rm -rf /opt/vikunja-"$RELEASE"-amd64.deb
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start vikunja
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/vikunja-"$RELEASE"-amd64.deb
msg_ok "Cleaned"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -73,16 +73,13 @@ EOF
cp -f wastebin* /opt/wastebin/
chmod +x /opt/wastebin/wastebin
chmod +x /opt/wastebin/wastebin-ctl
rm -f "$temp_file"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated Wastebin"
msg_info "Starting Wastebin"
systemctl start wastebin
msg_ok "Started Wastebin"
msg_info "Cleaning Up"
rm -f "$temp_file"
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -37,10 +37,7 @@ function update_script() {
fetch_and_deploy_gh_release "watchyourlan" "aceberg/WatchYourLAN" "binary"
cp -R config.yaml /data/config.yaml
sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service
msg_info "Cleaning up"
rm ~/config.yaml
msg_ok "Cleaned up"
msg_info "Starting service"
systemctl enable -q --now watchyourlan

View File

@@ -45,16 +45,13 @@ function update_script() {
$STD python3 manage.py collectstatic --no-input
$STD yarn install
$STD yarn build:css:sass
rm -rf "$temp_file"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service"
systemctl start wger
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf "$temp_file"
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -54,15 +54,12 @@ function update_script() {
msg_info "Restoring Data"
cp -R /opt/wikijs-backup/* /opt/wikijs
$SQLITE_INSTALL && $STD npm rebuild sqlite3
rm -rf /opt/wikijs-backup
msg_ok "Restored Data"
msg_info "Starting Service"
systemctl start wikijs
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/wikijs-backup
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -56,15 +56,12 @@ function update_script() {
if ! grep -q 'frozen' /opt/wizarr/start.sh; then
sed -i 's/run/& --frozen/' /opt/wizarr/start.sh
fi
rm -rf "$BACKUP_FILE"
msg_ok "Updated Wizarr"
msg_info "Starting Service"
systemctl start wizarr
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf "$BACKUP_FILE"
msg_ok "Cleanup Completed"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -59,6 +59,7 @@ function update_script() {
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
-o /tmp/zabbix-release_latest+debian13_all.deb
$STD dpkg -i zabbix-release_latest+debian13_all.deb
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
$STD apt update
$STD apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql
@@ -88,13 +89,6 @@ function update_script() {
systemctl start "$AGENT_SERVICE"
systemctl restart apache2
msg_ok "Started Services"
msg_info "Cleaning Up"
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
msg_ok "Updated successfully!"
exit
}

View File

@@ -47,18 +47,15 @@ function update_script() {
rm -rf /opt/zigbee2mqtt/data
mv /opt/z2m_backup/data /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
grep -q "^packageImportMethod" ./pnpm-workspace.yaml || echo "packageImportMethod: hardlink" >> ./pnpm-workspace.yaml
grep -q "^packageImportMethod" ./pnpm-workspace.yaml || echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
$STD pnpm install --frozen-lockfile
$STD pnpm build
rm -rf /opt/z2m_backup
msg_ok "Updated Zigbee2MQTT"
msg_info "Starting Service"
systemctl start zigbee2mqtt
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/z2m_backup
msg_ok "Cleaned up"
msg_ok "Updated successfully!"
fi
exit

850
frontend/bun.lock generated

File diff suppressed because it is too large Load Diff

6
frontend/package.json generated
View File

@@ -37,6 +37,7 @@
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"date-fns": "^4.1.0",
"framer-motion": "^11.18.2",
"fuse.js": "^7.1.0",
"lucide-react": "^0.554.0",
@@ -45,20 +46,15 @@
"next": "15.5.2",
"next-themes": "^0.4.4",
"nuqs": "^2.4.1",
"pocketbase": "^0.21.5",
"prettier-plugin-organize-imports": "^4.1.0",
"react": "19.0.0",
"react-chartjs-2": "^5.3.0",
"react-code-blocks": "^0.1.6",
"react-datepicker": "^7.6.0",
"react-day-picker": "^9.4.3",
"react-dom": "19.0.0",
"react-icons": "^5.5.0",
"react-simple-typewriter": "^5.0.1",
"react-use-measure": "^2.1.7",
"recharts": "2.15.4",
"sharp": "^0.33.5",
"simple-icons": "^13.21.0",
"sonner": "^1.7.4",
"tailwind-merge": "^2.6.0",
"zod": "^3.24.2"

View File

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

View File

@@ -0,0 +1,43 @@
{
"name": "OPNsense",
"slug": "opnsense-vm",
"categories": [
4,
2
],
"date_created": "2025-11-23",
"type": "vm",
"updateable": true,
"privileged": false,
"interface_port": 443,
"documentation": "https://docs.opnsense.org/",
"website": "https://opnsense.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/opnsense.webp",
"config_path": "",
"description": "OPNsense is an open-source firewall and routing platform based on FreeBSD. It provides advanced security features, including intrusion detection, VPN support, traffic shaping, and web filtering, with an intuitive web interface for easy management. Known for its reliability and regular updates, OPNsense is a popular choice for both businesses and home networks.",
"disable": true,
"disable_description": "This script has been temporarily disabled due to installation failures. The OPNsense bootstrap process was not completing successfully, resulting in a plain FreeBSD VM instead of a functional OPNsense installation. The issue is being investigated and the script will be re-enabled once resolved. For more details, see: https://github.com/community-scripts/ProxmoxVE/issues/6183",
"install_methods": [
{
"type": "default",
"script": "vm/opnsense-vm.sh",
"resources": {
"cpu": 4,
"ram": 8192,
"hdd": 10,
"os": "FreeBSD",
"version": "latest"
}
}
],
"default_credentials": {
"username": "root",
"password": "opnsense"
},
"notes": [
{
"text": "It will fail with default settings if there is no vmbr0 and vmbr1 on your node. Use advanced settings in this case.",
"type": "warning"
}
]
}

View File

@@ -4,7 +4,7 @@
"categories": [
11
],
"date_created": "2025-10-31",
"date_created": "2025-11-22",
"type": "ct",
"updateable": true,
"privileged": false,

View File

@@ -1,4 +1,99 @@
[
{
"name": "rcourtman/Pulse",
"version": "v4.32.4",
"date": "2025-11-23T11:05:14Z"
},
{
"name": "readeck/readeck",
"version": "0.21.2",
"date": "2025-11-23T10:56:43Z"
},
{
"name": "verdaccio/verdaccio",
"version": "generator-verdaccio-plugin@6.0.0-next-8.26",
"date": "2025-11-23T07:46:06Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.340",
"date": "2025-11-23T06:00:18Z"
},
{
"name": "tobychui/zoraxy",
"version": "v3.3.0-rc1",
"date": "2025-11-23T05:42:35Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.80.5.rc.2",
"date": "2025-11-23T00:31:24Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-11-23T00:27:04Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.20.0",
"date": "2025-11-22T21:56:00Z"
},
{
"name": "OliveTin/OliveTin",
"version": "2025.11.25",
"date": "2025-11-22T21:00:52Z"
},
{
"name": "Cleanuparr/Cleanuparr",
"version": "v2.4.6",
"date": "2025-11-22T20:32:09Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.25.2",
"date": "2025-11-22T19:37:02Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.30.13",
"date": "2025-11-22T18:22:32Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.6",
"date": "2025-11-22T16:10:29Z"
},
{
"name": "TechnitiumSoftware/DnsServer",
"version": "v14.2.0",
"date": "2025-11-22T12:54:08Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.5",
"date": "2025-11-12T15:24:23Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.34.0",
@@ -19,36 +114,16 @@
"version": "1.1.5",
"date": "2025-11-22T07:02:52Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.339",
"date": "2025-11-22T06:05:53Z"
},
{
"name": "theonedev/onedev",
"version": "v13.1.0",
"date": "2025-11-22T04:29:25Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-11-22T00:27:05Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{
"name": "TwiN/gatus",
"version": "v5.33.0",
"date": "2025-11-21T22:54:49Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.78.5-stable-patch-1",
"date": "2025-11-21T19:57:45Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.44.0",
@@ -64,16 +139,6 @@
"version": "v1.72.0",
"date": "2025-11-21T18:20:58Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.5",
"date": "2025-11-12T15:24:23Z"
},
{
"name": "readeck/readeck",
"version": "0.21.1",
"date": "2025-11-21T17:17:52Z"
},
{
"name": "mattermost/mattermost",
"version": "v10.11.8",
@@ -109,21 +174,11 @@
"version": "v13.0.3",
"date": "2025-11-21T12:43:04Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.5",
"date": "2025-10-06T15:25:17Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v0.23.0-alpha.24",
"date": "2025-11-21T12:16:39Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.32.3",
"date": "2025-11-21T11:16:25Z"
},
{
"name": "seriousm4x/UpSnap",
"version": "5.2.4",
@@ -154,11 +209,6 @@
"version": "mariadb-12.1.2",
"date": "2025-11-18T15:16:21Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{
"name": "bluenviron/mediamtx",
"version": "v1.15.4",
@@ -184,11 +234,6 @@
"version": "v3007.9",
"date": "2025-11-20T17:58:32Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.30.12",
"date": "2025-11-20T16:13:19Z"
},
{
"name": "neo4j/neo4j",
"version": "5.26.17",
@@ -329,11 +374,6 @@
"version": "v1.143.0rc1",
"date": "2025-11-19T00:09:31Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v1.0.1-stable",
@@ -464,26 +504,11 @@
"version": "v25.11.1",
"date": "2025-11-16T13:04:21Z"
},
{
"name": "TechnitiumSoftware/DnsServer",
"version": "v14.1.0",
"date": "2025-11-16T11:32:10Z"
},
{
"name": "FlowiseAI/Flowise",
"version": "flowise@3.0.11",
"date": "2025-11-16T01:29:06Z"
},
{
"name": "OliveTin/OliveTin",
"version": "3000.4.0",
"date": "2025-11-16T01:02:49Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.19.6",
"date": "2025-11-15T22:56:45Z"
},
{
"name": "karakeep-app/karakeep",
"version": "android/v1.8.2-2",
@@ -514,16 +539,6 @@
"version": "v4.7.0",
"date": "2025-11-14T09:45:13Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{
"name": "verdaccio/verdaccio",
"version": "generator-verdaccio-plugin@6.0.0-next-8.25",
"date": "2025-11-14T08:14:55Z"
},
{
"name": "runtipi/runtipi",
"version": "v4.6.5",
@@ -644,11 +659,6 @@
"version": "v1.0.0-beta19",
"date": "2025-11-09T17:26:30Z"
},
{
"name": "Cleanuparr/Cleanuparr",
"version": "v2.4.5",
"date": "2025-11-09T17:14:01Z"
},
{
"name": "authelia/authelia",
"version": "v4.39.14",
@@ -779,11 +789,6 @@
"version": "v4.0.16.2944",
"date": "2025-11-05T01:56:48Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.25.1",
"date": "2025-11-04T20:01:09Z"
},
{
"name": "jhuckaby/Cronicle",
"version": "v0.9.100",
@@ -834,11 +839,6 @@
"version": "v1.9.1",
"date": "2025-11-02T21:14:50Z"
},
{
"name": "tobychui/zoraxy",
"version": "v3.2.9",
"date": "2025-11-02T05:48:39Z"
},
{
"name": "9001/copyparty",
"version": "v1.19.20",

View File

@@ -35,12 +35,22 @@ export const ScriptSchema = z.object({
logo: z.string().url().nullable(),
config_path: z.string(),
description: z.string().min(1, "Description is required"),
disable: z.boolean().optional(),
disable_description: z.string().optional(),
install_methods: z.array(InstallMethodSchema).min(1, "At least one install method is required"),
default_credentials: z.object({
username: z.string().nullable(),
password: z.string().nullable(),
}),
notes: z.array(NoteSchema),
}).refine((data) => {
if (data.disable === true && !data.disable_description) {
return false;
}
return true;
}, {
message: "disable_description is required when disable is true",
path: ["disable_description"],
});
export type Script = z.infer<typeof ScriptSchema>;

View File

@@ -42,6 +42,8 @@ const initialScript: Script = {
website: null,
logo: null,
description: "",
disable: undefined,
disable_description: undefined,
install_methods: [],
default_credentials: {
username: null,
@@ -261,7 +263,25 @@ export default function JSONGenerator() {
<Switch checked={script.privileged} onCheckedChange={checked => updateScript("privileged", checked)} />
<label>Privileged</label>
</div>
<div className="flex items-center space-x-2">
<Switch checked={script.disable || false} onCheckedChange={checked => updateScript("disable", checked)} />
<label>Disabled</label>
</div>
</div>
{script.disable && (
<div>
<Label>
Disable Description
{" "}
<span className="text-red-500">*</span>
</Label>
<Textarea
placeholder="Explain why this script is disabled..."
value={script.disable_description || ""}
onChange={e => updateScript("disable_description", e.target.value)}
/>
</div>
)}
<Input
placeholder="Interface Port"
type="number"

View File

@@ -1,5 +1,6 @@
"use client";
import { Button } from "@/components/ui/button";
import { basePath } from "@/config/site-config";
export default function NotFoundPage() {
return (
@@ -12,7 +13,17 @@ export default function NotFoundPage() {
Oops, the page you are looking for could not be found.
</p>
</div>
<Button onClick={() => window.history.back()} variant="secondary">
<Button
onClick={() => {
if (window.history.length > 1) {
window.history.back();
}
else {
window.location.href = `/${basePath}`;
}
}}
variant="secondary"
>
Go Back
</Button>
</div>

View File

@@ -123,7 +123,7 @@ export default function ScriptAccordion({
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 ${selectedScript === script.slug
? "rounded-lg bg-accent font-semibold dark:bg-accent/30 dark:text-white"
: ""
}`}
} ${script.disable ? "opacity-60" : ""}`}
onClick={() => {
handleSelected(script.slug);
setSelectedCategory(category.name);
@@ -143,7 +143,9 @@ export default function ScriptAccordion({
alt={script.name}
className="mr-1 w-4 h-4 rounded-full"
/>
<span className="flex items-center gap-2">{script.name}</span>
<span className="flex items-center gap-2">
{script.name}
</span>
</div>
{formattedBadge(script.type)}
</Link>

View File

@@ -12,6 +12,7 @@ import { useVersions } from "@/hooks/use-versions";
import { basePath } from "@/config/site-config";
import { extractDate } from "@/lib/time";
import DisableDescription from "./script-items/disable-description";
import { getDisplayValueFromType } from "./script-info-blocks";
import DefaultPassword from "./script-items/default-password";
import InstallCommand from "./script-items/install-command";
@@ -146,37 +147,45 @@ export function ScriptItem({ item, setSelectedScript }: ScriptItemProps) {
<ScriptHeader item={item} />
</Suspense>
<Description item={item} />
<Alerts item={item} />
{item.disable && item.disable_description && (
<DisableDescription item={item} />
) }
<div className="mt-4 rounded-lg border shadow-sm">
<div className="flex gap-3 px-4 py-2 bg-accent/25">
<h2 className="text-lg font-semibold">
How to
{" "}
{item.type === "pve" ? "use" : item.type === "addon" ? "apply" : "install"}
</h2>
<Tooltips item={item} />
</div>
<Separator />
<div className="">
<InstallCommand item={item} />
</div>
{item.config_path && (
<>
<Separator />
{!item.disable && (
<>
<Description item={item} />
<Alerts item={item} />
<div className="mt-4 rounded-lg border shadow-sm">
<div className="flex gap-3 px-4 py-2 bg-accent/25">
<h2 className="text-lg font-semibold">Location of config file</h2>
<h2 className="text-lg font-semibold">
How to
{" "}
{item.type === "pve" ? "use" : item.type === "addon" ? "apply" : "install"}
</h2>
<Tooltips item={item} />
</div>
<Separator />
<div className="">
<ConfigFile configPath={item.config_path} />
<InstallCommand item={item} />
</div>
</>
)}
</div>
{item.config_path && (
<>
<Separator />
<div className="flex gap-3 px-4 py-2 bg-accent/25">
<h2 className="text-lg font-semibold">Location of config file</h2>
</div>
<Separator />
<div className="">
<ConfigFile configPath={item.config_path} />
</div>
</>
)}
</div>
<DefaultPassword item={item} />
<DefaultPassword item={item} />
</>
)}
</div>
</div>
</div>

View File

@@ -0,0 +1,26 @@
import { AlertCircle } from "lucide-react";
import type { Script } from "@/lib/types";
import TextParseLinks from "@/components/text-parse-links";
import { AlertColors } from "@/config/site-config";
import { cn } from "@/lib/utils";
export default function DisableDescription({ item }: { item: Script }) {
return (
<div className="mt-4 flex flex-col shadow-sm gap-2">
<div
className={cn(
"flex items-start gap-3 rounded-lg border p-4 text-sm",
AlertColors.warning,
)}
>
<AlertCircle className="h-5 min-h-5 w-5 min-w-5 mt-0.5" />
<div className="flex flex-col gap-2">
<h3 className="font-semibold text-base">Script Disabled</h3>
<p>{TextParseLinks(item.disable_description!)}</p>
</div>
</div>
</div>
);
}

View File

@@ -0,0 +1,52 @@
import { ClipboardIcon, ExternalLink } from "lucide-react";
import { Fragment } from "react";
import handleCopy from "./handle-copy";
const URL_PATTERN = /(https?:\/\/[^\s,]+)/;
const CODE_PATTERN = /`([^`]*)`/;
export default function TextParseLinks(text: string) {
const codeParts = text.split(CODE_PATTERN);
return codeParts.map((part: string, codeIndex: number) => {
if (codeIndex % 2 === 1) {
return (
<span
key={`code-${codeIndex}`}
className="bg-secondary py-1 px-2 rounded-lg inline-flex items-center gap-2"
>
{part}
<ClipboardIcon
className="size-3 cursor-pointer"
onClick={() => handleCopy("command", part)}
/>
</span>
);
}
const urlParts = part.split(URL_PATTERN);
return (
<Fragment key={`text-${codeIndex}`}>
{urlParts.map((urlPart: string, urlIndex: number) => {
if (urlIndex % 2 === 1) {
return (
<a
key={`url-${codeIndex}-${urlIndex}`}
href={urlPart}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium transition-colors"
>
{urlPart}
<ExternalLink className="size-3" />
</a>
);
}
return <Fragment key={`plain-${codeIndex}-${urlIndex}`}>{urlPart}</Fragment>;
})}
</Fragment>
);
});
}

View File

@@ -1,6 +1,6 @@
"use client";
import { useInView, useMotionValue, useSpring } from "framer-motion";
import { useInView, useMotionValue, useSpring } from "motion/react";
import { useEffect, useRef } from "react";
import { cn } from "@/lib/utils";

View File

@@ -5,7 +5,7 @@ import React from "react";
import type { OperatingSystem } from "@/lib/types";
// eslint-disable-next-line node/no-process-env
export const basePath = process.env.BASE_PATH || "";
export const basePath = process.env.BASE_PATH || "ProxmoxVE";
export const navbarLinks = [
{

View File

@@ -14,6 +14,8 @@ export type Script = {
logo: string | null;
config_path: string;
description: string;
disable?: boolean;
disable_description?: string;
install_methods: {
type: "default" | "alpine";
script: string;

View File

@@ -97,9 +97,4 @@ msg_ok "Configured Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -89,9 +89,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -41,9 +41,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -146,9 +146,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -30,6 +30,7 @@ curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
$STD unzip Agent_Linux64*.zip
chmod +x ./Agent
echo $RELEASE >~/.agentdvr
rm -rf Agent_Linux64*.zip
msg_ok "Installed AgentDVR"
msg_info "Creating Service"
@@ -53,10 +54,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf Agent_Linux64*.zip
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -34,8 +34,4 @@ msg_ok "Installed Apache Cassandra"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -36,8 +36,4 @@ msg_ok "Installed Apache CouchDB."
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -71,6 +71,8 @@ mv ~/mysql-connector-j-9.3.0/mysql-connector-j-9.3.0.jar /etc/guacamole/lib/
curl -fsSL "https://downloads.apache.org/guacamole/${RELEASE_SERVER}/binary/guacamole-auth-jdbc-${RELEASE_SERVER}.tar.gz" -o "/root/guacamole-auth-jdbc-${RELEASE_SERVER}.tar.gz"
$STD tar -xf ~/guacamole-auth-jdbc-$RELEASE_SERVER.tar.gz
mv ~/guacamole-auth-jdbc-$RELEASE_SERVER/mysql/guacamole-auth-jdbc-mysql-$RELEASE_SERVER.jar /etc/guacamole/extensions/
rm -rf ~/mysql-connector-j-9.3.0{,.tar.gz}
rm -rf ~/guacamole-auth-jdbc-$RELEASE_SERVER{,.tar.gz}
msg_ok "Setup Apache Guacamole"
msg_info "Setup Database"
@@ -146,10 +148,4 @@ msg_ok "Setup Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf ~/mysql-connector-j-9.3.0{,.tar.gz}
rm -rf ~/guacamole-auth-jdbc-$RELEASE_SERVER{,.tar.gz}
$STD apt -y autoremove
$STD apt -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -69,8 +69,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -119,7 +119,7 @@ curl -fsSL "$TOMCAT_URL" -o "/tmp/tomcat.tar.gz"
mkdir -p /opt/tomcat-$TOMCAT_VERSION
tar --strip-components=1 -xzf /tmp/tomcat.tar.gz -C /opt/tomcat-$TOMCAT_VERSION
chown -R root:root /opt/tomcat-$TOMCAT_VERSION
rm -f /tmp/tomcat.tar.gz
cat <<EOF >/etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
@@ -147,9 +147,4 @@ msg_ok "Tomcat $LATEST_VERSION installed and started"
motd_ssh
customize
msg_info "Cleaning up"
rm -f /tmp/tomcat.tar.gz
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -16,7 +16,7 @@ update_os
msg_info "Installing Apt-Cacher NG"
DEBIAN_FRONTEND=noninteractive $STD apt-get -o Dpkg::Options::="--force-confold" install -y apt-cacher-ng
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
cat <<EOF >/etc/apt/apt.conf.d/00aptproxy.conf
Acquire::http::Proxy "http://localhost:3142";
EOF
systemctl enable -q --now apt-cacher-ng
@@ -24,8 +24,4 @@ msg_ok "Installed Apt-Cacher NG"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -91,9 +91,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -82,8 +82,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -24,6 +24,7 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
systemctl disable -q --now nginx
curl -fsSL "$(curl -fsSL https://api.github.com/repos/mayswind/ariang/releases/latest | grep download | grep AllInOne.zip | cut -d\" -f4)" -o $(basename "$(curl -fsSL https://api.github.com/repos/mayswind/ariang/releases/latest | grep download | grep AllInOne.zip | cut -d\" -f4)")
$STD unzip AriaNg-*-AllInOne.zip -d /var/www
rm AriaNg-*-AllInOne.zip
rm /etc/nginx/sites-enabled/*
cat <<EOF >/etc/nginx/conf.d/ariang.conf
server {
@@ -84,9 +85,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm AriaNg-*-AllInOne.zip
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -88,6 +88,7 @@ curl -fsSL "$DOWNLOAD_URL" -o "$temp_file"
mkdir -p /opt/asterisk
tar zxf "$temp_file" --strip-components=1 -C /opt/asterisk
cd /opt/asterisk
rm -f "$temp_file"
msg_ok "Downloaded Asterisk ($RELEASE)"
msg_info "Installing Asterisk"
@@ -105,10 +106,5 @@ msg_ok "Installed Asterisk"
motd_ssh
customize
cleanup_lxc
msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -28,8 +28,4 @@ msg_ok "Setup audiobookshelf"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -66,8 +66,4 @@ msg_ok "Authelia Setup completed"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -46,8 +46,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -15,34 +15,34 @@ update_os
msg_info "Installing dependencies"
$STD apt-get install -y --no-install-recommends \
python3-dev \
sqlite3 \
build-essential \
libldap2-dev \
libssl-dev \
libsasl2-dev \
imagemagick \
ghostscript \
libmagic1 \
libxi6 \
libxslt1.1 \
libxtst6 \
libxrandr2 \
libxkbfile1 \
libxcomposite1 \
libopengl0 \
libnss3 \
libxkbcommon0 \
libegl1 \
libxdamage1 \
libgl1 \
libglx-mesa0 \
xz-utils \
xdg-utils \
inotify-tools \
binutils \
unrar-free \
zip
python3-dev \
sqlite3 \
build-essential \
libldap2-dev \
libssl-dev \
libsasl2-dev \
imagemagick \
ghostscript \
libmagic1 \
libxi6 \
libxslt1.1 \
libxtst6 \
libxrandr2 \
libxkbfile1 \
libxcomposite1 \
libopengl0 \
libnss3 \
libxkbcommon0 \
libegl1 \
libxdamage1 \
libgl1 \
libglx-mesa0 \
xz-utils \
xdg-utils \
inotify-tools \
binutils \
unrar-free \
zip
msg_ok "Installed dependencies"
fetch_and_deploy_gh_release "kepubify" "pgaskin/kepubify" "singlefile" "latest" "/usr/bin" "kepubify-linux-64bit"
@@ -323,8 +323,4 @@ msg_ok "Created scripts and service files"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -97,8 +97,4 @@ msg_ok "Configured NGINX"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -20,6 +20,7 @@ mkdir -p /opt/backrest/{bin,config,data}
curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_x86_64.tar.gz" -o "$temp_file"
tar xzf $temp_file -C /opt/backrest/bin
chmod +x /opt/backrest/bin/backrest
rm -f "$temp_file"
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Backrest"
@@ -46,9 +47,5 @@ msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -25,10 +25,10 @@ DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
{
echo "Baikal Credentials"
echo "Baikal Database User: $DB_USER"
echo "Baikal Database Password: $DB_PASS"
echo "Baikal Database Name: $DB_NAME"
echo "Baikal Credentials"
echo "Baikal Database User: $DB_USER"
echo "Baikal Database Password: $DB_PASS"
echo "Baikal Database Name: $DB_NAME"
} >>~/baikal.creds
msg_ok "Set up PostgreSQL Database"
@@ -81,8 +81,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -17,10 +17,10 @@ update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
redis-server \
nginx \
lsb-release \
libvips
redis-server \
nginx \
lsb-release \
libvips
#php-{ffi,opcache,redis,zip,pdo-sqlite,bcmath,pdo,curl,dom,fpm}
msg_ok "Installed Dependencies"
@@ -41,14 +41,14 @@ msg_info "Configure MeiliSearch"
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
MASTER_KEY=$(openssl rand -base64 12)
sed -i \
-e 's|^env =.*|env = "production"|' \
-e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \
-e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \
-e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
-e 's|^# no_analytics = true|no_analytics = true|' \
-e 's|^http_addr =.*|http_addr = "127.0.0.1:7700"|' \
/etc/meilisearch.toml
-e 's|^env =.*|env = "production"|' \
-e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \
-e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \
-e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
-e 's|^# no_analytics = true|no_analytics = true|' \
-e 's|^http_addr =.*|http_addr = "127.0.0.1:7700"|' \
/etc/meilisearch.toml
msg_ok "Configured MeiliSearch"
msg_info "Creating MeiliSearch service"
@@ -77,11 +77,11 @@ MeiliSearch_API_KEY=$(curl -s -X GET 'http://127.0.0.1:7700/keys' -H "Authorizat
MeiliSearch_API_KEY_UID=$(curl -s -X GET 'http://127.0.0.1:7700/keys' -H "Authorization: Bearer $MASTER_KEY" | grep -o '"uid":"[^"]*"' | head -n 1 | sed 's/"uid":"//;s/"//')
LOCAL_IP=$(hostname -I | awk '{print $1}')
sed -i -e "s|^APP_URL=|APP_URL=http://${LOCAL_IP}/bar/|" \
-e "s|^MEILISEARCH_HOST=|MEILISEARCH_HOST=http://127.0.0.1:7700|" \
-e "s|^MEILISEARCH_KEY=|MEILISEARCH_KEY=${MASTER_KEY}|" \
-e "s|^MEILISEARCH_API_KEY=|MEILISEARCH_API_KEY=${MeiliSearch_API_KEY}|" \
-e "s|^MEILISEARCH_API_KEY_UID=|MEILISEARCH_API_KEY_UID=${MeiliSearch_API_KEY_UID}|" \
/opt/bar-assistant/.env
-e "s|^MEILISEARCH_HOST=|MEILISEARCH_HOST=http://127.0.0.1:7700|" \
-e "s|^MEILISEARCH_KEY=|MEILISEARCH_KEY=${MASTER_KEY}|" \
-e "s|^MEILISEARCH_API_KEY=|MEILISEARCH_API_KEY=${MeiliSearch_API_KEY}|" \
-e "s|^MEILISEARCH_API_KEY_UID=|MEILISEARCH_API_KEY_UID=${MeiliSearch_API_KEY_UID}|" \
/opt/bar-assistant/.env
$STD composer install --no-interaction
$STD php artisan key:generate
touch storage/bar-assistant/database.ba3.sqlite
@@ -190,8 +190,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -49,8 +49,4 @@ msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -45,9 +45,4 @@ msg_ok "Created & started service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
cleanup_lxc

Some files were not shown because too many files have changed in this diff Show More