Compare commits

..

73 Commits

Author SHA1 Message Date
18e3553e14 Update versions.json 2025-12-25 12:07:30 +00:00
77a3eacd21 Update CHANGELOG.md (#10315)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 07:32:04 +00:00
404e87a2e3 Increase Zot Default Memory, Recategorize (#10311) 2025-12-25 08:31:40 +01:00
34a8ed8358 Update CHANGELOG.md (#10313)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 00:14:06 +00:00
f6f6815ac1 Update versions.json (#10312)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 01:13:44 +01:00
256a80f18f Update CHANGELOG.md (#10309)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 23:45:26 +00:00
9613bf672a pihole-exporter fix: unbound var (#10307) 2025-12-25 00:45:04 +01:00
978f2a36a5 Update CHANGELOG.md (#10301)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 21:39:20 +00:00
a6d05ae5e6 fix: technitium: service migration (#10300) 2025-12-24 22:38:55 +01:00
e6ca8a646d Update CHANGELOG.md (#10297)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:29:35 +00:00
4e417dbdda Update CHANGELOG.md (#10296)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:29:18 +00:00
5a230837d3 Update dependencies (#10275) 2025-12-24 15:29:11 +01:00
23e3be00f0 Refactor (#10274) 2025-12-24 15:28:56 +01:00
c074d3f567 Update CHANGELOG.md (#10295)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:28:27 +00:00
12037c8468 Update CHANGELOG.md (#10294)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:28:05 +00:00
1a5c7680ee Refactor (#10276) 2025-12-24 15:28:00 +01:00
2934b10415 Update CHANGELOG.md (#10293)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:27:44 +00:00
133e1484ad Refactor (#10277) 2025-12-24 15:27:39 +01:00
b22265047c Refactor (#10278) 2025-12-24 15:27:20 +01:00
9b728ee2e0 Update CHANGELOG.md (#10292)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:25:03 +00:00
bf51483235 Refactor (#10280) 2025-12-24 15:24:42 +01:00
f1fc6b0298 Update CHANGELOG.md (#10291)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:23:40 +00:00
4a878169be Update CHANGELOG.md (#10290)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:23:23 +00:00
f1c6f573aa fix(build): correct local template discovery and simplify pattern logic (#10282) 2025-12-24 14:23:10 +01:00
920a170c1e Update CHANGELOG.md (#10289)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:22:59 +00:00
63e883f9ea Refactir (#10241) 2025-12-24 14:22:49 +01:00
733821bfce Update CHANGELOG.md (#10288)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:22:38 +00:00
7a44080eda Pocketbase: Add note for superuser account creation (#10245) 2025-12-24 14:22:33 +01:00
5730506c03 Refactor (#10256) 2025-12-24 14:22:18 +01:00
ba06d13598 Update CHANGELOG.md (#10287)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:22:05 +00:00
c0f4ac5750 Refactor (#10258) 2025-12-24 14:21:58 +01:00
36391bfc1e Update CHANGELOG.md (#10286)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:21:45 +00:00
509ea946a6 Refactor (#10259) 2025-12-24 14:21:41 +01:00
489b78aaf3 Update CHANGELOG.md (#10285)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:21:27 +00:00
261f746ff1 Reefactor (#10260) 2025-12-24 14:21:23 +01:00
1a7da4bc91 Refactor (#10262) 2025-12-24 14:21:02 +01:00
69f81cec04 Update versions.json (#10283)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:06:24 +01:00
cca6521b62 Update CHANGELOG.md (#10273)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 08:26:20 +00:00
0cd82a058c Update recyclarr-install.sh (#10272) 2025-12-24 09:25:52 +01:00
0d3e872c7c Update CHANGELOG.md (#10271)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 00:14:23 +00:00
97f74fd9dd Update versions.json (#10270)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 01:14:03 +01:00
42f32804ba Update CHANGELOG.md (#10269)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 23:00:55 +00:00
b6026af8f7 Fixes (#10261) 2025-12-24 00:00:35 +01:00
5dc05ce79f Update CHANGELOG.md (#10268)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 22:58:58 +00:00
85d5693e1a Refactor (#10255) 2025-12-23 23:58:37 +01:00
8e8ae9d992 Update CHANGELOG.md (#10267)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 22:41:02 +00:00
4da54f1593 Small improvement (#10254) 2025-12-23 23:40:41 +01:00
d6ef21c077 Update CHANGELOG.md (#10265)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 21:32:21 +00:00
92ff5f60ff Update CHANGELOG.md (#10264)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 21:32:12 +00:00
3953fa1e25 Fix Recyclarr page TypeError: schema mismatch in notes field (#10253)
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2025-12-23 22:32:01 +01:00
2acac97417 Update CHANGELOG.md (#10263)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 21:31:49 +00:00
6e640f8eb6 Fixes (#10257) 2025-12-23 22:31:27 +01:00
2478aa84e8 Update CHANGELOG.md (#10250)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 13:29:34 +00:00
f02e25182b fix: pihole-exporter: unknown function (#10249) 2025-12-23 14:29:13 +01:00
94d12ff1aa Update CHANGELOG.md (#10248)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 13:19:27 +00:00
f6f4c3411c Refactor: Beszel (#10195)
* Refactor

* Update

* Update

* Update
2025-12-23 14:19:03 +01:00
e819bf69f2 Update CHANGELOG.md (#10247)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 13:18:50 +00:00
d76150d9a3 Migrate service file to refactored installation (#10240) 2025-12-23 14:18:24 +01:00
931dbd8c9f Update CHANGELOG.md (#10246)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 12:51:33 +00:00
eb0486a698 Update forgejo to debian13 and fix env var (#10242) 2025-12-23 13:51:06 +01:00
ae28705178 Update versions.json (#10244)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 13:07:35 +01:00
8d713edce2 Update CHANGELOG.md (#10238)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 00:14:35 +00:00
9c27a28e1f Update versions.json (#10237)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 01:14:15 +01:00
0f75e9d31d Update CHANGELOG.md (#10236)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-22 22:28:11 +00:00
889116c82d fix(hwaccel): skip setup without GPU passthrough and fix Ubuntu AMD firmware (#10225) 2025-12-22 23:27:37 +01:00
b5f98ce189 Update CHANGELOG.md (#10235)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-22 22:27:12 +00:00
b11101a5c2 Update CHANGELOG.md (#10234)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-22 22:26:58 +00:00
33ef33c833 docs(contribution): update templates with modern patterns (#10227)
Based on analysis of latest 30 scripts (koel, wallabag, invoiceninja, etc.)

Templates updated to reflect current best practices:

ct/AppName.sh:
- Use check_for_gh_release + fetch_and_deploy_gh_release pattern
- CLEAN_INSTALL=1 for updates
- Proper backup/restore workflow
- Simplified configuration comments

install/AppName-install.sh:
- fetch_and_deploy_gh_release as primary download method (no separate RELEASE variable)
- Real-world examples from Node.js, Python, PHP apps
- import_local_ip called early
- Setup runtimes/databases before app installation
- cleanup_lxc at the end

HELPER_FUNCTIONS.md:
- fetch_and_deploy_gh_release as preferred method (documented first)
- CLEAN_INSTALL=1 environment variable documented
- prebuild type with asset_pattern documented
- Clarified when to use get_latest_github_release vs fetch_and_deploy

Closes #10194
2025-12-22 23:26:41 +01:00
08cbeea4a9 Update CHANGELOG.md (#10233)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-22 22:26:34 +00:00
65606eec1c fix(invoiceninja): add chromium dependencies for PDF generation (#10230)
- Add required libraries for snappdf/chromium (libnss3, libatk, libcups2, etc.)
- Download chromium binary via snappdf download command
- Run ninja:post-update for languages/currencies lookup data

Fixes PDF generation error: libnss3.so not found
2025-12-22 23:25:56 +01:00
ebb8b098dd MediaManager) use npm install (#10228)
* fix(mediamanager): use npm install and remove unused yq dependency

- Use npm install instead of npm ci because upstream package-lock.json
  is out of sync with package.json (missing esbuild@0.27.2)
- Remove setup_yq call as yq is not used anywhere in the script
  (config is handled via sed)

* .

* Change npm command from ci to install
2025-12-22 23:25:19 +01:00
73b2dbb3b7 Update CHANGELOG.md (#10231)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-22 21:52:27 +00:00
e3ff6bfbbf refactor: reitti: v3.0.0 (#10196) 2025-12-22 22:52:01 +01:00
46 changed files with 606 additions and 581 deletions

View File

@ -10,17 +10,109 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-12-25
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Increase Zot Default Memory, Recategorize [@chrismuzyn](https://github.com/chrismuzyn) ([#10311](https://github.com/community-scripts/ProxmoxVE/pull/10311))
## 2025-12-24
### 🚀 Updated Scripts
- recyclarr: increase cron path [@Uncloak2](https://github.com/Uncloak2) ([#10272](https://github.com/community-scripts/ProxmoxVE/pull/10272))
- #### 🐞 Bug Fixes
- fix: technitium: service migration [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10300](https://github.com/community-scripts/ProxmoxVE/pull/10300))
- #### 🔧 Refactor
- Overseerr: Update dependencies [@tremor021](https://github.com/tremor021) ([#10275](https://github.com/community-scripts/ProxmoxVE/pull/10275))
- Refactor: Paperless-GPT [@tremor021](https://github.com/tremor021) ([#10274](https://github.com/community-scripts/ProxmoxVE/pull/10274))
- Refactor: Outline [@tremor021](https://github.com/tremor021) ([#10276](https://github.com/community-scripts/ProxmoxVE/pull/10276))
- Refactor: OTS [@tremor021](https://github.com/tremor021) ([#10277](https://github.com/community-scripts/ProxmoxVE/pull/10277))
- Refactor: OpenProject [@tremor021](https://github.com/tremor021) ([#10278](https://github.com/community-scripts/ProxmoxVE/pull/10278))
- Refactor: Open Archiver [@tremor021](https://github.com/tremor021) ([#10280](https://github.com/community-scripts/ProxmoxVE/pull/10280))
- Refactor: Tautulli [@tremor021](https://github.com/tremor021) ([#10241](https://github.com/community-scripts/ProxmoxVE/pull/10241))
- Refactor: PrivateBin [@tremor021](https://github.com/tremor021) ([#10256](https://github.com/community-scripts/ProxmoxVE/pull/10256))
- Refactor: Podman-Home Assistant [@tremor021](https://github.com/tremor021) ([#10258](https://github.com/community-scripts/ProxmoxVE/pull/10258))
- Refactor: Plant-it [@tremor021](https://github.com/tremor021) ([#10259](https://github.com/community-scripts/ProxmoxVE/pull/10259))
- Refactor: PatchMon [@tremor021](https://github.com/tremor021) ([#10260](https://github.com/community-scripts/ProxmoxVE/pull/10260))
- Refactor: Part-DB [@tremor021](https://github.com/tremor021) ([#10262](https://github.com/community-scripts/ProxmoxVE/pull/10262))
### 💾 Core
- #### 🐞 Bug Fixes
- core: correct local template discovery regex pattern [@MickLesk](https://github.com/MickLesk) ([#10282](https://github.com/community-scripts/ProxmoxVE/pull/10282))
### 🧰 Tools
- #### 🐞 Bug Fixes
- pihole-exporter fix: unbound var [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10307](https://github.com/community-scripts/ProxmoxVE/pull/10307))
### ❔ Uncategorized
- Pocketbase: Add note for superuser account creation [@tremor021](https://github.com/tremor021) ([#10245](https://github.com/community-scripts/ProxmoxVE/pull/10245))
## 2025-12-23
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Technitium DNS: Migrate service [@tremor021](https://github.com/tremor021) ([#10240](https://github.com/community-scripts/ProxmoxVE/pull/10240))
- Update forgejo to debian13 and fix env var [@burgerga](https://github.com/burgerga) ([#10242](https://github.com/community-scripts/ProxmoxVE/pull/10242))
- #### 🔧 Refactor
- Passbolt: Small fixes [@tremor021](https://github.com/tremor021) ([#10261](https://github.com/community-scripts/ProxmoxVE/pull/10261))
- Refactor: ProjectSend [@tremor021](https://github.com/tremor021) ([#10255](https://github.com/community-scripts/ProxmoxVE/pull/10255))
- Prometheus Paperless NGX Exporter: Small fix [@tremor021](https://github.com/tremor021) ([#10254](https://github.com/community-scripts/ProxmoxVE/pull/10254))
- Podman: Fixes [@tremor021](https://github.com/tremor021) ([#10257](https://github.com/community-scripts/ProxmoxVE/pull/10257))
- Refactor: Beszel [@tremor021](https://github.com/tremor021) ([#10195](https://github.com/community-scripts/ProxmoxVE/pull/10195))
### 🧰 Tools
- #### 🐞 Bug Fixes
- fix: pihole-exporter: unknown function [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10249](https://github.com/community-scripts/ProxmoxVE/pull/10249))
### ❔ Uncategorized
- Fix Recyclarr page TypeError: schema mismatch in notes field [@Copilot](https://github.com/Copilot) ([#10253](https://github.com/community-scripts/ProxmoxVE/pull/10253))
## 2025-12-22 ## 2025-12-22
### 🚀 Updated Scripts ### 🚀 Updated Scripts
- #### 🐞 Bug Fixes - #### 🐞 Bug Fixes
- InvoiceNinja: add chromium dependencies for PDF generation [@MickLesk](https://github.com/MickLesk) ([#10230](https://github.com/community-scripts/ProxmoxVE/pull/10230))
- MediaManager) use npm install [@MickLesk](https://github.com/MickLesk) ([#10228](https://github.com/community-scripts/ProxmoxVE/pull/10228))
- Kometa: Fix update procedure [@tremor021](https://github.com/tremor021) ([#10217](https://github.com/community-scripts/ProxmoxVE/pull/10217)) - Kometa: Fix update procedure [@tremor021](https://github.com/tremor021) ([#10217](https://github.com/community-scripts/ProxmoxVE/pull/10217))
- #### 💥 Breaking Changes
- refactor: reitti: v3.0.0 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10196](https://github.com/community-scripts/ProxmoxVE/pull/10196))
### 💾 Core
- #### ✨ New Features
- tools.func - hwaccel: skip setup without GPU passthrough and fix Ubuntu AMD firmware [@MickLesk](https://github.com/MickLesk) ([#10225](https://github.com/community-scripts/ProxmoxVE/pull/10225))
### 📚 Documentation
- contribution docs: update templates with modern patterns [@MickLesk](https://github.com/MickLesk) ([#10227](https://github.com/community-scripts/ProxmoxVE/pull/10227))
### ❔ Uncategorized ### ❔ Uncategorized
- Invoice ninja [@DragoQC](https://github.com/DragoQC) ([#10223](https://github.com/community-scripts/ProxmoxVE/pull/10223)) - InvoiceNinja: switch category [@DragoQC](https://github.com/DragoQC) ([#10223](https://github.com/community-scripts/ProxmoxVE/pull/10223))
## 2025-12-21 ## 2025-12-21

View File

@ -27,19 +27,22 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Stopping Service"
systemctl stop beszel-hub
msg_info "Stopped Service"
msg_info "Updating $APP" if check_for_gh_release "beszel" "henrygd/beszel"; then
$STD /opt/beszel/beszel update msg_info "Stopping Service"
sleep 2 && chmod +x /opt/beszel/beszel systemctl stop beszel-hub
msg_ok "Updated $APP" msg_info "Stopped Service"
msg_info "Starting Service" msg_info "Updating Beszel"
systemctl start beszel-hub $STD /opt/beszel/beszel update
msg_ok "Successfully started $APP" sleep 2 && chmod +x /opt/beszel/beszel
msg_ok "Updated successfully!" msg_ok "Updated Beszel"
msg_info "Starting Service"
systemctl start beszel-hub
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit exit
} }

View File

@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@ -44,6 +44,14 @@ function update_script() {
rm -rf forgejo-$RELEASE-linux-amd64 rm -rf forgejo-$RELEASE-linux-amd64
msg_ok "Cleaned" msg_ok "Cleaned"
# Fix env var from older version of community script
if grep -q "GITEA_WORK_DIR" /etc/systemd/system/forgejo.service; then
msg_info "Updating Service File"
sed -i "s/GITEA_WORK_DIR/FORGEJO_WORK_DIR/g" /etc/systemd/system/forgejo.service
systemctl daemon-reload
msg_ok "Updated Service File"
fi
msg_info "Starting Service" msg_info "Starting Service"
systemctl start forgejo systemctl start forgejo
msg_ok "Started Service" msg_ok "Started Service"

View File

@ -44,7 +44,7 @@ function update_script() {
export PUBLIC_API_URL="" export PUBLIC_API_URL=""
export BASE_PATH="/web" export BASE_PATH="/web"
cd /opt/mediamanager/web cd /opt/mediamanager/web
$STD npm ci --no-fund --no-audit $STD npm install --no-fund --no-audit
$STD npm run build $STD npm run build
rm -rf "$FRONTEND_FILES_DIR"/build rm -rf "$FRONTEND_FILES_DIR"/build
cp -r build "$FRONTEND_FILES_DIR" cp -r build "$FRONTEND_FILES_DIR"

View File

@ -34,7 +34,7 @@ function update_script() {
msg_ok "Stopped Services" msg_ok "Stopped Services"
cp /opt/openarchiver/.env /opt/openarchiver.env cp /opt/openarchiver/.env /opt/openarchiver.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball" "latest" "/opt/openarchiver" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
mv /opt/openarchiver.env /opt/openarchiver/.env mv /opt/openarchiver.env /opt/openarchiver/.env
msg_info "Updating Open Archiver" msg_info "Updating Open Archiver"

View File

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

View File

@ -27,8 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then RELEASE=$(get_latest_github_release "Part-DB/Part-DB-server")
if check_for_gh_release "partdb" "Part-DB/Part-DB-server"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Service" msg_ok "Stopped Service"
@ -36,7 +37,7 @@ function update_script() {
msg_info "Updating $APP to v${RELEASE}" msg_info "Updating $APP to v${RELEASE}"
cd /opt cd /opt
mv /opt/partdb/ /opt/partdb-backup mv /opt/partdb/ /opt/partdb-backup
curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip") curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o "/opt/v${RELEASE}.zip"
$STD unzip "v${RELEASE}.zip" $STD unzip "v${RELEASE}.zip"
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
@ -54,15 +55,13 @@ function update_script() {
chown -R www-data:www-data /opt/partdb chown -R www-data:www-data /opt/partdb
rm -r "/opt/v${RELEASE}.zip" rm -r "/opt/v${RELEASE}.zip"
rm -r /opt/partdb-backup rm -r /opt/partdb-backup
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >~/.partdb
msg_ok "Updated $APP to v${RELEASE}" msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start apache2 systemctl start apache2
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi fi
exit exit
} }

View File

@ -37,7 +37,7 @@ function update_script() {
if [ "$UPD" == "1" ]; then if [ "$UPD" == "1" ]; then
msg_info "Updating ${APP} LXC" msg_info "Updating ${APP} LXC"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt upgrade -y
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
msg_info "Updating All Containers\n" msg_info "Updating All Containers\n"
@ -65,7 +65,7 @@ function update_script() {
exit exit
fi fi
if [ "$UPD" == "3" ]; then if [ "$UPD" == "3" ]; then
IP=$(hostname -I | awk '{print $1}') import_local_ip
msg_info "Installing FileBrowser" msg_info "Installing FileBrowser"
$STD curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash $STD curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
$STD filebrowser config init -a '0.0.0.0' $STD filebrowser config init -a '0.0.0.0'
@ -74,23 +74,25 @@ function update_script() {
msg_ok "Installed FileBrowser" msg_ok "Installed FileBrowser"
msg_info "Creating Service" msg_info "Creating Service"
service_path="/etc/systemd/system/filebrowser.service" cat <<EOF >/etc/systemd/system/filebrowser.service
echo "[Unit] [Unit]
Description=Filebrowser Description=Filebrowser
After=network-online.target After=network-online.target
[Service]
User=root
WorkingDirectory=/root/
ExecStart=/usr/local/bin/filebrowser -r /
[Install]
WantedBy=default.target" >$service_path
$STD systemctl enable --now filebrowser [Service]
User=root
WorkingDirectory=/root/
ExecStart=/usr/local/bin/filebrowser -r /
[Install]
WantedBy=default.target
EOF
systemctl enable -q --now filebrowser
msg_ok "Created Service" msg_ok "Created Service"
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "FileBrowser should be reachable by going to the following URL. echo -e "FileBrowser should be reachable by going to the following URL.
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n" ${BL}http://$LOCAL_IP:8080${CL} admin|helper-scripts.com\n"
exit exit
fi fi
if [ "$UPD" == "4" ]; then if [ "$UPD" == "4" ]; then
@ -99,7 +101,6 @@ function update_script() {
msg_ok "Removed ALL Unused Images" msg_ok "Removed ALL Unused Images"
exit exit
fi fi
} }
start start

View File

@ -29,7 +29,7 @@ function update_script() {
fi fi
msg_info "Updating ${APP} LXC" msg_info "Updating ${APP} LXC"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt upgrade -y
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
} }

View File

@ -48,7 +48,6 @@ function update_script() {
msg_info "Starting Service" msg_info "Starting Service"
systemctl start apache2 systemctl start apache2
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi
exit exit

View File

@ -27,6 +27,37 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if [ ! -d /var/cache/nginx/tiles ]; then
msg_info "Installing Nginx Tile Cache"
mkdir -p /var/cache/nginx/tiles
$STD apt install -y nginx
cat <<EOF >/etc/nginx/nginx.conf
events {
worker_connections 1024;
}
http {
proxy_cache_path /var/cache/nginx/tiles levels=1:2 keys_zone=tiles:10m max_size=1g inactive=30d use_temp_path=off;
server {
listen 80;
location / {
proxy_pass https://tile.openstreetmap.org/;
proxy_set_header Host tile.openstreetmap.org;
proxy_set_header User-Agent "Reitti/1.0";
proxy_cache tiles;
proxy_cache_valid 200 30d;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
}
}
}
EOF
chown -R www-data:www-data /var/cache/nginx/tiles
systemctl restart nginx
echo "reitti.ui.tiles.cache.url=http://127.0.0.1" >> /opt/reitti/application.properties
systemctl restart reitti
msg_info "Installed Nginx Tile Cache"
fi
if check_for_gh_release "reitti" "dedicatedcode/reitti"; then if check_for_gh_release "reitti" "dedicatedcode/reitti"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop reitti systemctl stop reitti
@ -67,4 +98,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

View File

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

View File

@ -27,7 +27,11 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if [[ -f /etc/systemd/system/dns.service ]]; then
mv /etc/systemd/system/dns.service /etc/systemd/system/technitium.service
systemctl daemon-reload
systemctl enable -q --now technitium
fi
if is_package_installed "aspnetcore-runtime-8.0"; then if is_package_installed "aspnetcore-runtime-8.0"; then
$STD apt remove -y aspnetcore-runtime-8.0 $STD apt remove -y aspnetcore-runtime-8.0
[ -f /etc/apt/sources.list.d/microsoft-prod.list ] && rm -f /etc/apt/sources.list.d/microsoft-prod.list [ -f /etc/apt/sources.list.d/microsoft-prod.list ] && rm -f /etc/apt/sources.list.d/microsoft-prod.list
@ -42,7 +46,7 @@ function update_script() {
fi fi
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+') RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
if [[ ! -f ~/.technitium || "${RELEASE}" != "$(cat ~/.technitium)" ]]; then if [[ ! -f ~/.technitium || ${RELEASE} != "$(cat ~/.technitium)" ]]; then
msg_info "Updating Technitium DNS" msg_info "Updating Technitium DNS"
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/ $STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/

View File

@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Zot-Registry" APP="Zot-Registry"
var_tags="${var_tags:-registry;oci}" var_tags="${var_tags:-registry;oci}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-4096}"
var_disk="${var_disk:-5}" var_disk="${var_disk:-5}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"

View File

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

View File

@ -31,5 +31,10 @@
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": [
{
"text": "Type `/opt/pocketbase/pocketbase superuser create YOUREMAIL PASSWORD` to create your superuser account.",
"type": "info"
}
]
} }

View File

@ -34,11 +34,11 @@
"notes": [ "notes": [
{ {
"type": "warning", "type": "warning",
"content": "Configure your Radarr/Sonarr instances in `/root/.config/recyclarr/recyclarr.yml` before the first sync." "text": "Configure your Radarr/Sonarr instances in `/root/.config/recyclarr/recyclarr.yml` before the first sync."
}, },
{ {
"type": "info", "type": "info",
"content": "Automatic daily sync is configured via `/etc/cron.d/recyclarr`. Sync logs are saved to `/root/.config/recyclarr/sync.log`." "text": "Automatic daily sync is configured via `/etc/cron.d/recyclarr`. Sync logs are saved to `/root/.config/recyclarr/sync.log`."
} }
] ]
} }

View File

@ -12,7 +12,7 @@
"documentation": "https://github.com/Tautulli/Tautulli/wiki", "documentation": "https://github.com/Tautulli/Tautulli/wiki",
"website": "https://tautulli.com/", "website": "https://tautulli.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tautulli.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tautulli.webp",
"config_path": "", "config_path": "/opt/Tautulli/config.ini",
"description": "Tautulli allows you to monitor and track your Plex Media Server usage, such as viewing statistics and analysis of your media library. It can be used to monitor user activity, get notifications about new media added to your library, and even generate reports on your media usage.", "description": "Tautulli allows you to monitor and track your Plex Media Server usage, such as viewing statistics and analysis of your media library. It can be used to monitor user activity, get notifications about new media added to your library, and even generate reports on your media usage.",
"install_methods": [ "install_methods": [
{ {
@ -23,7 +23,7 @@
"ram": 1024, "ram": 1024,
"hdd": 4, "hdd": 4,
"os": "debian", "os": "debian",
"version": "12" "version": "13"
} }
} }
], ],

View File

@ -1,58 +1,163 @@
[ [
{ {
"name": "passbolt/passbolt_api", "name": "PatchMon/PatchMon",
"version": "v5.8.0", "version": "v1.3.7",
"date": "2025-12-22T10:12:48Z" "date": "2025-12-25T11:08:14Z"
}, },
{ {
"name": "itsmng/itsm-ng", "name": "openobserve/openobserve",
"version": "v1.6.11", "version": "v0.40.0-rc2",
"date": "2025-12-22T09:14:20Z" "date": "2025-12-25T09:23:24Z"
},
{
"name": "seriousm4x/UpSnap",
"version": "5.2.5",
"date": "2025-12-25T09:23:10Z"
}, },
{ {
"name": "morpheus65535/bazarr", "name": "morpheus65535/bazarr",
"version": "v1.5.3", "version": "v1.5.3",
"date": "2025-09-20T12:12:33Z" "date": "2025-09-20T12:12:33Z"
}, },
{
"name": "open-webui/open-webui",
"version": "v0.6.43",
"date": "2025-12-22T06:03:45Z"
},
{ {
"name": "Jackett/Jackett", "name": "Jackett/Jackett",
"version": "v0.24.504", "version": "v0.24.532",
"date": "2025-12-22T05:55:56Z" "date": "2025-12-25T05:48:43Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.14",
"date": "2025-12-16T05:42:34Z"
},
{
"name": "fosrl/pangolin",
"version": "1.14.0-rc.0",
"date": "2025-12-22T02:49:19Z"
},
{
"name": "pommee/goaway",
"version": "v0.63.0",
"date": "2025-12-22T02:24:44Z"
}, },
{ {
"name": "jeedom/core", "name": "jeedom/core",
"version": "4.5.1", "version": "4.5.1",
"date": "2025-12-22T00:27:05Z" "date": "2025-12-25T00:27:04Z"
}, },
{ {
"name": "steveiliop56/tinyauth", "name": "steveiliop56/tinyauth",
"version": "v4.1.0", "version": "v4.1.0",
"date": "2025-11-23T12:13:34Z" "date": "2025-11-23T12:13:34Z"
}, },
{
"name": "fosrl/pangolin",
"version": "1.14.1",
"date": "2025-12-24T21:33:56Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.16.0",
"date": "2025-12-24T19:57:11Z"
},
{
"name": "FreshRSS/FreshRSS",
"version": "1.28.0",
"date": "2025-12-24T19:27:21Z"
},
{
"name": "NodeBB/NodeBB",
"version": "v4.7.2",
"date": "2025-12-24T18:38:32Z"
},
{
"name": "rcourtman/Pulse",
"version": "v5.0.2",
"date": "2025-12-24T18:18:13Z"
},
{
"name": "metabase/metabase",
"version": "v0.58.x",
"date": "2025-12-24T16:39:27Z"
},
{
"name": "TuroYT/snowshare",
"version": "v1.2.6",
"date": "2025-12-24T14:05:56Z"
},
{
"name": "Dolibarr/dolibarr",
"version": "22.0.4",
"date": "2025-12-24T12:26:24Z"
},
{
"name": "BookStackApp/BookStack",
"version": "v25.12",
"date": "2025-12-24T12:19:42Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-ui@16.4.0",
"date": "2025-12-24T10:16:33Z"
},
{
"name": "emqx/emqx",
"version": "6.1.0-rc.1",
"date": "2025-12-24T09:46:02Z"
},
{
"name": "comfyanonymous/ComfyUI",
"version": "v0.6.0",
"date": "2025-12-24T03:32:16Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{ {
"name": "advplyr/audiobookshelf", "name": "advplyr/audiobookshelf",
"version": "v2.32.0", "version": "v2.32.1",
"date": "2025-12-21T22:27:29Z" "date": "2025-12-23T23:28:06Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.5.2",
"date": "2025-12-19T21:28:55Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@2.1.4",
"date": "2025-12-23T20:53:07Z"
},
{
"name": "scanopy/scanopy",
"version": "v0.12.6",
"date": "2025-12-23T19:24:15Z"
},
{
"name": "prometheus-pve/prometheus-pve-exporter",
"version": "v3.8.0",
"date": "2025-12-23T18:20:46Z"
},
{
"name": "netbox-community/netbox",
"version": "v4.4.9",
"date": "2025-12-23T17:03:22Z"
},
{
"name": "mongodb/mongo",
"version": "r6.0.27",
"date": "2025-12-23T16:21:51Z"
},
{
"name": "esphome/esphome",
"version": "2025.12.2",
"date": "2025-12-23T16:17:04Z"
},
{
"name": "SonarSource/sonarqube",
"version": "25.12.0.117093",
"date": "2025-12-23T15:00:10Z"
},
{
"name": "danielbrendel/hortusfox-web",
"version": "v5.7",
"date": "2025-12-23T14:53:51Z"
},
{
"name": "coollabsio/coolify",
"version": "v4.0.0-beta.459",
"date": "2025-12-23T14:40:52Z"
},
{
"name": "prometheus/prometheus",
"version": "v3.8.1",
"date": "2025-12-16T09:59:22Z"
}, },
{ {
"name": "keycloak/keycloak", "name": "keycloak/keycloak",
@ -60,24 +165,119 @@
"date": "2025-12-01T08:14:11Z" "date": "2025-12-01T08:14:11Z"
}, },
{ {
"name": "project-zot/zot", "name": "jenkinsci/jenkins",
"version": "v2.1.12", "version": "jenkins-2.543",
"date": "2025-12-21T20:45:14Z" "date": "2025-12-23T12:39:16Z"
}, },
{ {
"name": "openhab/openhab-core", "name": "nzbgetcom/nzbget",
"version": "5.1.0.RC3", "version": "v25.4",
"date": "2025-12-21T20:04:16Z" "date": "2025-10-09T10:27:01Z"
},
{
"name": "endurain-project/endurain",
"version": "v0.16.4",
"date": "2025-12-23T12:08:24Z"
},
{
"name": "itsmng/itsm-ng",
"version": "v1.6.11",
"date": "2025-12-23T10:40:42Z"
},
{
"name": "project-zot/zot",
"version": "v2.1.13",
"date": "2025-12-23T10:14:48Z"
},
{
"name": "pommee/goaway",
"version": "v0.63.2",
"date": "2025-12-23T09:32:55Z"
},
{
"name": "syncthing/syncthing",
"version": "v2.0.12",
"date": "2025-12-02T08:11:24Z"
},
{
"name": "theonedev/onedev",
"version": "v13.1.6",
"date": "2025-12-23T03:13:32Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.13.3",
"date": "2025-12-23T01:18:58Z"
},
{
"name": "Dispatcharr/Dispatcharr",
"version": "v0.15.1",
"date": "2025-12-22T23:01:26Z"
},
{
"name": "sabnzbd/sabnzbd",
"version": "4.5.5",
"date": "2025-10-24T11:12:22Z"
},
{
"name": "Sonarr/Sonarr",
"version": "v4.0.16.2944",
"date": "2025-11-05T01:56:48Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v1.1.0-stable",
"date": "2025-12-22T20:30:40Z"
}, },
{ {
"name": "maxdorninger/MediaManager", "name": "maxdorninger/MediaManager",
"version": "v1.11.0", "version": "v1.11.1",
"date": "2025-12-21T19:58:49Z" "date": "2025-12-22T18:15:40Z"
}, },
{ {
"name": "scanopy/scanopy", "name": "BerriAI/litellm",
"version": "v0.12.5", "version": "v1.80.11.rc.1",
"date": "2025-12-21T19:24:42Z" "date": "2025-12-22T16:29:28Z"
},
{
"name": "meilisearch/meilisearch",
"version": "latest",
"date": "2025-12-22T16:21:19Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.30.25",
"date": "2025-12-22T16:03:19Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v1.0.9",
"date": "2025-12-22T15:55:49Z"
},
{
"name": "openhab/openhab-core",
"version": "5.1.0",
"date": "2025-12-22T14:59:23Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.88.2",
"date": "2025-12-22T14:36:59Z"
},
{
"name": "passbolt/passbolt_api",
"version": "v5.8.0",
"date": "2025-12-22T10:12:48Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.43",
"date": "2025-12-22T06:03:45Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.14",
"date": "2025-12-16T05:42:34Z"
}, },
{ {
"name": "benjaminjonard/koillection", "name": "benjaminjonard/koillection",
@ -94,26 +294,11 @@
"version": "v5.1.1", "version": "v5.1.1",
"date": "2025-12-21T12:59:32Z" "date": "2025-12-21T12:59:32Z"
}, },
{
"name": "msgbyte/tianji",
"version": "v1.30.24",
"date": "2025-12-21T10:26:35Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{ {
"name": "pocketbase/pocketbase", "name": "pocketbase/pocketbase",
"version": "v0.35.0", "version": "v0.35.0",
"date": "2025-12-21T07:44:15Z" "date": "2025-12-21T07:44:15Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-ui@16.3.2",
"date": "2025-12-21T05:23:55Z"
},
{ {
"name": "dedicatedcode/reitti", "name": "dedicatedcode/reitti",
"version": "v3.0.1", "version": "v3.0.1",
@ -129,11 +314,6 @@
"version": "3.4.4", "version": "3.4.4",
"date": "2025-12-20T22:12:02Z" "date": "2025-12-20T22:12:02Z"
}, },
{
"name": "gtsteffaniak/filebrowser",
"version": "v1.2.0-experimental-sql-indexing-v3",
"date": "2025-12-20T21:57:53Z"
},
{ {
"name": "CyferShepard/Jellystat", "name": "CyferShepard/Jellystat",
"version": "1.1.7", "version": "1.1.7",
@ -164,11 +344,6 @@
"version": "2.0.2", "version": "2.0.2",
"date": "2025-10-22T17:03:54Z" "date": "2025-10-22T17:03:54Z"
}, },
{
"name": "Dispatcharr/Dispatcharr",
"version": "v0.15.0",
"date": "2025-12-20T00:12:04Z"
},
{ {
"name": "pelican-dev/panel", "name": "pelican-dev/panel",
"version": "v1.0.0-beta30", "version": "v1.0.0-beta30",
@ -179,36 +354,11 @@
"version": "v1.0.0-beta21", "version": "v1.0.0-beta21",
"date": "2025-12-19T23:04:27Z" "date": "2025-12-19T23:04:27Z"
}, },
{
"name": "laurent22/joplin",
"version": "server-v3.5.2",
"date": "2025-12-19T21:28:55Z"
},
{
"name": "emqx/emqx",
"version": "e5.10.3-alpha.1",
"date": "2025-12-19T21:08:48Z"
},
{
"name": "metabase/metabase",
"version": "v0.58.x",
"date": "2025-12-19T20:05:58Z"
},
{ {
"name": "homarr-labs/homarr", "name": "homarr-labs/homarr",
"version": "v1.47.0", "version": "v1.47.0",
"date": "2025-12-19T19:42:50Z" "date": "2025-12-19T19:42:50Z"
}, },
{
"name": "BerriAI/litellm",
"version": "v1.80.10.dev.1",
"date": "2025-12-19T19:16:21Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.15.0",
"date": "2025-12-19T18:57:42Z"
},
{ {
"name": "YunoHost/yunohost", "name": "YunoHost/yunohost",
"version": "debian/12.1.37", "version": "debian/12.1.37",
@ -224,26 +374,11 @@
"version": "v1.16.3", "version": "v1.16.3",
"date": "2025-12-19T17:45:42Z" "date": "2025-12-19T17:45:42Z"
}, },
{
"name": "esphome/esphome",
"version": "2025.12.1",
"date": "2025-12-19T15:53:08Z"
},
{ {
"name": "immich-app/immich", "name": "immich-app/immich",
"version": "v2.4.1", "version": "v2.4.1",
"date": "2025-12-19T15:50:12Z" "date": "2025-12-19T15:50:12Z"
}, },
{
"name": "openobserve/openobserve",
"version": "v0.30.2",
"date": "2025-12-19T15:18:53Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{ {
"name": "raydak-labs/configarr", "name": "raydak-labs/configarr",
"version": "v1.19.0", "version": "v1.19.0",
@ -251,8 +386,8 @@
}, },
{ {
"name": "wazuh/wazuh", "name": "wazuh/wazuh",
"version": "coverity-w51-4.14.2", "version": "coverity-w52-4.14.2",
"date": "2025-12-15T12:34:36Z" "date": "2025-12-19T13:31:21Z"
}, },
{ {
"name": "fccview/jotty", "name": "fccview/jotty",
@ -269,21 +404,11 @@
"version": "v15.0.0-dev", "version": "v15.0.0-dev",
"date": "2025-12-19T11:43:47Z" "date": "2025-12-19T11:43:47Z"
}, },
{
"name": "meilisearch/meilisearch",
"version": "prototype-v1.30.1-rebuild-hannoy-graph.1",
"date": "2025-12-19T11:14:05Z"
},
{ {
"name": "release-argus/Argus", "name": "release-argus/Argus",
"version": "0.28.3", "version": "0.28.3",
"date": "2025-12-19T11:05:10Z" "date": "2025-12-19T11:05:10Z"
}, },
{
"name": "TuroYT/snowshare",
"version": "v1.2.5",
"date": "2025-12-19T10:47:19Z"
},
{ {
"name": "mattermost/mattermost", "name": "mattermost/mattermost",
"version": "v11.1.2", "version": "v11.1.2",
@ -296,8 +421,8 @@
}, },
{ {
"name": "javedh-dev/tracktor", "name": "javedh-dev/tracktor",
"version": "1.0.1", "version": "1.0.2",
"date": "2025-12-17T23:14:39Z" "date": "2025-12-19T02:43:42Z"
}, },
{ {
"name": "mealie-recipes/mealie", "name": "mealie-recipes/mealie",
@ -309,21 +434,11 @@
"version": "v1.19.5", "version": "v1.19.5",
"date": "2025-09-27T20:59:46Z" "date": "2025-09-27T20:59:46Z"
}, },
{
"name": "chrisbenincasa/tunarr",
"version": "v1.0.7",
"date": "2025-12-18T21:27:26Z"
},
{ {
"name": "Stirling-Tools/Stirling-PDF", "name": "Stirling-Tools/Stirling-PDF",
"version": "v2.1.5", "version": "v2.1.5",
"date": "2025-12-18T20:48:01Z" "date": "2025-12-18T20:48:01Z"
}, },
{
"name": "rcourtman/Pulse",
"version": "v4.36.2",
"date": "2025-12-03T22:46:29Z"
},
{ {
"name": "saltstack/salt", "name": "saltstack/salt",
"version": "v3007.10", "version": "v3007.10",
@ -354,21 +469,11 @@
"version": "v2.20.3", "version": "v2.20.3",
"date": "2025-12-18T16:10:13Z" "date": "2025-12-18T16:10:13Z"
}, },
{
"name": "n8n-io/n8n",
"version": "n8n@1.123.7",
"date": "2025-12-17T14:01:25Z"
},
{ {
"name": "docker/compose", "name": "docker/compose",
"version": "v5.0.1", "version": "v5.0.1",
"date": "2025-12-18T14:22:38Z" "date": "2025-12-18T14:22:38Z"
}, },
{
"name": "coollabsio/coolify",
"version": "v4.0.0-beta.458",
"date": "2025-12-18T12:23:23Z"
},
{ {
"name": "juanfont/headscale", "name": "juanfont/headscale",
"version": "v0.27.1", "version": "v0.27.1",
@ -389,16 +494,6 @@
"version": "7.4.6", "version": "7.4.6",
"date": "2025-12-18T07:00:26Z" "date": "2025-12-18T07:00:26Z"
}, },
{
"name": "chrisvel/tududi",
"version": "v0.88.1",
"date": "2025-12-18T05:01:07Z"
},
{
"name": "comfyanonymous/ComfyUI",
"version": "v0.5.1",
"date": "2025-12-18T03:08:43Z"
},
{ {
"name": "goauthentik/authentik", "name": "goauthentik/authentik",
"version": "version/2025.10.3", "version": "version/2025.10.3",
@ -424,15 +519,10 @@
"version": "v2.16.47", "version": "v2.16.47",
"date": "2025-12-17T15:36:28Z" "date": "2025-12-17T15:36:28Z"
}, },
{
"name": "NodeBB/NodeBB",
"version": "v4.7.1",
"date": "2025-12-17T15:18:55Z"
},
{ {
"name": "bunkerity/bunkerweb", "name": "bunkerity/bunkerweb",
"version": "v1.6.6", "version": "testing",
"date": "2025-11-24T15:30:21Z" "date": "2025-12-16T11:13:20Z"
}, },
{ {
"name": "traefik/traefik", "name": "traefik/traefik",
@ -474,36 +564,11 @@
"version": "1.1.7", "version": "1.1.7",
"date": "2025-12-16T21:44:58Z" "date": "2025-12-16T21:44:58Z"
}, },
{
"name": "prometheus-pve/prometheus-pve-exporter",
"version": "v3.7.0",
"date": "2025-12-16T19:01:35Z"
},
{
"name": "netbox-community/netbox",
"version": "v4.4.8",
"date": "2025-12-09T16:29:50Z"
},
{ {
"name": "crafty-controller/crafty-4", "name": "crafty-controller/crafty-4",
"version": "v4.6.2", "version": "v4.6.2",
"date": "2025-12-16T17:54:19Z" "date": "2025-12-16T17:54:19Z"
}, },
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.542",
"date": "2025-12-16T13:49:44Z"
},
{
"name": "prometheus/prometheus",
"version": "v3.8.1",
"date": "2025-12-16T09:59:22Z"
},
{
"name": "sabnzbd/sabnzbd",
"version": "4.5.5",
"date": "2025-10-24T11:12:22Z"
},
{ {
"name": "azukaar/Cosmos-Server", "name": "azukaar/Cosmos-Server",
"version": "v0.19.0", "version": "v0.19.0",
@ -534,21 +599,11 @@
"version": "v0.30.0", "version": "v0.30.0",
"date": "2025-12-15T17:23:59Z" "date": "2025-12-15T17:23:59Z"
}, },
{
"name": "danielbrendel/hortusfox-web",
"version": "v5.6",
"date": "2025-12-15T14:40:53Z"
},
{ {
"name": "librenms/librenms", "name": "librenms/librenms",
"version": "25.12.0", "version": "25.12.0",
"date": "2025-12-15T14:06:00Z" "date": "2025-12-15T14:06:00Z"
}, },
{
"name": "endurain-project/endurain",
"version": "v0.16.3",
"date": "2025-12-15T12:56:50Z"
},
{ {
"name": "LimeSurvey/LimeSurvey", "name": "LimeSurvey/LimeSurvey",
"version": "6.16.2+251209", "version": "6.16.2+251209",
@ -659,11 +714,6 @@
"version": "v0.26.2", "version": "v0.26.2",
"date": "2025-12-13T07:48:09Z" "date": "2025-12-13T07:48:09Z"
}, },
{
"name": "mongodb/mongo",
"version": "r7.0.27",
"date": "2025-12-12T20:54:32Z"
},
{ {
"name": "node-red/node-red", "name": "node-red/node-red",
"version": "4.1.2", "version": "4.1.2",
@ -679,11 +729,6 @@
"version": "v8.3.7", "version": "v8.3.7",
"date": "2025-12-12T09:13:40Z" "date": "2025-12-12T09:13:40Z"
}, },
{
"name": "theonedev/onedev",
"version": "v13.1.5",
"date": "2025-12-12T03:30:50Z"
},
{ {
"name": "umami-software/umami", "name": "umami-software/umami",
"version": "v3.0.3", "version": "v3.0.3",
@ -694,11 +739,6 @@
"version": "0.43.1", "version": "0.43.1",
"date": "2025-12-11T22:45:52Z" "date": "2025-12-11T22:45:52Z"
}, },
{
"name": "linkwarden/linkwarden",
"version": "v2.13.2",
"date": "2025-12-11T06:31:24Z"
},
{ {
"name": "TwiN/gatus", "name": "TwiN/gatus",
"version": "v5.33.1", "version": "v5.33.1",
@ -729,11 +769,6 @@
"version": "2.2.15", "version": "2.2.15",
"date": "2025-12-10T01:52:14Z" "date": "2025-12-10T01:52:14Z"
}, },
{
"name": "BookStackApp/BookStack",
"version": "v25.11.6",
"date": "2025-12-09T21:08:17Z"
},
{ {
"name": "valkey-io/valkey", "name": "valkey-io/valkey",
"version": "9.0.1", "version": "9.0.1",
@ -914,11 +949,6 @@
"version": "v6.2.4", "version": "v6.2.4",
"date": "2025-12-02T17:47:52Z" "date": "2025-12-02T17:47:52Z"
}, },
{
"name": "syncthing/syncthing",
"version": "v2.0.12",
"date": "2025-12-02T08:11:24Z"
},
{ {
"name": "OliveTin/OliveTin", "name": "OliveTin/OliveTin",
"version": "3000.7.0", "version": "3000.7.0",
@ -1024,11 +1054,6 @@
"version": "release-1.24.2", "version": "release-1.24.2",
"date": "2025-11-26T11:22:30Z" "date": "2025-11-26T11:22:30Z"
}, },
{
"name": "Dolibarr/dolibarr",
"version": "22.0.3",
"date": "2025-11-25T17:25:41Z"
},
{ {
"name": "usememos/memos", "name": "usememos/memos",
"version": "v0.25.3", "version": "v0.25.3",
@ -1054,11 +1079,6 @@
"version": "v5.6.1", "version": "v5.6.1",
"date": "2025-11-21T16:51:21Z" "date": "2025-11-21T16:51:21Z"
}, },
{
"name": "seriousm4x/UpSnap",
"version": "5.2.4",
"date": "2025-11-21T10:25:05Z"
},
{ {
"name": "MariaDB/server", "name": "MariaDB/server",
"version": "mariadb-12.1.2", "version": "mariadb-12.1.2",
@ -1094,11 +1114,6 @@
"version": "2025.5", "version": "2025.5",
"date": "2025-11-19T14:48:47Z" "date": "2025-11-19T14:48:47Z"
}, },
{
"name": "PatchMon/PatchMon",
"version": "v1.3.6",
"date": "2025-11-18T22:01:02Z"
},
{ {
"name": "redis/redis", "name": "redis/redis",
"version": "8.4.0", "version": "8.4.0",
@ -1214,21 +1229,11 @@
"version": "1.5.0", "version": "1.5.0",
"date": "2025-11-05T11:10:20Z" "date": "2025-11-05T11:10:20Z"
}, },
{
"name": "SonarSource/sonarqube",
"version": "25.11.0.114957",
"date": "2025-11-05T10:26:59Z"
},
{ {
"name": "nicolargo/glances", "name": "nicolargo/glances",
"version": "v4.4.1", "version": "v4.4.1",
"date": "2025-11-05T09:08:23Z" "date": "2025-11-05T09:08:23Z"
}, },
{
"name": "Sonarr/Sonarr",
"version": "v4.0.16.2944",
"date": "2025-11-05T01:56:48Z"
},
{ {
"name": "cross-seed/cross-seed", "name": "cross-seed/cross-seed",
"version": "v6.13.6", "version": "v6.13.6",
@ -1364,11 +1369,6 @@
"version": "v0.10.1", "version": "v0.10.1",
"date": "2025-09-28T08:55:44Z" "date": "2025-09-28T08:55:44Z"
}, },
{
"name": "FreshRSS/FreshRSS",
"version": "1.27.1",
"date": "2025-09-27T13:07:26Z"
},
{ {
"name": "Threadfin/Threadfin", "name": "Threadfin/Threadfin",
"version": "1.2.39", "version": "1.2.39",

View File

@ -2,7 +2,7 @@
"name": "Zot Registry", "name": "Zot Registry",
"slug": "zot", "slug": "zot",
"categories": [ "categories": [
13 3
], ],
"date_created": "2025-06-06", "date_created": "2025-06-06",
"type": "ct", "type": "ct",
@ -20,7 +20,7 @@
"script": "ct/zot-registry.sh", "script": "ct/zot-registry.sh",
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 2048, "ram": 4096,
"hdd": 5, "hdd": 5,
"os": "Debian", "os": "Debian",
"version": "13" "version": "13"

View File

@ -13,11 +13,7 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Beszel" fetch_and_deploy_gh_release "beszel" "henrygd/beszel" "prebuild" "latest" "/opt/beszel" "beszel_linux_amd64.tar.gz"
mkdir -p /opt/beszel
curl -fsSL "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"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/beszel-hub.service cat <<EOF >/etc/systemd/system/beszel-hub.service

View File

@ -50,7 +50,7 @@ Group=git
WorkingDirectory=/var/lib/forgejo/ WorkingDirectory=/var/lib/forgejo/
ExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/app.ini ExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/app.ini
Restart=always Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/forgejo Environment=USER=git HOME=/home/git FORGEJO_WORK_DIR=/var/lib/forgejo
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF

View File

@ -15,8 +15,22 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y \
nginx \ nginx \
supervisor supervisor \
libnss3 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libxkbcommon0 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libasound2 \
libpango-1.0-0 \
libcairo2
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_mariadb setup_mariadb
@ -75,6 +89,12 @@ chown -R www-data:www-data /opt/invoiceninja
chmod -R 775 /opt/invoiceninja/storage /opt/invoiceninja/bootstrap/cache chmod -R 775 /opt/invoiceninja/storage /opt/invoiceninja/bootstrap/cache
msg_ok "Configured InvoiceNinja" msg_ok "Configured InvoiceNinja"
msg_info "Downloading Chromium for PDF Generation"
cd /opt/invoiceninja
$STD ./vendor/bin/snappdf download
chown -R www-data:www-data /opt/invoiceninja/vendor/beganovich/snappdf/versions
msg_ok "Downloaded Chromium for PDF Generation"
msg_info "Setting up Database" msg_info "Setting up Database"
cd /opt/invoiceninja cd /opt/invoiceninja
$STD php artisan config:clear $STD php artisan config:clear
@ -83,6 +103,7 @@ $STD php artisan route:clear
$STD php artisan view:clear $STD php artisan view:clear
$STD php artisan migrate --force $STD php artisan migrate --force
$STD php artisan db:seed --force $STD php artisan db:seed --force
$STD php artisan ninja:post-update
$STD php artisan optimize $STD php artisan optimize
msg_ok "Set up Database" msg_ok "Set up Database"

View File

@ -49,7 +49,7 @@ export PUBLIC_VERSION=""
export PUBLIC_API_URL="" export PUBLIC_API_URL=""
export BASE_PATH="/web" export BASE_PATH="/web"
cd /opt/mediamanager/web cd /opt/mediamanager/web
$STD npm ci --no-fund --no-audit $STD npm install --no-fund --no-audit
$STD npm run build $STD npm run build
mkdir -p {"$MM_DIR"/web,"$MEDIA_DIR","$CONFIG_DIR"} mkdir -p {"$MM_DIR"/web,"$MEDIA_DIR","$CONFIG_DIR"}
cp -r build "$FRONTEND_FILES_DIR" cp -r build "$FRONTEND_FILES_DIR"

View File

@ -19,28 +19,12 @@ msg_ok "Installed dependendencies"
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
PG_DB_NAME="openarchiver_db" PG_DB_USER="openarchiver" setup_postgresql_db
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary" fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball" fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
JWT_KEY="$(openssl rand -hex 32)" JWT_KEY="$(openssl rand -hex 32)"
SECRET_KEY="$(openssl rand -hex 32)" SECRET_KEY="$(openssl rand -hex 32)"
IP_ADDR=$(hostname -I | awk '{print $1}') import_local_ip
msg_info "Setting up PostgreSQL"
DB_NAME="openarchiver_db"
DB_USER="openarchiver"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-18)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
{
echo "Open Archiver DB Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
} >>~/openarchiver.creds
msg_ok "Set up PostgreSQL"
msg_info "Configuring MeiliSearch" msg_info "Configuring MeiliSearch"
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
@ -76,10 +60,10 @@ mkdir -p /opt/openarchiver-data
cd /opt/openarchiver cd /opt/openarchiver
cp .env.example .env cp .env.example .env
sed -i "s|^NODE_ENV=.*|NODE_ENV=production|g" /opt/openarchiver/.env sed -i "s|^NODE_ENV=.*|NODE_ENV=production|g" /opt/openarchiver/.env
sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=openarchiver_db|g" /opt/openarchiver/.env sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=$PG_DB_NAME|g" /opt/openarchiver/.env
sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=openarchiver|g" /opt/openarchiver/.env sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=$PG_DB_USER|g" /opt/openarchiver/.env
sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$DB_PASS|g" /opt/openarchiver/.env sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$PG_DB_PASS|g" /opt/openarchiver/.env
sed -i "s|^DATABASE_URL=.*|DATABASE_URL=\"postgresql://openarchiver:$DB_PASS@localhost:5432/openarchiver_db\"|g" /opt/openarchiver/.env sed -i "s|^DATABASE_URL=.*|DATABASE_URL=\"postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME\"|g" /opt/openarchiver/.env
sed -i "s|^MEILI_HOST=.*|MEILI_HOST=http://localhost:7700|g" /opt/openarchiver/.env sed -i "s|^MEILI_HOST=.*|MEILI_HOST=http://localhost:7700|g" /opt/openarchiver/.env
sed -i "s|^MEILI_MASTER_KEY=.*|MEILI_MASTER_KEY=$MASTER_KEY|g" /opt/openarchiver/.env sed -i "s|^MEILI_MASTER_KEY=.*|MEILI_MASTER_KEY=$MASTER_KEY|g" /opt/openarchiver/.env
sed -i "s|^REDIS_HOST=.*|REDIS_HOST=localhost|g" /opt/openarchiver/.env sed -i "s|^REDIS_HOST=.*|REDIS_HOST=localhost|g" /opt/openarchiver/.env
@ -88,7 +72,7 @@ sed -i "s|^STORAGE_LOCAL_ROOT_PATH=.*|STORAGE_LOCAL_ROOT_PATH=/opt/openarchiver-
sed -i "s|^JWT_SECRET=.*|JWT_SECRET=$JWT_KEY|g" /opt/openarchiver/.env sed -i "s|^JWT_SECRET=.*|JWT_SECRET=$JWT_KEY|g" /opt/openarchiver/.env
sed -i "s|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$SECRET_KEY|g" /opt/openarchiver/.env sed -i "s|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$SECRET_KEY|g" /opt/openarchiver/.env
sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env
sed -i "s|^ORIGIN=.*|ORIGIN=http://$IP_ADDR:3000|g" /opt/openarchiver/.env sed -i "s|^ORIGIN=.*|ORIGIN=http://$LOCAL_IP:3000|g" /opt/openarchiver/.env
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false $STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
$STD pnpm run build:oss $STD pnpm run build:oss
$STD pnpm db:migrate $STD pnpm db:migrate

View File

@ -14,28 +14,14 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y apt-transport-https
apt-transport-https \
ca-certificates
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
PG_DB_NAME="openproject" PG_DB_USER="openproject" setup_postgresql_db
msg_info "Setting up PostgreSQL"
DB_NAME=openproject
DB_USER=openproject
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
API_KEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) API_KEY=$(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';" echo "OpenProject API Key: $API_KEY" >>~/openproject.creds
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;" import_local_ip
{
echo "OpenProject-Credentials"
echo -e "OpenProject Database User: $DB_USER"
echo -e "OpenProject Database Password: $DB_PASS"
echo -e "OpenProject Database Name: $DB_NAME"
echo -e "OpenProject API Key: $API_KEY"
} >>~/openproject.creds
msg_ok "Set up PostgreSQL"
msg_info "Setting up OpenProject Repository" msg_info "Setting up OpenProject Repository"
curl -fsSL "https://dl.packager.io/srv/opf/openproject/key" | gpg --dearmor >/etc/apt/trusted.gpg.d/packager-io.gpg curl -fsSL "https://dl.packager.io/srv/opf/openproject/key" | gpg --dearmor >/etc/apt/trusted.gpg.d/packager-io.gpg
@ -48,7 +34,6 @@ $STD apt install -y openproject
msg_ok "Installed OpenProject" msg_ok "Installed OpenProject"
msg_info "Configuring OpenProject" msg_info "Configuring OpenProject"
IP_ADDR=$(hostname -I | cut -d' ' -f1)
cat <<EOF >/etc/openproject/installer.dat cat <<EOF >/etc/openproject/installer.dat
openproject/edition default openproject/edition default
@ -56,13 +41,13 @@ postgres/retry retry
postgres/autoinstall reuse postgres/autoinstall reuse
postgres/db_host 127.0.0.1 postgres/db_host 127.0.0.1
postgres/db_port 5432 postgres/db_port 5432
postgres/db_username ${DB_USER} postgres/db_username ${PG_DB_USER}
postgres/db_password ${DB_PASS} postgres/db_password ${PG_DB_PASS}
postgres/db_name ${DB_NAME} postgres/db_name ${PG_DB_NAME}
server/autoinstall install server/autoinstall install
server/variant apache2 server/variant apache2
server/hostname ${IP_ADDR} server/hostname ${LOCAL_IP}
server/server_path_prefix /openproject server/server_path_prefix /openproject
server/ssl no server/ssl no
server/variant apache2 server/variant apache2
@ -75,7 +60,6 @@ memcached/autoinstall install
openproject/admin_email admin@example.net openproject/admin_email admin@example.net
openproject/default_language en openproject/default_language en
EOF EOF
$STD sudo openproject configure $STD sudo openproject configure
msg_ok "Configured OpenProject" msg_ok "Configured OpenProject"

View File

@ -16,11 +16,11 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y \
redis-server \ redis-server \
nginx \ nginx
openssl
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz" fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz"
create_self_signed_cert
msg_info "Setup OTS" msg_info "Setup OTS"
cat <<EOF >/opt/ots/.env cat <<EOF >/opt/ots/.env
@ -31,14 +31,6 @@ STORAGE_TYPE=redis
EOF EOF
msg_ok "Setup OTS" msg_ok "Setup OTS"
msg_info "Generating Universal SSL Certificate"
mkdir -p /etc/ssl/ots
$STD openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/ssl/ots/key.pem \
-out /etc/ssl/ots/cert.pem \
-subj "/CN=ots"
msg_ok "Certificate Generated"
msg_info "Setting up nginx" msg_info "Setting up nginx"
cat <<EOF >/etc/nginx/sites-available/ots.conf cat <<EOF >/etc/nginx/sites-available/ots.conf
server { server {
@ -52,8 +44,8 @@ server {
listen [::]:443 ssl; listen [::]:443 ssl;
server_name ots; server_name ots;
ssl_certificate /etc/ssl/ots/cert.pem; ssl_certificate /etc/ssl/ots/ots.crt;
ssl_certificate_key /etc/ssl/ots/key.pem; ssl_certificate_key /etc/ssl/ots/ots.key;
location / { location / {
add_header X-Robots-Tag noindex; add_header X-Robots-Tag noindex;

View File

@ -22,29 +22,12 @@ msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PG_DB_NAME="outline" PG_DB_USER="outline" setup_postgresql_db
msg_info "Set up PostgreSQL Database"
DB_NAME="outline"
DB_USER="outline"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
{
echo "Outline-Credentials"
echo "Outline Database User: $DB_USER"
echo "Outline Database Password: $DB_PASS"
echo "Outline Database Name: $DB_NAME"
} >>~/outline.creds
msg_ok "Set up PostgreSQL Database"
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball" fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
import_local_ip
msg_info "Configuring Outline (Patience)" msg_info "Configuring Outline (Patience)"
SECRET_KEY="$(openssl rand -hex 32)" SECRET_KEY="$(openssl rand -hex 32)"
LOCAL_IP="$(hostname -I | awk '{print $1}')"
cd /opt/outline cd /opt/outline
cp .env.sample .env cp .env.sample .env
export NODE_ENV=development export NODE_ENV=development

View File

@ -13,10 +13,6 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies"
$STD apt install -y ca-certificates
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball" fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball"

View File

@ -16,22 +16,17 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y \
gcc \ gcc \
ca-certificates \
musl-dev \ musl-dev \
mupdf \ mupdf \
libc6-dev \ libc6-dev \
musl-tools musl-tools
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs NODE_VERSION="24" setup_nodejs
setup_go setup_go
fetch_and_deploy_gh_release "paperless-gpt" "icereed/paperless-gpt" "tarball"
msg_info "Setup Paperless-GPT" msg_info "Setup Paperless-GPT"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file"
mv paperless-gpt-"${RELEASE}" /opt/paperless-gpt
cd /opt/paperless-gpt/web-app cd /opt/paperless-gpt/web-app
$STD npm install $STD npm install
$STD npm run build $STD npm run build
@ -40,21 +35,19 @@ go mod download
export CC=musl-gcc export CC=musl-gcc
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3 CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
CGO_ENABLED=1 go build -tags musl -o paperless-gpt . CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
rm -f "$temp_file"
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Setup Paperless-GPT" msg_ok "Setup Paperless-GPT"
mkdir -p /opt/paperless-gpt-data mkdir -p /opt/paperless-gpt-data
read -p "${TAB3}Do you want to enter the Paperless local URL now? (y/n) " input_url read -rp "${TAB3}Do you want to enter the Paperless local URL now? (y/n) " input_url
if [[ "$input_url" =~ ^[Yy]$ ]]; then if [[ $input_url =~ ^[Yy]$ ]]; then
read -p "${TAB3}Enter your Paperless-NGX instance URL (e.g., http://192.168.1.100:8000): " PAPERLESS_BASE_URL read -rp "${TAB3}Enter your Paperless-NGX instance URL (e.g., http://192.168.1.100:8000): " PAPERLESS_BASE_URL
else else
PAPERLESS_BASE_URL="http://your_paperless_ngx_url" PAPERLESS_BASE_URL="http://your_paperless_ngx_url"
fi fi
read -p "${TAB3}Do you want to enter the Paperless API token now? (y/n) " input_token read -rp "${TAB3}Do you want to enter the Paperless API token now? (y/n) " input_token
if [[ "$input_token" =~ ^[Yy]$ ]]; then if [[ $input_token =~ ^[Yy]$ ]]; then
read -p "${TAB3}Enter your Paperless API token: " PAPERLESS_API_TOKEN read -rp "${TAB3}Enter your Paperless API token: " PAPERLESS_API_TOKEN
else else
PAPERLESS_API_TOKEN="your_paperless_api_token" PAPERLESS_API_TOKEN="your_paperless_api_token"
fi fi

View File

@ -15,39 +15,20 @@ update_os
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" setup_php PG_DB_NAME="partdb" PG_DB_USER="partdb" setup_postgresql_db
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" PHP_POST_MAX_SIZE="100M" PHP_UPLOAD_MAX_FILESIZE="100M" setup_php
setup_composer setup_composer
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
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
msg_ok "Set up PostgreSQL"
msg_info "Installing Part-DB (Patience)" msg_info "Installing Part-DB (Patience)"
cd /opt cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(get_latest_github_release "Part-DB/Part-DB-server")
curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o "/opt/v${RELEASE}.zip" curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o "/opt/v${RELEASE}.zip"
$STD unzip "v${RELEASE}.zip" $STD unzip "v${RELEASE}.zip"
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
cd /opt/partdb/ cd /opt/partdb/
cp .env .env.local cp .env .env.local
sed -i "s|DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/app.db\"|DATABASE_URL=\"postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}?serverVersion=12.19&charset=utf8\"|" .env.local sed -i "s|DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/app.db\"|DATABASE_URL=\"postgresql://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_DB_NAME}?serverVersion=12.19&charset=utf8\"|" .env.local
export COMPOSER_ALLOW_SUPERUSER=1 export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --no-dev -o --no-interaction $STD composer install --no-dev -o --no-interaction
@ -64,7 +45,7 @@ ADMIN_PASS=$(grep -oP 'The initial password for the "admin" user is: \K\w+' ~/da
} >>~/partdb.creds } >>~/partdb.creds
rm -rf ~/database-migration-output rm -rf ~/database-migration-output
rm -rf "/opt/v${RELEASE}.zip" rm -rf "/opt/v${RELEASE}.zip"
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt echo "${RELEASE}" >~/.partdb
msg_ok "Installed Part-DB" msg_ok "Installed Part-DB"
msg_info "Creating Service" msg_info "Creating Service"

View File

@ -21,18 +21,18 @@ $STD apt install -y \
msg_ok "Installed dependencies" msg_ok "Installed dependencies"
setup_mariadb setup_mariadb
MARIADB_DB_NAME="passboltdb" MARIADB_DB_USER="passbolt" MARIADB_DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)" setup_mariadb_db MARIADB_DB_NAME="passboltdb" MARIADB_DB_USER="passbolt" setup_mariadb_db
create_self_signed_cert
import_local_ip
setup_deb822_repo \ setup_deb822_repo \
"passbolt" \ "passbolt" \
"https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0x3D1A0346C8E1802F774AEF21DE8B853FC155581D" \ "https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0x3D1A0346C8E1802F774AEF21DE8B853FC155581D" \
"https://download.passbolt.com/ce/debian" \ "https://download.passbolt.com/ce/debian" \
"buster" \ "buster" \
"stable" "stable"
create_self_signed_cert "passbolt"
msg_info "Setting up Passbolt (Patience)" msg_info "Setting up Passbolt (Patience)"
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
IP_ADDR=$(hostname -I | awk '{print $1}')
echo passbolt-ce-server passbolt/mysql-configuration boolean true | debconf-set-selections echo passbolt-ce-server passbolt/mysql-configuration boolean true | debconf-set-selections
echo passbolt-ce-server passbolt/mysql-passbolt-username string $MARIADB_DB_USER | debconf-set-selections echo passbolt-ce-server passbolt/mysql-passbolt-username string $MARIADB_DB_USER | debconf-set-selections
echo passbolt-ce-server passbolt/mysql-passbolt-password password $MARIADB_DB_PASS | debconf-set-selections echo passbolt-ce-server passbolt/mysql-passbolt-password password $MARIADB_DB_PASS | debconf-set-selections
@ -40,7 +40,7 @@ echo passbolt-ce-server passbolt/mysql-passbolt-password-repeat password $MARIAD
echo passbolt-ce-server passbolt/mysql-passbolt-dbname string $MARIADB_DB_NAME | debconf-set-selections echo passbolt-ce-server passbolt/mysql-passbolt-dbname string $MARIADB_DB_NAME | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-configuration boolean true | debconf-set-selections echo passbolt-ce-server passbolt/nginx-configuration boolean true | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-configuration-three-choices select manual | debconf-set-selections echo passbolt-ce-server passbolt/nginx-configuration-three-choices select manual | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-domain string $IP_ADDR | debconf-set-selections echo passbolt-ce-server passbolt/nginx-domain string $LOCAL_IP | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-certificate-file string /etc/ssl/passbolt/passbolt.crt | debconf-set-selections echo passbolt-ce-server passbolt/nginx-certificate-file string /etc/ssl/passbolt/passbolt.crt | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-certificate-key-file string /etc/ssl/passbolt/passbolt.key | debconf-set-selections echo passbolt-ce-server passbolt/nginx-certificate-key-file string /etc/ssl/passbolt/passbolt.key | debconf-set-selections
$STD apt install -y --no-install-recommends passbolt-ce-server $STD apt install -y --no-install-recommends passbolt-ce-server

View File

@ -22,24 +22,9 @@ msg_ok "Installed Dependencies"
NODE_VERSION="24" setup_nodejs NODE_VERSION="24" setup_nodejs
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
PG_DB_NAME="patchmon_db" PG_DB_USER="patchmon_usr" setup_postgresql_db
msg_info "Setup PostgreSQL Database"
DB_NAME=patchmon_db
DB_USER=patchmon_usr
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
{
echo "PatchMon Credentials"
echo "PatchMon Database Name: $DB_NAME"
echo "PatchMon Database User: $DB_USER"
echo "PatchMon Database Password: $DB_PASS"
} >>~/patchmon.creds
msg_ok "Setup PostgreSQL Database"
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon" fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
import_local_ip
msg_info "Configuring PatchMon" msg_info "Configuring PatchMon"
cd /opt/patchmon cd /opt/patchmon
@ -50,12 +35,10 @@ $STD npm install --no-audit --no-fund --no-save --ignore-scripts
cd /opt/patchmon/frontend cd /opt/patchmon/frontend
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts $STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
$STD npm run build $STD npm run build
JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)" JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)"
LOCAL_IP="$(hostname -I | awk '{print $1}')"
cat <<EOF >/opt/patchmon/backend/.env cat <<EOF >/opt/patchmon/backend/.env
# Database Configuration # Database Configuration
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME" DATABASE_URL="postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME"
PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30 PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30
PM_DB_CONN_WAIT_INTERVAL=2 PM_DB_CONN_WAIT_INTERVAL=2
@ -272,7 +255,6 @@ async function updateSettings() {
updateSettings(); updateSettings();
EOF EOF
cd /opt/patchmon/backend cd /opt/patchmon/backend
$STD node update-settings.js $STD node update-settings.js
msg_ok "Settings updated successfully" msg_ok "Settings updated successfully"

View File

@ -20,24 +20,8 @@ $STD apt install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_mariadb setup_mariadb
MARIADB_DB_NAME="plantit" MARIADB_DB_USER="plantit_usr" setup_mariadb_db
JAVA_VERSION="21" setup_java JAVA_VERSION="21" setup_java
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 mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -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"
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "plant-it" "MDeLuise/plant-it" "singlefile" "0.10.0" "/opt/plant-it/backend" "server.jar" USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "plant-it" "MDeLuise/plant-it" "singlefile" "0.10.0" "/opt/plant-it/backend" "server.jar"
fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "0.10.0" "/opt/plant-it/frontend" "client.tar.gz" fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "0.10.0" "/opt/plant-it/frontend" "client.tar.gz"
@ -46,10 +30,10 @@ mkdir -p /opt/plant-it-data
cat <<EOF >/opt/plant-it/backend/server.env cat <<EOF >/opt/plant-it/backend/server.env
MYSQL_HOST=localhost MYSQL_HOST=localhost
MYSQL_PORT=3306 MYSQL_PORT=3306
MYSQL_USERNAME=$DB_USER MYSQL_USERNAME=$MARIADB_DB_USER
MYSQL_PSW=$DB_PASS MYSQL_PSW=$MARIADB_DB_PASS
MYSQL_DATABASE=$DB_NAME MYSQL_DATABASE=$MARIADB_DB_NAME
MYSQL_ROOT_PASSWORD=$DB_PASS MYSQL_ROOT_PASSWORD=$MARIADB_DB_PASS
JWT_SECRET=$JWT_SECRET JWT_SECRET=$JWT_SECRET
JWT_EXP=1 JWT_EXP=1
@ -86,7 +70,7 @@ Restart=on-failure
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable --now -q plant-it systemctl enable -q --now plant-it
cat <<EOF >/etc/nginx/nginx.conf cat <<EOF >/etc/nginx/nginx.conf
events { events {

View File

@ -13,12 +13,8 @@ setting_up_container
network_check network_check
update_os update_os
get_latest_release() { PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4 PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
}
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 if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
msg_info "Enabling ZFS support." msg_info "Enabling ZFS support."
@ -44,8 +40,8 @@ EOF
fi fi
msg_info "Installing Podman" msg_info "Installing Podman"
$STD apt -y install podman $STD apt install -y podman
$STD systemctl enable --now podman.socket systemctl enable -q --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" msg_ok "Installed Podman"
@ -97,7 +93,7 @@ $STD podman run -d \
podman generate systemd \ podman generate systemd \
--new --name homeassistant \ --new --name homeassistant \
>/etc/systemd/system/homeassistant.service >/etc/systemd/system/homeassistant.service
$STD systemctl enable --now homeassistant systemctl enable -q --now homeassistant
msg_ok "Installed Home Assistant" msg_ok "Installed Home Assistant"
motd_ssh motd_ssh

View File

@ -13,12 +13,8 @@ setting_up_container
network_check network_check
update_os update_os
get_latest_release() { PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4 PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
}
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 if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
msg_info "Enabling ZFS support." msg_info "Enabling ZFS support."
@ -44,8 +40,8 @@ EOF
fi fi
msg_info "Installing Podman" msg_info "Installing Podman"
$STD apt -y install podman $STD apt install -y podman
$STD systemctl enable --now podman.socket systemctl enable -q --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" msg_ok "Installed Podman"

View File

@ -20,16 +20,9 @@ $STD apt install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PHP_VERSION="8.2" PHP_MODULE="common,fpm" setup_php PHP_VERSION="8.2" PHP_MODULE="common,fpm" setup_php
create_self_signed_cert
fetch_and_deploy_gh_release "privatebin" "PrivateBin/PrivateBin" "tarball" fetch_and_deploy_gh_release "privatebin" "PrivateBin/PrivateBin" "tarball"
msg_info "Generating Universal SSL Certificate"
mkdir -p /etc/ssl/privatebin
$STD openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/ssl/privatebin/key.pem \
-out /etc/ssl/privatebin/cert.pem \
-subj "/CN=PrivateBin"
msg_ok "Certificate Generated"
msg_info "Configuring Environment" msg_info "Configuring Environment"
mkdir -p /opt/privatebin/data mkdir -p /opt/privatebin/data
cp /opt/privatebin/cfg/conf.sample.php /opt/privatebin/cfg/conf.php cp /opt/privatebin/cfg/conf.sample.php /opt/privatebin/cfg/conf.php
@ -55,8 +48,8 @@ server {
listen 443 ssl default_server; listen 443 ssl default_server;
listen [::]:443 ssl default_server; listen [::]:443 ssl default_server;
ssl_certificate /etc/ssl/privatebin/cert.pem; ssl_certificate /etc/ssl/privatebin/privatebin.crt;
ssl_certificate_key /etc/ssl/privatebin/key.pem; ssl_certificate_key /etc/ssl/privatebin/privatebin.key;
root /opt/privatebin; root /opt/privatebin;
index index.php; index index.php;

View File

@ -15,31 +15,17 @@ update_os
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php
setup_mariadb setup_mariadb
MARIADB_DB_NAME="projectsend" MARIADB_DB_USER="projectsend" setup_mariadb_db
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip" fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
msg_info "Setting up MariaDB"
DB_NAME=projectsend
DB_USER=projectsend
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{
echo "projectsend-Credentials"
echo "projectsend Database User: $DB_USER"
echo "projectsend Database Password: $DB_PASS"
echo "projectsend Database Name: $DB_NAME"
} >>~/projectsend.creds
msg_ok "Set up MariaDB"
msg_info "Installing ProjectSend" msg_info "Installing ProjectSend"
mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php
chown -R www-data:www-data /opt/projectsend chown -R www-data:www-data /opt/projectsend
chmod -R 775 /opt/projectsend chmod -R 775 /opt/projectsend
chmod 644 /opt/projectsend/includes/sys.config.php chmod 644 /opt/projectsend/includes/sys.config.php
sed -i -e "s/\(define('DB_NAME', \).*/\1'$DB_NAME');/" \ sed -i -e "s/\(define('DB_NAME', \).*/\1'$MARIADB_DB_NAME');/" \
-e "s/\(define('DB_USER', \).*/\1'$DB_USER');/" \ -e "s/\(define('DB_USER', \).*/\1'$MARIADB_DB_USER');/" \
-e "s/\(define('DB_PASSWORD', \).*/\1'$DB_PASS');/" \ -e "s/\(define('DB_PASSWORD', \).*/\1'$MARIADB_DB_PASS');/" \
/opt/projectsend/includes/sys.config.php /opt/projectsend/includes/sys.config.php
sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \ sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \
-e "s/^\(post_max_size = \).*/\1 256M/" \ -e "s/^\(post_max_size = \).*/\1 256M/" \

View File

@ -17,9 +17,7 @@ fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-ex
msg_info "Configuring Prometheus Paperless NGX Exporter" msg_info "Configuring Prometheus Paperless NGX Exporter"
mkdir -p /etc/prometheus-paperless-ngx-exporter mkdir -p /etc/prometheus-paperless-ngx-exporter
cat <<EOF >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file echo "SECRET_AUTH_TOKEN" >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
SECRET_AUTH_TOKEN
EOF
msg_ok "Configured Prometheus Paperless NGX Exporter" msg_ok "Configured Prometheus Paperless NGX Exporter"
msg_info "Creating Service" msg_info "Creating Service"

View File

@ -27,7 +27,7 @@ msg_ok "Configured Recyclarr"
msg_info "Setting up Daily Sync Cron" msg_info "Setting up Daily Sync Cron"
cat <<EOF >/etc/cron.d/recyclarr cat <<EOF >/etc/cron.d/recyclarr
# Run recyclarr sync daily # Run recyclarr sync daily
@daily root recyclarr sync >> /root/.config/recyclarr/sync.log 2>&1 @daily root /usr/local/bin/recyclarr sync >> /root/.config/recyclarr/sync.log 2>&1
EOF EOF
chmod 644 /etc/cron.d/recyclarr chmod 644 /etc/cron.d/recyclarr
msg_ok "Setup Daily Sync Cron" msg_ok "Setup Daily Sync Cron"

View File

@ -18,7 +18,8 @@ $STD apt install -y \
redis-server \ redis-server \
rabbitmq-server \ rabbitmq-server \
libpq-dev \ libpq-dev \
zstd zstd \
nginx
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
JAVA_VERSION="25" setup_java JAVA_VERSION="25" setup_java
@ -46,6 +47,31 @@ mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar" USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar"
mv /opt/photon/photon-*.jar /opt/photon/photon.jar mv /opt/photon/photon-*.jar /opt/photon/photon.jar
msg_info "Installing Nginx Tile Cache"
mkdir -p /var/cache/nginx/tiles
cat <<EOF >/etc/nginx/nginx.conf
events {
worker_connections 1024;
}
http {
proxy_cache_path /var/cache/nginx/tiles levels=1:2 keys_zone=tiles:10m max_size=1g inactive=30d use_temp_path=off;
server {
listen 80;
location / {
proxy_pass https://tile.openstreetmap.org/;
proxy_set_header Host tile.openstreetmap.org;
proxy_set_header User-Agent "Reitti/1.0";
proxy_cache tiles;
proxy_cache_valid 200 30d;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
}
}
}
EOF
chown -R www-data:www-data /var/cache/nginx/tiles
systemctl restart nginx
msg_info "Installed Nginx Tile Cache"
msg_info "Creating Reitti Configuration-File" msg_info "Creating Reitti Configuration-File"
mkdir -p /opt/reitti/data mkdir -p /opt/reitti/data
cat <<EOF >/opt/reitti/application.properties cat <<EOF >/opt/reitti/application.properties
@ -92,6 +118,9 @@ PROCESSING_WORKERS_PER_QUEUE=4-16
# Disable potentially dangerous features unless needed # Disable potentially dangerous features unless needed
DANGEROUS_LIFE=false DANGEROUS_LIFE=false
# Tiles Cache
reitti.ui.tiles.cache.url=http://127.0.0.1
EOF EOF
msg_ok "Created Configuration-File for Reitti" msg_ok "Created Configuration-File for Reitti"

View File

@ -14,20 +14,17 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y git
git \
pip \
python3 \
python3-dev \
python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "Tautulli" "Tautulli/Tautulli" "tarball"
msg_info "Installing Tautulli" msg_info "Installing Tautulli"
cd /opt cd /opt/Tautulli
$STD git clone https://github.com/Tautulli/Tautulli.git uv venv -q
$STD pip install -q -r /opt/Tautulli/requirements.txt uv pip install -q -r requirements.txt
$STD pip install pyopenssl uv pip install -q pyopenssl
msg_ok "Installed Tautulli" msg_ok "Installed Tautulli"
msg_info "Creating Service" msg_info "Creating Service"
@ -41,7 +38,7 @@ WorkingDirectory=/opt/Tautulli/
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5
Type=simple Type=simple
ExecStart=/usr/bin/python3 /opt/Tautulli/Tautulli.py ExecStart=/opt/Tautulli/.venv/bin/python3 /opt/Tautulli/Tautulli.py
KillSignal=SIGINT KillSignal=SIGINT
TimeoutStopSec=20 TimeoutStopSec=20
SyslogIdentifier=tautulli SyslogIdentifier=tautulli

View File

@ -3743,12 +3743,9 @@ create_lxc_container() {
msg_info "Searching for template '$TEMPLATE_SEARCH'" msg_info "Searching for template '$TEMPLATE_SEARCH'"
# Build regex patterns outside awk/grep for clarity
SEARCH_PATTERN="^${TEMPLATE_SEARCH}"
mapfile -t LOCAL_TEMPLATES < <( mapfile -t LOCAL_TEMPLATES < <(
pveam list "$TEMPLATE_STORAGE" 2>/dev/null | pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
awk -v search="${SEARCH_PATTERN}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' | awk -v search="${TEMPLATE_SEARCH}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
sed 's|.*/||' | sort -t - -k 2 -V sed 's|.*/||' | sort -t - -k 2 -V
) )
@ -3757,7 +3754,7 @@ create_lxc_container() {
msg_ok "Template search completed" msg_ok "Template search completed"
set +u set +u
mapfile -t ONLINE_TEMPLATES < <(pveam available -section system 2>/dev/null | grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' | awk '{print $2}' | grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" | sort -t - -k 2 -V 2>/dev/null || true) mapfile -t ONLINE_TEMPLATES < <(pveam available -section system 2>/dev/null | grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' | awk '{print $2}' | grep -E "^${TEMPLATE_SEARCH}.*${TEMPLATE_PATTERN}" | sort -t - -k 2 -V 2>/dev/null || true)
set -u set -u
ONLINE_TEMPLATE="" ONLINE_TEMPLATE=""
@ -3806,13 +3803,12 @@ create_lxc_container() {
if [[ "$choice" =~ ^[0-9]+$ ]] && [[ "$choice" -ge 1 ]] && [[ "$choice" -le ${#AVAILABLE_VERSIONS[@]} ]]; then if [[ "$choice" =~ ^[0-9]+$ ]] && [[ "$choice" -ge 1 ]] && [[ "$choice" -le ${#AVAILABLE_VERSIONS[@]} ]]; then
PCT_OSVERSION="${AVAILABLE_VERSIONS[$((choice - 1))]}" PCT_OSVERSION="${AVAILABLE_VERSIONS[$((choice - 1))]}"
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION}" TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION}"
SEARCH_PATTERN="^${TEMPLATE_SEARCH}-"
mapfile -t ONLINE_TEMPLATES < <( mapfile -t ONLINE_TEMPLATES < <(
pveam available -section system 2>/dev/null | pveam available -section system 2>/dev/null |
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' | grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
awk -F'\t' '{print $1}' | awk '{print $2}' |
grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" | grep -E "^${TEMPLATE_SEARCH}-.*${TEMPLATE_PATTERN}" |
sort -t - -k 2 -V 2>/dev/null || true sort -t - -k 2 -V 2>/dev/null || true
) )
@ -3873,18 +3869,17 @@ create_lxc_container() {
# Retry template search with new version # Retry template search with new version
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION:-}" TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION:-}"
SEARCH_PATTERN="^${TEMPLATE_SEARCH}-"
mapfile -t LOCAL_TEMPLATES < <( mapfile -t LOCAL_TEMPLATES < <(
pveam list "$TEMPLATE_STORAGE" 2>/dev/null | pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
awk -v search="${SEARCH_PATTERN}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' | awk -v search="${TEMPLATE_SEARCH}-" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
sed 's|.*/||' | sort -t - -k 2 -V sed 's|.*/||' | sort -t - -k 2 -V
) )
mapfile -t ONLINE_TEMPLATES < <( mapfile -t ONLINE_TEMPLATES < <(
pveam available -section system 2>/dev/null | pveam available -section system 2>/dev/null |
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' | grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
awk -F'\t' '{print $1}' | awk '{print $2}' |
grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" | grep -E "^${TEMPLATE_SEARCH}-.*${TEMPLATE_PATTERN}" |
sort -t - -k 2 -V 2>/dev/null || true sort -t - -k 2 -V 2>/dev/null || true
) )
ONLINE_TEMPLATE="" ONLINE_TEMPLATE=""

View File

@ -2571,6 +2571,15 @@ function setup_gs() {
# - Some things are fetched from intel repositories due to not being in debian repositories. # - Some things are fetched from intel repositories due to not being in debian repositories.
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
function setup_hwaccel() { function setup_hwaccel() {
# Check if GPU passthrough is enabled (device nodes must exist)
# /dev/dri = Intel iGPU, AMD GPU (open-source drivers)
# /dev/nvidia* = NVIDIA proprietary drivers
# /dev/kfd = AMD ROCm compute
if [[ ! -d /dev/dri && ! -e /dev/nvidia0 && ! -e /dev/kfd ]]; then
msg_warn "No GPU passthrough detected (/dev/dri, /dev/nvidia*, /dev/kfd not found) - skipping hardware acceleration setup"
return 0
fi
msg_info "Setup Hardware Acceleration" msg_info "Setup Hardware Acceleration"
if ! command -v lspci &>/dev/null; then if ! command -v lspci &>/dev/null; then
@ -2771,15 +2780,11 @@ EOF
msg_warn "Failed to install AMD firmware - may need manual installation" msg_warn "Failed to install AMD firmware - may need manual installation"
} }
elif [[ "$os_id" == "ubuntu" ]]; then elif [[ "$os_id" == "ubuntu" ]]; then
# For Ubuntu, ensure multiverse is enabled (firmware-amd-graphics is in multiverse) # For Ubuntu, firmware-amd-graphics does not exist (it's Debian-specific from non-free-firmware)
if ! grep -qE '^deb.*multiverse' /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null; then # Ubuntu includes AMD firmware in linux-firmware package which is installed by default
$STD add-apt-repository -y multiverse # Only install libdrm-amdgpu1 for userspace driver support
$STD apt update $STD apt -y install libdrm-amdgpu1 2>/dev/null || {
fi msg_warn "Failed to install libdrm-amdgpu1 - may need manual installation"
# Install AMD firmware and libdrm
$STD apt -y install libdrm-amdgpu1 firmware-amd-graphics 2>/dev/null || {
msg_warn "Failed to install AMD firmware - may need manual installation"
} }
else else
# For other distributions, try without adding repositories # For other distributions, try without adding repositories

View File

@ -12,8 +12,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Enable error handling # Enable error handling
set -Eeuo pipefail set -Eeuo pipefail
trap 'error_handler' ERR trap 'error_handler' ERR
load_functions load_functions
# ============================================================================== # ==============================================================================
# CONFIGURATION # CONFIGURATION
# ============================================================================== # ==============================================================================
@ -22,9 +22,6 @@ APP="pihole-exporter"
APP_TYPE="tools" APP_TYPE="tools"
INSTALL_PATH="/opt/pihole-exporter" INSTALL_PATH="/opt/pihole-exporter"
CONFIG_PATH="/opt/pihole-exporter.env" CONFIG_PATH="/opt/pihole-exporter.env"
header_info
ensure_usr_local_bin_persist
get_current_ip &>/dev/null
# ============================================================================== # ==============================================================================
# OS DETECTION # OS DETECTION
@ -186,7 +183,7 @@ UPDATEEOF
echo "" echo ""
msg_ok "Pihole-Exporter installed successfully" msg_ok "Pihole-Exporter installed successfully"
msg_ok "Metrics: ${BL}http://${CURRENT_IP}:9617/metrics${CL}" msg_ok "Metrics: ${BL}http://${LOCAL_IP}:9617/metrics${CL}"
msg_ok "Config: ${BL}${CONFIG_PATH}${CL}" msg_ok "Config: ${BL}${CONFIG_PATH}${CL}"
} }
@ -195,7 +192,7 @@ UPDATEEOF
# ============================================================================== # ==============================================================================
header_info header_info
ensure_usr_local_bin_persist ensure_usr_local_bin_persist
get_current_ip &>/dev/null import_local_ip
# Handle type=update (called from update script) # Handle type=update (called from update script)
if [[ "${type:-}" == "update" ]]; then if [[ "${type:-}" == "update" ]]; then

View File

@ -12,8 +12,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Enable error handling # Enable error handling
set -Eeuo pipefail set -Eeuo pipefail
trap 'error_handler' ERR trap 'error_handler' ERR
load_functions load_functions
# ============================================================================== # ==============================================================================
# CONFIGURATION # CONFIGURATION
# ============================================================================== # ==============================================================================
@ -22,8 +22,6 @@ APP="qbittorrent-exporter"
APP_TYPE="tools" APP_TYPE="tools"
INSTALL_PATH="/opt/qbittorrent-exporter" INSTALL_PATH="/opt/qbittorrent-exporter"
CONFIG_PATH="/opt/qbittorrent-exporter.env" CONFIG_PATH="/opt/qbittorrent-exporter.env"
header_info
ensure_usr_local_bin_persist
# ============================================================================== # ==============================================================================
# OS DETECTION # OS DETECTION