mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-03-24 02:43:01 +01:00
Compare commits
57 Commits
copilot/sc
...
github-act
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c9e0c41cdb | ||
|
|
c8606e9fcc | ||
|
|
283e762b83 | ||
|
|
15b5542ad6 | ||
|
|
b1604ceae0 | ||
|
|
89c205d57c | ||
|
|
5c795395ca | ||
|
|
1512711435 | ||
|
|
a2616ee258 | ||
|
|
4ce6271ec0 | ||
|
|
da932e62d0 | ||
|
|
c2838b69ce | ||
|
|
676397add0 | ||
|
|
ec7f2a2e33 | ||
|
|
e2027a43b4 | ||
|
|
f29606ae87 | ||
|
|
7ed27dcdb8 | ||
|
|
e804a4728e | ||
|
|
c5fb74df46 | ||
|
|
791981ba68 | ||
|
|
f1f7bd17b0 | ||
|
|
7e470080b6 | ||
|
|
e97053152a | ||
|
|
3b8550e314 | ||
|
|
9c3b6a1a94 | ||
|
|
7a2c754cea | ||
|
|
00faa7a937 | ||
|
|
d26095dff3 | ||
|
|
b0fa21efdf | ||
|
|
f26adc2208 | ||
|
|
624607ca48 | ||
|
|
4a8aed39da | ||
|
|
2922ecdcbb | ||
|
|
e7dcd37cf7 | ||
|
|
586d8dd8a7 | ||
|
|
8a17729812 | ||
|
|
cf99d6ad3e | ||
|
|
932f4dc134 | ||
|
|
a7131a5df7 | ||
|
|
b4fd23e3f6 | ||
|
|
9c86e0f133 | ||
|
|
366e6951b0 | ||
|
|
72a2ade7c0 | ||
|
|
6cc2c26573 | ||
|
|
55324dbb98 | ||
|
|
b54b21d866 | ||
|
|
a48bfe8d0f | ||
|
|
ede91aeb90 | ||
|
|
f638f00291 | ||
|
|
852a3f4fec | ||
|
|
572ddddb17 | ||
|
|
06c99d43a2 | ||
|
|
2854494dc5 | ||
|
|
57c929eb81 | ||
|
|
9bc0bf02f3 | ||
|
|
62e3335adf | ||
|
|
2d46978205 |
180
.github/changelogs/2026/03.md
generated
vendored
180
.github/changelogs/2026/03.md
generated
vendored
@@ -1,3 +1,183 @@
|
|||||||
|
## 2026-03-21
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Anytype-server: wait for MongoDB readiness before rs.initiate() [@MickLesk](https://github.com/MickLesk) ([#13165](https://github.com/community-scripts/ProxmoxVE/pull/13165))
|
||||||
|
- Frigate: use correct CPU model fallback path [@MickLesk](https://github.com/MickLesk) ([#13164](https://github.com/community-scripts/ProxmoxVE/pull/13164))
|
||||||
|
- iSponsorBlockTV: Fix release fetching [@tremor021](https://github.com/tremor021) ([#13157](https://github.com/community-scripts/ProxmoxVE/pull/13157))
|
||||||
|
- Isponsorblocktv: use quoted heredoc to prevent unbound variable error during CLI wrapper creation [@Copilot](https://github.com/Copilot) ([#13146](https://github.com/community-scripts/ProxmoxVE/pull/13146))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Headscale: Enable TUN [@tremor021](https://github.com/tremor021) ([#13158](https://github.com/community-scripts/ProxmoxVE/pull/13158))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: add missing -searchdomain/-nameserver prefix in base_settings [@MickLesk](https://github.com/MickLesk) ([#13166](https://github.com/community-scripts/ProxmoxVE/pull/13166))
|
||||||
|
|
||||||
|
## 2026-03-20
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- iSponsorBlockTV ([#13123](https://github.com/community-scripts/ProxmoxVE/pull/13123))
|
||||||
|
- Alpine-Wakapi ([#13119](https://github.com/community-scripts/ProxmoxVE/pull/13119))
|
||||||
|
- teleport ([#13086](https://github.com/community-scripts/ProxmoxVE/pull/13086))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Reactive-Resume: add git dependency for v5.0.13+ [@MickLesk](https://github.com/MickLesk) ([#13133](https://github.com/community-scripts/ProxmoxVE/pull/13133))
|
||||||
|
- Scanopy: increase default CPU, RAM, and HDD to prevent OOM during Rust build [@Copilot](https://github.com/Copilot) ([#13130](https://github.com/community-scripts/ProxmoxVE/pull/13130))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Immich: v2.6.1 [@vhsdream](https://github.com/vhsdream) ([#13111](https://github.com/community-scripts/ProxmoxVE/pull/13111))
|
||||||
|
- VM's: add input validation and hostname sanitization to all VM scripts [@MickLesk](https://github.com/MickLesk) ([#12973](https://github.com/community-scripts/ProxmoxVE/pull/12973))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Harden code-server addon install script [@MickLesk](https://github.com/MickLesk) ([#13116](https://github.com/community-scripts/ProxmoxVE/pull/13116))
|
||||||
|
|
||||||
|
## 2026-03-19
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Owncast: increase default disk size from 2GB to 10GB [@Copilot](https://github.com/Copilot) ([#13079](https://github.com/community-scripts/ProxmoxVE/pull/13079))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix: remove extra backslash to match single quoted here-doc [@Zelnes](https://github.com/Zelnes) ([#13108](https://github.com/community-scripts/ProxmoxVE/pull/13108))
|
||||||
|
- Reactive-Resume: Upgrade Node to 24 and enable Corepack [@MickLesk](https://github.com/MickLesk) ([#13093](https://github.com/community-scripts/ProxmoxVE/pull/13093))
|
||||||
|
- Increase Tracearr RAM; derive APP_VERSION [@MickLesk](https://github.com/MickLesk) ([#13087](https://github.com/community-scripts/ProxmoxVE/pull/13087))
|
||||||
|
- ProjectSend: Update application access URL [@tremor021](https://github.com/tremor021) ([#13078](https://github.com/community-scripts/ProxmoxVE/pull/13078))
|
||||||
|
- Dispatcharr: use npm install --no-audit --progress=false [@MickLesk](https://github.com/MickLesk) ([#13074](https://github.com/community-scripts/ProxmoxVE/pull/13074))
|
||||||
|
- core: reorder hwaccel setup and adjust GPU group usermod [@MickLesk](https://github.com/MickLesk) ([#13072](https://github.com/community-scripts/ProxmoxVE/pull/13072))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: display pin reason in release-check messages [@MickLesk](https://github.com/MickLesk) ([#13095](https://github.com/community-scripts/ProxmoxVE/pull/13095))
|
||||||
|
- NocoDB: Unpin Version to latest [@MickLesk](https://github.com/MickLesk) ([#13094](https://github.com/community-scripts/ProxmoxVE/pull/13094))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: use dpkg-query for reliable JDK version detection [@MickLesk](https://github.com/MickLesk) ([#13101](https://github.com/community-scripts/ProxmoxVE/pull/13101))
|
||||||
|
|
||||||
|
### 📚 Documentation
|
||||||
|
|
||||||
|
- Update link from helper-scripts.com to community-scripts.org [@adnanvaldes](https://github.com/adnanvaldes) ([#13098](https://github.com/community-scripts/ProxmoxVE/pull/13098))
|
||||||
|
- github: add PocketBase bot workflow [@MickLesk](https://github.com/MickLesk) ([#13075](https://github.com/community-scripts/ProxmoxVE/pull/13075))
|
||||||
|
|
||||||
|
## 2026-03-18
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Alpine-Ntfy [@MickLesk](https://github.com/MickLesk) ([#13048](https://github.com/community-scripts/ProxmoxVE/pull/13048))
|
||||||
|
- Split-Pro ([#12975](https://github.com/community-scripts/ProxmoxVE/pull/12975))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Tdarr: use curl_with_retry and correct exit code [@MickLesk](https://github.com/MickLesk) ([#13060](https://github.com/community-scripts/ProxmoxVE/pull/13060))
|
||||||
|
- reitti: fix: v4 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#13039](https://github.com/community-scripts/ProxmoxVE/pull/13039))
|
||||||
|
- Paperless-NGX: increase default RAM to 3GB [@MickLesk](https://github.com/MickLesk) ([#13018](https://github.com/community-scripts/ProxmoxVE/pull/13018))
|
||||||
|
- Plex: restart service after update to apply new version [@MickLesk](https://github.com/MickLesk) ([#13017](https://github.com/community-scripts/ProxmoxVE/pull/13017))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools: centralize GPU group setup via setup_hwaccel [@MickLesk](https://github.com/MickLesk) ([#13044](https://github.com/community-scripts/ProxmoxVE/pull/13044))
|
||||||
|
- Termix: add guacd build and systemd integration [@MickLesk](https://github.com/MickLesk) ([#12999](https://github.com/community-scripts/ProxmoxVE/pull/12999))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Podman: replace deprecated commands with Quadlets [@MickLesk](https://github.com/MickLesk) ([#13052](https://github.com/community-scripts/ProxmoxVE/pull/13052))
|
||||||
|
- Refactor: Jellyfin repo, ffmpeg package and symlinks [@MickLesk](https://github.com/MickLesk) ([#13045](https://github.com/community-scripts/ProxmoxVE/pull/13045))
|
||||||
|
- pve-scripts-local: Increase default disk size from 4GB to 10GB [@MickLesk](https://github.com/MickLesk) ([#13009](https://github.com/community-scripts/ProxmoxVE/pull/13009))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func Implement pg_cron setup for setup_postgresql [@MickLesk](https://github.com/MickLesk) ([#13053](https://github.com/community-scripts/ProxmoxVE/pull/13053))
|
||||||
|
- tools.func: Implement check_for_gh_tag function [@MickLesk](https://github.com/MickLesk) ([#12998](https://github.com/community-scripts/ProxmoxVE/pull/12998))
|
||||||
|
- tools.func: Implement fetch_and_deploy_gh_tag function [@MickLesk](https://github.com/MickLesk) ([#13000](https://github.com/community-scripts/ProxmoxVE/pull/13000))
|
||||||
|
|
||||||
|
## 2026-03-17
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Gluetun: add OpenVPN process user and cleanup stale config [@MickLesk](https://github.com/MickLesk) ([#13016](https://github.com/community-scripts/ProxmoxVE/pull/13016))
|
||||||
|
- Frigate: check OpenVino model files exist before configuring detector and use curl_with_retry instead of default wget [@MickLesk](https://github.com/MickLesk) ([#13019](https://github.com/community-scripts/ProxmoxVE/pull/13019))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- tools.func: Update `create_self_signed_cert()` [@tremor021](https://github.com/tremor021) ([#13008](https://github.com/community-scripts/ProxmoxVE/pull/13008))
|
||||||
|
|
||||||
|
## 2026-03-16
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Gluetun ([#12976](https://github.com/community-scripts/ProxmoxVE/pull/12976))
|
||||||
|
- Anytype-Server ([#12974](https://github.com/community-scripts/ProxmoxVE/pull/12974))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Immich: use gcc-13 for compilation & add uv python pre-install with retry logic [@MickLesk](https://github.com/MickLesk) ([#12935](https://github.com/community-scripts/ProxmoxVE/pull/12935))
|
||||||
|
- Tautulli: add setuptools<81 constraint to update script [@MickLesk](https://github.com/MickLesk) ([#12959](https://github.com/community-scripts/ProxmoxVE/pull/12959))
|
||||||
|
- Seerr: add missing build deps [@MickLesk](https://github.com/MickLesk) ([#12960](https://github.com/community-scripts/ProxmoxVE/pull/12960))
|
||||||
|
- fix: yubal update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#12961](https://github.com/community-scripts/ProxmoxVE/pull/12961))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- hwaccel: remove ROCm install from AMD APU setup [@MickLesk](https://github.com/MickLesk) ([#12958](https://github.com/community-scripts/ProxmoxVE/pull/12958))
|
||||||
|
|
||||||
|
## 2026-03-15
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Yamtrack ([#12936](https://github.com/community-scripts/ProxmoxVE/pull/12936))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Wishlist: use --frozen-lockfile for pnpm install [@MickLesk](https://github.com/MickLesk) ([#12892](https://github.com/community-scripts/ProxmoxVE/pull/12892))
|
||||||
|
- SparkyFitness: use --legacy-peer-deps for npm install [@MickLesk](https://github.com/MickLesk) ([#12888](https://github.com/community-scripts/ProxmoxVE/pull/12888))
|
||||||
|
- Frigate: add fallback for OpenVino labelmap file [@MickLesk](https://github.com/MickLesk) ([#12889](https://github.com/community-scripts/ProxmoxVE/pull/12889))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: ITSM-NG [@MickLesk](https://github.com/MickLesk) ([#12918](https://github.com/community-scripts/ProxmoxVE/pull/12918))
|
||||||
|
- core: unify RELEASE variable for check_for_gh_release and fetch_and_deploy [@MickLesk](https://github.com/MickLesk) ([#12917](https://github.com/community-scripts/ProxmoxVE/pull/12917))
|
||||||
|
- Standardize NSAPP names across VM scripts [@MickLesk](https://github.com/MickLesk) ([#12924](https://github.com/community-scripts/ProxmoxVE/pull/12924))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: retry downloads with exponential backoff [@MickLesk](https://github.com/MickLesk) ([#12896](https://github.com/community-scripts/ProxmoxVE/pull/12896))
|
||||||
|
|
||||||
|
### ❔ Uncategorized
|
||||||
|
|
||||||
|
- [go2rtc] Add ffmpeg dependency to install script [@Copilot](https://github.com/Copilot) ([#12944](https://github.com/community-scripts/ProxmoxVE/pull/12944))
|
||||||
|
|
||||||
## 2026-03-14
|
## 2026-03-14
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
16
.github/workflows/update-script-timestamp-on-sh-change.yml
generated
vendored
16
.github/workflows/update-script-timestamp-on-sh-change.yml
generated
vendored
@@ -155,13 +155,21 @@ jobs:
|
|||||||
console.log('Slug not in DB, skipping: ' + slug);
|
console.log('Slug not in DB, skipping: ' + slug);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
const today = new Date().toISOString().split('T')[0];
|
||||||
|
const patchBody = {
|
||||||
|
script_updated: today,
|
||||||
|
last_update_commit: process.env.PR_URL || process.env.COMMIT_URL || ''
|
||||||
|
};
|
||||||
|
// When a dev script is merged into main, promote it to production
|
||||||
|
if (record.is_dev === true) {
|
||||||
|
patchBody.is_dev = false;
|
||||||
|
patchBody.script_created = today;
|
||||||
|
console.log('Promoting dev script to production: ' + slug);
|
||||||
|
}
|
||||||
const patchRes = await request(recordsUrl + '/' + record.id, {
|
const patchRes = await request(recordsUrl + '/' + record.id, {
|
||||||
method: 'PATCH',
|
method: 'PATCH',
|
||||||
headers: { 'Authorization': token, 'Content-Type': 'application/json' },
|
headers: { 'Authorization': token, 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({
|
body: JSON.stringify(patchBody)
|
||||||
script_updated: new Date().toISOString().split('T')[0],
|
|
||||||
last_update_commit: process.env.PR_URL || process.env.COMMIT_URL || ''
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
if (!patchRes.ok) {
|
if (!patchRes.ok) {
|
||||||
console.warn('PATCH failed for slug ' + slug + ': ' + patchRes.body);
|
console.warn('PATCH failed for slug ' + slug + ': ' + patchRes.body);
|
||||||
|
|||||||
265
CHANGELOG.md
265
CHANGELOG.md
@@ -26,6 +26,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -39,7 +42,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><h4>March (14 entries)</h4></summary>
|
<summary><h4>March (21 entries)</h4></summary>
|
||||||
|
|
||||||
[View March 2026 Changelog](.github/changelogs/2026/03.md)
|
[View March 2026 Changelog](.github/changelogs/2026/03.md)
|
||||||
|
|
||||||
@@ -423,6 +426,61 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
## 2026-03-23
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: harden shell scripts against injection and insecure permissions [@MickLesk](https://github.com/MickLesk) ([#13239](https://github.com/community-scripts/ProxmoxVE/pull/13239))
|
||||||
|
|
||||||
|
## 2026-03-22
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- versitygw ([#13180](https://github.com/community-scripts/ProxmoxVE/pull/13180))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Adventurelog: pin DRF <3.15 to fix coreapi module removal [@MickLesk](https://github.com/MickLesk) ([#13194](https://github.com/community-scripts/ProxmoxVE/pull/13194))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- ConvertX: add libreoffice-writer for ODT/document conversions [@MickLesk](https://github.com/MickLesk) ([#13196](https://github.com/community-scripts/ProxmoxVE/pull/13196))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- iSponsorblockTV: add AVX CPU check before installation [@MickLesk](https://github.com/MickLesk) ([#13197](https://github.com/community-scripts/ProxmoxVE/pull/13197))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: guard against empty IPv6 address in static mode [@MickLesk](https://github.com/MickLesk) ([#13195](https://github.com/community-scripts/ProxmoxVE/pull/13195))
|
||||||
|
|
||||||
|
## 2026-03-21
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Anytype-server: wait for MongoDB readiness before rs.initiate() [@MickLesk](https://github.com/MickLesk) ([#13165](https://github.com/community-scripts/ProxmoxVE/pull/13165))
|
||||||
|
- Frigate: use correct CPU model fallback path [@MickLesk](https://github.com/MickLesk) ([#13164](https://github.com/community-scripts/ProxmoxVE/pull/13164))
|
||||||
|
- iSponsorBlockTV: Fix release fetching [@tremor021](https://github.com/tremor021) ([#13157](https://github.com/community-scripts/ProxmoxVE/pull/13157))
|
||||||
|
- Isponsorblocktv: use quoted heredoc to prevent unbound variable error during CLI wrapper creation [@Copilot](https://github.com/Copilot) ([#13146](https://github.com/community-scripts/ProxmoxVE/pull/13146))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Headscale: Enable TUN [@tremor021](https://github.com/tremor021) ([#13158](https://github.com/community-scripts/ProxmoxVE/pull/13158))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: add missing -searchdomain/-nameserver prefix in base_settings [@MickLesk](https://github.com/MickLesk) ([#13166](https://github.com/community-scripts/ProxmoxVE/pull/13166))
|
||||||
|
|
||||||
## 2026-03-20
|
## 2026-03-20
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
@@ -433,6 +491,11 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Reactive-Resume: add git dependency for v5.0.13+ [@MickLesk](https://github.com/MickLesk) ([#13133](https://github.com/community-scripts/ProxmoxVE/pull/13133))
|
||||||
|
- Scanopy: increase default CPU, RAM, and HDD to prevent OOM during Rust build [@Copilot](https://github.com/Copilot) ([#13130](https://github.com/community-scripts/ProxmoxVE/pull/13130))
|
||||||
|
|
||||||
- #### ✨ New Features
|
- #### ✨ New Features
|
||||||
|
|
||||||
- Immich: v2.6.1 [@vhsdream](https://github.com/vhsdream) ([#13111](https://github.com/community-scripts/ProxmoxVE/pull/13111))
|
- Immich: v2.6.1 [@vhsdream](https://github.com/vhsdream) ([#13111](https://github.com/community-scripts/ProxmoxVE/pull/13111))
|
||||||
@@ -1215,203 +1278,3 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
- #### 📝 Script Information
|
- #### 📝 Script Information
|
||||||
|
|
||||||
- fixen broken link to dawarich documentation [@RiX012](https://github.com/RiX012) ([#12103](https://github.com/community-scripts/ProxmoxVE/pull/12103))
|
- fixen broken link to dawarich documentation [@RiX012](https://github.com/RiX012) ([#12103](https://github.com/community-scripts/ProxmoxVE/pull/12103))
|
||||||
|
|
||||||
## 2026-02-19
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- TrueNAS-VM ([#12059](https://github.com/community-scripts/ProxmoxVE/pull/12059))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- add: patchmon breaking change msg [@CrazyWolf13](https://github.com/CrazyWolf13) ([#12075](https://github.com/community-scripts/ProxmoxVE/pull/12075))
|
|
||||||
- LibreNMS: Various fixes [@tremor021](https://github.com/tremor021) ([#12089](https://github.com/community-scripts/ProxmoxVE/pull/12089))
|
|
||||||
|
|
||||||
### 🌐 Website
|
|
||||||
|
|
||||||
- #### 📝 Script Information
|
|
||||||
|
|
||||||
- truenas-vm: slug fix for source code link [@juronja](https://github.com/juronja) ([#12088](https://github.com/community-scripts/ProxmoxVE/pull/12088))
|
|
||||||
|
|
||||||
## 2026-02-18
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 💥 Breaking Changes
|
|
||||||
|
|
||||||
- [Fix] PatchMon: use `SERVER_PORT` in Nginx config if set in env [@vhsdream](https://github.com/vhsdream) ([#12053](https://github.com/community-scripts/ProxmoxVE/pull/12053))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- core: Execution ID & Telemetry Improvements [@MickLesk](https://github.com/MickLesk) ([#12041](https://github.com/community-scripts/ProxmoxVE/pull/12041))
|
|
||||||
|
|
||||||
## 2026-02-17
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Databasus ([#12018](https://github.com/community-scripts/ProxmoxVE/pull/12018))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- [Hotfix] Cleanuparr: backup config before update [@vhsdream](https://github.com/vhsdream) ([#12039](https://github.com/community-scripts/ProxmoxVE/pull/12039))
|
|
||||||
- fix: pterodactyl-panel add symlink [@CrazyWolf13](https://github.com/CrazyWolf13) ([#11997](https://github.com/community-scripts/ProxmoxVE/pull/11997))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- core: call get_lxc_ip in start() before updates [@MickLesk](https://github.com/MickLesk) ([#12015](https://github.com/community-scripts/ProxmoxVE/pull/12015))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- tools/pve: add data analytics / formatting / linting [@MickLesk](https://github.com/MickLesk) ([#12034](https://github.com/community-scripts/ProxmoxVE/pull/12034))
|
|
||||||
- core: smart recovery for failed installs | extend exit_codes [@MickLesk](https://github.com/MickLesk) ([#11221](https://github.com/community-scripts/ProxmoxVE/pull/11221))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- core: error-handler improvements | better exit_code handling | better tools.func source check [@MickLesk](https://github.com/MickLesk) ([#12019](https://github.com/community-scripts/ProxmoxVE/pull/12019))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Immich Public Proxy: centralize and fix systemd service creation [@MickLesk](https://github.com/MickLesk) ([#12025](https://github.com/community-scripts/ProxmoxVE/pull/12025))
|
|
||||||
|
|
||||||
### 📚 Documentation
|
|
||||||
|
|
||||||
- fix contribution/setup-fork [@andreasabeck](https://github.com/andreasabeck) ([#12047](https://github.com/community-scripts/ProxmoxVE/pull/12047))
|
|
||||||
|
|
||||||
## 2026-02-16
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- RomM ([#11987](https://github.com/community-scripts/ProxmoxVE/pull/11987))
|
|
||||||
- LinkDing ([#11976](https://github.com/community-scripts/ProxmoxVE/pull/11976))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- Opencloud: Pin version to 5.1.0 [@vhsdream](https://github.com/vhsdream) ([#12004](https://github.com/community-scripts/ProxmoxVE/pull/12004))
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Tududi: Fix sed command for DB_FILE configuration [@tremor021](https://github.com/tremor021) ([#11988](https://github.com/community-scripts/ProxmoxVE/pull/11988))
|
|
||||||
- slskd: fix exit position [@MickLesk](https://github.com/MickLesk) ([#11963](https://github.com/community-scripts/ProxmoxVE/pull/11963))
|
|
||||||
- cryptpad: restore config earlier and run onlyoffice upgrade [@MickLesk](https://github.com/MickLesk) ([#11964](https://github.com/community-scripts/ProxmoxVE/pull/11964))
|
|
||||||
- jellyseerr/overseerr: Migrate update script to Seerr; prompt rerun [@MickLesk](https://github.com/MickLesk) ([#11965](https://github.com/community-scripts/ProxmoxVE/pull/11965))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- core/vm's: ensure script state is sent on script exit [@MickLesk](https://github.com/MickLesk) ([#11991](https://github.com/community-scripts/ProxmoxVE/pull/11991))
|
|
||||||
- Vaultwarden: export VW_VERSION as version number [@MickLesk](https://github.com/MickLesk) ([#11966](https://github.com/community-scripts/ProxmoxVE/pull/11966))
|
|
||||||
- Zabbix: Improve zabbix-agent service detection [@MickLesk](https://github.com/MickLesk) ([#11968](https://github.com/community-scripts/ProxmoxVE/pull/11968))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- tools.func: ensure /usr/local/bin PATH persists for pct enter sessions [@MickLesk](https://github.com/MickLesk) ([#11970](https://github.com/community-scripts/ProxmoxVE/pull/11970))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- core: remove duplicate error handler from alpine-install.func [@MickLesk](https://github.com/MickLesk) ([#11971](https://github.com/community-scripts/ProxmoxVE/pull/11971))
|
|
||||||
|
|
||||||
### 📂 Github
|
|
||||||
|
|
||||||
- github: add "website" label if "json" changed [@MickLesk](https://github.com/MickLesk) ([#11975](https://github.com/community-scripts/ProxmoxVE/pull/11975))
|
|
||||||
|
|
||||||
### 🌐 Website
|
|
||||||
|
|
||||||
- #### 📝 Script Information
|
|
||||||
|
|
||||||
- Update Wishlist LXC webpage to include reverse proxy info [@summoningpixels](https://github.com/summoningpixels) ([#11973](https://github.com/community-scripts/ProxmoxVE/pull/11973))
|
|
||||||
- Update OpenCloud LXC webpage to include services ports [@summoningpixels](https://github.com/summoningpixels) ([#11969](https://github.com/community-scripts/ProxmoxVE/pull/11969))
|
|
||||||
|
|
||||||
## 2026-02-15
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- ebusd ([#11942](https://github.com/community-scripts/ProxmoxVE/pull/11942))
|
|
||||||
- add: seer script and migrations [@CrazyWolf13](https://github.com/CrazyWolf13) ([#11930](https://github.com/community-scripts/ProxmoxVE/pull/11930))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Fix seerr URL in jellyseerr script [@lucacome](https://github.com/lucacome) ([#11951](https://github.com/community-scripts/ProxmoxVE/pull/11951))
|
|
||||||
- Fix jellyseer and overseer script replacement [@lucacome](https://github.com/lucacome) ([#11949](https://github.com/community-scripts/ProxmoxVE/pull/11949))
|
|
||||||
- Tautulli: Add setuptools < 81 [@tremor021](https://github.com/tremor021) ([#11943](https://github.com/community-scripts/ProxmoxVE/pull/11943))
|
|
||||||
|
|
||||||
- #### 💥 Breaking Changes
|
|
||||||
|
|
||||||
- Refactor: Patchmon [@vhsdream](https://github.com/vhsdream) ([#11888](https://github.com/community-scripts/ProxmoxVE/pull/11888))
|
|
||||||
|
|
||||||
## 2026-02-14
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Increase disk allocation for OpenWebUI and Ollama to prevent installation failures [@Copilot](https://github.com/Copilot) ([#11920](https://github.com/community-scripts/ProxmoxVE/pull/11920))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- core: handle missing RAM speed in nested VMs [@MickLesk](https://github.com/MickLesk) ([#11913](https://github.com/community-scripts/ProxmoxVE/pull/11913))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- core: overwriteable app version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#11753](https://github.com/community-scripts/ProxmoxVE/pull/11753))
|
|
||||||
- core: validate container IDs cluster-wide across all nodes [@MickLesk](https://github.com/MickLesk) ([#11906](https://github.com/community-scripts/ProxmoxVE/pull/11906))
|
|
||||||
- core: improve error reporting with structured error strings and better categorization + output formatting [@MickLesk](https://github.com/MickLesk) ([#11907](https://github.com/community-scripts/ProxmoxVE/pull/11907))
|
|
||||||
- core: unified logging system with combined logs [@MickLesk](https://github.com/MickLesk) ([#11761](https://github.com/community-scripts/ProxmoxVE/pull/11761))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- lxc-updater: add patchmon aware [@failure101](https://github.com/failure101) ([#11905](https://github.com/community-scripts/ProxmoxVE/pull/11905))
|
|
||||||
|
|
||||||
### 🌐 Website
|
|
||||||
|
|
||||||
- #### 📝 Script Information
|
|
||||||
|
|
||||||
- Disable UniFi script - APT packages no longer available [@Copilot](https://github.com/Copilot) ([#11898](https://github.com/community-scripts/ProxmoxVE/pull/11898))
|
|
||||||
|
|
||||||
## 2026-02-13
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- OpenWebUI: pin numba constraint [@MickLesk](https://github.com/MickLesk) ([#11874](https://github.com/community-scripts/ProxmoxVE/pull/11874))
|
|
||||||
- Planka: add migrate step to update function [@ZimmermannLeon](https://github.com/ZimmermannLeon) ([#11877](https://github.com/community-scripts/ProxmoxVE/pull/11877))
|
|
||||||
- Pangolin: switch sqlite-specific back to generic [@MickLesk](https://github.com/MickLesk) ([#11868](https://github.com/community-scripts/ProxmoxVE/pull/11868))
|
|
||||||
- [Hotfix] Jotty: Copy contents of config backup into /opt/jotty/config [@vhsdream](https://github.com/vhsdream) ([#11864](https://github.com/community-scripts/ProxmoxVE/pull/11864))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: Radicale [@vhsdream](https://github.com/vhsdream) ([#11850](https://github.com/community-scripts/ProxmoxVE/pull/11850))
|
|
||||||
- chore(donetick): add config entry for v0.1.73 [@tomfrenzel](https://github.com/tomfrenzel) ([#11872](https://github.com/community-scripts/ProxmoxVE/pull/11872))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- core: retry reporting with fallback payloads [@MickLesk](https://github.com/MickLesk) ([#11885](https://github.com/community-scripts/ProxmoxVE/pull/11885))
|
|
||||||
|
|
||||||
### 📡 API
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- error-handler: Implement json_escape and enhance error handling [@MickLesk](https://github.com/MickLesk) ([#11875](https://github.com/community-scripts/ProxmoxVE/pull/11875))
|
|
||||||
|
|
||||||
### 🌐 Website
|
|
||||||
|
|
||||||
- #### 📝 Script Information
|
|
||||||
|
|
||||||
- SQLServer-2025: add PVE9/Kernel 6.x incompatibility warning [@MickLesk](https://github.com/MickLesk) ([#11829](https://github.com/community-scripts/ProxmoxVE/pull/11829))
|
|
||||||
@@ -56,6 +56,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
$STD .venv/bin/python -m pip install --upgrade pip
|
$STD .venv/bin/python -m pip install --upgrade pip
|
||||||
$STD .venv/bin/python -m pip install -r requirements.txt
|
$STD .venv/bin/python -m pip install -r requirements.txt
|
||||||
|
$STD .venv/bin/python -m pip install 'djangorestframework<3.15'
|
||||||
$STD .venv/bin/python -m manage collectstatic --noinput
|
$STD .venv/bin/python -m manage collectstatic --noinput
|
||||||
$STD .venv/bin/python -m manage migrate
|
$STD .venv/bin/python -m manage migrate
|
||||||
|
|
||||||
|
|||||||
107
ct/alpine-borgbackup-server.sh
Normal file
107
ct/alpine-borgbackup-server.sh
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: Sander Koenders (sanderkoenders)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://www.borgbackup.org/
|
||||||
|
|
||||||
|
APP="Alpine-BorgBackup-Server"
|
||||||
|
var_tags="${var_tags:-alpine;backup}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-20}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.23}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
|
||||||
|
if [[ ! -f /usr/bin/borg ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
CHOICE=$(msg_menu "BorgBackup Server Update Options" \
|
||||||
|
"1" "Update BorgBackup Server" \
|
||||||
|
"2" "Reset SSH Access" \
|
||||||
|
"3" "Enable password authentication for backup user (not recommended, use SSH key instead)" \
|
||||||
|
"4" "Disable password authentication for backup user (recommended for security, use SSH key)")
|
||||||
|
|
||||||
|
case $CHOICE in
|
||||||
|
1)
|
||||||
|
msg_info "Updating $APP LXC"
|
||||||
|
$STD apk -U upgrade
|
||||||
|
msg_ok "Updated $APP LXC successfully!"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
||||||
|
msg_warn "Reset SSH Public key requires interactive mode, skipping."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Setting up SSH Public Key for backup user"
|
||||||
|
|
||||||
|
msg_info "Please paste your SSH public key (e.g., ssh-rsa AAAAB3... user@host): \n"
|
||||||
|
read -p "Key: " SSH_PUBLIC_KEY
|
||||||
|
echo
|
||||||
|
|
||||||
|
if [[ -z "$SSH_PUBLIC_KEY" ]]; then
|
||||||
|
msg_error "No SSH public key provided!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! "$SSH_PUBLIC_KEY" =~ ^(ssh-rsa|ssh-dss|ssh-ed25519|ecdsa-sha2-) ]]; then
|
||||||
|
msg_error "Invalid SSH public key format!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Setting up SSH access"
|
||||||
|
mkdir -p /home/backup/.ssh
|
||||||
|
echo "$SSH_PUBLIC_KEY" >/home/backup/.ssh/authorized_keys
|
||||||
|
|
||||||
|
chown -R backup:backup /home/backup/.ssh
|
||||||
|
chmod 700 /home/backup/.ssh
|
||||||
|
chmod 600 /home/backup/.ssh/authorized_keys
|
||||||
|
|
||||||
|
msg_ok "SSH access configured for backup user"
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
||||||
|
msg_warn "Enabling password authentication requires interactive mode, skipping."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Enabling password authentication for backup user"
|
||||||
|
msg_warn "Password authentication is less secure than using SSH keys. Consider using SSH keys instead."
|
||||||
|
passwd backup
|
||||||
|
sed -i 's/^#*\s*PasswordAuthentication\s\+\(yes\|no\)/PasswordAuthentication yes/' /etc/ssh/sshd_config
|
||||||
|
rc-service sshd restart
|
||||||
|
msg_ok "Password authentication enabled for backup user"
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
msg_info "Disabling password authentication for backup user"
|
||||||
|
sed -i 's/^#*\s*PasswordAuthentication\s\+\(yes\|no\)/PasswordAuthentication no/' /etc/ssh/sshd_config
|
||||||
|
rc-service sshd restart
|
||||||
|
msg_ok "Password authentication disabled for backup user"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Connection information:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}ssh backup@${IP}${CL}"
|
||||||
|
echo -e "${TAB}${VERIFYPW}${YW}To set SSH key, run this script with the 'update' option and select option 2${CL}"
|
||||||
@@ -24,7 +24,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /var ]]; then
|
if [[ ! -d /opt/convertx ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -33,6 +33,8 @@ function update_script() {
|
|||||||
systemctl stop convertx
|
systemctl stop convertx
|
||||||
msg_info "Stopped Service"
|
msg_info "Stopped Service"
|
||||||
|
|
||||||
|
ensure_dependencies libreoffice-writer
|
||||||
|
|
||||||
msg_info "Move data-Folder"
|
msg_info "Move data-Folder"
|
||||||
if [[ -d /opt/convertx/data ]]; then
|
if [[ -d /opt/convertx/data ]]; then
|
||||||
mv /opt/convertx/data /opt/data
|
mv /opt/convertx/data /opt/data
|
||||||
|
|||||||
6
ct/headers/alpine-borgbackup-server
Normal file
6
ct/headers/alpine-borgbackup-server
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
___ __ _ ____ ____ __ _____
|
||||||
|
/ | / /___ (_)___ ___ / __ )____ _________ _/ __ )____ ______/ /____ ______ / ___/___ ______ _____ _____
|
||||||
|
/ /| | / / __ \/ / __ \/ _ \______/ __ / __ \/ ___/ __ `/ __ / __ `/ ___/ //_/ / / / __ \______\__ \/ _ \/ ___/ | / / _ \/ ___/
|
||||||
|
/ ___ |/ / /_/ / / / / / __/_____/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /__/ ,< / /_/ / /_/ /_____/__/ / __/ / | |/ / __/ /
|
||||||
|
/_/ |_/_/ .___/_/_/ /_/\___/ /_____/\____/_/ \__, /_____/\__,_/\___/_/|_|\__,_/ .___/ /____/\___/_/ |___/\___/_/
|
||||||
|
/_/ /____/ /_/
|
||||||
6
ct/headers/versitygw
Normal file
6
ct/headers/versitygw
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
_ __ _ __ _______ __
|
||||||
|
| | / /__ __________(_) /___ __/ ____/ | / /
|
||||||
|
| | / / _ \/ ___/ ___/ / __/ / / / / __ | | /| / /
|
||||||
|
| |/ / __/ / (__ ) / /_/ /_/ / /_/ / | |/ |/ /
|
||||||
|
|___/\___/_/ /____/_/\__/\__, /\____/ |__/|__/
|
||||||
|
/____/
|
||||||
@@ -13,6 +13,7 @@ var_disk="${var_disk:-2}"
|
|||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_tun="${var_tun:-yes}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ function update_script() {
|
|||||||
systemctl stop isponsorblocktv
|
systemctl stop isponsorblocktv
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "isponsorblocktv" "dmunozv04/iSponsorBlockTV" "singlefile" "latest" "/opt/isponsorblocktv" "iSponsorBlockTV-*-linux"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "isponsorblocktv" "dmunozv04/iSponsorBlockTV" "singlefile" "latest" "/opt/isponsorblocktv" "iSponsorBlockTV-x86_64-linux"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start isponsorblocktv
|
systemctl start isponsorblocktv
|
||||||
|
|||||||
@@ -61,5 +61,5 @@ 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 the LXC at following IP address:${CL}"
|
echo -e "${INFO}${YW} Access Kometa Quickstart:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7171${CL}"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2026 community-scripts ORG
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
# Author: tteck (tteckster) | Co-Author: CrazyWolf13
|
# Author: tteck (tteckster) | Co-Author: CrazyWolf13, MickLesk (CanbiZ)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://nginxproxymanager.com/ | Github: https://github.com/NginxProxyManager/nginx-proxy-manager
|
# Source: https://nginxproxymanager.com/ | Github: https://github.com/NginxProxyManager/nginx-proxy-manager
|
||||||
|
|
||||||
@@ -38,8 +38,8 @@ function update_script() {
|
|||||||
CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
||||||
if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
|
if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
|
||||||
systemctl stop openresty
|
systemctl stop openresty
|
||||||
apt-get purge -y nodejs npm
|
$STD apt purge -y nodejs npm
|
||||||
apt-get autoremove -y
|
$STD apt autoremove -y
|
||||||
rm -rf /usr/local/bin/node /usr/local/bin/npm
|
rm -rf /usr/local/bin/node /usr/local/bin/npm
|
||||||
rm -rf /usr/local/lib/node_modules
|
rm -rf /usr/local/lib/node_modules
|
||||||
rm -rf ~/.npm
|
rm -rf ~/.npm
|
||||||
@@ -49,92 +49,150 @@ function update_script() {
|
|||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
if dpkg -s openresty &>/dev/null 2>&1; then
|
||||||
grep "tag_name" |
|
msg_info "Migrating from packaged OpenResty to source"
|
||||||
awk '{print substr($2, 3, length($2)-4) }')
|
rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg /etc/apt/trusted.gpg.d/openresty.gpg
|
||||||
|
rm -f /etc/apt/sources.list.d/openresty.list /etc/apt/sources.list.d/openresty.sources
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}" "/opt/nginxproxymanager"
|
$STD apt remove -y openresty
|
||||||
|
$STD apt autoremove -y
|
||||||
msg_info "Stopping Services"
|
rm -f ~/.openresty
|
||||||
systemctl stop openresty
|
msg_ok "Migrated from packaged OpenResty to source"
|
||||||
systemctl stop npm
|
|
||||||
msg_ok "Stopped Services"
|
|
||||||
|
|
||||||
msg_info "Cleaning old files"
|
|
||||||
$STD rm -rf /app \
|
|
||||||
/var/www/html \
|
|
||||||
/etc/nginx \
|
|
||||||
/var/log/nginx \
|
|
||||||
/var/lib/nginx \
|
|
||||||
/var/cache/nginx
|
|
||||||
msg_ok "Cleaned old files"
|
|
||||||
|
|
||||||
msg_info "Setting up Environment"
|
|
||||||
ln -sf /usr/bin/python3 /usr/bin/python
|
|
||||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
|
||||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
|
||||||
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
|
||||||
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
|
||||||
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
|
||||||
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
|
||||||
for NGINX_CONF in $NGINX_CONFS; do
|
|
||||||
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' "$NGINX_CONF"
|
|
||||||
done
|
|
||||||
|
|
||||||
mkdir -p /var/www/html /etc/nginx/logs
|
|
||||||
cp -r /opt/nginxproxymanager/docker/rootfs/var/www/html/* /var/www/html/
|
|
||||||
cp -r /opt/nginxproxymanager/docker/rootfs/etc/nginx/* /etc/nginx/
|
|
||||||
cp /opt/nginxproxymanager/docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
|
|
||||||
cp /opt/nginxproxymanager/docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
|
|
||||||
ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
|
|
||||||
rm -f /etc/nginx/conf.d/dev.conf
|
|
||||||
|
|
||||||
mkdir -p /tmp/nginx/body \
|
|
||||||
/run/nginx \
|
|
||||||
/data/nginx \
|
|
||||||
/data/custom_ssl \
|
|
||||||
/data/logs \
|
|
||||||
/data/access \
|
|
||||||
/data/nginx/default_host \
|
|
||||||
/data/nginx/default_www \
|
|
||||||
/data/nginx/proxy_host \
|
|
||||||
/data/nginx/redirection_host \
|
|
||||||
/data/nginx/stream \
|
|
||||||
/data/nginx/dead_host \
|
|
||||||
/data/nginx/temp \
|
|
||||||
/var/lib/nginx/cache/public \
|
|
||||||
/var/lib/nginx/cache/private \
|
|
||||||
/var/cache/nginx/proxy_temp
|
|
||||||
|
|
||||||
chmod -R 777 /var/cache/nginx
|
|
||||||
chown root /tmp/nginx
|
|
||||||
|
|
||||||
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" >/etc/nginx/conf.d/include/resolvers.conf
|
|
||||||
|
|
||||||
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
|
|
||||||
$STD openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p /app/frontend/images
|
local pcre_pkg="libpcre3-dev"
|
||||||
cp -r /opt/nginxproxymanager/backend/* /app
|
if grep -qE 'VERSION_ID="1[3-9]"' /etc/os-release 2>/dev/null; then
|
||||||
msg_ok "Set up Environment"
|
pcre_pkg="libpcre2-dev"
|
||||||
|
fi
|
||||||
|
$STD apt install -y build-essential "$pcre_pkg" libssl-dev zlib1g-dev
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
if check_for_gh_release "openresty" "openresty/openresty"; then
|
||||||
export NODE_OPTIONS="--max_old_space_size=2048 --openssl-legacy-provider"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "${CHECK_UPDATE_RELEASE}" "/opt/openresty" "openresty-*.tar.gz"
|
||||||
cd /opt/nginxproxymanager/frontend
|
|
||||||
# Replace node-sass with sass in package.json before installation
|
|
||||||
sed -E -i 's/"node-sass" *: *"([^"]*)"/"sass": "\1"/g' package.json
|
|
||||||
$STD yarn install --network-timeout 600000
|
|
||||||
$STD yarn locale-compile
|
|
||||||
$STD yarn build
|
|
||||||
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
|
|
||||||
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images
|
|
||||||
msg_ok "Built Frontend"
|
|
||||||
|
|
||||||
msg_info "Initializing Backend"
|
msg_info "Building OpenResty"
|
||||||
rm -rf /app/config/default.json
|
cd /opt/openresty
|
||||||
if [ ! -f /app/config/production.json ]; then
|
$STD ./configure \
|
||||||
cat <<'EOF' >/app/config/production.json
|
--with-http_v2_module \
|
||||||
|
--with-http_realip_module \
|
||||||
|
--with-http_stub_status_module \
|
||||||
|
--with-http_ssl_module \
|
||||||
|
--with-http_sub_module \
|
||||||
|
--with-http_auth_request_module \
|
||||||
|
--with-pcre-jit \
|
||||||
|
--with-stream \
|
||||||
|
--with-stream_ssl_module
|
||||||
|
$STD make -j"$(nproc)"
|
||||||
|
$STD make install
|
||||||
|
rm -rf /opt/openresty
|
||||||
|
cat <<'EOF' >/lib/systemd/system/openresty.service
|
||||||
|
[Unit]
|
||||||
|
Description=The OpenResty Application Platform
|
||||||
|
After=syslog.target network-online.target remote-fs.target nss-lookup.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t
|
||||||
|
ExecStart=/usr/local/openresty/nginx/sbin/nginx -g 'daemon off;'
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl restart openresty
|
||||||
|
msg_ok "Built OpenResty"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd /root
|
||||||
|
if [ -d /opt/certbot ]; then
|
||||||
|
msg_info "Updating Certbot"
|
||||||
|
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
|
||||||
|
$STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
|
||||||
|
msg_ok "Updated Certbot"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop openresty
|
||||||
|
systemctl stop npm
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "${CHECK_UPDATE_RELEASE}" "/opt/nginxproxymanager"
|
||||||
|
|
||||||
|
msg_info "Cleaning old files"
|
||||||
|
$STD rm -rf /app \
|
||||||
|
/var/www/html \
|
||||||
|
/etc/nginx \
|
||||||
|
/var/log/nginx \
|
||||||
|
/var/lib/nginx \
|
||||||
|
/var/cache/nginx
|
||||||
|
msg_ok "Cleaned old files"
|
||||||
|
|
||||||
|
local RELEASE="${CHECK_UPDATE_RELEASE#v}"
|
||||||
|
msg_info "Setting up Environment"
|
||||||
|
ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
|
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||||
|
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||||
|
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
||||||
|
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
||||||
|
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
||||||
|
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
||||||
|
for NGINX_CONF in $NGINX_CONFS; do
|
||||||
|
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' "$NGINX_CONF"
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p /var/www/html /etc/nginx/logs
|
||||||
|
cp -r /opt/nginxproxymanager/docker/rootfs/var/www/html/* /var/www/html/
|
||||||
|
cp -r /opt/nginxproxymanager/docker/rootfs/etc/nginx/* /etc/nginx/
|
||||||
|
cp /opt/nginxproxymanager/docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
|
||||||
|
cp /opt/nginxproxymanager/docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
|
||||||
|
ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
|
||||||
|
rm -f /etc/nginx/conf.d/dev.conf
|
||||||
|
|
||||||
|
mkdir -p /tmp/nginx/body \
|
||||||
|
/run/nginx \
|
||||||
|
/data/nginx \
|
||||||
|
/data/custom_ssl \
|
||||||
|
/data/logs \
|
||||||
|
/data/access \
|
||||||
|
/data/nginx/default_host \
|
||||||
|
/data/nginx/default_www \
|
||||||
|
/data/nginx/proxy_host \
|
||||||
|
/data/nginx/redirection_host \
|
||||||
|
/data/nginx/stream \
|
||||||
|
/data/nginx/dead_host \
|
||||||
|
/data/nginx/temp \
|
||||||
|
/var/lib/nginx/cache/public \
|
||||||
|
/var/lib/nginx/cache/private \
|
||||||
|
/var/cache/nginx/proxy_temp
|
||||||
|
|
||||||
|
chmod -R 777 /var/cache/nginx
|
||||||
|
chown root /tmp/nginx
|
||||||
|
|
||||||
|
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" >/etc/nginx/conf.d/include/resolvers.conf
|
||||||
|
|
||||||
|
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
|
||||||
|
$STD openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p /app/frontend/images
|
||||||
|
cp -r /opt/nginxproxymanager/backend/* /app
|
||||||
|
msg_ok "Set up Environment"
|
||||||
|
|
||||||
|
msg_info "Building Frontend"
|
||||||
|
export NODE_OPTIONS="--max_old_space_size=2048 --openssl-legacy-provider"
|
||||||
|
cd /opt/nginxproxymanager/frontend
|
||||||
|
sed -E -i 's/"node-sass" *: *"([^"]*)"/"sass": "\1"/g' package.json
|
||||||
|
$STD yarn install --network-timeout 600000
|
||||||
|
$STD yarn locale-compile
|
||||||
|
$STD yarn build
|
||||||
|
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
|
||||||
|
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images
|
||||||
|
msg_ok "Built Frontend"
|
||||||
|
|
||||||
|
msg_info "Initializing Backend"
|
||||||
|
rm -rf /app/config/default.json
|
||||||
|
if [ ! -f /app/config/production.json ]; then
|
||||||
|
cat <<'EOF' >/app/config/production.json
|
||||||
{
|
{
|
||||||
"database": {
|
"database": {
|
||||||
"engine": "knex-native",
|
"engine": "knex-native",
|
||||||
@@ -148,40 +206,21 @@ function update_script() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
fi
|
||||||
|
sed -i 's/"client": "sqlite3"/"client": "better-sqlite3"/' /app/config/production.json
|
||||||
|
cd /app
|
||||||
|
$STD yarn install --network-timeout 600000
|
||||||
|
msg_ok "Initialized Backend"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||||
|
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable -q --now openresty
|
||||||
|
systemctl enable -q --now npm
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
sed -i 's/"client": "sqlite3"/"client": "better-sqlite3"/' /app/config/production.json
|
|
||||||
cd /app
|
|
||||||
$STD yarn install --network-timeout 600000
|
|
||||||
msg_ok "Initialized Backend"
|
|
||||||
|
|
||||||
msg_info "Updating Certbot"
|
|
||||||
[ -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg ] && rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg
|
|
||||||
[ -f /etc/apt/sources.list.d/openresty.list ] && rm -f /etc/apt/sources.list.d/openresty.list
|
|
||||||
[ ! -f /etc/apt/trusted.gpg.d/openresty.gpg ] && curl -fsSL https://openresty.org/package/pubkey.gpg | gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/openresty.gpg
|
|
||||||
[ ! -f /etc/apt/sources.list.d/openresty.sources ] && cat <<'EOF' >/etc/apt/sources.list.d/openresty.sources
|
|
||||||
Types: deb
|
|
||||||
URIs: http://openresty.org/package/debian/
|
|
||||||
Suites: bookworm
|
|
||||||
Components: openresty
|
|
||||||
Signed-By: /etc/apt/trusted.gpg.d/openresty.gpg
|
|
||||||
EOF
|
|
||||||
$STD apt update
|
|
||||||
$STD apt -y install openresty
|
|
||||||
if [ -d /opt/certbot ]; then
|
|
||||||
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
|
|
||||||
$STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
|
|
||||||
fi
|
|
||||||
msg_ok "Updated Certbot"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
|
||||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
|
||||||
systemctl enable -q --now openresty
|
|
||||||
systemctl enable -q --now npm
|
|
||||||
systemctl restart openresty
|
|
||||||
msg_ok "Started Services"
|
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,35 +28,26 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(get_latest_github_release "Part-DB/Part-DB-server")
|
|
||||||
if check_for_gh_release "partdb" "Part-DB/Part-DB-server"; then
|
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"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
|
||||||
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 "/opt/v${RELEASE}.zip"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "partdb" "Part-DB/Part-DB-server" "prebuild" "latest" "/opt/partdb" "partdb_with_assets.zip"
|
||||||
$STD unzip "v${RELEASE}.zip"
|
|
||||||
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
|
|
||||||
|
|
||||||
|
msg_info "Updating Part-DB"
|
||||||
cd /opt/partdb/
|
cd /opt/partdb/
|
||||||
cp -r "/opt/partdb-backup/.env.local" /opt/partdb/
|
cp -r /opt/partdb-backup/.env.local /opt/partdb/
|
||||||
cp -r "/opt/partdb-backup/public/media" /opt/partdb/public/
|
cp -r /opt/partdb-backup/public/media /opt/partdb/public/
|
||||||
cp -r "/opt/partdb-backup/config/banner.md" /opt/partdb/config/
|
cp -r /opt/partdb-backup/config/banner.md /opt/partdb/config/
|
||||||
|
|
||||||
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
|
||||||
$STD yarn install
|
|
||||||
$STD yarn build
|
|
||||||
$STD php bin/console cache:clear
|
$STD php bin/console cache:clear
|
||||||
$STD php bin/console doctrine:migrations:migrate -n
|
$STD php bin/console doctrine:migrations:migrate -n
|
||||||
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/partdb-backup
|
rm -r /opt/partdb-backup
|
||||||
echo "${RELEASE}" >~/.partdb
|
msg_ok "Updated Part-DB"
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ function update_script() {
|
|||||||
systemctl stop reactive-resume
|
systemctl stop reactive-resume
|
||||||
msg_ok "Stopped services"
|
msg_ok "Stopped services"
|
||||||
|
|
||||||
|
ensure_dependencies git
|
||||||
|
|
||||||
cp /opt/reactive-resume/.env /opt/reactive-resume.env.bak
|
cp /opt/reactive-resume/.env /opt/reactive-resume.env.bak
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "reactive-resume" "amruthpillai/reactive-resume" "tarball" "latest" "/opt/reactive-resume"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "reactive-resume" "amruthpillai/reactive-resume" "tarball" "latest" "/opt/reactive-resume"
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
|
|
||||||
APP="Scanopy"
|
APP="Scanopy"
|
||||||
var_tags="${var_tags:-analytics}"
|
var_tags="${var_tags:-analytics}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-4}"
|
||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Tracearr"
|
APP="Tracearr"
|
||||||
var_tags="${var_tags:-media}"
|
var_tags="${var_tags:-media}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-8192}"
|
||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
@@ -102,7 +102,7 @@ EOF
|
|||||||
|
|
||||||
if check_for_gh_release "tracearr" "connorgallopo/Tracearr"; then
|
if check_for_gh_release "tracearr" "connorgallopo/Tracearr"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop tracearr postgresql redis
|
systemctl stop tracearr postgresql redis-server
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
msg_info "Updating pnpm"
|
msg_info "Updating pnpm"
|
||||||
@@ -115,6 +115,7 @@ EOF
|
|||||||
|
|
||||||
msg_info "Building Tracearr"
|
msg_info "Building Tracearr"
|
||||||
export TZ=$(cat /etc/timezone)
|
export TZ=$(cat /etc/timezone)
|
||||||
|
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||||
cd /opt/tracearr.build
|
cd /opt/tracearr.build
|
||||||
$STD pnpm install --frozen-lockfile --force
|
$STD pnpm install --frozen-lockfile --force
|
||||||
$STD pnpm turbo telemetry disable
|
$STD pnpm turbo telemetry disable
|
||||||
@@ -148,7 +149,7 @@ EOF
|
|||||||
msg_ok "Configured Tracearr"
|
msg_ok "Configured Tracearr"
|
||||||
|
|
||||||
msg_info "Starting services"
|
msg_info "Starting services"
|
||||||
systemctl start postgresql redis tracearr
|
systemctl start postgresql redis-server tracearr
|
||||||
msg_ok "Started services"
|
msg_ok "Started services"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
else
|
else
|
||||||
|
|||||||
54
ct/versitygw.sh
Normal file
54
ct/versitygw.sh
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/versity/versitygw
|
||||||
|
|
||||||
|
APP="VersityGW"
|
||||||
|
var_tags="${var_tags:-s3;storage;gateway}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-8}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /usr/bin/versitygw ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "versitygw" "versity/versitygw"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop versitygw@gateway
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "versitygw" "versity/versitygw" "binary"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start versitygw@gateway
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7070 (Gateway) or http://${IP}:7070 (WebUI)${CL}"
|
||||||
@@ -62,6 +62,7 @@ $STD uv venv --clear /opt/adventurelog/backend/server/.venv
|
|||||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m ensurepip --upgrade
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m ensurepip --upgrade
|
||||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install --upgrade pip
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install --upgrade pip
|
||||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install -r requirements.txt
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install -r requirements.txt
|
||||||
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install 'djangorestframework<3.15'
|
||||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage collectstatic --noinput
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage collectstatic --noinput
|
||||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage migrate
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage migrate
|
||||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage download-countries
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage download-countries
|
||||||
|
|||||||
34
install/alpine-borgbackup-server-install.sh
Normal file
34
install/alpine-borgbackup-server-install.sh
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: Sander Koenders (sanderkoenders)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://www.borgbackup.org/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing BorgBackup"
|
||||||
|
$STD apk add --no-cache borgbackup openssh
|
||||||
|
$STD rc-update add sshd
|
||||||
|
$STD rc-service sshd start
|
||||||
|
msg_ok "Installed BorgBackup"
|
||||||
|
|
||||||
|
msg_info "Creating backup user"
|
||||||
|
$STD adduser -D -s /bin/bash -h /home/backup backup
|
||||||
|
$STD passwd -d backup
|
||||||
|
msg_ok "Created backup user"
|
||||||
|
|
||||||
|
msg_info "Configure SSH, disabling password authentication and enabling public key authentication"
|
||||||
|
$STD sed -i -e 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
|
||||||
|
$STD rc-service sshd restart
|
||||||
|
msg_ok "Configured SSH"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -22,7 +22,12 @@ replication:
|
|||||||
replSetName: "rs0"
|
replSetName: "rs0"
|
||||||
EOF
|
EOF
|
||||||
systemctl restart mongod
|
systemctl restart mongod
|
||||||
sleep 3
|
for i in $(seq 1 30); do
|
||||||
|
if mongosh --quiet --eval "db.adminCommand('ping')" &>/dev/null; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
$STD mongosh --eval 'rs.initiate({_id: "rs0", members: [{_id: 0, host: "127.0.0.1:27017"}]})'
|
$STD mongosh --eval 'rs.initiate({_id: "rs0", members: [{_id: 0, host: "127.0.0.1:27017"}]})'
|
||||||
msg_ok "Configured MongoDB Replica Set"
|
msg_ok "Configured MongoDB Replica Set"
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ $STD apt install -y \
|
|||||||
dvisvgm \
|
dvisvgm \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
inkscape \
|
inkscape \
|
||||||
|
libreoffice-writer \
|
||||||
libva2 \
|
libva2 \
|
||||||
libvips-tools \
|
libvips-tools \
|
||||||
lmodern \
|
lmodern \
|
||||||
|
|||||||
@@ -310,7 +310,7 @@ else
|
|||||||
ffmpeg:
|
ffmpeg:
|
||||||
hwaccel_args: auto
|
hwaccel_args: auto
|
||||||
model:
|
model:
|
||||||
path: /cpu_model.tflite
|
path: /models/cpu_model.tflite
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
msg_ok "Configured Frigate"
|
msg_ok "Configured Frigate"
|
||||||
|
|||||||
@@ -13,7 +13,12 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "isponsorblocktv" "dmunozv04/iSponsorBlockTV" "singlefile" "latest" "/opt/isponsorblocktv" "iSponsorBlockTV-*-linux"
|
if ! grep -q ' avx ' /proc/cpuinfo 2>/dev/null; then
|
||||||
|
msg_error "CPU does not support AVX instructions (required by iSponsorBlockTV/PyApp)"
|
||||||
|
exit 106
|
||||||
|
fi
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "isponsorblocktv" "dmunozv04/iSponsorBlockTV" "singlefile" "latest" "/opt/isponsorblocktv" "iSponsorBlockTV-x86_64-linux"
|
||||||
|
|
||||||
msg_info "Setting up iSponsorBlockTV"
|
msg_info "Setting up iSponsorBlockTV"
|
||||||
install -d /var/lib/isponsorblocktv
|
install -d /var/lib/isponsorblocktv
|
||||||
@@ -42,7 +47,7 @@ systemctl enable -q isponsorblocktv
|
|||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
msg_info "Creating CLI wrapper"
|
msg_info "Creating CLI wrapper"
|
||||||
cat <<EOF >/usr/local/bin/iSponsorBlockTV
|
cat <<'EOF' >/usr/local/bin/iSponsorBlockTV
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
export iSPBTV_data_dir="/var/lib/isponsorblocktv"
|
export iSPBTV_data_dir="/var/lib/isponsorblocktv"
|
||||||
|
|
||||||
|
|||||||
@@ -23,12 +23,20 @@ mkdir -p config/assets
|
|||||||
cp config/config.yml.template config/config.yml
|
cp config/config.yml.template config/config.yml
|
||||||
msg_ok "Setup Kometa"
|
msg_ok "Setup Kometa"
|
||||||
|
|
||||||
read -p "${TAB3}Enter your TMDb API key: " TMDBKEY
|
read -r -p "${TAB3}Enter your TMDb API key: " TMDBKEY
|
||||||
read -p "${TAB3}Enter your Plex URL: " PLEXURL
|
read -r -p "${TAB3}Enter your Plex URL: " PLEXURL
|
||||||
read -p "${TAB3}Enter your Plex token: " PLEXTOKEN
|
read -r -p "${TAB3}Enter your Plex token: " PLEXTOKEN
|
||||||
sed -i -e "s#url: http://192.168.1.12:32400#url: $PLEXURL #g" /opt/kometa/config/config.yml
|
sed -i '/^plex:/,/^[^ ]/{s| url:.*| url: '"$PLEXURL"'|}' /opt/kometa/config/config.yml
|
||||||
sed -i -e "s/token: ####################/token: $PLEXTOKEN/g" /opt/kometa/config/config.yml
|
sed -i '/^plex:/,/^[^ ]/{s| token:.*| token: '"$PLEXTOKEN"'|}' /opt/kometa/config/config.yml
|
||||||
sed -i -e "s/apikey: ################################/apikey: $TMDBKEY/g" /opt/kometa/config/config.yml
|
sed -i '/^tmdb:/,/^[^ ]/{s| apikey:.*| apikey: '"$TMDBKEY"'|}' /opt/kometa/config/config.yml
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "kometa-quickstart" "Kometa-Team/Quickstart" "tarball"
|
||||||
|
|
||||||
|
msg_info "Installing Kometa Quickstart"
|
||||||
|
cd /opt/kometa-quickstart
|
||||||
|
$STD uv venv /opt/kometa-quickstart/.venv
|
||||||
|
$STD /opt/kometa-quickstart/.venv/bin/python -m pip install -r requirements.txt
|
||||||
|
msg_ok "Installed Kometa Quickstart"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/kometa.service
|
cat <<EOF >/etc/systemd/system/kometa.service
|
||||||
@@ -46,7 +54,22 @@ RestartSec=30
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now kometa
|
cat <<EOF >/etc/systemd/system/kometa-quickstart.service
|
||||||
|
[Unit]
|
||||||
|
Description=Kometa Quickstart
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/kometa-quickstart
|
||||||
|
ExecStart=/opt/kometa-quickstart/.venv/bin/python quickstart.py
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now kometa kometa-quickstart
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -14,23 +14,20 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt update
|
$STD apt install -y \
|
||||||
$STD apt -y install \
|
|
||||||
ca-certificates \
|
|
||||||
apache2-utils \
|
apache2-utils \
|
||||||
logrotate \
|
logrotate \
|
||||||
build-essential \
|
build-essential \
|
||||||
git
|
libpcre3-dev \
|
||||||
msg_ok "Installed Dependencies"
|
libssl-dev \
|
||||||
|
zlib1g-dev \
|
||||||
msg_info "Installing Python Dependencies"
|
git \
|
||||||
$STD apt install -y \
|
|
||||||
python3 \
|
python3 \
|
||||||
python3-dev \
|
python3-dev \
|
||||||
python3-pip \
|
python3-pip \
|
||||||
python3-venv \
|
python3-venv \
|
||||||
python3-cffi
|
python3-cffi
|
||||||
msg_ok "Installed Python Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Certbot"
|
msg_info "Setting up Certbot"
|
||||||
$STD python3 -m venv /opt/certbot
|
$STD python3 -m venv /opt/certbot
|
||||||
@@ -39,33 +36,50 @@ $STD /opt/certbot/bin/pip install certbot certbot-dns-cloudflare
|
|||||||
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
|
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
|
||||||
msg_ok "Set up Certbot"
|
msg_ok "Set up Certbot"
|
||||||
|
|
||||||
msg_info "Installing Openresty"
|
fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "latest" "/opt/openresty" "openresty-*.tar.gz"
|
||||||
curl -fsSL "https://openresty.org/package/pubkey.gpg" | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty.gpg
|
|
||||||
cat <<'EOF' >/etc/apt/sources.list.d/openresty.sources
|
msg_info "Building OpenResty"
|
||||||
Types: deb
|
cd /opt/openresty
|
||||||
URIs: http://openresty.org/package/debian/
|
$STD ./configure \
|
||||||
Suites: bookworm
|
--with-http_v2_module \
|
||||||
Components: openresty
|
--with-http_realip_module \
|
||||||
Signed-By: /etc/apt/trusted.gpg.d/openresty.gpg
|
--with-http_stub_status_module \
|
||||||
|
--with-http_ssl_module \
|
||||||
|
--with-http_sub_module \
|
||||||
|
--with-http_auth_request_module \
|
||||||
|
--with-pcre-jit \
|
||||||
|
--with-stream \
|
||||||
|
--with-stream_ssl_module
|
||||||
|
$STD make -j"$(nproc)"
|
||||||
|
$STD make install
|
||||||
|
rm -rf /opt/openresty
|
||||||
|
|
||||||
|
cat <<'EOF' >/lib/systemd/system/openresty.service
|
||||||
|
[Unit]
|
||||||
|
Description=The OpenResty Application Platform
|
||||||
|
After=syslog.target network-online.target remote-fs.target nss-lookup.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t
|
||||||
|
ExecStart=/usr/local/openresty/nginx/sbin/nginx -g 'daemon off;'
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
$STD apt update
|
msg_ok "Built OpenResty"
|
||||||
$STD apt -y install openresty
|
|
||||||
msg_ok "Installed Openresty"
|
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||||
|
RELEASE=$(get_latest_github_release "NginxProxyManager/nginx-proxy-manager")
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
|
||||||
grep "tag_name" |
|
|
||||||
awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}"
|
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Setting up Environment"
|
msg_info "Setting up Environment"
|
||||||
ln -sf /usr/bin/python3 /usr/bin/python
|
ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||||
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
||||||
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
||||||
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
||||||
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
||||||
for NGINX_CONF in $NGINX_CONFS; do
|
for NGINX_CONF in $NGINX_CONFS; do
|
||||||
@@ -169,7 +183,6 @@ sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/n
|
|||||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||||
systemctl enable -q --now openresty
|
systemctl enable -q --now openresty
|
||||||
systemctl enable -q --now npm
|
systemctl enable -q --now npm
|
||||||
systemctl restart openresty
|
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -13,27 +13,19 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
PG_DB_NAME="partdb" PG_DB_USER="partdb" setup_postgresql_db
|
PG_DB_NAME="partdb" PG_DB_USER="partdb" setup_postgresql_db
|
||||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl" PHP_POST_MAX_SIZE="100M" PHP_UPLOAD_MAX_FILESIZE="100M" setup_php
|
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl" PHP_POST_MAX_SIZE="100M" PHP_UPLOAD_MAX_FILESIZE="100M" setup_php
|
||||||
setup_composer
|
setup_composer
|
||||||
|
|
||||||
msg_info "Installing Part-DB (Patience)"
|
fetch_and_deploy_gh_release "partdb" "Part-DB/Part-DB-server" "prebuild" "latest" "/opt/partdb" "partdb_with_assets.zip"
|
||||||
cd /opt
|
|
||||||
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"
|
|
||||||
$STD unzip "v${RELEASE}.zip"
|
|
||||||
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
|
|
||||||
|
|
||||||
|
msg_info "Installing Part-DB"
|
||||||
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://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_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
|
||||||
$STD yarn install
|
|
||||||
$STD yarn build
|
|
||||||
$STD php bin/console cache:clear
|
$STD php bin/console cache:clear
|
||||||
php bin/console doctrine:migrations:migrate -n >~/database-migration-output
|
php bin/console doctrine:migrations:migrate -n >~/database-migration-output
|
||||||
chown -R www-data:www-data /opt/partdb
|
chown -R www-data:www-data /opt/partdb
|
||||||
@@ -44,8 +36,6 @@ ADMIN_PASS=$(grep -oP 'The initial password for the "admin" user is: \K\w+' ~/da
|
|||||||
echo "Part-DB Admin Password: $ADMIN_PASS"
|
echo "Part-DB Admin Password: $ADMIN_PASS"
|
||||||
} >>~/partdb.creds
|
} >>~/partdb.creds
|
||||||
rm -rf ~/database-migration-output
|
rm -rf ~/database-migration-output
|
||||||
rm -rf "/opt/v${RELEASE}.zip"
|
|
||||||
echo "${RELEASE}" >~/.partdb
|
|
||||||
msg_ok "Installed Part-DB"
|
msg_ok "Installed Part-DB"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ PG_DB_NAME="reactive_resume" PG_DB_USER="reactive_resume" setup_postgresql_db
|
|||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y chromium
|
$STD apt install -y \
|
||||||
|
chromium \
|
||||||
|
git
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "reactive-resume" "amruthpillai/reactive-resume" "tarball"
|
fetch_and_deploy_gh_release "reactive-resume" "amruthpillai/reactive-resume" "tarball"
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ cd Shinobi
|
|||||||
gitVersionNumber=$(git rev-parse HEAD)
|
gitVersionNumber=$(git rev-parse HEAD)
|
||||||
theDateRightNow=$(date)
|
theDateRightNow=$(date)
|
||||||
touch version.json
|
touch version.json
|
||||||
chmod 777 version.json
|
chmod 644 version.json
|
||||||
echo '{"Product" : "'"Shinobi"'" , "Branch" : "'"master"'" , "Version" : "'"$gitVersionNumber"'" , "Date" : "'"$theDateRightNow"'" , "Repository" : "'"https://gitlab.com/Shinobi-Systems/Shinobi.git"'"}' >version.json
|
echo '{"Product" : "'"Shinobi"'" , "Branch" : "'"master"'" , "Version" : "'"$gitVersionNumber"'" , "Date" : "'"$theDateRightNow"'" , "Repository" : "'"https://gitlab.com/Shinobi-Systems/Shinobi.git"'"}' >version.json
|
||||||
msg_ok "Cloned Shinobi"
|
msg_ok "Cloned Shinobi"
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ fetch_and_deploy_gh_release "tasmoadmin" "TasmoAdmin/TasmoAdmin" "prebuild" "lat
|
|||||||
msg_info "Configuring TasmoAdmin"
|
msg_info "Configuring TasmoAdmin"
|
||||||
rm -rf /etc/php/8.4/apache2/conf.d/10-opcache.ini
|
rm -rf /etc/php/8.4/apache2/conf.d/10-opcache.ini
|
||||||
chown -R www-data:www-data /var/www/tasmoadmin
|
chown -R www-data:www-data /var/www/tasmoadmin
|
||||||
chmod 777 /var/www/tasmoadmin/tmp /var/www/tasmoadmin/data
|
chmod 775 /var/www/tasmoadmin/tmp /var/www/tasmoadmin/data
|
||||||
cat <<EOF >/etc/apache2/sites-available/tasmoadmin.conf
|
cat <<EOF >/etc/apache2/sites-available/tasmoadmin.conf
|
||||||
<VirtualHost *:9999>
|
<VirtualHost *:9999>
|
||||||
ServerName tasmoadmin
|
ServerName tasmoadmin
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ fetch_and_deploy_gh_release "tracearr" "connorgallopo/Tracearr" "tarball" "lates
|
|||||||
|
|
||||||
msg_info "Building Tracearr"
|
msg_info "Building Tracearr"
|
||||||
export TZ=$(cat /etc/timezone)
|
export TZ=$(cat /etc/timezone)
|
||||||
|
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||||
cd /opt/tracearr.build
|
cd /opt/tracearr.build
|
||||||
$STD pnpm install --frozen-lockfile --force
|
$STD pnpm install --frozen-lockfile --force
|
||||||
$STD pnpm turbo telemetry disable
|
$STD pnpm turbo telemetry disable
|
||||||
|
|||||||
49
install/versitygw-install.sh
Normal file
49
install/versitygw-install.sh
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/versity/versitygw
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "versitygw" "versity/versitygw" "binary"
|
||||||
|
|
||||||
|
WEBUI_CONF=""
|
||||||
|
read -rp "Would you like to enable the VersityGW WebGUI (Beta)? (y/N): " webui_prompt
|
||||||
|
if [[ "${webui_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
|
WEBUI_CONF="\nVGW_WEBUI_PORT=:7071\nVGW_WEBUI_NO_TLS=true"
|
||||||
|
msg_ok "WebGUI will be enabled on port 7071"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Configuring VersityGW"
|
||||||
|
mkdir -p /opt/versitygw-data
|
||||||
|
ACCESS_KEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-20)
|
||||||
|
SECRET_KEY=$(openssl rand -base64 36 | tr -dc 'a-zA-Z0-9' | cut -c1-40)
|
||||||
|
|
||||||
|
cat <<EOF >/etc/versitygw.d/gateway.conf
|
||||||
|
VGW_BACKEND=posix
|
||||||
|
VGW_BACKEND_ARG=/opt/versitygw-data
|
||||||
|
VGW_PORT=:7070
|
||||||
|
ROOT_ACCESS_KEY_ID=${ACCESS_KEY}
|
||||||
|
ROOT_SECRET_ACCESS_KEY=${SECRET_KEY}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [[ -n "$WEBUI_CONF" ]]; then
|
||||||
|
echo -e "$WEBUI_CONF" >>/etc/versitygw.d/gateway.conf
|
||||||
|
fi
|
||||||
|
msg_ok "Configured VersityGW"
|
||||||
|
|
||||||
|
msg_info "Enabling Service"
|
||||||
|
systemctl enable -q --now versitygw@gateway
|
||||||
|
msg_ok "Enabled Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -90,11 +90,18 @@ setting_up_container() {
|
|||||||
network_check() {
|
network_check() {
|
||||||
set +e
|
set +e
|
||||||
trap - ERR
|
trap - ERR
|
||||||
|
ipv4_connected=false
|
||||||
|
|
||||||
|
# Check IPv4 connectivity to Cloudflare, Google & Quad9 DNS servers
|
||||||
if ping -c 1 -W 1 1.1.1.1 &>/dev/null || ping -c 1 -W 1 8.8.8.8 &>/dev/null || ping -c 1 -W 1 9.9.9.9 &>/dev/null; then
|
if ping -c 1 -W 1 1.1.1.1 &>/dev/null || ping -c 1 -W 1 8.8.8.8 &>/dev/null || ping -c 1 -W 1 9.9.9.9 &>/dev/null; then
|
||||||
ipv4_status="${GN}✔${CL} IPv4"
|
msg_ok "IPv4 Internet Connected"
|
||||||
|
ipv4_connected=true
|
||||||
else
|
else
|
||||||
ipv4_status="${RD}✖${CL} IPv4"
|
msg_error "IPv4 Internet Not Connected"
|
||||||
read -r -p "Internet NOT connected. Continue anyway? <y/N> " prompt
|
fi
|
||||||
|
|
||||||
|
if [[ $ipv4_connected == false ]]; then
|
||||||
|
read -r -p "No Internet detected, would you like to continue anyway? <y/N> " prompt
|
||||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
echo -e "${INFO}${RD}Expect Issues Without Internet${CL}"
|
echo -e "${INFO}${RD}Expect Issues Without Internet${CL}"
|
||||||
else
|
else
|
||||||
@@ -102,12 +109,28 @@ network_check() {
|
|||||||
exit 122
|
exit 122
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
RESOLVEDIP=$(getent hosts github.com | awk '{ print $1 }')
|
|
||||||
if [[ -z "$RESOLVEDIP" ]]; then
|
# DNS resolution checks for GitHub-related domains
|
||||||
msg_error "Internet: ${ipv4_status} DNS Failed"
|
GIT_HOSTS=("github.com" "raw.githubusercontent.com" "api.github.com" "git.community-scripts.org")
|
||||||
|
GIT_STATUS="Git DNS:"
|
||||||
|
DNS_FAILED=false
|
||||||
|
|
||||||
|
for HOST in "${GIT_HOSTS[@]}"; do
|
||||||
|
RESOLVEDIP=$(getent hosts "$HOST" | awk '{ print $1 }' | grep -E '(^([0-9]{1,3}\.){3}[0-9]{1,3}$)|(^[a-fA-F0-9:]+$)' | head -n1)
|
||||||
|
if [[ -z "$RESOLVEDIP" ]]; then
|
||||||
|
GIT_STATUS+="$HOST:($DNSFAIL)"
|
||||||
|
DNS_FAILED=true
|
||||||
|
else
|
||||||
|
GIT_STATUS+=" $HOST:($DNSOK)"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$DNS_FAILED" == true ]]; then
|
||||||
|
fatal "$GIT_STATUS"
|
||||||
else
|
else
|
||||||
msg_ok "Internet: ${ipv4_status} DNS: ${BL}${RESOLVEDIP}${CL}"
|
msg_ok "$GIT_STATUS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -221,6 +221,11 @@ update_motd_ip() {
|
|||||||
local current_hostname="$(hostname)"
|
local current_hostname="$(hostname)"
|
||||||
local current_ip="$(hostname -I | awk '{print $1}')"
|
local current_ip="$(hostname -I | awk '{print $1}')"
|
||||||
|
|
||||||
|
# Escape sed special chars in replacement strings (& \ |)
|
||||||
|
current_os="${current_os//\\/\\\\}"; current_os="${current_os//&/\\&}"
|
||||||
|
current_hostname="${current_hostname//\\/\\\\}"; current_hostname="${current_hostname//&/\\&}"
|
||||||
|
current_ip="${current_ip//\\/\\\\}"; current_ip="${current_ip//&/\\&}"
|
||||||
|
|
||||||
# Update only if values actually changed
|
# Update only if values actually changed
|
||||||
if ! grep -q "OS:.*$current_os" "$PROFILE_FILE" 2>/dev/null; then
|
if ! grep -q "OS:.*$current_os" "$PROFILE_FILE" 2>/dev/null; then
|
||||||
sed -i "s|OS:.*|OS: \${GN}$current_os\${CL}\\\"|" "$PROFILE_FILE"
|
sed -i "s|OS:.*|OS: \${GN}$current_os\${CL}\\\"|" "$PROFILE_FILE"
|
||||||
@@ -529,6 +534,10 @@ validate_gateway_in_subnet() {
|
|||||||
local ip="${static_ip%%/*}"
|
local ip="${static_ip%%/*}"
|
||||||
local cidr="${static_ip##*/}"
|
local cidr="${static_ip##*/}"
|
||||||
|
|
||||||
|
# /31 and /32 are valid point-to-point / zero-trust DMZ configurations
|
||||||
|
# where the gateway is technically outside the subnet — skip validation
|
||||||
|
((cidr >= 31)) && return 0
|
||||||
|
|
||||||
# Convert CIDR to netmask bits
|
# Convert CIDR to netmask bits
|
||||||
local mask=$((0xFFFFFFFF << (32 - cidr) & 0xFFFFFFFF))
|
local mask=$((0xFFFFFFFF << (32 - cidr) & 0xFFFFFFFF))
|
||||||
|
|
||||||
@@ -985,8 +994,10 @@ base_settings() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
MTU=${var_mtu:-""}
|
MTU=${var_mtu:-""}
|
||||||
SD=${var_searchdomain:-""}
|
_sd_val="${var_searchdomain:-""}"
|
||||||
NS=${var_ns:-""}
|
[[ -n "$_sd_val" ]] && SD="-searchdomain=$_sd_val" || SD=""
|
||||||
|
_ns_val="${var_ns:-""}"
|
||||||
|
[[ -n "$_ns_val" ]] && NS="-nameserver=$_ns_val" || NS=""
|
||||||
MAC=${var_mac:-""}
|
MAC=${var_mac:-""}
|
||||||
VLAN=${var_vlan:-""}
|
VLAN=${var_vlan:-""}
|
||||||
SSH=${var_ssh:-"no"}
|
SSH=${var_ssh:-"no"}
|
||||||
@@ -3542,8 +3553,10 @@ build_container() {
|
|||||||
auto) NET_STRING="$NET_STRING,ip6=auto" ;;
|
auto) NET_STRING="$NET_STRING,ip6=auto" ;;
|
||||||
dhcp) NET_STRING="$NET_STRING,ip6=dhcp" ;;
|
dhcp) NET_STRING="$NET_STRING,ip6=dhcp" ;;
|
||||||
static)
|
static)
|
||||||
NET_STRING="$NET_STRING,ip6=$IPV6_ADDR"
|
if [[ -n "$IPV6_ADDR" ]]; then
|
||||||
[ -n "$IPV6_GATE" ] && NET_STRING="$NET_STRING,gw6=$IPV6_GATE"
|
NET_STRING="$NET_STRING,ip6=$IPV6_ADDR"
|
||||||
|
[ -n "$IPV6_GATE" ] && NET_STRING="$NET_STRING,gw6=$IPV6_GATE"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
none) ;;
|
none) ;;
|
||||||
esac
|
esac
|
||||||
@@ -4068,8 +4081,8 @@ EOF
|
|||||||
if [ "$var_os" == "alpine" ]; then
|
if [ "$var_os" == "alpine" ]; then
|
||||||
sleep 3
|
sleep 3
|
||||||
pct exec "$CTID" -- /bin/sh -c 'cat <<EOF >/etc/apk/repositories
|
pct exec "$CTID" -- /bin/sh -c 'cat <<EOF >/etc/apk/repositories
|
||||||
http://dl-cdn.alpinelinux.org/alpine/latest-stable/main
|
https://dl-cdn.alpinelinux.org/alpine/latest-stable/main
|
||||||
http://dl-cdn.alpinelinux.org/alpine/latest-stable/community
|
https://dl-cdn.alpinelinux.org/alpine/latest-stable/community
|
||||||
EOF'
|
EOF'
|
||||||
pct exec "$CTID" -- ash -c "apk add bash newt curl openssh nano mc ncurses jq" >>"$BUILD_LOG" 2>&1 || {
|
pct exec "$CTID" -- ash -c "apk add bash newt curl openssh nano mc ncurses jq" >>"$BUILD_LOG" 2>&1 || {
|
||||||
msg_error "Failed to install base packages in Alpine container"
|
msg_error "Failed to install base packages in Alpine container"
|
||||||
@@ -4078,7 +4091,9 @@ EOF'
|
|||||||
else
|
else
|
||||||
sleep 3
|
sleep 3
|
||||||
LANG=${LANG:-en_US.UTF-8}
|
LANG=${LANG:-en_US.UTF-8}
|
||||||
pct exec "$CTID" -- bash -c "sed -i \"/$LANG/ s/^# //\" /etc/locale.gen"
|
local LANG_ESC="${LANG//./\\.}"
|
||||||
|
LANG_ESC="${LANG_ESC//|/\\|}"
|
||||||
|
pct exec "$CTID" -- bash -c "sed -i \"/$LANG_ESC/ s/^# //\" /etc/locale.gen"
|
||||||
pct exec "$CTID" -- bash -c "locale_line=\$(grep -v '^#' /etc/locale.gen | grep -E '^[a-zA-Z]' | awk '{print \$1}' | head -n 1) && \
|
pct exec "$CTID" -- bash -c "locale_line=\$(grep -v '^#' /etc/locale.gen | grep -E '^[a-zA-Z]' | awk '{print \$1}' | head -n 1) && \
|
||||||
echo LANG=\$locale_line >/etc/default/locale && \
|
echo LANG=\$locale_line >/etc/default/locale && \
|
||||||
locale-gen >/dev/null && \
|
locale-gen >/dev/null && \
|
||||||
@@ -4751,6 +4766,10 @@ fix_gpu_gids() {
|
|||||||
pct stop "$CTID" >/dev/null 2>&1
|
pct stop "$CTID" >/dev/null 2>&1
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
|
# Validate GIDs are numeric before sed
|
||||||
|
[[ "$render_gid" =~ ^[0-9]+$ ]] || render_gid="104"
|
||||||
|
[[ "$video_gid" =~ ^[0-9]+$ ]] || video_gid="44"
|
||||||
|
|
||||||
# Update dev entries with correct GIDs
|
# Update dev entries with correct GIDs
|
||||||
sed -i.bak -E "s|(dev[0-9]+: /dev/dri/renderD[0-9]+),gid=[0-9]+|\1,gid=${render_gid}|g" "$LXC_CONFIG"
|
sed -i.bak -E "s|(dev[0-9]+: /dev/dri/renderD[0-9]+),gid=[0-9]+|\1,gid=${render_gid}|g" "$LXC_CONFIG"
|
||||||
sed -i -E "s|(dev[0-9]+: /dev/dri/card[0-9]+),gid=[0-9]+|\1,gid=${video_gid}|g" "$LXC_CONFIG"
|
sed -i -E "s|(dev[0-9]+: /dev/dri/card[0-9]+),gid=[0-9]+|\1,gid=${video_gid}|g" "$LXC_CONFIG"
|
||||||
@@ -4994,7 +5013,7 @@ create_lxc_container() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "An update for the Proxmox LXC stack is available"
|
msg_warn "An update for the Proxmox LXC stack is available"
|
||||||
echo " pve-container: installed=${_pvec_i:-n/a} candidate=${_pvec_c:-n/a}"
|
echo " pve-container: installed=${_pvec_i:-n/a} candidate=${_pvec_c:-n/a}"
|
||||||
echo " lxc-pve : installed=${_lxcp_i:-n/a} candidate=${_lxcp_c:-n/a}"
|
echo " lxc-pve : installed=${_lxcp_i:-n/a} candidate=${_lxcp_c:-n/a}"
|
||||||
echo
|
echo
|
||||||
|
|||||||
@@ -309,14 +309,14 @@ customize() {
|
|||||||
if [[ "$PASSWORD" == "" ]]; then
|
if [[ "$PASSWORD" == "" ]]; then
|
||||||
msg_info "Customizing Container"
|
msg_info "Customizing Container"
|
||||||
GETTY_OVERRIDE="/etc/systemd/system/container-getty@1.service.d/override.conf"
|
GETTY_OVERRIDE="/etc/systemd/system/container-getty@1.service.d/override.conf"
|
||||||
mkdir -p $(dirname $GETTY_OVERRIDE)
|
mkdir -p "$(dirname "$GETTY_OVERRIDE")"
|
||||||
cat <<EOF >$GETTY_OVERRIDE
|
cat <<EOF >"$GETTY_OVERRIDE"
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=
|
ExecStart=
|
||||||
ExecStart=-/sbin/agetty --autologin root --noclear --keep-baud tty%I 115200,38400,9600 \$TERM
|
ExecStart=-/sbin/agetty --autologin root --noclear --keep-baud tty%I 115200,38400,9600 \$TERM
|
||||||
EOF
|
EOF
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl restart $(basename $(dirname $GETTY_OVERRIDE) | sed 's/\.d//')
|
systemctl restart "$(basename "$(dirname "$GETTY_OVERRIDE")" | sed 's/\.d//')"
|
||||||
msg_ok "Customized Container"
|
msg_ok "Customized Container"
|
||||||
fi
|
fi
|
||||||
echo "bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/${app}.sh)\"" >/usr/bin/update
|
echo "bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/${app}.sh)\"" >/usr/bin/update
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ download_gpg_key() {
|
|||||||
|
|
||||||
# Process based on mode
|
# Process based on mode
|
||||||
if [[ "$mode" == "dearmor" ]]; then
|
if [[ "$mode" == "dearmor" ]]; then
|
||||||
if gpg --dearmor --yes -o "$output" <"$temp_key" 2>/dev/null; then
|
if gpg --dearmor --yes -o "$output" <"$temp_key" 2>/dev/null && [[ -s "$output" ]]; then
|
||||||
rm -f "$temp_key"
|
rm -f "$temp_key"
|
||||||
debug_log "GPG key installed (dearmored): $output"
|
debug_log "GPG key installed (dearmored): $output"
|
||||||
return 0
|
return 0
|
||||||
@@ -5192,7 +5192,7 @@ _setup_gpu_permissions() {
|
|||||||
for nvidia_dev in /dev/nvidia*; do
|
for nvidia_dev in /dev/nvidia*; do
|
||||||
[[ -e "$nvidia_dev" ]] && {
|
[[ -e "$nvidia_dev" ]] && {
|
||||||
chgrp video "$nvidia_dev" 2>/dev/null || true
|
chgrp video "$nvidia_dev" 2>/dev/null || true
|
||||||
chmod 666 "$nvidia_dev" 2>/dev/null || true
|
chmod 660 "$nvidia_dev" 2>/dev/null || true
|
||||||
}
|
}
|
||||||
done
|
done
|
||||||
if [[ -d /dev/nvidia-caps ]]; then
|
if [[ -d /dev/nvidia-caps ]]; then
|
||||||
@@ -5200,7 +5200,7 @@ _setup_gpu_permissions() {
|
|||||||
for caps_dev in /dev/nvidia-caps/*; do
|
for caps_dev in /dev/nvidia-caps/*; do
|
||||||
[[ -e "$caps_dev" ]] && {
|
[[ -e "$caps_dev" ]] && {
|
||||||
chgrp video "$caps_dev" 2>/dev/null || true
|
chgrp video "$caps_dev" 2>/dev/null || true
|
||||||
chmod 666 "$caps_dev" 2>/dev/null || true
|
chmod 660 "$caps_dev" 2>/dev/null || true
|
||||||
}
|
}
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
@@ -5217,7 +5217,8 @@ _setup_gpu_permissions() {
|
|||||||
|
|
||||||
# /dev/kfd permissions (AMD ROCm)
|
# /dev/kfd permissions (AMD ROCm)
|
||||||
if [[ -e /dev/kfd ]]; then
|
if [[ -e /dev/kfd ]]; then
|
||||||
chmod 666 /dev/kfd 2>/dev/null || true
|
chgrp render /dev/kfd 2>/dev/null || true
|
||||||
|
chmod 660 /dev/kfd 2>/dev/null || true
|
||||||
msg_info "AMD ROCm compute device configured"
|
msg_info "AMD ROCm compute device configured"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ function install() {
|
|||||||
curl -fsSL "https://raw.githubusercontent.com/runtipi/runtipi/master/scripts/install.sh" -o "install.sh"
|
curl -fsSL "https://raw.githubusercontent.com/runtipi/runtipi/master/scripts/install.sh" -o "install.sh"
|
||||||
chmod +x install.sh
|
chmod +x install.sh
|
||||||
$STD ./install.sh
|
$STD ./install.sh
|
||||||
chmod 666 /opt/runtipi/state/settings.json 2>/dev/null || true
|
chmod 660 /opt/runtipi/state/settings.json 2>/dev/null || true
|
||||||
rm -f /opt/install.sh
|
rm -f /opt/install.sh
|
||||||
msg_ok "Installed ${APP}"
|
msg_ok "Installed ${APP}"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user