Compare commits

..

6 Commits

Author SHA1 Message Date
CanbiZ
df12ea77dd Refactor install scripts for consistency and cleanup
Standardized package installation commands to use 'apt install' instead of 'apt-get'. Replaced manual database setup with helper functions for PostgreSQL and MariaDB where applicable. Hardware acceleration setup is now handled by a shared function. Removed repetitive cleanup code and replaced with a single 'cleanup_lxc' call at the end of each script. Updated PHP version for FreshRSS and simplified repository setup for Fhem and Grafana. Fixed merge conflict in graylog-install.sh and removed unnecessary temporary file handling.
2025-11-12 15:26:21 +01:00
CanbiZ
edfeb4c507 Delete dashy.sh 2025-11-12 14:09:24 +01:00
Michel Roegl-Brunner
3c2603b5b1 Merge branch 'main' into deb13_g_to_d 2025-11-12 11:47:31 +01:00
CanbiZ
5d2d54368a Refactor install scripts and cleanup handling
Replaces manual apt cleanup commands with a unified cleanup_lxc function across install scripts. Updates apt-get to apt for package installation, improves repository setup logic, and standardizes service creation. Minor messaging and variable usage improvements for consistency.
2025-11-12 11:39:28 +01:00
CanbiZ
e5c3c19106 Update scripts for Debian 13 and improve update messages
Bump default OS version from Debian 12 to 13 across all container scripts. Standardize update messages to use explicit service names and success confirmations. Refactor update functions for consistency, improve error handling, and update package management commands to use 'apt' instead of 'apt-get'.
2025-11-12 11:14:37 +01:00
CanbiZ
66409ac1cf Update grocy.sh 2025-10-23 16:29:21 +02:00
119 changed files with 1291 additions and 2013 deletions

View File

@@ -10,85 +10,14 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-11-16
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Kimai: remove deprecated admin_lte section [@MickLesk](https://github.com/MickLesk) ([#9182](https://github.com/community-scripts/ProxmoxVE/pull/9182))
- healthchecks: bump python to 3.13 [@MickLesk](https://github.com/MickLesk) ([#9175](https://github.com/community-scripts/ProxmoxVE/pull/9175))
## 2025-11-15
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- privatebin: fix: syntax error in chmod command [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9169](https://github.com/community-scripts/ProxmoxVE/pull/9169))
- phpIPHAM: patch db and add fping [@MickLesk](https://github.com/MickLesk) ([#9177](https://github.com/community-scripts/ProxmoxVE/pull/9177))
- changedetection: fix: increase ressources [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9171](https://github.com/community-scripts/ProxmoxVE/pull/9171))
- 2fauth: update composer command [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9168](https://github.com/community-scripts/ProxmoxVE/pull/9168))
- #### 🔧 Refactor
- firefly: refactor update_script and add dataimporter update [@MickLesk](https://github.com/MickLesk) ([#9178](https://github.com/community-scripts/ProxmoxVE/pull/9178))
## 2025-11-14
### 🆕 New Scripts
- LibreNMS ([#9148](https://github.com/community-scripts/ProxmoxVE/pull/9148))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- karakeep: clean install after every update [@MickLesk](https://github.com/MickLesk) ([#9144](https://github.com/community-scripts/ProxmoxVE/pull/9144))
- #### ✨ New Features
- bump grafana to debian 13 [@mschabhuettl](https://github.com/mschabhuettl) ([#9141](https://github.com/community-scripts/ProxmoxVE/pull/9141))
## 2025-11-13
### 🆕 New Scripts
- Netvisor ([#9133](https://github.com/community-scripts/ProxmoxVE/pull/9133))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Domain Monitor: Add domain checking cron [@tremor021](https://github.com/tremor021) ([#9129](https://github.com/community-scripts/ProxmoxVE/pull/9129))
- Kimai: Fix for MariaDB connection URL [@tremor021](https://github.com/tremor021) ([#9124](https://github.com/community-scripts/ProxmoxVE/pull/9124))
- Fix: filebrowser-quantum update [@MickLesk](https://github.com/MickLesk) ([#9115](https://github.com/community-scripts/ProxmoxVE/pull/9115))
- tools.func: fix wrong output for setup_java (error token is "0") [@snow2k9](https://github.com/snow2k9) ([#9110](https://github.com/community-scripts/ProxmoxVE/pull/9110))
- #### ✨ New Features
- tools.func: improve Rust setup and crate installation logic [@MickLesk](https://github.com/MickLesk) ([#9120](https://github.com/community-scripts/ProxmoxVE/pull/9120))
- #### 💥 Breaking Changes
- Remove Barcodebuddy [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9135](https://github.com/community-scripts/ProxmoxVE/pull/9135))
- Downgrade Swizzin to Debian 12 Bookworm [@MickLesk](https://github.com/MickLesk) ([#9116](https://github.com/community-scripts/ProxmoxVE/pull/9116))
## 2025-11-12 ## 2025-11-12
### 🆕 New Scripts
- Miniflux ([#9091](https://github.com/community-scripts/ProxmoxVE/pull/9091))
- Splunk Enterprise ([#9090](https://github.com/community-scripts/ProxmoxVE/pull/9090))
### 🚀 Updated Scripts ### 🚀 Updated Scripts
- openwebui: Python version usage | core: zsh completion install [@MickLesk](https://github.com/MickLesk) ([#9079](https://github.com/community-scripts/ProxmoxVE/pull/9079))
- #### 🐞 Bug Fixes - #### 🐞 Bug Fixes
- evcc: add missing fi in update [@MichaelVetter1979](https://github.com/MichaelVetter1979) ([#9107](https://github.com/community-scripts/ProxmoxVE/pull/9107))
- PeaNUT: use clean install flag during update [@vhsdream](https://github.com/vhsdream) ([#9100](https://github.com/community-scripts/ProxmoxVE/pull/9100))
- Tududi: Create new env file from example; fix installation & update [@vhsdream](https://github.com/vhsdream) ([#9097](https://github.com/community-scripts/ProxmoxVE/pull/9097))
- openwebui: Python version usage | core: zsh completion install [@MickLesk](https://github.com/MickLesk) ([#9079](https://github.com/community-scripts/ProxmoxVE/pull/9079))
- Refactor: evcc [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9057](https://github.com/community-scripts/ProxmoxVE/pull/9057)) - Refactor: evcc [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9057](https://github.com/community-scripts/ProxmoxVE/pull/9057))
- #### ✨ New Features - #### ✨ New Features

View File

@@ -54,7 +54,7 @@ function update_script() {
chown -R www-data: "/opt/2fauth" chown -R www-data: "/opt/2fauth"
chmod -R 755 "/opt/2fauth" chmod -R 755 "/opt/2fauth"
export COMPOSER_ALLOW_SUPERUSER=1 export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --no-dev --prefer-dist $STD composer install --no-dev --prefer-source
php artisan 2fauth:install php artisan 2fauth:install
$STD systemctl restart nginx $STD systemctl restart nginx

69
ct/barcode-buddy.sh Normal file
View File

@@ -0,0 +1,69 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Forceu/barcodebuddy
APP="Barcode-Buddy"
var_tags="${var_tags:-grocery;household}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-3}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/barcodebuddy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "barcodebuddy" "Forceu/barcodebuddy"; then
msg_info "Stopping Service"
systemctl stop apache2
systemctl stop barcodebuddy
msg_ok "Stopped Service"
msg_info "Backing up data"
mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
msg_ok "Backed up data"
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
msg_info "Configuring ${APP}"
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
chown -R www-data:www-data /opt/barcodebuddy/data
msg_ok "Configured ${APP}"
msg_info "Starting Service"
systemctl start apache2
systemctl start barcodebuddy
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r /opt/barcodebuddy-backup
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -7,8 +7,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Change Detection" APP="Change Detection"
var_tags="${var_tags:-monitoring;crawler}" var_tags="${var_tags:-monitoring;crawler}"
var_cpu="${var_cpu:-4}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-18}" var_disk="${var_disk:-18}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -27,12 +27,21 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
<<<<<<< HEAD
msg_info "Updating Dockge"
cd /opt/dockge
$STD docker compose pull
$STD docker compose up -d
msg_ok "Updated Dockge"
msg_ok "Updated successfully"
=======
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
cd /opt/dockge cd /opt/dockge
$STD docker compose pull $STD docker compose pull
$STD docker compose up -d $STD docker compose up -d
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
exit exit
} }

View File

@@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
variables variables
@@ -44,18 +45,22 @@ function update_script() {
fetch_and_deploy_gh_release "docmost" "docmost/docmost" fetch_and_deploy_gh_release "docmost" "docmost/docmost"
msg_info "Updating ${APP}" msg_info "Updating Docmost"
cd /opt/docmost cd /opt/docmost
mv /opt/.env /opt/docmost/.env mv /opt/.env /opt/docmost/.env
mv /opt/data /opt/docmost/data mv /opt/data /opt/docmost/data
$STD pnpm install --force $STD pnpm install --force
$STD pnpm build $STD pnpm build
msg_ok "Updated ${APP}" msg_ok "Updated Docmost"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start docmost systemctl start docmost
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}" var_disk="${var_disk:-6}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -20,15 +20,15 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /usr/share/dolibarr ]]; then if [[ ! -d /usr/share/dolibarr ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "To update ${APP}, use the applications web interface."
exit exit
fi
msg_error "To update ${APP}, use the applications web interface."
exit
} }
start start
@@ -38,4 +38,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/dolibarr/install${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/dolibarr/install${CL}"

View File

@@ -20,45 +20,41 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/domain-monitor ]]; then if [[ ! -d /opt/domain-monitor ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "domain-monitor" "Hosteroid/domain-monitor"; then
msg_info "Stopping Service"
systemctl stop apache2
msg_info "Service stopped"
msg_info "Creating backup"
mv /opt/domain-monitor/.env /opt
msg_ok "Created backup"
setup_composer
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-monitor" "Hosteroid/domain-monitor" "prebuild" "latest" "/opt/domain-monitor" "domain-monitor-v*.zip"
msg_info "Updating Domain Monitor"
cd /opt/domain-monitor
$STD composer install
msg_ok "Updated Domain Monitor"
msg_info "Restoring backup"
mv /opt/.env /opt/domain-monitor
msg_ok "Restored backup"
msg_info "Restarting Services"
systemctl reload apache2
msg_ok "Restarted Services"
msg_ok "Updated successfully!"
fi
exit exit
fi
if ! grep -Fq "root /usr/bin/php /opt/domain-monitor/cron/check_domains.php" /etc/crontab; then
echo "0 0 * * * root /usr/bin/php /opt/domain-monitor/cron/check_domains.php" >>/etc/crontab
fi
if check_for_gh_release "domain-monitor" "Hosteroid/domain-monitor"; then
msg_info "Stopping Service"
systemctl stop apache2
msg_info "Service stopped"
msg_info "Creating backup"
mv /opt/domain-monitor/.env /opt
msg_ok "Created backup"
setup_composer
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-monitor" "Hosteroid/domain-monitor" "prebuild" "latest" "/opt/domain-monitor" "domain-monitor-v*.zip"
msg_info "Updating Domain Monitor"
cd /opt/domain-monitor
$STD composer install
msg_ok "Updated Domain Monitor"
msg_info "Restoring backup"
mv /opt/.env /opt/domain-monitor
msg_ok "Restored backup"
msg_info "Restarting Services"
systemctl reload apache2
msg_ok "Restarted Services"
msg_ok "Updated successfully!"
fi
exit
} }
start start

View File

@@ -20,6 +20,13 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
<<<<<<< HEAD
header_info
check_container_storage
check_container_resources
if [[ ! -d /var/www ]]; then
msg_error "No ${APP} Installation Found!"
=======
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
@@ -31,7 +38,14 @@ function update_script() {
$STD apt-get update $STD apt-get update
$STD apt-get -y upgrade $STD apt-get -y upgrade
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
exit exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit
} }
start start

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -31,14 +31,22 @@ function update_script() {
if check_for_gh_release "duplicati" "duplicati/duplicati"; then if check_for_gh_release "duplicati" "duplicati/duplicati"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop duplicati systemctl stop duplicati
<<<<<<< HEAD
msg_ok "Stopped Service"
=======
msg_info "Stopped Service" msg_info "Stopped Service"
>>>>>>> main
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-x64-gui.deb" fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-x64-gui.deb"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start duplicati systemctl start duplicati
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -32,9 +32,9 @@ function update_script() {
msg_info "Removing old EMQX" msg_info "Removing old EMQX"
if dpkg -l | grep -q "^ii\s\+emqx\s"; then if dpkg -l | grep -q "^ii\s\+emqx\s"; then
$STD apt-get remove --purge -y emqx $STD apt remove --purge -y emqx
elif dpkg -l | grep -q "^ii\s\+emqx-enterprise\s"; then elif dpkg -l | grep -q "^ii\s\+emqx-enterprise\s"; then
$STD apt-get remove --purge -y emqx-enterprise $STD apt remove --purge -y emqx-enterprise
else else
msg_ok "No old EMQX package found" msg_ok "No old EMQX package found"
fi fi
@@ -46,11 +46,17 @@ function update_script() {
msg_ok "Downloaded EMQX" msg_ok "Downloaded EMQX"
msg_info "Installing EMQX" msg_info "Installing EMQX"
$STD apt-get install -y "$DEB_FILE" $STD apt install -y "$DEB_FILE"
echo "$RELEASE" >~/.emqx
rm -f "$DEB_FILE"
msg_ok "Installed EMQX v${RELEASE}" msg_ok "Installed EMQX v${RELEASE}"
msg_info "Starting EMQX" msg_info "Starting Service"
systemctl start emqx systemctl start emqx
<<<<<<< HEAD
msg_ok "Started Service"
msg_ok "Updated successfully"
=======
echo "$RELEASE" >~/.emqx echo "$RELEASE" >~/.emqx
msg_ok "Started EMQX" msg_ok "Started EMQX"
@@ -58,6 +64,7 @@ function update_script() {
rm -f "$DEB_FILE" rm -f "$DEB_FILE"
msg_ok "Cleanup Completed" msg_ok "Cleanup Completed"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
else else
msg_ok "No update required. EMQX is already at v${RELEASE}" msg_ok "No update required. EMQX is already at v${RELEASE}"
fi fi

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}" var_disk="${var_disk:-5}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -27,23 +27,28 @@ function update_script() {
exit exit
fi fi
if check_for_gh_release "ersatztv" "ErsatzTV/ErsatzTV"; then if check_for_gh_release "ersatztv" "ErsatzTV/ErsatzTV"; then
msg_info "Stopping ErsatzTV" msg_info "Stopping Service"
systemctl stop ersatzTV systemctl stop ersatzTV
msg_ok "Stopped ErsatzTV" msg_ok "Stopped Service"
fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz" fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
msg_info "Starting ErsatzTV" msg_info "Starting Service"
systemctl start ersatzTV systemctl start ersatzTV
<<<<<<< HEAD
msg_ok "Started Service"
msg_ok "ErsatzTV Updated successfully"
=======
msg_ok "Started ErsatzTV" msg_ok "Started ErsatzTV"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
if check_for_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg"; then if check_for_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg"; then
msg_info "Stopping ErsatzTV" msg_info "Stopping Service"
systemctl stop ersatzTV systemctl stop ersatzTV
msg_ok "Stopped ErsatzTV" msg_ok "Stopped Service"
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz" fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
@@ -54,10 +59,15 @@ function update_script() {
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe
msg_ok "ffmpeg links set" msg_ok "ffmpeg links set"
msg_info "Starting ErsatzTV" msg_info "Starting Service"
systemctl start ersatzTV systemctl start ersatzTV
<<<<<<< HEAD
msg_ok "Started Service"
msg_ok "ErsatzTV-ffmpeg Updated successfully"
=======
msg_ok "Started ErsatzTV" msg_ok "Started ErsatzTV"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -81,7 +81,11 @@ EOF
msg_info "Starting Service" msg_info "Starting Service"
systemctl start esphomeDashboard systemctl start esphomeDashboard
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -26,6 +26,7 @@ function update_script() {
if ! command -v evcc >/dev/null 2>&1; then if ! command -v evcc >/dev/null 2>&1; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit 1 exit 1
<<<<<<< HEAD
fi fi
if [[ -f /etc/apt/sources.list.d/evcc-stable.list ]]; then if [[ -f /etc/apt/sources.list.d/evcc-stable.list ]]; then
@@ -35,7 +36,17 @@ function update_script() {
"https://dl.evcc.io/public/evcc/stable/deb/debian/" \ "https://dl.evcc.io/public/evcc/stable/deb/debian/" \
"$(get_os_info codename)" \ "$(get_os_info codename)" \
"main" "main"
=======
>>>>>>> main
fi fi
if [[ -f /etc/apt/sources.list.d/evcc-stable.list ]]; then
setup_deb822_repo \
"evcc-stable" \
"https://dl.evcc.io/public/evcc/stable/gpg.EAD5D0E07B0EC0FD.key" \
"https://dl.evcc.io/public/evcc/stable/deb/debian/" \
"$(get_os_info codename)" \
"main"
msg_info "Updating evcc LXC" msg_info "Updating evcc LXC"
$STD apt update $STD apt update
$STD apt --only-upgrade install -y evcc $STD apt --only-upgrade install -y evcc

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-3072}" var_ram="${var_ram:-3072}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -31,20 +31,28 @@ function update_script() {
if check_for_gh_release "excalidraw" "excalidraw/excalidraw"; then if check_for_gh_release "excalidraw" "excalidraw/excalidraw"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop excalidraw systemctl stop excalidraw
<<<<<<< HEAD
msg_ok "Stopped Service"
=======
msg_info "Stopped Service" msg_info "Stopped Service"
>>>>>>> main
rm -rf /opt/excalidraw rm -rf /opt/excalidraw
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw" fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
msg_info "Updating $APP" msg_info "Updating Excalidraw"
cd /opt/excalidraw cd /opt/excalidraw
$STD yarn $STD yarn
msg_ok "Updated $APP" msg_ok "Updated Excalidraw"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start excalidraw systemctl start excalidraw
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

70
ct/fenrus.sh Normal file
View File

@@ -0,0 +1,70 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) | Co-Author: Scorpoon
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/revenz/Fenrus
APP="Fenrus"
var_tags="${var_tags:-dashboard}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/${APP} ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "Currently we don't provide an update function for this ${APP}."
exit
msg_info "Updating ${APP}"
systemctl stop ${APP}
git clone https://github.com/revenz/Fenrus.git
cd Fenrus
gitVersionNumber=$(git rev-parse HEAD)
if [[ "${gitVersionNumber}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
mkdir /opt/fenrus-data-backup
cp -r "/opt/${APP}/data/" /opt/fenrus-data-backup/data
if [[ ! -d /opt/fenrus-data-backup/data ]]; then
msg_error "Backup of data folder failed! exiting..."
rm -r /opt/fenrus-data-backup/
exit
fi
export DOTNET_CLI_TELEMETRY_OPTOUT=1
dotnet publish -c Release -o "/opt/${APP}/" Fenrus.csproj
cp -r /opt/fenrus-data-backup/data/ "/opt/${APP}/"
echo "${gitVersionNumber}" >"/opt/${APP}_version.txt"
rm -r /opt/fenrus-data-backup/
msg_ok "Updated $APP"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already up to date"
fi
cd ..
rm -r Fenrus/
systemctl start ${APP}
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -20,6 +20,13 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
<<<<<<< HEAD
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/systemd/system/fhem.service ]]; then
msg_error "No ${APP} Installation Found!"
=======
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
@@ -31,7 +38,14 @@ function update_script() {
$STD apt-get update $STD apt-get update
$STD apt-get -y upgrade $STD apt-get -y upgrade
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
exit exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit
} }
start start

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -28,27 +28,27 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if ! [[ $(dpkg -s jq 2>/dev/null) ]]; then
$STD apt-get update
$STD apt-get install -y jq
fi
update_available=$(curl -fsSL -X 'GET' "http://localhost:19200/api/status/update-available" -H 'accept: application/json' | jq .UpdateAvailable) update_available=$(curl -fsSL -X 'GET' "http://localhost:19200/api/status/update-available" -H 'accept: application/json' | jq .UpdateAvailable)
if [[ "${update_available}" == "true" ]]; then if [[ "${update_available}" == "true" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop fileflows systemctl stop fileflows
<<<<<<< HEAD
msg_ok "Stopped Service"
=======
msg_info "Stopped Service" msg_info "Stopped Service"
>>>>>>> main
msg_info "Creating Backup" msg_info "Creating Backup"
backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz" backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz"
tar -czf "$backup_filename" -C /opt/fileflows Data tar -czf "$backup_filename" -C /opt/fileflows Data
msg_ok "Backup Created" msg_ok "Backup Created"
msg_info "Updating $APP to latest version" msg_info "Updating FileFlows"
temp_file=$(mktemp) temp_file=$(mktemp)
curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file" curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
$STD unzip -o -d /opt/fileflows "$temp_file" $STD unzip -o -d /opt/fileflows "$temp_file"
msg_ok "Updated $APP to latest version" msg_ok "Updated FileFlows"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start fileflows systemctl start fileflows
@@ -58,11 +58,14 @@ function update_script() {
rm -rf "$temp_file" rm -rf "$temp_file"
rm -rf "$backup_filename" rm -rf "$backup_filename"
msg_ok "Cleanup Completed" msg_ok "Cleanup Completed"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
else else
msg_ok "No update required. ${APP} is already at latest version" msg_ok "No update required. ${APP} is already at latest version"
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -28,66 +28,45 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if check_for_gh_release "firefly" "firefly-iii/firefly-iii"; then if check_for_gh_release "firefly" "firefly-iii/firefly-iii"; then
msg_info "Stopping Apache2"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Apache2"
msg_info "Backing up data"
cp /opt/firefly/.env /opt/.env cp /opt/firefly/.env /opt/.env
cp -r /opt/firefly/storage /opt/storage cp -r /opt/firefly/storage /opt/storage
msg_ok "Backed up data"
if [[ -d /opt/firefly/dataimporter ]]; then
cp /opt/firefly/dataimporter/.env /opt/dataimporter.env
IMPORTER_INSTALLED=1
fi
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip" fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip"
setup_composer setup_composer
msg_info "Updating Firefly" msg_info "Updating Firefly"
rm -rf /opt/firefly/storage rm -rf /opt/firefly/storage
cp -r /opt/storage /opt/firefly/storage
cp /opt/.env /opt/firefly/.env cp /opt/.env /opt/firefly/.env
cp -r /opt/storage /opt/firefly/storage
chown -R www-data:www-data /opt/firefly chown -R www-data:www-data /opt/firefly
chmod -R 775 /opt/firefly/storage find /opt/firefly/storage -type d -exec chmod 775 {} \;
mkdir -p /opt/firefly/storage/framework/cache/data find /opt/firefly/storage -type f -exec chmod 664 {} \;
mkdir -p /opt/firefly/storage/framework/sessions mkdir -p /opt/firefly/storage/framework/{cache/data,sessions,views}
mkdir -p /opt/firefly/storage/framework/views $STD sudo -u www-data php /opt/firefly/artisan cache:clear
mkdir -p /opt/firefly/storage/logs
mkdir -p /opt/firefly/bootstrap/cache
chown -R www-data:www-data /opt/firefly/{storage,bootstrap/cache}
cd /opt/firefly cd /opt/firefly
$STD runuser -u www-data -- composer install --no-dev --optimize-autoloader $STD php artisan migrate --seed --force
$STD runuser -u www-data -- composer dump-autoload -o $STD php artisan cache:clear
$STD php artisan view:clear
$STD runuser -u www-data -- php artisan cache:clear $STD php artisan firefly-iii:upgrade-database
$STD runuser -u www-data -- php artisan config:clear $STD php artisan firefly-iii:laravel-passport-keys
$STD runuser -u www-data -- php artisan route:clear
$STD runuser -u www-data -- php artisan view:clear
$STD runuser -u www-data -- php artisan migrate --seed --force
$STD runuser -u www-data -- php artisan firefly-iii:upgrade-database
$STD runuser -u www-data -- php artisan firefly-iii:laravel-passport-keys
$STD runuser -u www-data -- php artisan storage:link || true
$STD runuser -u www-data -- php artisan optimize
msg_ok "Updated Firefly" msg_ok "Updated Firefly"
if [[ "${IMPORTER_INSTALLED:-0}" -eq 1 ]]; then msg_info "Starting Apache2"
msg_info "Updating Firefly Importer"
IMPORTER_RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/data-importer/releases/latest | grep tag_name | cut -d '"' -f 4 | sed 's/v//')
rm -rf /opt/firefly/dataimporter
mkdir -p /opt/firefly/dataimporter
curl -fsSL "https://github.com/firefly-iii/data-importer/releases/download/v${IMPORTER_RELEASE}/DataImporter-v${IMPORTER_RELEASE}.tar.gz" -o "/opt/DataImporter.tar.gz"
tar -xzf /opt/DataImporter.tar.gz -C /opt/firefly/dataimporter
if [[ -f /opt/dataimporter.env ]]; then
cp /opt/dataimporter.env /opt/firefly/dataimporter/.env
fi
chown -R www-data:www-data /opt/firefly/dataimporter
rm -f /opt/DataImporter.tar.gz
msg_ok "Updated Firefly Importer"
fi
systemctl start apache2 systemctl start apache2
msg_ok "Started Apache2"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -28,6 +28,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
<<<<<<< HEAD
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then
msg_info "Stopping Service"
=======
if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"12"* ]]; then if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"12"* ]]; then
msg_error "Wrong Debian version detected!" msg_error "Wrong Debian version detected!"
msg_error "You must upgrade your LXC to Debian Trixie before updating." msg_error "You must upgrade your LXC to Debian Trixie before updating."
@@ -35,16 +39,26 @@ function update_script() {
fi fi
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then
msg_info "Stopping service" msg_info "Stopping service"
>>>>>>> main
systemctl stop flaresolverr systemctl stop flaresolverr
msg_ok "Stopped service" msg_ok "Stopped Service"
<<<<<<< HEAD
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
=======
rm -rf /opt/flaresolverr rm -rf /opt/flaresolverr
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz" fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
>>>>>>> main
msg_info "Starting service" msg_info "Starting Service"
systemctl start flaresolverr systemctl start flaresolverr
<<<<<<< HEAD
msg_ok "Started Service"
msg_ok "Updated successfully"
=======
msg_ok "Started service" msg_ok "Started service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_disk="${var_disk:-10}"
var_cpu="${var_cpu:-4}" var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-4096}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -27,12 +27,20 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
<<<<<<< HEAD
msg_info "Updating FlowiseAI"
systemctl stop flowise
npm install -g flowise --upgrade
systemctl start flowise
msg_ok "Updated FlowiseAI"
=======
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
systemctl stop flowise systemctl stop flowise
npm install -g flowise --upgrade npm install -g flowise --upgrade
systemctl start flowise systemctl start flowise
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-3}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-4096}"
var_disk="${var_disk:-7}" var_disk="${var_disk:-7}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -31,13 +31,16 @@ function update_script() {
if check_for_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"; then if check_for_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop fluid-calendar systemctl stop fluid-calendar
<<<<<<< HEAD
msg_ok "Stopped Service"
=======
msg_info "Stopped Service" msg_info "Stopped Service"
>>>>>>> main
cp /opt/fluid-calendar/.env /opt/fluid.env cp /opt/fluid-calendar/.env /opt/fluid.env
rm -rf /opt/fluid-calendar CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
msg_info "Updating $APP" msg_info "Updating Fluid Calendar"
mv /opt/fluid.env /opt/fluid-calendar/.env mv /opt/fluid.env /opt/fluid-calendar/.env
cd /opt/fluid-calendar cd /opt/fluid-calendar
export NEXT_TELEMETRY_DISABLED=1 export NEXT_TELEMETRY_DISABLED=1
@@ -45,12 +48,16 @@ function update_script() {
$STD npm run prisma:generate $STD npm run prisma:generate
$STD npx prisma migrate deploy $STD npx prisma migrate deploy
$STD npm run build:os $STD npm run build:os
msg_ok "Updated $APP" msg_ok "Updated Fluid Calendar"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start fluid-calendar systemctl start fluid-calendar
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -31,23 +31,24 @@ function update_script() {
systemctl stop forgejo systemctl stop forgejo
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP}" msg_info "Updating Forgejo"
RELEASE=$(curl -fsSL https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//') RELEASE=$(curl -fsSL https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//')
curl -fsSL "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/forgejo-${RELEASE}-linux-amd64" -o "forgejo-$RELEASE-linux-amd64" curl -fsSL "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/forgejo-${RELEASE}-linux-amd64" -o "forgejo-$RELEASE-linux-amd64"
rm -rf /opt/forgejo/* rm -rf /opt/forgejo/*
cp -r forgejo-$RELEASE-linux-amd64 /opt/forgejo/forgejo-$RELEASE-linux-amd64 cp -r forgejo-$RELEASE-linux-amd64 /opt/forgejo/forgejo-$RELEASE-linux-amd64
chmod +x /opt/forgejo/forgejo-$RELEASE-linux-amd64 chmod +x /opt/forgejo/forgejo-$RELEASE-linux-amd64
ln -sf /opt/forgejo/forgejo-$RELEASE-linux-amd64 /usr/local/bin/forgejo ln -sf /opt/forgejo/forgejo-$RELEASE-linux-amd64 /usr/local/bin/forgejo
msg_ok "Updated ${APP}"
msg_info "Cleaning"
rm -rf forgejo-$RELEASE-linux-amd64 rm -rf forgejo-$RELEASE-linux-amd64
msg_ok "Cleaned" msg_ok "Updated Forgejo"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start forgejo systemctl start forgejo
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -20,16 +20,16 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /lib/systemd/system/freepbx.service ]]; then if [[ ! -f /lib/systemd/system/freepbx.service ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "Currently we don't provide an update function for this ${APP}."
exit exit
fi
msg_error "Currently we don't provide an update function for this ${APP}."
exit
} }
start start

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -33,7 +33,10 @@ function update_script() {
chmod +x /opt/freshrss/cli/sensitive-log.sh chmod +x /opt/freshrss/cli/sensitive-log.sh
systemctl restart apache2 systemctl restart apache2
msg_ok "Fixed wrong permissions" msg_ok "Fixed wrong permissions"
<<<<<<< HEAD
=======
exit exit
>>>>>>> main
else else
msg_error "FreshRSS should be updated via the user interface." msg_error "FreshRSS should be updated via the user interface."
exit exit

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-5}" var_disk="${var_disk:-5}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -44,7 +44,7 @@ function update_script() {
exit exit
fi fi
if ! command -v git &>/dev/null; then if ! command -v git &>/dev/null; then
$STD apt-get install -y git $STD apt install -y git
fi fi
msg_info "Stopping service $SERVICE_NAME" msg_info "Stopping service $SERVICE_NAME"
@@ -60,7 +60,11 @@ function update_script() {
msg_info "Starting service $SERVICE_NAME" msg_info "Starting service $SERVICE_NAME"
systemctl start "$SERVICE_NAME" systemctl start "$SERVICE_NAME"
msg_ok "Started service $SERVICE_NAME" msg_ok "Started service $SERVICE_NAME"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -39,8 +39,7 @@ function update_script() {
fi fi
mv /opt/gatus/config/config.yaml /opt mv /opt/gatus/config/config.yaml /opt
rm -rf /opt/gatus CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
msg_info "Updating Gatus" msg_info "Updating Gatus"
cd /opt/gatus cd /opt/gatus
@@ -53,7 +52,11 @@ function update_script() {
msg_info "Starting Service" msg_info "Starting Service"
systemctl start gatus systemctl start gatus
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated Successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -56,11 +56,15 @@ function update_script() {
msg_info "Starting Service" msg_info "Starting Service"
systemctl start ghostfolio systemctl start ghostfolio
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_info "Cleaning Up" msg_info "Cleaning Up"
$STD npm cache clean --force $STD npm cache clean --force
msg_ok "Cleanup Completed" msg_ok "Cleanup Completed"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}" var_disk="${var_disk:-6}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -96,17 +96,15 @@ EOF
ln -sf /opt/bun/bin/bun /usr/local/bin/bunx ln -sf /opt/bun/bin/bun /usr/local/bin/bunx
msg_ok "Installed Bun" msg_ok "Installed Bun"
rm -rf /opt/gitea-mirror CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
msg_info "Updating and rebuilding ${APP}" msg_info "Updating Gitea-Mirror"
cd /opt/gitea-mirror cd /opt/gitea-mirror
$STD bun run setup $STD bun run setup
$STD bun run build $STD bun run build
APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4) APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4)
sudo sed -i.bak "s|^npm_package_version=.*|npm_package_version=${APP_VERSION}|" /opt/gitea-mirror.env sudo sed -i.bak "s|^npm_package_version=.*|npm_package_version=${APP_VERSION}|" /opt/gitea-mirror.env
msg_ok "Updated and rebuilt ${APP}" msg_ok "Updated Gitea-Mirror"
msg_info "Restoring Data" msg_info "Restoring Data"
cp /opt/gitea-mirror-backup/data/* /opt/gitea-mirror/data cp /opt/gitea-mirror-backup/data/* /opt/gitea-mirror/data
@@ -114,8 +112,13 @@ EOF
msg_info "Starting Service" msg_info "Starting Service"
systemctl start gitea-mirror systemctl start gitea-mirror
<<<<<<< HEAD
msg_ok "Started Service"
msg_ok "Updated successfully"
=======
msg_ok "Service Started" msg_ok "Service Started"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -29,18 +29,23 @@ function update_script() {
exit exit
fi fi
if check_for_gh_release "gitea" "go-gitea/gitea"; then if check_for_gh_release "gitea" "go-gitea/gitea"; then
msg_info "Stopping service" msg_info "Stopping Service"
systemctl stop gitea systemctl stop gitea
msg_ok "Service stopped" msg_ok "Stopped Service"
rm -rf /usr/local/bin/gitea rm -rf /usr/local/bin/gitea
fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64" fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64"
chmod +x /usr/local/bin/gitea chmod +x /usr/local/bin/gitea
msg_info "Starting service" msg_info "Starting Service"
systemctl start gitea systemctl start gitea
<<<<<<< HEAD
msg_ok "Started Service"
msg_ok "Updated successfully"
=======
msg_ok "Started service" msg_ok "Started service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -39,7 +39,11 @@ function update_script() {
msg_info "Starting Service" msg_info "Starting Service"
systemctl start glance systemctl start glance
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -12,6 +12,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
variables variables
@@ -27,11 +28,17 @@ function update_script() {
exit exit
fi fi
msg_info "Updating $APP LXC" msg_info "Updating Globaleaks"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt -y upgrade
<<<<<<< HEAD
msg_ok "Updated Globaleaks"
msg_ok "Updated successfully"
exit
=======
msg_ok "Updated $APP LXC" msg_ok "Updated $APP LXC"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
} }
start start

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -29,16 +29,21 @@ function update_script() {
fi fi
if check_for_gh_release "go2rtc" "AlexxIT/go2rtc"; then if check_for_gh_release "go2rtc" "AlexxIT/go2rtc"; then
msg_info "Stopping service" msg_info "Stopping Service"
systemctl stop go2rtc systemctl stop go2rtc
msg_ok "Stopped service" msg_ok "Stopped Service"
fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/opt/go2rtc" "go2rtc_linux_amd64" fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/opt/go2rtc" "go2rtc_linux_amd64"
msg_info "Starting service" msg_info "Starting Service"
systemctl start go2rtc systemctl start go2rtc
<<<<<<< HEAD
msg_ok "Started Service"
msg_ok "Updated successfully"
=======
msg_ok "Started service" msg_ok "Started service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -38,8 +38,12 @@ function update_script() {
msg_info "Starting Services" msg_info "Starting Services"
systemctl start goaway systemctl start goaway
msg_ok "Started Services" msg_ok "Started Services"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -37,7 +37,11 @@ function update_script() {
msg_info "Starting Service" msg_info "Starting Service"
systemctl start gokapi systemctl start gokapi
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

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

View File

@@ -20,29 +20,36 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
<<<<<<< HEAD
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /etc/apt/sources.list.d/grafana.list ]]; then
if ! dpkg -s grafana >/dev/null 2>&1; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit 1 exit
fi fi
if [[ -f /etc/apt/sources.list.d/grafana.list ]] || [[ ! -f /etc/apt/sources.list.d/grafana.sources ]]; then msg_info "Updating Grafana"
setup_deb822_repo \
"grafana" \
"https://apt.grafana.com/gpg.key" \
"https://apt.grafana.com" \
"stable" \
"main"
fi
msg_info "Updating Grafana LXC"
$STD apt update $STD apt update
$STD apt --only-upgrade install -y grafana $STD apt -y upgrade
msg_ok "Updated successfully!" msg_ok "Updated Grafana"
msg_ok "Updated successfully"
exit exit
=======
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/apt/sources.list.d/grafana.list ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP}"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated successfully!"
exit
>>>>>>> main
} }
start start

View File

@@ -28,6 +28,21 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
<<<<<<< HEAD
msg_info "Stopping Services"
systemctl stop graylog-datanode graylog-server
msg_ok "Stopped Services"
msg_info "Updating Graylog"
$STD apt update
$STD apt upgrade -y
msg_ok "Updated Graylog"
msg_info "Starting Services"
systemctl start graylog-datanode graylog-server
msg_ok "Started Services"
msg_ok "Updated successfully"
=======
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop graylog-datanode systemctl stop graylog-datanode
@@ -60,6 +75,7 @@ function update_script() {
systemctl start graylog-server systemctl start graylog-server
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-3072}" var_ram="${var_ram:-3072}"
var_disk="${var_disk:-6}" var_disk="${var_disk:-6}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -41,8 +41,13 @@ function update_script() {
fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball" fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
<<<<<<< HEAD
msg_info "Updating Grist"
mkdir -p grist/docs
=======
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
mkdir -p /opt/grist/docs mkdir -p /opt/grist/docs
>>>>>>> main
cp -n /opt/grist_bak/.env /opt/grist/.env cp -n /opt/grist_bak/.env /opt/grist/.env
cp -r /opt/grist_bak/docs/* /opt/grist/docs/ cp -r /opt/grist_bak/docs/* /opt/grist/docs/
cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
@@ -51,13 +56,17 @@ function update_script() {
$STD yarn install $STD yarn install
$STD yarn run build:prod $STD yarn run build:prod
$STD yarn run install:python $STD yarn run install:python
msg_ok "Updated ${APP}" msg_ok "Updated Grist"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start grist systemctl start grist
msg_ok "Started Service" msg_ok "Started Service"
<<<<<<< HEAD
msg_ok "Updated Successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -32,9 +32,16 @@ function update_script() {
PHP_VERSION="8.3" PHP_MODULE="sqlite3,bz2" PHP_APACHE="yes" setup_php PHP_VERSION="8.3" PHP_MODULE="sqlite3,bz2" PHP_APACHE="yes" setup_php
fi fi
if check_for_gh_release "grocy" "grocy/grocy"; then if check_for_gh_release "grocy" "grocy/grocy"; then
<<<<<<< HEAD
msg_info "Updating Grocy"
$STD bash /var/www/html/update.sh
msg_ok "Updated Grocy"
msg_ok "Updated Successfully"
=======
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
bash /var/www/html/update.sh bash /var/www/html/update.sh
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

View File

@@ -55,7 +55,10 @@ function update_script() {
cd /opt/guardian/backend cd /opt/guardian/backend
$STD npm ci $STD npm ci
$STD npm run build $STD npm run build
<<<<<<< HEAD
=======
>>>>>>> main
cd /opt/guardian/frontend cd /opt/guardian/frontend
$STD npm ci $STD npm ci
export DEPLOYMENT_MODE=standalone export DEPLOYMENT_MODE=standalone
@@ -65,7 +68,11 @@ function update_script() {
msg_info "Starting Services" msg_info "Starting Services"
systemctl start guardian-backend guardian-frontend systemctl start guardian-backend guardian-frontend
msg_ok "Started Services" msg_ok "Started Services"
<<<<<<< HEAD
msg_ok "Updated Successfully"
=======
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
>>>>>>> main
fi fi
exit exit
} }

6
ct/headers/barcode-buddy Normal file
View File

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

6
ct/headers/fenrus Normal file
View File

@@ -0,0 +1,6 @@
______
/ ____/__ ____ _______ _______
/ /_ / _ \/ __ \/ ___/ / / / ___/
/ __/ / __/ / / / / / /_/ (__ )
/_/ \___/_/ /_/_/ \__,_/____/

View File

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

View File

@@ -1,6 +0,0 @@
__ ____ _ ______
/ |/ (_)___ (_) __/ /_ ___ __
/ /|_/ / / __ \/ / /_/ / / / / |/_/
/ / / / / / / / / __/ / /_/ /> <
/_/ /_/_/_/ /_/_/_/ /_/\__,_/_/|_|

View File

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

View File

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

View File

@@ -28,42 +28,26 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if check_for_gh_release "healthchecks" "healthchecks/healthchecks"; then if check_for_gh_release "healthchecks" "healthchecks/healthchecks"; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop healthchecks systemctl stop healthchecks
msg_ok "Stopped Services" msg_ok "Stopped Services"
msg_info "Backing up existing installation" PYTHON_VERSION="3.12" setup_uv
BACKUP="/opt/healthchecks-backup-$(date +%F-%H%M)"
cp -a /opt/healthchecks "$BACKUP"
msg_ok "Backup created at $BACKUP"
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks" fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks"
msg_info "Updating healthchecks"
cd /opt/healthchecks cd /opt/healthchecks
if [[ -d venv ]]; then mkdir -p /opt/healthchecks/static-collected/
rm -rf venv $STD uv pip install wheel gunicorn -r requirements.txt --system
fi $STD uv run -- python manage.py makemigrations
msg_info "Recreating Python venv" $STD uv run -- python manage.py migrate --noinput
$STD python3 -m venv venv $STD uv run -- python manage.py collectstatic --noinput
$STD source venv/bin/activate $STD uv run -- python manage.py compress
$STD pip install --upgrade pip wheel msg_ok "Updated healthchecks"
msg_ok "Created venv"
msg_info "Installing requirements"
$STD pip install gunicorn -r requirements.txt
msg_ok "Installed requirements"
msg_info "Running Django migrations"
$STD python manage.py migrate --noinput
$STD python manage.py collectstatic --noinput
$STD python manage.py compress
msg_ok "Completed Django migrations and static build"
msg_info "Starting Services" msg_info "Starting Services"
systemctl start healthchecks systemctl start healthchecks
systemctl reload caddy systemctl restart caddy
msg_ok "Started Services" msg_ok "Started Services"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi

View File

@@ -55,7 +55,7 @@ function update_script() {
systemctl daemon-reload systemctl daemon-reload
fi fi
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep" fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
if command -v corepack >/dev/null; then if command -v corepack >/dev/null; then
$STD corepack disable $STD corepack disable
fi fi

View File

@@ -56,7 +56,6 @@ function update_script() {
[ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/ [ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/
rm -rf "$BACKUP_DIR" rm -rf "$BACKUP_DIR"
cd /opt/kimai cd /opt/kimai
sed -i '/^admin_lte:/,/^[^[:space:]]/d' config/local.yaml
$STD composer install --no-dev --optimize-autoloader $STD composer install --no-dev --optimize-autoloader
$STD bin/console kimai:update $STD bin/console kimai:update
msg_ok "Updated Kimai" msg_ok "Updated Kimai"

View File

@@ -1,45 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: michelroegl-brunner
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://librenms.org
APP="LibreNMS"
var_tags="${var_tags:-monitoring}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [ ! -d /opt/librenms ]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating LibreNMS"
su librenms
cd /opt/librenms
./daily.sh
msg_ok "Updated LibreNMS"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -1,55 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: omernaveedxyz
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://miniflux.app/
APP="Miniflux"
var_tags="${var_tags:-media}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/systemd/system/miniflux.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping Service"
$STD miniflux -flush-sessions -config-file /etc/miniflux.conf
systemctl stop miniflux
msg_ok "Service Stopped"
fetch_and_deploy_gh_release "miniflux" "miniflux/v2" "binary" "latest"
msg_info "Updating Miniflux"
$STD miniflux -migrate -config-file /etc/miniflux.conf
msg_ok "Updated Miniflux"
msg_info "Starting Service"
$STD systemctl start miniflux
msg_ok "Started Service"
msg_ok "Updated successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

View File

@@ -1,80 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/maynayza/netvisor
APP="NetVisor"
var_tags="${var_tags:-analytics}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/netvisor ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "netvisor" "mayanayza/netvisor"; then
msg_info "Stopping services"
systemctl stop netvisor-daemon netvisor-server
msg_ok "Stopped services"
msg_info "Backing up configurations"
cp /opt/netvisor/.env /opt/netvisor.env
msg_ok "Backed up configurations"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netvisor" "mayanayza/netvisor" "tarball" "latest" "/opt/netvisor"
TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')"
RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
mv /opt/netvisor.env /opt/netvisor/.env
msg_info "Creating frontend UI"
export PUBLIC_SERVER_HOSTNAME=default
export PUBLIC_SERVER_PORT=60072
cd /opt/netvisor/ui
$STD npm ci --no-fund --no-audit
$STD npm run build
msg_ok "Created frontend UI"
msg_info "Building Netvisor-server (patience)"
cd /opt/netvisor/backend
$STD cargo build --release --bin server
mv ./target/release/server /usr/bin/netvisor-server
msg_ok "Built Netvisor-server"
msg_info "Building Netvisor-daemon (amd64 version)"
$STD cargo build --release --bin daemon
cp ./target/release/daemon /usr/bin/netvisor-daemon
msg_ok "Built Netvisor-daemon (amd64 version)"
msg_info "Starting services"
systemctl start netvisor-server netvisor-daemon
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:60072${CL}"

View File

@@ -34,17 +34,12 @@ function update_script() {
if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then
msg_info "Backing up user data and configuration" msg_info "Backing up data"
local BACKUP_DIR="/tmp/paperless_backup_$$" mkdir -p /opt/paperless_backup
mkdir -p "$BACKUP_DIR" cp -r /opt/paperless/data /opt/paperless_backup/
for dir in /opt/paperless/*/; do cp -r /opt/paperless/media /opt/paperless_backup/
dir_name=$(basename "$dir") cp -r /opt/paperless/paperless.conf /opt/paperless_backup/
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then msg_ok "Backup completed"
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
fi
done
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
msg_ok "Backup completed to $BACKUP_DIR"
PYTHON_VERSION="3.13" setup_uv PYTHON_VERSION="3.13" setup_uv
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
@@ -58,14 +53,19 @@ function update_script() {
fi fi
msg_info "Updating Paperless-ngx" msg_info "Updating Paperless-ngx"
cp -r "$BACKUP_DIR"/* /opt/paperless/ cp -r /opt/paperless_backup/* /opt/paperless/
CONSUME_DIR="$(sed -n 's/^PAPERLESS_CONSUMPTION_DIR=//p' /opt/paperless/paperless.conf)"
if [[ -z "$CONSUME_DIR" ]]; then
CONSUME_DIR="/opt/paperless/consume"
fi
mkdir -p "$CONSUME_DIR"
cd /opt/paperless cd /opt/paperless
$STD uv sync --all-extras $STD uv sync --all-extras
cd /opt/paperless/src cd /opt/paperless/src
$STD uv run -- python manage.py migrate $STD uv run -- python manage.py migrate
msg_ok "Updated Paperless-ngx" msg_ok "Updated Paperless-ngx"
rm -rf "$BACKUP_DIR" rm -rf /opt/paperless_backup
else else
msg_warn "You are about to migrate your Paperless-ngx installation to uv!" msg_warn "You are about to migrate your Paperless-ngx installation to uv!"
@@ -83,20 +83,8 @@ function update_script() {
rm -rf /opt/paperless/venv rm -rf /opt/paperless/venv
find /opt/paperless -name "__pycache__" -type d -exec rm -rf {} + find /opt/paperless -name "__pycache__" -type d -exec rm -rf {} +
msg_info "Backing up user data and configuration"
local BACKUP_DIR="/tmp/paperless_backup_$$"
mkdir -p "$BACKUP_DIR"
for dir in /opt/paperless/*/; do
dir_name=$(basename "$dir")
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
fi
done
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
msg_ok "Backup completed to $BACKUP_DIR"
declare -A PATCHES=( declare -A PATCHES=(
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer"
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO" ["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO"
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO" ["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO"
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\"" ["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\""
@@ -121,18 +109,12 @@ function update_script() {
done done
$STD systemctl daemon-reload $STD systemctl daemon-reload
msg_info "Backing up user data and configuration" msg_info "Backing up data"
BACKUP_DIR="/tmp/paperless_backup_$$" mkdir -p /opt/paperless_backup
mkdir -p "$BACKUP_DIR" cp -r /opt/paperless/data /opt/paperless_backup/
cp -r /opt/paperless/media /opt/paperless_backup/
for dir in /opt/paperless/*/; do cp -r /opt/paperless/paperless.conf /opt/paperless_backup/
dir_name=$(basename "$dir") msg_ok "Backup completed"
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
fi
done
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
msg_ok "Backup completed to $BACKUP_DIR"
PYTHON_VERSION="3.13" setup_uv PYTHON_VERSION="3.13" setup_uv
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
@@ -148,14 +130,16 @@ function update_script() {
fi fi
msg_info "Updating Paperless-ngx" msg_info "Updating Paperless-ngx"
cp -r "$BACKUP_DIR"/* /opt/paperless/ cp -r /opt/paperless_backup/* /opt/paperless/
CONSUME_DIR="$(sed -n '/^PAPERLESS_CONSUMPTION/s/[^=]=*//p' /opt/paperless/paperless.conf)"
mkdir -p "${CONSUME_DIR:-/opt/paperless/consume}"
cd /opt/paperless cd /opt/paperless
$STD uv sync --all-extras $STD uv sync --all-extras
cd /opt/paperless/src cd /opt/paperless/src
$STD uv run -- python manage.py migrate $STD uv run -- python manage.py migrate
msg_ok "Paperless-ngx migration and update completed" msg_ok "Paperless-ngx migration and update completed"
rm -rf "$BACKUP_DIR" rm -rf /opt/paperless_backup
if [[ -d /opt/paperless/backup ]]; then if [[ -d /opt/paperless/backup ]]; then
rm -rf /opt/paperless/backup rm -rf /opt/paperless/backup
msg_ok "Removed old backup directory" msg_ok "Removed old backup directory"

View File

@@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Source: https://github.com/Brandawg93/PeaNUT/ # Source: https://github.com/Brandawg93/PeaNUT/
APP="PeaNUT" APP="PeaNUT"
var_tags="${var_tags:-network;ups}" var_tags="${var_tags:-network;ups;}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-4096}"
var_disk="${var_disk:-7}" var_disk="${var_disk:-7}"
@@ -35,7 +35,7 @@ function update_script() {
systemctl stop peanut systemctl stop peanut
msg_info "Stopped Service" msg_info "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "peanut" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut" fetch_and_deploy_gh_release "peanut" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
msg_info "Updating $APP" msg_info "Updating $APP"
cd /opt/peanut cd /opt/peanut

View File

@@ -39,7 +39,7 @@ function update_script() {
mkdir -p /opt/privatebin/data mkdir -p /opt/privatebin/data
mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php
chown -R www-data:www-data /opt/privatebin chown -R www-data:www-data /opt/privatebin
chmod -R 0755 /opt/privatebin/data chmod -R 0755 /opt/privatebin/data}
systemctl reload nginx php8.2-fpm systemctl reload nginx php8.2-fpm
msg_ok "Configured ${APP}" msg_ok "Configured ${APP}"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"

View File

@@ -1,41 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: rcastley
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.splunk.com/en_us/download.html
APP="Splunk-Enterprise"
var_tags="${var_tags:-monitoring}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-8192}"
var_disk="${var_disk:-40}"
var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/splunk ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "Currently we don't provide an update function for this ${APP}."
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access the Splunk Enterprise Web interface using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"

View File

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

View File

@@ -35,15 +35,14 @@ function update_script() {
systemctl stop tududi systemctl stop tududi
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Backing up env file" msg_info "Remove and backup Files"
if [[ -f /opt/tududi/backend/.env ]]; then DB="$(sed -n '/^DB_FILE/s/[^=]*=//p' /opt/tududi/backend/.env)"
cp /opt/tududi/backend/.env /opt/tududi.env export DB_FILE="$DB"
else cp /opt/tududi/backend/.env /opt/tududi.env
cp /opt/tududi/.env /opt/tududi.env rm -rf /opt/tududi/backend/dist
fi msg_ok "Backup and removed Files"
msg_ok "Backed up env file"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tududi" "chrisvel/tududi" "tarball" "latest" "/opt/tududi" fetch_and_deploy_gh_release "tududi" "chrisvel/tududi" "tarball" "latest" "/opt/tududi"
msg_info "Updating Tududi" msg_info "Updating Tududi"
cd /opt/tududi cd /opt/tududi
@@ -51,9 +50,9 @@ function update_script() {
export NODE_ENV=production export NODE_ENV=production
$STD npm run frontend:build $STD npm run frontend:build
mv ./dist ./backend mv ./dist ./backend
mv /opt/tududi.env /opt/tududi/backend/.env mv ./public/locales ./backend/dist
DB="$(sed -n '/^DB_FILE/s/[^=]*=//p' /opt/tududi/backend/.env)" mv ./public/favicon.* ./backend/dist
export DB_FILE="$DB" mv /opt/tududi.env /opt/tududi/.env
sed -i -e 's|/tududi$|/tududi/backend|' \ sed -i -e 's|/tududi$|/tududi/backend|' \
-e 's|npm run start|bash /opt/tududi/backend/cmd/start.sh|' \ -e 's|npm run start|bash /opt/tududi/backend/cmd/start.sh|' \
/etc/systemd/system/tududi.service /etc/systemd/system/tududi.service

View File

@@ -0,0 +1,40 @@
{
"name": "Barcode Buddy",
"slug": "barcode-buddy",
"categories": [
24
],
"date_created": "2025-02-08",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://barcodebuddy-documentation.readthedocs.io/en/latest/",
"website": "https://github.com/Forceu/barcodebuddy",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/barcode-buddy.webp",
"config_path": "/opt/barcodebuddy/data/config.php",
"description": "Barcode Buddy for Grocy is an extension for Grocy, allowing to pass barcodes to Grocy. It supports barcodes for products and chores. If you own a physical barcode scanner, it can be integrated, so that all barcodes scanned are automatically pushed to BarcodeBuddy/Grocy.",
"install_methods": [
{
"type": "default",
"script": "ct/barcode-buddy.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 3,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "After install enable the option \"Use Redis cache\" on the settings page.",
"type": "info"
}
]
}

View File

@@ -19,8 +19,8 @@
"type": "default", "type": "default",
"script": "ct/changedetection.sh", "script": "ct/changedetection.sh",
"resources": { "resources": {
"cpu": 4, "cpu": 2,
"ram": 4096, "ram": 2048,
"hdd": 10, "hdd": 10,
"os": "debian", "os": "debian",
"version": "12" "version": "12"

View File

@@ -0,0 +1,35 @@
{
"name": "Fenrus",
"slug": "fenrus",
"categories": [
10
],
"date_created": "2024-05-05",
"type": "ct",
"updateable": false,
"privileged": false,
"interface_port": 5000,
"documentation": "https://github.com/revenz/Fenrus/wiki",
"website": "https://github.com/revenz/Fenrus",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/fenrus.webp",
"config_path": "",
"description": "A personal home page for quick access to all your personal apps/sites.",
"install_methods": [
{
"type": "default",
"script": "ct/fenrus.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

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

View File

@@ -1,35 +0,0 @@
{
"name": "LibreNMS",
"slug": "librenms",
"categories": [
9
],
"date_created": "2025-11-14",
"type": "ct",
"updateable": false,
"privileged": false,
"interface_port": 80,
"documentation": "https://docs.librenms.org/",
"website": "https://librenms.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/librenms.webp",
"config_path": "/opt/librenms/config.php and /opt/librenms/.env",
"description": "LibreNMS is an open-source, community-driven network monitoring system that provides automatic discovery, alerting, and performance tracking for network devices. It supports a wide range of hardware and integrates with various notification and logging platforms.",
"install_methods": [
{
"type": "default",
"script": "ct/librenms.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 4,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "admin",
"password": "admin"
},
"notes": []
}

View File

@@ -1,40 +0,0 @@
{
"name": "Miniflux",
"slug": "miniflux",
"categories": [
13
],
"date_created": "2025-11-12",
"type": "ct",
"updateable": true,
"privileged": false,
"config_path": "/etc/miniflux.conf",
"interface_port": 8080,
"documentation": "https://miniflux.app/docs/index.html",
"website": "https://miniflux.app/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/miniflux-light.webp",
"description": "Miniflux is a minimalist and opinionated feed reader.",
"install_methods": [
{
"type": "default",
"script": "ct/miniflux.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin",
"password": "randomly generated during installation process"
},
"notes": [
{
"text": "Admin password available as `ADMIN_PASSWORD` in `~/miniflux.creds`",
"type": "info"
}
]
}

View File

@@ -1,40 +0,0 @@
{
"name": "NetVisor",
"slug": "netvisor",
"categories": [
9
],
"date_created": "2025-11-13",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 60072,
"documentation": "https://github.com/mayanayza/netvisor",
"config_path": "/opt/netvisor/.env",
"website": "https://github.com/mayanayza/netvisor",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/netvisor.png",
"description": "Automatically discover and visually document network infrastructure",
"install_methods": [
{
"type": "default",
"script": "ct/netvisor.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 6,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "The integrated daemon config is located at `/root/.config/daemon/config.json`",
"type": "info"
}
]
}

View File

@@ -1,48 +0,0 @@
{
"name": "Splunk Enterprise",
"slug": "splunk-enterprise",
"categories": [
9
],
"date_created": "2025-11-12",
"type": "ct",
"updateable": false,
"privileged": false,
"interface_port": 8000,
"documentation": "https://help.splunk.com",
"config_path": "",
"website": "https://www.splunk.com/en_us/download/splunk-enterprise.html",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/splunk.webp",
"description": "Platform for searching, monitoring, and analyzing machine-generated data at scale for operational intelligence and security.",
"install_methods": [
{
"type": "default",
"script": "ct/splunk-enterprise.sh",
"resources": {
"cpu": 4,
"ram": 8192,
"hdd": 40,
"os": "Ubuntu",
"version": "24.04"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "The credentials to login can be found in splunk.creds.",
"type": "info"
},
{
"text": "Trial license allows indexing 500 MB/Day. After 60 days you can convert to a perpetual free license or purchase a Splunk Enterprise license to continue using the expanded functionality designed for enterprise-scale deployments.",
"type": "warning"
},
{
"text": "About Splunk Free License: https://help.splunk.com/en/splunk-enterprise/administer/admin-manual/10.0/configure-splunk-licenses/about-splunk-free",
"type": "info"
}
]
}

View File

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

View File

@@ -1,299 +1,4 @@
[ [
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.19.6",
"date": "2025-11-15T22:56:45Z"
},
{
"name": "seerr-team/seerr",
"version": "preview-test-fix-subscriptions",
"date": "2025-11-15T20:51:48Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.79.3-stable",
"date": "2025-11-15T20:28:05Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.528.2",
"date": "2025-11-15T20:15:39Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.5",
"date": "2025-10-06T15:25:17Z"
},
{
"name": "karakeep-app/karakeep",
"version": "android/v1.8.2-2",
"date": "2025-11-15T13:18:41Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.311",
"date": "2025-11-15T05:55:28Z"
},
{
"name": "cloudreve/cloudreve",
"version": "4.10.1",
"date": "2025-11-15T04:36:48Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-11-15T00:27:05Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{
"name": "henrygd/beszel",
"version": "v0.16.1",
"date": "2025-11-14T22:50:06Z"
},
{
"name": "home-assistant/core",
"version": "2025.11.2",
"date": "2025-11-14T22:10:50Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.5",
"date": "2025-11-12T15:24:23Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.43.3",
"date": "2025-11-14T19:16:17Z"
},
{
"name": "kimai/kimai",
"version": "2.43.0",
"date": "2025-11-14T17:20:16Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.119.2",
"date": "2025-11-14T17:06:16Z"
},
{
"name": "mealie-recipes/mealie",
"version": "v3.5.0",
"date": "2025-11-14T16:23:33Z"
},
{
"name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.5.0-rc.1",
"date": "2025-11-14T15:46:14Z"
},
{
"name": "influxdata/influxdb",
"version": "v2.7.12",
"date": "2025-05-29T17:08:26Z"
},
{
"name": "prometheus/prometheus",
"version": "v0.308.0-rc.0",
"date": "2025-11-14T15:20:35Z"
},
{
"name": "Dolibarr/dolibarr",
"version": "22.0.3",
"date": "2025-11-14T14:49:25Z"
},
{
"name": "grafana/grafana",
"version": "rrc_steady_12.4.0-19174562009.patch4",
"date": "2025-11-14T14:12:58Z"
},
{
"name": "documenso/documenso",
"version": "v2.0.12",
"date": "2025-11-14T13:48:27Z"
},
{
"name": "MariaDB/server",
"version": "mariadb-11.8.5",
"date": "2025-11-14T13:24:20Z"
},
{
"name": "emqx/emqx",
"version": "e5.9.2",
"date": "2025-11-14T12:20:13Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.16.2",
"date": "2025-11-14T12:05:36Z"
},
{
"name": "outline/outline",
"version": "v1.1.0-0",
"date": "2025-11-14T11:41:10Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.7.0",
"date": "2025-11-14T09:45:13Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.51.1",
"date": "2025-11-14T09:22:24Z"
},
{
"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",
"date": "2025-11-14T06:59:44Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.86.1",
"date": "2025-11-14T05:05:44Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.31.0",
"date": "2025-11-14T00:18:50Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v0.22.14",
"date": "2025-11-13T23:16:04Z"
},
{
"name": "ollama/ollama",
"version": "v0.12.11",
"date": "2025-11-12T20:27:51Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.7",
"date": "2025-11-13T21:28:44Z"
},
{
"name": "0xERR0R/blocky",
"version": "v0.28.1",
"date": "2025-11-13T21:25:32Z"
},
{
"name": "pommee/goaway",
"version": "v0.62.18",
"date": "2025-11-13T19:49:21Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-openapi@10.0.6",
"date": "2025-11-13T16:37:11Z"
},
{
"name": "traefik/traefik",
"version": "v3.6.1",
"date": "2025-11-13T14:28:54Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.33.0",
"date": "2025-11-13T14:09:14Z"
},
{
"name": "PrivateBin/PrivateBin",
"version": "1.7.9",
"date": "2025-11-13T10:26:37Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-v1.25.0.improve-s3-multipart-upload-1",
"date": "2025-11-13T09:25:48Z"
},
{
"name": "docker/compose",
"version": "v2.40.3",
"date": "2025-10-30T09:35:37Z"
},
{
"name": "redis/redis",
"version": "8.4-int2",
"date": "2025-11-13T08:17:31Z"
},
{
"name": "evcc-io/evcc",
"version": "0.209.8",
"date": "2025-11-13T07:20:49Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.8",
"date": "2025-11-13T04:42:27Z"
},
{
"name": "esphome/esphome",
"version": "2025.10.5",
"date": "2025-11-12T01:09:44Z"
},
{
"name": "NginxProxyManager/nginx-proxy-manager",
"version": "v2.13.4",
"date": "2025-11-12T21:27:04Z"
},
{
"name": "wazuh/wazuh",
"version": "v4.14.1",
"date": "2025-11-12T18:11:43Z"
},
{
"name": "pymedusa/Medusa",
"version": "v1.0.25",
"date": "2025-11-12T16:57:54Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.7.0",
"date": "2025-11-12T14:09:36Z"
},
{
"name": "cockpit-project/cockpit",
"version": "351",
"date": "2025-11-12T11:28:06Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.4.4",
"date": "2025-11-12T10:43:23Z"
},
{
"name": "SigNoz/signoz",
"version": "v0.101.0",
"date": "2025-11-12T07:13:22Z"
},
{
"name": "webmin/webmin",
"version": "2.600",
"date": "2025-11-12T05:01:55Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{ {
"name": "moghtech/komodo", "name": "moghtech/komodo",
"version": "v1.19.5", "version": "v1.19.5",
@@ -304,6 +9,16 @@
"version": "v5.17.0", "version": "v5.17.0",
"date": "2025-11-11T20:15:54Z" "date": "2025-11-11T20:15:54Z"
}, },
{
"name": "BerriAI/litellm",
"version": "v1.79.dev.1",
"date": "2025-11-11T20:13:32Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.29.0",
"date": "2025-11-11T19:45:56Z"
},
{ {
"name": "juanfont/headscale", "name": "juanfont/headscale",
"version": "v0.27.1", "version": "v0.27.1",
@@ -314,6 +29,11 @@
"version": "v5.9.2", "version": "v5.9.2",
"date": "2025-11-11T19:29:32Z" "date": "2025-11-11T19:29:32Z"
}, },
{
"name": "runtipi/runtipi",
"version": "v4.6.4",
"date": "2025-11-11T17:47:15Z"
},
{ {
"name": "gethomepage/homepage", "name": "gethomepage/homepage",
"version": "v1.7.0", "version": "v1.7.0",
@@ -324,21 +44,46 @@
"version": "mattermost-redux@11.1.0", "version": "mattermost-redux@11.1.0",
"date": "2025-11-11T17:15:00Z" "date": "2025-11-11T17:15:00Z"
}, },
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.536",
"date": "2025-11-11T17:03:28Z"
},
{ {
"name": "msgbyte/tianji", "name": "msgbyte/tianji",
"version": "v1.30.10", "version": "v1.30.10",
"date": "2025-11-11T16:26:27Z" "date": "2025-11-11T16:26:27Z"
}, },
{
"name": "kimai/kimai",
"version": "2.41.0",
"date": "2025-11-11T15:17:21Z"
},
{ {
"name": "netbox-community/netbox", "name": "netbox-community/netbox",
"version": "v4.4.6", "version": "v4.4.6",
"date": "2025-11-11T14:59:23Z" "date": "2025-11-11T14:59:23Z"
}, },
{
"name": "seerr-team/seerr",
"version": "preview-test-fix-subscriptions",
"date": "2025-11-11T14:38:10Z"
},
{ {
"name": "CrazyWolf13/web-check", "name": "CrazyWolf13/web-check",
"version": "1.1.0", "version": "1.1.0",
"date": "2025-11-11T14:30:28Z" "date": "2025-11-11T14:30:28Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@16.0.13",
"date": "2025-11-11T14:04:06Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.16.1",
"date": "2025-11-11T13:14:28Z"
},
{ {
"name": "BookStackApp/BookStack", "name": "BookStackApp/BookStack",
"version": "v25.11.1", "version": "v25.11.1",
@@ -349,11 +94,41 @@
"version": "v1.142.0", "version": "v1.142.0",
"date": "2025-11-11T10:33:50Z" "date": "2025-11-11T10:33:50Z"
}, },
{
"name": "n8n-io/n8n",
"version": "n8n@1.119.1",
"date": "2025-11-10T14:21:10Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.6.5",
"date": "2025-11-11T09:55:47Z"
},
{
"name": "emqx/emqx",
"version": "e6.0.1",
"date": "2025-11-11T09:46:06Z"
},
{
"name": "NginxProxyManager/nginx-proxy-manager",
"version": "v2.13.3",
"date": "2025-11-11T07:36:54Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.275",
"date": "2025-11-11T05:56:40Z"
},
{ {
"name": "FlareSolverr/FlareSolverr", "name": "FlareSolverr/FlareSolverr",
"version": "v3.4.5", "version": "v3.4.5",
"date": "2025-11-11T01:58:31Z" "date": "2025-11-11T01:58:31Z"
}, },
{
"name": "chrisbenincasa/tunarr",
"version": "v0.23.0-alpha.22",
"date": "2025-11-11T01:36:48Z"
},
{ {
"name": "MediaBrowser/Emby.Releases", "name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.90", "version": "4.9.1.90",
@@ -364,6 +139,16 @@
"version": "2025.11.11", "version": "2025.11.11",
"date": "2025-11-11T00:35:03Z" "date": "2025-11-11T00:35:03Z"
}, },
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-11-11T00:27:07Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{ {
"name": "qbittorrent/qBittorrent", "name": "qbittorrent/qBittorrent",
"version": "release-5.1.3", "version": "release-5.1.3",
@@ -374,21 +159,61 @@
"version": "REL_13_23", "version": "REL_13_23",
"date": "2025-11-10T21:59:18Z" "date": "2025-11-10T21:59:18Z"
}, },
{
"name": "chrisvel/tududi",
"version": "v0.86",
"date": "2025-11-10T20:54:25Z"
},
{
"name": "pommee/goaway",
"version": "v0.62.17",
"date": "2025-11-10T19:45:49Z"
},
{ {
"name": "autobrr/autobrr", "name": "autobrr/autobrr",
"version": "v1.69.0", "version": "v1.69.0",
"date": "2025-11-10T17:22:00Z" "date": "2025-11-10T17:22:00Z"
}, },
{
"name": "meilisearch/meilisearch",
"version": "latest",
"date": "2025-11-10T17:01:21Z"
},
{ {
"name": "gtsteffaniak/filebrowser", "name": "gtsteffaniak/filebrowser",
"version": "v1.0.1-stable", "version": "v1.0.1-stable",
"date": "2025-11-10T16:51:44Z" "date": "2025-11-10T16:51:44Z"
}, },
{
"name": "keycloak/keycloak",
"version": "26.4.4",
"date": "2025-11-07T08:55:27Z"
},
{ {
"name": "grokability/snipe-it", "name": "grokability/snipe-it",
"version": "v8.3.5", "version": "v8.3.5",
"date": "2025-11-10T14:12:12Z" "date": "2025-11-10T14:12:12Z"
}, },
{
"name": "SigNoz/signoz",
"version": "v0.101.0-rc.1",
"date": "2025-11-10T13:08:55Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.42",
"date": "2025-11-10T12:32:49Z"
},
{
"name": "documenso/documenso",
"version": "v2.0.6",
"date": "2025-11-10T08:08:43Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.6",
"date": "2025-11-08T22:45:35Z"
},
{ {
"name": "navidrome/navidrome", "name": "navidrome/navidrome",
"version": "v0.58.5", "version": "v0.58.5",
@@ -419,6 +244,11 @@
"version": "v14.0.1", "version": "v14.0.1",
"date": "2025-11-09T13:03:18Z" "date": "2025-11-09T13:03:18Z"
}, },
{
"name": "karakeep-app/karakeep",
"version": "extension/v1.2.7",
"date": "2025-11-09T12:21:54Z"
},
{ {
"name": "authelia/authelia", "name": "authelia/authelia",
"version": "v4.39.14", "version": "v4.39.14",
@@ -464,6 +294,21 @@
"version": "v7.13.0", "version": "v7.13.0",
"date": "2025-11-08T13:36:25Z" "date": "2025-11-08T13:36:25Z"
}, },
{
"name": "pocketbase/pocketbase",
"version": "v0.32.0",
"date": "2025-11-08T09:36:27Z"
},
{
"name": "home-assistant/core",
"version": "2025.11.1",
"date": "2025-11-07T21:32:26Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.43.2",
"date": "2025-11-07T19:16:41Z"
},
{ {
"name": "semaphoreui/semaphore", "name": "semaphoreui/semaphore",
"version": "v2.16.45", "version": "v2.16.45",
@@ -474,11 +319,31 @@
"version": "2025.11.1", "version": "2025.11.1",
"date": "2025-11-07T17:05:45Z" "date": "2025-11-07T17:05:45Z"
}, },
{
"name": "traefik/traefik",
"version": "v3.6.0",
"date": "2025-11-07T15:34:35Z"
},
{ {
"name": "YunoHost/yunohost", "name": "YunoHost/yunohost",
"version": "debian/12.1.35", "version": "debian/12.1.35",
"date": "2025-11-07T14:35:24Z" "date": "2025-11-07T14:35:24Z"
}, },
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.4.3",
"date": "2025-11-07T11:07:17Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w46-4.14.1",
"date": "2025-11-07T08:46:03Z"
},
{ {
"name": "umami-software/umami", "name": "umami-software/umami",
"version": "v3.0.0", "version": "v3.0.0",
@@ -499,6 +364,16 @@
"version": "v0.6.36", "version": "v0.6.36",
"date": "2025-11-06T21:45:33Z" "date": "2025-11-06T21:45:33Z"
}, },
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.19.5",
"date": "2025-11-06T20:20:13Z"
},
{
"name": "MariaDB/server",
"version": "mariadb-11.8.4",
"date": "2025-11-06T17:24:30Z"
},
{ {
"name": "HabitRPG/habitica", "name": "HabitRPG/habitica",
"version": "v5.41.6", "version": "v5.41.6",
@@ -534,6 +409,11 @@
"version": "v0.9.1", "version": "v0.9.1",
"date": "2025-11-06T02:26:53Z" "date": "2025-11-06T02:26:53Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.12.10",
"date": "2025-11-05T21:41:21Z"
},
{ {
"name": "neo4j/neo4j", "name": "neo4j/neo4j",
"version": "5.26.16", "version": "5.26.16",
@@ -544,6 +424,11 @@
"version": "v2025-11-05", "version": "v2025-11-05",
"date": "2025-11-05T18:08:26Z" "date": "2025-11-05T18:08:26Z"
}, },
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.5",
"date": "2025-10-06T15:25:17Z"
},
{ {
"name": "javedh-dev/tracktor", "name": "javedh-dev/tracktor",
"version": "0.5.1", "version": "0.5.1",
@@ -579,6 +464,11 @@
"version": "v4.4.1", "version": "v4.4.1",
"date": "2025-11-05T09:08:23Z" "date": "2025-11-05T09:08:23Z"
}, },
{
"name": "evcc-io/evcc",
"version": "0.209.7",
"date": "2025-11-05T08:32:08Z"
},
{ {
"name": "slskd/slskd", "name": "slskd/slskd",
"version": "0.24.0", "version": "0.24.0",
@@ -589,6 +479,11 @@
"version": "v4.0.16.2944", "version": "v4.0.16.2944",
"date": "2025-11-05T01:56:48Z" "date": "2025-11-05T01:56:48Z"
}, },
{
"name": "henrygd/beszel",
"version": "v0.15.4",
"date": "2025-11-04T22:34:12Z"
},
{ {
"name": "go-gitea/gitea", "name": "go-gitea/gitea",
"version": "v1.25.1", "version": "v1.25.1",
@@ -629,16 +524,36 @@
"version": "v2.0.11", "version": "v2.0.11",
"date": "2025-11-04T08:51:05Z" "date": "2025-11-04T08:51:05Z"
}, },
{
"name": "redis/redis",
"version": "8.4-rc1-int2",
"date": "2025-11-03T09:00:38Z"
},
{ {
"name": "clusterzx/paperless-ai", "name": "clusterzx/paperless-ai",
"version": "v3.0.9", "version": "v3.0.9",
"date": "2025-11-04T07:28:45Z" "date": "2025-11-04T07:28:45Z"
}, },
{
"name": "esphome/esphome",
"version": "2025.10.4",
"date": "2025-11-04T03:04:13Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{ {
"name": "actualbudget/actual", "name": "actualbudget/actual",
"version": "v25.11.0", "version": "v25.11.0",
"date": "2025-11-04T00:32:21Z" "date": "2025-11-04T00:32:21Z"
}, },
{
"name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.5.0-rc.0",
"date": "2025-11-03T19:37:03Z"
},
{ {
"name": "goauthentik/authentik", "name": "goauthentik/authentik",
"version": "version/2025.10.1", "version": "version/2025.10.1",
@@ -689,11 +604,21 @@
"version": "v1.90.6", "version": "v1.90.6",
"date": "2025-10-31T22:24:04Z" "date": "2025-10-31T22:24:04Z"
}, },
{
"name": "mealie-recipes/mealie",
"version": "v3.4.0",
"date": "2025-10-31T18:50:18Z"
},
{ {
"name": "zabbix/zabbix", "name": "zabbix/zabbix",
"version": "7.4.5", "version": "7.4.5",
"date": "2025-10-31T14:39:13Z" "date": "2025-10-31T14:39:13Z"
}, },
{
"name": "gristlabs/grist-core",
"version": "v1.7.5",
"date": "2025-10-31T13:42:36Z"
},
{ {
"name": "plankanban/planka", "name": "plankanban/planka",
"version": "planka-1.1.1", "version": "planka-1.1.1",
@@ -704,6 +629,11 @@
"version": "v1.10.1", "version": "v1.10.1",
"date": "2025-10-31T08:25:57Z" "date": "2025-10-31T08:25:57Z"
}, },
{
"name": "pymedusa/Medusa",
"version": "v1.0.24",
"date": "2025-10-30T19:04:42Z"
},
{ {
"name": "mongodb/mongo", "name": "mongodb/mongo",
"version": "r7.0.26", "version": "r7.0.26",
@@ -729,6 +659,21 @@
"version": "v5.4", "version": "v5.4",
"date": "2025-10-30T14:25:23Z" "date": "2025-10-30T14:25:23Z"
}, },
{
"name": "docker/compose",
"version": "v2.40.3",
"date": "2025-10-30T09:35:37Z"
},
{
"name": "prometheus/prometheus",
"version": "v0.307.3",
"date": "2025-10-30T08:13:40Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{ {
"name": "ipfs/kubo", "name": "ipfs/kubo",
"version": "v0.38.2", "version": "v0.38.2",
@@ -739,16 +684,36 @@
"version": "v1.11.1", "version": "v1.11.1",
"date": "2025-10-29T22:09:26Z" "date": "2025-10-29T22:09:26Z"
}, },
{
"name": "influxdata/influxdb",
"version": "v2.7.12",
"date": "2025-05-29T17:08:26Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.6.1",
"date": "2025-10-29T16:51:06Z"
},
{ {
"name": "laurent22/joplin", "name": "laurent22/joplin",
"version": "server-v3.4.4", "version": "server-v3.4.4",
"date": "2025-09-25T13:19:26Z" "date": "2025-09-25T13:19:26Z"
}, },
{
"name": "cockpit-project/cockpit",
"version": "350",
"date": "2025-10-29T09:51:00Z"
},
{ {
"name": "apache/cassandra", "name": "apache/cassandra",
"version": "cassandra-5.0.6", "version": "cassandra-5.0.6",
"date": "2025-10-29T07:40:47Z" "date": "2025-10-29T07:40:47Z"
}, },
{
"name": "outline/outline",
"version": "v1.0.1",
"date": "2025-10-29T03:25:13Z"
},
{ {
"name": "booklore-app/booklore", "name": "booklore-app/booklore",
"version": "v1.10.0", "version": "v1.10.0",
@@ -759,6 +724,11 @@
"version": "v6.2.2", "version": "v6.2.2",
"date": "2025-10-28T17:07:47Z" "date": "2025-10-28T17:07:47Z"
}, },
{
"name": "PrivateBin/PrivateBin",
"version": "2.0.2",
"date": "2025-10-28T15:51:35Z"
},
{ {
"name": "librespeed/speedtest-rust", "name": "librespeed/speedtest-rust",
"version": "v1.4.0", "version": "v1.4.0",
@@ -799,6 +769,11 @@
"version": "v2.1.5.5216", "version": "v2.1.5.5216",
"date": "2025-10-25T19:41:59Z" "date": "2025-10-25T19:41:59Z"
}, },
{
"name": "verdaccio/verdaccio",
"version": "v6.2.1",
"date": "2025-10-24T15:40:49Z"
},
{ {
"name": "usememos/memos", "name": "usememos/memos",
"version": "v0.25.2", "version": "v0.25.2",
@@ -844,6 +819,11 @@
"version": "v3.2.5-beta", "version": "v3.2.5-beta",
"date": "2025-10-21T16:49:14Z" "date": "2025-10-21T16:49:14Z"
}, },
{
"name": "grafana/grafana",
"version": "v12.2.1",
"date": "2025-10-21T14:40:19Z"
},
{ {
"name": "AlexxIT/go2rtc", "name": "AlexxIT/go2rtc",
"version": "v1.9.11", "version": "v1.9.11",
@@ -919,6 +899,11 @@
"version": "RELEASE.2025-10-15T17-29-55Z", "version": "RELEASE.2025-10-15T17-29-55Z",
"date": "2025-10-16T19:33:51Z" "date": "2025-10-16T19:33:51Z"
}, },
{
"name": "cloudreve/cloudreve",
"version": "4.9.2",
"date": "2025-10-16T03:24:44Z"
},
{ {
"name": "linkwarden/linkwarden", "name": "linkwarden/linkwarden",
"version": "v2.13.1", "version": "v2.13.1",
@@ -964,6 +949,11 @@
"version": "v0.10.4", "version": "v0.10.4",
"date": "2025-10-11T19:53:39Z" "date": "2025-10-11T19:53:39Z"
}, },
{
"name": "0xERR0R/blocky",
"version": "v0.27.0",
"date": "2025-10-10T20:11:48Z"
},
{ {
"name": "projectsend/projectsend", "name": "projectsend/projectsend",
"version": "r1945", "version": "r1945",
@@ -1004,6 +994,11 @@
"version": "v1.5.9", "version": "v1.5.9",
"date": "2025-10-06T08:34:01Z" "date": "2025-10-06T08:34:01Z"
}, },
{
"name": "webmin/webmin",
"version": "2.520",
"date": "2025-10-05T00:51:34Z"
},
{ {
"name": "WordPress/WordPress", "name": "WordPress/WordPress",
"version": "4.7.31", "version": "4.7.31",
@@ -1039,6 +1034,11 @@
"version": "1.27.1", "version": "1.27.1",
"date": "2025-09-27T13:07:26Z" "date": "2025-09-27T13:07:26Z"
}, },
{
"name": "Dolibarr/dolibarr",
"version": "22.0.2",
"date": "2025-09-27T01:43:20Z"
},
{ {
"name": "Threadfin/Threadfin", "name": "Threadfin/Threadfin",
"version": "1.2.39", "version": "1.2.39",

View File

@@ -53,7 +53,7 @@ sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
-e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env -e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env
export COMPOSER_ALLOW_SUPERUSER=1 export COMPOSER_ALLOW_SUPERUSER=1
$STD composer update --no-plugins --no-scripts $STD composer update --no-plugins --no-scripts
$STD composer install --no-dev --prefer-dist --no-plugins --no-scripts $STD composer install --no-dev --prefer-source --no-plugins --no-scripts
$STD php artisan key:generate --force $STD php artisan key:generate --force
$STD php artisan migrate:refresh $STD php artisan migrate:refresh
$STD php artisan passport:install -q -n $STD php artisan passport:install -q -n

View File

@@ -0,0 +1,73 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Forceu/barcodebuddy
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
redis \
sqlite3
msg_ok "Installed Dependencies"
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="redis, sqlite3" setup_php
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
msg_info "Configuring barcodebuddy"
chown -R www-data:www-data /opt/barcodebuddy/data
msg_ok "Configured barcodebuddy"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/barcodebuddy.service
[Unit]
Description=Run websocket server for barcodebuddy screen feature
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/php /opt/barcodebuddy/wsserver.php
StandardOutput=null
Restart=on-failure
User=www-data
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/apache2/sites-available/barcodebuddy.conf
<VirtualHost *:80>
ServerName barcodebuddy
DocumentRoot /opt/barcodebuddy
<Directory /opt/barcodebuddy>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/barcodebuddy_error.log
CustomLog /var/log/apache2/barcodebuddy_access.log combined
</VirtualHost>
EOF
systemctl enable -q --now barcodebuddy
$STD a2ensite barcodebuddy
$STD a2enmod rewrite
$STD a2dissite 000-default.conf
$STD systemctl reload apache2
msg_ok "Created Services"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -28,24 +28,7 @@ msg_ok "Installed Dependencies"
setup_uv setup_uv
NODE_VERSION="24" setup_nodejs NODE_VERSION="24" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PG_DB_NAME="dispatcharr_db" PG_DB_USER="dispatcharr_usr" setup_postgresql_db
msg_info "Creating PostgreSQL Database"
DB_NAME=dispatcharr_db
DB_USER=dispatcharr_usr
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 ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
{
echo "Dispatcharr Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
echo ""
} >>~/dispatcharr.creds
msg_ok "Created PostgreSQL Database"
fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr" fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr"
@@ -62,18 +45,18 @@ install -d -m 755 \
/data/uploads/{m3us,epgs} \ /data/uploads/{m3us,epgs} \
/data/{m3us,epgs} /data/{m3us,epgs}
chown -R root:root /data chown -R root:root /data
export DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}" export DATABASE_URL="postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}"
export POSTGRES_DB=$DB_NAME export POSTGRES_DB=$PG_DB_NAME
export POSTGRES_USER=$DB_USER export POSTGRES_USER=$PG_DB_USER
export POSTGRES_PASSWORD=$DB_PASS export POSTGRES_PASSWORD=$PG_DB_PASS
export POSTGRES_HOST=localhost export POSTGRES_HOST=localhost
$STD uv run python manage.py migrate --noinput $STD uv run python manage.py migrate --noinput
$STD uv run python manage.py collectstatic --noinput $STD uv run python manage.py collectstatic --noinput
cat <<EOF >/opt/dispatcharr/.env cat <<EOF >/opt/dispatcharr/.env
DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME} DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
POSTGRES_DB=$DB_NAME POSTGRES_DB=$PG_DB_NAME
POSTGRES_USER=$DB_USER POSTGRES_USER=$PG_DB_USER
POSTGRES_PASSWORD=$DB_PASS POSTGRES_PASSWORD=$PG_DB_PASS
POSTGRES_HOST=localhost POSTGRES_HOST=localhost
CELERY_BROKER_URL=redis://localhost:6379/0 CELERY_BROKER_URL=redis://localhost:6379/0
EOF EOF
@@ -260,9 +243,4 @@ msg_ok "Created Services"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -14,40 +14,21 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y redis make
redis \
jq \
make
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
HOST_IP=$(hostname -I | awk '{print $1}') HOST_IP=$(hostname -I | awk '{print $1}')
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PG_DB_NAME="docmost_db" PG_DB_USER="docmost_user" setup_postgresql_db
fetch_and_deploy_gh_release "docmost" "docmost/docmost" fetch_and_deploy_gh_release "docmost" "docmost/docmost"
msg_info "Setting up PostgreSQL"
DB_NAME="docmost_db"
DB_USER="docmost_user"
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 ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
{
echo "Docmost-Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
} >>~/docmost.creds
msg_ok "Set up PostgreSQL"
msg_info "Configuring Docmost (Patience)" msg_info "Configuring Docmost (Patience)"
cd /opt/docmost cd /opt/docmost
mv .env.example .env mv .env.example .env
mkdir data mkdir data
sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)|" \ sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)|" \
-e "s|DATABASE_URL=.*|DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME|" \ -e "s|DATABASE_URL=.*|DATABASE_URL=postgres://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME|" \
-e "s|FILE_UPLOAD_SIZE_LIMIT=.*|FILE_UPLOAD_SIZE_LIMIT=50mb|" \ -e "s|FILE_UPLOAD_SIZE_LIMIT=.*|FILE_UPLOAD_SIZE_LIMIT=50mb|" \
-e "s|DRAWIO_URL=.*|DRAWIO_URL=https://embed.diagrams.net|" \ -e "s|DRAWIO_URL=.*|DRAWIO_URL=https://embed.diagrams.net|" \
-e "s|DISABLE_TELEMETRY=.*|DISABLE_TELEMETRY=true|" \ -e "s|DISABLE_TELEMETRY=.*|DISABLE_TELEMETRY=true|" \
@@ -78,9 +59,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -43,7 +43,6 @@ sed -i -e "s|^APP_ENV=.*|APP_ENV=production|" \
-e "s|^DB_USERNAME=.*|DB_USERNAME=$MARIADB_DB_USER|" \ -e "s|^DB_USERNAME=.*|DB_USERNAME=$MARIADB_DB_USER|" \
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=$MARIADB_DB_PASS|" \ -e "s|^DB_PASSWORD=.*|DB_PASSWORD=$MARIADB_DB_PASS|" \
-e "s|^DB_DATABASE=.*|DB_DATABASE=$MARIADB_DB_NAME|" .env -e "s|^DB_DATABASE=.*|DB_DATABASE=$MARIADB_DB_NAME|" .env
echo "0 0 * * * root /usr/bin/php /opt/domain-monitor/cron/check_domains.php" >>/etc/crontab
cat <<EOF >/etc/apache2/sites-enabled/000-default.conf cat <<EOF >/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80> <VirtualHost *:80>

View File

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

View File

@@ -14,13 +14,12 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get update $STD apt install -y \
$STD apt-get install -y \
ssh \ ssh \
software-properties-common software-properties-common
$STD add-apt-repository -y ppa:dotnet/backports $STD add-apt-repository -y ppa:dotnet/backports
$STD apt-get install -y \ $STD apt install -y \
dotnet-sdk-9.0 \ dotnet-sdk-9.0 \
vsftpd \ vsftpd \
nginx nginx
@@ -105,8 +104,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,7 +14,7 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt install -y \
libice6 \ libice6 \
libsm6 \ libsm6 \
libfontconfig1 libfontconfig1
@@ -49,8 +49,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -13,16 +13,7 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Setting Up Hardware Acceleration" setup_hwaccel
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
if [[ "$CTTYPE" == "0" ]]; then
chgrp video /dev/dri
chmod 755 /dev/dri
chmod 660 /dev/dri/*
$STD adduser $(id -u -n) video
$STD adduser $(id -u -n) render
fi
msg_ok "Set Up Hardware Acceleration"
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary" fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
@@ -36,8 +27,4 @@ msg_ok "Configured Emby"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,7 +14,7 @@ network_check
update_os update_os
msg_info "Installing dependencies" msg_info "Installing dependencies"
$STD apt-get install -y ca-certificates $STD apt install -y ca-certificates
msg_ok "Installed dependencies" msg_ok "Installed dependencies"
msg_info "Fetching latest EMQX Enterprise version" msg_info "Fetching latest EMQX Enterprise version"
@@ -33,19 +33,12 @@ $STD curl -fsSL -o "$DEB_FILE" "$DOWNLOAD_URL"
msg_ok "Downloaded EMQX" msg_ok "Downloaded EMQX"
msg_info "Installing EMQX" msg_info "Installing EMQX"
$STD apt-get install -y "$DEB_FILE" $STD apt install -y "$DEB_FILE"
echo "$LATEST_VERSION" >~/.emqx echo "$LATEST_VERSION" >~/.emqx
msg_ok "Installed EMQX" rm -f "$DEB_FILE"
msg_info "Starting EMQX service"
$STD systemctl enable -q --now emqx $STD systemctl enable -q --now emqx
msg_ok "Enabled EMQX service" msg_ok "Installed EMQX"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
rm -f "$DEB_FILE"
$STD apt-get autoremove
$STD apt-get autoclean
msg_ok "Cleaned"

View File

@@ -13,38 +13,7 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Setting Up Hardware Acceleration" setup_hwaccel
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
if [[ "$CTTYPE" == "0" ]]; then
chgrp video /dev/dri
chmod 755 /dev/dri
chmod 660 /dev/dri/*
$STD adduser $(id -u -n) video
$STD adduser $(id -u -n) render
fi
msg_ok "Set Up Hardware Acceleration"
read -r -p "${TAB3}Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 12 only)? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Intel Hardware Acceleration (non-free)"
cat <<EOF >/etc/apt/sources.list.d/non-free.list
deb http://deb.debian.org/debian bookworm non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm non-free non-free-firmware
deb http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
deb-src http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
EOF
$STD apt-get update
$STD apt-get -y install {intel-media-va-driver-non-free,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
else
msg_info "Installing Intel Hardware Acceleration"
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
fi
msg_ok "Installed and Set Up Intel Hardware Acceleration"
fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz" fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz" fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
@@ -78,8 +47,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,7 +14,7 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y git $STD apt install -y git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PYTHON_VERSION="3.12" setup_uv PYTHON_VERSION="3.12" setup_uv
@@ -55,8 +55,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,10 +14,10 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y xdg-utils $STD apt install -y xdg-utils
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw" fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
msg_info "Configuring Excalidraw" msg_info "Configuring Excalidraw"
@@ -45,8 +45,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

62
install/fenrus-install.sh Normal file
View File

@@ -0,0 +1,62 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Co-Author: Scorpoon
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/revenz/Fenrus
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y git
msg_ok "Installed Dependencies"
msg_info "Installing ASP.NET Core 7 SDK"
var_os=$(grep "^ID=" /etc/os-release | cut -d'=' -f2 | tr -d '"')
var_version=$(grep "^VERSION_ID=" /etc/os-release | cut -d'=' -f2 | tr -d '"')
if [ "${var_os}" = "debian" ]; then
curl -fsSL "https://packages.microsoft.com/config/debian/$var_version/packages-microsoft-prod.deb" -o "packages-microsoft-prod.deb"
$STD dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
fi
$STD apt-get update
$STD apt-get install -y dotnet-sdk-7.0
msg_ok "Installed ASP.NET Core 7 SDK"
msg_info "Installing ${APPLICATION}"
git clone -q https://github.com/revenz/Fenrus.git /opt/${APPLICATION}
cd /opt/${APPLICATION}
$STD dotnet publish -c Release -o "/opt/${APPLICATION}/" Fenrus.csproj
msg_ok "Installed ${APPLICATION}"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/"${APPLICATION}".service
[Unit]
Description=${APPLICATION}
[Service]
WorkingDirectory=/opt/${APPLICATION}
ExecStart=/usr/bin/dotnet Fenrus.dll --urls=http://*:5000
SyslogIdentifier=${APPLICATION}
User=root
[Install]
WantedBy=multi-user.target
EOF
$STD systemctl enable -q --now ${APPLICATION}
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,23 +14,20 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y avahi-daemon $STD apt install -y avahi-daemon
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setting up Fhem Repository" setup_deb822_repo \
curl -fsSL https://debian.fhem.de/archive.key | gpg --dearmor >/etc/apt/trusted.gpg.d/debianfhemde-archive-keyring.gpg "debianfhemde" \
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /' >/etc/apt/sources.list.d/fhem.list "https://debian.fhem.de/archive.key" \
msg_ok "Set up Fhem Repository" "https://debian.fhem.de/nightly/" \
"/" \
""
msg_info "Installing Fhem" msg_info "Installing Fhem"
$STD apt-get update $STD apt install -y fhem
$STD apt-get install -y fhem msg_ok "Installed Fhem"
msg_info "Installed Fhem"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -15,33 +15,12 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt install -y \
ffmpeg \ ffmpeg \
jq \
imagemagick imagemagick
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
read -r -p "${TAB3}Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 12 only)? <y/N> " prompt setup_hwaccel
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Intel Hardware Acceleration (non-free)"
cat <<EOF >/etc/apt/sources.list.d/non-free.list
deb http://deb.debian.org/debian bookworm non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm non-free non-free-firmware
deb http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
deb-src http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
EOF
$STD apt-get update
$STD apt-get -y install {intel-media-va-driver-non-free,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
else
msg_info "Installing Intel Hardware Acceleration"
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
fi
msg_ok "Installed and Set Up Intel Hardware Acceleration"
msg_info "Installing ASP.NET Core Runtime" msg_info "Installing ASP.NET Core Runtime"
curl -fsSL https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -o packages-microsoft-prod.deb curl -fsSL https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -o packages-microsoft-prod.deb
@@ -51,7 +30,7 @@ $STD apt-get update
$STD apt-get install -y aspnetcore-runtime-8.0 $STD apt-get install -y aspnetcore-runtime-8.0
msg_ok "Installed ASP.NET Core Runtime" msg_ok "Installed ASP.NET Core Runtime"
msg_info "Setup ${APPLICATION}" msg_info "Setup FileFlows"
$STD ln -svf /usr/bin/ffmpeg /usr/local/bin/ffmpeg $STD ln -svf /usr/bin/ffmpeg /usr/local/bin/ffmpeg
$STD ln -svf /usr/bin/ffprobe /usr/local/bin/ffprobe $STD ln -svf /usr/bin/ffprobe /usr/local/bin/ffprobe
temp_file=$(mktemp) temp_file=$(mktemp)
@@ -59,13 +38,9 @@ curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
$STD unzip -d /opt/fileflows "$temp_file" $STD unzip -d /opt/fileflows "$temp_file"
(cd /opt/fileflows/Server && dotnet FileFlows.Server.dll --systemd install --root true) (cd /opt/fileflows/Server && dotnet FileFlows.Server.dll --systemd install --root true)
systemctl enable -q --now fileflows systemctl enable -q --now fileflows
msg_ok "Setup ${APPLICATION}" rm -f "$temp_file"
msg_ok "Setup FileFlows"
motd_ssh motd_ssh
customize 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

@@ -16,32 +16,18 @@ update_os
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="mysql" setup_php PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="mysql" setup_php
setup_composer setup_composer
setup_mariadb setup_mariadb
LOCAL_IP=$(hostname -I | awk '{print $1}') MARIADB_DB_NAME="firefly" MARIADB_DB_USER="firefly" setup_mariadb_db
msg_info "Setting up database"
DB_NAME=firefly
DB_USER=firefly
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{
echo "Firefly-Credentials"
echo "Firefly Database User: $DB_USER"
echo "Firefly Database Password: $DB_PASS"
echo "Firefly Database Name: $DB_NAME"
} >>~/firefly.creds
msg_ok "Set up database"
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip" fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip"
msg_info "Configuring Firefly III (Patience)" msg_info "Configuring Firefly III (Patience)"
LOCAL_IP=$(hostname -I | awk '{print $1}')
chown -R www-data:www-data /opt/firefly chown -R www-data:www-data /opt/firefly
chmod -R 775 /opt/firefly/storage chmod -R 775 /opt/firefly/storage
cd /opt/firefly cd /opt/firefly
cp .env.example .env cp .env.example .env
sed -i "s/DB_HOST=.*/DB_HOST=localhost/" /opt/firefly/.env sed -i "s/DB_HOST=.*/DB_HOST=localhost/" /opt/firefly/.env
sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$DB_PASS/" /opt/firefly/.env sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$MARIADB_DB_PASS/" /opt/firefly/.env
$STD composer install --no-dev --no-plugins --no-interaction $STD composer install --no-dev --no-plugins --no-interaction
$STD php artisan firefly:upgrade-database $STD php artisan firefly:upgrade-database
$STD php artisan firefly:correct-database $STD php artisan firefly:correct-database
@@ -55,6 +41,7 @@ tar -xzf "DataImporter-v${IMPORTER_RELEASE}.tar.gz" -C /opt/firefly/dataimporter
cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env
sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env
chown -R www-data:www-data /opt/firefly chown -R www-data:www-data /opt/firefly
rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.tar.gz"
msg_ok "Configured Firefly III" msg_ok "Configured Firefly III"
msg_info "Creating Service" msg_info "Creating Service"
@@ -95,9 +82,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.tar.gz"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -15,9 +15,7 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt install -y apt-transport-https xvfb
apt-transport-https \
xvfb
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Chrome" msg_info "Installing Chrome"
@@ -28,7 +26,6 @@ setup_deb822_repo \
"stable" "stable"
$STD apt update $STD apt update
$STD apt install -y google-chrome-stable $STD apt install -y google-chrome-stable
# remove google-chrome.list added by google-chrome-stable
rm /etc/apt/sources.list.d/google-chrome.list rm /etc/apt/sources.list.d/google-chrome.list
msg_ok "Installed Chrome" msg_ok "Installed Chrome"
@@ -57,8 +54,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

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

View File

@@ -14,35 +14,20 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y zip $STD apt install -y zip
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
NODE_VERSION="20" setup_nodejs NODE_VERSION="20" setup_nodejs
PG_DB_NAME="fluiddb" PG_DB_USER="fluiduser" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
msg_info "Setting up Postgresql Database"
DB_NAME="fluiddb"
DB_USER="fluiduser"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)"
NEXTAUTH_SECRET="$(openssl rand -base64 44 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH ENCRYPTED PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_USER;"
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
{
echo "${APPLICATION} Credentials"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
echo "Database Name: $DB_NAME"
echo "NextAuth Secret: $NEXTAUTH_SECRET"
} >>~/$APPLICATION.creds
msg_ok "Set up Postgresql Database"
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
msg_info "Configuring ${APPLICATION}" msg_info "Setup Fluid Calendar"
NEXTAUTH_SECRET="$(openssl rand -base64 44 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
echo "NextAuth Secret: $NEXTAUTH_SECRET" >>~/$APPLICATION.creds
cat <<EOF >/opt/fluid-calendar/.env cat <<EOF >/opt/fluid-calendar/.env
DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}" DATABASE_URL="postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}"
# Change the URL below to your external URL # Change the URL below to your external URL
NEXTAUTH_URL="http://localhost:3000" NEXTAUTH_URL="http://localhost:3000"
@@ -61,7 +46,7 @@ $STD npm install --legacy-peer-deps
$STD npm run prisma:generate $STD npm run prisma:generate
$STD npx prisma migrate deploy $STD npx prisma migrate deploy
$STD npm run build:os $STD npm run build:os
msg_ok "Configuring ${APPLICATION}" msg_ok "Setup Fluid Calendar"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/fluid-calendar.service cat <<EOF >/etc/systemd/system/fluid-calendar.service
@@ -82,8 +67,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,8 +14,7 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y git $STD apt install -y git git-lfs
$STD apt-get install -y git-lfs
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Forgejo" msg_info "Installing Forgejo"
@@ -59,8 +58,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,15 +14,11 @@ network_check
update_os update_os
msg_info "Installing FreePBX (Patience)" msg_info "Installing FreePBX (Patience)"
curl -fsSL https://github.com/FreePBX/sng_freepbx_debian_install/raw/master/sng_freepbx_debian_install.sh -o /opt/sng_freepbx_debian_install.sh curl -fsSL https://github.com/FreePBX/sng_freepbx_debian_install/raw/master/sng_freepbx_debian_install.sh -o /opt/sng_freepbx_debian_install.sh
$STD bash /opt/sng_freepbx_debian_install.sh $STD bash /opt/sng_freepbx_debian_install.sh
rm /opt/sng_freepbx_debian_install.sh
msg_ok "Installed FreePBX" msg_ok "Installed FreePBX"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
rm /opt/sng_freepbx_debian_install.sh
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -13,22 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
PHP_VERSION="8.2" PHP_MODULE="curl,xml,mbstring,intl,zip,pgsql,gmp" PHP_APACHE="YES" setup_php PHP_VERSION="8.3" PHP_MODULE="curl,xml,mbstring,intl,zip,pgsql,gmp" PHP_APACHE="YES" setup_php
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PG_DB_NAME="freshrss" PG_DB_USER="freshrss" setup_postgresql_db
msg_info "Setting up PostgreSQL"
DB_NAME=freshrss
DB_USER=freshrss
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 "FreshRSS Credentials"
echo "FreshRSS Database User: $DB_USER"
echo "FreshRSS Database Password: $DB_PASS"
echo "FreshRSS Database Name: $DB_NAME"
} >>~/freshrss.creds
msg_ok "Set up PostgreSQL"
fetch_and_deploy_gh_release "freshrss" "FreshRSS/FreshRSS" fetch_and_deploy_gh_release "freshrss" "FreshRSS/FreshRSS"

View File

@@ -13,12 +13,12 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt install -y \
ca-certificates \ ca-certificates \
git git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
msg_info "Installing Fumadocs" msg_info "Installing Fumadocs"
mkdir -p /opt/fumadocs mkdir -p /opt/fumadocs
@@ -47,8 +47,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -23,10 +23,10 @@ RPC_SECRET=$(openssl rand -hex 32)
ADMIN_TOKEN=$(openssl rand -base64 32) ADMIN_TOKEN=$(openssl rand -base64 32)
METRICS_TOKEN=$(openssl rand -base64 32) METRICS_TOKEN=$(openssl rand -base64 32)
{ {
echo "Garage Tokens and Secrets" echo "Garage Tokens and Secrets"
echo "RPC Secret: $RPC_SECRET" echo "RPC Secret: $RPC_SECRET"
echo "Admin Token: $ADMIN_TOKEN" echo "Admin Token: $ADMIN_TOKEN"
echo "Metrics Token: $METRICS_TOKEN" echo "Metrics Token: $METRICS_TOKEN"
} >>~/garage.creds } >>~/garage.creds
echo $GITEA_RELEASE >>~/.garage echo $GITEA_RELEASE >>~/.garage
cat <<EOF >/etc/garage.toml cat <<EOF >/etc/garage.toml
@@ -59,7 +59,6 @@ metrics_token = "${METRICS_TOKEN}"
EOF EOF
msg_ok "Set up Garage" msg_ok "Set up Garage"
msg_info "Creating service" msg_info "Creating service"
cat <<'EOF' >/etc/systemd/system/garage.service cat <<'EOF' >/etc/systemd/system/garage.service
[Unit] [Unit]
@@ -87,9 +86,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -14,7 +14,7 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt install -y \
ca-certificates \ ca-certificates \
libcap2-bin libcap2-bin
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
@@ -51,8 +51,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -15,49 +15,32 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y \
build-essential \ build-essential \
openssl \ openssl \
ca-certificates \ ca-certificates \
redis-server redis-server
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
NODE_VERSION="24" setup_nodejs NODE_VERSION="24" setup_nodejs
PG_DB_NAME="ghostfolio" PG_DB_USER="ghostfolio" PG_DB_SCHEMA_PERMS="true" setup_postgresql_db
msg_info "Setting up Database"
DB_NAME=ghostfolio
DB_USER=ghostfolio
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
REDIS_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
ACCESS_TOKEN_SALT=$(openssl rand -base64 32)
JWT_SECRET_KEY=$(openssl rand -base64 32)
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;"
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH ENCRYPTED PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
$STD sudo -u postgres psql -c "ALTER USER $DB_USER CREATEDB;"
$STD sudo -u postgres psql -d $DB_NAME -c "GRANT ALL ON SCHEMA public TO $DB_USER;"
$STD sudo -u postgres psql -d $DB_NAME -c "GRANT CREATE ON SCHEMA public TO $DB_USER;"
$STD sudo -u postgres psql -d $DB_NAME -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO $DB_USER;"
$STD sudo -u postgres psql -d $DB_NAME -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO $DB_USER;"
{
echo "Ghostfolio Credentials"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
echo "Database Name: $DB_NAME"
echo "Redis Password: $REDIS_PASS"
echo "Access Token Salt: $ACCESS_TOKEN_SALT"
echo "JWT Secret Key: $JWT_SECRET_KEY"
} >>~/ghostfolio.creds
msg_ok "Set up Database"
fetch_and_deploy_gh_release "ghostfolio" "ghostfolio/ghostfolio" "tarball" "latest" "/opt/ghostfolio" fetch_and_deploy_gh_release "ghostfolio" "ghostfolio/ghostfolio" "tarball" "latest" "/opt/ghostfolio"
msg_info "Setup Ghostfolio" msg_info "Setup Ghostfolio"
REDIS_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
ACCESS_TOKEN_SALT=$(openssl rand -base64 32)
JWT_SECRET_KEY=$(openssl rand -base64 32)
sed -i "s/# requirepass foobared/requirepass $REDIS_PASS/" /etc/redis/redis.conf sed -i "s/# requirepass foobared/requirepass $REDIS_PASS/" /etc/redis/redis.conf
systemctl restart redis-server systemctl restart redis-server
cd /opt/ghostfolio cd /opt/ghostfolio
$STD npm ci $STD npm ci
$STD npm run build:production $STD npm run build:production
{
echo "Redis Password: $REDIS_PASS"
echo "Access Token Salt: $ACCESS_TOKEN_SALT"
echo "JWT Secret Key: $JWT_SECRET_KEY"
} >>~/ghostfolio.creds
msg_ok "Built Ghostfolio" msg_ok "Built Ghostfolio"
echo -e "" echo -e ""
@@ -69,7 +52,7 @@ read -rp "${TAB3}CoinGecko Pro API key (press Enter to skip): " COINGECKO_PRO_KE
msg_info "Setting up Environment" msg_info "Setting up Environment"
cat <<EOF >/opt/ghostfolio/.env cat <<EOF >/opt/ghostfolio/.env
DATABASE_URL=postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME?connect_timeout=300&sslmode=prefer DATABASE_URL=postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME?connect_timeout=300&sslmode=prefer
REDIS_HOST=localhost REDIS_HOST=localhost
REDIS_PORT=6379 REDIS_PORT=6379
REDIS_PASSWORD=$REDIS_PASS REDIS_PASSWORD=$REDIS_PASS
@@ -82,11 +65,11 @@ TZ=Etc/UTC
EOF EOF
if [[ -n "${COINGECKO_DEMO_KEY:-}" ]]; then if [[ -n "${COINGECKO_DEMO_KEY:-}" ]]; then
echo "API_KEY_COINGECKO_DEMO=$COINGECKO_DEMO_KEY" >>/opt/ghostfolio/.env echo "API_KEY_COINGECKO_DEMO=$COINGECKO_DEMO_KEY" >>/opt/ghostfolio/.env
fi fi
if [[ -n "${COINGECKO_PRO_KEY:-}" ]]; then if [[ -n "${COINGECKO_PRO_KEY:-}" ]]; then
echo "API_KEY_COINGECKO_PRO=$COINGECKO_PRO_KEY" >>/opt/ghostfolio/.env echo "API_KEY_COINGECKO_PRO=$COINGECKO_PRO_KEY" >>/opt/ghostfolio/.env
fi fi
msg_ok "Set up Environment" msg_ok "Set up Environment"
@@ -122,10 +105,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD npm cache clean --force
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -15,8 +15,7 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y git $STD apt install -y git sqlite3
$STD apt-get install -y sqlite3
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64" fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64"
@@ -68,8 +67,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -39,8 +39,7 @@ EOF
msg_ok "Configured Glance" msg_ok "Configured Glance"
msg_info "Creating Service" msg_info "Creating Service"
service_path="/etc/systemd/system/glance.service" cat <<EOF >/etc/systemd/system/glance.service
echo "[Unit]
Description=Glance Daemon Description=Glance Daemon
After=network.target After=network.target
@@ -53,15 +52,11 @@ KillMode=process
Restart=on-failure Restart=on-failure
[Install] [Install]
WantedBy=multi-user.target" >$service_path WantedBy=multi-user.target
EOF
systemctl enable -q --now glance systemctl enable -q --now glance
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

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

View File

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

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