diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..f79a823d7 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +; editorconfig.org +root = true + +[*] +charset = utf-8 +continuation_indent_size = 2 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +max_line_length = 120 +tab_width = 2 +; trim_trailing_whitespace = true ; disabled until files are cleaned up + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore index 7a00d8ed9..697914d8b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,77 @@ script.py +# General OS files +.DS_Store +Thumbs.db + +# Editor & IDE files (keeping .vscode settings but ignoring unnecessary metadata) +!.vscode/ +.vscode/*.workspace +.vscode/*.tmp + +# Log and Cache files +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Python-specific exclusions +__pycache__/ +*.pyc +*.pyo +*.pyd +*.venv/ +venv/ +env/ +*.env + +# Node.js dependencies (frontend folder was excluded, but keeping this rule for reference) +frontend/node_modules/ +frontend/.svelte-kit/ +frontend/.turbo/ +frontend/.vite/ +frontend/build/ + +# API and Backend specific exclusions +api/.env +api/__pycache__/ +api/*.sqlite3 + +# Install scripts and temporary files +install/tmp/ +install/*.bak + +# VM and Container-specific exclusions +vm/tmp/ +vm/*.qcow2 +vm/*.img +vm/*.vmdk +vm/*.iso +vm/*.bak + +# Miscellaneous temporary or unnecessary files +*.bak +*.swp +*.swo +*.swn +*.tmp +*.backup + +# JSON configuration backups +json/*.bak +json/*.tmp +json/.vscode/ + +# Ignore compiled binaries or packaged artifacts +*.exe +*.dll +*.bin +*.deb +*.rpm +*.tar.gz +*.zip +*.tgz + +# Ignore repository metadata or Git itself +.git/ +.gitignore diff --git a/CHANGELOG.md b/CHANGELOG.md index 11f544567..867739c82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,374 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment. +## 2025-03-27 + +### πŸš€ Updated Scripts + + - [core]: add functions for Alpine (update / core deps) [@MickLesk](https://github.com/MickLesk) ([#3437](https://github.com/community-scripts/ProxmoxVE/pull/3437)) + +### 🧰 Maintenance + + - #### πŸ’Ύ Core + + - [core]: Refactor Spinner/MSG Function (support now alpine / performance / handling) [@MickLesk](https://github.com/MickLesk) ([#3436](https://github.com/community-scripts/ProxmoxVE/pull/3436)) + +## 2025-03-26 + +### πŸ†• New Scripts + + - Alpine: Gitea [@MickLesk](https://github.com/MickLesk) ([#3424](https://github.com/community-scripts/ProxmoxVE/pull/3424)) + +### πŸš€ Updated Scripts + + - FlowiseAI: Fix dependencies [@tremor021](https://github.com/tremor021) ([#3427](https://github.com/community-scripts/ProxmoxVE/pull/3427)) + + - #### 🐞 Bug Fixes + + - fluid-calendar: Fix failed build during updates [@vhsdream](https://github.com/vhsdream) ([#3417](https://github.com/community-scripts/ProxmoxVE/pull/3417)) + +### 🧰 Maintenance + + - #### πŸ“‚ Github + + - Remove coredeps in CONTRIBUTOR_AND_GUIDES [@bvdberg01](https://github.com/bvdberg01) ([#3420](https://github.com/community-scripts/ProxmoxVE/pull/3420)) + +## 2025-03-25 + +### 🧰 Maintenance + + - #### πŸ“‚ Github + + - Discord invite link updated [@MickLesk](https://github.com/MickLesk) ([#3412](https://github.com/community-scripts/ProxmoxVE/pull/3412)) + +## 2025-03-24 + +### πŸ†• New Scripts + + - fileflows [@kkroboth](https://github.com/kkroboth) ([#3392](https://github.com/community-scripts/ProxmoxVE/pull/3392)) +- wazuh [@omiinaya](https://github.com/omiinaya) ([#3381](https://github.com/community-scripts/ProxmoxVE/pull/3381)) +- yt-dlp-webui [@CrazyWolf13](https://github.com/CrazyWolf13) ([#3364](https://github.com/community-scripts/ProxmoxVE/pull/3364)) +- Extension/New Script: Redis Alpine Installation [@MickLesk](https://github.com/MickLesk) ([#3367](https://github.com/community-scripts/ProxmoxVE/pull/3367)) + +### πŸš€ Updated Scripts + + - #### 🐞 Bug Fixes + + - Extend HOME Env for Kubo [@MickLesk](https://github.com/MickLesk) ([#3397](https://github.com/community-scripts/ProxmoxVE/pull/3397)) + + - #### ✨ New Features + + - [core] Rebase Scripts (formatting, highlighting & remove old deps) [@MickLesk](https://github.com/MickLesk) ([#3378](https://github.com/community-scripts/ProxmoxVE/pull/3378)) + + - #### πŸ”§ Refactor + + - qBittorrent: Switch to static builds for faster updating/upgrading [@tremor021](https://github.com/tremor021) ([#3405](https://github.com/community-scripts/ProxmoxVE/pull/3405)) + - Refactor: ErsatzTV Script [@MickLesk](https://github.com/MickLesk) ([#3365](https://github.com/community-scripts/ProxmoxVE/pull/3365)) + +### 🧰 Maintenance + + - #### ✨ New Features + + - [core] install core deps (debian / ubuntu) [@MickLesk](https://github.com/MickLesk) ([#3366](https://github.com/community-scripts/ProxmoxVE/pull/3366)) + + - #### πŸ’Ύ Core + + - [core] extend hardware transcoding for fileflows #3392 [@MickLesk](https://github.com/MickLesk) ([#3396](https://github.com/community-scripts/ProxmoxVE/pull/3396)) + + - #### πŸ“‚ Github + + - Refactor Changelog Workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3371](https://github.com/community-scripts/ProxmoxVE/pull/3371)) + +### 🌐 Website + + - Update siteConfig.tsx to use new analytics code [@BramSuurdje](https://github.com/BramSuurdje) ([#3389](https://github.com/community-scripts/ProxmoxVE/pull/3389)) + + - #### 🐞 Bug Fixes + + - Better Text for Version Date [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3388](https://github.com/community-scripts/ProxmoxVE/pull/3388)) + +## 2025-03-23 + +### πŸš€ Updated Scripts + + - #### 🐞 Bug Fixes + + - GoMFT: Check if build-essential is present before updating, if not then install it [@tremor021](https://github.com/tremor021) ([#3358](https://github.com/community-scripts/ProxmoxVE/pull/3358)) + +## 2025-03-22 + +### πŸš€ Updated Scripts + + - #### 🐞 Bug Fixes + + - revealjs: Fix update process [@tremor021](https://github.com/tremor021) ([#3341](https://github.com/community-scripts/ProxmoxVE/pull/3341)) + - Cronicle: add missing gnupg package [@MickLesk](https://github.com/MickLesk) ([#3323](https://github.com/community-scripts/ProxmoxVE/pull/3323)) + + - #### ✨ New Features + + - Update nextcloud-vm.sh to 18.1 ISO [@0xN0BADC0FF33](https://github.com/0xN0BADC0FF33) ([#3333](https://github.com/community-scripts/ProxmoxVE/pull/3333)) + +## 2025-03-21 + +### πŸš€ Updated Scripts + + - Omada jdk to jre [@bvdberg01](https://github.com/bvdberg01) ([#3319](https://github.com/community-scripts/ProxmoxVE/pull/3319)) + + - #### 🐞 Bug Fixes + + - Omada zulu 8 to 21 [@bvdberg01](https://github.com/bvdberg01) ([#3318](https://github.com/community-scripts/ProxmoxVE/pull/3318)) + - MySQL: Correctly add repo to mysql.list [@tremor021](https://github.com/tremor021) ([#3315](https://github.com/community-scripts/ProxmoxVE/pull/3315)) + - GoMFT: Fix build dependencies [@tremor021](https://github.com/tremor021) ([#3313](https://github.com/community-scripts/ProxmoxVE/pull/3313)) + - GoMFT: Don't rely on binaries from github [@tremor021](https://github.com/tremor021) ([#3303](https://github.com/community-scripts/ProxmoxVE/pull/3303)) + +### 🧰 Maintenance + + - #### πŸ’Ύ Core + + - Clarify MTU in advanced Settings. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3296](https://github.com/community-scripts/ProxmoxVE/pull/3296)) + +### 🌐 Website + + - Bump next from 15.1.3 to 15.2.3 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#3316](https://github.com/community-scripts/ProxmoxVE/pull/3316)) + + - #### πŸ“ Script Information + + - Proxmox, rather than Promox [@gringocl](https://github.com/gringocl) ([#3293](https://github.com/community-scripts/ProxmoxVE/pull/3293)) + - Audiobookshelf: Fix category on website [@jaykup26](https://github.com/jaykup26) ([#3304](https://github.com/community-scripts/ProxmoxVE/pull/3304)) + - Threadfin: add port for website [@MickLesk](https://github.com/MickLesk) ([#3295](https://github.com/community-scripts/ProxmoxVE/pull/3295)) + +## 2025-03-20 + +### πŸš€ Updated Scripts + + - #### ✨ New Features + + - Netdata: Update to newer deb File [@MickLesk](https://github.com/MickLesk) ([#3276](https://github.com/community-scripts/ProxmoxVE/pull/3276)) + +### 🧰 Maintenance + + - #### ✨ New Features + + - [core] add gitignore to prevent big pulls [@MickLesk](https://github.com/MickLesk) ([#3278](https://github.com/community-scripts/ProxmoxVE/pull/3278)) + +## 2025-03-19 + +### πŸš€ Updated Scripts + + - License url VED to VE [@bvdberg01](https://github.com/bvdberg01) ([#3258](https://github.com/community-scripts/ProxmoxVE/pull/3258)) + + - #### 🐞 Bug Fixes + + - Snipe-IT: Remove composer update & add no interaction for install [@MickLesk](https://github.com/MickLesk) ([#3256](https://github.com/community-scripts/ProxmoxVE/pull/3256)) + - Fluid-Calendar: Remove unneeded $STD in update [@MickLesk](https://github.com/MickLesk) ([#3250](https://github.com/community-scripts/ProxmoxVE/pull/3250)) + + - #### πŸ’₯ Breaking Changes + + - FluidCalendar: Switch to safer DB operations [@vhsdream](https://github.com/vhsdream) ([#3270](https://github.com/community-scripts/ProxmoxVE/pull/3270)) + +### 🌐 Website + + - #### 🐞 Bug Fixes + + - JSON editor note fix [@bvdberg01](https://github.com/bvdberg01) ([#3260](https://github.com/community-scripts/ProxmoxVE/pull/3260)) + +## 2025-03-18 + +### πŸ†• New Scripts + + - CryptPad [@MickLesk](https://github.com/MickLesk) ([#3205](https://github.com/community-scripts/ProxmoxVE/pull/3205)) +- GoMFT [@tremor021](https://github.com/tremor021) ([#3157](https://github.com/community-scripts/ProxmoxVE/pull/3157)) + +### πŸš€ Updated Scripts + + - #### 🐞 Bug Fixes + + - Update omada download url [@bvdberg01](https://github.com/bvdberg01) ([#3245](https://github.com/community-scripts/ProxmoxVE/pull/3245)) + - Wikijs: Remove Dev Message & Performance-Boost [@bvdberg01](https://github.com/bvdberg01) ([#3232](https://github.com/community-scripts/ProxmoxVE/pull/3232)) + - Fix openwebui update script when backup directory already exists [@chrisdoc](https://github.com/chrisdoc) ([#3213](https://github.com/community-scripts/ProxmoxVE/pull/3213)) + + - #### πŸ’₯ Breaking Changes + + - Tandoor: Extend needed dependencies (Read for Update-Functionality) [@MickLesk](https://github.com/MickLesk) ([#3207](https://github.com/community-scripts/ProxmoxVE/pull/3207)) + +### 🧰 Maintenance + + - #### πŸ“‚ Github + + - [core] cleanup - remove old backups of workflow files [@MickLesk](https://github.com/MickLesk) ([#3247](https://github.com/community-scripts/ProxmoxVE/pull/3247)) + - Add worflow to crawl APP verisons [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3192](https://github.com/community-scripts/ProxmoxVE/pull/3192)) + - Update pr template and WF [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3200](https://github.com/community-scripts/ProxmoxVE/pull/3200)) + - Update Workflow Context [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3171](https://github.com/community-scripts/ProxmoxVE/pull/3171)) + - Change json path CONTRIBUTING.md [@bvdberg01](https://github.com/bvdberg01) ([#3187](https://github.com/community-scripts/ProxmoxVE/pull/3187)) + - Relocate the Json Files [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3184](https://github.com/community-scripts/ProxmoxVE/pull/3184)) + - Update Workflow to Close Discussion [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3185](https://github.com/community-scripts/ProxmoxVE/pull/3185)) + +### 🌐 Website + + - #### 🐞 Bug Fixes + + - Move cryptpad files to right folders [@bvdberg01](https://github.com/bvdberg01) ([#3242](https://github.com/community-scripts/ProxmoxVE/pull/3242)) + - Update Frontend Version Logic [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3223](https://github.com/community-scripts/ProxmoxVE/pull/3223)) + + - #### ✨ New Features + + - Add Latest Change Date to Frontend [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3231](https://github.com/community-scripts/ProxmoxVE/pull/3231)) + - Show Version Information on Frontend [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3216](https://github.com/community-scripts/ProxmoxVE/pull/3216)) + + - #### πŸ“ Script Information + + - CrowdSec: Add debian only warning to website [@tremor021](https://github.com/tremor021) ([#3210](https://github.com/community-scripts/ProxmoxVE/pull/3210)) + - Debian VM: Update webpage with login info [@tremor021](https://github.com/tremor021) ([#3215](https://github.com/community-scripts/ProxmoxVE/pull/3215)) + - Heimdall Dashboard: Fix missing logo on website [@tremor021](https://github.com/tremor021) ([#3227](https://github.com/community-scripts/ProxmoxVE/pull/3227)) + - Seafile: lowercase slug for Install/Update-Source [@MickLesk](https://github.com/MickLesk) ([#3209](https://github.com/community-scripts/ProxmoxVE/pull/3209)) + - Website: Lowercase Zitadel-Slug [@MickLesk](https://github.com/MickLesk) ([#3222](https://github.com/community-scripts/ProxmoxVE/pull/3222)) + - VictoriaMetrics: Fix Wrong Slug [@MickLesk](https://github.com/MickLesk) ([#3225](https://github.com/community-scripts/ProxmoxVE/pull/3225)) + - Update Pimox Logo [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3233](https://github.com/community-scripts/ProxmoxVE/pull/3233)) + - [AUTOMATIC PR]Update versions.json [@community-scripts-pr-app[bot]](https://github.com/community-scripts-pr-app[bot]) ([#3201](https://github.com/community-scripts/ProxmoxVE/pull/3201)) + - GoMFT: Update Logo [@MickLesk](https://github.com/MickLesk) ([#3188](https://github.com/community-scripts/ProxmoxVE/pull/3188)) + +## 2025-03-17 + +### πŸš€ Updated Scripts + + - #### 🐞 Bug Fixes + + - TriliumNotes: Fix release handling [@tremor021](https://github.com/tremor021) ([#3160](https://github.com/community-scripts/ProxmoxVE/pull/3160)) + - TriliumNext: Fix release file name/path, preventing install and update [@tremor021](https://github.com/tremor021) ([#3152](https://github.com/community-scripts/ProxmoxVE/pull/3152)) + - qBittorrent: Accept legal notice in config file [@tremor021](https://github.com/tremor021) ([#3150](https://github.com/community-scripts/ProxmoxVE/pull/3150)) + - Tandoor: Switch Repo to new Link [@MickLesk](https://github.com/MickLesk) ([#3140](https://github.com/community-scripts/ProxmoxVE/pull/3140)) + - Fixed wrong PHP values to match default part-db size (100M) [@dMopp](https://github.com/dMopp) ([#3143](https://github.com/community-scripts/ProxmoxVE/pull/3143)) + - Kimai: Fix Permission Issue on new Timerecords [@MickLesk](https://github.com/MickLesk) ([#3136](https://github.com/community-scripts/ProxmoxVE/pull/3136)) + + - #### ✨ New Features + + - InfluxDB: Add Ports as Info / Script-End [@MickLesk](https://github.com/MickLesk) ([#3141](https://github.com/community-scripts/ProxmoxVE/pull/3141)) + - ByteStash: Add option for multiple accounts and generate JWT secret [@tremor021](https://github.com/tremor021) ([#3132](https://github.com/community-scripts/ProxmoxVE/pull/3132)) + +### 🌐 Website + + - #### πŸ“ Script Information + + - Paperless-ngx: Fix example on website [@tremor021](https://github.com/tremor021) ([#3155](https://github.com/community-scripts/ProxmoxVE/pull/3155)) + +## 2025-03-16 + +### πŸš€ Updated Scripts + + - Typo Enviroment > Environment [@MathijsG](https://github.com/MathijsG) ([#3115](https://github.com/community-scripts/ProxmoxVE/pull/3115)) +- Paperless-ngx: Add additional information to website on how to install OCR languages [@tremor021](https://github.com/tremor021) ([#3111](https://github.com/community-scripts/ProxmoxVE/pull/3111)) +- Prometheus PVE Exporter: Rightsizing RAM and Disk [@andygrunwald](https://github.com/andygrunwald) ([#3098](https://github.com/community-scripts/ProxmoxVE/pull/3098)) + + - #### 🐞 Bug Fixes + + - Jellyseerr: Fix dependencies [@tremor021](https://github.com/tremor021) ([#3125](https://github.com/community-scripts/ProxmoxVE/pull/3125)) + - wger: Fix build.func path [@tremor021](https://github.com/tremor021) ([#3121](https://github.com/community-scripts/ProxmoxVE/pull/3121)) + - Filebrowser: Fix hardcoded port in Debian service file [@Xerovoxx98](https://github.com/Xerovoxx98) ([#3105](https://github.com/community-scripts/ProxmoxVE/pull/3105)) + +### 🌐 Website + + - #### πŸ“ Script Information + + - Website: Fix alpine-it-tools "undefined" Link [@CrazyWolf13](https://github.com/CrazyWolf13) ([#3110](https://github.com/community-scripts/ProxmoxVE/pull/3110)) + +## 2025-03-15 + +### πŸš€ Updated Scripts + + - #### πŸ’₯ Breaking Changes + + - Homepage: Bugfix for v1.0.0 [@vhsdream](https://github.com/vhsdream) ([#3092](https://github.com/community-scripts/ProxmoxVE/pull/3092)) + +## 2025-03-14 + +### πŸš€ Updated Scripts + + - Memos: Increase RAM Usage and max space [@MickLesk](https://github.com/MickLesk) ([#3072](https://github.com/community-scripts/ProxmoxVE/pull/3072)) +- Seafile - Minor bug fix: domain.sh script fix [@dave-yap](https://github.com/dave-yap) ([#3046](https://github.com/community-scripts/ProxmoxVE/pull/3046)) + + - #### 🐞 Bug Fixes + + - openwrt: fix typo netmask [@qzydustin](https://github.com/qzydustin) ([#3084](https://github.com/community-scripts/ProxmoxVE/pull/3084)) + +### 🌐 Website + + - #### πŸ“ Script Information + + - NPMplus: Add info about docker use. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3085](https://github.com/community-scripts/ProxmoxVE/pull/3085)) + +## 2025-03-13 + +### πŸ†• New Scripts + + - NPMplus [@MickLesk](https://github.com/MickLesk) ([#3051](https://github.com/community-scripts/ProxmoxVE/pull/3051)) + +### πŸš€ Updated Scripts + + - #### 🐞 Bug Fixes + + - OpenWebUI check if there are stashed changes before poping [@tremor021](https://github.com/tremor021) ([#3064](https://github.com/community-scripts/ProxmoxVE/pull/3064)) + - Update Fluid Calendar for v1.2.0 [@vhsdream](https://github.com/vhsdream) ([#3053](https://github.com/community-scripts/ProxmoxVE/pull/3053)) + +### 🧰 Maintenance + + - #### πŸ’Ύ Core + + - alpine-Install (core) add timezone (tz) check [@MickLesk](https://github.com/MickLesk) ([#3057](https://github.com/community-scripts/ProxmoxVE/pull/3057)) + + - #### πŸ“‚ Github + + - New Workflow: Close Issues in DEV Repo when new Script is merged [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3042](https://github.com/community-scripts/ProxmoxVE/pull/3042)) + +### 🌐 Website + + - Bump @babel/runtime from 7.26.0 to 7.26.10 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#3044](https://github.com/community-scripts/ProxmoxVE/pull/3044)) + + - #### πŸ“ Script Information + + - Update Vaultwarden Source [@MickLesk](https://github.com/MickLesk) ([#3036](https://github.com/community-scripts/ProxmoxVE/pull/3036)) + - Website: Fix Alpine "undefined" Link [@MickLesk](https://github.com/MickLesk) ([#3048](https://github.com/community-scripts/ProxmoxVE/pull/3048)) + +## 2025-03-12 + +### πŸ†• New Scripts + + - Fluid Calendar [@vhsdream](https://github.com/vhsdream) ([#2869](https://github.com/community-scripts/ProxmoxVE/pull/2869)) + +### πŸš€ Updated Scripts + + - #### ✨ New Features + + - Feature: Filebrowser: support now alpine [@MickLesk](https://github.com/MickLesk) ([#2997](https://github.com/community-scripts/ProxmoxVE/pull/2997)) + +## 2025-03-11 + +### πŸ†• New Scripts + + - Plant-it [@MickLesk](https://github.com/MickLesk) ([#3000](https://github.com/community-scripts/ProxmoxVE/pull/3000)) +- Seafile [@dave-yap](https://github.com/dave-yap) ([#2987](https://github.com/community-scripts/ProxmoxVE/pull/2987)) + +### πŸš€ Updated Scripts + + - #### 🐞 Bug Fixes + + - Headscale: Re-enable Service after Update [@Cerothen](https://github.com/Cerothen) ([#3012](https://github.com/community-scripts/ProxmoxVE/pull/3012)) + - SnipeIT: Harmonize composer install to Project-Dockerfile [@MickLesk](https://github.com/MickLesk) ([#3009](https://github.com/community-scripts/ProxmoxVE/pull/3009)) + - Teddycloud: fix update function [@tremor021](https://github.com/tremor021) ([#2996](https://github.com/community-scripts/ProxmoxVE/pull/2996)) + +### 🧰 Maintenance + + - #### πŸ“‚ Github + + - Cleanup Old Project Files (figlet, app-header, images) [@MickLesk](https://github.com/MickLesk) ([#3004](https://github.com/community-scripts/ProxmoxVE/pull/3004)) + - Additions and amends to the CONTIRBUTOR docs [@tremor021](https://github.com/tremor021) ([#2983](https://github.com/community-scripts/ProxmoxVE/pull/2983)) + +### 🌐 Website + + - #### πŸ“ Script Information + + - Jellyseer not labeled as updateable even though update function exists [@tremor021](https://github.com/tremor021) ([#2991](https://github.com/community-scripts/ProxmoxVE/pull/2991)) + - Fix Website - Show correct wget path for alpine [@MickLesk](https://github.com/MickLesk) ([#2998](https://github.com/community-scripts/ProxmoxVE/pull/2998)) + ## 2025-03-10 ### πŸ†• New Scripts diff --git a/SECURITY.md b/SECURITY.md index c8530d506..cf5e73282 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -13,7 +13,7 @@ This project currently supports the following versions of Proxmox VE: ## Reporting a Vulnerability -Security vulnerabilities shouldn’t be reported publicly to prevent potential exploitation. Instead, please report any vulnerabilities privately by reaching out directly to us. You can either join our [Discord server](https://discord.gg/UHrpNWGwkH) and send a direct message to a maintainer or contact us via email at contact@community-scripts.org. Be sure to include a detailed description of the vulnerability and the steps to reproduce it. Thank you for helping us keep our project secure! +Security vulnerabilities shouldn’t be reported publicly to prevent potential exploitation. Instead, please report any vulnerabilities privately by reaching out directly to us. You can either join our [Discord server](https://discord.gg/jsYVk5JBxq) and send a direct message to a maintainer or contact us via email at contact@community-scripts.org. Be sure to include a detailed description of the vulnerability and the steps to reproduce it. Thank you for helping us keep our project secure! Once a vulnerability has been reported, the project maintainers will review it and acknowledge the report within 7 business days. We will then work to address the vulnerability and provide a fix as soon as possible. Depending on the severity of the issue, a patch may be released immediately or included in the next scheduled update. diff --git a/ct/alpine-gitea.sh b/ct/alpine-gitea.sh new file mode 100644 index 000000000..47c402bd8 --- /dev/null +++ b/ct/alpine-gitea.sh @@ -0,0 +1,45 @@ +#!/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: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://gitea.io + +APP="Alpine-Gitea" +var_tags="alpine;git" +var_cpu="1" +var_ram="256" +var_disk="1" +var_os="alpine" +var_version="3.21" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + msg_info "Updating Alpine Packages" + apk update + apk upgrade + msg_ok "Updated Alpine Packages" + + msg_info "Updating Gitea" + apk upgrade gitea + msg_ok "Updated Gitea" + + msg_info "Restarting Gitea" + rc-service gitea restart + msg_ok "Restarted Gitea" +} + +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}:3000${CL}" diff --git a/ct/alpine-redis.sh b/ct/alpine-redis.sh new file mode 100644 index 000000000..2080461ca --- /dev/null +++ b/ct/alpine-redis.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://redis.io/ + +APP="Alpine-Redis" +var_tags="alpine;database" +var_cpu="1" +var_ram="256" +var_disk="1" +var_os="alpine" +var_version="3.21" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + if ! apk -e info newt >/dev/null 2>&1; then + apk add -q newt + fi + LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1) + while true; do + CHOICE=$( + whiptail --backtitle "Proxmox VE Helper Scripts" --title "Redis Management" --menu "Select option" 11 58 3 \ + "1" "Update Redis" \ + "2" "Allow 0.0.0.0 for listening" \ + "3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3 + ) + exit_status=$? + if [ $exit_status == 1 ]; then + clear + exit-script + fi + header_info + case $CHOICE in + 1) + msg_info "Updating Redis" + apk update && apk upgrade redis + rc-service redis restart + msg_ok "Redis updated successfully!" + exit + ;; + 2) + msg_info "Setting Redis to listen on all interfaces" + sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf + rc-service redis restart + msg_ok "Redis now listens on all interfaces!" + exit + ;; + 3) + msg_info "Setting Redis to listen only on ${LXCIP}" + sed -i "s/^bind .*/bind ${LXCIP}/" /etc/redis.conf + rc-service redis restart + msg_ok "Redis now listens only on ${LXCIP}!" + exit + ;; + esac + done +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${APP} should be reachable on port 6379. + ${BL}redis-cli -h ${IP} -p 6379${CL} \n" \ No newline at end of file diff --git a/ct/cryptpad.sh b/ct/cryptpad.sh new file mode 100644 index 000000000..cb849a296 --- /dev/null +++ b/ct/cryptpad.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: SlaviΕ‘a AreΕΎina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/cryptpad/cryptpad + +APP="CryptPad" +var_tags="docs;office" +var_cpu="1" +var_ram="1024" +var_disk="8" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d "/opt/cryptpad" ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop cryptpad + msg_ok "Stopped $APP" + + msg_info "Updating $APP to ${RELEASE}" + temp_dir=$(mktemp -d) + cp -f /opt/cryptpad/config/config.js /opt/config.js + wget -q "https://github.com/cryptpad/cryptpad/archive/refs/tags/${RELEASE}.tar.gz" -P $temp_dir + cd $temp_dir + tar zxf $RELEASE.tar.gz + cp -rf cryptpad-$RELEASE/* /opt/cryptpad + cd /opt/cryptpad + $STD npm ci + $STD npm run install:components + $STD npm run build + cp -f /opt/config.js /opt/cryptpad/config/config.js + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to ${RELEASE}" + + msg_info "Cleaning Up" + rm -rf $temp_dir + msg_ok "Cleanup Completed" + + msg_info "Starting $APP" + systemctl start cryptpad + msg_ok "Started $APP" + + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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}:3000${CL}" diff --git a/ct/ersatztv.sh b/ct/ersatztv.sh index eedfe9f11..81918f109 100644 --- a/ct/ersatztv.sh +++ b/ct/ersatztv.sh @@ -26,29 +26,40 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - + RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1) + if [[ ! -f /opt/${APP}_version.txt && $(echo "x.x.x" > /opt/${APP}_version.txt) || "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then msg_info "Stopping ErsatzTV" systemctl stop ersatzTV msg_ok "Stopped ErsatzTV" msg_info "Updating ErsatzTV" - RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1) cp -R /opt/ErsatzTV/ ErsatzTV-backup rm ErsatzTV-backup/ErsatzTV rm -rf /opt/ErsatzTV - wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" | tar -xz -C /opt - mv "/opt/ErsatzTV-${RELEASE}-linux-x64" /opt/ErsatzTV + temp_file=$(mktemp) + wget -qO- https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz -O "$temp_file" + tar -xzf "$temp_file" + mv /opt/ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV cp -R ErsatzTV-backup/* /opt/ErsatzTV/ rm -rf ErsatzTV-backup + echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated ErsatzTV" msg_info "Starting ErsatzTV" systemctl start ersatzTV msg_ok "Started ErsatzTV" + + msg_info "Cleaning Up" + rm -f ${temp_file} + msg_ok "Cleaned" msg_ok "Updated Successfully" - exit + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } + start build_container description diff --git a/ct/fileflows.sh b/ct/fileflows.sh new file mode 100644 index 000000000..fe0c82f86 --- /dev/null +++ b/ct/fileflows.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: kkroboth +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://fileflows.com/ + +APP="FileFlows" +var_tags="media;automation" +var_cpu="2" +var_ram="2048" +var_disk="8" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/fileflows ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + update_available=$(curl -s -X 'GET' "http://localhost:19200/api/status/update-available" -H 'accept: application/json' | jq .UpdateAvailable) + if [[ "${update_available}" == "true" ]]; then + msg_info "Stopping $APP" + systemctl stop fileflows + msg_ok "Stopped $APP" + + msg_info "Creating Backup" + backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz" + tar -czf $backup_filename -C /opt/fileflows Data + msg_ok "Backup Created" + + msg_info "Updating $APP to latest version" + temp_file=$(mktemp) + curl -fsSL https://fileflows.com/downloads/zip -o $temp_file + unzip -oq -d /opt/fileflows $temp_file + msg_ok "Updated $APP to latest version" + + msg_info "Starting $APP" + systemctl start fileflows + msg_ok "Started $APP" + + msg_info "Cleaning Up" + rm -rf $temp_file + rm -rf $backup_filename + msg_ok "Cleanup Completed" + + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at latest version" + 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}:19200${CL}" diff --git a/ct/fluid-calendar.sh b/ct/fluid-calendar.sh new file mode 100644 index 000000000..beb7deae5 --- /dev/null +++ b/ct/fluid-calendar.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +source <(curl -s 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://fluidcalendar.com + +APP="fluid-calendar" +var_tags="calendar,tasks" +var_cpu="3" +var_ram="4096" +var_disk="7" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/fluid-calendar ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop fluid-calendar.service + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + cp /opt/fluid-calendar/.env /opt/fluid.env + rm -rf /opt/fluid-calendar + tmp_file=$(mktemp) + wget -q "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -O $tmp_file + unzip -q $tmp_file + mv ${APP}-${RELEASE}/ /opt/fluid-calendar + mv /opt/fluid.env /opt/fluid-calendar/.env + cd /opt/fluid-calendar + export NEXT_TELEMETRY_DISABLED=1 + $STD npm install --legacy-peer-deps + $STD npm run prisma:generate + $STD npx prisma migrate deploy + $STD npm run build:os + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting $APP" + systemctl start fluid-calendar.service + msg_ok "Started $APP" + + msg_info "Cleaning Up" + rm -rf $tmp_file + msg_ok "Cleanup Completed" + + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:3000${CL}" diff --git a/ct/ghost.sh b/ct/ghost.sh index 8003ba206..523ed629c 100644 --- a/ct/ghost.sh +++ b/ct/ghost.sh @@ -25,7 +25,7 @@ function update_script() { check_container_resources msg_info "Updating ${APP} LXC" - if command -v ghost &> /dev/null; then + if command -v ghost &>/dev/null; then current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}') latest_version=$(npm show ghost-cli version) if [ "$current_version" != "$latest_version" ]; then @@ -49,4 +49,4 @@ 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}:2368${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:2368${CL}" diff --git a/ct/gitea.sh b/ct/gitea.sh index 39bdc75aa..5b7bdd4e3 100644 --- a/ct/gitea.sh +++ b/ct/gitea.sh @@ -46,4 +46,4 @@ 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}:3000${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/ct/glance.sh b/ct/glance.sh index ef6a90579..94bc5b5ed 100644 --- a/ct/glance.sh +++ b/ct/glance.sh @@ -64,4 +64,4 @@ 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}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/ct/gokapi.sh b/ct/gokapi.sh index d3cab30f0..801f2a8b1 100644 --- a/ct/gokapi.sh +++ b/ct/gokapi.sh @@ -38,4 +38,4 @@ 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}:53842/setup${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:53842/setup${CL}" diff --git a/ct/gomft.sh b/ct/gomft.sh new file mode 100644 index 000000000..a274d2977 --- /dev/null +++ b/ct/gomft.sh @@ -0,0 +1,81 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: SlaviΕ‘a AreΕΎina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/StarFleetCPTN/GoMFT + +APP="GoMFT" +var_tags="backup" +var_cpu="1" +var_ram="512" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d "/opt/gomft" ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if ! dpkg -l | grep -q "^ii.*build-essential"; then + $STD apt-get install -y build-essential + fi + + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop gomft + msg_ok "Stopped $APP" + + msg_info "Updating $APP to ${RELEASE}" + rm -f /opt/gomft/gomft + temp_file=$(mktemp) + wget -q "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file + tar -xzf $temp_file + cp -rf GoMFT-${RELEASE}/* /opt/gomft + cd /opt/gomft + $STD go mod download + $STD go install github.com/a-h/templ/cmd/templ@latest + $STD $HOME/go/bin/templ generate + export CGO_ENABLED=1 + export GOOS=linux + $STD go build -o gomft + chmod +x /opt/gomft/gomft + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to ${RELEASE}" + + msg_info "Cleaning Up" + rm -f $temp_file + rm -rf GoMFT-${RELEASE} + msg_ok "Cleanup Complete" + + msg_info "Starting $APP" + systemctl start gomft + msg_ok "Started $APP" + + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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}:8080${CL}" diff --git a/ct/headers/alpine-gitea b/ct/headers/alpine-gitea new file mode 100644 index 000000000..085b375a2 --- /dev/null +++ b/ct/headers/alpine-gitea @@ -0,0 +1,6 @@ + ___ __ _ _______ __ + / | / /___ (_)___ ___ / ____(_) /____ ____ _ + / /| | / / __ \/ / __ \/ _ \______/ / __/ / __/ _ \/ __ `/ + / ___ |/ / /_/ / / / / / __/_____/ /_/ / / /_/ __/ /_/ / +/_/ |_/_/ .___/_/_/ /_/\___/ \____/_/\__/\___/\__,_/ + /_/ diff --git a/ct/headers/alpine-redis b/ct/headers/alpine-redis new file mode 100644 index 000000000..d9c0cae4a --- /dev/null +++ b/ct/headers/alpine-redis @@ -0,0 +1,6 @@ + ___ __ _ ____ ___ + / | / /___ (_)___ ___ / __ \___ ____/ (_)____ + / /| | / / __ \/ / __ \/ _ \______/ /_/ / _ \/ __ / / ___/ + / ___ |/ / /_/ / / / / / __/_____/ _, _/ __/ /_/ / (__ ) +/_/ |_/_/ .___/_/_/ /_/\___/ /_/ |_|\___/\__,_/_/____/ + /_/ diff --git a/ct/headers/cryptpad b/ct/headers/cryptpad new file mode 100644 index 000000000..c4d6ebe0e --- /dev/null +++ b/ct/headers/cryptpad @@ -0,0 +1,6 @@ + ______ __ ____ __ + / ____/______ ______ / /_/ __ \____ _____/ / + / / / ___/ / / / __ \/ __/ /_/ / __ `/ __ / +/ /___/ / / /_/ / /_/ / /_/ ____/ /_/ / /_/ / +\____/_/ \__, / .___/\__/_/ \__,_/\__,_/ + /____/_/ diff --git a/ct/headers/fileflows b/ct/headers/fileflows new file mode 100644 index 000000000..2f25cf3e7 --- /dev/null +++ b/ct/headers/fileflows @@ -0,0 +1,6 @@ + _______ __ ________ + / ____(_) /__ / ____/ /___ _ _______ + / /_ / / / _ \/ /_ / / __ \ | /| / / ___/ + / __/ / / / __/ __/ / / /_/ / |/ |/ (__ ) +/_/ /_/_/\___/_/ /_/\____/|__/|__/____/ + diff --git a/ct/headers/fluid-calendar b/ct/headers/fluid-calendar new file mode 100644 index 000000000..02b3d8dc6 --- /dev/null +++ b/ct/headers/fluid-calendar @@ -0,0 +1,6 @@ + ______ _ __ __ __ + / __/ /_ __(_)___/ / _________ _/ /__ ____ ____/ /___ ______ + / /_/ / / / / / __ /_____/ ___/ __ `/ / _ \/ __ \/ __ / __ `/ ___/ + / __/ / /_/ / / /_/ /_____/ /__/ /_/ / / __/ / / / /_/ / /_/ / / +/_/ /_/\__,_/_/\__,_/ \___/\__,_/_/\___/_/ /_/\__,_/\__,_/_/ + diff --git a/ct/headers/gomft b/ct/headers/gomft new file mode 100644 index 000000000..7833e25ca --- /dev/null +++ b/ct/headers/gomft @@ -0,0 +1,6 @@ + ______ __ _______________ + / ____/___ / |/ / ____/_ __/ + / / __/ __ \/ /|_/ / /_ / / +/ /_/ / /_/ / / / / __/ / / +\____/\____/_/ /_/_/ /_/ + diff --git a/ct/headers/npmplus b/ct/headers/npmplus new file mode 100644 index 000000000..9920f2976 --- /dev/null +++ b/ct/headers/npmplus @@ -0,0 +1,6 @@ + _ ______ __ ___ __ + / | / / __ \/ |/ /___ / /_ _______ + / |/ / /_/ / /|_/ / __ \/ / / / / ___/ + / /| / ____/ / / / /_/ / / /_/ (__ ) +/_/ |_/_/ /_/ /_/ .___/_/\__,_/____/ + /_/ diff --git a/ct/headers/plant-it b/ct/headers/plant-it new file mode 100644 index 000000000..b1008b5ce --- /dev/null +++ b/ct/headers/plant-it @@ -0,0 +1,6 @@ + ____ __ __ _ __ + / __ \/ /___ _____ / /_ (_) /_ + / /_/ / / __ `/ __ \/ __/_____/ / __/ + / ____/ / /_/ / / / / /_/_____/ / /_ +/_/ /_/\__,_/_/ /_/\__/ /_/\__/ + diff --git a/ct/headers/seafile b/ct/headers/seafile new file mode 100644 index 000000000..5095b635a --- /dev/null +++ b/ct/headers/seafile @@ -0,0 +1,6 @@ + _____ _____ __ + / ___/___ ____ _/ __(_) /__ + \__ \/ _ \/ __ `/ /_/ / / _ \ + ___/ / __/ /_/ / __/ / / __/ +/____/\___/\__,_/_/ /_/_/\___/ + diff --git a/ct/headers/wazuh b/ct/headers/wazuh new file mode 100644 index 000000000..e72c98aa8 --- /dev/null +++ b/ct/headers/wazuh @@ -0,0 +1,6 @@ + _ __ __ +| | / /___ _____ __ __/ /_ +| | /| / / __ `/_ / / / / / __ \ +| |/ |/ / /_/ / / /_/ /_/ / / / / +|__/|__/\__,_/ /___/\__,_/_/ /_/ + diff --git a/ct/headers/yt-dlp-webui b/ct/headers/yt-dlp-webui new file mode 100644 index 000000000..6d1f6b828 --- /dev/null +++ b/ct/headers/yt-dlp-webui @@ -0,0 +1,6 @@ + __ ____ __ _ + __ __/ /_ ____/ / /___ _ _____ / /_ __ __(_) + / / / / __/_____/ __ / / __ \_____| | /| / / _ \/ __ \/ / / / / + / /_/ / /_/_____/ /_/ / / /_/ /_____/ |/ |/ / __/ /_/ / /_/ / / + \__, /\__/ \__,_/_/ .___/ |__/|__/\___/_.___/\__,_/_/ +/____/ /_/ diff --git a/ct/headscale.sh b/ct/headscale.sh index 1767ba387..df66dabf9 100644 --- a/ct/headscale.sh +++ b/ct/headscale.sh @@ -41,7 +41,8 @@ function update_script() { msg_ok "Updated $APP to ${RELEASE}" msg_info "Starting ${APP}" - systemctl start headscale + # Temporary fix until headscale project resolves service getting disabled on updates. + systemctl enable -q --now headscale msg_ok "Started ${APP}" msg_ok "Updated Successfully" else @@ -55,4 +56,4 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/ct/hev-socks5-server.sh b/ct/hev-socks5-server.sh index f439d4284..84e9bd287 100644 --- a/ct/hev-socks5-server.sh +++ b/ct/hev-socks5-server.sh @@ -61,4 +61,4 @@ msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it with a SOCKS5 client using the following URL:${CL}" echo -e "${TAB}${GATEWAY}${BGN}${IP}:1080${CL}" -echo -e "${INFO}${YW} and the credentials stored at /root/hev.creds${CL}" \ No newline at end of file +echo -e "${INFO}${YW} and the credentials stored at /root/hev.creds${CL}" diff --git a/ct/homepage.sh b/ct/homepage.sh index ea6cfd86c..ca50bb143 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -8,8 +8,8 @@ source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/b APP="Homepage" var_tags="dashboard" var_cpu="2" -var_ram="1024" -var_disk="3" +var_ram="4096" +var_disk="6" var_os="debian" var_version="12" var_unprivileged="1" @@ -35,6 +35,7 @@ function update_script() { echo "Installed NPM..." fi fi + LOCAL_IP=$(hostname -I | awk '{print $1}') RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then msg_info "Updating Homepage to v${RELEASE} (Patience)" @@ -49,7 +50,11 @@ function update_script() { $STD npx --yes update-browserslist-db@latest export NEXT_PUBLIC_VERSION="v$RELEASE" export NEXT_PUBLIC_REVISION="source" + export NEXT_TELEMETRY_DISABLED=1 $STD pnpm build + if [[ ! -f /opt/homepage/.env ]]; then + echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" > /opt/homepage/.env + fi systemctl start homepage echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated Homepage to v${RELEASE}" diff --git a/ct/influxdb.sh b/ct/influxdb.sh index 17646b650..aeaec3b55 100644 --- a/ct/influxdb.sh +++ b/ct/influxdb.sh @@ -41,4 +41,4 @@ 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}:8086${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP} and Port 8888 for v1 or Port 8086 (v2)${CL}" diff --git a/ct/kimai.sh b/ct/kimai.sh index 091677b0d..351833a40 100644 --- a/ct/kimai.sh +++ b/ct/kimai.sh @@ -54,12 +54,6 @@ function update_script() { cd /opt/kimai $STD composer install --no-dev --optimize-autoloader $STD bin/console kimai:update - chown -R :www-data . - chmod -R g+r . - chmod -R g+rw var/ - chmod -R 777 /opt/kimai/var/ - chown -R www-data:www-data /opt/kimai - chmod -R 755 /opt/kimai echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated ${APP} to ${RELEASE}" @@ -67,6 +61,14 @@ function update_script() { systemctl start apache2 msg_ok "Started Apache2" + msg_info "Setup Permissions" + chown -R :www-data /opt/* + chmod -R g+r /opt/* + chmod -R g+rw /opt/* + chown -R www-data:www-data /opt/* + chmod -R 777 /opt/* + msg_ok "Setup Permissions" + msg_info "Cleaning Up" rm -rf ${RELEASE}.zip rm -rf "$BACKUP_DIR" diff --git a/ct/memos.sh b/ct/memos.sh index e10c300e3..e89974fcb 100644 --- a/ct/memos.sh +++ b/ct/memos.sh @@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/b APP="Memos" var_tags="notes" var_cpu="2" -var_ram="2048" +var_ram="3072" var_disk="7" var_os="debian" var_version="12" @@ -36,6 +36,7 @@ function update_script() { exit fi systemctl stop memos + export NODE_OPTIONS="--max-old-space-size=2048" cd /opt/memos/web $STD pnpm i --frozen-lockfile $STD pnpm build diff --git a/ct/npmplus.sh b/ct/npmplus.sh new file mode 100644 index 000000000..cbc4682ed --- /dev/null +++ b/ct/npmplus.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/ZoeyVid/NPMplus + +APP="NPMplus" +var_tags="proxy;nginx" +var_cpu="1" +var_ram="512" +var_disk="3" +var_os="alpine" +var_version="3.21" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \ + "1" "Check for Alpine Updates" ON \ + 3>&1 1>&2 2>&3) + + header_info + if [ "$UPD" == "1" ]; then + apk update && apk upgrade + exit + fi +} + +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}https://${IP}:81${CL}" diff --git a/ct/omada.sh b/ct/omada.sh index b539c9374..ddca06c7f 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -42,8 +42,18 @@ function update_script() { $STD apt-get install -y --only-upgrade mongodb-org msg_ok "Updated MongoDB to $MONGODB_VERSION" + msg_info "Checking if right Azul Zulu Java is installed" + java_version=$(java -version 2>&1 | awk -F[\"_] '/version/ {print $2}') + if [[ "$java_version" =~ ^1\.8\.* ]]; then + $STD apt-get remove --purge -y zulu8-jdk + $STD apt-get -y install zulu21-jre-headless + msg_ok "Updated Azul Zulu Java to 21" + else + msg_ok "Azul Zulu Java 21 already installed" + fi + msg_info "Updating Omada Controller" - latest_url=$(curl -s "https://support.omadanetworks.com/en/product/omada-software-controller/?resourceType=download" | grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | head -n 1) + latest_url=$(curl -s "https://support.omadanetworks.com/en/download/software/omada-controller/" | grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | head -n 1) latest_version=$(basename "$latest_url") if [ -z "${latest_version}" ]; then msg_error "It seems that the server (tp-link.com) might be down. Please try again at a later time." @@ -51,7 +61,8 @@ function update_script() { fi wget -qL ${latest_url} - dpkg -i ${latest_version} + export DEBIAN_FRONTEND=noninteractive + $STD dpkg -i ${latest_version} rm -rf ${latest_version} msg_ok "Updated Omada Controller" } diff --git a/ct/openwebui.sh b/ct/openwebui.sh index 5dac16e83..87975c40d 100644 --- a/ct/openwebui.sh +++ b/ct/openwebui.sh @@ -29,7 +29,7 @@ function update_script() { fi msg_info "Updating ${APP} (Patience)" cd /opt/open-webui - mkdir /opt/open-webui-backup + mkdir -p /opt/open-webui-backup cp -rf /opt/open-webui/backend/data /opt/open-webui-backup git add -A $STD git stash @@ -46,7 +46,9 @@ function update_script() { cd ./backend $STD pip install -r requirements.txt -U cp -rf /opt/open-webui-backup/* /opt/open-webui/backend - $STD git stash pop + if git stash list | grep -q 'stash@{'; then + $STD git stash pop + fi systemctl start open-webui.service msg_ok "Updated Successfully" exit @@ -59,4 +61,4 @@ 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}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/ct/paperless-gpt.sh b/ct/paperless-gpt.sh index d282010b0..be6760ba9 100644 --- a/ct/paperless-gpt.sh +++ b/ct/paperless-gpt.sh @@ -2,7 +2,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/icereed/paperless-gpt APP="Paperless-GPT" diff --git a/ct/plant-it.sh b/ct/plant-it.sh new file mode 100644 index 000000000..c95e12ba9 --- /dev/null +++ b/ct/plant-it.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://plant-it.org/ + +APP="Plant-it" +var_tags="plants;garden" +var_cpu="2" +var_ram="2048" +var_disk="5" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/plant-it ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/MDeLuise/plant-it/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop plant-it + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + wget -q -O /opt/plant-it/server.jar "https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/server.jar" + cd /opt/plant-it/frontend + wget -q https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/client.tar.gz + tar -xzf client.tar.gz + rm -f client.tar.gz + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting $APP" + systemctl start plant-it + msg_ok "Started $APP" + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:3000${CL}" diff --git a/ct/prometheus-pve-exporter.sh b/ct/prometheus-pve-exporter.sh index 4987f816a..78b034aa3 100644 --- a/ct/prometheus-pve-exporter.sh +++ b/ct/prometheus-pve-exporter.sh @@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m APP="Prometheus-PVE-Exporter" var_tags="monitoring" var_cpu="1" -var_ram="1024" +var_ram="512" var_disk="2" var_os="debian" var_version="12" diff --git a/ct/qbittorrent.sh b/ct/qbittorrent.sh index 3d59d6010..4777db96e 100644 --- a/ct/qbittorrent.sh +++ b/ct/qbittorrent.sh @@ -27,10 +27,36 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - msg_info "Updating ${APP} LXC" - $STD apt-get update - $STD apt-get -y upgrade - msg_ok "Updated ${APP} LXC" + if [[ ! -f /opt/${APP}_version.txt ]]; then + touch /opt/${APP}_version.txt + mkdir -p $HOME/.config/qBittorrent/ + mkdir -p /opt/qbittorrent/ + mv /.config/qBittorrent $HOME/.config/ + $STD apt-get remove --purge -y qbittorrent-nox + sed -i 's@ExecStart=/usr/bin/qbittorrent-nox@ExecStart=/opt/qbittorrent/qbittorrent-nox@g' /etc/systemd/system/qbittorrent-nox.service + systemctl daemon-reload + fi + FULLRELEASE=$(curl -s https://api.github.com/repos/userdocs/qbittorrent-nox-static/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + RELEASE=$(echo $FULLRELEASE | cut -c 9-13) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop qbittorrent-nox + msg_ok "Stopped Service" + + msg_info "Updating ${APP} to v${RELEASE}" + rm -f /opt/qbittorrent/qbittorrent-nox + curl -fsSL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${FULLRELEASE}/x86_64-qbittorrent-nox" -o /opt/qbittorrent/qbittorrent-nox + chmod +x /opt/qbittorrent/qbittorrent-nox + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting Service" + systemctl start qbittorrent-nox + msg_ok "Started Service" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + fi exit } @@ -41,4 +67,4 @@ 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}:8090${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}" diff --git a/ct/revealjs.sh b/ct/revealjs.sh index b9bebeb55..5870d581c 100644 --- a/ct/revealjs.sh +++ b/ct/revealjs.sh @@ -40,12 +40,11 @@ function update_script() { tar zxf $temp_file rm -rf /opt/revealjs/node_modules/* cp /opt/revealjs/index.html /opt - cp /opt/revealjs/gulpfile.js /opt cp -rf reveal.js-${RELEASE}/* /opt/revealjs cd /opt/revealjs $STD npm install cp -f /opt/index.html /opt/revealjs - cp -f /opt/gulpfile.js /opt/revealjs + sed -i '25s/localhost/0.0.0.0/g' /opt/revealjs/gulpfile.js echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated $APP to ${RELEASE}" diff --git a/ct/seafile.sh b/ct/seafile.sh new file mode 100644 index 000000000..d6d13a737 --- /dev/null +++ b/ct/seafile.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 tteck +# Author: dave-yap (dave-yap) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://seafile.com/ + +APP="Seafile" +var_tags="documents" +var_cpu="2" +var_ram="2048" +var_disk="20" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +base_settings + +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/seafile.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_ok "No upgrade path available now." + 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}:8000${CL}" \ No newline at end of file diff --git a/ct/snipeit.sh b/ct/snipeit.sh index aaa93aa9d..a5a76db49 100644 --- a/ct/snipeit.sh +++ b/ct/snipeit.sh @@ -49,7 +49,7 @@ function update_script() { cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads cd /opt/snipe-it/ export COMPOSER_ALLOW_SUPERUSER=1 - $STD composer install --no-dev --prefer-source + $STD composer install --no-dev --optimize-autoloader --no-interaction $STD composer dump-autoload $STD php artisan migrate --force $STD php artisan config:clear diff --git a/ct/teddycloud.sh b/ct/teddycloud.sh index d95c27828..180227104 100644 --- a/ct/teddycloud.sh +++ b/ct/teddycloud.sh @@ -32,10 +32,10 @@ function update_script() { msg_info "Updating ${APP} to v${VERSION}" cd /opt - mv /opt/teddycloud /opt_teddycloud_bak + mv /opt/teddycloud /opt/teddycloud_bak wget -q "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip" unzip -q -d /opt/teddycloud teddycloud.amd64.release_v${VERSION}.zip - cp -R /opt_teddycloud_bak/certs /opt_teddycloud_bak/config /opt_teddycloud_bak/data /opt/teddycloud + cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud echo "${VERSION}" >"/opt/${APP}_version.txt" msg_ok "Updated ${APP} to v${VERSION}" diff --git a/ct/trilium.sh b/ct/trilium.sh index 4e574ebe6..ecfa1bde6 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -28,8 +28,8 @@ function update_script() { exit fi if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi - RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "v${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then msg_info "Stopping ${APP}" systemctl stop trilium sleep 1 @@ -40,15 +40,15 @@ function update_script() { mv /opt/trilium/{db,dump-db} /opt/trilium_backup/ rm -rf /opt/trilium cd /tmp - wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz - tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz - mv trilium-linux-x64-server /opt/trilium + wget -q https://github.com/TriliumNext/Notes/releases/download/v${RELEASE}/TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz + tar -xf TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz + mv TriliumNextNotes-Server-$RELEASE-linux-x64 /opt/trilium cp -r /opt/trilium_backup/{db,dump-db} /opt/trilium/ - echo "${RELEASE}" >/opt/${APP}_version.txt + echo "v${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated to ${RELEASE}" msg_info "Cleaning up" - rm -rf /tmp/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz + rm -rf /tmp/TriliumNextNotes-Server-${RELEASE}-linux-x64.tar.xz rm -rf /opt/trilium_backup msg_ok "Cleaned" diff --git a/ct/vaultwarden.sh b/ct/vaultwarden.sh index 4cb7565eb..928a2f13f 100644 --- a/ct/vaultwarden.sh +++ b/ct/vaultwarden.sh @@ -3,7 +3,7 @@ source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/b # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://www.vaultwarden.net/ +# Source: https://github.com/dani-garcia/vaultwarden APP="Vaultwarden" var_tags="password-manager" diff --git a/ct/wazuh.sh b/ct/wazuh.sh new file mode 100644 index 000000000..f139028a9 --- /dev/null +++ b/ct/wazuh.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2025 community-scripts ORG +# Author: Omar Minaya +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://wazuh.com/ + +APP="Wazuh" +var_tags="security;monitoring" +var_cpu="4" +var_ram="4096" +var_disk="18" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /lib/systemd/system/wazuh-manager.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + $STD apt-get update + $STD apt-get -y upgrade + msg_ok "Updated ${APP} LXC" + 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}https://${IP}:443${CL}" diff --git a/ct/wger.sh b/ct/wger.sh index 3b017dd76..09f92918f 100644 --- a/ct/wger.sh +++ b/ct/wger.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/tremor021/ProxmoxVE/refs/heads/wger/misc/build.func) +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: SlaviΕ‘a AreΕΎina (tremor021) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/wikijs.sh b/ct/wikijs.sh index be0cf1c88..f61e4b7f5 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -27,35 +27,50 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - msg_info "Stopping ${APP}" - systemctl stop wikijs - msg_ok "Stopped ${APP}" + RELEASE=$(curl -s https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite." + SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false") + if [[ "${SQLITE_INSTALL}" == "true" && "${RELEASE}" =~ ^3.* ]]; then + echo "SQLite is not supported in v3.x+, currently there is no update path availble." + exit + fi + msg_ok "There is an update path available for ${APP} to v${RELEASE}" - msg_info "Backing up Data" - rm -rf ~/data-backup - mkdir -p ~/data-backup - [ -f /opt/wikijs/db.sqlite ] && cp /opt/wikijs/db.sqlite ~/data-backup - [ -f /opt/wikijs/config.yml ] && cp /opt/wikijs/config.yml ~/data-backup - [ -d /opt/wikijs/data ] && cp -R /opt/wikijs/data ~/data-backup - msg_ok "Backed up Data" + msg_info "Stopping ${APP}" + systemctl stop wikijs + msg_ok "Stopped ${APP}" - msg_info "Updating ${APP}" - rm -rf /opt/wikijs/* - cd /opt/wikijs - wget -q https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz - tar xzf wiki-js.tar.gz - msg_ok "Updated ${APP}" + msg_info "Backing up Data" + mkdir /opt/wikijs-backup + $SQLITE_INSTALL && cp /opt/wikijs/db.sqlite /opt/wikijs-backup + cp -R /opt/wikijs/{config.yml,/data} /opt/wikijs-backup + msg_ok "Backed up Data" - msg_info "Restoring Data" - cp -R ~/data-backup/* /opt/wikijs - rm -rf ~/data-backup - $STD npm rebuild sqlite3 - msg_ok "Restored Data" + msg_info "Updating ${APP}" + rm -rf /opt/wikijs/* + cd /opt/wikijs + wget -q "https://github.com/requarks/wiki/releases/download/v${RELEASE}/wiki-js.tar.gz" + tar -xzf wiki-js.tar.gz + msg_ok "Updated ${APP}" - msg_info "Starting ${APP}" - systemctl start wikijs - msg_ok "Started ${APP}" - msg_ok "Updated Successfully" + msg_info "Restoring Data" + cp -R /opt/wikijs-backup/* /opt/wikijs + $SQLITE_INSTALL && $STD npm rebuild sqlite3 + msg_ok "Restored Data" + + msg_info "Starting ${APP}" + systemctl start wikijs + msg_ok "Started ${APP}" + + msg_info "Cleaning Up" + rm -rf /opt/wikijs/wiki-js.tar.gz + rm -rf /opt/wikijs-backup + msg_ok "Cleanup Completed" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + fi exit } @@ -66,4 +81,4 @@ 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}:3000${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/yt-dlp-webui.sh b/ct/yt-dlp-webui.sh new file mode 100644 index 000000000..30141d49f --- /dev/null +++ b/ct/yt-dlp-webui.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: CrazyWolf13 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/marcopiovanello/yt-dlp-web-ui + +APP="yt-dlp-webui" +var_tags="downloads;yt-dlp" +var_cpu="2" +var_ram="1024" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/local/bin/yt-dlp-webui ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + msg_info "Updating yt-dlp" + $STD yt-dlp -U + msg_ok "Updated yt-dlp" + RELEASE=$(curl -s https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/yt-dlp-webui_version.txt)" ]] || [[ ! -f /opt/yt-dlp-webui_version.txt ]]; then + + msg_info "Stopping $APP" + systemctl stop yt-dlp-webui + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + rm -rf /usr/local/bin/yt-dlp-webui + wget -q "https://github.com/marcopiovanello/yt-dlp-web-ui/releases/download/v${RELEASE}/yt-dlp-webui_linux-amd64" -O /usr/local/bin/yt-dlp-webui + chmod +x /usr/local/bin/yt-dlp-webui + msg_ok "Updated $APP LXC" + + msg_info "Starting $APP" + systemctl start yt-dlp-webui + msg_ok "Started $APP" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:3033${CL}" diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 3ac30e981..d4d35bfd3 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -33,7 +33,7 @@ "fuse.js": "^7.0.0", "lucide-react": "^0.453.0", "mini-svg-data-uri": "^1.4.4", - "next": "15.1.3", + "next": "15.2.3", "next-themes": "^0.3.0", "nuqs": "^2.1.1", "pocketbase": "^0.21.4", @@ -370,9 +370,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -1549,9 +1549,10 @@ "license": "MIT" }, "node_modules/@next/env": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.3.tgz", - "integrity": "sha512-Q1tXwQCGWyA3ehMph3VO+E6xFPHDKdHFYosadt0F78EObYxPio0S09H9UGYznDe6Wc8eLKLG89GqcFJJDiK5xw==" + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.3.tgz", + "integrity": "sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==", + "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { "version": "15.0.2", @@ -1594,12 +1595,13 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.3.tgz", - "integrity": "sha512-aZtmIh8jU89DZahXQt1La0f2EMPt/i7W+rG1sLtYJERsP7GRnNFghsciFpQcKHcGh4dUiyTB5C1X3Dde/Gw8gg==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.3.tgz", + "integrity": "sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1609,12 +1611,13 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.3.tgz", - "integrity": "sha512-aw8901rjkVBK5mbq5oV32IqkJg+CQa6aULNlN8zyCWSsePzEG3kpDkAFkkTOh3eJ0p95KbkLyWBzslQKamXsLA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.3.tgz", + "integrity": "sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1624,12 +1627,13 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.3.tgz", - "integrity": "sha512-YbdaYjyHa4fPK4GR4k2XgXV0p8vbU1SZh7vv6El4bl9N+ZSiMfbmqCuCuNU1Z4ebJMumafaz6UCC2zaJCsdzjw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.3.tgz", + "integrity": "sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1639,12 +1643,13 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.3.tgz", - "integrity": "sha512-qgH/aRj2xcr4BouwKG3XdqNu33SDadqbkqB6KaZZkozar857upxKakbRllpqZgWl/NDeSCBYPmUAZPBHZpbA0w==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.3.tgz", + "integrity": "sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1654,12 +1659,13 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.3.tgz", - "integrity": "sha512-uzafnTFwZCPN499fNVnS2xFME8WLC9y7PLRs/yqz5lz1X/ySoxfaK2Hbz74zYUdEg+iDZPd8KlsWaw9HKkLEVw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.3.tgz", + "integrity": "sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1669,12 +1675,13 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.3.tgz", - "integrity": "sha512-el6GUFi4SiDYnMTTlJJFMU+GHvw0UIFnffP1qhurrN1qJV3BqaSRUjkDUgVV44T6zpw1Lc6u+yn0puDKHs+Sbw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.3.tgz", + "integrity": "sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1684,12 +1691,13 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.3.tgz", - "integrity": "sha512-6RxKjvnvVMM89giYGI1qye9ODsBQpHSHVo8vqA8xGhmRPZHDQUE4jcDbhBwK0GnFMqBnu+XMg3nYukNkmLOLWw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.3.tgz", + "integrity": "sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -1699,12 +1707,13 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.3.tgz", - "integrity": "sha512-VId/f5blObG7IodwC5Grf+aYP0O8Saz1/aeU3YcWqNdIUAmFQY3VEPKPaIzfv32F/clvanOb2K2BR5DtDs6XyQ==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.3.tgz", + "integrity": "sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -7107,11 +7116,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/next/-/next-15.1.3.tgz", - "integrity": "sha512-5igmb8N8AEhWDYzogcJvtcRDU6n4cMGtBklxKD4biYv4LXN8+awc/bbQ2IM2NQHdVPgJ6XumYXfo3hBtErg1DA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.3.tgz", + "integrity": "sha512-x6eDkZxk2rPpu46E1ZVUWIBhYCLszmUY6fvHBFcbzJ9dD+qRX6vcHusaqqDlnY+VngKzKbAiG2iRCkPbmi8f7w==", + "license": "MIT", "dependencies": { - "@next/env": "15.1.3", + "@next/env": "15.2.3", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", @@ -7126,14 +7136,14 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.1.3", - "@next/swc-darwin-x64": "15.1.3", - "@next/swc-linux-arm64-gnu": "15.1.3", - "@next/swc-linux-arm64-musl": "15.1.3", - "@next/swc-linux-x64-gnu": "15.1.3", - "@next/swc-linux-x64-musl": "15.1.3", - "@next/swc-win32-arm64-msvc": "15.1.3", - "@next/swc-win32-x64-msvc": "15.1.3", + "@next/swc-darwin-arm64": "15.2.3", + "@next/swc-darwin-x64": "15.2.3", + "@next/swc-linux-arm64-gnu": "15.2.3", + "@next/swc-linux-arm64-musl": "15.2.3", + "@next/swc-linux-x64-gnu": "15.2.3", + "@next/swc-linux-x64-musl": "15.2.3", + "@next/swc-win32-arm64-msvc": "15.2.3", + "@next/swc-win32-x64-msvc": "15.2.3", "sharp": "^0.33.5" }, "peerDependencies": { diff --git a/frontend/package.json b/frontend/package.json index 3457b6a22..97a41e9a0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -44,7 +44,7 @@ "fuse.js": "^7.0.0", "lucide-react": "^0.453.0", "mini-svg-data-uri": "^1.4.4", - "next": "15.1.3", + "next": "15.2.3", "next-themes": "^0.3.0", "nuqs": "^2.1.1", "pocketbase": "^0.21.4", diff --git a/frontend/public/json b/frontend/public/json deleted file mode 120000 index cd8045684..000000000 --- a/frontend/public/json +++ /dev/null @@ -1 +0,0 @@ -../../json \ No newline at end of file diff --git a/json/2fauth.json b/frontend/public/json/2fauth.json similarity index 100% rename from json/2fauth.json rename to frontend/public/json/2fauth.json diff --git a/json/actualbudget.json b/frontend/public/json/actualbudget.json similarity index 100% rename from json/actualbudget.json rename to frontend/public/json/actualbudget.json diff --git a/json/add-beszel-agent-lxc.json b/frontend/public/json/add-beszel-agent-lxc.json similarity index 100% rename from json/add-beszel-agent-lxc.json rename to frontend/public/json/add-beszel-agent-lxc.json diff --git a/json/add-lxc-iptag.json b/frontend/public/json/add-lxc-iptag.json similarity index 100% rename from json/add-lxc-iptag.json rename to frontend/public/json/add-lxc-iptag.json diff --git a/json/add-netbird-lxc.json b/frontend/public/json/add-netbird-lxc.json similarity index 100% rename from json/add-netbird-lxc.json rename to frontend/public/json/add-netbird-lxc.json diff --git a/json/add-tailscale-lxc.json b/frontend/public/json/add-tailscale-lxc.json similarity index 100% rename from json/add-tailscale-lxc.json rename to frontend/public/json/add-tailscale-lxc.json diff --git a/json/adguard.json b/frontend/public/json/adguard.json similarity index 100% rename from json/adguard.json rename to frontend/public/json/adguard.json diff --git a/json/adventurelog.json b/frontend/public/json/adventurelog.json similarity index 100% rename from json/adventurelog.json rename to frontend/public/json/adventurelog.json diff --git a/json/agentdvr.json b/frontend/public/json/agentdvr.json similarity index 100% rename from json/agentdvr.json rename to frontend/public/json/agentdvr.json diff --git a/json/all-templates.json b/frontend/public/json/all-templates.json similarity index 100% rename from json/all-templates.json rename to frontend/public/json/all-templates.json diff --git a/json/alpine-it-tools.json b/frontend/public/json/alpine-it-tools.json similarity index 100% rename from json/alpine-it-tools.json rename to frontend/public/json/alpine-it-tools.json diff --git a/json/alpine.json b/frontend/public/json/alpine.json similarity index 81% rename from json/alpine.json rename to frontend/public/json/alpine.json index 93f0ce30d..3bb4c144d 100644 --- a/json/alpine.json +++ b/frontend/public/json/alpine.json @@ -24,6 +24,17 @@ "os": "alpine", "version": "3.21" } + }, + { + "type": "alpine", + "script": "ct/alpine.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 0.1, + "os": "alpine", + "version": "3.21" + } } ], "default_credentials": { @@ -37,4 +48,4 @@ } ], "status": "βœ…" -} \ No newline at end of file +} diff --git a/json/apache-cassandra.json b/frontend/public/json/apache-cassandra.json similarity index 100% rename from json/apache-cassandra.json rename to frontend/public/json/apache-cassandra.json diff --git a/json/apache-couchdb.json b/frontend/public/json/apache-couchdb.json similarity index 100% rename from json/apache-couchdb.json rename to frontend/public/json/apache-couchdb.json diff --git a/json/apache-guacamole.json b/frontend/public/json/apache-guacamole.json similarity index 100% rename from json/apache-guacamole.json rename to frontend/public/json/apache-guacamole.json diff --git a/json/apache-tika.json b/frontend/public/json/apache-tika.json similarity index 100% rename from json/apache-tika.json rename to frontend/public/json/apache-tika.json diff --git a/json/apache-tomcat.json b/frontend/public/json/apache-tomcat.json similarity index 100% rename from json/apache-tomcat.json rename to frontend/public/json/apache-tomcat.json diff --git a/json/apt-cacher-ng.json b/frontend/public/json/apt-cacher-ng.json similarity index 100% rename from json/apt-cacher-ng.json rename to frontend/public/json/apt-cacher-ng.json diff --git a/json/archivebox.json b/frontend/public/json/archivebox.json similarity index 100% rename from json/archivebox.json rename to frontend/public/json/archivebox.json diff --git a/json/archlinux-vm.json b/frontend/public/json/archlinux-vm.json similarity index 100% rename from json/archlinux-vm.json rename to frontend/public/json/archlinux-vm.json diff --git a/json/aria2.json b/frontend/public/json/aria2.json similarity index 100% rename from json/aria2.json rename to frontend/public/json/aria2.json diff --git a/json/audiobookshelf.json b/frontend/public/json/audiobookshelf.json similarity index 98% rename from json/audiobookshelf.json rename to frontend/public/json/audiobookshelf.json index cecaf2b8b..a445e9da1 100644 --- a/json/audiobookshelf.json +++ b/frontend/public/json/audiobookshelf.json @@ -2,7 +2,7 @@ "name": "Audiobookshelf", "slug": "audiobookshelf", "categories": [ - 12 + 13 ], "date_created": "2024-05-02", "type": "ct", @@ -32,4 +32,4 @@ }, "notes": [], "status": "βœ…" -} \ No newline at end of file +} diff --git a/json/authelia.json b/frontend/public/json/authelia.json similarity index 100% rename from json/authelia.json rename to frontend/public/json/authelia.json diff --git a/json/authentik.json b/frontend/public/json/authentik.json similarity index 100% rename from json/authentik.json rename to frontend/public/json/authentik.json diff --git a/json/autobrr.json b/frontend/public/json/autobrr.json similarity index 100% rename from json/autobrr.json rename to frontend/public/json/autobrr.json diff --git a/json/baikal.json b/frontend/public/json/baikal.json similarity index 100% rename from json/baikal.json rename to frontend/public/json/baikal.json diff --git a/json/barcode-buddy.json b/frontend/public/json/barcode-buddy.json similarity index 100% rename from json/barcode-buddy.json rename to frontend/public/json/barcode-buddy.json diff --git a/json/bazarr.json b/frontend/public/json/bazarr.json similarity index 100% rename from json/bazarr.json rename to frontend/public/json/bazarr.json diff --git a/json/beszel.json b/frontend/public/json/beszel.json similarity index 100% rename from json/beszel.json rename to frontend/public/json/beszel.json diff --git a/json/blocky.json b/frontend/public/json/blocky.json similarity index 100% rename from json/blocky.json rename to frontend/public/json/blocky.json diff --git a/json/boltdiy.json b/frontend/public/json/boltdiy.json similarity index 100% rename from json/boltdiy.json rename to frontend/public/json/boltdiy.json diff --git a/json/bookstack.json b/frontend/public/json/bookstack.json similarity index 100% rename from json/bookstack.json rename to frontend/public/json/bookstack.json diff --git a/json/bunkerweb.json b/frontend/public/json/bunkerweb.json similarity index 100% rename from json/bunkerweb.json rename to frontend/public/json/bunkerweb.json diff --git a/json/bytestash.json b/frontend/public/json/bytestash.json similarity index 100% rename from json/bytestash.json rename to frontend/public/json/bytestash.json diff --git a/json/caddy.json b/frontend/public/json/caddy.json similarity index 100% rename from json/caddy.json rename to frontend/public/json/caddy.json diff --git a/json/calibre-web.json b/frontend/public/json/calibre-web.json similarity index 100% rename from json/calibre-web.json rename to frontend/public/json/calibre-web.json diff --git a/json/casaos.json b/frontend/public/json/casaos.json similarity index 100% rename from json/casaos.json rename to frontend/public/json/casaos.json diff --git a/json/changedetection.json b/frontend/public/json/changedetection.json similarity index 100% rename from json/changedetection.json rename to frontend/public/json/changedetection.json diff --git a/json/channels.json b/frontend/public/json/channels.json similarity index 100% rename from json/channels.json rename to frontend/public/json/channels.json diff --git a/json/checkmk.json b/frontend/public/json/checkmk.json similarity index 100% rename from json/checkmk.json rename to frontend/public/json/checkmk.json diff --git a/json/clean-lxcs.json b/frontend/public/json/clean-lxcs.json similarity index 100% rename from json/clean-lxcs.json rename to frontend/public/json/clean-lxcs.json diff --git a/json/clean-orphaned-lvm.json b/frontend/public/json/clean-orphaned-lvm.json similarity index 100% rename from json/clean-orphaned-lvm.json rename to frontend/public/json/clean-orphaned-lvm.json diff --git a/json/cloudflared.json b/frontend/public/json/cloudflared.json similarity index 100% rename from json/cloudflared.json rename to frontend/public/json/cloudflared.json diff --git a/json/cockpit.json b/frontend/public/json/cockpit.json similarity index 100% rename from json/cockpit.json rename to frontend/public/json/cockpit.json diff --git a/json/code-server.json b/frontend/public/json/code-server.json similarity index 100% rename from json/code-server.json rename to frontend/public/json/code-server.json diff --git a/json/commafeed.json b/frontend/public/json/commafeed.json similarity index 100% rename from json/commafeed.json rename to frontend/public/json/commafeed.json diff --git a/json/cosmos.json b/frontend/public/json/cosmos.json similarity index 100% rename from json/cosmos.json rename to frontend/public/json/cosmos.json diff --git a/json/crafty-controller.json b/frontend/public/json/crafty-controller.json similarity index 100% rename from json/crafty-controller.json rename to frontend/public/json/crafty-controller.json diff --git a/json/cron-update-lxcs.json b/frontend/public/json/cron-update-lxcs.json similarity index 100% rename from json/cron-update-lxcs.json rename to frontend/public/json/cron-update-lxcs.json diff --git a/json/cronicle.json b/frontend/public/json/cronicle.json similarity index 100% rename from json/cronicle.json rename to frontend/public/json/cronicle.json diff --git a/json/cross-seed.json b/frontend/public/json/cross-seed.json similarity index 100% rename from json/cross-seed.json rename to frontend/public/json/cross-seed.json diff --git a/json/crowdsec.json b/frontend/public/json/crowdsec.json similarity index 95% rename from json/crowdsec.json rename to frontend/public/json/crowdsec.json index e3a1aece2..d4ccfb5af 100644 --- a/json/crowdsec.json +++ b/frontend/public/json/crowdsec.json @@ -32,7 +32,7 @@ }, "notes": [ { - "text": "Execute within an existing LXC Console", + "text": "Execute within an existing LXC Console. Debian only!", "type": "warning" } ], diff --git a/frontend/public/json/cryptpad.json b/frontend/public/json/cryptpad.json new file mode 100644 index 000000000..06d45efce --- /dev/null +++ b/frontend/public/json/cryptpad.json @@ -0,0 +1,39 @@ +{ + "name": "CryptPad", + "slug": "cryptpad", + "categories": [ + 12 + ], + "date_created": "2025-03-11", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://docs.cryptpad.org/", + "website": "https://cryptpad.org/", + "logo": "https://raw.githubusercontent.com/cryptpad/cryptpad/refs/heads/main/customize.dist/CryptPad_logo.svg", + "description": "CryptPad is a collaboration suite that is end-to-end encrypted and open-source. It is designed to facilitate collaboration by synchronizing changes to documents in real time. Since all the user data is encrypted, in the event of a breach, attackers have no way of accessing the stored content", + "install_methods": [ + { + "type": "default", + "script": "ct/cryptpad.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 8, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "After installation finishes, `systemctl status cryptpad.service` to get token URL which you can use to create admin account", + "type": "info" + } + ] +} diff --git a/json/daemonsync.json b/frontend/public/json/daemonsync.json similarity index 100% rename from json/daemonsync.json rename to frontend/public/json/daemonsync.json diff --git a/json/dashy.json b/frontend/public/json/dashy.json similarity index 100% rename from json/dashy.json rename to frontend/public/json/dashy.json diff --git a/json/debian-vm.json b/frontend/public/json/debian-vm.json similarity index 89% rename from json/debian-vm.json rename to frontend/public/json/debian-vm.json index 116e28ad7..41fb385cc 100644 --- a/json/debian-vm.json +++ b/frontend/public/json/debian-vm.json @@ -31,6 +31,10 @@ "password": null }, "notes": [ + { + "text": "VM has no root password set. To login type in user `root` and just press enter", + "type": "info" + }, { "text": "after installation, checkout: Β΄https://github.com/community-scripts/ProxmoxVE/discussions/836Β΄", "type": "info" diff --git a/json/debian.json b/frontend/public/json/debian.json similarity index 100% rename from json/debian.json rename to frontend/public/json/debian.json diff --git a/json/deconz.json b/frontend/public/json/deconz.json similarity index 100% rename from json/deconz.json rename to frontend/public/json/deconz.json diff --git a/json/deluge.json b/frontend/public/json/deluge.json similarity index 100% rename from json/deluge.json rename to frontend/public/json/deluge.json diff --git a/json/docker-vm.json b/frontend/public/json/docker-vm.json similarity index 100% rename from json/docker-vm.json rename to frontend/public/json/docker-vm.json diff --git a/json/docker.json b/frontend/public/json/docker.json similarity index 100% rename from json/docker.json rename to frontend/public/json/docker.json diff --git a/json/dockge.json b/frontend/public/json/dockge.json similarity index 100% rename from json/dockge.json rename to frontend/public/json/dockge.json diff --git a/json/docmost.json b/frontend/public/json/docmost.json similarity index 100% rename from json/docmost.json rename to frontend/public/json/docmost.json diff --git a/json/dolibarr.json b/frontend/public/json/dolibarr.json similarity index 100% rename from json/dolibarr.json rename to frontend/public/json/dolibarr.json diff --git a/json/dotnetaspwebapi.json b/frontend/public/json/dotnetaspwebapi.json similarity index 100% rename from json/dotnetaspwebapi.json rename to frontend/public/json/dotnetaspwebapi.json diff --git a/json/duplicati.json b/frontend/public/json/duplicati.json similarity index 100% rename from json/duplicati.json rename to frontend/public/json/duplicati.json diff --git a/json/elementsynapse.json b/frontend/public/json/elementsynapse.json similarity index 100% rename from json/elementsynapse.json rename to frontend/public/json/elementsynapse.json diff --git a/json/emby.json b/frontend/public/json/emby.json similarity index 100% rename from json/emby.json rename to frontend/public/json/emby.json diff --git a/json/emqx.json b/frontend/public/json/emqx.json similarity index 100% rename from json/emqx.json rename to frontend/public/json/emqx.json diff --git a/json/ersatztv.json b/frontend/public/json/ersatztv.json similarity index 100% rename from json/ersatztv.json rename to frontend/public/json/ersatztv.json diff --git a/json/esphome.json b/frontend/public/json/esphome.json similarity index 100% rename from json/esphome.json rename to frontend/public/json/esphome.json diff --git a/json/evcc.json b/frontend/public/json/evcc.json similarity index 100% rename from json/evcc.json rename to frontend/public/json/evcc.json diff --git a/json/excalidraw.json b/frontend/public/json/excalidraw.json similarity index 100% rename from json/excalidraw.json rename to frontend/public/json/excalidraw.json diff --git a/json/fenrus.json b/frontend/public/json/fenrus.json similarity index 100% rename from json/fenrus.json rename to frontend/public/json/fenrus.json diff --git a/json/fhem.json b/frontend/public/json/fhem.json similarity index 100% rename from json/fhem.json rename to frontend/public/json/fhem.json diff --git a/json/filebrowser.json b/frontend/public/json/filebrowser.json similarity index 80% rename from json/filebrowser.json rename to frontend/public/json/filebrowser.json index 4d7f76ad3..c3d7e6301 100644 --- a/json/filebrowser.json +++ b/frontend/public/json/filebrowser.json @@ -24,6 +24,17 @@ "os": null, "version": null } + }, + { + "type": "alpine", + "script": "misc/filebrowser.sh", + "resources": { + "cpu": null, + "ram": null, + "hdd": null, + "os": null, + "version": null + } } ], "default_credentials": { @@ -37,4 +48,4 @@ } ], "status": "βœ…" -} \ No newline at end of file +} diff --git a/frontend/public/json/fileflows.json b/frontend/public/json/fileflows.json new file mode 100644 index 000000000..70aa2753e --- /dev/null +++ b/frontend/public/json/fileflows.json @@ -0,0 +1,39 @@ +{ + "name": "FileFlows", + "slug": "fileflows", + "categories": [ + 13 + ], + "date_created": "2025-03-24", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 19200, + "documentation": "https://fileflows.com/docs", + "website": "https://fileflows.com/", + "logo": "https://raw.githubusercontent.com/revenz/FileFlows/refs/heads/develop/icon.png", + "description": "FileFlows is a powerful, open-source tool for automating media file processing workflows, including encoding, decoding, and media management. It offers an intuitive GUI and extensive plugin support, making it ideal for tasks like video transcoding, organizing, and managing large media libraries.", + "install_methods": [ + { + "type": "default", + "script": "ct/fileflows.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 8, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "With Privileged/Unprivileged Hardware Acceleration Support", + "type": "info" + } + ] +} diff --git a/json/firefly.json b/frontend/public/json/firefly.json similarity index 100% rename from json/firefly.json rename to frontend/public/json/firefly.json diff --git a/json/flaresolverr.json b/frontend/public/json/flaresolverr.json similarity index 100% rename from json/flaresolverr.json rename to frontend/public/json/flaresolverr.json diff --git a/frontend/public/json/flowiseai.json b/frontend/public/json/flowiseai.json new file mode 100644 index 000000000..0502d32f1 --- /dev/null +++ b/frontend/public/json/flowiseai.json @@ -0,0 +1,39 @@ +{ + "name": "FlowiseAI", + "slug": "flowiseai", + "categories": [ + 20 + ], + "date_created": "2024-05-02", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://docs.flowiseai.com/", + "website": "https://flowiseai.com/", + "logo": "https://flowiseai.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flogo-color-high.e60de2f8.png&w=256&q=75", + "description": "FlowiseAI is an open source low-code tool for developers to build customized LLM orchestration flow & AI agents", + "install_methods": [ + { + "type": "default", + "script": "ct/flowiseai.sh", + "resources": { + "cpu": 4, + "ram": 4096, + "hdd": 10, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Application takes long time to install. Please be patient!", + "type": "warning" + } + ] +} diff --git a/frontend/public/json/fluid-calendar.json b/frontend/public/json/fluid-calendar.json new file mode 100644 index 000000000..05f4aa56b --- /dev/null +++ b/frontend/public/json/fluid-calendar.json @@ -0,0 +1,40 @@ +{ + "name": "Fluid-Calendar", + "slug": "fluid-calendar", + "categories": [ + 19, + 0 + ], + "date_created": "2025-03-12", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://github.com/dotnetfactory/fluid-calendar/tree/main/docs", + "website": "https://github.com/dotnetfactory/fluid-calendar", + "logo": "https://raw.githubusercontent.com/dotnetfactory/fluid-calendar/refs/heads/main/src/app/favicon.ico", + "description": "The open-source intelligent calendar that adapts to your workflow. Experience seamless task scheduling powered by AI, designed to make your time management effortless.", + "install_methods": [ + { + "type": "default", + "script": "ct/fluid-calendar.sh", + "resources": { + "cpu": 3, + "ram": 4096, + "hdd": 7, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Creds: cat ~/fluid-calendar.creds", + "type": "info" + } + ] +} diff --git a/json/forgejo.json b/frontend/public/json/forgejo.json similarity index 100% rename from json/forgejo.json rename to frontend/public/json/forgejo.json diff --git a/json/freshrss.json b/frontend/public/json/freshrss.json similarity index 100% rename from json/freshrss.json rename to frontend/public/json/freshrss.json diff --git a/json/frigate.json b/frontend/public/json/frigate.json similarity index 100% rename from json/frigate.json rename to frontend/public/json/frigate.json diff --git a/json/fstrim.json b/frontend/public/json/fstrim.json similarity index 100% rename from json/fstrim.json rename to frontend/public/json/fstrim.json diff --git a/json/ghost.json b/frontend/public/json/ghost.json similarity index 100% rename from json/ghost.json rename to frontend/public/json/ghost.json diff --git a/json/gitea.json b/frontend/public/json/gitea.json similarity index 80% rename from json/gitea.json rename to frontend/public/json/gitea.json index 6d4a29b4c..ac06113be 100644 --- a/json/gitea.json +++ b/frontend/public/json/gitea.json @@ -24,6 +24,17 @@ "os": "debian", "version": "12" } + }, + { + "type": "alpine", + "script": "ct/alpine-gitea.sh", + "resources": { + "cpu": 1, + "ram": 256, + "hdd": 1, + "os": "alpine", + "version": "3.21" + } } ], "default_credentials": { @@ -32,4 +43,4 @@ }, "notes": [], "status": "βœ…" -} \ No newline at end of file +} diff --git a/json/glance.json b/frontend/public/json/glance.json similarity index 100% rename from json/glance.json rename to frontend/public/json/glance.json diff --git a/json/glances.json b/frontend/public/json/glances.json similarity index 100% rename from json/glances.json rename to frontend/public/json/glances.json diff --git a/json/glpi.json b/frontend/public/json/glpi.json similarity index 100% rename from json/glpi.json rename to frontend/public/json/glpi.json diff --git a/json/go2rtc.json b/frontend/public/json/go2rtc.json similarity index 100% rename from json/go2rtc.json rename to frontend/public/json/go2rtc.json diff --git a/json/gokapi.json b/frontend/public/json/gokapi.json similarity index 100% rename from json/gokapi.json rename to frontend/public/json/gokapi.json diff --git a/frontend/public/json/gomft.json b/frontend/public/json/gomft.json new file mode 100644 index 000000000..870ce3743 --- /dev/null +++ b/frontend/public/json/gomft.json @@ -0,0 +1,39 @@ +{ + "name": "GoMFT", + "slug": "gomft", + "categories": [ + 7 + ], + "date_created": "2025-03-18", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8080, + "documentation": "https://github.com/StarFleetCPTN/GoMFT#configuration", + "website": "https://github.com/StarFleetCPTN/GoMFT", + "logo": "https://raw.githubusercontent.com/StarFleetCPTN/GoMFT/83be259754689acc49a4b0dba25ba8384088a0fc/static/img/logo.svg", + "description": "GoMFT is a web-based managed file transfer application built with Go, leveraging rclone for robust file transfer capabilities. It provides a user-friendly interface for configuring, scheduling, and monitoring file transfers across various storage providers.", + "install_methods": [ + { + "type": "default", + "script": "ct/gomft.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 4, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "admin@example.com", + "password": "admin" + }, + "notes": [ + { + "text": "For additional configuration options, edit .env file here: `/opt/gomft/.env`. Check the documentation for more details.", + "type": "info" + } + ] +} diff --git a/json/gotify.json b/frontend/public/json/gotify.json similarity index 100% rename from json/gotify.json rename to frontend/public/json/gotify.json diff --git a/json/grafana.json b/frontend/public/json/grafana.json similarity index 100% rename from json/grafana.json rename to frontend/public/json/grafana.json diff --git a/json/graylog.json b/frontend/public/json/graylog.json similarity index 100% rename from json/graylog.json rename to frontend/public/json/graylog.json diff --git a/json/grist.json b/frontend/public/json/grist.json similarity index 100% rename from json/grist.json rename to frontend/public/json/grist.json diff --git a/json/grocy.json b/frontend/public/json/grocy.json similarity index 100% rename from json/grocy.json rename to frontend/public/json/grocy.json diff --git a/json/habitica.json b/frontend/public/json/habitica.json similarity index 100% rename from json/habitica.json rename to frontend/public/json/habitica.json diff --git a/json/haos-vm.json b/frontend/public/json/haos-vm.json similarity index 100% rename from json/haos-vm.json rename to frontend/public/json/haos-vm.json diff --git a/json/headscale.json b/frontend/public/json/headscale.json similarity index 100% rename from json/headscale.json rename to frontend/public/json/headscale.json diff --git a/json/heimdall-dashboard.json b/frontend/public/json/heimdall-dashboard.json similarity index 91% rename from json/heimdall-dashboard.json rename to frontend/public/json/heimdall-dashboard.json index ca7556294..6ae0edd09 100644 --- a/json/heimdall-dashboard.json +++ b/frontend/public/json/heimdall-dashboard.json @@ -11,7 +11,7 @@ "interface_port": 7990, "documentation": null, "website": "https://heimdall.site/", - "logo": "https://github.com/community-scripts/ProxmoxVE/blob/main/misc/images/heimdall.png?raw=true", + "logo": "https://raw.githubusercontent.com/linuxserver/Heimdall/refs/heads/master/public/img/heimdall-logo.svg", "description": "Heimdall Dashboard is a self-hosted, web-based dashboard for managing and monitoring the health of applications and servers. It allows you to keep track of the status of your systems from a single, centralized location, and receive notifications when things go wrong. With Heimdall Dashboard, you have full control over your data and can customize it to meet your specific needs. Self-hosting the dashboard gives you the flexibility to run it on your own infrastructure, making it a suitable solution for organizations that prioritize data security and privacy.", "install_methods": [ { diff --git a/json/hev-socks5-server.json b/frontend/public/json/hev-socks5-server.json similarity index 100% rename from json/hev-socks5-server.json rename to frontend/public/json/hev-socks5-server.json diff --git a/json/hivemq.json b/frontend/public/json/hivemq.json similarity index 100% rename from json/hivemq.json rename to frontend/public/json/hivemq.json diff --git a/json/hoarder.json b/frontend/public/json/hoarder.json similarity index 100% rename from json/hoarder.json rename to frontend/public/json/hoarder.json diff --git a/json/homarr.json b/frontend/public/json/homarr.json similarity index 100% rename from json/homarr.json rename to frontend/public/json/homarr.json diff --git a/json/homeassistant-core.json b/frontend/public/json/homeassistant-core.json similarity index 100% rename from json/homeassistant-core.json rename to frontend/public/json/homeassistant-core.json diff --git a/json/homeassistant.json b/frontend/public/json/homeassistant.json similarity index 100% rename from json/homeassistant.json rename to frontend/public/json/homeassistant.json diff --git a/json/homebox.json b/frontend/public/json/homebox.json similarity index 100% rename from json/homebox.json rename to frontend/public/json/homebox.json diff --git a/json/homebridge.json b/frontend/public/json/homebridge.json similarity index 100% rename from json/homebridge.json rename to frontend/public/json/homebridge.json diff --git a/json/homepage.json b/frontend/public/json/homepage.json similarity index 85% rename from json/homepage.json rename to frontend/public/json/homepage.json index f39436779..eba9a1cb4 100644 --- a/json/homepage.json +++ b/frontend/public/json/homepage.json @@ -19,8 +19,8 @@ "script": "ct/homepage.sh", "resources": { "cpu": 2, - "ram": 1024, - "hdd": 3, + "ram": 4096, + "hdd": 6, "os": "debian", "version": "12" } @@ -34,6 +34,10 @@ { "text": "Configuration (bookmarks.yaml, services.yaml, widgets.yaml) path: `/opt/homepage/config/`", "type": "info" + }, + { + "text": "Add additional allowed hosts to `/opt/homepage/.env`", + "type": "info" } ], "status": "βœ…" diff --git a/json/homer.json b/frontend/public/json/homer.json similarity index 100% rename from json/homer.json rename to frontend/public/json/homer.json diff --git a/json/host-backup.json b/frontend/public/json/host-backup.json similarity index 100% rename from json/host-backup.json rename to frontend/public/json/host-backup.json diff --git a/json/hyperhdr.json b/frontend/public/json/hyperhdr.json similarity index 100% rename from json/hyperhdr.json rename to frontend/public/json/hyperhdr.json diff --git a/json/hyperion.json b/frontend/public/json/hyperion.json similarity index 100% rename from json/hyperion.json rename to frontend/public/json/hyperion.json diff --git a/json/influxdb.json b/frontend/public/json/influxdb.json similarity index 89% rename from json/influxdb.json rename to frontend/public/json/influxdb.json index ad5b671b2..a04700fb2 100644 --- a/json/influxdb.json +++ b/frontend/public/json/influxdb.json @@ -30,6 +30,15 @@ "username": null, "password": null }, - "notes": [], - "status": "βœ…" -} \ No newline at end of file + "notes": [ + { + "text": "Port for V1: 8888", + "type": "info" + }, + { + "text": "Port for V2: 8086", + "type": "info" + } + ], + "status": "βœ…" +} diff --git a/json/inspircd.json b/frontend/public/json/inspircd.json similarity index 100% rename from json/inspircd.json rename to frontend/public/json/inspircd.json diff --git a/json/inventree.json b/frontend/public/json/inventree.json similarity index 100% rename from json/inventree.json rename to frontend/public/json/inventree.json diff --git a/json/iobroker.json b/frontend/public/json/iobroker.json similarity index 100% rename from json/iobroker.json rename to frontend/public/json/iobroker.json diff --git a/json/iventoy.json b/frontend/public/json/iventoy.json similarity index 100% rename from json/iventoy.json rename to frontend/public/json/iventoy.json diff --git a/json/jackett.json b/frontend/public/json/jackett.json similarity index 100% rename from json/jackett.json rename to frontend/public/json/jackett.json diff --git a/json/jellyfin.json b/frontend/public/json/jellyfin.json similarity index 100% rename from json/jellyfin.json rename to frontend/public/json/jellyfin.json diff --git a/json/jellyseerr.json b/frontend/public/json/jellyseerr.json similarity index 97% rename from json/jellyseerr.json rename to frontend/public/json/jellyseerr.json index 93ea1ea6e..c071bc632 100644 --- a/json/jellyseerr.json +++ b/frontend/public/json/jellyseerr.json @@ -6,7 +6,7 @@ ], "date_created": "2024-05-02", "type": "ct", - "updateable": false, + "updateable": true, "privileged": false, "interface_port": 5055, "documentation": null, diff --git a/json/jenkins.json b/frontend/public/json/jenkins.json similarity index 100% rename from json/jenkins.json rename to frontend/public/json/jenkins.json diff --git a/json/jupyternotebook.json b/frontend/public/json/jupyternotebook.json similarity index 100% rename from json/jupyternotebook.json rename to frontend/public/json/jupyternotebook.json diff --git a/json/kavita.json b/frontend/public/json/kavita.json similarity index 100% rename from json/kavita.json rename to frontend/public/json/kavita.json diff --git a/json/kernel-clean.json b/frontend/public/json/kernel-clean.json similarity index 100% rename from json/kernel-clean.json rename to frontend/public/json/kernel-clean.json diff --git a/json/kernel-pin.json b/frontend/public/json/kernel-pin.json similarity index 100% rename from json/kernel-pin.json rename to frontend/public/json/kernel-pin.json diff --git a/json/keycloak.json b/frontend/public/json/keycloak.json similarity index 100% rename from json/keycloak.json rename to frontend/public/json/keycloak.json diff --git a/json/kimai.json b/frontend/public/json/kimai.json similarity index 100% rename from json/kimai.json rename to frontend/public/json/kimai.json diff --git a/json/koillection.json b/frontend/public/json/koillection.json similarity index 100% rename from json/koillection.json rename to frontend/public/json/koillection.json diff --git a/json/kometa.json b/frontend/public/json/kometa.json similarity index 100% rename from json/kometa.json rename to frontend/public/json/kometa.json diff --git a/json/komga.json b/frontend/public/json/komga.json similarity index 97% rename from json/komga.json rename to frontend/public/json/komga.json index 2bf38dd68..da2dd3849 100644 --- a/json/komga.json +++ b/frontend/public/json/komga.json @@ -1,40 +1,40 @@ -{ - "name": "Komga", - "slug": "komga", - "categories": [ - 13 - ], - "date_created": "2024-11-15", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 25600, - "documentation": "https://komga.org/docs/introduction", - "website": "https://komga.org/", - "logo": "https://raw.githubusercontent.com/gotson/komga/25a1cfa8660c57335313c244e41c248371ffd9d6/komga-webui/src/assets/logo.svg", - "description": "A media server for your comics, mangas, BDs, magazines and eBooks. Organize your CBZ, CBR, PDF and EPUB files in different libraries, collections or reading lists. Use the integrated Webreader, the Mihon extension, any OPDS reader, or other integrations. Edit metadata for your series and books.", - "install_methods": [ - { - "type": "default", - "script": "ct/komga.sh", - "resources": { - "cpu": 1, - "ram": 2048, - "hdd": 4, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [ - { - "text": "Starting Komga (Web UI) may take up to 2 minutes after a restart or fresh installation.", - "type": "info" - } - ], - "status": "🚧" -} \ No newline at end of file +{ + "name": "Komga", + "slug": "komga", + "categories": [ + 13 + ], + "date_created": "2024-11-15", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 25600, + "documentation": "https://komga.org/docs/introduction", + "website": "https://komga.org/", + "logo": "https://raw.githubusercontent.com/gotson/komga/25a1cfa8660c57335313c244e41c248371ffd9d6/komga-webui/src/assets/logo.svg", + "description": "A media server for your comics, mangas, BDs, magazines and eBooks. Organize your CBZ, CBR, PDF and EPUB files in different libraries, collections or reading lists. Use the integrated Webreader, the Mihon extension, any OPDS reader, or other integrations. Edit metadata for your series and books.", + "install_methods": [ + { + "type": "default", + "script": "ct/komga.sh", + "resources": { + "cpu": 1, + "ram": 2048, + "hdd": 4, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Starting Komga (Web UI) may take up to 2 minutes after a restart or fresh installation.", + "type": "info" + } + ], + "status": "🚧" +} diff --git a/json/komodo.json b/frontend/public/json/komodo.json similarity index 100% rename from json/komodo.json rename to frontend/public/json/komodo.json diff --git a/json/kubo.json b/frontend/public/json/kubo.json similarity index 100% rename from json/kubo.json rename to frontend/public/json/kubo.json diff --git a/json/lazylibrarian.json b/frontend/public/json/lazylibrarian.json similarity index 100% rename from json/lazylibrarian.json rename to frontend/public/json/lazylibrarian.json diff --git a/json/lidarr.json b/frontend/public/json/lidarr.json similarity index 100% rename from json/lidarr.json rename to frontend/public/json/lidarr.json diff --git a/json/linkwarden.json b/frontend/public/json/linkwarden.json similarity index 100% rename from json/linkwarden.json rename to frontend/public/json/linkwarden.json diff --git a/json/listmonk.json b/frontend/public/json/listmonk.json similarity index 100% rename from json/listmonk.json rename to frontend/public/json/listmonk.json diff --git a/json/lldap.json b/frontend/public/json/lldap.json similarity index 100% rename from json/lldap.json rename to frontend/public/json/lldap.json diff --git a/json/lubelogger.json b/frontend/public/json/lubelogger.json similarity index 100% rename from json/lubelogger.json rename to frontend/public/json/lubelogger.json diff --git a/json/lxc-delete.json b/frontend/public/json/lxc-delete.json similarity index 100% rename from json/lxc-delete.json rename to frontend/public/json/lxc-delete.json diff --git a/json/mafl.json b/frontend/public/json/mafl.json similarity index 100% rename from json/mafl.json rename to frontend/public/json/mafl.json diff --git a/json/magicmirror.json b/frontend/public/json/magicmirror.json similarity index 100% rename from json/magicmirror.json rename to frontend/public/json/magicmirror.json diff --git a/json/mariadb.json b/frontend/public/json/mariadb.json similarity index 100% rename from json/mariadb.json rename to frontend/public/json/mariadb.json diff --git a/json/matterbridge.json b/frontend/public/json/matterbridge.json similarity index 100% rename from json/matterbridge.json rename to frontend/public/json/matterbridge.json diff --git a/json/mattermost.json b/frontend/public/json/mattermost.json similarity index 100% rename from json/mattermost.json rename to frontend/public/json/mattermost.json diff --git a/json/mediamtx.json b/frontend/public/json/mediamtx.json similarity index 100% rename from json/mediamtx.json rename to frontend/public/json/mediamtx.json diff --git a/json/medusa.json b/frontend/public/json/medusa.json similarity index 100% rename from json/medusa.json rename to frontend/public/json/medusa.json diff --git a/json/memos.json b/frontend/public/json/memos.json similarity index 97% rename from json/memos.json rename to frontend/public/json/memos.json index f40d92ede..3b36bdf62 100644 --- a/json/memos.json +++ b/frontend/public/json/memos.json @@ -19,7 +19,7 @@ "script": "ct/memos.sh", "resources": { "cpu": 2, - "ram": 2048, + "ram": 3072, "hdd": 7, "os": "debian", "version": "12" @@ -32,4 +32,4 @@ }, "notes": [], "status": "🚧" -} \ No newline at end of file +} diff --git a/json/meshcentral.json b/frontend/public/json/meshcentral.json similarity index 100% rename from json/meshcentral.json rename to frontend/public/json/meshcentral.json diff --git a/json/metadata.json b/frontend/public/json/metadata.json similarity index 100% rename from json/metadata.json rename to frontend/public/json/metadata.json diff --git a/json/metube.json b/frontend/public/json/metube.json similarity index 100% rename from json/metube.json rename to frontend/public/json/metube.json diff --git a/json/microcode.json b/frontend/public/json/microcode.json similarity index 100% rename from json/microcode.json rename to frontend/public/json/microcode.json diff --git a/json/mikrotik-routeros.json b/frontend/public/json/mikrotik-routeros.json similarity index 100% rename from json/mikrotik-routeros.json rename to frontend/public/json/mikrotik-routeros.json diff --git a/json/minio.json b/frontend/public/json/minio.json similarity index 100% rename from json/minio.json rename to frontend/public/json/minio.json diff --git a/json/mongodb.json b/frontend/public/json/mongodb.json similarity index 100% rename from json/mongodb.json rename to frontend/public/json/mongodb.json diff --git a/json/monica.json b/frontend/public/json/monica.json similarity index 100% rename from json/monica.json rename to frontend/public/json/monica.json diff --git a/json/monitor-all.json b/frontend/public/json/monitor-all.json similarity index 100% rename from json/monitor-all.json rename to frontend/public/json/monitor-all.json diff --git a/json/motioneye.json b/frontend/public/json/motioneye.json similarity index 100% rename from json/motioneye.json rename to frontend/public/json/motioneye.json diff --git a/json/mqtt.json b/frontend/public/json/mqtt.json similarity index 100% rename from json/mqtt.json rename to frontend/public/json/mqtt.json diff --git a/json/mylar3.json b/frontend/public/json/mylar3.json similarity index 100% rename from json/mylar3.json rename to frontend/public/json/mylar3.json diff --git a/json/myspeed.json b/frontend/public/json/myspeed.json similarity index 100% rename from json/myspeed.json rename to frontend/public/json/myspeed.json diff --git a/json/mysql.json b/frontend/public/json/mysql.json similarity index 100% rename from json/mysql.json rename to frontend/public/json/mysql.json diff --git a/json/n8n.json b/frontend/public/json/n8n.json similarity index 100% rename from json/n8n.json rename to frontend/public/json/n8n.json diff --git a/json/navidrome.json b/frontend/public/json/navidrome.json similarity index 100% rename from json/navidrome.json rename to frontend/public/json/navidrome.json diff --git a/json/neo4j.json b/frontend/public/json/neo4j.json similarity index 100% rename from json/neo4j.json rename to frontend/public/json/neo4j.json diff --git a/json/netbox.json b/frontend/public/json/netbox.json similarity index 100% rename from json/netbox.json rename to frontend/public/json/netbox.json diff --git a/json/netdata.json b/frontend/public/json/netdata.json similarity index 100% rename from json/netdata.json rename to frontend/public/json/netdata.json diff --git a/json/nextcloud-vm.json b/frontend/public/json/nextcloud-vm.json similarity index 100% rename from json/nextcloud-vm.json rename to frontend/public/json/nextcloud-vm.json diff --git a/json/nextcloudpi.json b/frontend/public/json/nextcloudpi.json similarity index 100% rename from json/nextcloudpi.json rename to frontend/public/json/nextcloudpi.json diff --git a/json/nextpvr.json b/frontend/public/json/nextpvr.json similarity index 100% rename from json/nextpvr.json rename to frontend/public/json/nextpvr.json diff --git a/json/nginxproxymanager.json b/frontend/public/json/nginxproxymanager.json similarity index 100% rename from json/nginxproxymanager.json rename to frontend/public/json/nginxproxymanager.json diff --git a/json/nocodb.json b/frontend/public/json/nocodb.json similarity index 100% rename from json/nocodb.json rename to frontend/public/json/nocodb.json diff --git a/json/node-red.json b/frontend/public/json/node-red.json similarity index 100% rename from json/node-red.json rename to frontend/public/json/node-red.json diff --git a/json/nodebb.json b/frontend/public/json/nodebb.json similarity index 100% rename from json/nodebb.json rename to frontend/public/json/nodebb.json diff --git a/json/notifiarr.json b/frontend/public/json/notifiarr.json similarity index 100% rename from json/notifiarr.json rename to frontend/public/json/notifiarr.json diff --git a/frontend/public/json/npmplus.json b/frontend/public/json/npmplus.json new file mode 100644 index 000000000..cb0d5ceb0 --- /dev/null +++ b/frontend/public/json/npmplus.json @@ -0,0 +1,58 @@ +{ + "name": "NPMplus", + "slug": "npmplus", + "categories": [ + 21 + ], + "date_created": "2025-03-13", + "type": "ct", + "updateable": false, + "privileged": false, + "interface_port": 81, + "documentation": null, + "website": "https://github.com/ZoeyVid/NPMplus", + "logo": "https://raw.githubusercontent.com/ZoeyVid/NPMplus/refs/heads/develop/frontend/app-images/logo-256.png", + "description": "NPMplus is an enhanced version of Nginx Proxy Manager. It simplifies the process of setting up reverse proxies with TLS termination through a user-friendly web interface. Key features include HTTP/3 support, integration with CrowdSec IPS, inclusion of GoAccess for real-time log analysis, and support for ModSecurity with the Core Rule Set.", + "install_methods": [ + { + "type": "default", + "script": "ct/npmplus.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 3, + "os": "alpine", + "version": "3.21" + } + }, + { + "type": "alpine", + "script": "ct/npmplus.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 3, + "os": "alpine", + "version": "3.21" + } + } + ], + "default_credentials": { + "username": "root", + "password": null + }, + "notes": [ + { + "text": "This uses Docker under the hood, as this can not easily be installed bare-metal. ", + "type": "info" + }, + { + "text": "The initial starting process can be take 1-2min. ", + "type": "info" + }, + { + "text": "Application credentials: `cat /opt/.npm_pwd`", + "type": "info" + } + ] +} diff --git a/json/ntfy.json b/frontend/public/json/ntfy.json similarity index 100% rename from json/ntfy.json rename to frontend/public/json/ntfy.json diff --git a/json/nxwitness.json b/frontend/public/json/nxwitness.json similarity index 100% rename from json/nxwitness.json rename to frontend/public/json/nxwitness.json diff --git a/json/nzbget.json b/frontend/public/json/nzbget.json similarity index 100% rename from json/nzbget.json rename to frontend/public/json/nzbget.json diff --git a/json/octoprint.json b/frontend/public/json/octoprint.json similarity index 100% rename from json/octoprint.json rename to frontend/public/json/octoprint.json diff --git a/json/olivetin.json b/frontend/public/json/olivetin.json similarity index 100% rename from json/olivetin.json rename to frontend/public/json/olivetin.json diff --git a/json/omada.json b/frontend/public/json/omada.json similarity index 100% rename from json/omada.json rename to frontend/public/json/omada.json diff --git a/json/ombi.json b/frontend/public/json/ombi.json similarity index 100% rename from json/ombi.json rename to frontend/public/json/ombi.json diff --git a/json/omv.json b/frontend/public/json/omv.json similarity index 100% rename from json/omv.json rename to frontend/public/json/omv.json diff --git a/json/onedev.json b/frontend/public/json/onedev.json similarity index 100% rename from json/onedev.json rename to frontend/public/json/onedev.json diff --git a/json/opengist.json b/frontend/public/json/opengist.json similarity index 100% rename from json/opengist.json rename to frontend/public/json/opengist.json diff --git a/json/openhab.json b/frontend/public/json/openhab.json similarity index 100% rename from json/openhab.json rename to frontend/public/json/openhab.json diff --git a/json/openobserve.json b/frontend/public/json/openobserve.json similarity index 100% rename from json/openobserve.json rename to frontend/public/json/openobserve.json diff --git a/json/openwebui.json b/frontend/public/json/openwebui.json similarity index 100% rename from json/openwebui.json rename to frontend/public/json/openwebui.json diff --git a/json/openwrt.json b/frontend/public/json/openwrt.json similarity index 100% rename from json/openwrt.json rename to frontend/public/json/openwrt.json diff --git a/json/opnsense-vm.json b/frontend/public/json/opnsense-vm.json similarity index 100% rename from json/opnsense-vm.json rename to frontend/public/json/opnsense-vm.json diff --git a/json/outline.json b/frontend/public/json/outline.json similarity index 100% rename from json/outline.json rename to frontend/public/json/outline.json diff --git a/json/overseerr.json b/frontend/public/json/overseerr.json similarity index 100% rename from json/overseerr.json rename to frontend/public/json/overseerr.json diff --git a/json/owncast.json b/frontend/public/json/owncast.json similarity index 100% rename from json/owncast.json rename to frontend/public/json/owncast.json diff --git a/json/owncloud-vm.json b/frontend/public/json/owncloud-vm.json similarity index 100% rename from json/owncloud-vm.json rename to frontend/public/json/owncloud-vm.json diff --git a/json/pairdrop.json b/frontend/public/json/pairdrop.json similarity index 100% rename from json/pairdrop.json rename to frontend/public/json/pairdrop.json diff --git a/json/paperless-ai.json b/frontend/public/json/paperless-ai.json similarity index 100% rename from json/paperless-ai.json rename to frontend/public/json/paperless-ai.json diff --git a/json/paperless-gpt.json b/frontend/public/json/paperless-gpt.json similarity index 100% rename from json/paperless-gpt.json rename to frontend/public/json/paperless-gpt.json diff --git a/json/paperless-ngx.json b/frontend/public/json/paperless-ngx.json similarity index 83% rename from json/paperless-ngx.json rename to frontend/public/json/paperless-ngx.json index 76d0aff4a..b4166a73e 100644 --- a/json/paperless-ngx.json +++ b/frontend/public/json/paperless-ngx.json @@ -34,6 +34,10 @@ { "text": "Show Login Credentials, type `update` in the LXC console", "type": "info" + }, + { + "text": "Script installs English as default OCR language. To install additional languages, use `apt-get install tesseract-ocr-[lang]`, where [lang] is the language code (e.g. `apt-get install tesseract-ocr-deu`).", + "type": "info" } ], "status": "βœ…" diff --git a/json/part-db.json b/frontend/public/json/part-db.json similarity index 100% rename from json/part-db.json rename to frontend/public/json/part-db.json diff --git a/json/paymenter.json b/frontend/public/json/paymenter.json similarity index 100% rename from json/paymenter.json rename to frontend/public/json/paymenter.json diff --git a/json/pbs-microcode.json b/frontend/public/json/pbs-microcode.json similarity index 100% rename from json/pbs-microcode.json rename to frontend/public/json/pbs-microcode.json diff --git a/json/peanut.json b/frontend/public/json/peanut.json similarity index 100% rename from json/peanut.json rename to frontend/public/json/peanut.json diff --git a/json/pelican-panel.json b/frontend/public/json/pelican-panel.json similarity index 100% rename from json/pelican-panel.json rename to frontend/public/json/pelican-panel.json diff --git a/json/pelican-wings.json b/frontend/public/json/pelican-wings.json similarity index 100% rename from json/pelican-wings.json rename to frontend/public/json/pelican-wings.json diff --git a/json/petio.json b/frontend/public/json/petio.json similarity index 100% rename from json/petio.json rename to frontend/public/json/petio.json diff --git a/json/pf2etools.json b/frontend/public/json/pf2etools.json similarity index 100% rename from json/pf2etools.json rename to frontend/public/json/pf2etools.json diff --git a/json/photoprism.json b/frontend/public/json/photoprism.json similarity index 100% rename from json/photoprism.json rename to frontend/public/json/photoprism.json diff --git a/json/phpipam.json b/frontend/public/json/phpipam.json similarity index 100% rename from json/phpipam.json rename to frontend/public/json/phpipam.json diff --git a/json/pialert.json b/frontend/public/json/pialert.json similarity index 100% rename from json/pialert.json rename to frontend/public/json/pialert.json diff --git a/json/pihole.json b/frontend/public/json/pihole.json similarity index 100% rename from json/pihole.json rename to frontend/public/json/pihole.json diff --git a/json/pimox-haos-vm.json b/frontend/public/json/pimox-haos-vm.json similarity index 92% rename from json/pimox-haos-vm.json rename to frontend/public/json/pimox-haos-vm.json index 59a2630bd..a964a2cb9 100644 --- a/json/pimox-haos-vm.json +++ b/frontend/public/json/pimox-haos-vm.json @@ -11,7 +11,7 @@ "interface_port": 8123, "documentation": null, "website": "https://github.com/jiangcuo/Proxmox-Port", - "logo": "https://github.com/community-scripts/ProxmoxVE/blob/main/misc/images/pimox.png?raw=true", + "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/home-assistant.svg", "description": "The script automates the manual process of finding, downloading and extracting the aarch64 (qcow2) disk image provided by the Home Assistant Team, creating a VM with user defined settings, importing and attaching the disk, setting the boot order and starting the VM.", "install_methods": [ { diff --git a/json/pingvin.json b/frontend/public/json/pingvin.json similarity index 100% rename from json/pingvin.json rename to frontend/public/json/pingvin.json diff --git a/frontend/public/json/plant-it.json b/frontend/public/json/plant-it.json new file mode 100644 index 000000000..41c397bb2 --- /dev/null +++ b/frontend/public/json/plant-it.json @@ -0,0 +1,43 @@ +{ + "name": "Plant-it", + "slug": "plant-it", + "categories": [ + 24 + ], + "date_created": "2025-03-11", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://docs.plant-it.org/latest/", + "website": "https://plant-it.org/", + "logo": "https://raw.githubusercontent.com/MDeLuise/plant-it/refs/heads/main/images/plant-it-logo.png", + "description": "Plant-it is a self-hosted, open-source app designed to help users manage and track plant care. It allows users to add plants, log activities like watering, fertilizing, and pruning, set reminders, and upload photos for visual tracking. The app includes a database of over 400,000 plant species, offering detailed care information such as optimal growing conditions and maintenance tips.\n\nUsers can organize their plant collection, monitor growth, and share data with others. The app is free to use and works on Android, iOS, and the web.", + "install_methods": [ + { + "type": "default", + "script": "ct/plant-it.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 5, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "This Script use Adoptium JDK 21 - Sometimes the installation of these takes a while", + "type": "info" + }, + { + "text": "After the initial start, the backend requires approx. 1-2 minutes boot time", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/json/plex.json b/frontend/public/json/plex.json similarity index 100% rename from json/plex.json rename to frontend/public/json/plex.json diff --git a/json/pocketbase.json b/frontend/public/json/pocketbase.json similarity index 100% rename from json/pocketbase.json rename to frontend/public/json/pocketbase.json diff --git a/json/pocketid.json b/frontend/public/json/pocketid.json similarity index 100% rename from json/pocketid.json rename to frontend/public/json/pocketid.json diff --git a/json/podman-homeassistant.json b/frontend/public/json/podman-homeassistant.json similarity index 100% rename from json/podman-homeassistant.json rename to frontend/public/json/podman-homeassistant.json diff --git a/json/podman.json b/frontend/public/json/podman.json similarity index 100% rename from json/podman.json rename to frontend/public/json/podman.json diff --git a/json/post-pbs-install.json b/frontend/public/json/post-pbs-install.json similarity index 100% rename from json/post-pbs-install.json rename to frontend/public/json/post-pbs-install.json diff --git a/json/post-pmg-install.json b/frontend/public/json/post-pmg-install.json similarity index 100% rename from json/post-pmg-install.json rename to frontend/public/json/post-pmg-install.json diff --git a/json/post-pve-install.json b/frontend/public/json/post-pve-install.json similarity index 100% rename from json/post-pve-install.json rename to frontend/public/json/post-pve-install.json diff --git a/json/postgresql.json b/frontend/public/json/postgresql.json similarity index 100% rename from json/postgresql.json rename to frontend/public/json/postgresql.json diff --git a/json/privatebin.json b/frontend/public/json/privatebin.json similarity index 100% rename from json/privatebin.json rename to frontend/public/json/privatebin.json diff --git a/json/projectsend.json b/frontend/public/json/projectsend.json similarity index 100% rename from json/projectsend.json rename to frontend/public/json/projectsend.json diff --git a/json/prometheus-alertmanager.json b/frontend/public/json/prometheus-alertmanager.json similarity index 100% rename from json/prometheus-alertmanager.json rename to frontend/public/json/prometheus-alertmanager.json diff --git a/json/prometheus-paperless-ngx-exporter.json b/frontend/public/json/prometheus-paperless-ngx-exporter.json similarity index 100% rename from json/prometheus-paperless-ngx-exporter.json rename to frontend/public/json/prometheus-paperless-ngx-exporter.json diff --git a/json/prometheus-pve-exporter.json b/frontend/public/json/prometheus-pve-exporter.json similarity index 97% rename from json/prometheus-pve-exporter.json rename to frontend/public/json/prometheus-pve-exporter.json index c66e2f283..0c3bbfa1e 100644 --- a/json/prometheus-pve-exporter.json +++ b/frontend/public/json/prometheus-pve-exporter.json @@ -20,7 +20,7 @@ "script": "ct/prometheus-pve-exporter.sh", "resources": { "cpu": 1, - "ram": 1024, + "ram": 512, "hdd": 2, "os": "debian", "version": "12" diff --git a/json/prometheus.json b/frontend/public/json/prometheus.json similarity index 100% rename from json/prometheus.json rename to frontend/public/json/prometheus.json diff --git a/json/prowlarr.json b/frontend/public/json/prowlarr.json similarity index 100% rename from json/prowlarr.json rename to frontend/public/json/prowlarr.json diff --git a/json/proxmox-backup-server.json b/frontend/public/json/proxmox-backup-server.json similarity index 100% rename from json/proxmox-backup-server.json rename to frontend/public/json/proxmox-backup-server.json diff --git a/json/proxmox-datacenter-manager.json b/frontend/public/json/proxmox-datacenter-manager.json similarity index 100% rename from json/proxmox-datacenter-manager.json rename to frontend/public/json/proxmox-datacenter-manager.json diff --git a/json/proxmox-mail-gateway.json b/frontend/public/json/proxmox-mail-gateway.json similarity index 94% rename from json/proxmox-mail-gateway.json rename to frontend/public/json/proxmox-mail-gateway.json index bd24d55d2..1768ee2f9 100644 --- a/json/proxmox-mail-gateway.json +++ b/frontend/public/json/proxmox-mail-gateway.json @@ -1,40 +1,40 @@ -{ - "name": "Promox Mail Gateway", - "slug": "proxmox-mail-gateway", - "categories": [ - 1 - ], - "date_created": "2025-02-04", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 8006, - "documentation": "https://pmg.proxmox.com/pmg-docs/pmg-admin-guide.html", - "website": "https://www.proxmox.com/en/products/proxmox-mail-gateway/overview", - "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/proxmox.svg", - "description": "Proxmox Mail Gateway is the leading open-source email security solution helping you to protect your mail server against all email threats from the moment they emerge.", - "install_methods": [ - { - "type": "default", - "script": "ct/proxmox-mail-gateway.sh", - "resources": { - "cpu": 2, - "ram": 4096, - "hdd": 10, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": "root", - "password": null - }, - "notes": [ - { - "text": "Set a root password if using autologin. This will be the PMG password. `passwd root`", - "type": "warning" - } - ], - "status": "🚧" -} +{ + "name": "Proxmox Mail Gateway", + "slug": "proxmox-mail-gateway", + "categories": [ + 1 + ], + "date_created": "2025-02-04", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8006, + "documentation": "https://pmg.proxmox.com/pmg-docs/pmg-admin-guide.html", + "website": "https://www.proxmox.com/en/products/proxmox-mail-gateway/overview", + "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/proxmox.svg", + "description": "Proxmox Mail Gateway is the leading open-source email security solution helping you to protect your mail server against all email threats from the moment they emerge.", + "install_methods": [ + { + "type": "default", + "script": "ct/proxmox-mail-gateway.sh", + "resources": { + "cpu": 2, + "ram": 4096, + "hdd": 10, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "root", + "password": null + }, + "notes": [ + { + "text": "Set a root password if using autologin. This will be the PMG password. `passwd root`", + "type": "warning" + } + ], + "status": "🚧" +} diff --git a/json/ps5-mqtt.json b/frontend/public/json/ps5-mqtt.json similarity index 100% rename from json/ps5-mqtt.json rename to frontend/public/json/ps5-mqtt.json diff --git a/json/pterodactyl-panel.json b/frontend/public/json/pterodactyl-panel.json similarity index 100% rename from json/pterodactyl-panel.json rename to frontend/public/json/pterodactyl-panel.json diff --git a/json/pterodactyl-wings.json b/frontend/public/json/pterodactyl-wings.json similarity index 100% rename from json/pterodactyl-wings.json rename to frontend/public/json/pterodactyl-wings.json diff --git a/json/qbittorrent.json b/frontend/public/json/qbittorrent.json similarity index 100% rename from json/qbittorrent.json rename to frontend/public/json/qbittorrent.json diff --git a/json/rabbitmq.json b/frontend/public/json/rabbitmq.json similarity index 100% rename from json/rabbitmq.json rename to frontend/public/json/rabbitmq.json diff --git a/json/radarr.json b/frontend/public/json/radarr.json similarity index 100% rename from json/radarr.json rename to frontend/public/json/radarr.json diff --git a/json/radicale.json b/frontend/public/json/radicale.json similarity index 100% rename from json/radicale.json rename to frontend/public/json/radicale.json diff --git a/json/rdtclient.json b/frontend/public/json/rdtclient.json similarity index 100% rename from json/rdtclient.json rename to frontend/public/json/rdtclient.json diff --git a/json/readarr.json b/frontend/public/json/readarr.json similarity index 100% rename from json/readarr.json rename to frontend/public/json/readarr.json diff --git a/json/readeck.json b/frontend/public/json/readeck.json similarity index 100% rename from json/readeck.json rename to frontend/public/json/readeck.json diff --git a/json/recyclarr.json b/frontend/public/json/recyclarr.json similarity index 100% rename from json/recyclarr.json rename to frontend/public/json/recyclarr.json diff --git a/json/redis.json b/frontend/public/json/redis.json similarity index 77% rename from json/redis.json rename to frontend/public/json/redis.json index ee4f164d2..9f891e058 100644 --- a/json/redis.json +++ b/frontend/public/json/redis.json @@ -24,6 +24,17 @@ "os": "debian", "version": "12" } + }, + { + "type": "alpine", + "script": "ct/alpine-redis.sh", + "resources": { + "cpu": 1, + "ram": 256, + "hdd": 1, + "os": "alpine", + "version": "3.21" + } } ], "default_credentials": { @@ -32,7 +43,7 @@ }, "notes": [ { - "text": "Redis Configuration: `nano /etc/redis/redis.conf`", + "text": "Redis Configuration: `nano /etc/redis/redis.conf` or in Alpine: `nano /etc/redis.conf`", "type": "info" } ], diff --git a/json/revealjs.json b/frontend/public/json/revealjs.json similarity index 100% rename from json/revealjs.json rename to frontend/public/json/revealjs.json diff --git a/json/rtsptoweb.json b/frontend/public/json/rtsptoweb.json similarity index 100% rename from json/rtsptoweb.json rename to frontend/public/json/rtsptoweb.json diff --git a/json/runtipi.json b/frontend/public/json/runtipi.json similarity index 100% rename from json/runtipi.json rename to frontend/public/json/runtipi.json diff --git a/json/rustdeskserver.json b/frontend/public/json/rustdeskserver.json similarity index 100% rename from json/rustdeskserver.json rename to frontend/public/json/rustdeskserver.json diff --git a/json/sabnzbd.json b/frontend/public/json/sabnzbd.json similarity index 100% rename from json/sabnzbd.json rename to frontend/public/json/sabnzbd.json diff --git a/json/scaling-governor.json b/frontend/public/json/scaling-governor.json similarity index 100% rename from json/scaling-governor.json rename to frontend/public/json/scaling-governor.json diff --git a/frontend/public/json/seafile.json b/frontend/public/json/seafile.json new file mode 100644 index 000000000..ddabe7eca --- /dev/null +++ b/frontend/public/json/seafile.json @@ -0,0 +1,47 @@ +{ + "name": "Seafile", + "slug": "seafile", + "categories": [ + 12 + ], + "date_created": "2025-03-11", + "type": "ct", + "updateable": false, + "privileged": false, + "interface_port": 8000, + "documentation": "https://manual.seafile.com/11.0/deploy", + "website": "https://seafile.com", + "logo": "https://manual.seafile.com/11.0/media/seafile-transparent-1024.png", + "description": "Seafile is an open source file sync and share platform, focusing on reliability and performance.", + "install_methods": [ + { + "type": "default", + "script": "ct/seafile.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 20, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Application credentials: `cat ~/seafile.creds`", + "type": "info" + }, + { + "text": "Change STORAGE_DIR value in `external-storage.sh` and run `bash external-storage.sh` to use your defined storage instead of internal.", + "type": "info" + }, + { + "text": "Execute `~/domain.sh ` to enable access to Seafile via your domain. Example: ~/domain.sh https://seafile.example.com", + "type": "info" + } + ] +} diff --git a/json/searxng.json b/frontend/public/json/searxng.json similarity index 100% rename from json/searxng.json rename to frontend/public/json/searxng.json diff --git a/json/seelf.json b/frontend/public/json/seelf.json similarity index 100% rename from json/seelf.json rename to frontend/public/json/seelf.json diff --git a/json/semaphore.json b/frontend/public/json/semaphore.json similarity index 100% rename from json/semaphore.json rename to frontend/public/json/semaphore.json diff --git a/json/sftpgo.json b/frontend/public/json/sftpgo.json similarity index 100% rename from json/sftpgo.json rename to frontend/public/json/sftpgo.json diff --git a/json/shinobi.json b/frontend/public/json/shinobi.json similarity index 100% rename from json/shinobi.json rename to frontend/public/json/shinobi.json diff --git a/json/silverbullet.json b/frontend/public/json/silverbullet.json similarity index 100% rename from json/silverbullet.json rename to frontend/public/json/silverbullet.json diff --git a/json/smokeping.json b/frontend/public/json/smokeping.json similarity index 100% rename from json/smokeping.json rename to frontend/public/json/smokeping.json diff --git a/json/snipeit.json b/frontend/public/json/snipeit.json similarity index 100% rename from json/snipeit.json rename to frontend/public/json/snipeit.json diff --git a/json/sonarr.json b/frontend/public/json/sonarr.json similarity index 100% rename from json/sonarr.json rename to frontend/public/json/sonarr.json diff --git a/json/spoolman.json b/frontend/public/json/spoolman.json similarity index 100% rename from json/spoolman.json rename to frontend/public/json/spoolman.json diff --git a/json/sqlserver2022.json b/frontend/public/json/sqlserver2022.json similarity index 100% rename from json/sqlserver2022.json rename to frontend/public/json/sqlserver2022.json diff --git a/json/stirling-pdf.json b/frontend/public/json/stirling-pdf.json similarity index 100% rename from json/stirling-pdf.json rename to frontend/public/json/stirling-pdf.json diff --git a/json/suwayomi-server.json b/frontend/public/json/suwayomi-server.json similarity index 100% rename from json/suwayomi-server.json rename to frontend/public/json/suwayomi-server.json diff --git a/json/syncthing.json b/frontend/public/json/syncthing.json similarity index 100% rename from json/syncthing.json rename to frontend/public/json/syncthing.json diff --git a/json/tandoor.json b/frontend/public/json/tandoor.json similarity index 100% rename from json/tandoor.json rename to frontend/public/json/tandoor.json diff --git a/json/tasmoadmin.json b/frontend/public/json/tasmoadmin.json similarity index 100% rename from json/tasmoadmin.json rename to frontend/public/json/tasmoadmin.json diff --git a/json/tasmocompiler.json b/frontend/public/json/tasmocompiler.json similarity index 100% rename from json/tasmocompiler.json rename to frontend/public/json/tasmocompiler.json diff --git a/json/tautulli.json b/frontend/public/json/tautulli.json similarity index 100% rename from json/tautulli.json rename to frontend/public/json/tautulli.json diff --git a/json/tdarr.json b/frontend/public/json/tdarr.json similarity index 100% rename from json/tdarr.json rename to frontend/public/json/tdarr.json diff --git a/json/technitiumdns.json b/frontend/public/json/technitiumdns.json similarity index 100% rename from json/technitiumdns.json rename to frontend/public/json/technitiumdns.json diff --git a/json/teddycloud.json b/frontend/public/json/teddycloud.json similarity index 100% rename from json/teddycloud.json rename to frontend/public/json/teddycloud.json diff --git a/json/the-lounge.json b/frontend/public/json/the-lounge.json similarity index 68% rename from json/the-lounge.json rename to frontend/public/json/the-lounge.json index 7bb8e818f..05b5fe285 100644 --- a/json/the-lounge.json +++ b/frontend/public/json/the-lounge.json @@ -1,40 +1,40 @@ -{ - "name": "The Lounge", - "slug": "the-lounge", - "categories": [ - 22 - ], - "date_created": "2024-11-28", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 9000, - "documentation": "https://thelounge.chat/docs", - "website": "https://thelounge.chat/", - "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/the-lounge.svg", - "description": "Modern web IRC client designed for self-hosting ", - "install_methods": [ - { - "type": "default", - "script": "ct/the-lounge.sh", - "resources": { - "cpu": 2, - "ram": 2048, - "hdd": 4, - "os": "ubuntu", - "version": "24.04" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [ - { - "text": "The Lounge is running in private mode. Use `runuser -u thelounge -- thelounge add usernamehere` to create users.", - "type": "info" - } - ], - "status": "🚧" - } +{ + "name": "The Lounge", + "slug": "the-lounge", + "categories": [ + 22 + ], + "date_created": "2024-11-28", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9000, + "documentation": "https://thelounge.chat/docs", + "website": "https://thelounge.chat/", + "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/the-lounge.svg", + "description": "Modern web IRC client designed for self-hosting ", + "install_methods": [ + { + "type": "default", + "script": "ct/the-lounge.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 4, + "os": "ubuntu", + "version": "24.04" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "The Lounge is running in private mode. Use `runuser -u thelounge -- thelounge add usernamehere` to create users.", + "type": "info" + } + ], + "status": "🚧" + } diff --git a/json/threadfin.json b/frontend/public/json/threadfin.json similarity index 96% rename from json/threadfin.json rename to frontend/public/json/threadfin.json index 35fb240f9..328bbbbb3 100644 --- a/json/threadfin.json +++ b/frontend/public/json/threadfin.json @@ -8,7 +8,7 @@ "type": "ct", "updateable": false, "privileged": false, - "interface_port": null, + "interface_port": 34400, "documentation": null, "website": "https://github.com/Threadfin/Threadfin", "logo": "https://raw.githubusercontent.com/Threadfin/Threadfin/main/html/img/threadfin.png", @@ -32,4 +32,4 @@ }, "notes": [], "status": "βœ…" -} \ No newline at end of file +} diff --git a/json/tianji.json b/frontend/public/json/tianji.json similarity index 100% rename from json/tianji.json rename to frontend/public/json/tianji.json diff --git a/json/traccar.json b/frontend/public/json/traccar.json similarity index 100% rename from json/traccar.json rename to frontend/public/json/traccar.json diff --git a/json/traefik.json b/frontend/public/json/traefik.json similarity index 100% rename from json/traefik.json rename to frontend/public/json/traefik.json diff --git a/json/transmission.json b/frontend/public/json/transmission.json similarity index 100% rename from json/transmission.json rename to frontend/public/json/transmission.json diff --git a/json/trilium.json b/frontend/public/json/trilium.json similarity index 100% rename from json/trilium.json rename to frontend/public/json/trilium.json diff --git a/json/turnkey.json b/frontend/public/json/turnkey.json similarity index 100% rename from json/turnkey.json rename to frontend/public/json/turnkey.json diff --git a/json/typesense.json b/frontend/public/json/typesense.json similarity index 100% rename from json/typesense.json rename to frontend/public/json/typesense.json diff --git a/json/ubuntu.json b/frontend/public/json/ubuntu.json similarity index 100% rename from json/ubuntu.json rename to frontend/public/json/ubuntu.json diff --git a/json/ubuntu2204-vm.json b/frontend/public/json/ubuntu2204-vm.json similarity index 100% rename from json/ubuntu2204-vm.json rename to frontend/public/json/ubuntu2204-vm.json diff --git a/json/ubuntu2404-vm.json b/frontend/public/json/ubuntu2404-vm.json similarity index 100% rename from json/ubuntu2404-vm.json rename to frontend/public/json/ubuntu2404-vm.json diff --git a/json/ubuntu2410-vm.json b/frontend/public/json/ubuntu2410-vm.json similarity index 100% rename from json/ubuntu2410-vm.json rename to frontend/public/json/ubuntu2410-vm.json diff --git a/json/umami.json b/frontend/public/json/umami.json similarity index 100% rename from json/umami.json rename to frontend/public/json/umami.json diff --git a/json/unbound.json b/frontend/public/json/unbound.json similarity index 100% rename from json/unbound.json rename to frontend/public/json/unbound.json diff --git a/json/unifi.json b/frontend/public/json/unifi.json similarity index 100% rename from json/unifi.json rename to frontend/public/json/unifi.json diff --git a/json/unmanic.json b/frontend/public/json/unmanic.json similarity index 100% rename from json/unmanic.json rename to frontend/public/json/unmanic.json diff --git a/json/update-lxcs.json b/frontend/public/json/update-lxcs.json similarity index 100% rename from json/update-lxcs.json rename to frontend/public/json/update-lxcs.json diff --git a/json/update-repo.json b/frontend/public/json/update-repo.json similarity index 100% rename from json/update-repo.json rename to frontend/public/json/update-repo.json diff --git a/json/uptimekuma.json b/frontend/public/json/uptimekuma.json similarity index 100% rename from json/uptimekuma.json rename to frontend/public/json/uptimekuma.json diff --git a/json/urbackupserver.json b/frontend/public/json/urbackupserver.json similarity index 100% rename from json/urbackupserver.json rename to frontend/public/json/urbackupserver.json diff --git a/json/vaultwarden.json b/frontend/public/json/vaultwarden.json similarity index 96% rename from json/vaultwarden.json rename to frontend/public/json/vaultwarden.json index 26e1d904e..d83003e0f 100644 --- a/json/vaultwarden.json +++ b/frontend/public/json/vaultwarden.json @@ -10,7 +10,7 @@ "privileged": false, "interface_port": 8000, "documentation": null, - "website": "https://www.vaultwarden.net/", + "website": "https://github.com/dani-garcia/vaultwarden/", "logo": "https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/resources/vaultwarden-icon-white.svg", "description": "Vaultwarden is a self-hosted password manager which provides secure and encrypted password storage. It uses client-side encryption and provides access to passwords through a web interface and mobile apps.", "install_methods": [ diff --git a/frontend/public/json/versions.json b/frontend/public/json/versions.json new file mode 100644 index 000000000..8c89508e4 --- /dev/null +++ b/frontend/public/json/versions.json @@ -0,0 +1,1202 @@ +[ + { + "name": "home-assistant/core", + "version": "2025.3.4", + "date": "2025-03-21T20:22:46Z" + }, + { + "name": "syncthing/syncthing", + "version": "v1.29.3", + "date": "2025-03-12T11:56:30Z" + }, + { + "name": "evcc-io/evcc", + "version": "0.202.1", + "date": "2025-03-27T08:24:55Z" + }, + { + "name": "morpheus65535/bazarr", + "version": "v1.5.1", + "date": "2025-01-01T16:15:52Z" + }, + { + "name": "Jackett/Jackett", + "version": "v0.22.1699", + "date": "2025-03-27T05:57:08Z" + }, + { + "name": "openobserve/openobserve", + "version": "v0.14.5-rc6", + "date": "2025-03-27T05:15:49Z" + }, + { + "name": "StarFleetCPTN/GoMFT", + "version": "v0.2.1", + "date": "2025-03-27T02:08:19Z" + }, + { + "name": "fhem/fhem-mirror", + "version": "6.2", + "date": "2025-03-27T02:00:18Z" + }, + { + "name": "element-hq/synapse", + "version": "v1.127.1", + "date": "2025-03-26T21:44:28Z" + }, + { + "name": "duplicati/duplicati", + "version": "v2.1.0.112-2.1.0.112_canary_2025-03-26", + "date": "2025-03-26T21:04:38Z" + }, + { + "name": "ollama/ollama", + "version": "v0.6.2", + "date": "2025-03-18T03:11:33Z" + }, + { + "name": "runtipi/runtipi", + "version": "nightly", + "date": "2025-03-26T20:06:34Z" + }, + { + "name": "glanceapp/glance", + "version": "v0.7.8", + "date": "2025-03-26T19:59:07Z" + }, + { + "name": "tailscale/tailscale", + "version": "v1.82.0", + "date": "2025-03-26T19:50:59Z" + }, + { + "name": "keycloak/keycloak", + "version": "26.1.4", + "date": "2025-03-13T15:41:42Z" + }, + { + "name": "semaphoreui/semaphore", + "version": "v2.13.2", + "date": "2025-03-26T19:13:48Z" + }, + { + "name": "wazuh/wazuh", + "version": "coverity-w11-4.12.0", + "date": "2025-03-14T20:04:02Z" + }, + { + "name": "immich-app/immich", + "version": "v1.130.2", + "date": "2025-03-26T16:01:25Z" + }, + { + "name": "dgtlmoon/changedetection.io", + "version": "0.49.9", + "date": "2025-03-26T15:31:03Z" + }, + { + "name": "prometheus/prometheus", + "version": "v0.303.0-rc.0", + "date": "2025-03-26T12:48:46Z" + }, + { + "name": "n8n-io/n8n", + "version": "n8n@1.84.2", + "date": "2025-03-26T14:11:45Z" + }, + { + "name": "jupyter/notebook", + "version": "@jupyter-notebook/ui-components@7.4.0-beta.3", + "date": "2025-03-26T10:07:53Z" + }, + { + "name": "forgejo/forgejo", + "version": "v12.0.0-dev", + "date": "2025-03-26T09:58:55Z" + }, + { + "name": "Checkmk/checkmk", + "version": "v2.2.0p41", + "date": "2025-03-26T09:55:26Z" + }, + { + "name": "sct/overseerr", + "version": "v1.34.0", + "date": "2025-03-26T08:48:34Z" + }, + { + "name": "pocketbase/pocketbase", + "version": "v0.26.4", + "date": "2025-03-26T05:16:46Z" + }, + { + "name": "theonedev/onedev", + "version": "v11.8.0", + "date": "2025-03-26T04:41:15Z" + }, + { + "name": "cockpit-project/cockpit", + "version": "336.1", + "date": "2025-03-26T04:10:14Z" + }, + { + "name": "esphome/esphome", + "version": "2025.3.2", + "date": "2025-03-25T23:06:45Z" + }, + { + "name": "grafana/grafana", + "version": "v11.6.0", + "date": "2025-03-25T22:10:15Z" + }, + { + "name": "zabbix/zabbix", + "version": "7.2.5rc2", + "date": "2025-03-25T19:25:22Z" + }, + { + "name": "Stirling-Tools/Stirling-PDF", + "version": "v0.45.0", + "date": "2025-03-25T18:48:17Z" + }, + { + "name": "ipfs/kubo", + "version": "v0.34.1", + "date": "2025-03-25T18:11:12Z" + }, + { + "name": "aceberg/WatchYourLAN", + "version": "2.1.1", + "date": "2025-03-25T17:21:41Z" + }, + { + "name": "pocket-id/pocket-id", + "version": "v0.44.0", + "date": "2025-03-25T16:09:10Z" + }, + { + "name": "dotnetfactory/fluid-calendar", + "version": "v1.3.0", + "date": "2025-03-25T15:55:02Z" + }, + { + "name": "emqx/emqx", + "version": "v5.8.6", + "date": "2025-03-25T15:22:13Z" + }, + { + "name": "hansmi/prometheus-paperless-exporter", + "version": "v0.0.7", + "date": "2025-03-25T15:11:18Z" + }, + { + "name": "jenkinsci/jenkins", + "version": "jenkins-2.503", + "date": "2025-03-25T14:01:20Z" + }, + { + "name": "zwave-js/zwave-js-ui", + "version": "v10.1.2", + "date": "2025-03-25T13:56:22Z" + }, + { + "name": "msgbyte/tianji", + "version": "v1.19.3", + "date": "2025-03-25T13:50:19Z" + }, + { + "name": "crowdsecurity/crowdsec", + "version": "v1.6.8", + "date": "2025-03-25T13:33:10Z" + }, + { + "name": "icereed/paperless-gpt", + "version": "v0.14.1", + "date": "2025-03-25T10:09:14Z" + }, + { + "name": "VictoriaMetrics/VictoriaMetrics", + "version": "pmm-6401-v1.114.0", + "date": "2025-03-25T07:58:34Z" + }, + { + "name": "zitadel/zitadel", + "version": "v2.70.6", + "date": "2025-03-25T07:11:32Z" + }, + { + "name": "caddyserver/caddy", + "version": "v2.9.1", + "date": "2025-01-08T15:22:53Z" + }, + { + "name": "fallenbagel/jellyseerr", + "version": "preview-OIDC", + "date": "2025-03-25T00:28:11Z" + }, + { + "name": "influxdata/influxdb", + "version": "v3.0.0-0.beta.2", + "date": "2025-03-24T21:12:19Z" + }, + { + "name": "ZoeyVid/NPMplus", + "version": "2025-03-24-r2", + "date": "2025-03-24T20:52:35Z" + }, + { + "name": "HabitRPG/habitica", + "version": "v5.35.0", + "date": "2025-03-24T20:51:10Z" + }, + { + "name": "go-gitea/gitea", + "version": "v1.23.6", + "date": "2025-03-24T20:38:45Z" + }, + { + "name": "docmost/docmost", + "version": "v0.9.0", + "date": "2025-03-24T18:25:37Z" + }, + { + "name": "Radarr/Radarr", + "version": "v5.21.1.9799", + "date": "2025-03-24T15:52:12Z" + }, + { + "name": "Graylog2/graylog2-server", + "version": "6.2.0-beta.2", + "date": "2025-03-24T12:20:51Z" + }, + { + "name": "wavelog/wavelog", + "version": "2.0.2", + "date": "2025-03-24T12:02:08Z" + }, + { + "name": "nzbgetcom/nzbget", + "version": "v24.8", + "date": "2025-03-18T07:33:51Z" + }, + { + "name": "firefly-iii/firefly-iii", + "version": "v6.2.10", + "date": "2025-03-22T13:02:26Z" + }, + { + "name": "requarks/wiki", + "version": "v2.5.307", + "date": "2025-03-24T01:33:31Z" + }, + { + "name": "moghtech/komodo", + "version": "v1.17.0", + "date": "2025-03-24T00:46:32Z" + }, + { + "name": "Lidarr/Lidarr", + "version": "v2.10.3.4602", + "date": "2025-03-23T11:00:37Z" + }, + { + "name": "YunoHost/yunohost", + "version": "debian/12.0.12", + "date": "2025-03-16T11:59:24Z" + }, + { + "name": "nicolargo/glances", + "version": "v4.3.1", + "date": "2025-03-23T09:02:54Z" + }, + { + "name": "Prowlarr/Prowlarr", + "version": "v1.32.2.4987", + "date": "2025-03-16T09:41:37Z" + }, + { + "name": "usememos/memos", + "version": "v0.24.2", + "date": "2025-03-23T04:01:50Z" + }, + { + "name": "OliveTin/OliveTin", + "version": "2025.3.23", + "date": "2025-03-23T01:38:55Z" + }, + { + "name": "hoarder-app/hoarder", + "version": "sdk/v0.23.0", + "date": "2025-03-22T17:26:10Z" + }, + { + "name": "documenso/documenso", + "version": "v1.10.0-rc.1", + "date": "2025-03-22T06:34:33Z" + }, + { + "name": "netbox-community/netbox", + "version": "v4.2.6", + "date": "2025-03-21T21:20:29Z" + }, + { + "name": "sabnzbd/sabnzbd", + "version": "4.4.1", + "date": "2024-12-20T13:21:31Z" + }, + { + "name": "leiweibau/Pi.Alert", + "version": "v2025-03-21", + "date": "2025-03-21T19:50:46Z" + }, + { + "name": "clusterzx/paperless-ai", + "version": "v2.7.6", + "date": "2025-03-21T19:24:53Z" + }, + { + "name": "homarr-labs/homarr", + "version": "v1.12.0", + "date": "2025-03-21T19:14:59Z" + }, + { + "name": "photoprism/photoprism", + "version": "250321-57590c48b", + "date": "2025-03-21T11:48:16Z" + }, + { + "name": "AdguardTeam/AdGuardHome", + "version": "v0.107.59", + "date": "2025-03-21T11:11:39Z" + }, + { + "name": "jhuckaby/Cronicle", + "version": "v0.9.77", + "date": "2025-03-21T02:25:42Z" + }, + { + "name": "stonith404/pingvin-share", + "version": "v1.10.4", + "date": "2025-03-20T18:56:10Z" + }, + { + "name": "ellite/Wallos", + "version": "v2.48.0", + "date": "2025-03-20T16:57:43Z" + }, + { + "name": "neo4j/neo4j", + "version": "4.4.42", + "date": "2025-03-20T14:44:17Z" + }, + { + "name": "redis/redis", + "version": "8.0-rc1", + "date": "2025-03-11T18:16:27Z" + }, + { + "name": "rabbitmq/rabbitmq-server", + "version": "v4.0.7", + "date": "2025-02-26T19:07:11Z" + }, + { + "name": "NodeBB/NodeBB", + "version": "v4.2.0", + "date": "2025-03-19T18:34:01Z" + }, + { + "name": "seanmorley15/AdventureLog", + "version": "v0.9.0", + "date": "2025-03-19T13:30:02Z" + }, + { + "name": "hakimel/reveal.js", + "version": "5.2.0", + "date": "2025-03-19T11:03:56Z" + }, + { + "name": "Luligu/matterbridge", + "version": "2.2.5", + "date": "2025-03-19T09:11:26Z" + }, + { + "name": "Donkie/Spoolman", + "version": "v0.22.1", + "date": "2025-03-18T21:01:22Z" + }, + { + "name": "OctoPrint/OctoPrint", + "version": "1.10.3", + "date": "2024-11-05T09:20:50Z" + }, + { + "name": "apache/couchdb", + "version": "3.4.3.post1", + "date": "2025-03-18T09:44:59Z" + }, + { + "name": "authelia/authelia", + "version": "v4.39.1", + "date": "2025-03-18T03:57:41Z" + }, + { + "name": "advplyr/audiobookshelf", + "version": "v2.20.0", + "date": "2025-03-17T22:44:56Z" + }, + { + "name": "bastienwirtz/homer", + "version": "v25.03.3", + "date": "2025-03-17T20:55:37Z" + }, + { + "name": "Kareadita/Kavita", + "version": "v0.8.5.11", + "date": "2025-03-17T19:25:25Z" + }, + { + "name": "goauthentik/authentik", + "version": "version/2025.2.2", + "date": "2025-03-17T19:16:49Z" + }, + { + "name": "Sonarr/Sonarr", + "version": "v4.0.14.2939", + "date": "2025-03-17T19:12:37Z" + }, + { + "name": "TriliumNext/Notes", + "version": "v0.92.4", + "date": "2025-03-17T16:00:19Z" + }, + { + "name": "home-assistant/operating-system", + "version": "15.0", + "date": "2025-03-17T10:26:18Z" + }, + { + "name": "webmin/webmin", + "version": "2.303", + "date": "2025-03-17T04:54:50Z" + }, + { + "name": "gethomepage/homepage", + "version": "v1.0.4", + "date": "2025-03-16T22:19:31Z" + }, + { + "name": "autobrr/autobrr", + "version": "v1.60.0", + "date": "2025-03-16T18:39:49Z" + }, + { + "name": "BookStackApp/BookStack", + "version": "v25.02.1", + "date": "2025-03-16T12:51:00Z" + }, + { + "name": "Kozea/Radicale", + "version": "v3.5.0", + "date": "2025-03-16T06:05:55Z" + }, + { + "name": "pelican-dev/wings", + "version": "v1.0.0-beta10", + "date": "2025-03-15T20:24:34Z" + }, + { + "name": "pelican-dev/panel", + "version": "v1.0.0-beta18", + "date": "2025-03-15T20:24:04Z" + }, + { + "name": "bunkerity/bunkerweb", + "version": "v1.6.1", + "date": "2025-03-15T17:29:17Z" + }, + { + "name": "henrygd/beszel", + "version": "v0.10.2", + "date": "2025-03-15T07:14:54Z" + }, + { + "name": "navidrome/navidrome", + "version": "v0.55.1", + "date": "2025-03-15T05:36:06Z" + }, + { + "name": "coder/code-server", + "version": "v4.98.2", + "date": "2025-03-15T02:11:28Z" + }, + { + "name": "Threadfin/Threadfin", + "version": "1.2.31", + "date": "2025-03-14T22:04:10Z" + }, + { + "name": "paperless-ngx/paperless-ngx", + "version": "v2.15.0-beta", + "date": "2025-03-14T18:05:28Z" + }, + { + "name": "FlowiseAI/Flowise", + "version": "flowise@2.2.7-patch.1", + "date": "2025-03-14T14:53:53Z" + }, + { + "name": "docker/compose", + "version": "v2.34.0", + "date": "2025-03-14T09:11:17Z" + }, + { + "name": "FreshRSS/FreshRSS", + "version": "1.26.1", + "date": "2025-03-13T21:34:25Z" + }, + { + "name": "kimai/kimai", + "version": "2.31.0", + "date": "2025-03-13T17:13:47Z" + }, + { + "name": "diced/zipline", + "version": "v4.0.1", + "date": "2025-03-12T22:41:17Z" + }, + { + "name": "minio/minio", + "version": "RELEASE.2025-03-12T18-04-18Z", + "date": "2025-03-12T18:45:21Z" + }, + { + "name": "transmission/transmission", + "version": "4.0.1-beta.1", + "date": "2024-12-13T00:16:24Z" + }, + { + "name": "gotson/komga", + "version": "1.21.2", + "date": "2025-03-12T04:19:30Z" + }, + { + "name": "benjaminjonard/koillection", + "version": "1.6.12", + "date": "2025-03-11T15:04:43Z" + }, + { + "name": "excalidraw/excalidraw", + "version": "v0.18.0", + "date": "2025-03-11T12:47:22Z" + }, + { + "name": "Ombi-app/Ombi", + "version": "v4.47.1", + "date": "2025-01-05T21:14:23Z" + }, + { + "name": "mylar3/mylar3", + "version": "v0.8.2", + "date": "2025-03-11T05:20:22Z" + }, + { + "name": "stackblitz-labs/bolt.diy", + "version": "v0.0.7-hf1", + "date": "2025-03-10T20:49:39Z" + }, + { + "name": "AlexxIT/go2rtc", + "version": "v1.9.9", + "date": "2025-03-10T03:22:11Z" + }, + { + "name": "awawa-dev/HyperHDR", + "version": "v21.0.0.0", + "date": "2025-03-09T12:25:44Z" + }, + { + "name": "Readarr/Readarr", + "version": "v2.0.0.4645", + "date": "2017-03-07T18:56:06Z" + }, + { + "name": "Brandawg93/PeaNUT", + "version": "v5.6.0", + "date": "2025-03-08T19:02:31Z" + }, + { + "name": "YuukanOO/seelf", + "version": "v2.4.2", + "date": "2025-03-08T10:49:04Z" + }, + { + "name": "umami-software/umami", + "version": "v2.17.0", + "date": "2025-03-08T06:08:04Z" + }, + { + "name": "rogerfar/rdt-client", + "version": "v2.0.102", + "date": "2025-03-07T20:48:46Z" + }, + { + "name": "prometheus/alertmanager", + "version": "v0.28.1", + "date": "2025-03-07T15:41:35Z" + }, + { + "name": "hargata/lubelog", + "version": "v1.4.5", + "date": "2025-03-06T19:43:48Z" + }, + { + "name": "eclipse-mosquitto/mosquitto", + "version": "v2.0.21", + "date": "2025-03-06T16:24:56Z" + }, + { + "name": "Dolibarr/dolibarr", + "version": "21.0.0", + "date": "2025-03-06T16:20:45Z" + }, + { + "name": "open-webui/open-webui", + "version": "v0.5.20", + "date": "2025-03-06T03:44:57Z" + }, + { + "name": "matze/wastebin", + "version": "3.0.0", + "date": "2025-03-05T21:41:29Z" + }, + { + "name": "snipe/snipe-it", + "version": "v8.0.4", + "date": "2025-03-05T17:12:03Z" + }, + { + "name": "toniebox-reverse-engineering/teddycloud", + "version": "tc_v0.6.4", + "date": "2025-03-05T15:43:40Z" + }, + { + "name": "apache/tomcat", + "version": "10.1.39", + "date": "2025-03-04T19:05:18Z" + }, + { + "name": "pi-hole/pi-hole", + "version": "v6.0.5", + "date": "2025-03-04T17:28:41Z" + }, + { + "name": "sysadminsmedia/homebox", + "version": "v0.18.0", + "date": "2025-03-04T15:35:27Z" + }, + { + "name": "actualbudget/actual", + "version": "v25.3.1", + "date": "2025-03-03T02:05:36Z" + }, + { + "name": "Koenkk/zigbee2mqtt", + "version": "2.1.3", + "date": "2025-03-02T07:47:30Z" + }, + { + "name": "heiher/hev-socks5-server", + "version": "2.8.0", + "date": "2025-03-02T04:30:50Z" + }, + { + "name": "inspircd/inspircd", + "version": "v4.6.0", + "date": "2025-03-01T10:29:31Z" + }, + { + "name": "tobychui/zoraxy", + "version": "v3.1.9", + "date": "2025-03-01T02:24:33Z" + }, + { + "name": "grocy/grocy", + "version": "v4.4.2", + "date": "2025-02-28T16:26:05Z" + }, + { + "name": "jordan-dalby/ByteStash", + "version": "v1.5.7", + "date": "2025-02-27T20:04:08Z" + }, + { + "name": "cloudflare/cloudflared", + "version": "2025.2.1", + "date": "2025-02-27T11:36:11Z" + }, + { + "name": "cross-seed/cross-seed", + "version": "v6.11.2", + "date": "2025-02-26T14:54:49Z" + }, + { + "name": "Part-DB/Part-DB-server", + "version": "v1.16.1", + "date": "2025-02-26T11:29:15Z" + }, + { + "name": "silverbulletmd/silverbullet", + "version": "0.10.4", + "date": "2025-02-25T18:13:42Z" + }, + { + "name": "juanfont/headscale", + "version": "v0.25.1", + "date": "2025-02-25T17:30:48Z" + }, + { + "name": "benzino77/tasmocompiler", + "version": "v12.5.0", + "date": "2025-02-25T14:55:50Z" + }, + { + "name": "traefik/traefik", + "version": "v3.3.4", + "date": "2025-02-25T10:18:58Z" + }, + { + "name": "schlagmichdoch/PairDrop", + "version": "v1.11.2", + "date": "2025-02-24T19:47:06Z" + }, + { + "name": "drakkan/sftpgo", + "version": "v2.6.6", + "date": "2025-02-24T19:14:46Z" + }, + { + "name": "ioBroker/ioBroker", + "version": "2025-02-23", + "date": "2025-02-24T16:05:06Z" + }, + { + "name": "ventoy/Ventoy", + "version": "v1.1.05", + "date": "2025-02-24T11:53:12Z" + }, + { + "name": "Athou/commafeed", + "version": "5.6.1", + "date": "2025-02-23T20:39:48Z" + }, + { + "name": "openhab/openhab-core", + "version": "5.0.0.M1", + "date": "2025-02-23T14:55:36Z" + }, + { + "name": "outline/outline", + "version": "v0.82.1-15", + "date": "2025-02-23T14:38:09Z" + }, + { + "name": "TechnitiumSoftware/DnsServer", + "version": "v13.4.3", + "date": "2025-02-23T11:08:26Z" + }, + { + "name": "azukaar/Cosmos-Server", + "version": "v0.18.3", + "date": "2025-02-21T20:51:12Z" + }, + { + "name": "gristlabs/grist-core", + "version": "v1.4.2", + "date": "2025-02-18T21:43:36Z" + }, + { + "name": "prometheus-pve/prometheus-pve-exporter", + "version": "v3.5.2", + "date": "2025-02-18T16:43:41Z" + }, + { + "name": "typesense/typesense", + "version": "v28.0", + "date": "2025-02-18T15:49:57Z" + }, + { + "name": "qbittorrent/qBittorrent", + "version": "release-5.0.4", + "date": "2025-02-18T14:14:11Z" + }, + { + "name": "postgres/postgres", + "version": "REL_13_20", + "date": "2025-02-17T21:17:13Z" + }, + { + "name": "jellyfin/jellyfin", + "version": "v10.10.6", + "date": "2025-02-16T21:55:45Z" + }, + { + "name": "sbondCo/Watcharr", + "version": "v2.0.2", + "date": "2025-02-16T21:34:29Z" + }, + { + "name": "recyclarr/recyclarr", + "version": "v7.4.1", + "date": "2025-02-15T20:54:00Z" + }, + { + "name": "node-red/node-red", + "version": "4.0.9", + "date": "2025-02-14T17:10:20Z" + }, + { + "name": "mayswind/AriaNg", + "version": "1.3.10", + "date": "2025-02-14T16:23:14Z" + }, + { + "name": "MariaDB/server", + "version": "mariadb-11.7.2", + "date": "2025-02-13T04:13:46Z" + }, + { + "name": "glpi-project/glpi", + "version": "10.0.18", + "date": "2025-02-12T11:07:02Z" + }, + { + "name": "WordPress/WordPress", + "version": "6.7.2", + "date": "2025-02-11T16:13:18Z" + }, + { + "name": "homebridge/homebridge", + "version": "v1.9.0", + "date": "2025-02-11T13:26:42Z" + }, + { + "name": "TasmoAdmin/TasmoAdmin", + "version": "v4.2.3", + "date": "2025-02-09T23:07:48Z" + }, + { + "name": "dani-garcia/vaultwarden", + "version": "1.33.2", + "date": "2025-02-09T17:54:59Z" + }, + { + "name": "blakeblackshear/frigate", + "version": "v0.15.0", + "date": "2025-02-08T18:45:30Z" + }, + { + "name": "bluenviron/mediamtx", + "version": "v1.11.3", + "date": "2025-02-07T19:29:19Z" + }, + { + "name": "apache/cassandra", + "version": "cassandra-4.0.17", + "date": "2025-02-07T10:38:54Z" + }, + { + "name": "apache/tika", + "version": "2.9.3", + "date": "2025-02-07T00:15:40Z" + }, + { + "name": "actualbudget/actual-server", + "version": "v25.2.1", + "date": "2025-02-06T20:41:28Z" + }, + { + "name": "NginxProxyManager/nginx-proxy-manager", + "version": "v2.12.3", + "date": "2025-02-06T11:07:07Z" + }, + { + "name": "mongodb/mongo", + "version": "r8.0.5-rc1", + "date": "2025-02-04T20:35:23Z" + }, + { + "name": "thomiceli/opengist", + "version": "v1.9.1", + "date": "2025-02-04T20:24:29Z" + }, + { + "name": "Forceu/Gokapi", + "version": "v1.9.6", + "date": "2024-12-18T14:35:37Z" + }, + { + "name": "PrivateBin/PrivateBin", + "version": "1.7.6", + "date": "2025-02-01T09:50:52Z" + }, + { + "name": "hivemq/hivemq-community-edition", + "version": "2025.1", + "date": "2025-01-29T10:04:27Z" + }, + { + "name": "rustdesk/rustdesk-server", + "version": "1.1.14", + "date": "2025-01-25T12:48:28Z" + }, + { + "name": "crafty-controller/crafty-4", + "version": "v4.4.7", + "date": "2025-01-20T15:45:06Z" + }, + { + "name": "owncast/owncast", + "version": "v0.2.1", + "date": "2025-01-19T22:40:40Z" + }, + { + "name": "donaldzou/WGDashboard", + "version": "v4.1.4", + "date": "2025-01-19T13:14:19Z" + }, + { + "name": "0xERR0R/blocky", + "version": "v0.25", + "date": "2025-01-17T20:49:31Z" + }, + { + "name": "petio-team/petio", + "version": "v0.5.7", + "date": "2025-01-17T15:57:17Z" + }, + { + "name": "readeck/readeck", + "version": "0.17.1", + "date": "2025-01-15T19:13:33Z" + }, + { + "name": "linkwarden/linkwarden", + "version": "v2.9.3", + "date": "2025-01-13T16:19:53Z" + }, + { + "name": "Tautulli/Tautulli", + "version": "v2.15.1", + "date": "2025-01-11T23:38:33Z" + }, + { + "name": "traccar/traccar", + "version": "v6.6", + "date": "2025-01-11T17:26:49Z" + }, + { + "name": "ErsatzTV/ErsatzTV", + "version": "v25.1.0", + "date": "2025-01-10T18:14:54Z" + }, + { + "name": "MagicMirrorOrg/MagicMirror", + "version": "v2.30.0", + "date": "2025-01-01T14:30:19Z" + }, + { + "name": "go-vikunja/vikunja", + "version": "v0.24.6", + "date": "2024-12-22T20:24:35Z" + }, + { + "name": "louislam/uptime-kuma", + "version": "2.0.0-beta.1", + "date": "2024-12-20T08:56:43Z" + }, + { + "name": "IceWhaleTech/CasaOS", + "version": "v0.4.15", + "date": "2024-12-19T03:19:49Z" + }, + { + "name": "mysql/mysql-server", + "version": "mysql-cluster-7.6.33", + "date": "2024-12-16T11:55:50Z" + }, + { + "name": "ArchiveBox/ArchiveBox", + "version": "v0.7.3", + "date": "2024-12-15T10:18:06Z" + }, + { + "name": "pymedusa/Medusa", + "version": "v1.0.22", + "date": "2024-12-13T12:22:19Z" + }, + { + "name": "MDeLuise/plant-it", + "version": "0.10.0", + "date": "2024-12-10T09:35:26Z" + }, + { + "name": "phpipam/phpipam", + "version": "v1.7.3", + "date": "2024-11-27T21:26:11Z" + }, + { + "name": "Bubka/2FAuth", + "version": "v5.4.3", + "date": "2024-11-27T14:02:18Z" + }, + { + "name": "lldap/lldap", + "version": "v0.6.1", + "date": "2024-11-22T21:48:41Z" + }, + { + "name": "gotify/server", + "version": "v2.6.1", + "date": "2024-11-16T08:44:53Z" + }, + { + "name": "janeczku/calibre-web", + "version": "0.6.24", + "date": "2024-11-16T06:47:56Z" + }, + { + "name": "sabre-io/Baikal", + "version": "0.10.1", + "date": "2024-11-10T10:25:45Z" + }, + { + "name": "nextcloud/nextcloudpi", + "version": "v1.55.3", + "date": "2024-11-08T22:21:10Z" + }, + { + "name": "caddyserver/xcaddy", + "version": "v0.4.4", + "date": "2024-11-05T23:06:11Z" + }, + { + "name": "linuxserver/Heimdall", + "version": "v2.6.3", + "date": "2024-11-05T11:00:43Z" + }, + { + "name": "zerotier/ZeroTierOne", + "version": "1.14.2", + "date": "2024-10-29T16:17:48Z" + }, + { + "name": "CorentinTh/it-tools", + "version": "v2024.10.22-7ca5933", + "date": "2024-10-22T09:58:03Z" + }, + { + "name": "NLnetLabs/unbound", + "version": "release-1.22.0", + "date": "2024-10-17T08:43:37Z" + }, + { + "name": "Notifiarr/notifiarr", + "version": "v0.8.3", + "date": "2024-10-04T23:49:07Z" + }, + { + "name": "Kometa-Team/Kometa", + "version": "v2.1.0", + "date": "2024-09-30T17:59:43Z" + }, + { + "name": "FunkeyFlo/ps5-mqtt", + "version": "v1.4.0", + "date": "2024-08-06T19:57:33Z" + }, + { + "name": "projectsend/projectsend", + "version": "r1720", + "date": "2024-08-03T04:07:20Z" + }, + { + "name": "Pf2eToolsOrg/Pf2eTools", + "version": "v0.8.13", + "date": "2024-07-29T12:54:27Z" + }, + { + "name": "Paymenter/Paymenter", + "version": "v0.9.5", + "date": "2024-07-20T08:46:42Z" + }, + { + "name": "hywax/mafl", + "version": "v0.15.4", + "date": "2024-07-13T11:03:43Z" + }, + { + "name": "FlareSolverr/FlareSolverr", + "version": "v3.3.21", + "date": "2024-06-26T01:14:46Z" + }, + { + "name": "Suwayomi/Suwayomi-Server", + "version": "v1.1.1", + "date": "2024-06-15T17:23:48Z" + }, + { + "name": "Forceu/barcodebuddy", + "version": "v1.8.1.8", + "date": "2024-06-02T20:01:53Z" + }, + { + "name": "Lissy93/dashy", + "version": "3.1.1", + "date": "2024-05-30T17:20:53Z" + }, + { + "name": "motioneye-project/motioneye", + "version": "0.42.1", + "date": "2020-06-07T07:27:04Z" + }, + { + "name": "gnmyt/MySpeed", + "version": "v1.0.9", + "date": "2024-05-21T22:15:33Z" + }, + { + "name": "binwiederhier/ntfy", + "version": "v2.11.0", + "date": "2024-05-13T20:19:54Z" + }, + { + "name": "CrazyWolf13/web-check", + "version": "1.0.0", + "date": "2024-05-05T02:01:51Z" + }, + { + "name": "monicahq/monica", + "version": "v4.1.2", + "date": "2024-05-04T08:06:50Z" + }, + { + "name": "thelounge/thelounge-deb", + "version": "v4.4.3", + "date": "2024-04-06T12:24:35Z" + }, + { + "name": "louislam/dockge", + "version": "1.4.2", + "date": "2024-01-21T17:02:52Z" + }, + { + "name": "hyperion-project/hyperion.ng", + "version": "2.0.16", + "date": "2024-01-18T16:11:07Z" + }, + { + "name": "wger-project/wger", + "version": "2.2", + "date": "2023-12-06T12:08:09Z" + } +] diff --git a/json/victoriametrics.json b/frontend/public/json/victoriametrics.json similarity index 97% rename from json/victoriametrics.json rename to frontend/public/json/victoriametrics.json index f1dbd5794..f2921901e 100644 --- a/json/victoriametrics.json +++ b/frontend/public/json/victoriametrics.json @@ -1,6 +1,6 @@ { "name": "VictoriaMetrics", - "slug": "victoria", + "slug": "victoriametrics", "categories": [ 8 ], diff --git a/json/vikunja.json b/frontend/public/json/vikunja.json similarity index 100% rename from json/vikunja.json rename to frontend/public/json/vikunja.json diff --git a/json/wallos.json b/frontend/public/json/wallos.json similarity index 100% rename from json/wallos.json rename to frontend/public/json/wallos.json diff --git a/json/wastebin.json b/frontend/public/json/wastebin.json similarity index 100% rename from json/wastebin.json rename to frontend/public/json/wastebin.json diff --git a/json/watcharr.json b/frontend/public/json/watcharr.json similarity index 100% rename from json/watcharr.json rename to frontend/public/json/watcharr.json diff --git a/json/watchyourlan.json b/frontend/public/json/watchyourlan.json similarity index 100% rename from json/watchyourlan.json rename to frontend/public/json/watchyourlan.json diff --git a/json/wavelog.json b/frontend/public/json/wavelog.json similarity index 100% rename from json/wavelog.json rename to frontend/public/json/wavelog.json diff --git a/frontend/public/json/wazuh.json b/frontend/public/json/wazuh.json new file mode 100644 index 000000000..26eda6951 --- /dev/null +++ b/frontend/public/json/wazuh.json @@ -0,0 +1,43 @@ +{ + "name": "Wazuh", + "slug": "wazuh", + "categories": [ + 9 + ], + "date_created": "2025-03-24", + "type": "ct", + "updateable": false, + "privileged": false, + "interface_port": 443, + "documentation": "https://documentation.wazuh.com/", + "website": "https://wazuh.com/", + "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/wazuh.svg", + "description": "Wazuh is an open-source security monitoring solution that provides endpoint protection, network monitoring, and log analysis capabilities.", + "install_methods": [ + { + "type": "default", + "script": "ct/wazuh.sh", + "resources": { + "cpu": 4, + "ram": 4096, + "hdd": 18, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "root", + "password": null + }, + "notes": [ + { + "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.", + "type": "warning" + }, + { + "text": "Show password: `cat ~/wazuh.creds`", + "type": "info" + } + ] +} diff --git a/json/web-check.json b/frontend/public/json/web-check.json similarity index 100% rename from json/web-check.json rename to frontend/public/json/web-check.json diff --git a/json/webmin.json b/frontend/public/json/webmin.json similarity index 100% rename from json/webmin.json rename to frontend/public/json/webmin.json diff --git a/json/wger.json b/frontend/public/json/wger.json similarity index 100% rename from json/wger.json rename to frontend/public/json/wger.json diff --git a/json/whisparr.json b/frontend/public/json/whisparr.json similarity index 100% rename from json/whisparr.json rename to frontend/public/json/whisparr.json diff --git a/json/whoogle.json b/frontend/public/json/whoogle.json similarity index 100% rename from json/whoogle.json rename to frontend/public/json/whoogle.json diff --git a/json/wikijs.json b/frontend/public/json/wikijs.json similarity index 100% rename from json/wikijs.json rename to frontend/public/json/wikijs.json diff --git a/json/wireguard.json b/frontend/public/json/wireguard.json similarity index 100% rename from json/wireguard.json rename to frontend/public/json/wireguard.json diff --git a/json/wordpress.json b/frontend/public/json/wordpress.json similarity index 100% rename from json/wordpress.json rename to frontend/public/json/wordpress.json diff --git a/frontend/public/json/yt-dlp-webui.json b/frontend/public/json/yt-dlp-webui.json new file mode 100644 index 000000000..ce8cc5a9b --- /dev/null +++ b/frontend/public/json/yt-dlp-webui.json @@ -0,0 +1,47 @@ +{ + "name": "yt-dlp-webui", + "slug": "yt-dlp-webui", + "categories": [ + 14 + ], + "date_created": "2025-03-24", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3033, + "documentation": "https://github.com/marcopiovanello/yt-dlp-web-ui", + "website": "https://github.com/marcopiovanello/yt-dlp-web-ui", + "logo": "https://raw.githubusercontent.com/marcopiovanello/yt-dlp-web-ui/refs/heads/master/frontend/src/assets/favicon.ico", + "description": "A not so terrible web ui for yt-dlp.\nHigh performance extendeable web ui and RPC server for yt-dlp with low impact on resources.\nCreated for the only purpose of fetching videos from my server/nas and monitor upcoming livestreams.", + "install_methods": [ + { + "type": "default", + "script": "ct/yt-dlp-webui.sh", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 4, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "admin", + "password": null + }, + "notes": [ + { + "text": "Show password: `cat ~/yt-dlp-webui.creds`", + "type": "info" + }, + { + "text": "The config file is located in `/opt/yt-dlp-webui/config.conf`", + "type": "info" + }, + { + "text": "Make sure to either mount an external path or increase the Disk space afterwards", + "type": "info" + } + ] +} diff --git a/json/yunohost.json b/frontend/public/json/yunohost.json similarity index 100% rename from json/yunohost.json rename to frontend/public/json/yunohost.json diff --git a/json/zabbix.json b/frontend/public/json/zabbix.json similarity index 100% rename from json/zabbix.json rename to frontend/public/json/zabbix.json diff --git a/json/zammad.json b/frontend/public/json/zammad.json similarity index 100% rename from json/zammad.json rename to frontend/public/json/zammad.json diff --git a/json/zerotier-one.json b/frontend/public/json/zerotier-one.json similarity index 100% rename from json/zerotier-one.json rename to frontend/public/json/zerotier-one.json diff --git a/json/zigbee2mqtt.json b/frontend/public/json/zigbee2mqtt.json similarity index 100% rename from json/zigbee2mqtt.json rename to frontend/public/json/zigbee2mqtt.json diff --git a/json/zipline.json b/frontend/public/json/zipline.json similarity index 100% rename from json/zipline.json rename to frontend/public/json/zipline.json diff --git a/frontend/public/json/zitadel.json b/frontend/public/json/zitadel.json new file mode 100644 index 000000000..7eaa51a78 --- /dev/null +++ b/frontend/public/json/zitadel.json @@ -0,0 +1,44 @@ +{ + "name": "Zitadel", + "slug": "zitadel", + "categories": [ + 6 + ], + "date_created": "2025-02-10", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8080, + "documentation": "https://zitadel.com/docs/guides/overview", + "website": "https://zitadel.com", + "logo": "https://raw.githubusercontent.com/zitadel/zitadel/refs/heads/main/console/src/assets/icons/android-chrome-512x512.png", + "description": "Zitadel is an open-source identity and access management (IAM) solution designed to provide secure authentication, authorization, and user management for modern applications and services. Built with a focus on flexibility, scalability, and security, Zitadel offers a comprehensive set of features for developers and organizations looking to implement robust identity management.", + "install_methods": [ + { + "type": "default", + "script": "ct/zitadel.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 8, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "zitadel-admin@zitadel.localhost", + "password": "Password1!" + }, + "notes": [ + { + "text": "Application credentials: `cat ~/zitadel.creds`", + "type": "info" + }, + { + "text": "Change the ExternalDomain value in `/opt/zitadel/config.yaml` to your domain/hostname/IP and run `bash zitadel-rerun.sh`", + "type": "info" + } + ], + "status": "🚧" +} \ No newline at end of file diff --git a/json/zoraxy.json b/frontend/public/json/zoraxy.json similarity index 100% rename from json/zoraxy.json rename to frontend/public/json/zoraxy.json diff --git a/json/zwave-js-ui.json b/frontend/public/json/zwave-js-ui.json similarity index 100% rename from json/zwave-js-ui.json rename to frontend/public/json/zwave-js-ui.json diff --git a/frontend/src/__tests__/public/validate-json.test.ts b/frontend/src/__tests__/public/validate-json.test.ts index 562ebe9c1..1ab52db68 100644 --- a/frontend/src/__tests__/public/validate-json.test.ts +++ b/frontend/src/__tests__/public/validate-json.test.ts @@ -3,13 +3,14 @@ import { promises as fs } from "fs"; import path from "path"; import { ScriptSchema, type Script } from "@/app/json-editor/_schemas/schemas"; import { Metadata } from "@/lib/types"; - +console.log('Current directory: ' + process.cwd()); const jsonDir = "public/json"; const metadataFileName = "metadata.json"; +const versionsFileName = "versions.json"; const encoding = "utf-8"; const fileNames = (await fs.readdir(jsonDir)) - .filter((fileName) => fileName !== metadataFileName) + .filter((fileName) => fileName !== metadataFileName && fileName !== versionsFileName); describe.each(fileNames)("%s", async (fileName) => { let script: Script; @@ -20,6 +21,7 @@ describe.each(fileNames)("%s", async (fileName) => { script = JSON.parse(fileContent); }) + it("should have valid json according to script schema", () => { ScriptSchema.parse(script); }); @@ -27,6 +29,8 @@ describe.each(fileNames)("%s", async (fileName) => { it("should have a corresponding script file", () => { script.install_methods.forEach((method) => { const scriptPath = path.resolve("..", method.script) + //FIXME: Dose note account for new dir structure and files in /script/tools + assert(fs.stat(scriptPath), `Script file not found: ${scriptPath}`) }) }); @@ -40,7 +44,6 @@ describe(`${metadataFileName}`, async () => { const fileContent = await fs.readFile(filePath, encoding) metadata = JSON.parse(fileContent); }) - it("should have valid json according to metadata schema", () => { // TODO: create zod schema for metadata. Move zod schemas to /lib/types.ts assert(metadata.categories.length > 0); diff --git a/frontend/src/app/api/categories/route.ts b/frontend/src/app/api/categories/route.ts index 2d33a3ab0..c7392a1e3 100644 --- a/frontend/src/app/api/categories/route.ts +++ b/frontend/src/app/api/categories/route.ts @@ -7,6 +7,7 @@ export const dynamic = "force-static"; const jsonDir = "public/json"; const metadataFileName = "metadata.json"; +const versionFileName = "version.json"; const encoding = "utf-8"; const getMetadata = async () => { @@ -18,7 +19,7 @@ const getMetadata = async () => { const getScripts = async () => { const filePaths = (await fs.readdir(jsonDir)) - .filter((fileName) => fileName !== metadataFileName) + .filter((fileName) => fileName !== metadataFileName && fileName !== versionFileName) .map((fileName) => path.resolve(jsonDir, fileName)); const scripts = await Promise.all( @@ -39,7 +40,7 @@ export async function GET() { const categories = metadata.categories .map((category) => { category.scripts = scripts.filter((script) => - script.categories.includes(category.id), + script.categories?.includes(category.id), ); return category; }) diff --git a/frontend/src/app/api/versions/route.ts b/frontend/src/app/api/versions/route.ts new file mode 100644 index 000000000..94585bad9 --- /dev/null +++ b/frontend/src/app/api/versions/route.ts @@ -0,0 +1,45 @@ +import { AppVersion } from "@/lib/types"; +import { error } from "console"; +import { promises as fs } from "fs"; +// import Error from "next/error"; +import { NextResponse } from "next/server"; +import path from "path"; + +export const dynamic = "force-static"; + +const jsonDir = "public/json"; +const versionsFileName = "versions.json"; +const encoding = "utf-8"; + +const getVersions = async () => { + const filePath = path.resolve(jsonDir, versionsFileName); + const fileContent = await fs.readFile(filePath, encoding); + const versions: AppVersion[] = JSON.parse(fileContent); + + const modifiedVersions = versions.map(version => { + let newName = version.name; + newName = newName.toLowerCase().replace(/[^a-z0-9/]/g, ''); + return { ...version, name: newName, date: new Date(version.date) }; + }); + + return modifiedVersions; +}; + +export async function GET() { + try { + + const versions = await getVersions(); + return NextResponse.json(versions); + + } catch (error) { + console.error(error); + const err = error as globalThis.Error; + return NextResponse.json({ + name: err.name, + message: err.message || "An unexpected error occurred", + version: "No version found - Error" + }, { + status: 500, + }); + } +} diff --git a/frontend/src/app/json-editor/_components/Note.tsx b/frontend/src/app/json-editor/_components/Note.tsx index 3242b5141..5827285c2 100644 --- a/frontend/src/app/json-editor/_components/Note.tsx +++ b/frontend/src/app/json-editor/_components/Note.tsx @@ -1,11 +1,11 @@ import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, } from "@/components/ui/select"; import { AlertColors } from "@/config/siteConfig"; import { cn } from "@/lib/utils"; @@ -15,116 +15,136 @@ import { ScriptSchema, type Script } from "../_schemas/schemas"; import { memo, useCallback, useRef } from "react"; type NoteProps = { - script: Script; - setScript: (script: Script) => void; - setIsValid: (isValid: boolean) => void; - setZodErrors: (zodErrors: z.ZodError | null) => void; + script: Script; + setScript: (script: Script) => void; + setIsValid: (isValid: boolean) => void; + setZodErrors: (zodErrors: z.ZodError | null) => void; }; function Note({ - script, - setScript, - setIsValid, - setZodErrors, + script, + setScript, + setIsValid, + setZodErrors, }: NoteProps) { - const inputRefs = useRef<(HTMLInputElement | null)[]>([]); + const inputRefs = useRef<(HTMLInputElement | null)[]>([]); - const addNote = useCallback(() => { - setScript({ - ...script, - notes: [...script.notes, { text: "", type: "" }], - }); - }, [script, setScript]); + const addNote = useCallback(() => { + setScript({ + ...script, + notes: [...script.notes, { text: "", type: "" }], + }); + }, [script, setScript]); - const updateNote = useCallback(( - index: number, - key: keyof Script["notes"][number], - value: string, - ) => { - const updated: Script = { - ...script, - notes: script.notes.map((note, i) => - i === index ? { ...note, [key]: value } : note, - ), - }; - const result = ScriptSchema.safeParse(updated); - setIsValid(result.success); - setZodErrors(result.success ? null : result.error); - setScript(updated); - // Restore focus after state update - if (key === "text") { - setTimeout(() => { - inputRefs.current[index]?.focus(); - }, 0); - } - }, [script, setScript, setIsValid, setZodErrors]); + const updateNote = useCallback(( + index: number, + key: keyof Script["notes"][number], + value: string, + ) => { + const updated: Script = { + ...script, + notes: script.notes.map((note, i) => + i === index ? { ...note, [key]: value } : note, + ), + }; + const result = ScriptSchema.safeParse(updated); + setIsValid(result.success); + setZodErrors(result.success ? null : result.error); + setScript(updated); + // Restore focus after state update + if (key === "text") { + setTimeout(() => { + inputRefs.current[index]?.focus(); + }, 0); + } + }, [script, setScript, setIsValid, setZodErrors]); - const removeNote = useCallback((index: number) => { - setScript({ - ...script, - notes: script.notes.filter((_, i) => i !== index), - }); - }, [script, setScript]); + const removeNote = useCallback((index: number) => { + setScript({ + ...script, + notes: script.notes.filter((_, i) => i !== index), + }); + }, [script, setScript]); - const NoteItem = memo( - ({ note, index }: { note: Script["notes"][number]; index: number }) => ( -
- updateNote(index, "text", e.target.value)} - ref={(el) => { - inputRefs.current[index] = el; - }} - /> - - -
- ), - ); - - NoteItem.displayName = 'NoteItem'; - - return ( - <> -

Notes

- {script.notes.map((note, index) => ( - - ))} - - - ); + + + ); } -export default memo(Note); +const NoteItem = memo( + ({ + note, + index, + updateNote, + removeNote, + }: { + note: Script["notes"][number]; + index: number; + updateNote: (index: number, key: keyof Script["notes"][number], value: string) => void; + removeNote: (index: number) => void; + }) => { + const inputRef = useRef(null); + + const handleTextChange = useCallback((e: React.ChangeEvent) => { + updateNote(index, "text", e.target.value); + setTimeout(() => { + inputRef.current?.focus(); + }, 0); + }, [index, updateNote]); + + return ( +
+ + + +
+ ); + } +); + +NoteItem.displayName = 'NoteItem'; + + +export default memo(Note); \ No newline at end of file diff --git a/frontend/src/app/scripts/_components/ScriptItem.tsx b/frontend/src/app/scripts/_components/ScriptItem.tsx index 6b1a73c47..7b8ad2d5f 100644 --- a/frontend/src/app/scripts/_components/ScriptItem.tsx +++ b/frontend/src/app/scripts/_components/ScriptItem.tsx @@ -1,7 +1,9 @@ -"use client"; + import { Separator } from "@/components/ui/separator"; import { extractDate } from "@/lib/time"; -import { Script } from "@/lib/types"; +import { Script, AppVersion } from "@/lib/types"; +import { fetchVersions } from "@/lib/data"; + import { X } from "lucide-react"; import Image from "next/image"; @@ -15,6 +17,8 @@ import InstallCommand from "./ScriptItems/InstallCommand"; import InterFaces from "./ScriptItems/InterFaces"; import Tooltips from "./ScriptItems/Tooltips"; import { basePath } from "@/config/siteConfig"; +import { useEffect, useState } from "react"; + function ScriptItem({ item, @@ -27,6 +31,23 @@ function ScriptItem({ window.history.pushState({}, document.title, window.location.pathname); setSelectedScript(null); }; + const [versions, setVersions] = useState([]); + + + useEffect(() => { + fetchVersions() + .then((fetchedVersions) => { + console.log("Fetched Versions: ", fetchedVersions); + if (Array.isArray(fetchedVersions)) { + setVersions(fetchedVersions); + } else if (fetchedVersions && typeof fetchedVersions === "object") { + setVersions([fetchedVersions]); + } else { + setVersions([]); + } + }) + .catch((error) => console.error("Error fetching versions:", error)); + }, []); const defaultInstallMethod = item.install_methods?.[0]; const os = defaultInstallMethod?.resources?.os || "Proxmox Node"; @@ -48,8 +69,8 @@ function ScriptItem({ src={item.logo || `/${basePath}/logo.png`} width={400} onError={(e) => - ((e.currentTarget as HTMLImageElement).src = - `/${basePath}/logo.png`) + ((e.currentTarget as HTMLImageElement).src = + `/${basePath}/logo.png`) } height={400} alt={item.name} @@ -71,6 +92,32 @@ function ScriptItem({
+
{versions.length === 0 ? (

Loading versions...

) : + (<> +

Version:

+

{versions.find((v) => + v.name === item.slug.replace(/[^a-z0-9]/g, '') || + v.name.includes(item.slug.replace(/[^a-z0-9]/g, '')) || + v.name.replace(/[^a-z0-9]/g, '') === item.slug.replace(/[^a-z0-9]/g, '') + + )?.version || "No Version information found" + }

+

Latest Version changes(Pulled from newreleases.io):

+

+ {(() => { + const matchedVersion = versions.find((v) => + v.name === item.slug.replace(/[^a-z0-9]/g, '') || + v.name.includes(item.slug.replace(/[^a-z0-9]/g, '')) || + v.name.replace(/[^a-z0-9]/g, '') === item.slug.replace(/[^a-z0-9]/g, '') + ); + return matchedVersion?.date ? + extractDate(matchedVersion.date as unknown as string) : + "No date information found" + })()} +

+ ) + } +
diff --git a/frontend/src/config/siteConfig.tsx b/frontend/src/config/siteConfig.tsx index 88463ffc1..c21751d54 100644 --- a/frontend/src/config/siteConfig.tsx +++ b/frontend/src/config/siteConfig.tsx @@ -41,8 +41,8 @@ export const mostPopularScripts = [ ]; export const analytics = { - url: "-", - token: "b60d3032-1a11-4244-a100-81d26c5c49a7", + url: "analytics.proxmoxve-scripts.com", + token: "aefee1b9-2a12-4ac2-9d82-a63113edc62e", }; export const AlertColors = { diff --git a/frontend/src/lib/data.ts b/frontend/src/lib/data.ts index 99678031a..526cc628b 100644 --- a/frontend/src/lib/data.ts +++ b/frontend/src/lib/data.ts @@ -8,3 +8,11 @@ export const fetchCategories = async () => { const categories: Category[] = await response.json(); return categories; }; + +export const fetchVersions = async () => { + const response = await fetch(`api/versions`); + if (!response.ok) { + throw new Error(`Failed to fetch versions: ${response.statusText}`); + } + return response.json(); +}; diff --git a/frontend/src/lib/types.ts b/frontend/src/lib/types.ts index 8a6438acf..ff645cac2 100644 --- a/frontend/src/lib/types.ts +++ b/frontend/src/lib/types.ts @@ -56,4 +56,10 @@ export interface Version { export interface OperatingSystem { name: string; versions: Version[]; +} + +export interface AppVersion { + name: string; + version: string; + date: Date; } \ No newline at end of file diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 4b269df34..195f88b78 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -1,6 +1,10 @@ { "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -10,7 +14,7 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "react-jsx", + "jsx": "preserve", "incremental": true, "plugins": [ { @@ -18,7 +22,9 @@ } ], "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ] }, "target": "ES2017" }, @@ -29,5 +35,7 @@ ".next/types/**/*.ts", "next.config.mjs" ], - "exclude": ["node_modules"] + "exclude": [ + "node_modules" + ] } diff --git a/install/2fauth-install.sh b/install/2fauth-install.sh index 8a23b5126..750ac4c30 100644 --- a/install/2fauth-install.sh +++ b/install/2fauth-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.2fauth.app/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,15 +15,12 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ - nginx \ - composer \ - php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli} \ - mariadb-server \ - wget \ - openssh-server + nginx \ + composer \ + php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli} \ + mariadb-server \ + wget \ + openssh-server msg_ok "Installed Dependencies" msg_info "Setting up Database" @@ -34,30 +31,30 @@ $STD mysql -u root -e "CREATE DATABASE $DB_NAME;" $STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" { - echo "2FAuth Credentials" - echo "Database User: $DB_USER" - echo "Database Password: $DB_PASS" - echo "Database Name: $DB_NAME" -} >> ~/2FAuth.creds + echo "2FAuth Credentials" + echo "Database User: $DB_USER" + echo "Database Password: $DB_PASS" + echo "Database Name: $DB_NAME" +} >>~/2FAuth.creds msg_ok "Set up Database" msg_info "Setup 2FAuth" RELEASE=$(curl -s https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') wget -q "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip" unzip -q "${RELEASE}.zip" -mv "2FAuth-${RELEASE//v}/" /opt/2fauth +mv "2FAuth-${RELEASE//v/}/" /opt/2fauth cd "/opt/2fauth" || return cp .env.example .env IPADDRESS=$(hostname -I | awk '{print $1}') sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \ - -e "s|^DB_CONNECTION=$|DB_CONNECTION=mysql|" \ - -e "s|^DB_DATABASE=$|DB_DATABASE=$DB_NAME|" \ - -e "s|^DB_HOST=$|DB_HOST=127.0.0.1|" \ - -e "s|^DB_PORT=$|DB_PORT=3306|" \ - -e "s|^DB_USERNAME=$|DB_USERNAME=$DB_USER|" \ - -e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env + -e "s|^DB_CONNECTION=$|DB_CONNECTION=mysql|" \ + -e "s|^DB_DATABASE=$|DB_DATABASE=$DB_NAME|" \ + -e "s|^DB_HOST=$|DB_HOST=127.0.0.1|" \ + -e "s|^DB_PORT=$|DB_PORT=3306|" \ + -e "s|^DB_USERNAME=$|DB_USERNAME=$DB_USER|" \ + -e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env export COMPOSER_ALLOW_SUPERUSER=1 $STD composer update --no-plugins --no-scripts diff --git a/install/actualbudget-install.sh b/install/actualbudget-install.sh index 142e91c21..603b72284 100644 --- a/install/actualbudget-install.sh +++ b/install/actualbudget-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE # Source: https://actualbudget.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ tini \ gpg \ build-essential \ @@ -48,7 +45,7 @@ mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migratio chown -R root:root /opt/actualbudget-data chmod -R 755 /opt/actualbudget-data -cat < /opt/actualbudget-data/.env +cat </opt/actualbudget-data/.env ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload ACTUAL_DATA_DIR=/opt/actualbudget-data ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files diff --git a/install/adguard-install.sh b/install/adguard-install.sh index d4681a09a..8407c6581 100644 --- a/install/adguard-install.sh +++ b/install/adguard-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://adguard.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/adventurelog-install.sh b/install/adventurelog-install.sh index 8bd7c9a24..424e83dee 100644 --- a/install/adventurelog-install.sh +++ b/install/adventurelog-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/seanmorley15/AdventureLog -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -17,9 +17,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ gpg \ - curl \ - sudo \ - mc \ gdal-bin \ libgdal-dev \ git \ @@ -60,12 +57,12 @@ $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 "AdventureLog-Credentials" - echo "AdventureLog Database User: $DB_USER" - echo "AdventureLog Database Password: $DB_PASS" - echo "AdventureLog Database Name: $DB_NAME" - echo "AdventureLog Secret: $SECRET_KEY" -} >> ~/adventurelog.creds + echo "AdventureLog-Credentials" + echo "AdventureLog Database User: $DB_USER" + echo "AdventureLog Database Password: $DB_PASS" + echo "AdventureLog Database Name: $DB_NAME" + echo "AdventureLog Secret: $SECRET_KEY" +} >>~/adventurelog.creds msg_ok "Set up PostgreSQL" msg_info "Installing AdventureLog (Patience)" @@ -77,7 +74,7 @@ RELEASE=$(curl -s https://api.github.com/repos/seanmorley15/AdventureLog/release wget -q "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip" unzip -q v${RELEASE}.zip mv AdventureLog-${RELEASE} /opt/adventurelog -cat < /opt/adventurelog/backend/server/.env +cat </opt/adventurelog/backend/server/.env PGHOST='localhost' PGDATABASE='${DB_NAME}' PGUSER='${DB_USER}' @@ -106,7 +103,7 @@ $STD pip install -r requirements.txt $STD python3 manage.py collectstatic --noinput $STD python3 manage.py migrate $STD python3 manage.py download-countries -cat < /opt/adventurelog/frontend/.env +cat </opt/adventurelog/frontend/.env PUBLIC_SERVER_URL=http://$LOCAL_IP:8000 BODY_SIZE_LIMIT=Infinity ORIGIN='http://$LOCAL_IP:3000' @@ -118,7 +115,7 @@ echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed AdventureLog" msg_info "Setting up Django Admin" -$STD python3 /opt/adventurelog/backend/server/manage.py shell << EOF +$STD python3 /opt/adventurelog/backend/server/manage.py shell <> ~/adventurelog.creds + echo "" + echo "Django-Credentials" + echo "Django Admin User: $DJANGO_ADMIN_USER" + echo "Django Admin Password: $DJANGO_ADMIN_PASS" +} >>~/adventurelog.creds msg_ok "Setup Django Admin" msg_info "Creating Service" @@ -174,4 +171,4 @@ msg_info "Cleaning up" rm -rf /opt/v${RELEASE}.zip $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/agentdvr-install.sh b/install/agentdvr-install.sh index 2124949b9..1a182bf67 100644 --- a/install/agentdvr-install.sh +++ b/install/agentdvr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.ispyconnect.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y unzip $STD apt-get install -y apt-transport-https $STD apt-get install -y alsa-utils diff --git a/install/alpine-docker-install.sh b/install/alpine-docker-install.sh index 6b33771e2..0a910a164 100644 --- a/install/alpine-docker-install.sh +++ b/install/alpine-docker-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.docker.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/alpine-gitea-install.sh b/install/alpine-gitea-install.sh new file mode 100644 index 000000000..6db3c2249 --- /dev/null +++ b/install/alpine-gitea-install.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://gitea.io/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apk add \ + newt \ + curl \ + openssh \ + nano \ + mc \ + gpg + +msg_ok "Installed Dependencies" + +msg_info "Installing Gitea" +$STD apk add --no-cache gitea +msg_ok "Installed Gitea" + +msg_info "Enabling Gitea Service" +$STD rc-update add gitea default +msg_ok "Enabled Gitea Service" + +msg_info "Starting Gitea" +$STD service gitea start +msg_ok "Started Gitea" + +motd_ssh +customize diff --git a/install/alpine-grafana-install.sh b/install/alpine-grafana-install.sh index 2c0005521..3e36d2f79 100644 --- a/install/alpine-grafana-install.sh +++ b/install/alpine-grafana-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://grafana.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -30,4 +30,4 @@ $STD rc-update add grafana default msg_ok "Installed Grafana" motd_ssh -customize \ No newline at end of file +customize diff --git a/install/alpine-install.sh b/install/alpine-install.sh index bbb45adb3..06b77f188 100644 --- a/install/alpine-install.sh +++ b/install/alpine-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://alpinelinux.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/alpine-it-tools-install.sh b/install/alpine-it-tools-install.sh index f6bdca6a8..d8bb390c8 100644 --- a/install/alpine-it-tools-install.sh +++ b/install/alpine-it-tools-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://it-tools.tech/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -30,7 +30,7 @@ curl -fsSL -o it-tools.zip "$DOWNLOAD_URL" mkdir -p /usr/share/nginx/html unzip -q it-tools.zip -d /tmp/it-tools cp -r /tmp/it-tools/dist/* /usr/share/nginx/html -cat <<'EOF' > /etc/nginx/http.d/default.conf +cat <<'EOF' >/etc/nginx/http.d/default.conf server { listen 80; server_name localhost; diff --git a/install/alpine-nextcloud-install.sh b/install/alpine-nextcloud-install.sh index 0da935c4e..0e9c8cba0 100644 --- a/install/alpine-nextcloud-install.sh +++ b/install/alpine-nextcloud-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nextcloud.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -140,7 +140,7 @@ server { } EOF sed -i -e 's|memory_limit = 128M|memory_limit = 512M|; $aapc.enable_cli=1' /etc/php83/php.ini -sed -i -e 's|upload_max_file_size = 2M|upload_max_file_size = 16G|' /etc/php83/php.ini +sed -i -e 's|upload_max_file_size = 2M|upload_max_file_size = 16G|' /etc/php83/php.ini sed -i -E '/^php_admin_(flag|value)\[opcache/s/^/;/' /etc/php83/php-fpm.d/nextcloud.conf msg_ok "Installed Nextcloud" diff --git a/install/alpine-redis-install.sh b/install/alpine-redis-install.sh new file mode 100644 index 000000000..5657e2c7e --- /dev/null +++ b/install/alpine-redis-install.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://redis.io/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apk add \ + newt \ + curl \ + openssh \ + nano \ + mc \ + gpg + +msg_ok "Installed Dependencies" + +msg_info "Installing Redis" +$STD apk add redis +$STD sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf +$STD rc-update add redis default +$STD rc-service redis start +msg_ok "Installed Redis" + +motd_ssh +customize diff --git a/install/alpine-vaultwarden-install.sh b/install/alpine-vaultwarden-install.sh index c8e872735..3ee5fede7 100644 --- a/install/alpine-vaultwarden-install.sh +++ b/install/alpine-vaultwarden-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/dani-garcia/vaultwarden -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -33,7 +33,7 @@ msg_ok "Installed Alpine-Vaultwarden" msg_info "Installing Web-Vault" $STD apk add vaultwarden-web-vault -msg_ok "Installed Web-Vault" +msg_ok "Installed Web-Vault" msg_info "Starting Alpine-Vaultwarden" $STD rc-service vaultwarden start diff --git a/install/alpine-zigbee2mqtt-install.sh b/install/alpine-zigbee2mqtt-install.sh index e6c922718..b8990d95c 100644 --- a/install/alpine-zigbee2mqtt-install.sh +++ b/install/alpine-zigbee2mqtt-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.zigbee2mqtt.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/apache-cassandra-install.sh b/install/apache-cassandra-install.sh index 886104240..01f758c6f 100644 --- a/install/apache-cassandra-install.sh +++ b/install/apache-cassandra-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://cassandra.apache.org/_/index.html -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y apt-transport-https $STD apt-get install -y gpg $STD apt-get install -y wget diff --git a/install/apache-couchdb-install.sh b/install/apache-couchdb-install.sh index fc1b17de4..401205201 100644 --- a/install/apache-couchdb-install.sh +++ b/install/apache-couchdb-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://couchdb.apache.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y apt-transport-https $STD apt-get install -y gnupg $STD apt-get install -y wget @@ -26,11 +23,11 @@ msg_ok "Installed Dependencies" msg_info "Installing Apache CouchDB" ERLANG_COOKIE=$(openssl rand -base64 32) ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)" -debconf-set-selections <<< "couchdb couchdb/cookie string $ERLANG_COOKIE" -debconf-set-selections <<< "couchdb couchdb/mode select standalone" -debconf-set-selections <<< "couchdb couchdb/bindaddress string 0.0.0.0" -debconf-set-selections <<< "couchdb couchdb/adminpass password $ADMIN_PASS" -debconf-set-selections <<< "couchdb couchdb/adminpass_again password $ADMIN_PASS" +debconf-set-selections <<<"couchdb couchdb/cookie string $ERLANG_COOKIE" +debconf-set-selections <<<"couchdb couchdb/mode select standalone" +debconf-set-selections <<<"couchdb couchdb/bindaddress string 0.0.0.0" +debconf-set-selections <<<"couchdb couchdb/adminpass password $ADMIN_PASS" +debconf-set-selections <<<"couchdb couchdb/adminpass_again password $ADMIN_PASS" curl -fsSL https://couchdb.apache.org/repo/keys.asc | gpg --dearmor -o /usr/share/keyrings/couchdb-archive-keyring.gpg VERSION_CODENAME="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)" echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" >/etc/apt/sources.list.d/couchdb.sources.list diff --git a/install/apache-guacamole-install.sh b/install/apache-guacamole-install.sh index 86aefeef7..b55e120e2 100644 --- a/install/apache-guacamole-install.sh +++ b/install/apache-guacamole-install.sh @@ -14,32 +14,31 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - build-essential \ - curl \ - jq \ - libcairo2-dev \ - libturbojpeg0 \ - libpng-dev \ - libtool-bin \ - libossp-uuid-dev \ - libvncserver-dev \ - freerdp2-dev \ - libssh2-1-dev \ - libtelnet-dev \ - libwebsockets-dev \ - libpulse-dev \ - libvorbis-dev \ - libwebp-dev \ - libssl-dev \ - libpango1.0-dev \ - libswscale-dev \ - libavcodec-dev \ - libavutil-dev \ - libavformat-dev \ - mariadb-server \ - default-jdk \ - wget \ - openssh-server + build-essential \ + jq \ + libcairo2-dev \ + libturbojpeg0 \ + libpng-dev \ + libtool-bin \ + libossp-uuid-dev \ + libvncserver-dev \ + freerdp2-dev \ + libssh2-1-dev \ + libtelnet-dev \ + libwebsockets-dev \ + libpulse-dev \ + libvorbis-dev \ + libwebp-dev \ + libssl-dev \ + libpango1.0-dev \ + libswscale-dev \ + libavcodec-dev \ + libavutil-dev \ + libavformat-dev \ + mariadb-server \ + default-jdk \ + wget \ + openssh-server msg_ok "Installed Dependencies" msg_info "Setup Apache Tomcat" @@ -86,7 +85,7 @@ mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVI echo "Database User: $DB_USER" echo "Database Password: $DB_PASS" echo "Database Name: $DB_NAME" -} >> ~/guacamole.creds +} >>~/guacamole.creds cd guacamole-auth-jdbc-1.5.5/mysql/schema cat *.sql | mysql -u root ${DB_NAME} { @@ -96,7 +95,7 @@ cat *.sql | mysql -u root ${DB_NAME} echo "mysql-username: $DB_USER" echo "mysql-password: $DB_PASS" -} >> /etc/guacamole/guacamole.properties +} >>/etc/guacamole/guacamole.properties msg_ok "Setup Database" msg_info "Setup Service" @@ -149,7 +148,7 @@ motd_ssh customize msg_info "Cleaning up" -rm -rf ~/mysql-connector-java-8.0.26{,.tar.gz} +rm -rf ~/mysql-connector-java-8.0.26{,.tar.gz} rm -rf ~/guacamole-auth-jdbc-1.5.5{,.tar.gz} $STD apt-get -y autoremove $STD apt-get -y autoclean diff --git a/install/apache-tika-install.sh b/install/apache-tika-install.sh index 1976e60bc..ab6955aa9 100644 --- a/install/apache-tika-install.sh +++ b/install/apache-tika-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/apache/tika/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ software-properties-common \ gdal-bin \ tesseract-ocr \ @@ -26,6 +23,7 @@ $STD apt-get install -y \ tesseract-ocr-fra \ tesseract-ocr-spa \ tesseract-ocr-deu + $STD echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections $STD apt-get install -y \ xfonts-utils \ diff --git a/install/apache-tomcat-install.sh b/install/apache-tomcat-install.sh index 26e11f0fe..4a915be22 100644 --- a/install/apache-tomcat-install.sh +++ b/install/apache-tomcat-install.sh @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ gnupg2 \ - curl \ - sudo \ - mc \ lsb-release \ gpg \ apt-transport-https diff --git a/install/apt-cacher-ng-install.sh b/install/apt-cacher-ng-install.sh index 6032fc7cb..d6b8ee9d0 100644 --- a/install/apt-cacher-ng-install.sh +++ b/install/apt-cacher-ng-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://wiki.debian.org/AptCacherNg -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/archivebox-install.sh b/install/archivebox-install.sh index e261dc8e9..44e14e7a8 100644 --- a/install/archivebox-install.sh +++ b/install/archivebox-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://archivebox.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ git \ expect \ libssl-dev \ @@ -51,8 +48,8 @@ $STD apt-get install -y nodejs msg_ok "Installed Node.js" msg_info "Installing Playwright" -$STD pip install playwright -$STD playwright install-deps chromium +$STD pip install playwright +$STD playwright install-deps chromium msg_ok "Installed Playwright" msg_info "Installing Chromium and ArchiveBox" diff --git a/install/aria2-install.sh b/install/aria2-install.sh index 831f6b6b9..654252e20 100644 --- a/install/aria2-install.sh +++ b/install/aria2-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://aria2.github.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/audiobookshelf-install.sh b/install/audiobookshelf-install.sh index 8d944ba0a..0605d6ef2 100644 --- a/install/audiobookshelf-install.sh +++ b/install/audiobookshelf-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.audiobookshelf.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,8 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo $STD apt-get install -y gnupg $STD apt-get install -y mc $STD apt-get install -y wget diff --git a/install/authelia-install.sh b/install/authelia-install.sh index 2ea34521c..cc97e8219 100644 --- a/install/authelia-install.sh +++ b/install/authelia-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.authelia.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,13 +13,6 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc -msg_ok "Installed Dependencies" - msg_info "Installing Authelia" RELEASE=$(curl -s https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') wget -q "https://github.com/authelia/authelia/releases/download/${RELEASE}/authelia_${RELEASE}_amd64.deb" @@ -30,9 +23,9 @@ read -p "Enter your domain (ex. example.com): " DOMAIN msg_info "Setting Authelia up" touch /etc/authelia/emails.txt -JWT_SECRET=$(openssl rand -hex 64) -SESSION_SECRET=$(openssl rand -hex 64) -STORAGE_KEY=$(openssl rand -hex 64) +JWT_SECRET=$(openssl rand -hex 64) +SESSION_SECRET=$(openssl rand -hex 64) +STORAGE_KEY=$(openssl rand -hex 64) cat </etc/authelia/users.yml users: authelia: diff --git a/install/authentik-install.sh b/install/authentik-install.sh index 0a7652eae..9e5577a98 100644 --- a/install/authentik-install.sh +++ b/install/authentik-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies (Patience)" $STD apt-get install -y \ - curl \ - sudo \ - mc \ gpg \ pkg-config \ libffi-dev \ @@ -106,7 +103,7 @@ DB_USER="authentik" DB_PASS="$(openssl rand -base64 18 | cut -c1-13)" $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;" $STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH 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 "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" $STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;" $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;" msg_ok "Installed PostgreSQL" diff --git a/install/autobrr-install.sh b/install/autobrr-install.sh index 0d94e767c..9f70f25ba 100644 --- a/install/autobrr-install.sh +++ b/install/autobrr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://autobrr.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/baikal-install.sh b/install/baikal-install.sh index ab452287a..0a13a9b12 100644 --- a/install/baikal-install.sh +++ b/install/baikal-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sabre.io/baikal/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,13 +15,10 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ - postgresql \ - apache2 \ - libapache2-mod-php \ - php-{pgsql,dom} + postgresql \ + apache2 \ + libapache2-mod-php \ + php-{pgsql,dom} msg_ok "Installed Dependencies" msg_info "Setting up PostgreSQL" @@ -31,11 +28,11 @@ DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) $STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;" { -echo "Baikal Credentials" -echo "Baikal Database User: $DB_USER" -echo "Baikal Database Password: $DB_PASS" -echo "Baikal Database Name: $DB_NAME" -} >> ~/baikal.creds + echo "Baikal Credentials" + echo "Baikal Database User: $DB_USER" + echo "Baikal Database Password: $DB_PASS" + echo "Baikal Database Name: $DB_NAME" +} >>~/baikal.creds msg_ok "Set up PostgreSQL" msg_info "Installing Baikal" @@ -57,7 +54,7 @@ echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Baikal" msg_info "Creating Service" -cat < /etc/apache2/sites-available/baikal.conf +cat </etc/apache2/sites-available/baikal.conf ServerName baikal DocumentRoot /opt/baikal/html diff --git a/install/barcode-buddy-install.sh b/install/barcode-buddy-install.sh index 3de9aae24..0c5763f83 100644 --- a/install/barcode-buddy-install.sh +++ b/install/barcode-buddy-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Forceu/barcodebuddy -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ apache2 \ redis \ php-{curl,date,json,mbstring,redis,sqlite3,sockets} \ diff --git a/install/bazarr-install.sh b/install/bazarr-install.sh index 60cc4e28a..bf02c9393 100644 --- a/install/bazarr-install.sh +++ b/install/bazarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.bazarr.media/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -67,4 +67,4 @@ msg_info "Cleaning up" rm -rf bazarr.zip $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/beszel-install.sh b/install/beszel-install.sh index 46554721c..0c508a289 100644 --- a/install/beszel-install.sh +++ b/install/beszel-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://beszel.dev/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,17 +13,9 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - tar \ - sudo \ - mc -msg_ok "Installed Dependencies" - msg_info "Installing Beszel" -mkdir -p /opt/beszel -curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/armv6l/arm/' -e 's/armv7l/arm/' -e 's/aarch64/arm64/').tar.gz" | tar -xz -O beszel | tee /opt/beszel/beszel >/dev/null +mkdir -p /opt/beszel +curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/armv6l/arm/' -e 's/armv7l/arm/' -e 's/aarch64/arm64/').tar.gz" | tar -xz -O beszel | tee /opt/beszel/beszel >/dev/null chmod +x /opt/beszel/beszel msg_ok "Installed Beszel" @@ -51,4 +43,4 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/blocky-install.sh b/install/blocky-install.sh index 0c3a994d2..87509b282 100644 --- a/install/blocky-install.sh +++ b/install/blocky-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://0xerr0r.github.io/blocky/latest/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -22,7 +22,7 @@ $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" msg_info "Installing Blocky" -if systemctl is-active systemd-resolved > /dev/null 2>&1; then +if systemctl is-active systemd-resolved >/dev/null 2>&1; then systemctl disable -q --now systemd-resolved fi mkdir /opt/blocky diff --git a/install/boltdiy-install.sh b/install/boltdiy-install.sh index 17b4b2fec..809191336 100644 --- a/install/boltdiy-install.sh +++ b/install/boltdiy-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/stackblitz-labs/bolt.diy/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ gnupg \ git msg_ok "Installed Dependencies" diff --git a/install/bookstack-install.sh b/install/bookstack-install.sh index 8ae743f9a..81c29e176 100644 --- a/install/bookstack-install.sh +++ b/install/bookstack-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/BookStackApp/BookStack -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -41,7 +41,7 @@ $STD sudo mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; F echo "Bookstack Database User: $DB_USER" echo "Bookstack Database Password: $DB_PASS" echo "Bookstack Database Name: $DB_NAME" -} >> ~/bookstack.creds +} >>~/bookstack.creds msg_ok "Set up database" msg_info "Setup Bookstack (Patience)" @@ -60,8 +60,8 @@ sudo sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$DB_PASS/" /opt/bookstack/.env $STD composer install --no-dev --no-plugins --no-interaction $STD php artisan key:generate --no-interaction --force $STD php artisan migrate --no-interaction --force -chown www-data:www-data -R /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage -chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage +chown www-data:www-data -R /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage +chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads chmod -R 640 /opt/bookstack/.env $STD a2enmod rewrite @@ -108,7 +108,7 @@ cat </etc/apache2/sites-available/bookstack.conf EOF $STD a2ensite bookstack.conf -$STD a2dissite 000-default.conf +$STD a2dissite 000-default.conf $STD systemctl reload apache2 msg_ok "Created Services" diff --git a/install/bunkerweb-install.sh b/install/bunkerweb-install.sh index 8d1da9a27..e47aa2a77 100644 --- a/install/bunkerweb-install.sh +++ b/install/bunkerweb-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.bunkerweb.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y apt-transport-https $STD apt-get install -y lsb-release diff --git a/install/bytestash-install.sh b/install/bytestash-install.sh index 8d4d01b81..9f2b65988 100644 --- a/install/bytestash-install.sh +++ b/install/bytestash-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - sudo \ - curl \ - mc \ gnupg msg_ok "Installed Dependencies" @@ -33,6 +30,7 @@ $STD apt-get install -y nodejs msg_ok "Installed Node.js" msg_info "Installing ByteStash" +JWT_SECRET=$(openssl rand -base64 32 | tr -d '/+=') temp_file=$(mktemp) RELEASE=$(curl -s https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') wget -q "https://github.com/jordan-dalby/ByteStash/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file @@ -45,6 +43,8 @@ $STD npm install echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed ByteStash" +read -p "Do you want to allow registration of multiple accounts? [y/n]: " allowreg + msg_info "Creating Service" cat </etc/systemd/system/bytestash-backend.service [Unit] @@ -55,10 +55,16 @@ After=network.target WorkingDirectory=/opt/bytestash/server ExecStart=/usr/bin/node src/app.js Restart=always +Environment=JWT_SECRET=$JWT_SECRET [Install] WantedBy=multi-user.target EOF + +if [[ "$allowreg" =~ ^[Yy]$ ]]; then + sed -i '8i\Environment=ALLOW_NEW_ACCOUNTS=true' /etc/systemd/system/bytestash-backend.service +fi + cat </etc/systemd/system/bytestash-frontend.service [Unit] Description=ByteStash Frontend Service @@ -72,6 +78,7 @@ Restart=always [Install] WantedBy=multi-user.target EOF + systemctl enable -q --now bytestash-backend systemctl enable -q --now bytestash-frontend msg_ok "Created Service" diff --git a/install/calibre-web-install.sh b/install/calibre-web-install.sh index b4118aa27..230392e5b 100644 --- a/install/calibre-web-install.sh +++ b/install/calibre-web-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/janeczku/calibre-web -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y imagemagick $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/casaos-install.sh b/install/casaos-install.sh index dcf8ad7ca..6b1bbb572 100644 --- a/install/casaos-install.sh +++ b/install/casaos-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://casaos.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -24,8 +24,8 @@ msg_ok "Installed Dependencies" msg_info "Installing CasaOS (Patience)" DOCKER_CONFIG_PATH='/etc/docker/daemon.json' mkdir -p $(dirname $DOCKER_CONFIG_PATH) -echo -e '{\n "log-driver": "journald"\n}' > /etc/docker/daemon.json -$STD bash <(curl -fsSL https://get.casaos.io/v0.4.1) +echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json +$STD bash <(curl -fsSL https://get.casaos.io/) msg_ok "Installed CasaOS" motd_ssh diff --git a/install/changedetection-install.sh b/install/changedetection-install.sh index d31ec426e..fa19581d6 100644 --- a/install/changedetection-install.sh +++ b/install/changedetection-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://changedetection.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies (Patience)" $STD apt-get install -y \ - curl \ - sudo \ - mc \ git \ build-essential \ dumb-init \ diff --git a/install/channels-install.sh b/install/channels-install.sh index ce0fba847..780fcda19 100644 --- a/install/channels-install.sh +++ b/install/channels-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://getchannels.com/dvr-server/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y chromium $STD apt-get install -y xvfb $STD apt-get install -y wget diff --git a/install/checkmk-install.sh b/install/checkmk-install.sh index b15784180..4d4ece20c 100644 --- a/install/checkmk-install.sh +++ b/install/checkmk-install.sh @@ -39,7 +39,7 @@ $STD omd start echo "Application-Credentials" echo "Username: cmkadmin" echo "Password: $PASSWORD" -} >> ~/checkmk.creds +} >>~/checkmk.creds msg_ok "Created Service" msg_info "Cleaning up" diff --git a/install/cloudflared-install.sh b/install/cloudflared-install.sh index c290322df..d32b342d8 100644 --- a/install/cloudflared-install.sh +++ b/install/cloudflared-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.cloudflare.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/cockpit-install.sh b/install/cockpit-install.sh index 71d3f033f..e5a232d22 100644 --- a/install/cockpit-install.sh +++ b/install/cockpit-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/cockpit-project/cockpit -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/commafeed-install.sh b/install/commafeed-install.sh index 3fed223c0..8a29ebfce 100644 --- a/install/commafeed-install.sh +++ b/install/commafeed-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.commafeed.com/#/welcome -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -60,7 +60,7 @@ motd_ssh customize msg_info "Cleaning up" -rm -rf commafeed-${RELEASE}-h2 commafeed-${RELEASE}-h2-jvm.zip zulu-repo_1.0.0-3_all.deb +rm -rf commafeed-${RELEASE}-h2 commafeed-${RELEASE}-h2-jvm.zip zulu-repo_1.0.0-3_all.deb $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned" diff --git a/install/cosmos-install.sh b/install/cosmos-install.sh index 176ca09df..f266a926c 100644 --- a/install/cosmos-install.sh +++ b/install/cosmos-install.sh @@ -1,6 +1,5 @@ #!/usr/bin/env bash - #Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE @@ -16,12 +15,9 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - mc \ - sudo \ - snapraid \ - avahi-daemon \ - fdisk + snapraid \ + avahi-daemon \ + fdisk msg_ok "Installed Dependencies" msg_info "Install mergerfs" @@ -37,7 +33,7 @@ $STD sh get-docker.sh rm get-docker.sh msg_ok "Installed Docker" -msg_info "Install Cosmos" +msg_info "Install Cosmos" mkdir -p /opt/cosmos LATEST_RELEASE=$(curl -s https://api.github.com/repos/azukaar/Cosmos-Server/releases/latest | grep "tag_name" | cut -d '"' -f 4) ZIP_FILE="cosmos-cloud-${LATEST_RELEASE#v}-amd64.zip" @@ -51,7 +47,7 @@ chmod +x /opt/cosmos/cosmos msg_ok "Installed Cosmos" msg_info "Creating Service" -cat < /etc/systemd/system/cosmos.service +cat </etc/systemd/system/cosmos.service [Unit] Description=Cosmos Cloud service ConditionFileIsExecutable=/opt/cosmos/start.sh diff --git a/install/crafty-controller-install.sh b/install/crafty-controller-install.sh index 6e5f68785..969b22354 100644 --- a/install/crafty-controller-install.sh +++ b/install/crafty-controller-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.craftycontrol.com/pages/getting-started/installation/linux/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies (a lot of patience)" $STD apt-get install -y \ - curl \ - sudo \ - mc \ git \ sed \ lsb-release \ @@ -66,7 +63,7 @@ $STD sudo -u crafty bash -c ' msg_ok "Installed Craft-Controller and dependencies" msg_info "Setting up Crafty-Controller service" -cat > /etc/systemd/system/crafty-controller.service << 'EOF' +cat >/etc/systemd/system/crafty-controller.service <<'EOF' [Unit] Description=Crafty 4 After=network.target @@ -85,10 +82,10 @@ EOF $STD systemctl enable -q --now crafty-controller sleep 10 { - echo "Crafty-Controller-Credentials" - echo "Username: $(grep -oP '(?<="username": ")[^"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)" - echo "Password: $(grep -oP '(?<="password": ")[^"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)" -} >> ~/crafty-controller.creds + echo "Crafty-Controller-Credentials" + echo "Username: $(grep -oP '(?<="username": ")[^"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)" + echo "Password: $(grep -oP '(?<="password": ")[^"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)" +} >>~/crafty-controller.creds msg_ok "Crafty-Controller service started" motd_ssh diff --git a/install/cronicle-install.sh b/install/cronicle-install.sh index db71d8c81..47f824160 100644 --- a/install/cronicle-install.sh +++ b/install/cronicle-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://cronicle.net/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -19,7 +19,8 @@ $STD apt-get install -y \ sudo \ mc \ wget \ - openssh-server + openssh-server \ + gnupg msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" diff --git a/install/cross-seed-install.sh b/install/cross-seed-install.sh index 278c01928..6413cf661 100644 --- a/install/cross-seed-install.sh +++ b/install/cross-seed-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.cross-seed.org -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,11 +14,7 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc \ - gnupg +$STD apt-get install -y gnupg msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" diff --git a/install/cryptpad-install.sh b/install/cryptpad-install.sh new file mode 100644 index 000000000..9bf77192a --- /dev/null +++ b/install/cryptpad-install.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: SlaviΕ‘a AreΕΎina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/cryptpad/cryptpad + +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 \ + gnupg \ + git +msg_ok "Installed Dependencies" + +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Set up Node.js Repository" + +msg_info "Setup Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Setup Node.js" + +read -p "Install OnlyOffice components instead of CKEditor? (Y/N): " onlyoffice + +msg_info "Setup ${APPLICATION}" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +wget -q "https://github.com/cryptpad/cryptpad/archive/refs/tags/${RELEASE}.tar.gz" -O $temp_file +tar zxf $temp_file +mv cryptpad-$RELEASE /opt/cryptpad +cd /opt/cryptpad +$STD npm ci +$STD npm run install:components +$STD npm run build +cp config/config.example.js config/config.js +IP=$(hostname -I | awk '{print $1}') +sed -i "51s/localhost/${IP}/g" /opt/cryptpad/config/config.js +sed -i "80s#//httpAddress: 'localhost'#httpAddress: '0.0.0.0'#g" /opt/cryptpad/config/config.js +if [[ "$onlyoffice" =~ ^[Yy]$ ]]; then + $STD bash -c "./install-onlyoffice.sh --accept-license" +fi +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Setup ${APPLICATION}" + +msg_info "Creating Service" +cat </etc/systemd/system/cryptpad.service +[Unit] +Description=CryptPad Service +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/cryptpad +ExecStart=/usr/bin/node server +Environment='PWD="/opt/cryptpad"' +StandardOutput=journal +StandardError=journal+console +LimitNOFILE=1000000 +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now cryptpad +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f $temp_file +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/install/daemonsync-install.sh b/install/daemonsync-install.sh index d81d44727..665172158 100644 --- a/install/daemonsync-install.sh +++ b/install/daemonsync-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://daemonsync.me/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/dashy-install.sh b/install/dashy-install.sh index 7bb1d4ac1..35fc73fe9 100644 --- a/install/dashy-install.sh +++ b/install/dashy-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://dashy.to/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/debian-install.sh b/install/debian-install.sh index 306832dda..c0ac0d670 100644 --- a/install/debian-install.sh +++ b/install/debian-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.debian.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -27,4 +27,4 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/deconz-install.sh b/install/deconz-install.sh index 27cd3333b..1a1b92e28 100644 --- a/install/deconz-install.sh +++ b/install/deconz-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.phoscon.de/en/conbee2/software#deconz -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/deluge-install.sh b/install/deluge-install.sh index 1930df27a..20780ae2e 100644 --- a/install/deluge-install.sh +++ b/install/deluge-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.deluge-torrent.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y python3-libtorrent $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" diff --git a/install/dockge-install.sh b/install/dockge-install.sh index 7778460c2..88a024a56 100644 --- a/install/dockge-install.sh +++ b/install/dockge-install.sh @@ -77,7 +77,7 @@ services: privileged: true network_mode: host EOF -msg_ok "Added Home Assistant compose.yaml" + msg_ok "Added Home Assistant compose.yaml" fi motd_ssh diff --git a/install/docmost-install.sh b/install/docmost-install.sh index 176f89579..b3580f07e 100644 --- a/install/docmost-install.sh +++ b/install/docmost-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docmost.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,11 +16,8 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ gpg \ - curl \ - sudo \ redis \ make \ - mc \ postgresql msg_ok "Installed Dependencies" @@ -46,11 +43,11 @@ $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 + 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 "Installing Docmost (Patience)" @@ -63,9 +60,9 @@ cd /opt/docmost mv .env.example .env mkdir data 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|FILE_UPLOAD_SIZE_LIMIT=.*|FILE_UPLOAD_SIZE_LIMIT=50mb|" \ - /opt/docmost/.env + -e "s|DATABASE_URL=.*|DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME|" \ + -e "s|FILE_UPLOAD_SIZE_LIMIT=.*|FILE_UPLOAD_SIZE_LIMIT=50mb|" \ + /opt/docmost/.env export NODE_OPTIONS="--max-old-space-size=2048" $STD pnpm install $STD pnpm build diff --git a/install/dolibarr-install.sh b/install/dolibarr-install.sh index cc09e54aa..323eada89 100644 --- a/install/dolibarr-install.sh +++ b/install/dolibarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Dolibarr/dolibarr/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ php-imap \ debconf-utils \ mariadb-server @@ -27,9 +24,9 @@ msg_info "Setting up Database" ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) $STD sudo mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$ROOT_PASS'); flush privileges;" { - echo "Dolibarr DB Credentials" - echo "MariaDB Root Password: $ROOT_PASS" -} >> ~/dolibarr.creds + echo "Dolibarr DB Credentials" + echo "MariaDB Root Password: $ROOT_PASS" +} >>~/dolibarr.creds msg_ok "Set up database" msg_info "Setup Dolibarr" diff --git a/install/dotnetaspwebapi-install.sh b/install/dotnetaspwebapi-install.sh index 434428b97..d1bc6f2c8 100644 --- a/install/dotnetaspwebapi-install.sh +++ b/install/dotnetaspwebapi-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-9.0&tabs=linux-ubuntu -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -18,6 +18,7 @@ $STD apt-get update $STD apt-get install -y \ ssh \ software-properties-common + $STD add-apt-repository -y ppa:dotnet/backports $STD apt-get install -y \ dotnet-sdk-9.0 \ @@ -39,7 +40,7 @@ FTP_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) usermod --password $(echo ${FTP_PASS} | openssl passwd -1 -stdin) ftpuser mkdir -p /var/www/html usermod -d /var/www/html ftp -usermod -d /var/www/html ftpuser +usermod -d /var/www/html ftpuser chown ftpuser /var/www/html sed -i "s|#write_enable=YES|write_enable=YES|g" /etc/vsftpd.conf @@ -48,10 +49,10 @@ sed -i "s|#chroot_local_user=YES|chroot_local_user=NO|g" /etc/vsftpd.conf systemctl restart -q vsftpd.service { - echo "FTP-Credentials" - echo "Username: ftpuser" - echo "Password: $FTP_PASS" -} >> ~/ftp.creds + echo "FTP-Credentials" + echo "Username: ftpuser" + echo "Password: $FTP_PASS" +} >>~/ftp.creds msg_ok "FTP server setup completed" diff --git a/install/duplicati-install.sh b/install/duplicati-install.sh index faa5087ca..b51ea566c 100644 --- a/install/duplicati-install.sh +++ b/install/duplicati-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/duplicati/duplicati/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ libice6 \ libsm6 \ libfontconfig1 @@ -33,9 +30,9 @@ msg_ok "Finished setting up Duplicati" DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) { - echo "Admin password = ${ADMINPASS}" - echo "Database encryption key = ${DECRYPTKEY}" -} >> ~/duplicati.creds + echo "Admin password = ${ADMINPASS}" + echo "Database encryption key = ${DECRYPTKEY}" +} >>~/duplicati.creds msg_info "Creating Service" cat </etc/systemd/system/duplicati.service diff --git a/install/elementsynapse-install.sh b/install/elementsynapse-install.sh index e0359fd9a..2c288fee0 100644 --- a/install/elementsynapse-install.sh +++ b/install/elementsynapse-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/element-hq/synapse -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,11 +15,7 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - sudo \ - curl \ - mc \ lsb-release \ - wget \ apt-transport-https \ debconf-utils msg_ok "Installed Dependencies" diff --git a/install/emby-install.sh b/install/emby-install.sh index 871728067..e2dda2591 100644 --- a/install/emby-install.sh +++ b/install/emby-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://emby.media/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/emqx-install.sh b/install/emqx-install.sh index 5455a3202..3e331584d 100644 --- a/install/emqx-install.sh +++ b/install/emqx-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.emqx.com/en -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/ersatztv-install.sh b/install/ersatztv-install.sh index d6158c604..67738dc35 100644 --- a/install/ersatztv-install.sh +++ b/install/ersatztv-install.sh @@ -1,12 +1,11 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) +# Copyright (c) 2021-2025 tteck +# Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/ErsatzTV/ErsatzTV +# Source: https://ersatztv.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -24,16 +23,13 @@ $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" msg_info "Installing FFmpeg (Patience)" -wget -q https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb -$STD dpkg -i deb-multimedia-keyring_2016.8.1_all.deb -cat </etc/apt/sources.list.d/backports.list -deb https://www.deb-multimedia.org bookworm main non-free -deb https://www.deb-multimedia.org bookworm-backports main -EOF -$STD apt update -DEBIAN_FRONTEND=noninteractive $STD apt-get install -t bookworm-backports ffmpeg -y -rm -rf /etc/apt/sources.list.d/backports.list deb-multimedia-keyring_2016.8.1_all.deb -$STD apt update +cd /usr/local/bin +wget -q https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz +$STD tar -xvf ffmpeg-release-amd64-static.tar.xz +rm -f ffmpeg-*.tar.xz +cd ffmpeg-* +mv ffmpeg ffprobe /usr/local/bin/ +rm -rf /usr/local/bin/ffmpeg-* msg_ok "Installed FFmpeg" msg_info "Setting Up Hardware Acceleration" @@ -47,10 +43,13 @@ if [[ "$CTTYPE" == "0" ]]; then fi msg_ok "Set Up Hardware Acceleration" -msg_info "Installing ErsatzTV" +msg_info "Installing ErsatzTV" +cd /opt RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1) -wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-arm64.tar.gz" | tar -xz -C /opt -mv "/opt/ErsatzTV-${RELEASE}-linux-arm64" /opt/ErsatzTV +wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-arm64.tar.gz" -O "$temp_file" +tar -xzf "$temp_file" +mv /opt/ErsatzTV-${RELEASE}-linux-arm64 /opt/ErsatzTV +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed ErsatzTV" msg_info "Creating Service" @@ -70,13 +69,14 @@ RestartSec=30 [Install] WantedBy=multi-user.target EOF -systemctl -q --now enable ersatzTV.service +systemctl enable -q --now ersatzTV msg_ok "Created Service" motd_ssh customize msg_info "Cleaning up" +rm -f ${temp_file} $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned" diff --git a/install/esphome-install.sh b/install/esphome-install.sh index 2596d1535..f0c20b92c 100644 --- a/install/esphome-install.sh +++ b/install/esphome-install.sh @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/evcc-install.sh b/install/evcc-install.sh index d09a0435e..c6c5da0ff 100644 --- a/install/evcc-install.sh +++ b/install/evcc-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/evcc-io/evcc -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ lsb-release \ gpg \ wget \ @@ -26,8 +23,8 @@ $STD apt-get install -y \ msg_ok "Installed Dependencies" msg_info "Setting up evcc Repository" -curl -fsSL https://dl.evcc.io/public/evcc/stable/gpg.EAD5D0E07B0EC0FD.key | gpg --dearmor -o /etc/apt/keyrings/evcc-stable.gpg -echo "deb [signed-by=/etc/apt/keyrings/evcc-stable.gpg] https://dl.evcc.io/public/evcc/stable/deb/debian $(lsb_release -cs) main" >/etc/apt/sources.list.d/evcc-stable.list +curl -fsSL https://dl.evcc.io/public/evcc/stable/gpg.EAD5D0E07B0EC0FD.key | gpg --dearmor -o /etc/apt/keyrings/evcc-stable.gpg +echo "deb [signed-by=/etc/apt/keyrings/evcc-stable.gpg] https://dl.evcc.io/public/evcc/stable/deb/debian $(lsb_release -cs) main" >/etc/apt/sources.list.d/evcc-stable.list $STD apt update msg_ok "evcc Repository setup sucessfully" diff --git a/install/excalidraw-install.sh b/install/excalidraw-install.sh index e83c5aae2..5d273e713 100644 --- a/install/excalidraw-install.sh +++ b/install/excalidraw-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/excalidraw/excalidraw -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ gnupg \ xdg-utils msg_ok "Installed Dependencies" @@ -70,4 +67,4 @@ msg_info "Cleaning up" rm -f $temp_file $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/fenrus-install.sh b/install/fenrus-install.sh index 36e9f2fa5..e618a7e85 100644 --- a/install/fenrus-install.sh +++ b/install/fenrus-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/revenz/Fenrus -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y curl $STD apt-get install -y git $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/fhem-install.sh b/install/fhem-install.sh index 2f430fed0..063a13ca7 100644 --- a/install/fhem-install.sh +++ b/install/fhem-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://fhem.de/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y avahi-daemon $STD apt-get install -y gnupg2 $STD apt-get install -y openssh-server diff --git a/install/fileflows-install.sh b/install/fileflows-install.sh new file mode 100644 index 000000000..0419aceed --- /dev/null +++ b/install/fileflows-install.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: kkroboth +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://fileflows.com/ + +# Import Functions und Setup +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 \ + ffmpeg +msg_ok "Installed Dependencies" + +read -r -p "Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 12 only)? " prompt +if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then + msg_info "Installing Intel Hardware Acceleration (non-free)" + cat </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" +curl -fsSL https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -o packages-microsoft-prod.deb +$STD dpkg -i packages-microsoft-prod.deb +rm -rf packages-microsoft-prod.deb +$STD apt-get update +$STD apt-get install -y aspnetcore-runtime-8.0 +msg_ok "Installed ASP.NET Core Runtime" + +msg_info "Setup ${APPLICATION}" +$STD ln -svf /usr/bin/ffmpeg /usr/local/bin/ffmpeg +$STD ln -svf /usr/bin/ffprobe /usr/local/bin/ffprobe +temp_file=$(mktemp) +curl -fsSL https://fileflows.com/downloads/zip -o $temp_file +unzip -q -d /opt/fileflows $temp_file +(cd /opt/fileflows/Server && dotnet FileFlows.Server.dll --systemd install --root true) +systemctl enable -q --now fileflows.service +msg_ok "Setup ${APPLICATION}" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f $temp_file +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/install/firefly-install.sh b/install/firefly-install.sh index 9df0ac180..d8ab1f6fd 100644 --- a/install/firefly-install.sh +++ b/install/firefly-install.sh @@ -44,7 +44,7 @@ mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVI echo "Firefly Database User: $DB_USER" echo "Firefly Database Password: $DB_PASS" echo "Firefly Database Name: $DB_NAME" -} >> ~/firefly.creds +} >>~/firefly.creds msg_ok "Set up database" msg_info "Installing Firefly III (Patience)" @@ -59,7 +59,7 @@ cd /opt/firefly cp .env.example .env sed -i "s/DB_HOST=.*/DB_HOST=localhost/" /opt/firefly/.env sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$DB_PASS/" /opt/firefly/.env -echo "export COMPOSER_ALLOW_SUPERUSER=1" >> ~/.bashrc +echo "export COMPOSER_ALLOW_SUPERUSER=1" >>~/.bashrc source ~/.bashrc $STD composer install --no-dev --no-plugins --no-interaction $STD php artisan firefly:upgrade-database @@ -90,7 +90,7 @@ chown www-data:www-data /opt/firefly/storage/oauth-*.key $STD a2enmod php8.4 $STD a2enmod rewrite $STD a2ensite firefly.conf -$STD a2dissite 000-default.conf +$STD a2dissite 000-default.conf $STD systemctl reload apache2 msg_ok "Created Service" diff --git a/install/flaresolverr-install.sh b/install/flaresolverr-install.sh index 931116845..ba3f16a00 100644 --- a/install/flaresolverr-install.sh +++ b/install/flaresolverr-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/FlareSolverr/FlareSolverr -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y apt-transport-https $STD apt-get install -y gpg $STD apt-get install -y xvfb @@ -42,7 +39,7 @@ $STD pip install -r /opt/flaresolverr/requirements.txt msg_ok "Installed FlareSolverr" msg_info "Installing Chrome Webdriver" -wget -q https://github.com/electron/electron/releases/download/v33.2.0/chromedriver-v33.2.0-linux-arm64.zip -O /opt/flaresolverr/webdriver.zip +wget -q https://github.com/electron/electron/releases/download/v35.1.2/chromedriver-v35.1.2-linux-arm64.zip -O /opt/flaresolverr/webdriver.zip cd /opt/flaresolverr unzip -q webdriver.zip chromedriver sed -i 's|^PATCHED_DRIVER_PATH = None|PATCHED_DRIVER_PATH = "/opt/flaresolverr/chromedriver"|' ./src/utils.py diff --git a/install/flowiseai-install.sh b/install/flowiseai-install.sh index 571630044..acae40095 100644 --- a/install/flowiseai-install.sh +++ b/install/flowiseai-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://flowiseai.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server @@ -31,7 +28,11 @@ $STD apt-get install -y nodejs msg_ok "Installed Node.js" msg_info "Installing FlowiseAI (Patience)" -$STD npm install -g flowise +$STD npm install -g flowise \ + @opentelemetry/exporter-trace-otlp-grpc \ + @opentelemetry/exporter-trace-otlp-proto \ + @opentelemetry/sdk-trace-node \ + langchainhub mkdir -p /opt/flowiseai wget -q https://raw.githubusercontent.com/FlowiseAI/Flowise/main/packages/server/.env.example -O /opt/flowiseai/.env msg_ok "Installed FlowiseAI" diff --git a/install/fluid-calendar-install.sh b/install/fluid-calendar-install.sh new file mode 100644 index 000000000..ed5c83b17 --- /dev/null +++ b/install/fluid-calendar-install.sh @@ -0,0 +1,102 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: vhsdream +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/dotnetfactory/fluid-calendar + +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 \ + zip \ + gnupg \ + postgresql-common +msg_ok "Installed Dependencies" + +msg_info "Installing Additional Dependencies" +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "YES" | /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh &>/dev/null +$STD apt-get install -y postgresql-17 nodejs +msg_ok "Installed Additional Dependencies" + +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" + +msg_info "Setup ${APPLICATION}" +tmp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -O $tmp_file +unzip -q $tmp_file +mv ${APPLICATION}-${RELEASE}/ /opt/${APPLICATION} +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt + +cat </opt/fluid-calendar/.env +DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}" + +# Change the URL below to your external URL +NEXTAUTH_URL="http://localhost:3000" +NEXT_PUBLIC_APP_URL="http://localhost:3000" +NEXTAUTH_SECRET="${NEXTAUTH_SECRET}" +NEXT_PUBLIC_SITE_URL="http://localhost:3000" + +NEXT_PUBLIC_ENABLE_SAAS_FEATURES=false + +RESEND_API_KEY= +RESEND_EMAIL= +EOF +export NEXT_TELEMETRY_DISABLED=1 +cd /opt/fluid-calendar +$STD npm install --legacy-peer-deps +$STD npm run prisma:generate +$STD npx prisma migrate deploy +$STD npm run build:os +msg_ok "Setup ${APPLICATION}" + +msg_info "Creating Service" +cat </etc/systemd/system/fluid-calendar.service +[Unit] +Description=Fluid Calendar Application +After=network.target postgresql.service + +[Service] +Restart=always +WorkingDirectory=/opt/fluid-calendar +ExecStart=/usr/bin/npm run start + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now fluid-calendar.service +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f $tmp_file +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/install/forgejo-install.sh b/install/forgejo-install.sh index eb01f6d53..bd493405d 100644 --- a/install/forgejo-install.sh +++ b/install/forgejo-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://forgejo.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y git-lfs $STD apt-get install -y wget @@ -32,7 +29,7 @@ ln -sf /opt/forgejo/forgejo-$RELEASE-linux-arm64 /usr/local/bin/forgejo msg_ok "Installed Forgejo" msg_info "Setting up Forgejo" -$STD adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git +$STD adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git mkdir /var/lib/forgejo chown git:git /var/lib/forgejo chmod 750 /var/lib/forgejo diff --git a/install/freshrss-install.sh b/install/freshrss-install.sh index f30f6c155..cd287846b 100644 --- a/install/freshrss-install.sh +++ b/install/freshrss-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/FreshRSS/FreshRSS -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,16 +15,12 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ postgresql \ apache2 \ php-{curl,dom,json,ctype,pgsql,gmp,mbstring,iconv,zip} \ libapache2-mod-php msg_ok "Installed Dependencies" - msg_info "Setting up PostgreSQL" DB_NAME=freshrss DB_USER=freshrss @@ -32,11 +28,11 @@ 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 + 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" msg_info "Installing FreshRSS" diff --git a/install/frigate-install.sh b/install/frigate-install.sh index 41cd629d3..b3b4ef1ec 100644 --- a/install/frigate-install.sh +++ b/install/frigate-install.sh @@ -15,7 +15,7 @@ network_check update_os msg_info "Installing Dependencies (Patience)" -$STD apt-get install -y {curl,sudo,mc,git,gpg,automake,build-essential,xz-utils,libtool,ccache,pkg-config,libgtk-3-dev,libavcodec-dev,libavformat-dev,libswscale-dev,libv4l-dev,libxvidcore-dev,libx264-dev,libjpeg-dev,libpng-dev,libtiff-dev,gfortran,openexr,libatlas-base-dev,libssl-dev,libtbb2,libtbb-dev,libdc1394-22-dev,libopenexr-dev,libgstreamer-plugins-base1.0-dev,libgstreamer1.0-dev,gcc,gfortran,libopenblas-dev,liblapack-dev,libusb-1.0-0-dev,jq,moreutils,wget,openssh-server,ca-certificates} +$STD apt-get install -y {git,gpg,ca-certificates,automake,build-essential,xz-utils,libtool,ccache,pkg-config,libgtk-3-dev,libavcodec-dev,libavformat-dev,libswscale-dev,libv4l-dev,libxvidcore-dev,libx264-dev,libjpeg-dev,libpng-dev,libtiff-dev,gfortran,openexr,libatlas-base-dev,libssl-dev,libtbb2,libtbb-dev,libdc1394-22-dev,libopenexr-dev,libgstreamer-plugins-base1.0-dev,libgstreamer1.0-dev,gcc,gfortran,libopenblas-dev,liblapack-dev,libusb-1.0-0-dev,jq,moreutils,wget,openssh-server} msg_ok "Installed Dependencies" msg_info "Setup Python3" @@ -52,7 +52,7 @@ msg_ok "Set Up Hardware Acceleration" #RELEASE=$(curl -s https://api.github.com/repos/blakeblackshear/frigate/releases/latest | jq -r '.tag_name') msg_ok "Stop spinner to prevent segmentation fault" msg_info "Installing Frigate v0.14.1 (Perseverance)" -if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi +if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi cd ~ mkdir -p /opt/frigate/models wget -q https://github.com/blakeblackshear/frigate/archive/refs/tags/v0.14.1.tar.gz -O frigate.tar.gz @@ -102,7 +102,7 @@ if [[ "$CTTYPE" == "0" ]]; then else sed -i -e 's/^kvm:x:104:$/render:x:104:frigate/' -e 's/^render:x:105:$/kvm:x:105:/' /etc/group fi -echo "tmpfs /tmp/cache tmpfs defaults 0 0" >> /etc/fstab +echo "tmpfs /tmp/cache tmpfs defaults 0 0" >>/etc/fstab msg_ok "Installed Frigate" if grep -q -o -m1 -E 'avx[^ ]*' /proc/cpuinfo; then @@ -152,7 +152,7 @@ $STD ./configure --disable-udev --enable-shared $STD make -j $(nproc --all) cd /opt/frigate/libusb-1.0.26/libusb mkdir -p /usr/local/lib -$STD /bin/bash ../libtool --mode=install /usr/bin/install -c libusb-1.0.la '/usr/local/lib' +$STD /bin/bash ../libtool --mode=install /usr/bin/install -c libusb-1.0.la '/usr/local/lib' mkdir -p /usr/local/include/libusb-1.0 $STD /usr/bin/install -c -m 644 libusb.h '/usr/local/include/libusb-1.0' ldconfig @@ -172,7 +172,7 @@ msg_ok "Installed Coral Object Detection Model" msg_info "Building Nginx with Custom Modules" $STD /opt/frigate/docker/main/build_nginx.sh sed -e '/s6-notifyoncheck/ s/^#*/#/' -i /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run -ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/nginx +ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/nginx msg_ok "Built Nginx" msg_info "Installing Tempio" diff --git a/install/ghost-install.sh b/install/ghost-install.sh index d87f8e214..a69e5f44e 100644 --- a/install/ghost-install.sh +++ b/install/ghost-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ghost.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,12 +13,8 @@ setting_up_container network_check update_os - msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ nginx \ mariadb-server \ ca-certificates \ @@ -34,11 +30,11 @@ 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 "Ghost-Credentials" - echo "Ghost Database User: $DB_USER" - echo "Ghost Database Password: $DB_PASS" - echo "Ghost Database Name: $DB_NAME" -} >> ~/ghost.creds + echo "Ghost-Credentials" + echo "Ghost Database User: $DB_USER" + echo "Ghost Database Password: $DB_PASS" + echo "Ghost Database Name: $DB_NAME" +} >>~/ghost.creds msg_ok "Configured MySQL" msg_info "Setting up Node.js Repository" diff --git a/install/gitea-install.sh b/install/gitea-install.sh index abaa62706..5c37961e0 100644 --- a/install/gitea-install.sh +++ b/install/gitea-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://about.gitea.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y git -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y sqlite3 $STD apt-get install -y openssh-server $STD apt-get install -y wget @@ -29,7 +26,7 @@ RELEASE=$(wget -q https://github.com/go-gitea/gitea/releases/latest -O - | grep wget -q https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-arm64 mv gitea* /usr/local/bin/gitea chmod +x /usr/local/bin/gitea -adduser --system --group --disabled-password --shell /bin/bash --home /etc/gitea gitea > /dev/null +adduser --system --group --disabled-password --shell /bin/bash --home /etc/gitea gitea >/dev/null mkdir -p /var/lib/gitea/{custom,data,log} chown -R gitea:gitea /var/lib/gitea/ chmod -R 750 /var/lib/gitea/ diff --git a/install/glance-install.sh b/install/glance-install.sh index 1fe720795..937546d0f 100644 --- a/install/glance-install.sh +++ b/install/glance-install.sh @@ -22,7 +22,6 @@ $STD apt-get install -y \ openssh-server msg_ok "Installed Dependencies" - msg_info "Installing Glance" RELEASE=$(curl -s https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') cd /opt @@ -80,4 +79,4 @@ msg_info "Cleaning up" rm -rf /opt/glance-linux-arm64.tar.gz $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/glpi-install.sh b/install/glpi-install.sh index 76f4d7b86..f3a641ea8 100644 --- a/install/glpi-install.sh +++ b/install/glpi-install.sh @@ -43,7 +43,7 @@ mysql -u root -e "GRANT SELECT ON \`mysql\`.\`time_zone_name\` TO '$DB_USER'@'lo echo "Database: $DB_NAME" echo "Username: $DB_USER" echo "Password: $DB_PASS" -} >> ~/glpi_db.creds +} >>~/glpi_db.creds msg_ok "Set up database" msg_info "Installing GLPi" @@ -57,7 +57,7 @@ echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed GLPi" msg_info "Setting Downstream file" -cat < /opt/glpi/inc/downstream.php +cat </opt/glpi/inc/downstream.php /etc/glpi/local_define.php +cat </etc/glpi/local_define.php /etc/systemd/system/gokapi.service [Unit] Description=gokapi diff --git a/install/gomft-install.sh b/install/gomft-install.sh new file mode 100644 index 000000000..ebf32b437 --- /dev/null +++ b/install/gomft-install.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: SlaviΕ‘a AreΕΎina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/StarFleetCPTN/GoMFT + +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 \ + sqlite3 \ + rclone \ + tzdata \ + ca-certificates \ + build-essential +msg_ok "Installed Dependencies" + +msg_info "Setting up Golang" +set +o pipefail +temp_file=$(mktemp) +golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1) +wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file" +tar -C /usr/local -xzf "$temp_file" +ln -sf /usr/local/go/bin/go /usr/local/bin/go +set -o pipefail +msg_ok "Setup Golang" + +msg_info "Setup ${APPLICATION} (Patience)" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file +tar -xzf $temp_file +mv GoMFT-${RELEASE}/ /opt/gomft +cd /opt/gomft +$STD go mod download +$STD go install github.com/a-h/templ/cmd/templ@latest +$STD $HOME/go/bin/templ generate +export CGO_ENABLED=1 +export GOOS=linux +$STD go build -o gomft +chmod +x /opt/gomft/gomft +JWT_SECRET_KEY=$(openssl rand -base64 24 | tr -d '/+=') + +cat </opt/gomft/.env +SERVER_ADDRESS=:8080 +DATA_DIR=/opt/gomft/data/gomft +BACKUP_DIR=/opt/gomft/data/gomft/backups +JWT_SECRET=$JWT_SECRET_KEY +BASE_URL=http://localhost:8080 + +# Email configuration +EMAIL_ENABLED=false +EMAIL_HOST=smtp.example.com +EMAIL_PORT=587 +EMAIL_FROM_EMAIL=gomft@example.com +EMAIL_FROM_NAME=GoMFT +EMAIL_REPLY_TO= +EMAIL_ENABLE_TLS=true +EMAIL_REQUIRE_AUTH=true +EMAIL_USERNAME=smtp_username +EMAIL_PASSWORD=smtp_password +EOF + +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Setup ${APPLICATION}" + +msg_info "Creating Service" +cat </etc/systemd/system/gomft.service +[Unit] +Description=GoMFT Service +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/gomft +ExecStart=/opt/gomft/./gomft +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now gomft +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f $temp_file +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" + +motd_ssh +customize diff --git a/install/gotify-install.sh b/install/gotify-install.sh index be49d258a..639cbeb51 100644 --- a/install/gotify-install.sh +++ b/install/gotify-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://gotify.net/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -26,7 +26,7 @@ RELEASE=$(curl -s https://api.github.com/repos/gotify/server/releases/latest | g mkdir -p /opt/gotify cd /opt/gotify wget -q https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-arm64.zip -$STD unzip gotify-linux-arm64.zip +unzip -q gotify-linux-arm64.zip rm -rf gotify-linux-arm64.zip chmod +x gotify-linux-arm64 echo "${RELEASE}" >/opt/${APPLICATION}_version.txt diff --git a/install/grafana-install.sh b/install/grafana-install.sh index c6c5034cf..3556dc4f2 100644 --- a/install/grafana-install.sh +++ b/install/grafana-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://grafana.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gnupg $STD apt-get install -y apt-transport-https $STD apt-get install -y software-properties-common diff --git a/install/graylog-install.sh b/install/graylog-install.sh index 351e8c1f5..4f89ad7b6 100644 --- a/install/graylog-install.sh +++ b/install/graylog-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://graylog.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,11 +14,7 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc \ - gnupg +$STD apt-get install -y gnupg msg_ok "Installed Dependencies" msg_info "Setup MongoDB" @@ -44,10 +40,10 @@ msg_info "Setup ${APPLICATION}" $STD apt-get install graylog-server ROOT_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16) { - echo "${APPLICATION} Credentials" - echo "Admin User: admin" - echo "Admin Password: ${ROOT_PASSWORD}" -} >> ~/graylog.creds + echo "${APPLICATION} Credentials" + echo "Admin User: admin" + echo "Admin Password: ${ROOT_PASSWORD}" +} >>~/graylog.creds ROOT_PASSWORD=$(echo -n $ROOT_PASSWORD | shasum -a 256 | awk '{print $1}') sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/server/server.conf sed -i "s/root_password_sha2 =/root_password_sha2 = $ROOT_PASSWORD/g" /etc/graylog/server/server.conf @@ -62,4 +58,4 @@ msg_info "Cleaning up" rm -f graylog-*-repository_latest.deb $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/grist-install.sh b/install/grist-install.sh index 9455b4977..02f27c56a 100644 --- a/install/grist-install.sh +++ b/install/grist-install.sh @@ -15,12 +15,9 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ make \ gnupg \ ca-certificates \ - mc \ unzip \ python3.11-venv \ wget \ @@ -81,4 +78,4 @@ msg_info "Cleaning up" rm -rf /opt/v${RELEASE}.zip $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/grocy-install.sh b/install/grocy-install.sh index 90e44155c..ac382723d 100644 --- a/install/grocy-install.sh +++ b/install/grocy-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://grocy.info/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y apt-transport-https $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/habitica-install.sh b/install/habitica-install.sh index 9aaf92939..443a33c9b 100644 --- a/install/habitica-install.sh +++ b/install/habitica-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ libkrb5-dev \ gnupg \ build-essential \ diff --git a/install/headscale-install.sh b/install/headscale-install.sh index de9921b0c..163512142 100644 --- a/install/headscale-install.sh +++ b/install/headscale-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/juanfont/headscale -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/heimdall-dashboard-install.sh b/install/heimdall-dashboard-install.sh index 524138d54..6267ac3c2 100644 --- a/install/heimdall-dashboard-install.sh +++ b/install/heimdall-dashboard-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://heimdall.site/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y apt-transport-https $STD apt-get install -y composer $STD apt-get install -y wget diff --git a/install/hev-socks5-server-install.sh b/install/hev-socks5-server-install.sh index d5b6310bc..68e24fd21 100644 --- a/install/hev-socks5-server-install.sh +++ b/install/hev-socks5-server-install.sh @@ -13,13 +13,6 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc -msg_ok "Installed Dependencies" - msg_info "Setup ${APPLICATION}" RELEASE=$(curl -s https://api.github.com/repos/heiher/${APPLICATION}/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') curl -L -o "${APPLICATION}" "https://github.com/heiher/${APPLICATION}/releases/download/${RELEASE}/hev-socks5-server-linux-x86_64" @@ -32,7 +25,7 @@ mkdir -p /etc/${APPLICATION} USERNAME="admin" PASSWORD=$(openssl rand -base64 16) MARK="0" -echo "$USERNAME $PASSWORD $MARK" > /root/hev.creds +echo "$USERNAME $PASSWORD $MARK" >/root/hev.creds mv main.yml /etc/${APPLICATION}/main.yml msg_ok "Setup ${APPLICATION}" @@ -58,4 +51,4 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/hivemq-install.sh b/install/hivemq-install.sh index f36d7c318..a2ad32d2b 100644 --- a/install/hivemq-install.sh +++ b/install/hivemq-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.hivemq.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/hoarder-install.sh b/install/hoarder-install.sh index bce02916b..cf88ff474 100644 --- a/install/hoarder-install.sh +++ b/install/hoarder-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://hoarder.app/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -17,9 +17,7 @@ msg_info "Installing Dependencies" $STD apt-get install -y \ g++ \ build-essential \ - curl \ git \ - sudo \ gnupg \ ca-certificates \ chromium/stable \ @@ -45,13 +43,13 @@ $STD dpkg -i meilisearch-aarch64.deb wget -q https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -O /etc/meilisearch.toml MASTER_KEY=$(openssl rand -base64 12) sed -i \ - -e 's|^env =.*|env = "production"|' \ - -e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \ - -e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \ - -e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \ - -e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \ - -e 's|^# no_analytics = true|no_analytics = true|' \ - /etc/meilisearch.toml + -e 's|^env =.*|env = "production"|' \ + -e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \ + -e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \ + -e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \ + -e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \ + -e 's|^# no_analytics = true|no_analytics = true|' \ + /etc/meilisearch.toml msg_ok "Installed Meilisearch" msg_info "Installing Node.js" diff --git a/install/homarr-install.sh b/install/homarr-install.sh index 0a1c3cf09..ad76bcb68 100644 --- a/install/homarr-install.sh +++ b/install/homarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/homarr-labs/homarr -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - sudo \ - mc \ - curl \ redis-server \ ca-certificates \ gpg \ @@ -78,7 +75,7 @@ rm /etc/nginx/nginx.conf cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf mkdir -p /opt/homarr/apps/cli cp /opt/homarr/packages/cli/cli.cjs /opt/homarr/apps/cli/cli.cjs -echo $'#!/bin/bash\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' > /usr/bin/homarr +echo $'#!/bin/bash\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' >/usr/bin/homarr chmod +x /usr/bin/homarr mkdir /opt/homarr/build cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 10a436d9c..8270321d9 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -18,10 +18,7 @@ $STD apt-get install curl -y $STD curl -O http://ports.ubuntu.com/pool/main/t/tiff/libtiff6_4.5.1+git230720-4ubuntu4_arm64.deb && dpkg -i ./libtiff6_4.5.1+git230720-4ubuntu4_arm64.deb && rm libtiff6_4.5.1+git230720-4ubuntu4_arm64.deb $STD apt --fix-broken install -y $STD apt-get install -y \ - curl \ git \ - sudo \ - mc \ gnupg \ ca-certificates \ bluez \ diff --git a/install/homebox-install.sh b/install/homebox-install.sh index b604232ad..6c26f015d 100644 --- a/install/homebox-install.sh +++ b/install/homebox-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/sysadminsmedia/homebox -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/homebridge-install.sh b/install/homebridge-install.sh index 400d37fda..55ac02d04 100644 --- a/install/homebridge-install.sh +++ b/install/homebridge-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://homebridge.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y avahi-daemon $STD apt-get install -y gnupg2 $STD apt-get install -y wget diff --git a/install/homepage-install.sh b/install/homepage-install.sh index 65d9c1a95..d694f2744 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://gethomepage.dev/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -35,6 +35,7 @@ $STD apt-get install -y nodejs $STD npm install -g pnpm msg_ok "Installed Node.js" +LOCAL_IP=$(hostname -I | awk '{print $1}') RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') msg_info "Installing Homepage v${RELEASE} (Patience)" wget -q https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz @@ -48,7 +49,9 @@ cp /opt/homepage/src/skeleton/* /opt/homepage/config $STD pnpm install export NEXT_PUBLIC_VERSION="v$RELEASE" export NEXT_PUBLIC_REVISION="source" +export NEXT_TELEMETRY_DISABLED=1 $STD pnpm build +echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" >/opt/homepage/.env echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Homepage v${RELEASE}" diff --git a/install/homer-install.sh b/install/homer-install.sh index 20269a758..60f4bc807 100644 --- a/install/homer-install.sh +++ b/install/homer-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/bastienwirtz/homer -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y pip $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/hyperhdr-install.sh b/install/hyperhdr-install.sh index e2b5adf83..d67ac4157 100644 --- a/install/hyperhdr-install.sh +++ b/install/hyperhdr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.hyperhdr.eu/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/hyperion-install.sh b/install/hyperion-install.sh index 2e298ea3d..85f01146a 100644 --- a/install/hyperion-install.sh +++ b/install/hyperion-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://hyperion-project.org/forum/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y lsb-release $STD apt-get install -y gpg $STD apt-get install -y apt-transport-https diff --git a/install/influxdb-install.sh b/install/influxdb-install.sh index b60db0a0b..2955013f8 100644 --- a/install/influxdb-install.sh +++ b/install/influxdb-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.influxdata.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y lsb-base $STD apt-get install -y lsb-release $STD apt-get install -y gnupg2 @@ -25,8 +22,8 @@ $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" msg_info "Setting up InfluxDB Repository" -wget -qO- https://repos.influxdata.com/influxdata-archive_compat.key | gpg --dearmor > /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg -echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main" > /etc/apt/sources.list.d/influxdata.list +wget -qO- https://repos.influxdata.com/influxdata-archive_compat.key | gpg --dearmor >/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg +echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main" >/etc/apt/sources.list.d/influxdata.list msg_ok "Set up InfluxDB Repository" read -r -p "Which version of InfluxDB to install? (1 or 2) " prompt diff --git a/install/inspircd-install.sh b/install/inspircd-install.sh index 18f8fb646..4f8977da7 100644 --- a/install/inspircd-install.sh +++ b/install/inspircd-install.sh @@ -22,7 +22,6 @@ $STD apt-get install -y \ openssh-server msg_ok "Installed Dependencies" - msg_info "Installing InspIRCd" RELEASE=$(curl -s https://api.github.com/repos/inspircd/inspircd/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') cd /opt diff --git a/install/inventree-install.sh b/install/inventree-install.sh index 49aaa783a..a51c1555e 100644 --- a/install/inventree-install.sh +++ b/install/inventree-install.sh @@ -14,12 +14,7 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc \ - gnupg \ - sudo +$STD apt-get install -y gnupg temp_file=$(mktemp) wget -q http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb -O $temp_file $STD dpkg -i $temp_file diff --git a/install/iobroker-install.sh b/install/iobroker-install.sh index 22be94bb6..62c3771a2 100644 --- a/install/iobroker-install.sh +++ b/install/iobroker-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.iobroker.net/#en/intro -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y ca-certificates $STD apt-get install -y gnupg $STD apt-get install -y wget diff --git a/install/iventoy-install.sh b/install/iventoy-install.sh index 5f7132190..bdb63c016 100644 --- a/install/iventoy-install.sh +++ b/install/iventoy-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.iventoy.com/en/index.html -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/jackett-install.sh b/install/jackett-install.sh index 454c14145..826e34a6d 100644 --- a/install/jackett-install.sh +++ b/install/jackett-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Jackett/Jackett -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/jellyfin-install.sh b/install/jellyfin-install.sh index 06a3cb94a..5d250da5c 100644 --- a/install/jellyfin-install.sh +++ b/install/jellyfin-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://jellyfin.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,8 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo $STD apt-get install -y gpg $STD apt-get install -y mc $STD apt-get install -y wget @@ -34,10 +32,10 @@ fi msg_ok "Set Up Hardware Acceleration" msg_info "Installing Jellyfin" -VERSION="$( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )" +VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)" # If the keyring directory is absent, create it if [[ ! -d /etc/apt/keyrings ]]; then - mkdir -p /etc/apt/keyrings + mkdir -p /etc/apt/keyrings fi # Download the repository signing key and install it to the keyring directory curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor --yes --output /etc/apt/keyrings/jellyfin.gpg diff --git a/install/jellyseerr-install.sh b/install/jellyseerr-install.sh index 796afc1ad..3df7c56e0 100644 --- a/install/jellyseerr-install.sh +++ b/install/jellyseerr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.jellyseerr.dev/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -21,6 +21,7 @@ $STD apt-get install -y git $STD apt-get install -y ca-certificates $STD apt-get install -y gpg $STD apt-get install -y openssh-server +$STD apt-get install -y build-essential msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" diff --git a/install/jenkins-install.sh b/install/jenkins-install.sh index 2c0b5ec2f..db0254bca 100644 --- a/install/jenkins-install.sh +++ b/install/jenkins-install.sh @@ -35,4 +35,4 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/jupyternotebook-install.sh b/install/jupyternotebook-install.sh index 4e22d61b9..843921187 100644 --- a/install/jupyternotebook-install.sh +++ b/install/jupyternotebook-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ python3 \ python3-pip msg_ok "Installed Dependencies" diff --git a/install/kavita-install.sh b/install/kavita-install.sh index 4a37afeee..16e5df1d7 100644 --- a/install/kavita-install.sh +++ b/install/kavita-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.kavitareader.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/kimai-install.sh b/install/kimai-install.sh index d76201942..6044b355b 100644 --- a/install/kimai-install.sh +++ b/install/kimai-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.kimai.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ apt-transport-https \ - sudo \ - mc \ - curl \ apache2 \ git \ expect \ @@ -54,11 +51,11 @@ mysql -u root -e "CREATE DATABASE $DB_NAME;" mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" { - echo "Kimai-Credentials" - echo "Kimai Database User: $DB_USER" - echo "Kimai Database Password: $DB_PASS" - echo "Kimai Database Name: $DB_NAME" -} >> ~/kimai.creds + echo "Kimai-Credentials" + echo "Kimai Database User: $DB_USER" + echo "Kimai Database Password: $DB_PASS" + echo "Kimai Database Name: $DB_NAME" +} >>~/kimai.creds msg_ok "Set up database" msg_info "Installing Kimai (Patience)" @@ -67,18 +64,12 @@ wget -q "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" unzip -q ${RELEASE}.zip mv kimai-${RELEASE} /opt/kimai cd /opt/kimai -echo "export COMPOSER_ALLOW_SUPERUSER=1" >> ~/.bashrc +echo "export COMPOSER_ALLOW_SUPERUSER=1" >>~/.bashrc source ~/.bashrc $STD composer install --no-dev --optimize-autoloader --no-interaction cp .env.dist .env sed -i "/^DATABASE_URL=/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=$MYSQL_VERSION" /opt/kimai/.env $STD bin/console kimai:install -n -chown -R :www-data /opt/* -chmod -R g+r /opt/* -chmod -R g+rw /opt/* -chown -R www-data:www-data /opt/* -chmod -R 755 /opt/* -chmod -R 777 /opt/kimai/var/ $STD expect </etc/apache2/sites-available/kimai.conf EOF $STD a2ensite kimai.conf -$STD a2dissite 000-default.conf +$STD a2dissite 000-default.conf $STD systemctl reload apache2 msg_ok "Created Service" +msg_info "Setup Permissions" +chown -R :www-data /opt/* +chmod -R g+r /opt/* +chmod -R g+rw /opt/* +chown -R www-data:www-data /opt/* +chmod -R 777 /opt/* +msg_ok "Setup Permissions" + motd_ssh customize diff --git a/install/koillection-install.sh b/install/koillection-install.sh index 66b58575b..8a844b50a 100644 --- a/install/koillection-install.sh +++ b/install/koillection-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://koillection.github.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,11 +15,7 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ - gnupg2\ - postgresql \ + gnupg2 postgresql \ apache2 \ lsb-release msg_ok "Installed Dependencies" @@ -46,11 +42,11 @@ 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 "Koillection Credentials" -echo "Koillection Database User: $DB_USER" -echo "Koillection Database Password: $DB_PASS" -echo "Koillection Database Name: $DB_NAME" -} >> ~/koillection.creds + echo "Koillection Credentials" + echo "Koillection Database User: $DB_USER" + echo "Koillection Database Password: $DB_PASS" + echo "Koillection Database Name: $DB_NAME" +} >>~/koillection.creds msg_ok "Set up PostgreSQL" msg_info "Setting up Node.js/Yarn" @@ -73,19 +69,19 @@ cd /opt/koillection cp /opt/koillection/.env /opt/koillection/.env.local APP_SECRET=$(openssl rand -base64 32) sed -i -e "s|^APP_ENV=.*|APP_ENV=prod|" \ - -e "s|^APP_DEBUG=.*|APP_DEBUG=0|" \ - -e "s|^APP_SECRET=.*|APP_SECRET=${APP_SECRET}|" \ - -e "s|^DB_NAME=.*|DB_NAME=${DB_NAME}|" \ - -e "s|^DB_USER=.*|DB_USER=${DB_USER}|" \ - -e "s|^DB_PASSWORD=.*|DB_PASSWORD=${DB_PASS}|" \ - /opt/koillection/.env.local + -e "s|^APP_DEBUG=.*|APP_DEBUG=0|" \ + -e "s|^APP_SECRET=.*|APP_SECRET=${APP_SECRET}|" \ + -e "s|^DB_NAME=.*|DB_NAME=${DB_NAME}|" \ + -e "s|^DB_USER=.*|DB_USER=${DB_USER}|" \ + -e "s|^DB_PASSWORD=.*|DB_PASSWORD=${DB_PASS}|" \ + /opt/koillection/.env.local export COMPOSER_ALLOW_SUPERUSER=1 $STD composer install --no-dev -o --no-interaction --classmap-authoritative $STD php bin/console doctrine:migrations:migrate --no-interaction $STD php bin/console app:translations:dump cd assets/ $STD yarn install -$STD yarn build +$STD yarn build chown -R www-data:www-data /opt/koillection/public/uploads echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Koillection" diff --git a/install/kometa-install.sh b/install/kometa-install.sh index 23c0f5516..540629f81 100644 --- a/install/kometa-install.sh +++ b/install/kometa-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Kometa-Team/Kometa -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,13 +13,6 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - mc \ - sudo -msg_ok "Installed Dependencies" - msg_info "Setup Python 3" $STD apt-get install python3-pip -y rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED diff --git a/install/komga-install.sh b/install/komga-install.sh index a475689a0..7b5ff6536 100644 --- a/install/komga-install.sh +++ b/install/komga-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://komga.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/komodo-install.sh b/install/komodo-install.sh index 82fbd8f63..8d7c6f928 100644 --- a/install/komodo-install.sh +++ b/install/komodo-install.sh @@ -29,8 +29,8 @@ curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/doc chmod a+r /etc/apt/keyrings/docker.asc echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ - $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ - sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | + sudo tee /etc/apt/sources.list.d/docker.list >/dev/null $STD apt-get update msg_ok "Setup Docker Repository" @@ -51,25 +51,24 @@ read -rp "Enter your choice (default: 1): " DB_CHOICE DB_CHOICE=${DB_CHOICE:-1} case $DB_CHOICE in - 1) - DB_COMPOSE_FILE="mongo.compose.yaml" - ;; - 2) - DB_COMPOSE_FILE="sqlite.compose.yaml" - ;; - 3) - DB_COMPOSE_FILE="postgres.compose.yaml" - ;; - *) - echo "Invalid choice. Defaulting to MongoDB." - DB_COMPOSE_FILE="mongo.compose.yaml" - ;; +1) + DB_COMPOSE_FILE="mongo.compose.yaml" + ;; +2) + DB_COMPOSE_FILE="sqlite.compose.yaml" + ;; +3) + DB_COMPOSE_FILE="postgres.compose.yaml" + ;; +*) + echo "Invalid choice. Defaulting to MongoDB." + DB_COMPOSE_FILE="mongo.compose.yaml" + ;; esac mkdir -p /opt/komodo cd /opt/komodo wget -q "https://raw.githubusercontent.com/mbecker20/komodo/main/compose/$DB_COMPOSE_FILE" - msg_info "Setup Komodo Environment" wget -q -O /opt/komodo/compose.env https://raw.githubusercontent.com/mbecker20/komodo/main/compose/compose.env DB_PASSWORD=$(openssl rand -base64 16 | tr -d '/+=') diff --git a/install/kubo-install.sh b/install/kubo-install.sh index def1bb43f..638045cc7 100644 --- a/install/kubo-install.sh +++ b/install/kubo-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/ipfs/kubo -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server @@ -48,6 +45,7 @@ After=syslog.target network.target Type=simple ExecStart=/usr/local/bin/ipfs daemon Restart=on-failure +Environment=HOME=/root [Install] WantedBy=multi-user.target EOF diff --git a/install/lazylibrarian-install.sh b/install/lazylibrarian-install.sh index a579dd9dc..0a68e8194 100644 --- a/install/lazylibrarian-install.sh +++ b/install/lazylibrarian-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://gitlab.com/LazyLibrarian/LazyLibrarian -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ git \ libpng-dev \ libjpeg-dev \ diff --git a/install/lidarr-install.sh b/install/lidarr-install.sh index 8c960bad4..231667c1e 100644 --- a/install/lidarr-install.sh +++ b/install/lidarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://lidarr.audio/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y sqlite3 $STD apt-get install -y libchromaprint-tools $STD apt-get install -y mediainfo diff --git a/install/linkwarden-install.sh b/install/linkwarden-install.sh index fa81c38a4..6a128741b 100644 --- a/install/linkwarden-install.sh +++ b/install/linkwarden-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://linkwarden.app/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ make \ git \ postgresql \ @@ -61,12 +58,12 @@ $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 "Linkwarden-Credentials" - echo "Linkwarden Database User: $DB_USER" - echo "Linkwarden Database Password: $DB_PASS" - echo "Linkwarden Database Name: $DB_NAME" - echo "Linkwarden Secret: $SECRET_KEY" -} >> ~/linkwarden.creds + echo "Linkwarden-Credentials" + echo "Linkwarden Database User: $DB_USER" + echo "Linkwarden Database Password: $DB_PASS" + echo "Linkwarden Database Name: $DB_NAME" + echo "Linkwarden Secret: $SECRET_KEY" +} >>~/linkwarden.creds msg_ok "Set up PostgreSQL DB" read -r -p "Would you like to add Adminer? " prompt @@ -90,7 +87,7 @@ if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then echo "Adminer Database User: $DB_USER" echo "Adminer Database Password: $DB_PASS" echo "Adminer Database Name: $DB_NAME" -} >> ~/linkwarden.creds + } >>~/linkwarden.creds msg_ok "Installed Adminer" fi diff --git a/install/listmonk-install.sh b/install/listmonk-install.sh index 85b31ece4..7fbbf6a00 100644 --- a/install/listmonk-install.sh +++ b/install/listmonk-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://listmonk.app/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -30,11 +30,11 @@ 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 "listmonk-Credentials" -echo -e "listmonk Database User: \e[32m$DB_USER\e[0m" -echo -e "listmonk Database Password: \e[32m$DB_PASS\e[0m" -echo -e "listmonk Database Name: \e[32m$DB_NAME\e[0m" -} >> ~/listmonk.creds + echo "listmonk-Credentials" + echo -e "listmonk Database User: \e[32m$DB_USER\e[0m" + echo -e "listmonk Database Password: \e[32m$DB_PASS\e[0m" + echo -e "listmonk Database Name: \e[32m$DB_NAME\e[0m" +} >>~/listmonk.creds msg_ok "Set up PostgreSQL" msg_info "Installing listmonk" @@ -79,4 +79,4 @@ msg_info "Cleaning up" rm -rf "/opt/listmonk_${RELEASE}_linux_arm64.tar.gz" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/lldap-install.sh b/install/lldap-install.sh index c219164b6..3aea0e7ba 100644 --- a/install/lldap-install.sh +++ b/install/lldap-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/lldap/lldap -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/lubelogger-install.sh b/install/lubelogger-install.sh index c64404c15..1d1b8f5cf 100644 --- a/install/lubelogger-install.sh +++ b/install/lubelogger-install.sh @@ -25,7 +25,6 @@ $STD apt-get install -y \ openssh-server msg_ok "Installed Dependencies" - msg_info "Installing LubeLogger" cd /opt mkdir -p /opt/lubelogger @@ -36,7 +35,7 @@ wget -q https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLog unzip -q LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip chmod 700 /opt/lubelogger/CarCareTracker cp /opt/lubelogger/appsettings.json /opt/lubelogger/appsettings_bak.json -jq '.Kestrel = {"Endpoints": {"Http": {"Url": "http://0.0.0.0:5000"}}}' /opt/lubelogger/appsettings_bak.json > /opt/lubelogger/appsettings.json +jq '.Kestrel = {"Endpoints": {"Http": {"Url": "http://0.0.0.0:5000"}}}' /opt/lubelogger/appsettings_bak.json >/opt/lubelogger/appsettings.json echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed LubeLogger" diff --git a/install/mafl-install.sh b/install/mafl-install.sh index 84cc21794..6e9592108 100644 --- a/install/mafl-install.sh +++ b/install/mafl-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mafl.hywax.space/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y make $STD apt-get install -y g++ $STD apt-get install -y gcc diff --git a/install/magicmirror-install.sh b/install/magicmirror-install.sh index 5cee574bc..9440844be 100644 --- a/install/magicmirror-install.sh +++ b/install/magicmirror-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://magicmirror.builders/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/mariadb-install.sh b/install/mariadb-install.sh index e056e22ee..439a4dbe4 100644 --- a/install/mariadb-install.sh +++ b/install/mariadb-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mariadb.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -38,17 +38,17 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then php-zip \ php-gd \ php-json \ - php-curl - - wget -q "https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz" - mkdir -p /var/www/html/phpMyAdmin - tar xf phpMyAdmin-5.2.1-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin - cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php - SECRET=$(openssl rand -base64 24) - sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php - chmod 660 /var/www/html/phpMyAdmin/config.inc.php - chown -R www-data:www-data /var/www/html/phpMyAdmin - systemctl restart apache2 + php-curl + + wget -q "https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz" + mkdir -p /var/www/html/phpMyAdmin + tar xf phpMyAdmin-5.2.1-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin + cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php + SECRET=$(openssl rand -base64 24) + sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php + chmod 660 /var/www/html/phpMyAdmin/config.inc.php + chown -R www-data:www-data /var/www/html/phpMyAdmin + systemctl restart apache2 msg_ok "Installed phpMyAdmin" fi diff --git a/install/matterbridge-install.sh b/install/matterbridge-install.sh index 58399f587..61882bf0d 100644 --- a/install/matterbridge-install.sh +++ b/install/matterbridge-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Luligu/matterbridge/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server @@ -34,7 +31,7 @@ $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" -msg_info "Install Matterbridge" +msg_info "Install Matterbridge" mkdir -p /root/Matterbridge $STD npm install -g matterbridge msg_ok "Installed Matterbridge" diff --git a/install/mattermost-install.sh b/install/mattermost-install.sh index b5f7f5aad..d94703778 100644 --- a/install/mattermost-install.sh +++ b/install/mattermost-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mattermost.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,11 +15,8 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ gpg \ - postgresql + postgresql msg_ok "Installed Dependencies" msg_info "Setting up PostgreSQL" @@ -32,11 +29,11 @@ $STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_ $STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;" $STD sudo -u postgres psql -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO $DB_USER;" { - echo "Mattermost Credentials" - echo "Database User: $DB_USER" - echo "Database Password: $DB_PASS" - echo "Database Name: $DB_NAME" -} >> ~/mattermost.creds + echo "Mattermost Credentials" + echo "Database User: $DB_USER" + echo "Database Password: $DB_PASS" + echo "Database Name: $DB_NAME" +} >>~/mattermost.creds msg_ok "Set up PostgreSQL" msg_info "Installing Mattermost" @@ -47,7 +44,7 @@ $STD apt-get update $STD apt-get install -y mattermost $STD install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json sed -i -e "/DataSource/c\ \"DataSource\": \"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME?sslmode=disable&connect_timeout=10\"," \ - -e "/SiteURL/c\ \"SiteURL\": \"http://$IPADDRESS:8065\"," /opt/mattermost/config/config.json + -e "/SiteURL/c\ \"SiteURL\": \"http://$IPADDRESS:8065\"," /opt/mattermost/config/config.json systemctl enable -q --now mattermost.service msg_ok "Installed Mattermost" diff --git a/install/mediamtx-install.sh b/install/mediamtx-install.sh index e141b589c..d7ca320d1 100644 --- a/install/mediamtx-install.sh +++ b/install/mediamtx-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/bluenviron/mediamtx -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y ffmpeg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/medusa-install.sh b/install/medusa-install.sh index efbad03d8..fd1592117 100644 --- a/install/medusa-install.sh +++ b/install/medusa-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/pymedusa/Medusa -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/memos-install.sh b/install/memos-install.sh index 35c6b169e..0d2732bcc 100644 --- a/install/memos-install.sh +++ b/install/memos-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/usememos/memos -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -18,10 +18,7 @@ msg_info "Installing Dependencies" $STD apt-get install -y \ build-essential \ git \ - curl \ - sudo \ - tzdata \ - mc + tzdata msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" @@ -52,8 +49,9 @@ msg_ok "Installed Golang" msg_info "Installing Memos (Patience)" mkdir -p /opt/memos_data -$STD sudo git clone https://github.com/usememos/memos.git /opt/memos -cd /opt/memos/web +export NODE_OPTIONS="--max-old-space-size=2048" +$STD git clone https://github.com/usememos/memos.git /opt/memos +cd /opt/memos/web $STD pnpm i --frozen-lockfile $STD pnpm build cd /opt/memos diff --git a/install/meshcentral-install.sh b/install/meshcentral-install.sh index ba3bba209..8e75c4a2f 100644 --- a/install/meshcentral-install.sh +++ b/install/meshcentral-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://meshcentral.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y ca-certificates $STD apt-get install -y gnupg $STD apt-get install -y wget diff --git a/install/metube-install.sh b/install/metube-install.sh index 338e8c544..702acfcec 100644 --- a/install/metube-install.sh +++ b/install/metube-install.sh @@ -17,13 +17,11 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y --no-install-recommends \ build-essential \ - curl \ aria2 \ coreutils \ gcc \ g++ \ musl-dev \ - sudo \ ffmpeg \ git \ make \ @@ -62,7 +60,7 @@ $STD node_modules/.bin/ng build cd /opt/metube $STD pip3 install pipenv $STD pipenv install -mkdir -p /opt/metube_downloads /opt/metube_downloads/.metube /opt/metube_downloads/music /opt/metube_downloads/videos +mkdir -p /opt/metube_downloads /opt/metube_downloads/.metube /opt/metube_downloads/music /opt/metube_downloads/videos cat </opt/metube/.env DOWNLOAD_DIR=/opt/metube_downloads STATE_DIR=/opt/metube_downloads/.metube diff --git a/install/minio-install.sh b/install/minio-install.sh index f06b1b3b8..e6e57c95d 100644 --- a/install/minio-install.sh +++ b/install/minio-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/minio/minio -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,13 +13,6 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc -msg_ok "Installed Dependencies" - msg_info "Setup MinIO" RELEASE=$(curl -s https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}') wget -q https://dl.min.io/server/minio/release/linux-amd64/minio @@ -41,7 +34,7 @@ EOF echo "MinIO-Credentials" echo "MinIO Admin User: $MINIO_ADMIN_USER" echo "MinIO Admin Password: $MINIO_ADMIN_PASSWORD" -} >> ~/minio.creds +} >>~/minio.creds echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Setup MinIO" diff --git a/install/mongodb-install.sh b/install/mongodb-install.sh index fc5d046aa..2661f29b1 100644 --- a/install/mongodb-install.sh +++ b/install/mongodb-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.mongodb.com/de-de -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -29,7 +29,6 @@ $STD apt-get install -y wget $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" -# Abfrage fΓΌr die MongoDB-Version read -p "Do you want to install MongoDB 8.0 instead of 7.0? [y/N]: " install_mongodb_8 if [[ "$install_mongodb_8" =~ ^[Yy]$ ]]; then MONGODB_VERSION="8.0" diff --git a/install/monica-install.sh b/install/monica-install.sh index e7f6555de..8b2232169 100644 --- a/install/monica-install.sh +++ b/install/monica-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.monicahq.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,15 +15,11 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ - gnupg2\ - mariadb-server \ - apache2 \ - libapache2-mod-php \ - php-{bcmath,curl,dom,gd,gmp,iconv,intl,json,mbstring,mysqli,opcache,pdo-mysql,redis,tokenizer,xml,zip} \ - composer + gnupg2 mariadb-server \ + apache2 \ + libapache2-mod-php \ + php-{bcmath,curl,dom,gd,gmp,iconv,intl,json,mbstring,mysqli,opcache,pdo-mysql,redis,tokenizer,xml,zip} \ + composer msg_ok "Installed Dependencies" msg_info "Setting up MariaDB" @@ -38,7 +34,7 @@ $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH echo "monica Database User: $DB_USER" echo "monica Database Password: $DB_PASS" echo "monica Database Name: $DB_NAME" -} >> ~/monica.creds +} >>~/monica.creds msg_ok "Set up MariaDB" msg_info "Setting up Node.js/Yarn" @@ -61,9 +57,9 @@ cd /opt/monica cp /opt/monica/.env.example /opt/monica/.env HASH_SALT=$(openssl rand -base64 32) sed -i -e "s|^DB_USERNAME=.*|DB_USERNAME=${DB_USER}|" \ - -e "s|^DB_PASSWORD=.*|DB_PASSWORD=${DB_PASS}|" \ - -e "s|^HASH_SALT=.*|HASH_SALT=${HASH_SALT}|" \ - /opt/monica/.env + -e "s|^DB_PASSWORD=.*|DB_PASSWORD=${DB_PASS}|" \ + -e "s|^HASH_SALT=.*|HASH_SALT=${HASH_SALT}|" \ + /opt/monica/.env $STD composer install --no-dev -o --no-interaction $STD yarn install $STD yarn run production diff --git a/install/motioneye-install.sh b/install/motioneye-install.sh index e49487712..cc9e584d3 100644 --- a/install/motioneye-install.sh +++ b/install/motioneye-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/motioneye-project/motioneye -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y cifs-utils $STD apt-get install -y wget diff --git a/install/mqtt-install.sh b/install/mqtt-install.sh index 55e2c49c5..85cd41013 100644 --- a/install/mqtt-install.sh +++ b/install/mqtt-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mosquitto.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/mylar3-install.sh b/install/mylar3-install.sh index 4b01ba2af..58bf21d01 100644 --- a/install/mylar3-install.sh +++ b/install/mylar3-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/mylar3/mylar3 -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -39,7 +39,7 @@ mkdir -p /opt/mylar3-data RELEASE=$(curl -s https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name') wget -qO- https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz | tar -xz --strip-components=1 -C /opt/mylar3 $STD pip install --no-cache-dir -r /opt/mylar3/requirements.txt -echo "${RELEASE}" > /opt/${APPLICATION}_version.txt +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed ${APPLICATION}" msg_info "Creating Service" diff --git a/install/myspeed-install.sh b/install/myspeed-install.sh index 5e13c21b1..bf478ff71 100644 --- a/install/myspeed-install.sh +++ b/install/myspeed-install.sh @@ -15,11 +15,9 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ build-essential \ g++ \ make \ - sudo \ make \ gpg \ ca-certificates \ diff --git a/install/mysql-install.sh b/install/mysql-install.sh index 6c254f816..664a5ba58 100644 --- a/install/mysql-install.sh +++ b/install/mysql-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.mysql.com/products/community | https://www.phpmyadmin.net -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,7 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - sudo \ lsb-release \ curl \ gnupg \ @@ -29,13 +28,17 @@ RELEASE_REPO="mysql-8.0" RELEASE_AUTH="mysql_native_password" read -r -p "Would you like to install the MySQL 8.4 LTS release instead of MySQL 8.0 (bug fix track; EOL April-2026)? " prompt if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then - RELEASE_REPO="mysql-8.4-lts" - RELEASE_AUTH="caching_sha2_password" + RELEASE_REPO="mysql-8.4-lts" + RELEASE_AUTH="caching_sha2_password" fi msg_info "Installing MySQL" -curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | gpg --dearmor -o /usr/share/keyrings/mysql.gpg -echo "deb [signed-by=/usr/share/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian $(lsb_release -sc) ${RELEASE_REPO}" >/etc/apt/sources.list.d/mysql.list +curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | gpg --dearmor -o /usr/share/keyrings/mysql.gpg +if [ "$(lsb_release -si)" = "Debian" ]; then + echo "deb [signed-by=/usr/share/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian $(lsb_release -sc) ${RELEASE_REPO}" >/etc/apt/sources.list.d/mysql.list +else + echo "deb [signed-by=/usr/share/keyrings/mysql.gpg] http://repo.mysql.com/apt/ubuntu $(lsb_release -sc) ${RELEASE_REPO}" >/etc/apt/sources.list.d/mysql.list +fi $STD apt-get update export DEBIAN_FRONTEND=noninteractive $STD apt-get install -y \ @@ -62,17 +65,17 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then php-zip \ php-gd \ php-json \ - php-curl - - wget -q "https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz" - mkdir -p /var/www/html/phpMyAdmin - tar xf phpMyAdmin-5.2.1-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin - cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php - SECRET=$(openssl rand -base64 24) - sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php - chmod 660 /var/www/html/phpMyAdmin/config.inc.php - chown -R www-data:www-data /var/www/html/phpMyAdmin - systemctl restart apache2 + php-curl + + wget -q "https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz" + mkdir -p /var/www/html/phpMyAdmin + tar xf phpMyAdmin-5.2.1-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin + cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php + SECRET=$(openssl rand -base64 24) + sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php + chmod 660 /var/www/html/phpMyAdmin/config.inc.php + chown -R www-data:www-data /var/www/html/phpMyAdmin + systemctl restart apache2 msg_ok "Installed phpMyAdmin" fi diff --git a/install/n8n-install.sh b/install/n8n-install.sh index 232d2ff50..a9da9eba5 100644 --- a/install/n8n-install.sh +++ b/install/n8n-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://n8n.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y ca-certificates $STD apt-get install -y gnupg $STD apt-get install -y wget diff --git a/install/navidrome-install.sh b/install/navidrome-install.sh index 089dce29d..d83b9d31b 100644 --- a/install/navidrome-install.sh +++ b/install/navidrome-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.navidrome.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies (patience)" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y ffmpeg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/neo4j-install.sh b/install/neo4j-install.sh index 5c378f649..10325f048 100644 --- a/install/neo4j-install.sh +++ b/install/neo4j-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://neo4j.com/product/neo4j-graph-database/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server @@ -25,7 +22,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Neo4j (patience)" wget -qO- https://debian.neo4j.com/neotechnology.gpg.key | gpg --dearmor -o /etc/apt/keyrings/neotechnology.gpg -echo 'deb [signed-by=/etc/apt/keyrings/neotechnology.gpg] https://debian.neo4j.com stable latest' > /etc/apt/sources.list.d/neo4j.list +echo 'deb [signed-by=/etc/apt/keyrings/neotechnology.gpg] https://debian.neo4j.com stable latest' >/etc/apt/sources.list.d/neo4j.list $STD apt-get update $STD apt-get install -y neo4j sed -i '/server.default_listen_address/s/^#//' /etc/neo4j/neo4j.conf diff --git a/install/netbox-install.sh b/install/netbox-install.sh index 9efe1a04b..18f46077e 100644 --- a/install/netbox-install.sh +++ b/install/netbox-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://netboxlabs.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ apache2 \ redis-server \ postgresql \ @@ -43,11 +40,11 @@ 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 "Netbox-Credentials" -echo -e "Netbox Database User: \e[32m$DB_USER\e[0m" -echo -e "Netbox Database Password: \e[32m$DB_PASS\e[0m" -echo -e "Netbox Database Name: \e[32m$DB_NAME\e[0m" -} >> ~/netbox.creds + echo "Netbox-Credentials" + echo -e "Netbox Database User: \e[32m$DB_USER\e[0m" + echo -e "Netbox Database Password: \e[32m$DB_PASS\e[0m" + echo -e "Netbox Database Name: \e[32m$DB_NAME\e[0m" +} >>~/netbox.creds msg_ok "Set up PostgreSQL" msg_info "Installing NetBox (Patience)" @@ -87,7 +84,7 @@ systemctl daemon-reload systemctl enable -q --now netbox netbox-rq echo "${RELEASE}" >/opt/${APPLICATION}_version.txt -echo -e "Netbox Secret: \e[32m$SECRET_KEY\e[0m" >> ~/netbox.creds +echo -e "Netbox Secret: \e[32m$SECRET_KEY\e[0m" >>~/netbox.creds msg_ok "Installed NetBox" msg_info "Setting up Django Admin" @@ -95,7 +92,7 @@ DJANGO_USER=Admin DJANGO_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) source /opt/netbox/venv/bin/activate -$STD python3 /opt/netbox/netbox/manage.py shell << EOF +$STD python3 /opt/netbox/netbox/manage.py shell <> ~/netbox.creds + echo "" + echo "Netbox-Django-Credentials" + echo -e "Django User: \e[32m$DJANGO_USER\e[0m" + echo -e "Django Password: \e[32m$DJANGO_PASS\e[0m" +} >>~/netbox.creds msg_ok "Setup Django Admin" motd_ssh diff --git a/install/nextcloudpi-install.sh b/install/nextcloudpi-install.sh index 2827dcc07..fb1197882 100644 --- a/install/nextcloudpi-install.sh +++ b/install/nextcloudpi-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.turnkeylinux.org/nextcloud -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/nextpvr-install.sh b/install/nextpvr-install.sh index eaae0eb20..174e618a7 100644 --- a/install/nextpvr-install.sh +++ b/install/nextpvr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nextpvr.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -18,8 +18,6 @@ $STD apt-get install -y \ mediainfo \ libmediainfo-dev \ libc6 \ - curl \ - sudo \ libgdiplus \ acl \ dvb-tools \ diff --git a/install/nginxproxymanager-install.sh b/install/nginxproxymanager-install.sh index c9d654db8..711bbb452 100644 --- a/install/nginxproxymanager-install.sh +++ b/install/nginxproxymanager-install.sh @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get update $STD apt-get -y install \ - sudo \ - mc \ - curl \ gnupg \ make \ gcc \ @@ -140,7 +137,7 @@ fi mkdir -p /app/global /app/frontend/images cp -r backend/* /app cp -r global/* /app/global -msg_ok "Set up Enviroment" +msg_ok "Set up Environment" msg_info "Building Frontend" cd ./frontend diff --git a/install/nocodb-install.sh b/install/nocodb-install.sh index 072bbdcff..da3829af4 100644 --- a/install/nocodb-install.sh +++ b/install/nocodb-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.nocodb.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/node-red-install.sh b/install/node-red-install.sh index 2d96ab37b..1c176501a 100644 --- a/install/node-red-install.sh +++ b/install/node-red-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nodered.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y ca-certificates $STD apt-get install -y gnupg diff --git a/install/nodebb-install.sh b/install/nodebb-install.sh index 3fca6f68d..3318ede46 100644 --- a/install/nodebb-install.sh +++ b/install/nodebb-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/NodeBB/NodeBB -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,15 +15,12 @@ update_os msg_info "Installing Dependencies (Patience)" $STD apt-get install -y \ - build-essential \ - curl \ - sudo \ - make \ - redis-server \ - expect \ - gnupg \ - ca-certificates \ - mc + build-essential \ + make \ + redis-server \ + expect \ + gnupg \ + ca-certificates msg_ok "Installed Dependencies" msg_info "Setting up Node.js & MongoDB Repository" @@ -32,7 +29,7 @@ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dea echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg --dearmor -o /etc/apt/keyrings/mongodb-server-8.0.gpg -echo "deb [arch=amd64,arm64 signed-by=/etc/apt/keyrings/mongodb-server-8.0.gpg] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-8.0.list +echo "deb [arch=amd64,arm64 signed-by=/etc/apt/keyrings/mongodb-server-8.0.gpg] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" >/etc/apt/sources.list.d/mongodb-org-8.0.list $STD apt-get update msg_ok "Set up Repositories" @@ -44,7 +41,7 @@ msg_info "Installing MongoDB" $STD apt-get install -y mongodb-org systemctl enable -q --now mongod sleep 10 # MongoDB needs some secounds to start, if not sleep it collide with following mongosh -msg_ok "Installed MongoDB" +msg_ok "Installed MongoDB" msg_info "Configure MongoDB" MONGO_ADMIN_USER="admin" @@ -58,9 +55,9 @@ NODEBB_SECRET=$(uuidgen) echo "Mongo Database User: $MONGO_ADMIN_USER" echo "Mongo Database Password: $MONGO_ADMIN_PWD" echo "NodeBB User: $NODEBB_USER" - echo "NodeBB Password: $NODEBB_PWD" - echo "NodeBB Secret: $NODEBB_SECRET" -} >> ~/nodebb.creds + echo "NodeBB Password: $NODEBB_PWD" + echo "NodeBB Secret: $NODEBB_SECRET" +} >>~/nodebb.creds $STD mongosh <> /etc/mongod.conf' systemctl restart mongod -msg_ok "MongoDB successfully configurated" +msg_ok "MongoDB successfully configurated" -msg_info "Install NodeBB" +msg_info "Install NodeBB" cd /opt RELEASE=$(curl -s https://api.github.com/repos/NodeBB/NodeBB/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') wget -q "https://github.com/NodeBB/NodeBB/archive/refs/tags/v${RELEASE}.zip" @@ -95,7 +92,7 @@ unzip -q v${RELEASE}.zip mv NodeBB-${RELEASE} /opt/nodebb cd /opt/nodebb touch pidfile -expect < /dev/null 2>&1 +expect </dev/null 2>&1 log_file /dev/null set timeout -1 @@ -161,4 +158,4 @@ msg_info "Cleaning up" rm -R /opt/v${RELEASE}.zip $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/notifiarr-install.sh b/install/notifiarr-install.sh index 9cb0414a1..ef92da4bc 100644 --- a/install/notifiarr-install.sh +++ b/install/notifiarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://notifiarr.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/npmplus-install.sh b/install/npmplus-install.sh new file mode 100644 index 000000000..64fbe6bdc --- /dev/null +++ b/install/npmplus-install.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/ZoeyVid/NPMplus + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apk add \ + newt \ + curl \ + openssh \ + tzdata \ + nano \ + gawk \ + yq \ + mc +msg_ok "Installed Dependencies" + +msg_info "Installing Docker & Compose" +$STD apk add docker +$STD rc-service docker start +$STD rc-update add docker default + +get_latest_release() { + curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4 +} +DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose") +DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} +mkdir -p $DOCKER_CONFIG/cli-plugins +curl -sSL https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_LATEST_VERSION/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose +chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose +msg_ok "Installed Docker & Compose" + +msg_info "Fetching NPMplus" +cd /opt +wget -q https://raw.githubusercontent.com/ZoeyVid/NPMplus/refs/heads/develop/compose.yaml +msg_ok "Fetched NPMplus" + +attempts=0 +while true; do + read -r -p "Enter your TZ Identifier (e.g., Europe/Berlin): " TZ_INPUT + if validate_tz "$TZ_INPUT"; then + break + fi + msg_error "Invalid timezone! Please enter a valid TZ identifier." + + attempts=$((attempts + 1)) + if [[ "$attempts" -ge 3 ]]; then + msg_error "Maximum attempts reached. Exiting." + exit 1 + fi +done + +read -r -p "Enter your ACME Email: " ACME_EMAIL_INPUT + +yq -i " + .services.npmplus.environment |= + (map(select(. != \"TZ=*\" and . != \"ACME_EMAIL=*\")) + + [\"TZ=$TZ_INPUT\", \"ACME_EMAIL=$ACME_EMAIL_INPUT\"]) +" /opt/compose.yaml + +msg_info "Building and Starting NPMplus (Patience)" +$STD docker compose up -d +CONTAINER_ID="" +for i in {1..60}; do + CONTAINER_ID=$(docker ps --filter "name=npmplus" --format "{{.ID}}") + if [[ -n "$CONTAINER_ID" ]]; then + STATUS=$(docker inspect --format '{{.State.Health.Status}}' "$CONTAINER_ID" 2>/dev/null || echo "starting") + if [[ "$STATUS" == "healthy" ]]; then + msg_ok "NPMplus is running and healthy" + break + elif [[ "$STATUS" == "unhealthy" ]]; then + msg_error "NPMplus container is unhealthy! Check logs." + docker logs "$CONTAINER_ID" + exit 1 + fi + fi + sleep 2 + [[ $i -eq 60 ]] && msg_error "NPMplus container did not become healthy within 120s." && docker logs "$CONTAINER_ID" && exit 1 +done +msg_ok "Builded and started NPMplus" + +motd_ssh +customize + +msg_info "Retrieving Default Login (Patience)" +PASSWORD_FOUND=0 +for i in {1..60}; do + PASSWORD_LINE=$(docker logs "$CONTAINER_ID" 2>&1 | grep -m1 "Creating a new user:") + if [[ -n "$PASSWORD_LINE" ]]; then + PASSWORD=$(echo "$PASSWORD_LINE" | awk -F 'password: ' '{print $2}') + echo -e "username: admin@example.org\npassword: $PASSWORD" >/opt/.npm_pwd + msg_ok "Saved default login to /opt/.npm_pwd" + PASSWORD_FOUND=1 + break + fi + sleep 2 +done + +if [[ $PASSWORD_FOUND -eq 0 ]]; then + msg_ok "No default login found, use docker ps & docker logs for container password." +fi diff --git a/install/ntfy-install.sh b/install/ntfy-install.sh index a433dfdeb..a1919785c 100644 --- a/install/ntfy-install.sh +++ b/install/ntfy-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ntfy.sh/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,7 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y curl $STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y apt-transport-https $STD apt-get install -y wget diff --git a/install/nxwitness-install.sh b/install/nxwitness-install.sh index 625e81fb0..c5728d430 100644 --- a/install/nxwitness-install.sh +++ b/install/nxwitness-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ make \ net-tools \ ffmpeg \ @@ -46,4 +43,4 @@ msg_info "Cleaning up" rm -f /tmp/nxwitness-server-$RELEASE-linux_x64.deb $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/nzbget-install.sh b/install/nzbget-install.sh index 7a8578805..2a5ad22ff 100644 --- a/install/nzbget-install.sh +++ b/install/nzbget-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nzbget.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/octoprint-install.sh b/install/octoprint-install.sh index ab64331d9..37d3c1999 100644 --- a/install/octoprint-install.sh +++ b/install/octoprint-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://octoprint.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y libyaml-dev $STD apt-get install -y build-essential @@ -39,11 +36,11 @@ msg_info "Creating user octoprint" useradd -m -s /bin/bash -p $(openssl passwd -1 octoprint) octoprint usermod -aG sudo,tty,dialout octoprint chown -R octoprint:octoprint /opt -echo "octoprint ALL=NOPASSWD: $(command -v systemctl) restart octoprint, $(command -v reboot), $(command -v poweroff)" > /etc/sudoers.d/octoprint +echo "octoprint ALL=NOPASSWD: $(command -v systemctl) restart octoprint, $(command -v reboot), $(command -v poweroff)" >/etc/sudoers.d/octoprint msg_ok "Created user octoprint" msg_info "Installing OctoPrint" -$STD sudo -u octoprint bash << EOF +$STD sudo -u octoprint bash <"/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.gpg" - cat </etc/apt/sources.list.d/openmediavault.list deb [signed-by=/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.gpg] http://packages.openmediavault.org/public sandworm main EOF diff --git a/install/onedev-install.sh b/install/onedev-install.sh index e8cca3a24..885ba5572 100644 --- a/install/onedev-install.sh +++ b/install/onedev-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - mc \ - sudo \ default-jdk \ git \ git-lfs \ @@ -25,7 +22,6 @@ $STD apt-get install -y \ openssh-server msg_ok "Installed Dependencies" - msg_info "Installing OneDev" cd /opt wget -q https://code.onedev.io/onedev/server/~site/onedev-latest.tar.gz diff --git a/install/openhab-install.sh b/install/openhab-install.sh index 1ee4e5c7e..9750f036c 100644 --- a/install/openhab-install.sh +++ b/install/openhab-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.openhab.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gnupg $STD apt-get install -y apt-transport-https $STD apt-get install -y wget @@ -35,7 +32,7 @@ msg_info "Installing openHAB" curl -fsSL "https://openhab.jfrog.io/artifactory/api/gpg/key/public" | gpg --dearmor >openhab.gpg mv openhab.gpg /usr/share/keyrings chmod u=rw,g=r,o=r /usr/share/keyrings/openhab.gpg -echo "deb [signed-by=/usr/share/keyrings/openhab.gpg] https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main" > /etc/apt/sources.list.d/openhab.list +echo "deb [signed-by=/usr/share/keyrings/openhab.gpg] https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main" >/etc/apt/sources.list.d/openhab.list $STD apt update $STD apt-get -y install openhab systemctl daemon-reload diff --git a/install/openobserve-install.sh b/install/openobserve-install.sh index df6976e33..d666641f9 100644 --- a/install/openobserve-install.sh +++ b/install/openobserve-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://openobserve.ai/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/openwebui-install.sh b/install/openwebui-install.sh index 81638b581..9c6605f9f 100644 --- a/install/openwebui-install.sh +++ b/install/openwebui-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://openwebui.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ gpg \ git \ ffmpeg \ diff --git a/install/outline-install.sh b/install/outline-install.sh index 436f4aadf..5ac07bcc5 100644 --- a/install/outline-install.sh +++ b/install/outline-install.sh @@ -15,13 +15,10 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ -curl \ -sudo \ -mc \ -gnupg \ -mkcert \ -git \ -redis + gnupg \ + mkcert \ + git \ + redis msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" @@ -103,4 +100,4 @@ msg_info "Cleaning up" rm -rf $temp_file $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/overseerr-install.sh b/install/overseerr-install.sh index 68de84fb5..34ba2c100 100644 --- a/install/overseerr-install.sh +++ b/install/overseerr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://overseerr.dev/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y ca-certificates $STD apt-get install -y gnupg diff --git a/install/owncast-install.sh b/install/owncast-install.sh index e7779bcf2..1cf459eb1 100644 --- a/install/owncast-install.sh +++ b/install/owncast-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://owncast.online/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies (Patience)" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y ffmpeg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/pairdrop-install.sh b/install/pairdrop-install.sh index 0cb79acbd..6971366ed 100644 --- a/install/pairdrop-install.sh +++ b/install/pairdrop-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://pairdrop.net/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y gpg $STD apt-get install -y wget diff --git a/install/paperless-ai-install.sh b/install/paperless-ai-install.sh index 6bba0bf0d..c9513997e 100644 --- a/install/paperless-ai-install.sh +++ b/install/paperless-ai-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/clusterzx/paperless-ai -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,10 +15,7 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ - gpg \ + gpg \ make \ gcc \ g++ \ diff --git a/install/paperless-gpt-install.sh b/install/paperless-gpt-install.sh index 44394c289..f8ed8b0f3 100644 --- a/install/paperless-gpt-install.sh +++ b/install/paperless-gpt-install.sh @@ -2,7 +2,7 @@ # Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/icereed/paperless-gpt source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - sudo \ - curl \ - mc \ gcc \ gnupg \ ca-certificates \ diff --git a/install/paperless-ngx-install.sh b/install/paperless-ngx-install.sh index 8ca48e530..c1653bb14 100644 --- a/install/paperless-ngx-install.sh +++ b/install/paperless-ngx-install.sh @@ -32,12 +32,12 @@ $STD apt-get install -y \ libtool \ pkg-config \ git \ - curl \ libtiff-dev \ libpng-dev \ libleptonica-dev \ sudo \ mc \ + curl \ wget \ openssh-server msg_ok "Installed Dependencies" @@ -224,7 +224,7 @@ EOF sed -i -e 's/rights="none" pattern="PDF"/rights="read|write" pattern="PDF"/' /etc/ImageMagick-6/policy.xml systemctl daemon-reload -$STD systemctl enable -q --now paperless-webserver paperless-scheduler paperless-task-queue paperless-consumer +$STD systemctl enable -q --now paperless-webserver paperless-scheduler paperless-task-queue paperless-consumer msg_ok "Created Services" motd_ssh diff --git a/install/part-db-install.sh b/install/part-db-install.sh index deedf3c25..48c2dc59a 100644 --- a/install/part-db-install.sh +++ b/install/part-db-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.part-db.de/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,10 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ - zip \ ca-certificates \ software-properties-common \ apt-transport-https \ @@ -31,6 +27,12 @@ $STD apt-get install -y \ openssh-server msg_ok "Installed Dependencies" +msg_info "Setting up PHP" +PHPVER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";') +sed -i "s@post_max_size = 8M@post_max_size = 100M@g" /etc/php/${PHPVER}/apache2/php.ini +sed -i "s@upload_max_filesize = 2M@upload_max_filesize = 100M@g" /etc/php/${PHPVER}/apache2/php.ini +msg_ok "Setting up PHP" + msg_info "Setting up PostgreSQL" DB_NAME=partdb DB_USER=partdb @@ -38,11 +40,11 @@ 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 "Part-DB Credentials" -echo "Part-DB Database User: $DB_USER" -echo "Part-DB Database Password: $DB_PASS" -echo "Part-DB Database Name: $DB_NAME" -} >> ~/partdb.creds + echo "Part-DB Credentials" + echo "Part-DB Database User: $DB_USER" + echo "Part-DB Database Password: $DB_PASS" + echo "Part-DB Database Name: $DB_NAME" +} >>~/partdb.creds msg_ok "Set up PostgreSQL" msg_info "Setting up Node.js/Yarn" @@ -71,14 +73,14 @@ $STD composer install --no-dev -o --no-interaction $STD yarn install $STD yarn build $STD php bin/console cache:clear -php bin/console doctrine:migrations:migrate -n > ~/database-migration-output +php bin/console doctrine:migrations:migrate -n >~/database-migration-output chown -R www-data:www-data /opt/partdb ADMIN_PASS=$(grep -oP 'The initial password for the "admin" user is: \K\w+' ~/database-migration-output) { -echo "" -echo "Part-DB Admin User: admin" -echo "Part-DB Admin Password: $ADMIN_PASS" -} >> ~/partdb.creds + echo "" + echo "Part-DB Admin User: admin" + echo "Part-DB Admin Password: $ADMIN_PASS" +} >>~/partdb.creds echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Part-DB" diff --git a/install/paymenter-install.sh b/install/paymenter-install.sh index 1dbcecf7d..53c6d5a52 100644 --- a/install/paymenter-install.sh +++ b/install/paymenter-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ git \ software-properties-common \ apt-transport-https \ @@ -54,7 +51,7 @@ mysql -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' W echo "Database: $DB_NAME" echo "Username: $DB_USER" echo "Password: $DB_PASS" -} >> ~/paymenter_db.creds +} >>~/paymenter_db.creds cp .env.example .env $STD composer install --no-dev --optimize-autoloader --no-interaction $STD php artisan key:generate --force diff --git a/install/peanut-install.sh b/install/peanut-install.sh index f0538d18b..8bc3c2fca 100644 --- a/install/peanut-install.sh +++ b/install/peanut-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Brandawg93/PeaNUT/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/pelican-panel-install.sh b/install/pelican-panel-install.sh index 909b63689..604683bf3 100644 --- a/install/pelican-panel-install.sh +++ b/install/pelican-panel-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/pelican-dev/panel -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ lsb-release \ mariadb-server \ mariadb-client \ @@ -48,11 +45,11 @@ $STD mysql -u root -e "CREATE DATABASE $DB_NAME;" $STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" { - echo "Pelican Panel-Credentials" - echo "Pelican Panel Database User: $DB_USER" - echo "Pelican Panel Database Password: $DB_PASS" - echo "Pelican Panel Database Name: $DB_NAME" -} >> ~/pelican-panel.creds + echo "Pelican Panel-Credentials" + echo "Pelican Panel Database User: $DB_USER" + echo "Pelican Panel Database Password: $DB_PASS" + echo "Pelican Panel Database Name: $DB_NAME" +} >>~/pelican-panel.creds msg_ok "Set up MariaDB" msg_info "Installing Pelican Panel" diff --git a/install/pelican-wings-install.sh b/install/pelican-wings-install.sh index 9b917eef6..35dfc124a 100644 --- a/install/pelican-wings-install.sh +++ b/install/pelican-wings-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/pelican-dev/wings -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,13 +13,6 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc -msg_ok "Installed Dependencies" - msg_info "Installing Docker" DOCKER_CONFIG_PATH='/etc/docker/daemon.json' mkdir -p $(dirname $DOCKER_CONFIG_PATH) diff --git a/install/petio-install.sh b/install/petio-install.sh index 2eed1ba14..a0d791c9b 100644 --- a/install/petio-install.sh +++ b/install/petio-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://petio.tv/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -28,9 +28,9 @@ wget -qO- https://www.mongodb.org/static/pgp/server-4.4.asc | gpg --dearmor >/us OS_ID=$(grep '^ID=' /etc/os-release | cut -d'=' -f2) if [ "$OS_ID" = "debian" ]; then -echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-4.4.gpg ] http://repo.mongodb.org/apt/debian $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/4.4 main" > /etc/apt/sources.list.d/mongodb-org-4.4.list + echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-4.4.gpg ] http://repo.mongodb.org/apt/debian $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/4.4 main" >/etc/apt/sources.list.d/mongodb-org-4.4.list else -echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-4.4.gpg ] https://repo.mongodb.org/apt/ubuntu $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/4.4 multiverse" > /etc/apt/sources.list.d/mongodb-org-4.4.list + echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-4.4.gpg ] https://repo.mongodb.org/apt/ubuntu $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/4.4 multiverse" >/etc/apt/sources.list.d/mongodb-org-4.4.list fi $STD apt-get update @@ -39,7 +39,6 @@ sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf systemctl enable -q --now mongod.service msg_ok "MongoDB 4.4 Installed" - msg_info "Installing Petio" useradd -M --shell=/bin/false petio mkdir /opt/Petio @@ -70,7 +69,6 @@ EOF systemctl enable -q --now petio.service msg_ok "Created Service" - motd_ssh customize diff --git a/install/pf2etools-install.sh b/install/pf2etools-install.sh index 06c937172..7cf2ac9a8 100644 --- a/install/pf2etools-install.sh +++ b/install/pf2etools-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - mc \ - sudo \ apache2 \ gpg \ ca-certificates \ @@ -50,7 +47,7 @@ echo "${RELEASE}" >/opt/Pf2eTools_version.txt msg_ok "Set up Pf2eTools" msg_info "Creating Service" -cat <> /etc/apache2/apache2.conf +cat <>/etc/apache2/apache2.conf SetHandler server-status Order deny,allow @@ -70,4 +67,4 @@ $STD apt-get -y autoclean msg_ok "Cleaned" motd_ssh -customize \ No newline at end of file +customize diff --git a/install/photoprism-install.sh b/install/photoprism-install.sh index 0e17f9adb..eb4284f64 100644 --- a/install/photoprism-install.sh +++ b/install/photoprism-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.photoprism.app/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies (Patience)" $STD apt-get install -y \ - curl \ - sudo \ - mc \ exiftool \ ffmpeg \ libheif1 \ diff --git a/install/phpipam-install.sh b/install/phpipam-install.sh index d4d0ca8ac..327bb047c 100644 --- a/install/phpipam-install.sh +++ b/install/phpipam-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://phpipam.net/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -39,7 +39,7 @@ $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH echo "phpIPAM Database User: $DB_USER" echo "phpIPAM Database Password: $DB_PASS" echo "phpIPAM Database Name: $DB_NAME" -} >> ~/phpipam.creds +} >>~/phpipam.creds msg_ok "Set up MariaDB" msg_info "Installing phpIPAM" @@ -47,13 +47,13 @@ RELEASE=$(curl -s https://api.github.com/repos/phpipam/phpipam/releases/latest | cd /opt wget -q "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip" unzip -q "phpipam-v${RELEASE}.zip" -mysql -u root "${DB_NAME}" < /opt/phpipam/db/SCHEMA.sql +mysql -u root "${DB_NAME}" /opt/${APPLICATION}_version.txt msg_ok "Installed phpIPAM" diff --git a/install/pialert-install.sh b/install/pialert-install.sh index 79bf917aa..e6e950e43 100644 --- a/install/pialert-install.sh +++ b/install/pialert-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/leiweibau/Pi.Alert/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get -y install \ - sudo \ - mc \ - curl \ apt-utils \ avahi-utils \ lighttpd \ @@ -29,7 +26,6 @@ $STD apt-get -y install \ nbtscan \ libwww-perl \ nmap \ - zip \ aria2 \ wakeonlan \ wget \ @@ -77,7 +73,7 @@ touch /opt/pialert/log/pialert.vendors.log /opt/pialert/log/pialert.IP.log /opt/ src_dir="/opt/pialert/log" dest_dir="/opt/pialert/front/php/server" for file in pialert.vendors.log pialert.IP.log pialert.1.log pialert.cleanup.log pialert.webservices.log; do - ln -s "$src_dir/$file" "$dest_dir/$file" + ln -s "$src_dir/$file" "$dest_dir/$file" done sed -i 's#PIALERT_PATH\s*=\s*'\''/home/pi/pialert'\''#PIALERT_PATH = '\''/opt/pialert'\''#' /opt/pialert/config/pialert.conf sed -i 's/$HOME/\/opt/g' /opt/pialert/install/pialert.cron diff --git a/install/pingvin-install.sh b/install/pingvin-install.sh index ab350e288..cbc12d937 100644 --- a/install/pingvin-install.sh +++ b/install/pingvin-install.sh @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ git \ gnupg \ wget \ diff --git a/install/plant-it-install.sh b/install/plant-it-install.sh new file mode 100644 index 000000000..8b6de905c --- /dev/null +++ b/install/plant-it-install.sh @@ -0,0 +1,142 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://plant-it.org/ + +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 \ + gnupg2 \ + mariadb-server \ + redis \ + nginx +msg_ok "Installed Dependencies" + +msg_info "Setting up Adoptium Repository" +mkdir -p /etc/apt/keyrings +wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg +echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list +$STD apt-get update +msg_ok "Set up Adoptium Repository" + +msg_info "Installing Temurin JDK 21 (LTS)" +$STD apt-get install -y temurin-21-jdk +msg_ok "Setup Temurin JDK 21 (LTS)" + +msg_info "Setting up MariaDB" +JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=') +DB_NAME=plantit +DB_USER=plantit_usr +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +$STD mysql -u root -e "CREATE DATABASE $DB_NAME;" +$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" +$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" +{ + echo "Plant-it Credentials" + echo "Plant-it Database User: $DB_USER" + echo "Plant-it Database Password: $DB_PASS" + echo "Plant-it Database Name: $DB_NAME" +} >>~/plant-it.creds +msg_ok "Set up MariaDB" + +msg_info "Setup Plant-it" +RELEASE=$(curl -s https://api.github.com/repos/MDeLuise/plant-it/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +wget -q https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/server.jar +mkdir -p /opt/plant-it/{backend,frontend} +mkdir -p /opt/plant-it-data +mv -f server.jar /opt/plant-it/backend/server.jar + +cat </opt/plant-it/backend/server.env +MYSQL_HOST=localhost +MYSQL_PORT=3306 +MYSQL_USERNAME=$DB_USER +MYSQL_PSW=$DB_PASS +MYSQL_DATABASE=$DB_NAME +MYSQL_ROOT_PASSWORD=$DB_PASS + +JWT_SECRET=$JWT_SECRET +JWT_EXP=1 + +USERS_LIMIT=-1 +UPLOAD_DIR=/opt/plant-it-data +API_PORT=8080 +FLORACODEX_KEY= +LOG_LEVEL=DEBUG +ALLOWED_ORIGINS=* + +CACHE_TYPE=redis +CACHE_TTL=86400 +CACHE_HOST=localhost +CACHE_PORT=6379 +EOF + +cd /opt/plant-it/frontend +wget -q https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/client.tar.gz +tar -xzf client.tar.gz +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Setup Plant-it" + +msg_info "Creating Service" +cat </etc/systemd/system/plant-it.service +[Unit] +Description=Plant-it Backend Service +After=syslog.target network.target + +[Service] +Type=simple +WorkingDirectory=/opt/plant-it/backend +EnvironmentFile=/opt/plant-it/backend/server.env +ExecStart=/usr/bin/java -jar -Xmx2g server.jar +TimeoutStopSec=20 +KillMode=process +Restart=on-failure + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable --now -q plant-it + +cat </etc/nginx/nginx.conf +events { + worker_connections 1024; +} + +http { + server { + listen 3000; + server_name localhost; + + root /opt/plant-it/frontend; + index index.html; + + location / { + try_files \$uri \$uri/ /index.html; + } + + error_page 404 /404.html; + location = /404.html { + internal; + } + } +} +EOF +systemctl restart nginx +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /opt/plant-it/frontend/client.tar.gz +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/install/plex-install.sh b/install/plex-install.sh index c86655bc6..9e05c56cc 100644 --- a/install/plex-install.sh +++ b/install/plex-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.plex.tv/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/pocketbase-install.sh b/install/pocketbase-install.sh index b7a7aec9f..980308941 100644 --- a/install/pocketbase-install.sh +++ b/install/pocketbase-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://pocketbase.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/pocketid-install.sh b/install/pocketid-install.sh index 167c831bb..df2534e73 100644 --- a/install/pocketid-install.sh +++ b/install/pocketid-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/pocket-id/pocket-id -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ gpg \ caddy \ gcc @@ -57,7 +54,7 @@ cd /opt/pocket-id/backend cp .env.example .env sed -i "s/PUBLIC_APP_URL=http:\/\/localhost/PUBLIC_APP_URL=https:\/\/${public_url}/" .env cd cmd -CGO_ENABLED=1 +CGO_ENABLED=1 GOOS=linux $STD go build -o ../pocket-id-backend diff --git a/install/podman-homeassistant-install.sh b/install/podman-homeassistant-install.sh index 702dae1f4..e6b4a74e3 100644 --- a/install/podman-homeassistant-install.sh +++ b/install/podman-homeassistant-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.home-assistant.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -28,15 +28,15 @@ get_latest_release() { PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer") PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent") -if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then - msg_info "Enabling ZFS support." - mkdir -p /etc/containers - cat <<'EOF' >/usr/local/bin/overlayzfsmount +if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then + msg_info "Enabling ZFS support." + mkdir -p /etc/containers + cat <<'EOF' >/usr/local/bin/overlayzfsmount #!/bin/sh exec /bin/mount -t overlay overlay "$@" EOF - chmod +x /usr/local/bin/overlayzfsmount - cat <<'EOF' >/etc/containers/storage.conf + chmod +x /usr/local/bin/overlayzfsmount + cat <<'EOF' >/etc/containers/storage.conf [storage] driver = "overlay" runroot = "/run/containers/storage" @@ -54,7 +54,7 @@ fi msg_info "Installing Podman" $STD apt-get -y install podman $STD systemctl enable --now podman.socket -echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf +echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf msg_ok "Installed Podman" read -r -p "Would you like to add Portainer? " prompt diff --git a/install/podman-install.sh b/install/podman-install.sh index 3113ab2e0..48351504c 100644 --- a/install/podman-install.sh +++ b/install/podman-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://podman.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -28,15 +28,15 @@ get_latest_release() { PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer") PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent") -if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then - msg_info "Enabling ZFS support." - mkdir -p /etc/containers - cat <<'EOF' >/usr/local/bin/overlayzfsmount +if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then + msg_info "Enabling ZFS support." + mkdir -p /etc/containers + cat <<'EOF' >/usr/local/bin/overlayzfsmount #!/bin/sh exec /bin/mount -t overlay overlay "$@" EOF - chmod +x /usr/local/bin/overlayzfsmount - cat <<'EOF' >/etc/containers/storage.conf + chmod +x /usr/local/bin/overlayzfsmount + cat <<'EOF' >/etc/containers/storage.conf [storage] driver = "overlay" runroot = "/run/containers/storage" @@ -54,7 +54,7 @@ fi msg_info "Installing Podman" $STD apt-get -y install podman $STD systemctl enable --now podman.socket -echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf +echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf msg_ok "Installed Podman" read -r -p "Would you like to add Portainer? " prompt @@ -87,7 +87,6 @@ else fi fi - motd_ssh customize diff --git a/install/postgresql-install.sh b/install/postgresql-install.sh index 2862ce84b..f06edcff3 100644 --- a/install/postgresql-install.sh +++ b/install/postgresql-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.postgresql.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gnupg $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/privatebin-install.sh b/install/privatebin-install.sh index 512775c60..ddb04c091 100644 --- a/install/privatebin-install.sh +++ b/install/privatebin-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ nginx \ php8.2-fpm \ php8.2-{common,cli,gd,mbstring,xml,fpm,curl,zip} \ @@ -101,7 +98,7 @@ systemctl reload nginx msg_ok "Nginx Configured" msg_info "Cleaning up" -rm -rf /opt/privatebin/${RELEASE}.zip +rm -rf /opt/privatebin/${RELEASE}.zip rm -rf /opt/privatebin/PrivateBin-${RELEASE} $STD apt-get -y autoremove $STD apt-get -y autoclean diff --git a/install/projectsend-install.sh b/install/projectsend-install.sh index 50b168fdb..c0ff45c36 100644 --- a/install/projectsend-install.sh +++ b/install/projectsend-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.projectsend.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,13 +15,10 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ - mariadb-server \ - apache2 \ - libapache2-mod-php \ - php8.2-{pdo,mysql,mbstring,gettext,fileinfo,gd,xml,zip} + mariadb-server \ + apache2 \ + libapache2-mod-php \ + php8.2-{pdo,mysql,mbstring,gettext,fileinfo,gd,xml,zip} msg_ok "Installed Dependencies" msg_info "Setting up MariaDB" @@ -36,7 +33,7 @@ $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH echo "projectsend Database User: $DB_USER" echo "projectsend Database Password: $DB_PASS" echo "projectsend Database Name: $DB_NAME" -} >> ~/projectsend.creds +} >>~/projectsend.creds msg_ok "Set up MariaDB" msg_info "Installing projectsend" @@ -50,14 +47,14 @@ chown -R www-data:www-data /opt/projectsend chmod -R 775 /opt/projectsend chmod 644 /opt/projectsend/includes/sys.config.php sed -i -e "s/\(define('DB_NAME', \).*/\1'$DB_NAME');/" \ - -e "s/\(define('DB_USER', \).*/\1'$DB_USER');/" \ - -e "s/\(define('DB_PASSWORD', \).*/\1'$DB_PASS');/" \ - /opt/projectsend/includes/sys.config.php + -e "s/\(define('DB_USER', \).*/\1'$DB_USER');/" \ + -e "s/\(define('DB_PASSWORD', \).*/\1'$DB_PASS');/" \ + /opt/projectsend/includes/sys.config.php sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \ - -e "s/^\(post_max_size = \).*/\1 256M/" \ - -e "s/^\(upload_max_filesize = \).*/\1 256M/" \ - -e "s/^\(max_execution_time = \).*/\1 300/" \ - /etc/php/8.2/apache2/php.ini + -e "s/^\(post_max_size = \).*/\1 256M/" \ + -e "s/^\(upload_max_filesize = \).*/\1 256M/" \ + -e "s/^\(max_execution_time = \).*/\1 300/" \ + /etc/php/8.2/apache2/php.ini echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed projectsend" diff --git a/install/prometheus-alertmanager-install.sh b/install/prometheus-alertmanager-install.sh index ad854ccdc..bac01b61d 100755 --- a/install/prometheus-alertmanager-install.sh +++ b/install/prometheus-alertmanager-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://prometheus.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,13 +13,6 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc -msg_ok "Installed Dependencies" - msg_info "Installing Prometheus Alertmanager" RELEASE=$(curl -s https://api.github.com/repos/prometheus/alertmanager/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') mkdir -p /etc/alertmanager diff --git a/install/prometheus-install.sh b/install/prometheus-install.sh index 7dc6d008b..09863a9fe 100644 --- a/install/prometheus-install.sh +++ b/install/prometheus-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://prometheus.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/prometheus-paperless-ngx-exporter-install.sh b/install/prometheus-paperless-ngx-exporter-install.sh index bb21e802a..a5c6f1163 100755 --- a/install/prometheus-paperless-ngx-exporter-install.sh +++ b/install/prometheus-paperless-ngx-exporter-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/hansmi/prometheus-paperless-exporter -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,20 +13,13 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc -msg_ok "Installed Dependencies" - msg_info "Installing Prometheus Paperless NGX Exporter" RELEASE=$(curl -s https://api.github.com/repos/hansmi/prometheus-paperless-exporter/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') wget -q https://github.com/hansmi/prometheus-paperless-exporter/releases/download/v${RELEASE}/prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz tar -xf prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz mv prometheus-paperless-exporter_${RELEASE}_linux_amd64/prometheus-paperless-exporter /usr/local/bin/ mkdir -p /etc/prometheus-paperless-ngx-exporter -cat < /etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file +cat </etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file SECRET_AUTH_TOKEN EOF echo "${RELEASE}" >/opt/${APPLICATION}_version.txt diff --git a/install/prometheus-pve-exporter-install.sh b/install/prometheus-pve-exporter-install.sh index ecbeb000a..b2ccef80d 100644 --- a/install/prometheus-pve-exporter-install.sh +++ b/install/prometheus-pve-exporter-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/prometheus-pve/prometheus-pve-exporter -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,13 +13,6 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc -msg_ok "Installed Dependencies" - msg_info "Setup Python3" $STD apt-get install -y \ python3 \ @@ -30,7 +23,7 @@ msg_ok "Setup Python3" msg_info "Installing Prometheus Proxmox VE Exporter" python3 -m pip install --default-timeout=300 --quiet --root-user-action=ignore prometheus-pve-exporter mkdir -p /opt/prometheus-pve-exporter -cat < /opt/prometheus-pve-exporter/pve.yml +cat </opt/prometheus-pve-exporter/pve.yml default: user: prometheus@pve password: sEcr3T! diff --git a/install/prowlarr-install.sh b/install/prowlarr-install.sh index bb53de025..052bc5ef3 100644 --- a/install/prowlarr-install.sh +++ b/install/prowlarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://prowlarr.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y sqlite3 $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/proxmox-backup-server-install.sh b/install/proxmox-backup-server-install.sh index e9197216f..7f454e8c8 100644 --- a/install/proxmox-backup-server-install.sh +++ b/install/proxmox-backup-server-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.proxmox.com/en/proxmox-backup-server -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/proxmox-datacenter-manager-install.sh b/install/proxmox-datacenter-manager-install.sh index e723256a5..ef2ef9153 100644 --- a/install/proxmox-datacenter-manager-install.sh +++ b/install/proxmox-datacenter-manager-install.sh @@ -38,4 +38,4 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/proxmox-mail-gateway-install.sh b/install/proxmox-mail-gateway-install.sh index d893aa94f..e16e25f50 100644 --- a/install/proxmox-mail-gateway-install.sh +++ b/install/proxmox-mail-gateway-install.sh @@ -13,18 +13,10 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get -y install \ - curl \ - sudo \ - mc \ - wget -msg_ok "Installed Dependencies" - msg_info "Installing Proxmox Mail Gateway" wget -q https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg -echo "deb http://download.proxmox.com/debian/pmg bookworm pmg-no-subscription" > /etc/apt/sources.list.d/pmg.list -$STD apt-get update +echo "deb http://download.proxmox.com/debian/pmg bookworm pmg-no-subscription" >/etc/apt/sources.list.d/pmg.list +$STD apt-get update $STD apt-get -y install proxmox-mailgateway-container msg_ok "Installed Proxmox Mail Gateway" diff --git a/install/ps5-mqtt-install.sh b/install/ps5-mqtt-install.sh index be880e463..3dd055f98 100644 --- a/install/ps5-mqtt-install.sh +++ b/install/ps5-mqtt-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/FunkeyFlo/ps5-mqtt/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ jq \ ca-certificates \ gnupg @@ -35,7 +32,6 @@ $STD apt-get install -y nodejs $STD npm i -g playactor msg_ok "Installed Node.js" - msg_info "Installing PS5-MQTT" RELEASE=$(curl -s https://api.github.com/repos/FunkeyFlo/ps5-mqtt/releases/latest | jq -r '.tag_name') wget -P /tmp -q https://github.com/FunkeyFlo/ps5-mqtt/archive/refs/tags/${RELEASE}.tar.gz @@ -44,13 +40,13 @@ mv /opt/ps5-mqtt-* /opt/ps5-mqtt cd /opt/ps5-mqtt/ps5-mqtt/ $STD npm install $STD npm run build -echo ${RELEASE} > /opt/ps5-mqtt_version.txt +echo ${RELEASE} >/opt/ps5-mqtt_version.txt msg_ok "Installed PS5-MQTT" msg_info "Creating Service" mkdir -p /opt/.config/ps5-mqtt/ mkdir -p /opt/.config/ps5-mqtt/playactor -cat < /opt/.config/ps5-mqtt/config.json +cat </opt/.config/ps5-mqtt/config.json { "mqtt": { "host": "", diff --git a/install/pterodactyl-panel-install.sh b/install/pterodactyl-panel-install.sh index b0f6f7253..89e75298f 100644 --- a/install/pterodactyl-panel-install.sh +++ b/install/pterodactyl-panel-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/pterodactyl/panel -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ lsb-release \ redis \ mariadb-server \ @@ -49,11 +46,11 @@ $STD mysql -u root -e "CREATE DATABASE $DB_NAME;" $STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" { - echo "pterodactyl Panel-Credentials" - echo "pterodactyl Panel Database User: $DB_USER" - echo "pterodactyl Panel Database Password: $DB_PASS" - echo "pterodactyl Panel Database Name: $DB_NAME" -} >> ~/pterodactyl-panel.creds + echo "pterodactyl Panel-Credentials" + echo "pterodactyl Panel Database User: $DB_USER" + echo "pterodactyl Panel Database Password: $DB_PASS" + echo "pterodactyl Panel Database Name: $DB_NAME" +} >>~/pterodactyl-panel.creds msg_ok "Set up MariaDB" read -p "Provide an email address for admin login, this should be a valid email address: " ADMIN_EMAIL @@ -72,18 +69,18 @@ ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) $STD composer install --no-dev --optimize-autoloader --no-interaction $STD php artisan key:generate --force $STD php artisan p:environment:setup --no-interaction --author $ADMIN_EMAIL --url "http://$IP" -$STD php artisan p:environment:database --no-interaction --database $DB_NAME --username $DB_USER --password $DB_PASS +$STD php artisan p:environment:database --no-interaction --database $DB_NAME --username $DB_USER --password $DB_PASS $STD php artisan migrate --seed --force --no-interaction $STD php artisan p:user:make --no-interaction --admin=1 --email "$ADMIN_EMAIL" --password "$ADMIN_PASS" --name-first "$NAME_FIRST" --name-last "$NAME_LAST" --username "admin" echo "* * * * * php /opt/pterodactyl-panel/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data - chown -R www-data:www-data /opt/pterodactyl-panel/* chmod -R 755 /opt/pterodactyl-panel/storage/* /opt/pterodactyl-panel/bootstrap/cache/ { - echo "" - echo "pterodactyl Admin Username: admin" - echo "pterodactyl Admin Email: $ADMIN_EMAIL" - echo "pterodactyl Admin Password: $ADMIN_PASS" -} >> ~/pterodactyl-panel.creds + echo "" + echo "pterodactyl Admin Username: admin" + echo "pterodactyl Admin Email: $ADMIN_EMAIL" + echo "pterodactyl Admin Password: $ADMIN_PASS" +} >>~/pterodactyl-panel.creds echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed pterodactyl Panel" diff --git a/install/pterodactyl-wings-install.sh b/install/pterodactyl-wings-install.sh index e610e5986..9eeceb16f 100644 --- a/install/pterodactyl-wings-install.sh +++ b/install/pterodactyl-wings-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/pterodactyl/wings -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -13,13 +13,6 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc -msg_ok "Installed Dependencies" - msg_info "Installing Docker" DOCKER_CONFIG_PATH='/etc/docker/daemon.json' mkdir -p $(dirname $DOCKER_CONFIG_PATH) diff --git a/install/qbittorrent-install.sh b/install/qbittorrent-install.sh index 8c70b7924..788e3d3ba 100644 --- a/install/qbittorrent-install.sh +++ b/install/qbittorrent-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.qbittorrent.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -21,26 +21,38 @@ $STD apt-get install -y wget $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" -msg_info "Installing qbittorrent-nox" -$STD apt-get install -y qbittorrent-nox -mkdir -p /.config/qBittorrent/ -cat </.config/qBittorrent/qBittorrent.conf +msg_info "Setup qBittorrent-nox" +FULLRELEASE=$(curl -s https://api.github.com/repos/userdocs/qbittorrent-nox-static/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +RELEASE=$(echo $FULLRELEASE | cut -c 9-13) +mkdir -p /opt/qbittorrent +curl -fsSL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${FULLRELEASE}/x86_64-qbittorrent-nox" -o /opt/qbittorrent/qbittorrent-nox +chmod +x /opt/qbittorrent/qbittorrent-nox +mkdir -p $HOME/.config/qBittorrent/ +cat <$HOME/.config/qBittorrent/qBittorrent.conf +[LegalNotice] +Accepted=true + [Preferences] WebUI\Password_PBKDF2="@ByteArray(amjeuVrF3xRbgzqWQmes5A==:XK3/Ra9jUmqUc4RwzCtrhrkQIcYczBl90DJw2rT8DFVTss4nxpoRhvyxhCf87ahVE3SzD8K9lyPdpyUCfmVsUg==)" WebUI\Port=8090 WebUI\UseUPnP=false WebUI\Username=admin EOF -msg_ok "qbittorrent-nox" +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Setup qBittorrent-nox" msg_info "Creating Service" cat </etc/systemd/system/qbittorrent-nox.service [Unit] Description=qBittorrent client After=network.target + [Service] -ExecStart=/usr/bin/qbittorrent-nox +Type=simple +User=root +ExecStart=/opt/qbittorrent/qbittorrent-nox Restart=always + [Install] WantedBy=multi-user.target EOF diff --git a/install/rabbitmq-install.sh b/install/rabbitmq-install.sh index 5159826fc..3d746b9dd 100644 --- a/install/rabbitmq-install.sh +++ b/install/rabbitmq-install.sh @@ -16,10 +16,8 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - sudo \ lsb-release \ - curl \ - gnupg \ + gnupg \ apt-transport-https \ make \ mc \ diff --git a/install/radarr-install.sh b/install/radarr-install.sh index e0bd4d8e5..f455aed44 100644 --- a/install/radarr-install.sh +++ b/install/radarr-install.sh @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y sqlite3 $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/radicale-install.sh b/install/radicale-install.sh index 39c7dbd69..ab6080059 100644 --- a/install/radicale-install.sh +++ b/install/radicale-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ apache2-utils \ python3-pip \ python3.11-venv diff --git a/install/readarr-install.sh b/install/readarr-install.sh index cdd88d04e..eca6c6b9a 100644 --- a/install/readarr-install.sh +++ b/install/readarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://readarr.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y sqlite3 $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/readeck-install.sh b/install/readeck-install.sh index a031348cc..0d0d0cbb3 100644 --- a/install/readeck-install.sh +++ b/install/readeck-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://readeck.org/en/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/recyclarr-install.sh b/install/recyclarr-install.sh index c6d8e72c1..05e980db3 100644 --- a/install/recyclarr-install.sh +++ b/install/recyclarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://recyclarr.dev/wiki/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,7 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl $STD apt-get install -y git $STD apt-get install -y sudo $STD apt-get install -y mc diff --git a/install/redis-install.sh b/install/redis-install.sh index a5828ea8b..5e55cfbad 100644 --- a/install/redis-install.sh +++ b/install/redis-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://redis.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y apt-transport-https $STD apt-get install -y gpg $STD apt-get install -y lsb-release diff --git a/install/revealjs-install.sh b/install/revealjs-install.sh index b827cafde..161c86313 100644 --- a/install/revealjs-install.sh +++ b/install/revealjs-install.sh @@ -14,11 +14,7 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc \ - gnupg +$STD apt-get install -y gnupg msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" diff --git a/install/rtsptoweb-install.sh b/install/rtsptoweb-install.sh index 899924f2f..b9dcd5dbe 100644 --- a/install/rtsptoweb-install.sh +++ b/install/rtsptoweb-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/deepch/RTSPtoWeb -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,8 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo $STD apt-get install -y git $STD apt-get install -y mc $STD apt-get install -y wget diff --git a/install/runtipi-install.sh b/install/runtipi-install.sh index 94535b32b..5f23ed462 100644 --- a/install/runtipi-install.sh +++ b/install/runtipi-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://runtipi.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -24,7 +24,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Runtipi (Patience)" DOCKER_CONFIG_PATH='/etc/docker/daemon.json' mkdir -p "$(dirname "$DOCKER_CONFIG_PATH")" -echo -e '{\n "log-driver": "journald"\n}' > "$DOCKER_CONFIG_PATH" +echo -e '{\n "log-driver": "journald"\n}' >"$DOCKER_CONFIG_PATH" cd /opt wget -q https://raw.githubusercontent.com/runtipi/runtipi/master/scripts/install.sh chmod +x install.sh diff --git a/install/rustdeskserver-install.sh b/install/rustdeskserver-install.sh index ba29a1d88..f29c52fbd 100644 --- a/install/rustdeskserver-install.sh +++ b/install/rustdeskserver-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/rustdesk/rustdesk-server -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -39,4 +39,4 @@ msg_info "Cleaning up" rm -rf $TEMPDIR $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/sabnzbd-install.sh b/install/sabnzbd-install.sh index 1b2f5b7e1..bc28e35c8 100644 --- a/install/sabnzbd-install.sh +++ b/install/sabnzbd-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sabnzbd.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y par2 $STD apt-get install -y p7zip-full $STD apt-get install -y wget diff --git a/install/seafile-install.sh b/install/seafile-install.sh new file mode 100644 index 000000000..81caf8e09 --- /dev/null +++ b/install/seafile-install.sh @@ -0,0 +1,285 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: dave-yap +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://seafile.com/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies (Patience)" +$STD apt-get install -y expect +msg_ok "Installed Dependencies" + +msg_info "Installing MariaDB" +$STD apt-get install -y mariadb-server +systemctl start mariadb +msg_ok "Installed MariaDB" + +msg_info "Setup MariaDB for Seafile" +CCNET_DB="ccnet_db" +SEAFILE_DB="seafile_db" +SEAHUB_DB="seahub_db" +DB_USER="seafile" +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) +ADMIN_EMAIL="admin@localhost.local" +ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) +sudo -u mysql mysql -s -e "CREATE DATABASE $CCNET_DB CHARACTER SET utf8;" +sudo -u mysql mysql -s -e "CREATE DATABASE $SEAFILE_DB CHARACTER SET utf8;" +sudo -u mysql mysql -s -e "CREATE DATABASE $SEAHUB_DB CHARACTER SET utf8;" +sudo -u mysql mysql -s -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';" +sudo -u mysql mysql -s -e "GRANT ALL PRIVILEGES ON $CCNET_DB.* TO '$DB_USER'@localhost;" +sudo -u mysql mysql -s -e "GRANT ALL PRIVILEGES ON $SEAFILE_DB.* TO '$DB_USER'@localhost;" +sudo -u mysql mysql -s -e "GRANT ALL PRIVILEGES ON $SEAHUB_DB.* TO '$DB_USER'@localhost;" +{ + echo "Application Credentials" + echo "CCNET_DB: $CCNET_DB" + echo "SEAFILE_DB: $SEAFILE_DB" + echo "SEAHUB_DB: $SEAHUB_DB" + echo "DB_USER: $DB_USER" + echo "DB_PASS: $DB_PASS" + echo "ADMIN_EMAIL: $ADMIN_EMAIL" + echo "ADMIN_PASS: $ADMIN_PASS" +} >>~/seafile.creds +msg_ok "MariaDB setup for Seafile" + +msg_info "Installing Seafile Python Dependencies" +$STD apt-get install -y \ + python3 \ + python3-dev \ + python3-setuptools \ + python3-pip \ + libmariadb-dev \ + ldap-utils \ + libldap2-dev \ + libsasl2-dev \ + pkg-config +$STD pip3 install \ + django \ + future \ + mysqlclient \ + pymysql \ + pillow \ + pylibmc \ + captcha \ + markupsafe \ + jinja2 \ + sqlalchemy \ + psd-tools \ + django-pylibmc \ + django_simple_captcha \ + djangosaml2 \ + pysaml2 \ + pycryptodome \ + cffi \ + lxml \ + python-ldap +msg_ok "Installed Seafile Python Dependecies" + +msg_info "Installing Seafile" +IP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1) +mkdir -p /opt/seafile +useradd seafile +mkdir -p /home/seafile +chown seafile: /home/seafile +chown seafile: /opt/seafile +$STD su - seafile -c "wget -qc https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_11.0.13_x86-64.tar.gz" +$STD su - seafile -c "tar -xzf seafile-server_11.0.13_x86-64.tar.gz -C /opt/seafile/" +$STD su - seafile -c "expect <>/opt/seafile/conf/seahub_settings.py +CACHES = { + 'default': { + 'BACKEND': 'django_pylibmc.memcached.PyLibMCCache', + 'LOCATION': '127.0.0.1:11211', + }, +} +EOF +msg_ok "Memcached Started" + +msg_info "Adjusting Conf files" +sed -i "0,/127.0.0.1/s/127.0.0.1/0.0.0.0/" /opt/seafile/conf/gunicorn.conf.py +sed -i "0,/SERVICE_URL = \"http:\/\/$IP\"/s/SERVICE_URL = \"http:\/\/$IP\"/SERVICE_URL = \"http:\/\/$IP:8000\"/" /opt/seafile/conf/seahub_settings.py +echo -e "\nFILE_SERVER_ROOT = \"http://$IP:8082\"" >>/opt/seafile/conf/seahub_settings.py +echo -e "CSRF_TRUSTED_ORIGINS = [\"http://$IP/\"]" >>/opt/seafile/conf/seahub_settings.py +echo -e "ALLOWED_HOSTS = [\"$IP\"]" >>/opt/seafile/conf/seahub_settings.py +echo -e "CSRF_TRUSTED_ORIGINS = ['http://$IP/']" >>/opt/seafile/conf/seahub_settings.py +msg_ok "Conf files adjusted" + +msg_info "Setting up Seafile" +$STD su - seafile -c "bash /opt/seafile/seafile-server-latest/seafile.sh start" +$STD su - seafile -c "expect </etc/systemd/system/seafile.service +[Unit] +Description=Seafile File-hosting +After=network.target mysql.service memcached.service +Wants=mysql.service memcached.service + +[Service] +Type=oneshot +User=seafile +Group=seafile +WorkingDirectory=/opt/seafile +RemainAfterExit=yes + +ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start +ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start +ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop +ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop + +Restart=on-failure +RestartSec=5s + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable --now -q seafile.service +msg_ok "Created Services" + +msg_info "Creating External Storage script" +cat <<'EOF' >~/external-storage.sh +#!/bin/bash +STORAGE_DIR="/path/to/your/external/storage" + +# Move the seafile-data folder to external storage +mv /opt/seafile/seafile-data $STORAGE_DIR/seafile-data + +# Create a symlink for access +ln -s $STORAGE_DIR/seafile-data /opt/seafile/seafile-data +EOF +chmod +x ~/external-storage.sh +msg_ok "Bash Script for External Storage created" + +msg_info "Creating Domain access script" +cat <<'EOF' >~/domain.sh +#!/bin/bash +DOMAIN=$1 +IP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1) +DOMAIN_NOSCHEME=$(echo $DOMAIN | sed 's|^https://||') + +#Change the CORS to provided domain +sed -i "s|SERVICE_URL = \"http://$IP:8000\"|SERVICE_URL = \"$DOMAIN\"|g" /opt/seafile/conf/seahub_settings.py +sed -i "s|CSRF_TRUSTED_ORIGINS = \[\"http://$IP/\"\]|CSRF_TRUSTED_ORIGINS = \[\"$DOMAIN/\"\]|g" /opt/seafile/conf/seahub_settings.py +sed -i "s|FILE_SERVER_ROOT = \"http://$IP:8082\"|FILE_SERVER_ROOT = \"$DOMAIN/seafhttp\"|g" /opt/seafile/conf/seahub_settings.py +sed -i "s|ALLOWED_HOSTS = \[\"$IP\"\]|ALLOWED_HOSTS = \[\"\.$DOMAIN_NOSCHEME\"\]|g" /opt/seafile/conf/seahub_settings.py + +systemctl restart seafile +echo "Seafile server restarted! Access it at $DOMAIN." +EOF +chmod +x ~/domain.sh +msg_ok "Bash Script for Domain access created" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /home/seafile/seafile*.tar.gz +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/install/searxng-install.sh b/install/searxng-install.sh index a2b5bc611..2490575e1 100644 --- a/install/searxng-install.sh +++ b/install/searxng-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/searxng/searxng -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -19,17 +19,14 @@ $STD apt-get install -y \ build-essential \ libffi-dev \ libssl-dev \ - curl \ - sudo \ - git \ - mc + git msg_ok "Installed Dependencies" -msg_info "Setup Python3" +msg_info "Setup Python3" $STD apt-get install -y \ python3 \ - python3-{pip,venv,yaml,dev} -$STD pip install --upgrade pip setuptools wheel + python3-{pip,venv,yaml,dev} +$STD pip install --upgrade pip setuptools wheel $STD pip install pyyaml msg_ok "Setup Python3" @@ -41,7 +38,7 @@ $STD git clone https://github.com/searxng/searxng.git /usr/local/searxng/searxng cd /usr/local/searxng/ sudo -u searxng python3 -m venv /usr/local/searxng/searx-pyenv source /usr/local/searxng/searx-pyenv/bin/activate -$STD pip install --upgrade pip setuptools wheel +$STD pip install --upgrade pip setuptools wheel $STD pip install pyyaml $STD pip install -e /usr/local/searxng/searxng-src SECRET_KEY=$(openssl rand -hex 32) diff --git a/install/seelf-install.sh b/install/seelf-install.sh index 3d9838b8d..3c14354fe 100644 --- a/install/seelf-install.sh +++ b/install/seelf-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/YuukanOO/seelf -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ make \ gcc msg_ok "Installed Dependencies" @@ -49,15 +46,17 @@ wget -q "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz" tar -xzf v${RELEASE}.tar.gz mv seelf-${RELEASE}/ /opt/seelf cd /opt/seelf -$STD make build +$STD make build PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) { - echo "ADMIN_EMAIL=admin@example.com" - echo "ADMIN_PASSWORD=$PASS" -} | tee .env ~/seelf.creds > /dev/null + echo "ADMIN_EMAIL=admin@example.com" + echo "ADMIN_PASSWORD=$PASS" +} | tee .env ~/seelf.creds >/dev/null echo "${RELEASE}" >/opt/seelf_version.txt -SEELF_ADMIN_EMAIL=admin@example.com SEELF_ADMIN_PASSWORD=$PASS ./seelf serve &> /dev/null & sleep 5 ; kill $! +SEELF_ADMIN_EMAIL=admin@example.com SEELF_ADMIN_PASSWORD=$PASS ./seelf serve &>/dev/null & +sleep 5 +kill $! msg_ok "Done setting up seelf" msg_info "Creating Service" @@ -92,4 +91,4 @@ $STD apt-get -y autoclean msg_ok "Cleaned" motd_ssh -customize \ No newline at end of file +customize diff --git a/install/semaphore-install.sh b/install/semaphore-install.sh index 409830967..a18a69c5c 100644 --- a/install/semaphore-install.sh +++ b/install/semaphore-install.sh @@ -15,8 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - mc \ git \ gpg \ sudo \ @@ -86,4 +84,4 @@ msg_info "Cleaning up" rm -rf semaphore_${RELEASE}_linux_arm64.deb $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/sftpgo-install.sh b/install/sftpgo-install.sh index 4b32d503d..8d32686a1 100644 --- a/install/sftpgo-install.sh +++ b/install/sftpgo-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sftpgo.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y sqlite3 $STD apt-get install -y wget diff --git a/install/shinobi-install.sh b/install/shinobi-install.sh index add2905a0..1a57072da 100644 --- a/install/shinobi-install.sh +++ b/install/shinobi-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://shinobi.video/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,8 +14,7 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl sudo git mc -$STD apt-get install -y make zip net-tools +$STD apt-get install -y make zip net-tools git $STD apt-get install -y gcc g++ cmake $STD apt-get install -y ca-certificates $STD apt-get install -y gnupg @@ -46,7 +45,7 @@ gitVersionNumber=$(git rev-parse HEAD) theDateRightNow=$(date) touch version.json chmod 777 version.json -echo '{"Product" : "'"Shinobi"'" , "Branch" : "'"master"'" , "Version" : "'"$gitVersionNumber"'" , "Date" : "'"$theDateRightNow"'" , "Repository" : "'"https://gitlab.com/Shinobi-Systems/Shinobi.git"'"}' > version.json +echo '{"Product" : "'"Shinobi"'" , "Branch" : "'"master"'" , "Version" : "'"$gitVersionNumber"'" , "Date" : "'"$theDateRightNow"'" , "Repository" : "'"https://gitlab.com/Shinobi-Systems/Shinobi.git"'"}' >version.json msg_ok "Cloned Shinobi" msg_info "Installing Database" @@ -61,7 +60,7 @@ msg_ok "Installed Database" msg_info "Installing Shinobi" cp conf.sample.json conf.json -cronKey=$(head -c 1024 < /dev/urandom | sha256sum | awk '{print substr($1,1,29)}') +cronKey=$(head -c 1024 /dev/null +node /opt/Shinobi/tools/modifyConfiguration.js addToConfig="{\"cron\":{\"key\":\"$(head -c 64 /dev/null $STD pm2 start camera.js $STD pm2 start cron.js $STD pm2 startup diff --git a/install/smokeping-install.sh b/install/smokeping-install.sh index 6baed7c57..d42652b7a 100644 --- a/install/smokeping-install.sh +++ b/install/smokeping-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://oss.oetiker.ch/smokeping/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/snipeit-install.sh b/install/snipeit-install.sh index f53455772..b6be70827 100644 --- a/install/snipeit-install.sh +++ b/install/snipeit-install.sh @@ -15,14 +15,11 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - composer \ - git \ - sudo \ - mc \ - nginx \ - php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli} \ - mariadb-server + composer \ + git \ + nginx \ + php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli} \ + mariadb-server msg_ok "Installed Dependencies" msg_info "Setting up database" @@ -37,12 +34,12 @@ mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVI echo "SnipeIT Database User: $DB_USER" echo "SnipeIT Database Password: $DB_PASS" echo "SnipeIT Database Name: $DB_NAME" -} >> ~/snipeit.creds +} >>~/snipeit.creds msg_ok "Set up database" msg_info "Installing Snipe-IT" temp_file=$(mktemp) -RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/') +RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file tar zxf $temp_file mv snipe-it-${RELEASE} /opt/snipe-it @@ -51,15 +48,15 @@ cp .env.example .env IPADDRESS=$(hostname -I | awk '{print $1}') sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \ - -e "s|^DB_DATABASE=.*|DB_DATABASE=$DB_NAME|" \ - -e "s|^DB_USERNAME=.*|DB_USERNAME=$DB_USER|" \ - -e "s|^DB_PASSWORD=.*|DB_PASSWORD=$DB_PASS|" .env + -e "s|^DB_DATABASE=.*|DB_DATABASE=$DB_NAME|" \ + -e "s|^DB_USERNAME=.*|DB_USERNAME=$DB_USER|" \ + -e "s|^DB_PASSWORD=.*|DB_PASSWORD=$DB_PASS|" .env chown -R www-data: /opt/snipe-it chmod -R 755 /opt/snipe-it export COMPOSER_ALLOW_SUPERUSER=1 -$STD composer update --no-plugins --no-scripts -$STD composer install --no-dev --prefer-source --no-plugins --no-scripts +#$STD composer update --no-plugins --no-scripts +$STD composer install --no-dev --optimize-autoloader --no-interaction $STD php artisan key:generate --force echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed SnipeIT" @@ -69,13 +66,13 @@ cat </etc/nginx/conf.d/snipeit.conf server { listen 80; root /opt/snipe-it/public; - server_name $IPADDRESS; + server_name $IPADDRESS; index index.php; - + location / { try_files \$uri \$uri/ /index.php?\$query_string; } - + location ~ \.php\$ { include fastcgi.conf; include snippets/fastcgi-php.conf; @@ -90,7 +87,6 @@ EOF systemctl reload nginx msg_ok "Configured Service" - motd_ssh customize diff --git a/install/sonarr-install.sh b/install/sonarr-install.sh index 8ff39ab0a..e6ce38aa9 100644 --- a/install/sonarr-install.sh +++ b/install/sonarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sonarr.tv/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y sqlite3 $STD apt-get install -y wget $STD apt-get install -y openssh-server @@ -46,7 +43,7 @@ Restart=on-failure [Install] WantedBy=multi-user.target EOF -systemctl enable -q --now sonarr.service +systemctl enable -q --now sonarr msg_ok "Created Service" motd_ssh diff --git a/install/spoolman-install.sh b/install/spoolman-install.sh index 1146497c5..e36ec91e2 100644 --- a/install/spoolman-install.sh +++ b/install/spoolman-install.sh @@ -17,8 +17,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ build-essential \ - curl \ - sudo \ make \ libpq-dev \ gpg \ diff --git a/install/sqlserver2022-install.sh b/install/sqlserver2022-install.sh index eb1f15d09..9860ddb17 100644 --- a/install/sqlserver2022-install.sh +++ b/install/sqlserver2022-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt install -y \ - curl \ - mc \ - sudo \ gpg \ coreutils msg_ok "Installed Dependencies" diff --git a/install/stirling-pdf-install.sh b/install/stirling-pdf-install.sh index b0834e411..ec4da46c1 100644 --- a/install/stirling-pdf-install.sh +++ b/install/stirling-pdf-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.stirlingpdf.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies (Patience)" $STD apt-get install -y \ - curl \ - sudo \ - mc \ git \ automake \ autoconf \ @@ -55,7 +52,7 @@ $STD pip3 install \ opencv-python-headless \ unoconv \ pngquant \ - WeasyPrint + WeasyPrint msg_ok "Installed Python Dependencies" msg_info "Installing Azul Zulu" diff --git a/install/suwayomiserver-install.sh b/install/suwayomiserver-install.sh index 3d0354a90..f432597d3 100644 --- a/install/suwayomiserver-install.sh +++ b/install/suwayomiserver-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Suwayomi/Suwayomi-Server -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,15 +15,12 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ openjdk-17-jre \ libc++-dev msg_ok "Installed Dependencies" msg_info "Settting up Suwayomi-Server" -URL=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "browser_download_url" | awk '{print substr($2, 2, length($2)-2) }' | tail -n+2 | head -n 1) +URL=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "browser_download_url" | awk '{print substr($2, 2, length($2)-2) }' | tail -n+2 | head -n 1) RELEASE=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') wget -q $URL $STD dpkg -i *.deb diff --git a/install/syncthing-install.sh b/install/syncthing-install.sh index 371f10f09..bd214fa47 100644 --- a/install/syncthing-install.sh +++ b/install/syncthing-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://syncthing.net/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gnupg $STD apt-get install -y openssh-server rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED diff --git a/install/tandoor-install.sh b/install/tandoor-install.sh index c5a518a04..2bf9869b0 100644 --- a/install/tandoor-install.sh +++ b/install/tandoor-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://tandoor.dev/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -25,10 +25,12 @@ $STD apt-get install -y --no-install-recommends \ libldap2-dev \ libssl-dev \ gpg \ - curl \ - sudo \ git \ make \ + pkg-config \ + libxmlsec1-dev \ + libxml2-dev \ + libxmlsec1-openssl \ mc \ wget \ openssh-server @@ -56,13 +58,13 @@ $STD npm install -g yarn msg_ok "Installed Node.js" msg_info "Installing Tandoor (Patience)" -$STD git clone https://github.com/vabene1111/recipes.git -b master /opt/tandoor +$STD git clone https://github.com/TandoorRecipes/recipes -b master /opt/tandoor mkdir -p /opt/tandoor/{config,api,mediafiles,staticfiles} $STD pip3 install -r /opt/tandoor/requirements.txt cd /opt/tandoor/vue $STD yarn install $STD yarn build -wget -q https://raw.githubusercontent.com/vabene1111/recipes/develop/.env.template -O /opt/tandoor/.env +wget -q https://raw.githubusercontent.com/TandoorRecipes/recipes/develop/.env.template -O /opt/tandoor/.env DB_NAME=db_recipes DB_USER=tandoor DB_ENCODING=utf8 @@ -70,15 +72,15 @@ DB_TIMEZONE=UTC secret_key=$(openssl rand -base64 45 | sed 's/\//\\\//g') DB_PASS="$(openssl rand -base64 18 | cut -c1-13)" sed -i -e "s|SECRET_KEY=.*|SECRET_KEY=$secret_key|g" \ - -e "s|POSTGRES_HOST=.*|POSTGRES_HOST=localhost|g" \ - -e "s|POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$DB_PASS|g" \ - -e "s|POSTGRES_DB=.*|POSTGRES_DB=$DB_NAME|g" \ - -e "s|POSTGRES_USER=.*|POSTGRES_USER=$DB_USER|g" \ - -e "\$a\STATIC_URL=/staticfiles/" /opt/tandoor/.env + -e "s|POSTGRES_HOST=.*|POSTGRES_HOST=localhost|g" \ + -e "s|POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$DB_PASS|g" \ + -e "s|POSTGRES_DB=.*|POSTGRES_DB=$DB_NAME|g" \ + -e "s|POSTGRES_USER=.*|POSTGRES_USER=$DB_USER|g" \ + -e "\$a\STATIC_URL=/staticfiles/" /opt/tandoor/.env msg_ok "Installed Tandoor" msg_info "Install/Set up PostgreSQL Database" -curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg +curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg echo "deb https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" >/etc/apt/sources.list.d/pgdg.list $STD apt-get update $STD apt-get install -y postgresql-16 @@ -91,7 +93,7 @@ echo "" >>~/tandoor.creds echo -e "Tandoor Database Name: \e[32m$DB_NAME\e[0m" >>~/tandoor.creds echo -e "Tandoor Database User: \e[32m$DB_USER\e[0m" >>~/tandoor.creds echo -e "Tandoor Database Password: \e[32m$DB_PASS\e[0m" >>~/tandoor.creds -export $(cat /opt/tandoor/.env |grep "^[^#]" | xargs) +export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs) /usr/bin/python3 /opt/tandoor/manage.py migrate >/dev/null 2>&1 /usr/bin/python3 /opt/tandoor/manage.py collectstatic --no-input >/dev/null 2>&1 /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse >/dev/null 2>&1 @@ -115,7 +117,7 @@ ExecStart=/usr/local/bin/gunicorn --error-logfile /tmp/gunicorn_err.log --log-le WantedBy=multi-user.target EOF -cat << 'EOF' >/etc/nginx/conf.d/tandoor.conf +cat <<'EOF' >/etc/nginx/conf.d/tandoor.conf server { listen 8002; #access_log /var/log/nginx/access.log; diff --git a/install/tasmoadmin-install.sh b/install/tasmoadmin-install.sh index 612d71729..83cc19813 100644 --- a/install/tasmoadmin-install.sh +++ b/install/tasmoadmin-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/TasmoAdmin/TasmoAdmin -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y apache2 $STD apt-get install -y php8.2 $STD apt-get install -y libapache2-mod-php diff --git a/install/tasmocompiler-install.sh b/install/tasmocompiler-install.sh index 746ebb3d0..e15b16847 100644 --- a/install/tasmocompiler-install.sh +++ b/install/tasmocompiler-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/benzino77/tasmocompiler -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies. Patience" $STD apt-get install -y \ - curl \ - sudo \ - mc \ gnupg \ git msg_ok "Installed Dependencies" @@ -83,4 +80,4 @@ msg_info "Cleaning up" rm -f /tmp/v${RELEASE}.tar.gz $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/tautulli-install.sh b/install/tautulli-install.sh index fc7299051..556846cae 100644 --- a/install/tautulli-install.sh +++ b/install/tautulli-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://tautulli.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y pip $STD apt-get install -y wget diff --git a/install/tdarr-install.sh b/install/tdarr-install.sh index 6165ae950..e53dbe757 100644 --- a/install/tdarr-install.sh +++ b/install/tdarr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://home.tdarr.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y handbrake-cli $STD apt-get install -y wget $STD apt-get install -y openssh-server diff --git a/install/technitiumdns-install.sh b/install/technitiumdns-install.sh index 7aa39063b..24f23195b 100644 --- a/install/technitiumdns-install.sh +++ b/install/technitiumdns-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://technitium.com/dns/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/teddycloud-install.sh b/install/teddycloud-install.sh index 65e3e3ea5..a5c2ca381 100644 --- a/install/teddycloud-install.sh +++ b/install/teddycloud-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/toniebox-reverse-engineering/teddycloud -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ libubsan1 \ ffmpeg \ curl \ diff --git a/install/threadfin-install.sh b/install/threadfin-install.sh index ec72869e6..389996f36 100644 --- a/install/threadfin-install.sh +++ b/install/threadfin-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Threadfin/Threadfin -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y curl $STD apt-get install -y ffmpeg $STD apt-get install -y vlc $STD apt-get install -y wget diff --git a/install/tianji-install.sh b/install/tianji-install.sh index 0dc2e43b3..d17bbd676 100644 --- a/install/tianji-install.sh +++ b/install/tianji-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/msgbyte/tianji -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -21,8 +21,6 @@ $STD apt-get install -y \ cmake \ g++ \ build-essential \ - curl \ - sudo \ git \ make \ gnupg \ @@ -49,7 +47,7 @@ DB_PASS="$(openssl rand -base64 18 | cut -c1-13)" TIANJI_SECRET="$(openssl rand -base64 32 | cut -c1-24)" $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;" $STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH 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 "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" $STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;" $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;" echo "" >>~/tianji.creds diff --git a/install/traccar-install.sh b/install/traccar-install.sh index 82078a2e8..330b08453 100644 --- a/install/traccar-install.sh +++ b/install/traccar-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.traccar.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -27,7 +27,7 @@ wget -q https://github.com/traccar/traccar/releases/download/v${RELEASE}/traccar $STD unzip traccar-linux-arm-${RELEASE}.zip $STD ./traccar.run systemctl enable -q --now traccar -rm -rf README.txt traccar-linux-arm-${RELEASE}.zip traccar.run +rm -rf README.txt traccar-linux-arm-${RELEASE}.zip traccar.run msg_ok "Installed Traccar v${RELEASE}" motd_ssh diff --git a/install/traefik-install.sh b/install/traefik-install.sh index 7de1b3f68..a29d06b06 100644 --- a/install/traefik-install.sh +++ b/install/traefik-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://traefik.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gpg $STD apt-get install -y apt-transport-https $STD apt-get install -y wget @@ -107,7 +104,6 @@ EOF systemctl enable -q --now traefik.service msg_ok "Created Service" - motd_ssh customize diff --git a/install/transmission-install.sh b/install/transmission-install.sh index 8259c7613..d8bc883eb 100644 --- a/install/transmission-install.sh +++ b/install/transmission-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://transmissionbt.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -21,7 +21,6 @@ $STD apt-get install -y mc $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" - msg_info "Installing Transmission" $STD apt-get install -y transmission-daemon systemctl stop transmission-daemon diff --git a/install/trilium-install.sh b/install/trilium-install.sh index bd2caa0dc..086a22415 100644 --- a/install/trilium-install.sh +++ b/install/trilium-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://triliumnext.github.io/Docs/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -24,10 +24,10 @@ msg_ok "Installed Dependencies" msg_info "Setup TriliumNext" cd /opt -RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz -tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz -mv trilium-linux-x64-server /opt/trilium +RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q https://github.com/TriliumNext/Notes/releases/download/v${RELEASE}/TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz +tar -xf TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz +mv TriliumNextNotes-Server-$RELEASE-linux-x64 /opt/trilium echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Setup TriliumNext" @@ -55,7 +55,7 @@ motd_ssh customize msg_info "Cleaning up" -rm -rf /opt/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz +rm -rf /opt/TriliumNextNotes-Server-${RELEASE}-linux-x64.tar.xz $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned" diff --git a/install/typesense-install.sh b/install/typesense-install.sh index beab980ee..48644a00c 100644 --- a/install/typesense-install.sh +++ b/install/typesense-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://typesense.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -27,7 +27,7 @@ RELEASE=$(curl -s https://api.github.com/repos/typesense/typesense/releases/late cd /opt wget -q https://dl.typesense.org/releases/${RELEASE}/typesense-server-${RELEASE}-amd64.deb $STD apt install -y /opt/typesense-server-${RELEASE}-amd64.deb -echo 'enable-cors = true' >> /etc/typesense/typesense-server.ini +echo 'enable-cors = true' >>/etc/typesense/typesense-server.ini echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed TypeSense" diff --git a/install/ubuntu-install.sh b/install/ubuntu-install.sh index 63dc73b21..8363ed59b 100644 --- a/install/ubuntu-install.sh +++ b/install/ubuntu-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ubuntu.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/umami-install.sh b/install/umami-install.sh index 6138c024d..b636234dc 100644 --- a/install/umami-install.sh +++ b/install/umami-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://umami.is/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y gpg $STD apt-get install -y postgresql diff --git a/install/umbrel-install.sh b/install/umbrel-install.sh index 3c70c4ad3..b5982be4d 100644 --- a/install/umbrel-install.sh +++ b/install/umbrel-install.sh @@ -34,6 +34,6 @@ motd_ssh customize msg_info "Cleaning up" -#$STD apt-get autoremove -#$STD apt-get autoclean +$STD apt-get autoremove +$STD apt-get autoclean msg_ok "Cleaned" diff --git a/install/unbound-install.sh b/install/unbound-install.sh index 7cbb1b37f..fdf337820 100644 --- a/install/unbound-install.sh +++ b/install/unbound-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/NLnetLabs/unbound -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/unifi-install.sh b/install/unifi-install.sh index 5836a5935..1fe5f4809 100644 --- a/install/unifi-install.sh +++ b/install/unifi-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ui.com/download/unifi -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y apt-transport-https $STD apt-get install -y gnupg $STD apt-get install -y wget diff --git a/install/unmanic-install.sh b/install/unmanic-install.sh index 9b37c33b4..8826d91b5 100644 --- a/install/unmanic-install.sh +++ b/install/unmanic-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.unmanic.app/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies (Patience)" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y ffmpeg $STD apt-get install -y python3-pip $STD apt-get install -y wget @@ -43,7 +40,7 @@ sed -i -e 's/^sgx:x:104:$/render:x:104:root/' -e 's/^render:x:106:root$/sgx:x:10 msg_ok "Installed Unmanic" msg_info "Creating Service" -cat << EOF >/etc/systemd/system/unmanic.service +cat </etc/systemd/system/unmanic.service [Unit] Description=Unmanic - Library Optimiser After=network-online.target diff --git a/install/uptimekuma-install.sh b/install/uptimekuma-install.sh index 209e291b2..bc1861ea1 100644 --- a/install/uptimekuma-install.sh +++ b/install/uptimekuma-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://uptime.kuma.pet/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y ca-certificates $STD apt-get install -y gnupg diff --git a/install/urbackupserver-install.sh b/install/urbackupserver-install.sh index 18d0fd9c2..998fd3309 100644 --- a/install/urbackupserver-install.sh +++ b/install/urbackupserver-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.urbackup.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ gnupg \ coreutils msg_ok "Installed Dependencies" diff --git a/install/vaultwarden-install.sh b/install/vaultwarden-install.sh index 0525cc22d..59c637e49 100644 --- a/install/vaultwarden-install.sh +++ b/install/vaultwarden-install.sh @@ -3,7 +3,7 @@ # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://www.vaultwarden.net/ +# Source: https://github.com/dani-garcia/vaultwarden source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color diff --git a/install/victoriametrics-install.sh b/install/victoriametrics-install.sh index 4ba74fb8d..178fcd30c 100644 --- a/install/victoriametrics-install.sh +++ b/install/victoriametrics-install.sh @@ -13,13 +13,6 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - sudo \ - curl \ - mc -msg_ok "Installed Dependencies" - msg_info "Setup VictoriaMetrics" temp_dir=$(mktemp -d) cd $temp_dir diff --git a/install/vikunja-install.sh b/install/vikunja-install.sh index 39aa5600d..1e276f290 100644 --- a/install/vikunja-install.sh +++ b/install/vikunja-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://vikunja.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/wallos-install.sh b/install/wallos-install.sh index 1906f9bca..da78bea46 100644 --- a/install/wallos-install.sh +++ b/install/wallos-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/ellite/wallos -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ apache2 \ libapache2-mod-php \ php8.2-{mbstring,gd,curl,intl,imagick,bz2,sqlite3,zip,xml} \ @@ -55,14 +52,14 @@ cat </etc/apache2/sites-available/wallos.conf EOF $STD a2ensite wallos.conf -$STD a2dissite 000-default.conf +$STD a2dissite 000-default.conf $STD systemctl reload apache2 $STD curl http://localhost/endpoints/db/migrate.php msg_ok "Installed Wallos" -msg_info "Setting up Crontabs" +msg_info "Setting up Crontabs" mkdir -p /var/log/cron -cat < /opt/wallos.cron +cat </opt/wallos.cron 0 1 * * * php /opt/wallos/endpoints/cronjobs/updatenextpayment.php >> /var/log/cron/updatenextpayment.log 2>&1 0 2 * * * php /opt/wallos/endpoints/cronjobs/updateexchange.php >> /var/log/cron/updateexchange.log 2>&1 0 8 * * * php /opt/wallos/endpoints/cronjobs/sendcancellationnotifications.php >> /var/log/cron/sendcancellationnotifications.log 2>&1 diff --git a/install/watcharr-install.sh b/install/watcharr-install.sh index aa3c249df..c39d8e04c 100644 --- a/install/watcharr-install.sh +++ b/install/watcharr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/sbondCo/Watcharr -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ gcc \ gnupg msg_ok "Installed Dependencies" @@ -90,4 +87,4 @@ msg_info "Cleaning up" rm -f "$temp_file" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/watchyourlan-install.sh b/install/watchyourlan-install.sh index 88b6d2e73..ab5d160bc 100644 --- a/install/watchyourlan-install.sh +++ b/install/watchyourlan-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/aceberg/WatchYourLAN -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/wavelog-install.sh b/install/wavelog-install.sh index 37c9789ba..e08a85ee7 100644 --- a/install/wavelog-install.sh +++ b/install/wavelog-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/wavelog/wavelog -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -38,7 +38,7 @@ $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH echo "Wavelog Database User: $DB_USER" echo "Wavelog Database Password: $DB_PASS" echo "Wavelog Database Name: $DB_NAME" -} >> ~/wavelog.creds +} >>~/wavelog.creds msg_ok "Set up database" msg_info "Setting up PHP" @@ -75,7 +75,7 @@ cat </etc/apache2/sites-available/wavelog.conf EOF $STD a2ensite wavelog.conf -$STD a2dissite 000-default.conf +$STD a2dissite 000-default.conf $STD systemctl reload apache2 msg_ok "Created Service" diff --git a/install/wazuh-install.sh b/install/wazuh-install.sh new file mode 100644 index 000000000..ff447a6ac --- /dev/null +++ b/install/wazuh-install.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +# Copyright (c) 2024 community-scripts ORG +# Author: Omar Minaya +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://wazuh.com/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Fetching Latest Wazuh Version" +RELEASE=$(curl -s https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '"tag_name"' | awk -F '"' '{print substr($4, 2, length($2)-4)}') +msg_ok "Latest Wazuh Version: $RELEASE" + +msg_info "Setup Wazuh" +curl -fsSL https://packages.wazuh.com/$RELEASE/wazuh-install.sh -o wazuh-install.sh +chmod +x wazuh-install.sh +if [ "$STD" = "silent" ]; then + bash wazuh-install.sh -a >>~/wazuh-install.output +else + bash wazuh-install.sh -a | tee -a ~/wazuh-install.output +fi +cat ~/wazuh-install.output | grep -E "User|Password" | awk '{$1=$1};1' | sed '1i wazuh-credentials' >~/wazuh.creds +msg_ok "Setup Wazuh" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f wazuh-*.sh +rm -f ~/wazuh-install.output +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/install/web-check-install.sh b/install/web-check-install.sh index df92be337..ef6ad3d14 100644 --- a/install/web-check-install.sh +++ b/install/web-check-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/lissy93/web-check -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -16,9 +16,6 @@ update_os msg_info "Installing Dependencies" export DEBIAN_FRONTEND=noninteractive $STD apt-get -y install --no-install-recommends \ - curl \ - sudo \ - mc \ git \ gnupg \ traceroute \ @@ -67,7 +64,7 @@ $STD npm install -g yarn msg_ok "Installed Node.js" msg_info "Setting up Chromium" -/usr/bin/chromium --no-sandbox --version > /etc/chromium-version +/usr/bin/chromium --no-sandbox --version >/etc/chromium-version chmod 755 /usr/bin/chromium msg_ok "Setup Chromium" @@ -78,7 +75,7 @@ wget -q "https://github.com/CrazyWolf13/web-check/archive/refs/heads/${RELEASE}. tar xzf $temp_file mv web-check-${RELEASE} /opt/web-check cd /opt/web-check -cat <<'EOF' > /opt/web-check/.env +cat <<'EOF' >/opt/web-check/.env CHROME_PATH=/usr/bin/chromium PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium HEADLESS=true @@ -109,7 +106,7 @@ $STD yarn build --production msg_ok "Built Web-Check" msg_info "Creating Service" -cat <<'EOF' > /opt/run_web-check.sh +cat <<'EOF' >/opt/run_web-check.sh #!/bin/bash SCREEN_RESOLUTION="1280x1024x24" if ! systemctl is-active --quiet dbus; then @@ -123,7 +120,7 @@ cd /opt/web-check exec yarn start EOF chmod +x /opt/run_web-check.sh -cat <<'EOF' > /etc/systemd/system/web-check.service +cat <<'EOF' >/etc/systemd/system/web-check.service [Unit] Description=Web Check Service After=network.target diff --git a/install/wger-install.sh b/install/wger-install.sh index 7ffcdfbca..018eddd49 100644 --- a/install/wger-install.sh +++ b/install/wger-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/wger-project/wger -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,13 +15,10 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ - git \ - gnupg \ - apache2 \ - libapache2-mod-wsgi-py3 + git \ + gnupg \ + apache2 \ + libapache2-mod-wsgi-py3 msg_ok "Installed Dependencies" msg_info "Installing Python" diff --git a/install/whisparr-install.sh b/install/whisparr-install.sh index 7bb8646b4..ceda737e8 100644 --- a/install/whisparr-install.sh +++ b/install/whisparr-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Whisparr/Whisparr -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/whoogle-install.sh b/install/whoogle-install.sh index b92ab6d96..5fa493c82 100644 --- a/install/whoogle-install.sh +++ b/install/whoogle-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/benbusby/whoogle-search -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index 1b37a9b87..578ad1251 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ git \ ca-certificates \ gnupg \ @@ -59,26 +56,22 @@ $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 "WikiJS-Credentials" - echo "WikiJS Database User: $DB_USER" - echo "WikiJS Database Password: $DB_PASS" - echo "WikiJS Database Name: $DB_NAME" -} >> ~/wikijs.creds + echo "WikiJS-Credentials" + echo "WikiJS Database User: $DB_USER" + echo "WikiJS Database Password: $DB_PASS" + echo "WikiJS Database Name: $DB_NAME" +} >>~/wikijs.creds msg_ok "Set up PostgreSQL" msg_info "Setup Wiki.js" temp_file=$(mktemp) RELEASE=$(curl -s https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -wget -q "https://github.com/Requarks/wiki/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" -tar -xzf "$temp_file" -mv wiki-${RELEASE} /opt/wikijs +wget -q "https://github.com/requarks/wiki/releases/download/v${RELEASE}/wiki-js.tar.gz" -O "$temp_file" +mkdir /opt/wikijs +tar -xzf "$temp_file" -C /opt/wikijs mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml sed -i -E 's|^( *user: ).*|\1'"$DB_USER"'|' /opt/wikijs/config.yml sed -i -E 's|^( *pass: ).*|\1'"$DB_PASS"'|' /opt/wikijs/config.yml -cd /opt/wikijs -export NODE_OPTIONS="--max-old-space-size=2048" -$STD yarn install --ignore-engines -$STD yarn build echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Wiki.js" @@ -90,7 +83,7 @@ After=network.target [Service] Type=simple -ExecStart=/usr/bin/yarn start +ExecStart=/usr/bin/node server Restart=always User=root Environment=NODE_ENV=production diff --git a/install/wireguard-install.sh b/install/wireguard-install.sh index bbdfa1baf..8a42ea055 100644 --- a/install/wireguard-install.sh +++ b/install/wireguard-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.wireguard.com/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y git $STD apt-get install -y wget $STD apt-get install -y openssh-server @@ -39,7 +36,7 @@ msg_ok "Installed WGDashboard" msg_info "Create Example Config for WGDashboard" private_key=$(wg genkey) -cat </etc/wireguard/wg0.conf +cat </etc/wireguard/wg0.conf [Interface] PrivateKey = ${private_key} Address = 10.0.0.1/24 diff --git a/install/wordpress-install.sh b/install/wordpress-install.sh index a2c4b93e7..7f6728b9a 100644 --- a/install/wordpress-install.sh +++ b/install/wordpress-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://wordpress.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -39,7 +39,7 @@ $STD mysql -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localho echo "Database User: $DB_USER" echo "Database Password: $DB_PASS" echo "Database Name: $DB_NAME" -} >> ~/wordpress.creds +} >>~/wordpress.creds msg_ok "Set up Database" msg_info "Installing Wordpress (Patience)" @@ -52,13 +52,13 @@ find . -type d -exec chmod 755 {} \; find . -type f -exec chmod 644 {} \; mv wp-config-sample.php wp-config.php sed -i -e "s|^define( 'DB_NAME', '.*' );|define( 'DB_NAME', '$DB_NAME' );|" \ - -e "s|^define( 'DB_USER', '.*' );|define( 'DB_USER', '$DB_USER' );|" \ - -e "s|^define( 'DB_PASSWORD', '.*' );|define( 'DB_PASSWORD', '$DB_PASS' );|" \ - /var/www/html/wordpress/wp-config.php + -e "s|^define( 'DB_USER', '.*' );|define( 'DB_USER', '$DB_USER' );|" \ + -e "s|^define( 'DB_PASSWORD', '.*' );|define( 'DB_PASSWORD', '$DB_PASS' );|" \ + /var/www/html/wordpress/wp-config.php msg_ok "Installed Wordpress" msg_info "Setup Services" -cat < /etc/apache2/sites-available/wordpress.conf +cat </etc/apache2/sites-available/wordpress.conf ServerName yourdomain.com DocumentRoot /var/www/html/wordpress @@ -84,4 +84,4 @@ msg_info "Cleaning up" rm -rf /var/www/html/latest.zip $STD apt-get autoremove $STD apt-get autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/yt-dlp-webui-install.sh b/install/yt-dlp-webui-install.sh new file mode 100644 index 000000000..1466b5483 --- /dev/null +++ b/install/yt-dlp-webui-install.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: CrazyWolf13 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/marcopiovanello/yt-dlp-web-ui + +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 ffmpeg +msg_ok "Installed Dependencies" + +msg_info "Installing ${APPLICATION}" +RELEASE=$(curl -s https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/marcopiovanello/yt-dlp-web-ui/releases/download/v${RELEASE}/yt-dlp-webui_linux-amd64" -O /usr/local/bin/yt-dlp-webui +chmod +x /usr/local/bin/yt-dlp-webui +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Installed ${APPLICATION}" + +msg_info "Installing yt-dlp" +wget -q https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp +chmod a+rx /usr/local/bin/yt-dlp +msg_ok "Installed yt-dlp" + +msg_info "Setting up ${APPLICATION}" +mkdir -p /opt/yt-dlp-webui +mkdir /downloads +RPC_PASSWORD=$(openssl rand -base64 16) +{ + echo "yt-dlp-webui-Credentials" + echo "Username: admin" + echo "Password: ${RPC_PASSWORD}" +} >> ~/yt-dlp-webui.creds + +cat < /opt/yt-dlp-webui/config.conf +# Host where server will listen at (default: "0.0.0.0") +#host: 0.0.0.0 + +# Port where server will listen at (default: 3033) +port: 3033 + +# Directory where downloaded files will be stored (default: ".") +downloadPath: /downloads + +# [optional] Enable RPC authentication (requires username and password) +require_auth: true +username: admin +password: ${RPC_PASSWORD} + +# [optional] The download queue size (default: logical cpu cores) +queue_size: 4 # min. 2 + +# [optional] Full path to the yt-dlp (default: "yt-dlp") +downloaderPath: /usr/local/bin/yt-dlp + +# [optional] Enable file based logging with rotation (default: false) +#enable_file_logging: false + +# [optional] Directory where the log file will be stored (default: ".") +#log_path: . + +# [optional] Directory where the session database file will be stored (default: ".") +#session_file_path: . + +# [optional] Path where the sqlite database will be created/opened (default: "./local.db") +#local_database_path + +# [optional] Path where a custom frontend will be loaded (instead of the embedded one) +#frontend_path: ./web/solid-frontend +EOF + +cat < /etc/systemd/system/yt-dlp-webui.service +[Unit] +Description=yt-dlp-webui service file +After=network.target + +[Service] +ExecStart=/usr/local/bin/yt-dlp-webui --conf /opt/yt-dlp-webui/config.conf + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now yt-dlp-webui +msg_ok "Set up ${APPLICATION}" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/install/yunohost-install.sh b/install/yunohost-install.sh index cdb2aeefe..2f196bf31 100644 --- a/install/yunohost-install.sh +++ b/install/yunohost-install.sh @@ -14,9 +14,6 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc $STD apt-get install -y gnupg $STD apt-get install -y apt-transport-https $STD apt-get install -y lsb-release diff --git a/install/zammad-install.sh b/install/zammad-install.sh index b541c43c6..fba9e7a19 100644 --- a/install/zammad-install.sh +++ b/install/zammad-install.sh @@ -15,11 +15,8 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ git \ - sudo \ gpg \ - wget \ nginx \ apt-transport-https \ gnupg \ @@ -60,4 +57,4 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/zerotier-one-install.sh b/install/zerotier-one-install.sh index 183879a86..673648cdc 100644 --- a/install/zerotier-one-install.sh +++ b/install/zerotier-one-install.sh @@ -14,26 +14,22 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - mc \ - sudo \ - gnupg +$STD apt-get install -y gnupg msg_ok "Installed Dependencies" msg_info "Setting up Zerotier-One" -curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/main/doc/contact%40zerotier.com.gpg' | gpg --import && \ -if z="$(curl -s 'https://install.zerotier.com/' | gpg)"; then -echo "$z" | sudo bash -fi +curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/main/doc/contact%40zerotier.com.gpg' | gpg --import && + if z="$(curl -s 'https://install.zerotier.com/' | gpg)"; then + echo "$z" | sudo bash + fi msg_ok "Setup Zerotier-One" msg_info "Setting up UI" curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.8.14_amd64.deb dpkg -i ztncui_0.8.14_amd64.deb sh -c "echo ZT_TOKEN=$(cat /var/lib/zerotier-one/authtoken.secret) > /opt/key-networks/ztncui/.env" -echo HTTPS_PORT=3443 >> /opt/key-networks/ztncui/.env -echo NODE_ENV=production >> /opt/key-networks/ztncui/.env +echo HTTPS_PORT=3443 >>/opt/key-networks/ztncui/.env +echo NODE_ENV=production >>/opt/key-networks/ztncui/.env chmod 400 /opt/key-networks/ztncui/.env chown ztncui:ztncui /opt/key-networks/ztncui/.env systemctl restart ztncui @@ -45,4 +41,4 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" diff --git a/install/zigbee2mqtt-install.sh b/install/zigbee2mqtt-install.sh index 3fbd6b2fd..6ce01b047 100644 --- a/install/zigbee2mqtt-install.sh +++ b/install/zigbee2mqtt-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.zigbee2mqtt.io/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,9 +15,6 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - curl \ - sudo \ - mc \ git \ make \ g++ \ diff --git a/install/zipline-install.sh b/install/zipline-install.sh index 40fd9da65..2a96e8b18 100644 --- a/install/zipline-install.sh +++ b/install/zipline-install.sh @@ -6,7 +6,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/diced/zipline -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors diff --git a/install/zitadel-install.sh b/install/zitadel-install.sh index cb8f49828..1c0a4a56c 100644 --- a/install/zitadel-install.sh +++ b/install/zitadel-install.sh @@ -14,12 +14,7 @@ network_check update_os msg_info "Installing Dependencies (Patience)" -$STD apt-get install -y \ - curl \ - sudo \ - mc \ - ca-certificates \ - wget +$STD apt-get install -y ca-certificates msg_ok "Installed Dependecies" msg_info "Installing Postgresql" @@ -34,13 +29,13 @@ $STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';" $STD sudo -u postgres psql -c "CREATE USER $DB_ADMIN_USER WITH PASSWORD '$DB_ADMIN_PASS' SUPERUSER;" $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_ADMIN_USER;" { - echo "Application Credentials" - echo "DB_NAME: $DB_NAME" - echo "DB_USER: $DB_USER" - echo "DB_PASS: $DB_PASS" - echo "DB_ADMIN_USER: $DB_ADMIN_USER" - echo "DB_ADMIN_PASS: $DB_ADMIN_PASS" -} >> ~/zitadel.creds + echo "Application Credentials" + echo "DB_NAME: $DB_NAME" + echo "DB_USER: $DB_USER" + echo "DB_PASS: $DB_PASS" + echo "DB_ADMIN_USER: $DB_ADMIN_USER" + echo "DB_ADMIN_PASS: $DB_ADMIN_PASS" +} >>~/zitadel.creds msg_ok "Installed PostgreSQL" msg_info "Installing Zitadel" @@ -51,12 +46,12 @@ msg_ok "Installed Zitadel" msg_info "Setting up Zitadel Environments" mkdir -p /opt/zitadel -echo "/opt/zitadel/config.yaml" > "/opt/zitadel/.config" -head -c 32 < <(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9') > "/opt/zitadel/.masterkey" +echo "/opt/zitadel/config.yaml" >"/opt/zitadel/.config" +head -c 32 < <(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9') >"/opt/zitadel/.masterkey" { - echo "Config location: $(cat "/opt/zitadel/.config")" - echo "Masterkey: $(cat "/opt/zitadel/.masterkey")" -} >> ~/zitadel.creds + echo "Config location: $(cat "/opt/zitadel/.config")" + echo "Masterkey: $(cat "/opt/zitadel/.masterkey")" +} >>~/zitadel.creds cat </opt/zitadel/config.yaml Port: 8080 ExternalPort: 8080 @@ -133,7 +128,7 @@ msg_info "Set ExternalDomain to current IP and restart Zitadel" IP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1) sed -i "0,/localhost/s/localhost/${IP}/" /opt/zitadel/config.yaml systemctl stop -q zitadel.service -zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml &>/dev/null +zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml &>/dev/null systemctl restart -q zitadel.service msg_ok "Zitadel restarted with ExternalDomain set to current IP" diff --git a/install/zoraxy-install.sh b/install/zoraxy-install.sh index f4ab055aa..4a808373b 100644 --- a/install/zoraxy-install.sh +++ b/install/zoraxy-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zoraxy.aroz.org/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -22,7 +22,7 @@ $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" msg_info "Installing Zoraxy (Patience)" -RELEASE=$(curl -s https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +RELEASE=$(curl -s https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') wget -q "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_arm64" mkdir -p /opt/zoraxy mv zoraxy_linux_arm64 /opt/zoraxy/zoraxy diff --git a/install/zwave-js-ui-install.sh b/install/zwave-js-ui-install.sh index c48f49109..00c1a9626 100644 --- a/install/zwave-js-ui-install.sh +++ b/install/zwave-js-ui-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zwave-js.github.io/zwave-js-ui/#/ -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -37,7 +37,7 @@ echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Z-Wave JS UI" msg_info "Creating Service" -cat < /etc/systemd/system/zwave-js-ui.service +cat </etc/systemd/system/zwave-js-ui.service [Unit] Description=zwave-js-ui Wants=network-online.target diff --git a/json/flowiseai.json b/json/flowiseai.json deleted file mode 100644 index 9e04b6b1e..000000000 --- a/json/flowiseai.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "FlowiseAI", - "slug": "flowiseai", - "categories": [ - 20 - ], - "date_created": "2024-05-02", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 3000, - "documentation": null, - "website": "https://flowiseai.com/", - "logo": "https://flowiseai.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flogo-color-high.e60de2f8.png&w=256&q=75", - "description": "FlowiseAI is an open source low-code tool for developers to build customized LLM orchestration flow & AI agents", - "install_methods": [ - { - "type": "default", - "script": "ct/flowiseai.sh", - "resources": { - "cpu": 4, - "ram": 4096, - "hdd": 10, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [], - "status": "βœ…" -} \ No newline at end of file diff --git a/json/zitadel.json b/json/zitadel.json deleted file mode 100644 index 96b2d62e9..000000000 --- a/json/zitadel.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "Zitadel", - "slug": "Zitadel", - "categories": [ - 6 - ], - "date_created": "2025-02-10", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 8080, - "documentation": "https://zitadel.com/docs/guides/overview", - "website": "https://zitadel.com", - "logo": "https://raw.githubusercontent.com/zitadel/zitadel/refs/heads/main/console/src/assets/icons/android-chrome-512x512.png", - "description": "Zitadel is an open-source identity and access management (IAM) solution designed to provide secure authentication, authorization, and user management for modern applications and services. Built with a focus on flexibility, scalability, and security, Zitadel offers a comprehensive set of features for developers and organizations looking to implement robust identity management.", - "install_methods": [ - { - "type": "default", - "script": "ct/zitadel.sh", - "resources": { - "cpu": 1, - "ram": 1024, - "hdd": 8, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": "zitadel-admin@zitadel.localhost", - "password": "Password1!" - }, - "notes": [ - { - "text": "Application credentials: `cat ~/zitadel.creds`", - "type": "info" - }, - { - "text": "Change the ExternalDomain value in `/opt/zitadel/config.yaml` to your domain/hostname/IP and run `bash zitadel-rerun.sh`", - "type": "info" - } - ], - "status": "🚧" -} \ No newline at end of file diff --git a/misc/.app-headers b/misc/.app-headers deleted file mode 100644 index ebdb0ed60..000000000 --- a/misc/.app-headers +++ /dev/null @@ -1,2112 +0,0 @@ -### Generated on 01-24-2025 -################################################## - -### 2fauth.sh -APP=2FAuth - ___ _________ __ __ - |__ \ / ____/ | __ __/ /_/ /_ - __/ // /_ / /| |/ / / / __/ __ \ - / __// __/ / ___ / /_/ / /_/ / / / -/____/_/ /_/ |_\__,_/\__/_/ /_/ - - -### 5etools.sh -APP=5etools - ______ __ __ - / ____/__ / /_____ ____ / /____ - /___ \/ _ \/ __/ __ \/ __ \/ / ___/ - ____/ / __/ /_/ /_/ / /_/ / (__ ) -/_____/\___/\__/\____/\____/_/____/ - - -### actualbudget.sh -APP=Actual Budget - ___ __ __ ____ __ __ - / | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_ - / /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/ - / ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_ -/_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/ - /____/ - -### adguard.sh -APP=Adguard - ___ __ __ - / | ____/ /___ ___ ______ __________/ / - / /| |/ __ / __ `/ / / / __ `/ ___/ __ / - / ___ / /_/ / /_/ / /_/ / /_/ / / / /_/ / -/_/ |_\__,_/\__, /\__,_/\__,_/_/ \__,_/ - /____/ - -### adventurelog.sh -APP=AdventureLog - ___ __ __ __ - / | ____/ / _____ ____ / /___ __________ / / ____ ____ _ - / /| |/ __ / | / / _ \/ __ \/ __/ / / / ___/ _ \/ / / __ \/ __ `/ - / ___ / /_/ /| |/ / __/ / / / /_/ /_/ / / / __/ /___/ /_/ / /_/ / -/_/ |_\__,_/ |___/\___/_/ /_/\__/\__,_/_/ \___/_____/\____/\__, / - /____/ - -### agentdvr.sh -APP=AgentDVR - ___ __ ____ _ ______ - / | ____ ____ ____ / /_/ __ \ | / / __ \ - / /| |/ __ `/ _ \/ __ \/ __/ / / / | / / /_/ / - / ___ / /_/ / __/ / / / /_/ /_/ /| |/ / _, _/ -/_/ |_\__, /\___/_/ /_/\__/_____/ |___/_/ |_| - /____/ - -### alpine-docker.sh -APP=Alpine-Docker - ___ __ _ ____ __ - / | / /___ (_)___ ___ / __ \____ _____/ /_____ _____ - / /| | / / __ \/ / __ \/ _ \______/ / / / __ \/ ___/ //_/ _ \/ ___/ - / ___ |/ / /_/ / / / / / __/_____/ /_/ / /_/ / /__/ ,< / __/ / -/_/ |_/_/ .___/_/_/ /_/\___/ /_____/\____/\___/_/|_|\___/_/ - /_/ - -### alpine-grafana.sh -APP=Alpine-Grafana - ___ __ _ ______ ____ - / | / /___ (_)___ ___ / ____/________ _/ __/___ _____ ____ _ - / /| | / / __ \/ / __ \/ _ \______/ / __/ ___/ __ `/ /_/ __ `/ __ \/ __ `/ - / ___ |/ / /_/ / / / / / __/_____/ /_/ / / / /_/ / __/ /_/ / / / / /_/ / -/_/ |_/_/ .___/_/_/ /_/\___/ \____/_/ \__,_/_/ \__,_/_/ /_/\__,_/ - /_/ - -### alpine-nextcloud.sh -APP=Alpine-Nextcloud - ___ __ _ _ __ __ __ - / | / /___ (_)___ ___ / | / /__ _ __/ /______/ /___ __ __ - / /| | / / __ \/ / __ \/ _ \______/ |/ / _ \| |/_/ __/ ___/ / __ \/ / / / - / ___ |/ / /_/ / / / / / __/_____/ /| / __/> < -/_/ |_/_/ \___/_/ /_/_/ |___/\___/_____/\____/_/|_| - - -### aria2.sh -APP=Aria2 - ___ _ ___ - / | _____(_)___ |__ \ - / /| | / ___/ / __ `/_/ / - / ___ |/ / / / /_/ / __/ -/_/ |_/_/ /_/\__,_/____/ - - -### audiobookshelf.sh -APP=audiobookshelf - ___ __ __ __ ______ - ____ ___ ______/ (_)___ / /_ ____ ____ / /_______/ /_ ___ / / __/ - / __ `/ / / / __ / / __ \/ __ \/ __ \/ __ \/ //_/ ___/ __ \/ _ \/ / /_ -/ /_/ / /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / ,< (__ ) / / / __/ / __/ -\__,_/\__,_/\__,_/_/\____/_.___/\____/\____/_/|_/____/_/ /_/\___/_/_/ - - -### authentik.sh -APP=Authentik - ___ __ __ __ _ __ - / | __ __/ /_/ /_ ___ ____ / /_(_) /__ - / /| |/ / / / __/ __ \/ _ \/ __ \/ __/ / //_/ - / ___ / /_/ / /_/ / / / __/ / / / /_/ / ,< -/_/ |_\__,_/\__/_/ /_/\___/_/ /_/\__/_/_/|_| - - -### autobrr.sh -APP=Autobrr - ___ __ __ - / | __ __/ /_____ / /_ __________ - / /| |/ / / / __/ __ \/ __ \/ ___/ ___/ - / ___ / /_/ / /_/ /_/ / /_/ / / / / -/_/ |_\__,_/\__/\____/_.___/_/ /_/ - - -### bazarr.sh -APP=Bazarr - ____ - / __ )____ _____ ____ ___________ - / __ / __ `/_ / / __ `/ ___/ ___/ - / /_/ / /_/ / / /_/ /_/ / / / / -/_____/\__,_/ /___/\__,_/_/ /_/ - - -### beszel.sh -APP=Beszel - ____ __ - / __ )___ _________ ___ / / - / __ / _ \/ ___/_ / / _ \/ / - / /_/ / __(__ ) / /_/ __/ / -/_____/\___/____/ /___/\___/_/ - - -### blocky.sh -APP=Blocky - ____ __ __ - / __ )/ /___ _____/ /____ __ - / __ / / __ \/ ___/ //_/ / / / - / /_/ / / /_/ / /__/ ,< / /_/ / -/_____/_/\____/\___/_/|_|\__, / - /____/ - -### bookstack.sh -APP=Bookstack - ____ __ __ __ - / __ )____ ____ / /_______/ /_____ ______/ /__ - / __ / __ \/ __ \/ //_/ ___/ __/ __ `/ ___/ //_/ - / /_/ / /_/ / /_/ / ,< (__ ) /_/ /_/ / /__/ ,< -/_____/\____/\____/_/|_/____/\__/\__,_/\___/_/|_| - - -### bunkerweb.sh -APP=BunkerWeb - ____ __ _ __ __ - / __ )__ ______ / /_____ ____| | / /__ / /_ - / __ / / / / __ \/ //_/ _ \/ ___/ | /| / / _ \/ __ \ - / /_/ / /_/ / / / / ,< / __/ / | |/ |/ / __/ /_/ / -/_____/\__,_/_/ /_/_/|_|\___/_/ |__/|__/\___/_.___/ - - -### caddy.sh -APP=Caddy - ______ __ __ - / ____/___ _____/ /___/ /_ __ - / / / __ `/ __ / __ / / / / -/ /___/ /_/ / /_/ / /_/ / /_/ / -\____/\__,_/\__,_/\__,_/\__, / - /____/ - -### calibre-web.sh -APP=Calibre-Web - ______ ___ __ _ __ __ - / ____/___ _/ (_) /_ ________ | | / /__ / /_ - / / / __ `/ / / __ \/ ___/ _ \_____| | /| / / _ \/ __ \ -/ /___/ /_/ / / / /_/ / / / __/_____/ |/ |/ / __/ /_/ / -\____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/ - - -### casaos.sh -APP=CasaOS - ______ ____ _____ - / ____/___ __________ _/ __ \/ ___/ - / / / __ `/ ___/ __ `/ / / /\__ \ -/ /___/ /_/ (__ ) /_/ / /_/ /___/ / -\____/\__,_/____/\__,_/\____//____/ - - -### changedetection.sh -APP=Change Detection - ________ - / ____/ /_ ____ _____ ____ ____ - / / / __ \/ __ `/ __ \/ __ `/ _ \ -/ /___/ / / / /_/ / / / / /_/ / __/ -\____/_/ /_/\__,_/_/ /_/\__, /\___/ - /____/ - ____ __ __ _ - / __ \___ / /____ _____/ /_(_)___ ____ - / / / / _ \/ __/ _ \/ ___/ __/ / __ \/ __ \ - / /_/ / __/ /_/ __/ /__/ /_/ / /_/ / / / / -/_____/\___/\__/\___/\___/\__/_/\____/_/ /_/ - - -### channels.sh -APP=Channels - ________ __ - / ____/ /_ ____ _____ ____ ___ / /____ - / / / __ \/ __ `/ __ \/ __ \/ _ \/ / ___/ -/ /___/ / / / /_/ / / / / / / / __/ (__ ) -\____/_/ /_/\__,_/_/ /_/_/ /_/\___/_/____/ - - -### checkmk.sh -APP=checkmk - __ __ __ - _____/ /_ ___ _____/ /______ ___ / /__ - / ___/ __ \/ _ \/ ___/ //_/ __ `__ \/ //_/ -/ /__/ / / / __/ /__/ ,< / / / / / / ,< -\___/_/ /_/\___/\___/_/|_/_/ /_/ /_/_/|_| - - -### cloudflared.sh -APP=Cloudflared - ________ ________ __ - / ____/ /___ __ ______/ / __/ /___ _________ ____/ / - / / / / __ \/ / / / __ / /_/ / __ `/ ___/ _ \/ __ / -/ /___/ / /_/ / /_/ / /_/ / __/ / /_/ / / / __/ /_/ / -\____/_/\____/\__,_/\__,_/_/ /_/\__,_/_/ \___/\__,_/ - - -### cockpit.sh -APP=Cockpit - ______ __ _ __ - / ____/___ _____/ /______ (_) /_ - / / / __ \/ ___/ //_/ __ \/ / __/ -/ /___/ /_/ / /__/ ,< / /_/ / / /_ -\____/\____/\___/_/|_/ .___/_/\__/ - /_/ - -### commafeed.sh -APP=CommaFeed - ______ ______ __ - / ____/___ ____ ___ ____ ___ ____ _/ ____/__ ___ ____/ / - / / / __ \/ __ `__ \/ __ `__ \/ __ `/ /_ / _ \/ _ \/ __ / -/ /___/ /_/ / / / / / / / / / / / /_/ / __/ / __/ __/ /_/ / -\____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ \___/\___/\__,_/ - - -### cronicle.sh -APP=Cronicle - ______ _ __ - / ____/________ ____ (_)____/ /__ - / / / ___/ __ \/ __ \/ / ___/ / _ \ -/ /___/ / / /_/ / / / / / /__/ / __/ -\____/_/ \____/_/ /_/_/\___/_/\___/ - - -### daemonsync.sh -APP=Daemon Sync - ____ _____ - / __ \____ ____ ____ ___ ____ ____ / ___/__ ______ _____ - / / / / __ `/ _ \/ __ `__ \/ __ \/ __ \ \__ \/ / / / __ \/ ___/ - / /_/ / /_/ / __/ / / / / / /_/ / / / / ___/ / /_/ / / / / /__ -/_____/\__,_/\___/_/ /_/ /_/\____/_/ /_/ /____/\__, /_/ /_/\___/ - /____/ - -### dashy.sh -APP=Dashy - ____ __ - / __ \____ ______/ /_ __ __ - / / / / __ `/ ___/ __ \/ / / / - / /_/ / /_/ (__ ) / / / /_/ / -/_____/\__,_/____/_/ /_/\__, / - /____/ - -### debian.sh -APP=Debian - ____ __ _ - / __ \___ / /_ (_)___ _____ - / / / / _ \/ __ \/ / __ `/ __ \ - / /_/ / __/ /_/ / / /_/ / / / / -/_____/\___/_.___/_/\__,_/_/ /_/ - - -### deconz.sh -APP=deCONZ - __ __________ _ _______ - ____/ /__ / ____/ __ \/ | / /__ / - / __ / _ \/ / / / / / |/ / / / -/ /_/ / __/ /___/ /_/ / /| / / /__ -\__,_/\___/\____/\____/_/ |_/ /____/ - - -### deluge.sh -APP=Deluge - ____ __ - / __ \___ / /_ ______ ____ - / / / / _ \/ / / / / __ `/ _ \ - / /_/ / __/ / /_/ / /_/ / __/ -/_____/\___/_/\__,_/\__, /\___/ - /____/ - -### docker.sh -APP=Docker - ____ __ - / __ \____ _____/ /_____ _____ - / / / / __ \/ ___/ //_/ _ \/ ___/ - / /_/ / /_/ / /__/ ,< / __/ / -/_____/\____/\___/_/|_|\___/_/ - - -### dockge.sh -APP=Dockge - ____ __ - / __ \____ _____/ /______ ____ - / / / / __ \/ ___/ //_/ __ `/ _ \ - / /_/ / /_/ / /__/ ,< / /_/ / __/ -/_____/\____/\___/_/|_|\__, /\___/ - /____/ - -### dotnetaspwebapi.sh -APP=Dotnet ASP Web API - ____ __ __ ___ _____ ____ _ __ __ - / __ \____ / /_____ ___ / /_ / | / ___// __ \ | | / /__ / /_ - / / / / __ \/ __/ __ \/ _ \/ __/ / /| | \__ \/ /_/ / | | /| / / _ \/ __ \ - / /_/ / /_/ / /_/ / / / __/ /_ / ___ |___/ / ____/ | |/ |/ / __/ /_/ / -/_____/\____/\__/_/ /_/\___/\__/ /_/ |_/____/_/ |__/|__/\___/_.___/ - - ___ ____ ____ - / | / __ \/ _/ - / /| | / /_/ // / - / ___ |/ ____// / -/_/ |_/_/ /___/ - - -### emby.sh -APP=Emby - ______ __ - / ____/___ ___ / /_ __ __ - / __/ / __ `__ \/ __ \/ / / / - / /___/ / / / / / /_/ / /_/ / -/_____/_/ /_/ /_/_.___/\__, / - /____/ - -### emqx.sh -APP=EMQX - ________ _______ _ __ - / ____/ |/ / __ \ | |/ / - / __/ / /|_/ / / / / | / - / /___/ / / / /_/ / / | -/_____/_/ /_/\___\_\/_/|_| - - -### ersatztv.sh -APP=ErsatzTV - ______ __ _______ __ - / ____/_____________ _/ /_____/_ __/ | / / - / __/ / ___/ ___/ __ `/ __/_ / / / | | / / - / /___/ / (__ ) /_/ / /_ / /_/ / | |/ / -/_____/_/ /____/\__,_/\__/ /___/_/ |___/ - - -### esphome.sh -APP=ESPHome - ___________ ____ __ __ - / ____/ ___// __ \/ / / /___ ____ ___ ___ - / __/ \__ \/ /_/ / /_/ / __ \/ __ `__ \/ _ \ - / /___ ___/ / ____/ __ / /_/ / / / / / / __/ -/_____//____/_/ /_/ /_/\____/_/ /_/ /_/\___/ - - -### evcc.sh -APP=evcc - - ___ _ ____________ - / _ \ | / / ___/ ___/ -/ __/ |/ / /__/ /__ -\___/|___/\___/\___/ - - -### fenrus.sh -APP=Fenrus - ______ - / ____/__ ____ _______ _______ - / /_ / _ \/ __ \/ ___/ / / / ___/ - / __/ / __/ / / / / / /_/ (__ ) -/_/ \___/_/ /_/_/ \__,_/____/ - - -### fhem.sh -APP=FHEM - ________ __________ ___ - / ____/ / / / ____/ |/ / - / /_ / /_/ / __/ / /|_/ / - / __/ / __ / /___/ / / / -/_/ /_/ /_/_____/_/ /_/ - - -### firefly.sh -APP=Firefly - _______ ______ - / ____(_)_______ / __/ /_ __ - / /_ / / ___/ _ \/ /_/ / / / / - / __/ / / / / __/ __/ / /_/ / -/_/ /_/_/ \___/_/ /_/\__, / - /____/ - -### flaresolverr.sh -APP=FlareSolverr - ________ _____ __ - / ____/ /___ _________ / ___/____ / / _____ __________ - / /_ / / __ `/ ___/ _ \\__ \/ __ \/ / | / / _ \/ ___/ ___/ - / __/ / / /_/ / / / __/__/ / /_/ / /| |/ / __/ / / / -/_/ /_/\__,_/_/ \___/____/\____/_/ |___/\___/_/ /_/ - - -### flowiseai.sh -APP=FlowiseAI - ________ _ ___ ____ - / ____/ /___ _ __(_)_______ / | / _/ - / /_ / / __ \ | /| / / / ___/ _ \/ /| | / / - / __/ / / /_/ / |/ |/ / (__ ) __/ ___ |_/ / -/_/ /_/\____/|__/|__/_/____/\___/_/ |_/___/ - - -### forgejo.sh -APP=Forgejo - ______ _ - / ____/___ _________ ____ (_)___ - / /_ / __ \/ ___/ __ `/ _ \ / / __ \ - / __/ / /_/ / / / /_/ / __/ / / /_/ / -/_/ \____/_/ \__, /\___/_/ /\____/ - /____/ /___/ - -### frigate.sh -APP=Frigate - ______ _ __ - / ____/____(_)___ _____ _/ /____ - / /_ / ___/ / __ `/ __ `/ __/ _ \ - / __/ / / / / /_/ / /_/ / /_/ __/ -/_/ /_/ /_/\__, /\__,_/\__/\___/ - /____/ - -### ghost.sh -APP=Ghost - ________ __ - / ____/ /_ ____ _____/ /_ - / / __/ __ \/ __ \/ ___/ __/ -/ /_/ / / / / /_/ (__ ) /_ -\____/_/ /_/\____/____/\__/ - - -### gitea.sh -APP=Gitea - _______ __ - / ____(_) /____ ____ _ - / / __/ / __/ _ \/ __ `/ -/ /_/ / / /_/ __/ /_/ / -\____/_/\__/\___/\__,_/ - - -### glance.sh -APP=Glance - ________ - / ____/ /___ _____ ________ - / / __/ / __ `/ __ \/ ___/ _ \ -/ /_/ / / /_/ / / / / /__/ __/ -\____/_/\__,_/_/ /_/\___/\___/ - - -### glpi.sh -APP=GLPI - ________ ____ ____ - / ____/ / / __ \/ _/ - / / __/ / / /_/ // / -/ /_/ / /___/ ____// / -\____/_____/_/ /___/ - - -### go2rtc.sh -APP=go2rtc - ___ __ - ____ _____ |__ \ _____/ /______ - / __ `/ __ \__/ // ___/ __/ ___/ - / /_/ / /_/ / __// / / /_/ /__ - \__, /\____/____/_/ \__/\___/ -/____/ - -### gokapi.sh -APP=Gokapi - ______ __ _ - / ____/___ / /______ _____ (_) - / / __/ __ \/ //_/ __ `/ __ \/ / -/ /_/ / /_/ / ,< / /_/ / /_/ / / -\____/\____/_/|_|\__,_/ .___/_/ - /_/ - -### gotify.sh -APP=Gotify - ______ __ _ ____ - / ____/___ / /_(_) __/_ __ - / / __/ __ \/ __/ / /_/ / / / -/ /_/ / /_/ / /_/ / __/ /_/ / -\____/\____/\__/_/_/ \__, / - /____/ - -### grafana.sh -APP=Grafana - ______ ____ - / ____/________ _/ __/___ _____ ____ _ - / / __/ ___/ __ `/ /_/ __ `/ __ \/ __ `/ -/ /_/ / / / /_/ / __/ /_/ / / / / /_/ / -\____/_/ \__,_/_/ \__,_/_/ /_/\__,_/ - - -### grist.sh -APP=Grist - ______ _ __ - / ____/____(_)____/ /_ - / / __/ ___/ / ___/ __/ -/ /_/ / / / (__ ) /_ -\____/_/ /_/____/\__/ - - -### grocy.sh -APP=grocy - - ____ __________ _______ __ - / __ `/ ___/ __ \/ ___/ / / / - / /_/ / / / /_/ / /__/ /_/ / - \__, /_/ \____/\___/\__, / -/____/ /____/ - -### headscale.sh -APP=Headscale - __ __ __ __ - / / / /__ ____ _____/ /_____________ _/ /__ - / /_/ / _ \/ __ `/ __ / ___/ ___/ __ `/ / _ \ - / __ / __/ /_/ / /_/ (__ ) /__/ /_/ / / __/ -/_/ /_/\___/\__,_/\__,_/____/\___/\__,_/_/\___/ - - -### heimdall-dashboard.sh -APP=Heimdall-Dashboard - __ __ _ __ ____ ____ __ __ - / / / /__ (_)___ ___ ____/ /___ _/ / / / __ \____ ______/ /_ / /_ - / /_/ / _ \/ / __ `__ \/ __ / __ `/ / /_____/ / / / __ `/ ___/ __ \/ __ \ - / __ / __/ / / / / / / /_/ / /_/ / / /_____/ /_/ / /_/ (__ ) / / / /_/ / -/_/ /_/\___/_/_/ /_/ /_/\__,_/\__,_/_/_/ /_____/\__,_/____/_/ /_/_.___/ - - __ - ____ ____ __________/ / - / __ \/ __ `/ ___/ __ / -/ /_/ / /_/ / / / /_/ / -\____/\__,_/_/ \__,_/ - - -### hivemq.sh -APP=HiveMQ - __ ___ __ _______ - / / / (_) _____ / |/ / __ \ - / /_/ / / | / / _ \/ /|_/ / / / / - / __ / /| |/ / __/ / / / /_/ / -/_/ /_/_/ |___/\___/_/ /_/\___\_\ - - -### hoarder.sh -APP=Hoarder - __ __ __ - / / / /___ ____ __________/ /__ _____ - / /_/ / __ \/ __ `/ ___/ __ / _ \/ ___/ - / __ / /_/ / /_/ / / / /_/ / __/ / -/_/ /_/\____/\__,_/_/ \__,_/\___/_/ - - -### homarr.sh -APP=Homarr - __ __ - / / / /___ ____ ___ ____ ___________ - / /_/ / __ \/ __ `__ \/ __ `/ ___/ ___/ - / __ / /_/ / / / / / / /_/ / / / / -/_/ /_/\____/_/ /_/ /_/\__,_/_/ /_/ - - -### homeassistant-core.sh -APP=Home Assistant-Core - __ __ - / / / /___ ____ ___ ___ - / /_/ / __ \/ __ `__ \/ _ \ - / __ / /_/ / / / / / / __/ -/_/ /_/\____/_/ /_/ /_/\___/ - - ___ _ __ __ ______ - / | __________(_)____/ /_____ _____ / /_ / ____/___ ________ - / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/_____/ / / __ \/ ___/ _ \ - / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_/_____/ /___/ /_/ / / / __/ -/_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ \____/\____/_/ \___/ - - -### homeassistant.sh -APP=Home Assistant - __ __ ___ _ __ __ - / / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_ - / /_/ / __ \/ __ `__ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/ - / __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ -/_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ - - -### homebox.sh -APP=HomeBox - __ __ ____ - / / / /___ ____ ___ ___ / __ )____ _ __ - / /_/ / __ \/ __ `__ \/ _ \/ __ / __ \| |/_/ - / __ / /_/ / / / / / / __/ /_/ / /_/ /> < -/_/ /_/\____/_/ /_/ /_/\___/_____/\____/_/|_| - - -### homebridge.sh -APP=Homebridge - __ __ __ _ __ - / / / /___ ____ ___ ___ / /_ _____(_)___/ /___ ____ - / /_/ / __ \/ __ `__ \/ _ \/ __ \/ ___/ / __ / __ `/ _ \ - / __ / /_/ / / / / / / __/ /_/ / / / / /_/ / /_/ / __/ -/_/ /_/\____/_/ /_/ /_/\___/_.___/_/ /_/\__,_/\__, /\___/ - /____/ - -### homepage.sh -APP=Homepage - __ __ - / / / /___ ____ ___ ___ ____ ____ _____ ____ - / /_/ / __ \/ __ `__ \/ _ \/ __ \/ __ `/ __ `/ _ \ - / __ / /_/ / / / / / / __/ /_/ / /_/ / /_/ / __/ -/_/ /_/\____/_/ /_/ /_/\___/ .___/\__,_/\__, /\___/ - /_/ /____/ - -### homer.sh -APP=Homer - __ __ - / / / /___ ____ ___ ___ _____ - / /_/ / __ \/ __ `__ \/ _ \/ ___/ - / __ / /_/ / / / / / / __/ / -/_/ /_/\____/_/ /_/ /_/\___/_/ - - -### hyperhdr.sh -APP=HyperHDR - __ __ __ ______ ____ - / / / /_ ______ ___ _____/ / / / __ \/ __ \ - / /_/ / / / / __ \/ _ \/ ___/ /_/ / / / / /_/ / - / __ / /_/ / /_/ / __/ / / __ / /_/ / _, _/ -/_/ /_/\__, / .___/\___/_/ /_/ /_/_____/_/ |_| - /____/_/ - -### hyperion.sh -APP=Hyperion - __ __ _ - / / / /_ ______ ___ _____(_)___ ____ - / /_/ / / / / __ \/ _ \/ ___/ / __ \/ __ \ - / __ / /_/ / /_/ / __/ / / / /_/ / / / / -/_/ /_/\__, / .___/\___/_/ /_/\____/_/ /_/ - /____/_/ - -### influxdb.sh -APP=InfluxDB - ____ ______ ____ ____ - / _/___ / __/ /_ ___ __/ __ \/ __ ) - / // __ \/ /_/ / / / / |/_/ / / / __ | - _/ // / / / __/ / /_/ /> < -/_/ |_/\___/\__/_____/\____/_/|_| - - -### nextcloudpi.sh -APP=NextCloudPi - _ __ __ ________ ______ _ - / | / /__ _ __/ /_/ ____/ /___ __ ______/ / __ \(_) - / |/ / _ \| |/_/ __/ / / / __ \/ / / / __ / /_/ / / - / /| / __/> < / ____/ / / /_/ /> < -/_/ \__,_/ .___/\___/_/ /_/\___/____/____/ /_/ /_/\__, /_/|_| - /_/ /____/ - -### part-db.sh -APP=Part-DB - ____ __ ____ ____ - / __ \____ ______/ /_ / __ \/ __ ) - / /_/ / __ `/ ___/ __/_____/ / / / __ | - / ____/ /_/ / / / /_/_____/ /_/ / /_/ / -/_/ \__,_/_/ \__/ /_____/_____/ - - -### pbs.sh -APP=PBS - ____ ____ _____ - / __ \/ __ ) ___/ - / /_/ / __ \__ \ - / ____/ /_/ /__/ / -/_/ /_____/____/ - - -### peanut.sh -APP=PeaNUT - ____ _ ____ ________ - / __ \___ ____ _/ | / / / / /_ __/ - / /_/ / _ \/ __ `/ |/ / / / / / / - / ____/ __/ /_/ / /| / /_/ / / / -/_/ \___/\__,_/_/ |_/\____/ /_/ - - -### petio.sh -APP=Petio - ____ __ _ - / __ \___ / /_(_)___ - / /_/ / _ \/ __/ / __ \ - / ____/ __/ /_/ / /_/ / -/_/ \___/\__/_/\____/ - - -### pf2etools.sh -APP=Pf2eTools - ____ _______ ______ __ - / __ \/ __/__ \ ___/_ __/___ ____ / /____ - / /_/ / /_ __/ // _ \/ / / __ \/ __ \/ / ___/ - / ____/ __// __// __/ / / /_/ / /_/ / (__ ) -/_/ /_/ /____/\___/_/ \____/\____/_/____/ - - -### photoprism.sh -APP=PhotoPrism - ____ __ __ ____ _ - / __ \/ /_ ____ / /_____ / __ \_____(_)________ ___ - / /_/ / __ \/ __ \/ __/ __ \/ /_/ / ___/ / ___/ __ `__ \ - / ____/ / / / /_/ / /_/ /_/ / ____/ / / (__ ) / / / / / -/_/ /_/ /_/\____/\__/\____/_/ /_/ /_/____/_/ /_/ /_/ - - -### phpipam.sh -APP=phpIPAM - __ ________ ___ __ ___ - ____ / /_ ____ / _/ __ \/ | / |/ / - / __ \/ __ \/ __ \ / // /_/ / /| | / /|_/ / - / /_/ / / / / /_/ // // ____/ ___ |/ / / / - / .___/_/ /_/ .___/___/_/ /_/ |_/_/ /_/ -/_/ /_/ - -### pialert.sh -APP=PiAlert - ____ _ ___ __ __ - / __ \(_) | / /__ _____/ /_ - / /_/ / / /| | / / _ \/ ___/ __/ - / ____/ / ___ |/ / __/ / / /_ -/_/ /_/_/ |_/_/\___/_/ \__/ - - -### pihole.sh -APP=Pihole - ____ _ __ __ - / __ \(_) /_ ____ / /__ - / /_/ / / __ \/ __ \/ / _ \ - / ____/ / / / / /_/ / / __/ -/_/ /_/_/ /_/\____/_/\___/ - - -### pingvin.sh -APP=Pingvin - ____ _ _ - / __ \(_)___ ____ __ __(_)___ - / /_/ / / __ \/ __ `/ | / / / __ \ - / ____/ / / / / /_/ /| |/ / / / / / -/_/ /_/_/ /_/\__, / |___/_/_/ /_/ - /____/ - -### plex.sh -APP=Plex - ____ __ - / __ \/ /__ _ __ - / /_/ / / _ \| |/_/ - / ____/ / __/> < -/_/ /_/\___/_/|_| - - -### pocketbase.sh -APP=Pocketbase - ____ __ __ __ - / __ \____ _____/ /_____ / /_/ /_ ____ _________ - / /_/ / __ \/ ___/ //_/ _ \/ __/ __ \/ __ `/ ___/ _ \ - / ____/ /_/ / /__/ ,< / __/ /_/ /_/ / /_/ (__ ) __/ -/_/ \____/\___/_/|_|\___/\__/_.___/\__,_/____/\___/ - - -### podman-homeassistant.sh -APP=Podman-Home Assistant - ____ __ __ __ - / __ \____ ____/ /___ ___ ____ _____ / / / /___ ____ ___ ___ - / /_/ / __ \/ __ / __ `__ \/ __ `/ __ \______/ /_/ / __ \/ __ `__ \/ _ \ - / ____/ /_/ / /_/ / / / / / / /_/ / / / /_____/ __ / /_/ / / / / / / __/ -/_/ \____/\__,_/_/ /_/ /_/\__,_/_/ /_/ /_/ /_/\____/_/ /_/ /_/\___/ - - ___ _ __ __ - / | __________(_)____/ /_____ _____ / /_ - / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/ - / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ -/_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ - - -### podman.sh -APP=Podman - ____ __ - / __ \____ ____/ /___ ___ ____ _____ - / /_/ / __ \/ __ / __ `__ \/ __ `/ __ \ - / ____/ /_/ / /_/ / / / / / / /_/ / / / / -/_/ \____/\__,_/_/ /_/ /_/\__,_/_/ /_/ - - -### postgresql.sh -APP=PostgreSQL - ____ __ _____ ____ __ - / __ \____ _____/ /_____ _________ / ___// __ \ / / - / /_/ / __ \/ ___/ __/ __ `/ ___/ _ \\__ \/ / / / / / - / ____/ /_/ (__ ) /_/ /_/ / / / __/__/ / /_/ / / /___ -/_/ \____/____/\__/\__, /_/ \___/____/\___\_\/_____/ - /____/ - -### projectsend.sh -APP=ProjectSend - ____ _ __ _____ __ - / __ \_________ (_)__ _____/ /_/ ___/___ ____ ____/ / - / /_/ / ___/ __ \ / / _ \/ ___/ __/\__ \/ _ \/ __ \/ __ / - / ____/ / / /_/ / / / __/ /__/ /_ ___/ / __/ / / / /_/ / -/_/ /_/ \____/_/ /\___/\___/\__//____/\___/_/ /_/\__,_/ - /___/ - -### prometheus-alertmanager.sh -APP=Prometheus-Alertmanager - ____ __ __ ___ __ - / __ \_________ ____ ___ ___ / /_/ /_ ___ __ _______ / | / / - / /_/ / ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/_____/ /| | / / - / ____/ / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ )_____/ ___ |/ / -/_/ /_/ \____/_/ /_/ /_/\___/\__/_/ /_/\___/\__,_/____/ /_/ |_/_/ - - __ - ___ _____/ /_____ ___ ____ _____ ____ _____ ____ _____ - / _ \/ ___/ __/ __ `__ \/ __ `/ __ \/ __ `/ __ `/ _ \/ ___/ -/ __/ / / /_/ / / / / / /_/ / / / / /_/ / /_/ / __/ / -\___/_/ \__/_/ /_/ /_/\__,_/_/ /_/\__,_/\__, /\___/_/ - /____/ - -### prometheus.sh -APP=Prometheus - ____ __ __ - / __ \_________ ____ ___ ___ / /_/ /_ ___ __ _______ - / /_/ / ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/ - / ____/ / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ ) -/_/ /_/ \____/_/ /_/ /_/\___/\__/_/ /_/\___/\__,_/____/ - - -### prowlarr.sh -APP=Prowlarr - ____ __ - / __ \_________ _ __/ /___ ___________ - / /_/ / ___/ __ \ | /| / / / __ `/ ___/ ___/ - / ____/ / / /_/ / |/ |/ / / /_/ / / / / -/_/ /_/ \____/|__/|__/_/\__,_/_/ /_/ - - -### proxmox-datacenter-manager.sh -APP=proxmox-datacenter-manager - __ __ - ____ _________ _ ______ ___ ____ _ __ ____/ /___ _/ /_____ _ - / __ \/ ___/ __ \| |/_/ __ `__ \/ __ \| |/_/_____/ __ / __ `/ __/ __ `/ - / /_/ / / / /_/ /> < -/____/\__,_/_.___/_.___/_/_/|_| - - -### zammad.sh -APP=Zammad - _____ __ -/__ / ____ _____ ___ ____ ___ ____ _____/ / - / / / __ `/ __ `__ \/ __ `__ \/ __ `/ __ / - / /__/ /_/ / / / / / / / / / / / /_/ / /_/ / -/____/\__,_/_/ /_/ /_/_/ /_/ /_/\__,_/\__,_/ - - -### zigbee2mqtt.sh -APP=Zigbee2MQTT - _____ _ __ ___ __ _______ ____________ -/__ / (_)___ _/ /_ ___ ___ |__ \ / |/ / __ \/_ __/_ __/ - / / / / __ `/ __ \/ _ \/ _ \__/ // /|_/ / / / / / / / / - / /__/ / /_/ / /_/ / __/ __/ __// / / / /_/ / / / / / -/____/_/\__, /_.___/\___/\___/____/_/ /_/\___\_\/_/ /_/ - /____/ - -### zipline.sh -APP=Zipline - _____ _ ___ -/__ / (_)___ / (_)___ ___ - / / / / __ \/ / / __ \/ _ \ - / /__/ / /_/ / / / / / / __/ -/____/_/ .___/_/_/_/ /_/\___/ - /_/ - -### zoraxy.sh -APP=Zoraxy - _____ -/__ / ____ _________ __ ____ __ - / / / __ \/ ___/ __ `/ |/_/ / / / - / /__/ /_/ / / / /_/ /> /dev/null 2>&1 msg_ok "Customized Container" fi + + echo "bash -c \"\$(curl -fsSL https://github.com/community-scripts/ProxmoxVE/raw/main/ct/${app}.sh)\"" >/usr/bin/update + chmod +x /usr/bin/update } diff --git a/misc/build.func b/misc/build.func index cd244f53c..1a3d85a3d 100644 --- a/misc/build.func +++ b/misc/build.func @@ -28,15 +28,13 @@ color() { # Formatting CL=$(echo "\033[m") - UL=$(echo "\033[4m") BOLD=$(echo "\033[1m") - BFR="\\r\\033[K" HOLD=" " TAB=" " # Icons - CM="${TAB}βœ”οΈ${TAB}${CL}" - CROSS="${TAB}βœ–οΈ${TAB}${CL}" + CM="${TAB}βœ”οΈ${TAB}" + CROSS="${TAB}βœ–οΈ${TAB}" INFO="${TAB}πŸ’‘${TAB}${CL}" OS="${TAB}πŸ–₯️${TAB}${CL}" OSVERSION="${TAB}🌟${TAB}${CL}" @@ -80,58 +78,75 @@ error_handler() { } # This function displays an informational message with logging support. +declare -A MSG_INFO_SHOWN +SPINNER_ACTIVE=0 +SPINNER_PID="" +SPINNER_MSG="" + +trap 'stop_spinner' EXIT INT TERM HUP + start_spinner() { local msg="$1" - local frames=('β ‹' 'β ™' 'β Ή' 'β Έ' 'β Ό' 'β ΄' 'β ¦' 'β §' 'β ‡' '⠏') + local frames=(β ‹ β ™ β Ή β Έ β Ό β ΄ β ¦ β § β ‡ ⠏) local spin_i=0 local interval=0.1 - local term_width=$(tput cols) + + SPINNER_MSG="$msg" + printf "\r\e[2K" >&2 { - while [ "${SPINNER_ACTIVE:-1}" -eq 1 ]; do - printf "\r\e[2K${frames[spin_i]} ${YW}%b${CL}" "$msg" >&2 + while [[ "$SPINNER_ACTIVE" -eq 1 ]]; do + printf "\r\e[2K%s %b" "${frames[spin_i]}" "${YW}${SPINNER_MSG}${CL}" >&2 spin_i=$(((spin_i + 1) % ${#frames[@]})) sleep "$interval" done } & SPINNER_PID=$! + disown "$SPINNER_PID" +} + +stop_spinner() { + if [[ ${SPINNER_PID+v} && -n "$SPINNER_PID" ]] && kill -0 "$SPINNER_PID" 2>/dev/null; then + kill "$SPINNER_PID" 2>/dev/null + sleep 0.1 + kill -0 "$SPINNER_PID" 2>/dev/null && kill -9 "$SPINNER_PID" 2>/dev/null + wait "$SPINNER_PID" 2>/dev/null || true + fi + SPINNER_ACTIVE=0 + unset SPINNER_PID +} + +spinner_guard() { + if [[ "$SPINNER_ACTIVE" -eq 1 ]] && [[ -n "$SPINNER_PID" ]]; then + kill "$SPINNER_PID" 2>/dev/null + wait "$SPINNER_PID" 2>/dev/null || true + SPINNER_ACTIVE=0 + unset SPINNER_PID + fi } msg_info() { local msg="$1" - if [ "${SPINNER_ACTIVE:-0}" -eq 1 ]; then - return - fi + [[ -n "${MSG_INFO_SHOWN["$msg"]+x}" ]] && return + MSG_INFO_SHOWN["$msg"]=1 + spinner_guard SPINNER_ACTIVE=1 start_spinner "$msg" } msg_ok() { - if [ -n "${SPINNER_PID:-}" ] && ps -p "$SPINNER_PID" >/dev/null 2>&1; then - kill "$SPINNER_PID" >/dev/null 2>&1 - wait "$SPINNER_PID" 2>/dev/null || true - fi - local msg="$1" - printf "\r\e[2K${CM}${GN}%b${CL}\n" "$msg" >&2 - unset SPINNER_PID - SPINNER_ACTIVE=0 - - log_message "OK" "$msg" + stop_spinner + printf "\r\e[2K%s %b\n" "${CM}" "${GN}${msg}${CL}" >&2 + unset MSG_INFO_SHOWN["$msg"] } msg_error() { - if [ -n "${SPINNER_PID:-}" ] && ps -p "$SPINNER_PID" >/dev/null 2>&1; then - kill "$SPINNER_PID" >/dev/null 2>&1 - wait "$SPINNER_PID" 2>/dev/null || true - fi - + stop_spinner local msg="$1" - printf "\r\e[2K${CROSS}${RD}%b${CL}\n" "$msg" >&2 - unset SPINNER_PID - SPINNER_ACTIVE=0 + printf "\r\e[2K%s %b\n" "${CROSS}" "${RD}${msg}${CL}" >&2 log_message "ERROR" "$msg" } @@ -714,7 +729,7 @@ advanced_settings() { fi echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}" - if MTU1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default [1500])" 8 58 --title "MTU SIZE" 3>&1 1>&2 2>&3); then + if MTU1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default [The MTU of your selected vmbr, default is 1500])" 8 58 --title "MTU SIZE" 3>&1 1>&2 2>&3); then if [ -z $MTU1 ]; then MTU1="Default" MTU="" @@ -1138,7 +1153,7 @@ EOF fi if [ "$CT_TYPE" == "0" ]; then - if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" ]]; then + if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" || "$APP" == "FileFlows" ]]; then cat <>$LXC_CONFIG # VAAPI hardware transcoding lxc.cgroup2.devices.allow: c 226:0 rwm @@ -1150,7 +1165,7 @@ lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,creat EOF fi else - if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" ]]; then + if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" || "$APP" == "FileFlows" ]]; then if [[ -e "/dev/dri/renderD128" ]]; then if [[ -e "/dev/dri/card0" ]]; then cat <>$LXC_CONFIG @@ -1253,21 +1268,21 @@ exit_script() { #200 exit codes indicate error in create_lxc.sh #100 exit codes indicate error in install.func - if [ $exit_code -ne 0 ]; then + if [ $exit_code -ne 0 ]; then case $exit_code in - 100) post_update_to_api "failed" "100: Unexpected error in create_lxc.sh" ;; - 101) post_update_to_api "failed" "101: No network connection detected in create_lxc.sh" ;; - 200) post_update_to_api "failed" "200: LXC creation failed in create_lxc.sh" ;; - 201) post_update_to_api "failed" "201: Invalid Storage class in create_lxc.sh" ;; - 202) post_update_to_api "failed" "202: User aborted menu in create_lxc.sh" ;; - 203) post_update_to_api "failed" "203: CTID not set in create_lxc.sh" ;; - 204) post_update_to_api "failed" "204: PCT_OSTYPE not set in create_lxc.sh" ;; - 205) post_update_to_api "failed" "205: CTID cannot be less than 100 in create_lxc.sh" ;; - 206) post_update_to_api "failed" "206: CTID already in use in create_lxc.sh" ;; - 207) post_update_to_api "failed" "207: Template not found in create_lxc.sh" ;; - 208) post_update_to_api "failed" "208: Error downloading template in create_lxc.sh" ;; - 209) post_update_to_api "failed" "209: Container creation failed, but template is intact in create_lxc.sh" ;; - *) post_update_to_api "failed" "Unknown error, exit code: $exit_code in create_lxc.sh" ;; + 100) post_update_to_api "failed" "100: Unexpected error in create_lxc.sh" ;; + 101) post_update_to_api "failed" "101: No network connection detected in create_lxc.sh" ;; + 200) post_update_to_api "failed" "200: LXC creation failed in create_lxc.sh" ;; + 201) post_update_to_api "failed" "201: Invalid Storage class in create_lxc.sh" ;; + 202) post_update_to_api "failed" "202: User aborted menu in create_lxc.sh" ;; + 203) post_update_to_api "failed" "203: CTID not set in create_lxc.sh" ;; + 204) post_update_to_api "failed" "204: PCT_OSTYPE not set in create_lxc.sh" ;; + 205) post_update_to_api "failed" "205: CTID cannot be less than 100 in create_lxc.sh" ;; + 206) post_update_to_api "failed" "206: CTID already in use in create_lxc.sh" ;; + 207) post_update_to_api "failed" "207: Template not found in create_lxc.sh" ;; + 208) post_update_to_api "failed" "208: Error downloading template in create_lxc.sh" ;; + 209) post_update_to_api "failed" "209: Container creation failed, but template is intact in create_lxc.sh" ;; + *) post_update_to_api "failed" "Unknown error, exit code: $exit_code in create_lxc.sh" ;; esac fi } diff --git a/misc/figlet.tar.xz b/misc/figlet.tar.xz deleted file mode 100644 index 3a2308eba..000000000 Binary files a/misc/figlet.tar.xz and /dev/null differ diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh index ec57f7ded..479831c17 100644 --- a/misc/filebrowser.sh +++ b/misc/filebrowser.sh @@ -10,10 +10,11 @@ function header_info { _______ __ ____ / ____(_) /__ / __ )_________ _ __________ _____ / /_ / / / _ \/ __ / ___/ __ \ | /| / / ___/ _ \/ ___/ - / __/ / / / __/ /_/ / / / /_/ / |/ |/ (__ ) __/ / -/_/ /_/_/\___/_____/_/ \____/|__/|__/____/\___/_/ + / __/ / / / __/ /_/ / / / /_/ / |/ |/ (__ ) __/ / +/_/ /_/_/\___/_____/_/ \____/|__/|__/____/\___/_/ EOF } + YW=$(echo "\033[33m") GN=$(echo "\033[1;92m") RD=$(echo "\033[01;31m") @@ -25,11 +26,31 @@ INFO="${BL}ℹ️${CL}" APP="FileBrowser" INSTALL_PATH="/usr/local/bin/filebrowser" -SERVICE_PATH="/etc/systemd/system/filebrowser.service" DB_PATH="/usr/local/community-scripts/filebrowser.db" -IP=$(hostname -I | awk '{print $1}') DEFAULT_PORT=8080 +# Get first non-loopback IP & Detect primary network interface dynamically +IFACE=$(ip -4 route | awk '/default/ {print $5; exit}') +IP=$(ip -4 addr show "$IFACE" | awk '/inet / {print $2}' | cut -d/ -f1 | head -n 1) + +[[ -z "$IP" ]] && IP=$(hostname -I | awk '{print $1}') +[[ -z "$IP" ]] && IP="127.0.0.1" + + +# Detect OS +if [[ -f "/etc/alpine-release" ]]; then + OS="Alpine" + SERVICE_PATH="/etc/init.d/filebrowser" + PKG_MANAGER="apk add --no-cache" +elif [[ -f "/etc/debian_version" ]]; then + OS="Debian" + SERVICE_PATH="/etc/systemd/system/filebrowser.service" + PKG_MANAGER="apt-get install -y" +else + echo -e "${CROSS} Unsupported OS detected. Exiting." + exit 1 +fi + header_info function msg_info() { @@ -52,8 +73,15 @@ if [ -f "$INSTALL_PATH" ]; then read -r -p "Would you like to uninstall ${APP}? (y/N): " uninstall_prompt if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then msg_info "Uninstalling ${APP}" - systemctl disable -q --now filebrowser.service - rm -f "$INSTALL_PATH" "$DB_PATH" "$SERVICE_PATH" + if [[ "$OS" == "Debian" ]]; then + systemctl disable --now filebrowser.service &>/dev/null + rm -f "$SERVICE_PATH" + else + rc-service filebrowser stop &>/dev/null + rc-update del filebrowser &>/dev/null + rm -f "$SERVICE_PATH" + fi + rm -f "$INSTALL_PATH" "$DB_PATH" msg_ok "${APP} has been uninstalled." exit 0 fi @@ -61,7 +89,8 @@ if [ -f "$INSTALL_PATH" ]; then read -r -p "Would you like to update ${APP}? (y/N): " update_prompt if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then msg_info "Updating ${APP}" - curl -fsSL https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null + wget -qO- https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null + chmod +x "$INSTALL_PATH" msg_ok "Updated ${APP}" exit 0 else @@ -76,26 +105,30 @@ PORT=${PORT:-$DEFAULT_PORT} read -r -p "Would you like to install ${APP}? (y/n): " install_prompt if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then - msg_info "Installing ${APP}" - apt-get install -y curl &>/dev/null - curl -fsSL https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null + msg_info "Installing ${APP} on ${OS}" + $PKG_MANAGER wget tar curl &>/dev/null + wget -qO- https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null + chmod +x "$INSTALL_PATH" msg_ok "Installed ${APP}" msg_info "Creating FileBrowser directory" mkdir -p /usr/local/community-scripts chown root:root /usr/local/community-scripts chmod 755 /usr/local/community-scripts + touch "$DB_PATH" + chown root:root "$DB_PATH" + chmod 644 "$DB_PATH" msg_ok "Directory created successfully" read -r -p "Would you like to use No Authentication? (y/N): " auth_prompt if [[ "${auth_prompt,,}" =~ ^(y|yes)$ ]]; then msg_info "Configuring No Authentication" - cd /usr/local/community-scripts - filebrowser config init -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null - filebrowser config set -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null - filebrowser config init --auth.method=noauth &>/dev/null - filebrowser config set --auth.method=noauth &>/dev/null - filebrowser users add ID 1 --perm.admin &>/dev/null + cd /usr/local/community-scripts + filebrowser config init -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null + filebrowser config set -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null + filebrowser config init --auth.method=noauth &>/dev/null + filebrowser config set --auth.method=noauth &>/dev/null + filebrowser users add ID 1 --perm.admin &>/dev/null msg_ok "No Authentication configured" else msg_info "Setting up default authentication" @@ -107,7 +140,8 @@ if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then fi msg_info "Creating service" - cat < "$SERVICE_PATH" + if [[ "$OS" == "Debian" ]]; then + cat < "$SERVICE_PATH" [Unit] Description=Filebrowser After=network-online.target @@ -115,13 +149,33 @@ After=network-online.target [Service] User=root WorkingDirectory=/usr/local/community-scripts -ExecStart=/usr/local/bin/filebrowser -r / -d "$DB_PATH" -p "$PORT" +ExecStartPre=/bin/touch /usr/local/community-scripts/filebrowser.db +ExecStartPre=/usr/local/bin/filebrowser config set -a "0.0.0.0" -p ${PORT} -d /usr/local/community-scripts/filebrowser.db +ExecStart=/usr/local/bin/filebrowser -r / -d /usr/local/community-scripts/filebrowser.db -p ${PORT} Restart=always [Install] WantedBy=multi-user.target EOF - systemctl enable -q --now filebrowser.service + systemctl enable -q --now filebrowser + else + cat < "$SERVICE_PATH" +#!/sbin/openrc-run + +command="/usr/local/bin/filebrowser" +command_args="-r / -d $DB_PATH -p $PORT" +command_background=true +pidfile="/var/run/filebrowser.pid" +directory="/usr/local/community-scripts" + +depend() { + need net +} +EOF + chmod +x "$SERVICE_PATH" + rc-update add filebrowser default &>/dev/null + rc-service filebrowser start &>/dev/null + fi msg_ok "Service created successfully" echo -e "${CM} ${GN}${APP} is reachable at: ${BL}http://$IP:$PORT${CL}" diff --git a/misc/images/2025approved.png b/misc/images/2025approved.png deleted file mode 100644 index aa7133c94..000000000 Binary files a/misc/images/2025approved.png and /dev/null differ diff --git a/misc/images/heimdall.png b/misc/images/heimdall.png deleted file mode 100644 index 46c6bfb19..000000000 Binary files a/misc/images/heimdall.png and /dev/null differ diff --git a/misc/images/nocodb.png b/misc/images/nocodb.png deleted file mode 100644 index 269f74aca..000000000 Binary files a/misc/images/nocodb.png and /dev/null differ diff --git a/misc/images/photoprism.png b/misc/images/photoprism.png deleted file mode 100644 index 736014d40..000000000 Binary files a/misc/images/photoprism.png and /dev/null differ diff --git a/misc/images/pimox.png b/misc/images/pimox.png deleted file mode 100644 index a6a8baed2..000000000 Binary files a/misc/images/pimox.png and /dev/null differ diff --git a/misc/install.func b/misc/install.func index ca20669bb..aafc231f7 100644 --- a/misc/install.func +++ b/misc/install.func @@ -210,6 +210,11 @@ EOF $STD apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED msg_ok "Updated Container OS" + + msg_info "Installing core dependencies" + $STD apt-get update + $STD apt-get install -y sudo curl mc + msg_ok "Core dependencies installed" } # This function modifies the message of the day (motd) and SSH settings diff --git a/misc/netdata.sh b/misc/netdata.sh index d04b11f9a..abc1f6e25 100644 --- a/misc/netdata.sh +++ b/misc/netdata.sh @@ -59,9 +59,9 @@ install() { header_info msg_info "Setting up repository" - wget -q https://repo.netdata.cloud/repos/repoconfig/debian/bookworm/netdata-repo_2-2+debian12_all.deb - $STD dpkg -i netdata-repo_2-2+debian12_all.deb - rm -rf netdata-repo_2-2+debian12_all.deb + wget -q https://repo.netdata.cloud/repos/repoconfig/debian/bookworm/netdata-repo_5-1+debian12_all.deb + $STD dpkg -i netdata-repo_5-1+debian12_all.deb + rm -rf netdata-repo_5-1+debian12_all.deb msg_ok "Set up repository" msg_info "Installing Netdata" diff --git a/vm/nextcloud-vm.sh b/vm/nextcloud-vm.sh index ad0dc5417..eaa20adec 100644 --- a/vm/nextcloud-vm.sh +++ b/vm/nextcloud-vm.sh @@ -386,7 +386,7 @@ fi msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location." msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}." msg_info "Retrieving the URL for the $NAME Disk Image" -URL=http://mirror.turnkeylinux.org/turnkeylinux/images/iso/turnkey-nextcloud-18.0-bookworm-amd64.iso +URL=http://mirror.turnkeylinux.org/turnkeylinux/images/iso/turnkey-nextcloud-18.1-bookworm-amd64.iso sleep 2 msg_ok "${CL}${BL}${URL}${CL}" wget -q --show-progress $URL diff --git a/vm/openwrt.sh b/vm/openwrt.sh index 60192ae7e..ea0474e58 100644 --- a/vm/openwrt.sh +++ b/vm/openwrt.sh @@ -315,7 +315,7 @@ function advanced_settings() { exit-script fi - if LAN_NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a router netmmask" 8 58 $LAN_NETMASK --title "LAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if LAN_NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a router netmask" 8 58 $LAN_NETMASK --title "LAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then if [ -z $LAN_NETMASK ]; then LAN_NETMASK="255.255.255.0" fi