mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-25 03:10:58 +03:00
Compare commits
210 Commits
CrazyWolf1
...
refactor/d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa766d22bf | ||
|
|
881eb5bd04 | ||
|
|
9f3f719ed6 | ||
|
|
f6b8edb7df | ||
|
|
a14b0a942e | ||
|
|
49348b9b75 | ||
|
|
10ec52e9cb | ||
|
|
13daffdeed | ||
|
|
fd82f5b496 | ||
|
|
83f03d617e | ||
|
|
4c5d5b2030 | ||
|
|
4e1ade4c28 | ||
|
|
e5073d1a4f | ||
|
|
01e956bdf8 | ||
|
|
0cc049edb6 | ||
|
|
ffa1a26b5e | ||
|
|
59ca9c26c9 | ||
|
|
56de2d1e39 | ||
|
|
72eb8b9575 | ||
|
|
65a67347bd | ||
|
|
25d54ff69a | ||
|
|
5c85c5098e | ||
|
|
7b8080438d | ||
|
|
2041371a04 | ||
|
|
b172301e0f | ||
|
|
4b6cb1601b | ||
|
|
d9f766cca6 | ||
|
|
a4973fa3b7 | ||
|
|
dcbb8490f1 | ||
|
|
3aa5431302 | ||
|
|
2e753578cd | ||
|
|
483ead9a8b | ||
|
|
53ee9403cd | ||
|
|
ed7e71f8c3 | ||
|
|
97d4b3ffc2 | ||
|
|
e226386c9d | ||
|
|
4e7e348322 | ||
|
|
0920d56218 | ||
|
|
071420c39a | ||
|
|
6a7bc481a4 | ||
|
|
11fb4743cc | ||
|
|
b2a710e673 | ||
|
|
49f1f16cba | ||
|
|
8005ddd74f | ||
|
|
2fead98966 | ||
|
|
09de4e9ca9 | ||
|
|
e1815642b2 | ||
|
|
75da6920d5 | ||
|
|
5f13d29c57 | ||
|
|
3c83654666 | ||
|
|
ae3a249854 | ||
|
|
a8a1cbcf3e | ||
|
|
60f9622998 | ||
|
|
552f3ab1d4 | ||
|
|
aa54640798 | ||
|
|
e1a8dfa8a2 | ||
|
|
691cec80ab | ||
|
|
c1ec478269 | ||
|
|
0e8f9c1237 | ||
|
|
620db1901c | ||
|
|
d5ce186aa3 | ||
|
|
68fbed63a5 | ||
|
|
973970ee1a | ||
|
|
b30e86aa2f | ||
|
|
a13caec262 | ||
|
|
df80c849f2 | ||
|
|
69de9fa57e | ||
|
|
695a6ce29b | ||
|
|
1976a1715c | ||
|
|
6ba22c82d7 | ||
|
|
1a14b19fa0 | ||
|
|
9e6b1f0e12 | ||
|
|
103982fcdb | ||
|
|
e315e0b17e | ||
|
|
2a537f0772 | ||
|
|
9d7da517f3 | ||
|
|
c1248cca14 | ||
|
|
a83cd9a80e | ||
|
|
203c1f2f48 | ||
|
|
287fe28741 | ||
|
|
d868b6d885 | ||
|
|
3995aa02da | ||
|
|
2b44ff289f | ||
|
|
47757d4d7d | ||
|
|
ee90bfb458 | ||
|
|
3e22aaa4bb | ||
|
|
618133ffca | ||
|
|
ded8a95567 | ||
|
|
85502e7c43 | ||
|
|
a8bec558f9 | ||
|
|
5c7934a71e | ||
|
|
adf6a03067 | ||
|
|
f4cf671694 | ||
|
|
2f364d2fca | ||
|
|
88008b8735 | ||
|
|
07eae3a06f | ||
|
|
171d830c22 | ||
|
|
4e8421c080 | ||
|
|
0c92f40d7a | ||
|
|
104971ada3 | ||
|
|
9db0ff6d81 | ||
|
|
b05f0fb059 | ||
|
|
345e7f741b | ||
|
|
452f3bdc6a | ||
|
|
d287b5f848 | ||
|
|
80a435fc9f | ||
|
|
2e32ea3c52 | ||
|
|
0753521739 | ||
|
|
e93949a3d2 | ||
|
|
c7dcedc23c | ||
|
|
2407a633e7 | ||
|
|
c0b8d25b66 | ||
|
|
b0112f83e9 | ||
|
|
f0ed8db337 | ||
|
|
0eaaac7dea | ||
|
|
802cbdd22b | ||
|
|
4f9490184b | ||
|
|
b5288692cd | ||
|
|
8cc2c7c025 | ||
|
|
85c5d54a12 | ||
|
|
1273778dc2 | ||
|
|
2a7fa5addb | ||
|
|
116888201c | ||
|
|
a3d9ea7530 | ||
|
|
903e63d758 | ||
|
|
901b90f956 | ||
|
|
8795cfb03f | ||
|
|
ae834cb39e | ||
|
|
7dbd1fdc36 | ||
|
|
300f8c80e8 | ||
|
|
d969969c2d | ||
|
|
f6558953bc | ||
|
|
b9f4e6c8bd | ||
|
|
54031b56d6 | ||
|
|
c68b9b6a40 | ||
|
|
f4c10ed75d | ||
|
|
097ee57598 | ||
|
|
120aefbdfe | ||
|
|
fc612ad369 | ||
|
|
c061434dd7 | ||
|
|
7b01ed0a90 | ||
|
|
de94a3b0c8 | ||
|
|
f25a150fa1 | ||
|
|
fd44c98235 | ||
|
|
c754d0c369 | ||
|
|
bc5af1a536 | ||
|
|
53f89258a4 | ||
|
|
97302789d9 | ||
|
|
f3b38e2ba2 | ||
|
|
eff0963023 | ||
|
|
d42f5b75cb | ||
|
|
27c02dda99 | ||
|
|
c3bac57055 | ||
|
|
9fd11feb1f | ||
|
|
32f3748a0e | ||
|
|
f4547f10b6 | ||
|
|
a3a6cbb6a6 | ||
|
|
1a6ca67375 | ||
|
|
401bd6b55b | ||
|
|
a40da3c452 | ||
|
|
5c48506629 | ||
|
|
45a8f744f1 | ||
|
|
54c66c5af4 | ||
|
|
0fab65f0cf | ||
|
|
31482e7489 | ||
|
|
d97f9a0bce | ||
|
|
9b2275c980 | ||
|
|
b6a4e6a2a6 | ||
|
|
96c056ea4e | ||
|
|
491081ffbf | ||
|
|
1123fdca14 | ||
|
|
a3a383361d | ||
|
|
6cc8877852 | ||
|
|
845b89f975 | ||
|
|
be26dc33dd | ||
|
|
b439960222 | ||
|
|
b4a5d28957 | ||
|
|
eaa69d58be | ||
|
|
3ffff334a0 | ||
|
|
38f04f4dcc | ||
|
|
fdbcee3a93 | ||
|
|
ce11ba8f27 | ||
|
|
43a0a078f5 | ||
|
|
646dabf0f0 | ||
|
|
2582c1f63b | ||
|
|
3ce3c6f613 | ||
|
|
97652792be | ||
|
|
f07f2cb04e | ||
|
|
5f73f9d5e6 | ||
|
|
0183ae0fff | ||
|
|
32d1937a74 | ||
|
|
0a7bd20b06 | ||
|
|
c9ecb1ccca | ||
|
|
d274a269b5 | ||
|
|
cbee9d64b5 | ||
|
|
ffcda217e3 | ||
|
|
438d5d6b94 | ||
|
|
104366bc64 | ||
|
|
9dab79f8ca | ||
|
|
2dddeaf966 | ||
|
|
fae06a3a58 | ||
|
|
137272c354 | ||
|
|
52a9e23401 | ||
|
|
c2333de180 | ||
|
|
ad8974894b | ||
|
|
38af4be5ba | ||
|
|
80ae1f34fa | ||
|
|
06bc6e20d5 | ||
|
|
4418e72856 | ||
|
|
896714e06f |
179
.github/changelogs/2026/02.md
generated
vendored
179
.github/changelogs/2026/02.md
generated
vendored
@@ -1,3 +1,182 @@
|
||||
## 2026-02-21
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Pangolin: restore config before db migration, use drizzle-kit push [@MickLesk](https://github.com/MickLesk) ([#12130](https://github.com/community-scripts/ProxmoxVE/pull/12130))
|
||||
- PLANKA: fix msg's [@danielalanbates](https://github.com/danielalanbates) ([#12143](https://github.com/community-scripts/ProxmoxVE/pull/12143))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- MediaManager: Update documentation URL [@tremor021](https://github.com/tremor021) ([#12154](https://github.com/community-scripts/ProxmoxVE/pull/12154))
|
||||
|
||||
## 2026-02-20
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Sure ([#12114](https://github.com/community-scripts/ProxmoxVE/pull/12114))
|
||||
- Calibre-Web ([#12115](https://github.com/community-scripts/ProxmoxVE/pull/12115))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Zammad: fix Elasticsearch JVM config and add daemon-reload [@MickLesk](https://github.com/MickLesk) ([#12125](https://github.com/community-scripts/ProxmoxVE/pull/12125))
|
||||
- Huntarr: add build-essential for native pip dependencies [@MickLesk](https://github.com/MickLesk) ([#12126](https://github.com/community-scripts/ProxmoxVE/pull/12126))
|
||||
- Dokploy: fix update function [@vhsdream](https://github.com/vhsdream) ([#12116](https://github.com/community-scripts/ProxmoxVE/pull/12116))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- recyclarr: adjust paths for v8.0 breaking changes [@MickLesk](https://github.com/MickLesk) ([#12129](https://github.com/community-scripts/ProxmoxVE/pull/12129))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Planka: migrate data paths to new v2 directory structure [@MickLesk](https://github.com/MickLesk) ([#12128](https://github.com/community-scripts/ProxmoxVE/pull/12128))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- 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
|
||||
|
||||
111
.github/workflows/stale_pr_close.yml
generated
vendored
Normal file
111
.github/workflows/stale_pr_close.yml
generated
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
name: Stale PR Management
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
pull_request_target:
|
||||
types:
|
||||
- labeled
|
||||
|
||||
jobs:
|
||||
stale-prs:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
issues: write
|
||||
contents: read
|
||||
steps:
|
||||
- name: Handle stale PRs
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const now = new Date();
|
||||
const owner = context.repo.owner;
|
||||
const repo = context.repo.repo;
|
||||
|
||||
// --- When stale label is added, comment immediately ---
|
||||
if (context.eventName === "pull_request_target" && context.payload.action === "labeled") {
|
||||
const label = context.payload.label?.name;
|
||||
if (label === "stale") {
|
||||
const author = context.payload.pull_request.user.login;
|
||||
await github.rest.issues.createComment({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: context.payload.pull_request.number,
|
||||
body: `@${author} This PR has been marked as stale. It will be closed if no new commits are added in 7 days.`
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// --- Scheduled run: check all stale PRs ---
|
||||
const { data: prs } = await github.rest.pulls.list({
|
||||
owner,
|
||||
repo,
|
||||
state: "open",
|
||||
per_page: 100
|
||||
});
|
||||
|
||||
for (const pr of prs) {
|
||||
const hasStale = pr.labels.some(l => l.name === "stale");
|
||||
if (!hasStale) continue;
|
||||
|
||||
// Get timeline events to find when stale label was added
|
||||
const { data: events } = await github.rest.issues.listEvents({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: pr.number,
|
||||
per_page: 100
|
||||
});
|
||||
|
||||
// Find the most recent time the stale label was added
|
||||
const staleLabelEvents = events
|
||||
.filter(e => e.event === "labeled" && e.label?.name === "stale")
|
||||
.sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
|
||||
|
||||
if (staleLabelEvents.length === 0) continue;
|
||||
|
||||
const staleLabelDate = new Date(staleLabelEvents[0].created_at);
|
||||
const daysSinceStale = (now - staleLabelDate) / (1000 * 60 * 60 * 24);
|
||||
|
||||
// Check for new commits since stale label was added
|
||||
const { data: commits } = await github.rest.pulls.listCommits({
|
||||
owner,
|
||||
repo,
|
||||
pull_number: pr.number
|
||||
});
|
||||
|
||||
const lastCommitDate = new Date(commits[commits.length - 1].commit.author.date);
|
||||
const author = pr.user.login;
|
||||
|
||||
// If there are new commits after the stale label, remove it
|
||||
if (lastCommitDate > staleLabelDate) {
|
||||
await github.rest.issues.removeLabel({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: pr.number,
|
||||
name: "stale"
|
||||
});
|
||||
await github.rest.issues.createComment({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: pr.number,
|
||||
body: `@${author} Recent activity detected. Removing stale label.`
|
||||
});
|
||||
}
|
||||
// If 7 days have passed since stale label, close the PR
|
||||
else if (daysSinceStale > 7) {
|
||||
await github.rest.pulls.update({
|
||||
owner,
|
||||
repo,
|
||||
pull_number: pr.number,
|
||||
state: "closed"
|
||||
});
|
||||
await github.rest.issues.createComment({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: pr.number,
|
||||
body: `@${author} Closing stale PR due to inactivity (no commits for 7 days after stale label).`
|
||||
});
|
||||
}
|
||||
}
|
||||
444
CHANGELOG.md
444
CHANGELOG.md
@@ -18,6 +18,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary><h2>📜 History</h2></summary>
|
||||
|
||||
@@ -27,7 +30,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
<details>
|
||||
<summary><h4>February (14 entries)</h4></summary>
|
||||
<summary><h4>February (21 entries)</h4></summary>
|
||||
|
||||
[View February 2026 Changelog](.github/changelogs/2026/02.md)
|
||||
|
||||
@@ -404,6 +407,234 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-02-24
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- adds further documentation during the installation script. [@d12rio](https://github.com/d12rio) ([#12248](https://github.com/community-scripts/ProxmoxVE/pull/12248))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Refactor n8n [@MickLesk](https://github.com/MickLesk) ([#12264](https://github.com/community-scripts/ProxmoxVE/pull/12264))
|
||||
- Firefly: PHP bump [@tremor021](https://github.com/tremor021) ([#12247](https://github.com/community-scripts/ProxmoxVE/pull/12247))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- make searxng updateable [@shtefko](https://github.com/shtefko) ([#12207](https://github.com/community-scripts/ProxmoxVE/pull/12207))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- bump various scripts from Node 22 to 24 [@MickLesk](https://github.com/MickLesk) ([#12265](https://github.com/community-scripts/ProxmoxVE/pull/12265))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: add get_latest_gh_tag helper function [@MickLesk](https://github.com/MickLesk) ([#12261](https://github.com/community-scripts/ProxmoxVE/pull/12261))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- Arcane ([#12263](https://github.com/community-scripts/ProxmoxVE/pull/12263))
|
||||
|
||||
### 📂 Github
|
||||
|
||||
- add: workflow to close stale PRs [@CrazyWolf13](https://github.com/CrazyWolf13) ([#12243](https://github.com/community-scripts/ProxmoxVE/pull/12243))
|
||||
|
||||
## 2026-02-23
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- SeaweedFS ([#12220](https://github.com/community-scripts/ProxmoxVE/pull/12220))
|
||||
- Sonobarr ([#12221](https://github.com/community-scripts/ProxmoxVE/pull/12221))
|
||||
- SparkyFitness ([#12185](https://github.com/community-scripts/ProxmoxVE/pull/12185))
|
||||
- Frigate v16.4 [@MickLesk](https://github.com/MickLesk) ([#11887](https://github.com/community-scripts/ProxmoxVE/pull/11887))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- memos: unpin version due new release artifacts [@MickLesk](https://github.com/MickLesk) ([#12224](https://github.com/community-scripts/ProxmoxVE/pull/12224))
|
||||
- core: Enhance signal handling, reported "status" and logs [@MickLesk](https://github.com/MickLesk) ([#12216](https://github.com/community-scripts/ProxmoxVE/pull/12216))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- booklore v2: embed frontend, bump Java to 25, remove nginx [@MickLesk](https://github.com/MickLesk) ([#12223](https://github.com/community-scripts/ProxmoxVE/pull/12223))
|
||||
|
||||
### 🗑️ Deleted Scripts
|
||||
|
||||
- Remove: Huntarr (deprecated & Security) [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#12226](https://github.com/community-scripts/ProxmoxVE/pull/12226))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: Improve error handling and logging for LXC builds [@MickLesk](https://github.com/MickLesk) ([#12208](https://github.com/community-scripts/ProxmoxVE/pull/12208))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- calibre-web: update default credentials [@LaevaertK](https://github.com/LaevaertK) ([#12201](https://github.com/community-scripts/ProxmoxVE/pull/12201))
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- chore: update Frigate documentation and website URLs [@JohnICB](https://github.com/JohnICB) ([#12218](https://github.com/community-scripts/ProxmoxVE/pull/12218))
|
||||
|
||||
## 2026-02-22
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Gramps-Web ([#12157](https://github.com/community-scripts/ProxmoxVE/pull/12157))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: Apache Guacamole - bump to Temurin JDK 17 to resolve Debian 13 (Trixie) install failure [@Copilot](https://github.com/Copilot) ([#12161](https://github.com/community-scripts/ProxmoxVE/pull/12161))
|
||||
- Docker-VM: add error handling for virt-customize finalization [@MickLesk](https://github.com/MickLesk) ([#12127](https://github.com/community-scripts/ProxmoxVE/pull/12127))
|
||||
- [Fix] Sure: add Sidekiq service [@vhsdream](https://github.com/vhsdream) ([#12186](https://github.com/community-scripts/ProxmoxVE/pull/12186))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Refactor & Bump to v2: Plex [@MickLesk](https://github.com/MickLesk) ([#12179](https://github.com/community-scripts/ProxmoxVE/pull/12179))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- karakeep: bump to node 24 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#12183](https://github.com/community-scripts/ProxmoxVE/pull/12183))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: add GitHub API rate-limit detection and GITHUB_TOKEN support [@MickLesk](https://github.com/MickLesk) ([#12176](https://github.com/community-scripts/ProxmoxVE/pull/12176))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- CR*NMASTER ([#12065](https://github.com/community-scripts/ProxmoxVE/pull/12065))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Update package management commands in clean-lxcs.sh [@heinemannj](https://github.com/heinemannj) ([#12166](https://github.com/community-scripts/ProxmoxVE/pull/12166))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- calibre-web: Update logo URL [@MickLesk](https://github.com/MickLesk) ([#12178](https://github.com/community-scripts/ProxmoxVE/pull/12178))
|
||||
|
||||
## 2026-02-21
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Pangolin: restore config before db migration, use drizzle-kit push [@MickLesk](https://github.com/MickLesk) ([#12130](https://github.com/community-scripts/ProxmoxVE/pull/12130))
|
||||
- PLANKA: fix msg's [@danielalanbates](https://github.com/danielalanbates) ([#12143](https://github.com/community-scripts/ProxmoxVE/pull/12143))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- MediaManager: Update documentation URL [@tremor021](https://github.com/tremor021) ([#12154](https://github.com/community-scripts/ProxmoxVE/pull/12154))
|
||||
|
||||
## 2026-02-20
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Sure ([#12114](https://github.com/community-scripts/ProxmoxVE/pull/12114))
|
||||
- Calibre-Web ([#12115](https://github.com/community-scripts/ProxmoxVE/pull/12115))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Zammad: fix Elasticsearch JVM config and add daemon-reload [@MickLesk](https://github.com/MickLesk) ([#12125](https://github.com/community-scripts/ProxmoxVE/pull/12125))
|
||||
- Huntarr: add build-essential for native pip dependencies [@MickLesk](https://github.com/MickLesk) ([#12126](https://github.com/community-scripts/ProxmoxVE/pull/12126))
|
||||
- Dokploy: fix update function [@vhsdream](https://github.com/vhsdream) ([#12116](https://github.com/community-scripts/ProxmoxVE/pull/12116))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- recyclarr: adjust paths for v8.0 breaking changes [@MickLesk](https://github.com/MickLesk) ([#12129](https://github.com/community-scripts/ProxmoxVE/pull/12129))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Planka: migrate data paths to new v2 directory structure [@MickLesk](https://github.com/MickLesk) ([#12128](https://github.com/community-scripts/ProxmoxVE/pull/12128))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- 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
|
||||
@@ -413,6 +644,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
### 🚀 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))
|
||||
@@ -422,6 +655,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### 🔧 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))
|
||||
|
||||
@@ -1210,210 +1444,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add IPv6 fallback support to get_current_ip functions | add check for SSH_KEYS_FILE in user_defaults [@MickLesk](https://github.com/MickLesk) ([#11067](https://github.com/community-scripts/ProxmoxVE/pull/11067))
|
||||
|
||||
## 2026-01-22
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Loki | Alpine-Loki ([#11048](https://github.com/community-scripts/ProxmoxVE/pull/11048))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Immich: Increase RAM to 6GB [@vhsdream](https://github.com/vhsdream) ([#10965](https://github.com/community-scripts/ProxmoxVE/pull/10965))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Jotty: Increase default disk size from 6 to 8 [@tremor021](https://github.com/tremor021) ([#11056](https://github.com/community-scripts/ProxmoxVE/pull/11056))
|
||||
- Fix tags in several scripts [@s4dmach1ne](https://github.com/s4dmach1ne) ([#11050](https://github.com/community-scripts/ProxmoxVE/pull/11050))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools: use distro packages for MariaDB by default [@MickLesk](https://github.com/MickLesk) ([#11049](https://github.com/community-scripts/ProxmoxVE/pull/11049))
|
||||
|
||||
## 2026-01-21
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Byparr ([#11039](https://github.com/community-scripts/ProxmoxVE/pull/11039))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: Snipe-IT update missing all user uploads (#11032) [@ruanmed](https://github.com/ruanmed) ([#11033](https://github.com/community-scripts/ProxmoxVE/pull/11033))
|
||||
- yubal: fix for v0.2 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#11006](https://github.com/community-scripts/ProxmoxVE/pull/11006))
|
||||
- Joplin-Server: use yarn workspaces focus for faster builds [@MickLesk](https://github.com/MickLesk) ([#11027](https://github.com/community-scripts/ProxmoxVE/pull/11027))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools: add ubuntu PHP repository setup [@MickLesk](https://github.com/MickLesk) ([#11034](https://github.com/community-scripts/ProxmoxVE/pull/11034))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: allow empty tags & improve template search [@MickLesk](https://github.com/MickLesk) ([#11020](https://github.com/community-scripts/ProxmoxVE/pull/11020))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Joplin Server: Set disable flag to true in joplin-server.json [@tremor021](https://github.com/tremor021) ([#11008](https://github.com/community-scripts/ProxmoxVE/pull/11008))
|
||||
|
||||
## 2026-01-20
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- dolibarr: switch mirror [@MickLesk](https://github.com/MickLesk) ([#11004](https://github.com/community-scripts/ProxmoxVE/pull/11004))
|
||||
- checkmk: reordner base function [@MickLesk](https://github.com/MickLesk) ([#10990](https://github.com/community-scripts/ProxmoxVE/pull/10990))
|
||||
- Homepage: preserve config directory during updates [@MickLesk](https://github.com/MickLesk) ([#10993](https://github.com/community-scripts/ProxmoxVE/pull/10993))
|
||||
- DiscoPanel: add go for update build process [@miausalvaje](https://github.com/miausalvaje) ([#10991](https://github.com/community-scripts/ProxmoxVE/pull/10991))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add retry logic for template lock in LXC container creation [@MickLesk](https://github.com/MickLesk) ([#11002](https://github.com/community-scripts/ProxmoxVE/pull/11002))
|
||||
- core: implement ensure_profile_loaded function [@MickLesk](https://github.com/MickLesk) ([#10999](https://github.com/community-scripts/ProxmoxVE/pull/10999))
|
||||
- core: add input validations for several functions [@MickLesk](https://github.com/MickLesk) ([#10995](https://github.com/community-scripts/ProxmoxVE/pull/10995))
|
||||
|
||||
## 2026-01-19
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- yubal ([#10955](https://github.com/community-scripts/ProxmoxVE/pull/10955))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Apache-Guacamole: move jdbc cleanup after schema upgrade [@MickLesk](https://github.com/MickLesk) ([#10974](https://github.com/community-scripts/ProxmoxVE/pull/10974))
|
||||
- Outline: prevent corepack interactive prompt blocking installation [@MickLesk](https://github.com/MickLesk) ([#10973](https://github.com/community-scripts/ProxmoxVE/pull/10973))
|
||||
- firefly: prevent nested storage directories during update (#10967) [@MickLesk](https://github.com/MickLesk) ([#10972](https://github.com/community-scripts/ProxmoxVE/pull/10972))
|
||||
- PeaNUT: change default port [@vhsdream](https://github.com/vhsdream) ([#10962](https://github.com/community-scripts/ProxmoxVE/pull/10962))
|
||||
- Update/splunk enterprise [@rcastley](https://github.com/rcastley) ([#10949](https://github.com/community-scripts/ProxmoxVE/pull/10949))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Pangolin: use dynamic badger plugin version [@MickLesk](https://github.com/MickLesk) ([#10975](https://github.com/community-scripts/ProxmoxVE/pull/10975))
|
||||
- Tautulli: add version detection and add proper update script [@MickLesk](https://github.com/MickLesk) ([#10976](https://github.com/community-scripts/ProxmoxVE/pull/10976))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Remove custom IP fetching in scripts [@tremor021](https://github.com/tremor021) ([#10954](https://github.com/community-scripts/ProxmoxVE/pull/10954))
|
||||
- Refactor: Homepage [@tremor021](https://github.com/tremor021) ([#10950](https://github.com/community-scripts/ProxmoxVE/pull/10950))
|
||||
- Refactor: hev-socks5-server [@tremor021](https://github.com/tremor021) ([#10945](https://github.com/community-scripts/ProxmoxVE/pull/10945))
|
||||
|
||||
### 🗑️ Deleted Scripts
|
||||
|
||||
- Remove: phpIPAM [@MickLesk](https://github.com/MickLesk) ([#10939](https://github.com/community-scripts/ProxmoxVE/pull/10939))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add RFC 1123/952 compliant hostname/FQDN validation [@MickLesk](https://github.com/MickLesk) ([#10977](https://github.com/community-scripts/ProxmoxVE/pull/10977))
|
||||
- [core]: Make LXC IP a global variable [@tremor021](https://github.com/tremor021) ([#10951](https://github.com/community-scripts/ProxmoxVE/pull/10951))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: copyparty [@MickLesk](https://github.com/MickLesk) ([#10941](https://github.com/community-scripts/ProxmoxVE/pull/10941))
|
||||
|
||||
## 2026-01-18
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Termix ([#10887](https://github.com/community-scripts/ProxmoxVE/pull/10887))
|
||||
- ThingsBoard ([#10904](https://github.com/community-scripts/ProxmoxVE/pull/10904))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix Patchmon install script (escaping) [@christiaangoossens](https://github.com/christiaangoossens) ([#10920](https://github.com/community-scripts/ProxmoxVE/pull/10920))
|
||||
- refactor: peanut entrypoint [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10902](https://github.com/community-scripts/ProxmoxVE/pull/10902))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Update Patchmon default Nginx config (IPv6 and correct scheme) [@christiaangoossens](https://github.com/christiaangoossens) ([#10917](https://github.com/community-scripts/ProxmoxVE/pull/10917))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: FluidCalendar [@tremor021](https://github.com/tremor021) ([#10928](https://github.com/community-scripts/ProxmoxVE/pull/10928))
|
||||
|
||||
### 🗑️ Deleted Scripts
|
||||
|
||||
- Remove iVentoy script [@tremor021](https://github.com/tremor021) ([#10924](https://github.com/community-scripts/ProxmoxVE/pull/10924))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: improve password handling and validation logic [@MickLesk](https://github.com/MickLesk) ([#10925](https://github.com/community-scripts/ProxmoxVE/pull/10925))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- hwaccel: improve NVIDIA version matching and GPU selection UI [@MickLesk](https://github.com/MickLesk) ([#10901](https://github.com/community-scripts/ProxmoxVE/pull/10901))
|
||||
|
||||
### 📂 Github
|
||||
|
||||
- Fix typo in the New Script request template [@tremor021](https://github.com/tremor021) ([#10891](https://github.com/community-scripts/ProxmoxVE/pull/10891))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: preserve newest scripts pagination [@jgrubiox](https://github.com/jgrubiox) ([#10882](https://github.com/community-scripts/ProxmoxVE/pull/10882))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- Update qui.json [@GalaxyCatD3v](https://github.com/GalaxyCatD3v) ([#10896](https://github.com/community-scripts/ProxmoxVE/pull/10896))
|
||||
|
||||
## 2026-01-17
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- TRIP ([#10864](https://github.com/community-scripts/ProxmoxVE/pull/10864))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix sonarqube update version info (#10870) [@Karlito83](https://github.com/Karlito83) ([#10871](https://github.com/community-scripts/ProxmoxVE/pull/10871))
|
||||
- WGDashboard: Update repo URL [@tremor021](https://github.com/tremor021) ([#10872](https://github.com/community-scripts/ProxmoxVE/pull/10872))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Disable Palmer [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#10889](https://github.com/community-scripts/ProxmoxVE/pull/10889))
|
||||
|
||||
## 2026-01-16
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Flatnotes ([#10857](https://github.com/community-scripts/ProxmoxVE/pull/10857))
|
||||
- Unifi OS Server ([#10856](https://github.com/community-scripts/ProxmoxVE/pull/10856))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Jotty: increase RAM; cap heap size at 3GB during build [@vhsdream](https://github.com/vhsdream) ([#10868](https://github.com/community-scripts/ProxmoxVE/pull/10868))
|
||||
- SnowShare: Increase default resources [@TuroYT](https://github.com/TuroYT) ([#10865](https://github.com/community-scripts/ProxmoxVE/pull/10865))
|
||||
- postgresql: name of sources file fixed (update check) [@JamborJan](https://github.com/JamborJan) ([#10854](https://github.com/community-scripts/ProxmoxVE/pull/10854))
|
||||
- immich: use dpkg-query to get intel-opencl-icd version [@MickLesk](https://github.com/MickLesk) ([#10848](https://github.com/community-scripts/ProxmoxVE/pull/10848))
|
||||
- domain-monitor: fix: cron user [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10846](https://github.com/community-scripts/ProxmoxVE/pull/10846))
|
||||
- pihole/unbound: create unbound config before apt install to prevent port conflicts [@MickLesk](https://github.com/MickLesk) ([#10839](https://github.com/community-scripts/ProxmoxVE/pull/10839))
|
||||
- zammad: use ln -sf to avoid failure when symlink exists [@MickLesk](https://github.com/MickLesk) ([#10840](https://github.com/community-scripts/ProxmoxVE/pull/10840))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- qui: fix: category [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10847](https://github.com/community-scripts/ProxmoxVE/pull/10847))
|
||||
- core: add IPv6 fallback support to get_current_ip functions | add check for SSH_KEYS_FILE in user_defaults [@MickLesk](https://github.com/MickLesk) ([#11067](https://github.com/community-scripts/ProxmoxVE/pull/11067))
|
||||
@@ -19,44 +19,46 @@ variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
ADDON_SCRIPT="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/komodo.sh"
|
||||
|
||||
function update_script() {
|
||||
[[ -d /opt/komodo ]] || {
|
||||
if [[ ! -d /opt/komodo ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
}
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
|
||||
if [[ -z "$COMPOSE_FILE" ]]; then
|
||||
msg_error "No valid compose file found in /opt/komodo!"
|
||||
exit
|
||||
fi
|
||||
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||
|
||||
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
|
||||
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
|
||||
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
|
||||
echo -e "${YW}Please follow the migration guide:${CL}"
|
||||
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${TAB}${TAB}${GN}update_komodo${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
if [[ ! "${CONFIRM,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_warn "Migration skipped. The old update will continue to work for now."
|
||||
msg_info "Updating ${APP} (legacy)"
|
||||
COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
|
||||
if [[ -z "$COMPOSE_FILE" ]]; then
|
||||
msg_error "No valid compose file found in /opt/komodo!"
|
||||
exit 1
|
||||
fi
|
||||
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env pull
|
||||
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||
msg_ok "Updated ${APP}"
|
||||
exit
|
||||
fi
|
||||
|
||||
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||
exit
|
||||
}
|
||||
GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
|
||||
if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
|
||||
msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
|
||||
mv "$BACKUP_FILE" "$COMPOSE_FILE"
|
||||
exit
|
||||
fi
|
||||
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env pull
|
||||
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||
msg_ok "Updated Alpine-Komodo"
|
||||
msg_ok "Updated successfully!"
|
||||
exit 0
|
||||
msg_info "Migrating update function"
|
||||
cat <<'MIGRATION_EOF' >/usr/bin/update
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/komodo.sh)"
|
||||
MIGRATION_EOF
|
||||
chmod +x /usr/bin/update
|
||||
|
||||
ln -sf /usr/bin/update /usr/bin/update_komodo 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -51,7 +51,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
JAVA_VERSION="11" setup_java
|
||||
JAVA_VERSION="17" setup_java
|
||||
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop guacd tomcat
|
||||
|
||||
@@ -30,7 +30,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
if check_for_gh_release "booklore" "booklore-app/BookLore"; then
|
||||
JAVA_VERSION="21" setup_java
|
||||
JAVA_VERSION="25" setup_java
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
setup_mariadb
|
||||
setup_yq
|
||||
@@ -60,11 +60,16 @@ function update_script() {
|
||||
$STD npm run build --configuration=production
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Embedding Frontend into Backend"
|
||||
mkdir -p /opt/booklore/booklore-api/src/main/resources/static
|
||||
cp -r /opt/booklore/booklore-ui/dist/booklore/browser/* /opt/booklore/booklore-api/src/main/resources/static/
|
||||
msg_ok "Embedded Frontend into Backend"
|
||||
|
||||
msg_info "Building Backend"
|
||||
cd /opt/booklore/booklore-api
|
||||
APP_VERSION=$(get_latest_github_release "booklore-app/BookLore")
|
||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||
$STD ./gradlew clean build --no-daemon
|
||||
$STD ./gradlew clean build -x test --no-daemon
|
||||
mkdir -p /opt/booklore/dist
|
||||
JAR_PATH=$(find /opt/booklore/booklore-api/build/libs -maxdepth 1 -type f -name "booklore-api-*.jar" ! -name "*plain*" | head -n1)
|
||||
if [[ -z "$JAR_PATH" ]]; then
|
||||
@@ -74,9 +79,22 @@ function update_script() {
|
||||
cp "$JAR_PATH" /opt/booklore/dist/app.jar
|
||||
msg_ok "Built Backend"
|
||||
|
||||
if systemctl is-active --quiet nginx 2>/dev/null; then
|
||||
msg_info "Removing Nginx (no longer needed)"
|
||||
systemctl disable --now nginx
|
||||
$STD apt-get purge -y nginx nginx-common
|
||||
msg_ok "Removed Nginx"
|
||||
fi
|
||||
|
||||
if ! grep -q "^SERVER_PORT=" /opt/booklore_storage/.env 2>/dev/null; then
|
||||
echo "SERVER_PORT=6060" >>/opt/booklore_storage/.env
|
||||
fi
|
||||
|
||||
sed -i 's|ExecStart=/usr/bin/java -jar|ExecStart=/usr/bin/java -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -jar|' /etc/systemd/system/booklore.service
|
||||
systemctl daemon-reload
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start booklore
|
||||
systemctl reload nginx
|
||||
rm -rf /opt/booklore_bak
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
|
||||
73
ct/calibre-web.sh
Normal file
73
ct/calibre-web.sh
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/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: mikolaj92
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/janeczku/calibre-web
|
||||
|
||||
APP="calibre-web"
|
||||
var_tags="${var_tags:-media;books}"
|
||||
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 [[ ! -d /opt/calibre-web ]]; then
|
||||
msg_error "No Calibre-Web Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "Calibre-Web" "janeczku/calibre-web"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop calibre-web
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/calibre-web/app.db /opt/app.db_backup
|
||||
cp -r /opt/calibre-web/data /opt/data_backup
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Calibre-Web" "janeczku/calibre-web" "prebuild" "latest" "/opt/calibre-web" "calibre-web*.tar.gz"
|
||||
setup_uv
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
cd /opt/calibre-web
|
||||
$STD uv venv
|
||||
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel
|
||||
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir -r requirements.txt
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/app.db_backup /opt/calibre-web/app.db 2>/dev/null
|
||||
cp -r /opt/data_backup /opt/calibre-web/data 2>/dev/null
|
||||
rm -rf /opt/app.db_backup /opt/data_backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start calibre-web
|
||||
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}:8083${CL}"
|
||||
@@ -32,8 +32,17 @@ function update_script() {
|
||||
systemctl stop cleanuparr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up config"
|
||||
cp -r /opt/cleanuparr/config /opt/cleanuparr_config_backup
|
||||
msg_ok "Backed up config"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip"
|
||||
|
||||
msg_info "Restoring config"
|
||||
[[ -d /opt/cleanuparr/config ]] && rm -rf /opt/cleanuparr/config
|
||||
mv /opt/cleanuparr_config_backup /opt/cleanuparr/config
|
||||
msg_ok "Restored config"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start cleanuparr
|
||||
msg_ok "Started Service"
|
||||
|
||||
@@ -19,6 +19,8 @@ variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
ADDON_SCRIPT="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/coolify.sh"
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
@@ -29,10 +31,31 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating Coolify"
|
||||
$STD bash <(curl -fsSL https://cdn.coollabs.io/coolify/install.sh)
|
||||
msg_ok "Updated Coolify"
|
||||
msg_ok "Updated successfully!"
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${TAB}${TAB}${GN}update_coolify${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
if [[ ! "${CONFIRM,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_warn "Migration skipped. The old update will continue to work for now."
|
||||
msg_info "Updating ${APP} (legacy)"
|
||||
$STD bash <(curl -fsSL https://cdn.coollabs.io/coolify/install.sh)
|
||||
msg_ok "Updated ${APP}"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Migrating update function"
|
||||
cat <<'MIGRATION_EOF' >/usr/bin/update
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/coolify.sh)"
|
||||
MIGRATION_EOF
|
||||
chmod +x /usr/bin/update
|
||||
|
||||
ln -sf /usr/bin/update /usr/bin/update_coolify 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -20,26 +20,28 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if command -v cross-seed &>/dev/null; then
|
||||
current_version=$(cross-seed --version)
|
||||
latest_version=$(npm show cross-seed version)
|
||||
if [ "$current_version" != "$latest_version" ]; then
|
||||
msg_info "Updating cross-seed from version v${current_version} to v${latest_version}"
|
||||
$STD npm install -g cross-seed@latest
|
||||
systemctl restart cross-seed
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "cross-seed is already at v${current_version}"
|
||||
fi
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if command -v cross-seed &>/dev/null; then
|
||||
current_version=$(cross-seed --version)
|
||||
latest_version=$(npm show cross-seed version)
|
||||
if [ "$current_version" != "$latest_version" ]; then
|
||||
msg_info "Updating cross-seed from version v${current_version} to v${latest_version}"
|
||||
$STD npm install -g cross-seed@latest
|
||||
systemctl restart cross-seed
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_error "No cross-seed Installation Found!"
|
||||
exit
|
||||
msg_ok "cross-seed is already at v${current_version}"
|
||||
fi
|
||||
else
|
||||
msg_error "No cross-seed Installation Found!"
|
||||
exit
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
78
ct/databasus.sh
Normal file
78
ct/databasus.sh
Normal file
@@ -0,0 +1,78 @@
|
||||
#!/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/databasus/databasus
|
||||
|
||||
APP="Databasus"
|
||||
var_tags="${var_tags:-backup;postgresql;database}"
|
||||
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 /opt/databasus/databasus ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "databasus" "databasus/databasus"; then
|
||||
msg_info "Stopping Databasus"
|
||||
$STD systemctl stop databasus
|
||||
msg_ok "Stopped Databasus"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/databasus/.env /opt/databasus.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "databasus" "databasus/databasus" "tarball" "latest" "/opt/databasus"
|
||||
|
||||
msg_info "Updating Databasus"
|
||||
cd /opt/databasus/frontend
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
cd /opt/databasus/backend
|
||||
$STD go mod download
|
||||
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
||||
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o databasus ./cmd/main.go
|
||||
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
||||
cp -r /opt/databasus/frontend/dist/* /opt/databasus/ui/build/
|
||||
cp -r /opt/databasus/backend/migrations /opt/databasus/
|
||||
chown -R postgres:postgres /opt/databasus
|
||||
msg_ok "Updated Databasus"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/databasus.env.bak /opt/databasus/.env
|
||||
rm -f /opt/databasus.env.bak
|
||||
chown postgres:postgres /opt/databasus/.env
|
||||
msg_ok "Restored Configuration"
|
||||
|
||||
msg_info "Starting Databasus"
|
||||
$STD systemctl start databasus
|
||||
msg_ok "Started Databasus"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
41
ct/dockge.sh
41
ct/dockge.sh
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# Author: tteck (tteckster) | Migration: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://dockge.kuma.pet/
|
||||
|
||||
@@ -19,26 +19,45 @@ variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
ADDON_SCRIPT="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/dockge.sh"
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/dockge ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating base system"
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Base system updated"
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${TAB}${TAB}${GN}update_dockge${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
if [[ ! "${CONFIRM,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_warn "Migration skipped. The old update will continue to work for now."
|
||||
msg_info "Updating ${APP} (legacy)"
|
||||
cd /opt/dockge
|
||||
$STD docker compose pull
|
||||
$STD docker compose up -d
|
||||
msg_ok "Updated ${APP}"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating Dockge"
|
||||
cd /opt/dockge
|
||||
$STD docker compose pull
|
||||
$STD docker compose up -d
|
||||
msg_ok "Updated Dockge"
|
||||
msg_ok "Updated successfully!"
|
||||
msg_info "Migrating update function"
|
||||
cat <<'MIGRATION_EOF' >/usr/bin/update
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/dockge.sh)"
|
||||
MIGRATION_EOF
|
||||
chmod +x /usr/bin/update
|
||||
|
||||
ln -sf /usr/bin/update /usr/bin/update_dockge 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@ variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
ADDON_SCRIPT="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/dokploy.sh"
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
@@ -29,10 +31,31 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating Dokploy"
|
||||
$STD bash <(curl -sSL https://dokploy.com/install.sh)
|
||||
msg_ok "Updated Dokploy"
|
||||
msg_ok "Updated successfully!"
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${TAB}${TAB}${GN}update_dokploy${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
if [[ ! "${CONFIRM,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_warn "Migration skipped. The old update will continue to work for now."
|
||||
msg_info "Updating ${APP} (legacy)"
|
||||
curl -sSL https://dokploy.com/install.sh | $STD bash -s update
|
||||
msg_ok "Updated ${APP}"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Migrating update function"
|
||||
cat <<'MIGRATION_EOF' >/usr/bin/update
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/dokploy.sh)"
|
||||
MIGRATION_EOF
|
||||
chmod +x /usr/bin/update
|
||||
|
||||
ln -sf /usr/bin/update /usr/bin/update_dokploy 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,10 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
setup_mariadb
|
||||
PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
|
||||
|
||||
if check_for_gh_release "firefly" "firefly-iii/firefly-iii"; then
|
||||
systemctl stop apache2
|
||||
cp /opt/firefly/.env /opt/.env
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Authors: tteck (tteckster)
|
||||
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Authors: MickLesk (CanbiZ) | Co-Author: remz1337
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://frigate.video/
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-20}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-11}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-0}"
|
||||
var_gpu="${var_gpu:-yes}"
|
||||
|
||||
@@ -21,15 +21,15 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/frigate.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/frigate.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "To update Frigate, create a new container and transfer your configuration."
|
||||
exit
|
||||
fi
|
||||
msg_error "To update Frigate, create a new container and transfer your configuration."
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
93
ct/gramps-web.sh
Normal file
93
ct/gramps-web.sh
Normal file
@@ -0,0 +1,93 @@
|
||||
#!/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://www.grampsweb.org/
|
||||
|
||||
APP="gramps-web"
|
||||
var_tags="${var_tags:-genealogy;family;collaboration}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-20}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/gramps-web-api ]] || [[ ! -d /opt/gramps-web/frontend ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
if check_for_gh_release "gramps-web-api" "gramps-project/gramps-web-api"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop gramps-web
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gramps-web-api" "gramps-project/gramps-web-api" "tarball" "latest" "/opt/gramps-web-api"
|
||||
|
||||
msg_info "Updating Gramps Web API"
|
||||
$STD uv venv -c -p python3.12 /opt/gramps-web/venv
|
||||
source /opt/gramps-web/venv/bin/activate
|
||||
$STD uv pip install --no-cache-dir --upgrade pip setuptools wheel
|
||||
$STD uv pip install --no-cache-dir gunicorn
|
||||
$STD uv pip install --no-cache-dir /opt/gramps-web-api
|
||||
msg_ok "Updated Gramps Web API"
|
||||
|
||||
msg_info "Applying Database Migration"
|
||||
cd /opt/gramps-web-api
|
||||
GRAMPS_API_CONFIG=/opt/gramps-web/config/config.cfg \
|
||||
ALEMBIC_CONFIG=/opt/gramps-web-api/alembic.ini \
|
||||
GRAMPSHOME=/opt/gramps-web/data/gramps \
|
||||
GRAMPS_DATABASE_PATH=/opt/gramps-web/data/gramps/grampsdb \
|
||||
$STD /opt/gramps-web/venv/bin/python3 -m gramps_webapi user migrate
|
||||
msg_ok "Applied Database Migration"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start gramps-web
|
||||
msg_ok "Started Service"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "gramps-web" "gramps-project/gramps-web"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop gramps-web
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gramps-web" "gramps-project/gramps-web" "tarball" "latest" "/opt/gramps-web/frontend"
|
||||
|
||||
msg_info "Updating Gramps Web Frontend"
|
||||
cd /opt/gramps-web/frontend
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
$STD corepack enable
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
msg_ok "Updated Gramps Web Frontend"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start gramps-web
|
||||
msg_ok "Started Service"
|
||||
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}:5000${CL}"
|
||||
6
ct/headers/calibre-web
Normal file
6
ct/headers/calibre-web
Normal file
@@ -0,0 +1,6 @@
|
||||
___ __ __
|
||||
_________ _/ (_) /_ ________ _ _____ / /_
|
||||
/ ___/ __ `/ / / __ \/ ___/ _ \_____| | /| / / _ \/ __ \
|
||||
/ /__/ /_/ / / / /_/ / / / __/_____/ |/ |/ / __/ /_/ /
|
||||
\___/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/
|
||||
|
||||
6
ct/headers/databasus
Normal file
6
ct/headers/databasus
Normal file
@@ -0,0 +1,6 @@
|
||||
____ __ __
|
||||
/ __ \____ _/ /_____ _/ /_ ____ ________ _______
|
||||
/ / / / __ `/ __/ __ `/ __ \/ __ `/ ___/ / / / ___/
|
||||
/ /_/ / /_/ / /_/ /_/ / /_/ / /_/ (__ ) /_/ (__ )
|
||||
/_____/\__,_/\__/\__,_/_.___/\__,_/____/\__,_/____/
|
||||
|
||||
6
ct/headers/gramps-web
Normal file
6
ct/headers/gramps-web
Normal file
@@ -0,0 +1,6 @@
|
||||
__
|
||||
____ __________ _____ ___ ____ _____ _ _____ / /_
|
||||
/ __ `/ ___/ __ `/ __ `__ \/ __ \/ ___/____| | /| / / _ \/ __ \
|
||||
/ /_/ / / / /_/ / / / / / / /_/ (__ )_____/ |/ |/ / __/ /_/ /
|
||||
\__, /_/ \__,_/_/ /_/ /_/ .___/____/ |__/|__/\___/_.___/
|
||||
/____/ /_/
|
||||
@@ -1,6 +0,0 @@
|
||||
__ __
|
||||
/ /_ __ ______ / /_____ ___________
|
||||
/ __ \/ / / / __ \/ __/ __ `/ ___/ ___/
|
||||
/ / / / /_/ / / / / /_/ /_/ / / / /
|
||||
/_/ /_/\__,_/_/ /_/\__/\__,_/_/ /_/
|
||||
|
||||
6
ct/headers/seaweedfs
Normal file
6
ct/headers/seaweedfs
Normal file
@@ -0,0 +1,6 @@
|
||||
_____ _____________
|
||||
/ ___/___ ____ __ _____ ___ ____/ / ____/ ___/
|
||||
\__ \/ _ \/ __ `/ | /| / / _ \/ _ \/ __ / /_ \__ \
|
||||
___/ / __/ /_/ /| |/ |/ / __/ __/ /_/ / __/ ___/ /
|
||||
/____/\___/\__,_/ |__/|__/\___/\___/\__,_/_/ /____/
|
||||
|
||||
6
ct/headers/sonobarr
Normal file
6
ct/headers/sonobarr
Normal file
@@ -0,0 +1,6 @@
|
||||
__
|
||||
_________ ____ ____ / /_ ____ ___________
|
||||
/ ___/ __ \/ __ \/ __ \/ __ \/ __ `/ ___/ ___/
|
||||
(__ ) /_/ / / / / /_/ / /_/ / /_/ / / / /
|
||||
/____/\____/_/ /_/\____/_.___/\__,_/_/ /_/
|
||||
|
||||
6
ct/headers/sparkyfitness
Normal file
6
ct/headers/sparkyfitness
Normal file
@@ -0,0 +1,6 @@
|
||||
_____ __ _______ __
|
||||
/ ___/____ ____ ______/ /____ __/ ____(_) /_____ ___ __________
|
||||
\__ \/ __ \/ __ `/ ___/ //_/ / / / /_ / / __/ __ \/ _ \/ ___/ ___/
|
||||
___/ / /_/ / /_/ / / / ,< / /_/ / __/ / / /_/ / / / __(__ |__ )
|
||||
/____/ .___/\__,_/_/ /_/|_|\__, /_/ /_/\__/_/ /_/\___/____/____/
|
||||
/_/ /____/
|
||||
6
ct/headers/sure
Normal file
6
ct/headers/sure
Normal file
@@ -0,0 +1,6 @@
|
||||
_____
|
||||
/ ___/__ __________
|
||||
\__ \/ / / / ___/ _ \
|
||||
___/ / /_/ / / / __/
|
||||
/____/\__,_/_/ \___/
|
||||
|
||||
@@ -60,7 +60,7 @@ function update_script() {
|
||||
$STD corepack disable
|
||||
fi
|
||||
MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)"
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
|
||||
setup_meilisearch
|
||||
|
||||
msg_info "Updating Karakeep"
|
||||
|
||||
70
ct/komodo.sh
70
ct/komodo.sh
@@ -1,7 +1,7 @@
|
||||
#!/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
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://komo.do
|
||||
|
||||
@@ -19,49 +19,49 @@ variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
ADDON_SCRIPT="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/komodo.sh"
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
[[ -d /opt/komodo ]] || {
|
||||
if [[ ! -d /opt/komodo ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit 1
|
||||
}
|
||||
|
||||
msg_info "Updating Komodo"
|
||||
COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
|
||||
if [[ -z "$COMPOSE_FILE" ]]; then
|
||||
msg_error "No valid compose file found in /opt/komodo!"
|
||||
exit 1
|
||||
fi
|
||||
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||
|
||||
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
|
||||
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
|
||||
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
|
||||
echo -e "${YW}Please follow the migration guide:${CL}"
|
||||
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
|
||||
exit 1
|
||||
exit
|
||||
fi
|
||||
|
||||
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||
exit 1
|
||||
}
|
||||
GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
|
||||
if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
|
||||
msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
|
||||
mv "$BACKUP_FILE" "$COMPOSE_FILE"
|
||||
exit 1
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${TAB}${TAB}${GN}update_komodo${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
if [[ ! "${CONFIRM,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_warn "Migration skipped. The old update will continue to work for now."
|
||||
msg_info "Updating ${APP} (legacy)"
|
||||
COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
|
||||
if [[ -z "$COMPOSE_FILE" ]]; then
|
||||
msg_error "No valid compose file found in /opt/komodo!"
|
||||
exit 1
|
||||
fi
|
||||
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env pull
|
||||
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||
msg_ok "Updated ${APP}"
|
||||
exit
|
||||
fi
|
||||
if ! grep -qxF 'COMPOSE_KOMODO_BACKUPS_PATH=/etc/komodo/backups' /opt/komodo/compose.env; then
|
||||
sed -i '/^COMPOSE_KOMODO_IMAGE_TAG=latest$/a COMPOSE_KOMODO_BACKUPS_PATH=/etc/komodo/backups' /opt/komodo/compose.env
|
||||
fi
|
||||
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env pull
|
||||
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||
msg_ok "Updated Komodo"
|
||||
|
||||
msg_info "Migrating update function"
|
||||
cat <<'MIGRATION_EOF' >/usr/bin/update
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/komodo.sh)"
|
||||
MIGRATION_EOF
|
||||
chmod +x /usr/bin/update
|
||||
|
||||
ln -sf /usr/bin/update /usr/bin/update_komodo 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
if check_for_gh_release "manyfold" "manyfold3d/manyfold"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop manyfold.target manyfold-rails.1 manyfold-default_worker.1 manyfold-performance_worker.1
|
||||
|
||||
@@ -29,7 +29,7 @@ function update_script() {
|
||||
fi
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
NODE_VERSION="22" NODE_MODULE="matterbridge" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="matterbridge" setup_nodejs
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -27,12 +27,12 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if check_for_gh_release "memos" "usememos/memos" "v0.25.3"; then
|
||||
if check_for_gh_release "memos" "usememos/memos"; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop memos
|
||||
msg_ok "Service stopped"
|
||||
|
||||
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "v0.25.3" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "latest" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl start memos
|
||||
|
||||
14
ct/n8n.sh
14
ct/n8n.sh
@@ -27,7 +27,11 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
ensure_dependencies graphicsmagick
|
||||
|
||||
ensure_dependencies graphicsmagick
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
msg_info "Updating n8n"
|
||||
if [ ! -f /opt/n8n.env ]; then
|
||||
sed -i 's|^Environment="N8N_SECURE_COOKIE=false"$|EnvironmentFile=/opt/n8n.env|' /etc/systemd/system/n8n.service
|
||||
mkdir -p /opt
|
||||
@@ -37,14 +41,12 @@ N8N_PORT=5678
|
||||
N8N_PROTOCOL=http
|
||||
N8N_HOST=$LOCAL_IP
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
fi
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
msg_info "Updating ${APP} LXC"
|
||||
rm -rf /usr/lib/node_modules/.n8n-* /usr/lib/node_modules/n8n
|
||||
$STD npm install -g n8n --force
|
||||
$STD npm update -g n8n
|
||||
systemctl restart n8n
|
||||
msg_ok "Updated n8n"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE="v5.0.2"
|
||||
RELEASE="v5.1.0"
|
||||
if check_for_gh_release "OpenCloud" "opencloud-eu/opencloud" "${RELEASE}"; then
|
||||
msg_info "Stopping services"
|
||||
systemctl stop opencloud opencloud-wopi
|
||||
|
||||
@@ -29,6 +29,8 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_release "pangolin" "fosrl/pangolin"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop pangolin
|
||||
@@ -51,7 +53,6 @@ function update_script() {
|
||||
$STD npm run db:generate
|
||||
$STD npm run build
|
||||
$STD npm run build:cli
|
||||
$STD npm run db:push
|
||||
cp -R .next/standalone ./
|
||||
chmod +x ./dist/cli.mjs
|
||||
cp server/db/names.json ./dist/names.json
|
||||
@@ -64,6 +65,11 @@ function update_script() {
|
||||
rm -f /opt/pangolin_config_backup.tar.gz
|
||||
msg_ok "Restored config"
|
||||
|
||||
msg_info "Running database migrations"
|
||||
cd /opt/pangolin
|
||||
ENVIRONMENT=prod $STD npx drizzle-kit push --config drizzle.sqlite.config.ts
|
||||
msg_ok "Ran database migrations"
|
||||
|
||||
msg_info "Updating Badger plugin version"
|
||||
BADGER_VERSION=$(get_latest_github_release "fosrl/badger" "false")
|
||||
sed -i "s/version: \"v[0-9.]*\"/version: \"$BADGER_VERSION\"/g" /opt/pangolin/config/traefik/traefik_config.yml
|
||||
|
||||
@@ -29,6 +29,13 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
if ! grep -q "PORT=3001" /opt/patchmon/backend/.env; then
|
||||
msg_warn "⚠️ The next PatchMon update will include breaking changes (port changes)."
|
||||
msg_warn "See details here: https://github.com/community-scripts/ProxmoxVE/pull/11888"
|
||||
msg_warn "Press Enter to continue with the update, or Ctrl+C to abort..."
|
||||
read -r
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
if check_for_gh_release "PatchMon" "PatchMon/PatchMon"; then
|
||||
msg_info "Stopping Service"
|
||||
@@ -46,7 +53,8 @@ function update_script() {
|
||||
VERSION=$(get_latest_github_release "PatchMon/PatchMon")
|
||||
PROTO="$(sed -n '/SERVER_PROTOCOL/s/[^=]*=//p' /opt/backend.env)"
|
||||
HOST="$(sed -n '/SERVER_HOST/s/[^=]*=//p' /opt/backend.env)"
|
||||
[[ "${PROTO:-http}" == "http" ]] && PORT=":3001"
|
||||
SERVER_PORT="$(sed -n '/SERVER_PORT/s/[^=]*=//p' /opt/backend.env)"
|
||||
[[ "$PROTO" == "http" ]] && PORT=":3001"
|
||||
sed -i 's/PORT=3399/PORT=3001/' /opt/backend.env
|
||||
sed -i -e "s/VERSION=.*/VERSION=$VERSION/" \
|
||||
-e "\|VITE_API_URL=|s|http.*|${PROTO:-http}://${HOST:-$LOCAL_IP}${PORT:-}/api/v1|" /opt/frontend.env
|
||||
@@ -66,6 +74,9 @@ function update_script() {
|
||||
-e '\|try_files |i\ root /opt/patchmon/frontend/dist;' \
|
||||
-e 's|alias.*|alias /opt/patchmon/frontend/dist/assets;|' \
|
||||
-e '\|expires 1y|i\ root /opt/patchmon/frontend/dist;' /etc/nginx/sites-available/patchmon.conf
|
||||
if [[ -n "$SERVER_PORT" ]] && [[ "$SERVER_PORT" != "443" ]]; then
|
||||
sed -i "s/listen [[:digit:]].*/listen ${SERVER_PORT};/" /etc/nginx/sites-available/patchmon.conf
|
||||
fi
|
||||
ln -sf /etc/nginx/sites-available/patchmon.conf /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD nginx -t
|
||||
|
||||
31
ct/planka.sh
31
ct/planka.sh
@@ -31,16 +31,24 @@ function update_script() {
|
||||
if check_for_gh_release "planka" "plankanban/planka"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop planka
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up data"
|
||||
BK="/opt/planka-backup"
|
||||
mkdir -p "$BK"/{favicons,user-avatars,background-images,attachments}
|
||||
[ -f /opt/planka/.env ] && mv /opt/planka/.env "$BK"/
|
||||
[ -d /opt/planka/public/favicons ] && cp -a /opt/planka/public/favicons/. "$BK/favicons/"
|
||||
[ -d /opt/planka/public/user-avatars ] && cp -a /opt/planka/public/user-avatars/. "$BK/user-avatars/"
|
||||
[ -d /opt/planka/public/background-images ] && cp -a /opt/planka/public/background-images/. "$BK/background-images/"
|
||||
[ -d /opt/planka/private/attachments ] && cp -a /opt/planka/private/attachments/. "$BK/attachments/"
|
||||
# Support both old (pre-v2) and new (v2) directory layouts
|
||||
if [ -d /opt/planka/data/protected ]; then
|
||||
[ -d /opt/planka/data/protected/favicons ] && cp -a /opt/planka/data/protected/favicons/. "$BK/favicons/"
|
||||
[ -d /opt/planka/data/protected/user-avatars ] && cp -a /opt/planka/data/protected/user-avatars/. "$BK/user-avatars/"
|
||||
[ -d /opt/planka/data/protected/background-images ] && cp -a /opt/planka/data/protected/background-images/. "$BK/background-images/"
|
||||
[ -d /opt/planka/data/private/attachments ] && cp -a /opt/planka/data/private/attachments/. "$BK/attachments/"
|
||||
else
|
||||
[ -d /opt/planka/public/favicons ] && cp -a /opt/planka/public/favicons/. "$BK/favicons/"
|
||||
[ -d /opt/planka/public/user-avatars ] && cp -a /opt/planka/public/user-avatars/. "$BK/user-avatars/"
|
||||
[ -d /opt/planka/public/background-images ] && cp -a /opt/planka/public/background-images/. "$BK/background-images/"
|
||||
[ -d /opt/planka/private/attachments ] && cp -a /opt/planka/private/attachments/. "$BK/attachments/"
|
||||
fi
|
||||
rm -rf /opt/planka
|
||||
msg_ok "Backed up data"
|
||||
|
||||
@@ -53,15 +61,16 @@ function update_script() {
|
||||
|
||||
msg_info "Restoring data"
|
||||
[ -f "$BK/.env" ] && mv "$BK/.env" /opt/planka/.env
|
||||
mkdir -p /opt/planka/public/{favicons,user-avatars,background-images} /opt/planka/private/attachments
|
||||
[ -d "$BK/favicons" ] && cp -a "$BK/favicons/." /opt/planka/public/favicons/
|
||||
[ -d "$BK/user-avatars" ] && cp -a "$BK/user-avatars/." /opt/planka/public/user-avatars/
|
||||
[ -d "$BK/background-images" ] && cp -a "$BK/background-images/." /opt/planka/public/background-images/
|
||||
[ -d "$BK/attachments" ] && cp -a "$BK/attachments/." /opt/planka/private/attachments/
|
||||
# Planka v2 uses unified data directory structure
|
||||
mkdir -p /opt/planka/data/protected/{favicons,user-avatars,background-images} /opt/planka/data/private/attachments
|
||||
[ -d "$BK/favicons" ] && cp -a "$BK/favicons/." /opt/planka/data/protected/favicons/
|
||||
[ -d "$BK/user-avatars" ] && cp -a "$BK/user-avatars/." /opt/planka/data/protected/user-avatars/
|
||||
[ -d "$BK/background-images" ] && cp -a "$BK/background-images/." /opt/planka/data/protected/background-images/
|
||||
[ -d "$BK/attachments" ] && cp -a "$BK/attachments/." /opt/planka/data/private/attachments/
|
||||
rm -rf "$BK"
|
||||
msg_ok "Restored data"
|
||||
|
||||
msg_ok "Migrate Database"
|
||||
msg_info "Migrate Database"
|
||||
cd /opt/planka
|
||||
$STD npm run db:upgrade
|
||||
$STD npm run db:migrate
|
||||
|
||||
64
ct/plex.sh
64
ct/plex.sh
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: tteck (tteckster) | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.plex.tv/
|
||||
|
||||
@@ -24,28 +24,54 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]] &&
|
||||
[[ ! -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then
|
||||
|
||||
if ! dpkg -l plexmediaserver &>/dev/null; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
UPD=$(msg_menu "Plex Update Options" \
|
||||
"1" "Update LXC" \
|
||||
"2" "Install plexupdate")
|
||||
if [ "$UPD" == "1" ]; then
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated ${APP} LXC"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
|
||||
# Migrate from old repository to new one if needed
|
||||
if [[ -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then
|
||||
local current_uri
|
||||
current_uri=$(grep -oP '(?<=URIs: ).*' /etc/apt/sources.list.d/plexmediaserver.sources 2>/dev/null || true)
|
||||
if [[ "$current_uri" == *"downloads.plex.tv/repo/deb"* ]]; then
|
||||
msg_info "Migrating to new Plex repository"
|
||||
rm -f /etc/apt/sources.list.d/plexmediaserver.sources
|
||||
rm -f /usr/share/keyrings/PlexSign.asc
|
||||
setup_deb822_repo \
|
||||
"plexmediaserver" \
|
||||
"https://downloads.plex.tv/plex-keys/PlexSign.v2.key" \
|
||||
"https://repo.plex.tv/deb/" \
|
||||
"public" \
|
||||
"main"
|
||||
msg_ok "Migrated to new Plex repository"
|
||||
fi
|
||||
elif [[ -f /etc/apt/sources.list.d/plexmediaserver.list ]]; then
|
||||
msg_info "Migrating to new Plex repository (deb822)"
|
||||
rm -f /etc/apt/sources.list.d/plexmediaserver.list
|
||||
rm -f /etc/apt/sources.list.d/plex*
|
||||
rm -f /usr/share/keyrings/PlexSign.asc
|
||||
setup_deb822_repo \
|
||||
"plexmediaserver" \
|
||||
"https://downloads.plex.tv/plex-keys/PlexSign.v2.key" \
|
||||
"https://repo.plex.tv/deb/" \
|
||||
"public" \
|
||||
"main"
|
||||
msg_ok "Migrated to new Plex repository (deb822)"
|
||||
fi
|
||||
if [ "$UPD" == "2" ]; then
|
||||
set +e
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/mrworf/plexupdate/master/extras/installer.sh)"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
if [[ -f /usr/local/bin/plexupdate ]] || [[ -d /opt/plexupdate ]]; then
|
||||
msg_info "Removing legacy plexupdate"
|
||||
rm -rf /opt/plexupdate /usr/local/bin/plexupdate
|
||||
crontab -l 2>/dev/null | grep -v plexupdate | crontab - 2>/dev/null || true
|
||||
msg_ok "Removed legacy plexupdate"
|
||||
fi
|
||||
|
||||
msg_info "Updating Plex Media Server"
|
||||
$STD apt update
|
||||
$STD apt install -y plexmediaserver
|
||||
msg_ok "Updated Plex Media Server"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -71,6 +71,7 @@ EOF
|
||||
$STD php artisan migrate --seed --force --no-interaction
|
||||
chown -R www-data:www-data /opt/pterodactyl-panel/*
|
||||
chmod -R 755 /opt/pterodactyl-panel/storage /opt/pterodactyl-panel/bootstrap/cache/
|
||||
ln -s /opt/pterodactyl-panel /var/www/pterodactyl
|
||||
rm -rf "/opt/pterodactyl-panel/panel.tar.gz"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
@@ -23,7 +23,7 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /root/.config/recyclarr/recyclarr.yml ]]; then
|
||||
if [[ ! -f /root/.config/recyclarr/recyclarr.yml ]] && [[ ! -d /root/.config/recyclarr/configs ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
@@ -33,6 +33,20 @@ function update_script() {
|
||||
|
||||
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
|
||||
|
||||
# Migrate includes from configs/ to includes/ (recyclarr v8)
|
||||
RECYCLARR_DIR="/root/.config/recyclarr"
|
||||
mkdir -p "$RECYCLARR_DIR/includes"
|
||||
if [[ -d "$RECYCLARR_DIR/configs" ]]; then
|
||||
for item in "$RECYCLARR_DIR/configs"/*/; do
|
||||
[[ -d "$item" ]] || continue
|
||||
dir_name=$(basename "$item")
|
||||
# Only move subdirs that look like include dirs (not the configs themselves)
|
||||
if [[ "$dir_name" != "configs" ]] && [[ ! -d "$RECYCLARR_DIR/includes/$dir_name" ]]; then
|
||||
mv "$item" "$RECYCLARR_DIR/includes/"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
82
ct/romm.sh
82
ct/romm.sh
@@ -20,48 +20,50 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/romm ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "romm" "rommapp/romm"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop romm-backend romm-worker romm-scheduler romm-watcher
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up configuration"
|
||||
cp /opt/romm/.env /opt/romm/.env.backup
|
||||
msg_ok "Backed up configuration"
|
||||
|
||||
fetch_and_deploy_gh_release "romm" "rommapp/romm" "tarball" "latest" "/opt/romm"
|
||||
|
||||
msg_info "Updating ROMM"
|
||||
cp /opt/romm/.env.backup /opt/romm/.env
|
||||
cd /opt/romm
|
||||
$STD uv sync --all-extras
|
||||
cd /opt/romm/backend
|
||||
$STD uv run alembic upgrade head
|
||||
cd /opt/romm/frontend
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
# Merge static assets into dist folder
|
||||
cp -rf /opt/romm/frontend/assets/* /opt/romm/frontend/dist/assets/
|
||||
mkdir -p /opt/romm/frontend/dist/assets/romm
|
||||
ln -sfn /var/lib/romm/resources /opt/romm/frontend/dist/assets/romm/resources
|
||||
ln -sfn /var/lib/romm/assets /opt/romm/frontend/dist/assets/romm/assets
|
||||
msg_ok "Updated ROMM"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start romm-backend romm-worker romm-scheduler romm-watcher
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully"
|
||||
fi
|
||||
if [[ ! -d /opt/romm ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_release "romm" "rommapp/romm"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop romm-backend romm-worker romm-scheduler romm-watcher
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up configuration"
|
||||
cp /opt/romm/.env /opt/romm/.env.backup
|
||||
msg_ok "Backed up configuration"
|
||||
|
||||
fetch_and_deploy_gh_release "romm" "rommapp/romm" "tarball" "latest" "/opt/romm"
|
||||
|
||||
msg_info "Updating ROMM"
|
||||
cp /opt/romm/.env.backup /opt/romm/.env
|
||||
cd /opt/romm
|
||||
$STD uv sync --all-extras
|
||||
cd /opt/romm/backend
|
||||
$STD uv run alembic upgrade head
|
||||
cd /opt/romm/frontend
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
# Merge static assets into dist folder
|
||||
cp -rf /opt/romm/frontend/assets/* /opt/romm/frontend/dist/assets/
|
||||
mkdir -p /opt/romm/frontend/dist/assets/romm
|
||||
ln -sfn /var/lib/romm/resources /opt/romm/frontend/dist/assets/romm/resources
|
||||
ln -sfn /var/lib/romm/assets /opt/romm/frontend/dist/assets/romm/assets
|
||||
msg_ok "Updated ROMM"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start romm-backend romm-worker romm-scheduler romm-watcher
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# Author: tteck (tteckster) | Migration: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://runtipi.io/
|
||||
|
||||
@@ -19,16 +19,43 @@ variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
ADDON_SCRIPT="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/runtipi.sh"
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/runtipi ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
cd /opt/runtipi && ./runtipi-cli update latest
|
||||
msg_ok "Updated successfully!"
|
||||
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${TAB}${TAB}${GN}update_runtipi${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
if [[ ! "${CONFIRM,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_warn "Migration skipped. The old update will continue to work for now."
|
||||
msg_info "Updating ${APP} (legacy)"
|
||||
cd /opt/runtipi && ./runtipi-cli update latest
|
||||
msg_ok "Updated ${APP}"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Migrating update function"
|
||||
cat <<'MIGRATION_EOF' >/usr/bin/update
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/runtipi.sh)"
|
||||
MIGRATION_EOF
|
||||
chmod +x /usr/bin/update
|
||||
|
||||
ln -sf /usr/bin/update /usr/bin/update_runtipi 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -27,12 +27,33 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_ok "There is currently no update available."
|
||||
# sed -i 's/^\([[:space:]]*limiter:\)[[:space:]]*true/\1 false/' /etc/searxng/settings.yml
|
||||
# if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
|
||||
# msg_ok "There is currently no update available."
|
||||
# fi
|
||||
exit
|
||||
|
||||
chown -R searxng:searxng /usr/local/searxng/searxng-src
|
||||
if su -s /bin/bash -c "git -C /usr/local/searxng/searxng-src pull" searxng | grep -q 'Already up to date'; then
|
||||
msg_ok "There is currently no update available."
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating SearXNG installation"
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop searxng
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating SearXNG"
|
||||
$STD su -s /bin/bash searxng -c '
|
||||
python3 -m venv /usr/local/searxng/searx-pyenv &&
|
||||
. /usr/local/searxng/searx-pyenv/bin/activate &&
|
||||
pip install -U pip setuptools wheel pyyaml lxml msgspec typing_extensions &&
|
||||
pip install --use-pep517 --no-build-isolation -e /usr/local/searxng/searxng-src
|
||||
'
|
||||
msg_ok "Updated SearXNG"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start searxng
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
start
|
||||
build_container
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
#!/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: BiluliB
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/plexguide/Huntarr.io
|
||||
# Source: https://github.com/seaweedfs/seaweedfs
|
||||
|
||||
APP="huntarr"
|
||||
var_tags="${var_tags:-arr}"
|
||||
APP="SeaweedFS"
|
||||
var_tags="${var_tags:-storage;s3;filesystem}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-16}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
var_fuse="${var_fuse:-yes}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
@@ -24,27 +25,20 @@ function update_script() {
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /opt/huntarr/main.py ]]; then
|
||||
if [[ ! -f /opt/seaweedfs/weed ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
if check_for_gh_release "huntarr" "plexguide/Huntarr.io"; then
|
||||
if check_for_gh_release "seaweedfs" "seaweedfs/seaweedfs"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop huntarr
|
||||
systemctl stop seaweedfs
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io" "tarball"
|
||||
|
||||
msg_info "Updating Huntarr"
|
||||
cd /opt/huntarr
|
||||
$STD uv pip install -r requirements.txt --python /opt/huntarr/.venv/bin/python
|
||||
msg_ok "Updated Huntarr"
|
||||
fetch_and_deploy_gh_release "seaweedfs" "seaweedfs/seaweedfs" "prebuild" "latest" "/opt/seaweedfs" "linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start huntarr
|
||||
systemctl start seaweedfs
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
@@ -55,7 +49,7 @@ start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
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}:9705${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9333${CL}"
|
||||
@@ -28,6 +28,8 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_release "snowshare" "TuroYT/snowshare"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop snowshare
|
||||
|
||||
63
ct/sonobarr.sh
Normal file
63
ct/sonobarr.sh
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/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: GoldenSpringness
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Dodelidoo-Labs/sonobarr
|
||||
|
||||
APP="sonobarr"
|
||||
var_tags="${var_tags:-music;discovery}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-20}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d "/opt/sonobarr" ]]; then
|
||||
msg_error "No sonobarr Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
if check_for_gh_release "sonobarr" "Dodelidoo-Labs/sonobarr"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop sonobarr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "sonobarr" "Dodelidoo-Labs/sonobarr" "tarball"
|
||||
|
||||
msg_info "Updating sonobarr"
|
||||
$STD uv venv -c /opt/sonobarr/venv
|
||||
$STD source /opt/sonobarr/venv/bin/activate
|
||||
$STD uv pip install --no-cache-dir -r /opt/sonobarr/requirements.txt
|
||||
sed -i "/release_version/s/=.*/=$(cat ~/.sonobarr)/" /etc/sonobarr/.env
|
||||
msg_ok "Updated sonobarr"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start sonobarr
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}sonobarr setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
||||
83
ct/sparkyfitness.sh
Normal file
83
ct/sparkyfitness.sh
Normal file
@@ -0,0 +1,83 @@
|
||||
#!/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: Tom Frenzel (tomfrenzel)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/CodeWithCJ/SparkyFitness
|
||||
|
||||
APP="SparkyFitness"
|
||||
var_tags="${var_tags:-health;fitness}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/sparkyfitness ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="25" setup_nodejs
|
||||
|
||||
if check_for_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop sparkyfitness-server nginx
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up data"
|
||||
mkdir -p /opt/sparkyfitness_backup
|
||||
if [[ -d /opt/sparkyfitness/SparkyFitnessServer/uploads ]]; then
|
||||
cp -r /opt/sparkyfitness/SparkyFitnessServer/uploads /opt/sparkyfitness_backup/
|
||||
fi
|
||||
if [[ -d /opt/sparkyfitness/SparkyFitnessServer/backup ]]; then
|
||||
cp -r /opt/sparkyfitness/SparkyFitnessServer/backup /opt/sparkyfitness_backup/
|
||||
fi
|
||||
msg_ok "Backed up data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness" "tarball"
|
||||
|
||||
msg_info "Updating Sparky Fitness Backend"
|
||||
cd /opt/sparkyfitness/SparkyFitnessServer
|
||||
$STD npm install
|
||||
msg_ok "Updated Sparky Fitness Backend"
|
||||
|
||||
msg_info "Updating Sparky Fitness Frontend (Patience)"
|
||||
cd /opt/sparkyfitness/SparkyFitnessFrontend
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
cp -a /opt/sparkyfitness/SparkyFitnessFrontend/dist/. /var/www/sparkyfitness/
|
||||
msg_ok "Updated Sparky Fitness Frontend"
|
||||
|
||||
msg_info "Restoring data"
|
||||
cp -r /opt/sparkyfitness_backup/. /opt/sparkyfitness/SparkyFitnessServer/
|
||||
rm -rf /opt/sparkyfitness_backup
|
||||
msg_ok "Restored data"
|
||||
|
||||
msg_info "Starting Services"
|
||||
$STD systemctl start sparkyfitness-server nginx
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
97
ct/sure.sh
Normal file
97
ct/sure.sh
Normal file
@@ -0,0 +1,97 @@
|
||||
#!/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: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://sure.am
|
||||
|
||||
APP="Sure"
|
||||
var_tags="${var_tags:-finance}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/sure ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "Sure" "we-promise/sure"; then
|
||||
if [[ ! -f /etc/systemd/system/sure-worker.service ]]; then
|
||||
cat <<EOF >/etc/systemd/system/sure-worker.service
|
||||
[Unit]
|
||||
Description=Sure Background Worker (Sidekiq)
|
||||
After=network.target redis-server.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/sure
|
||||
Environment=RAILS_ENV=production
|
||||
Environment=BUNDLE_DEPLOYMENT=1
|
||||
Environment=BUNDLE_WITHOUT=development
|
||||
Environment=PATH=/root/.rbenv/shims:/root/.rbenv/bin:/usr/bin:/usr/local/bin:/sbin:/bin
|
||||
EnvironmentFile=/etc/sure/.env
|
||||
ExecStart=/opt/sure/bin/bundle exec sidekiq -e production
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q sure-worker
|
||||
msg_info "Stopping Service"
|
||||
$STD systemctl stop sure
|
||||
msg_ok "Stopped Service"
|
||||
else
|
||||
msg_info "Stopping services"
|
||||
$STD systemctl stop sure-worker sure
|
||||
msg_ok "Stopped services"
|
||||
fi
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Sure" "we-promise/sure" "tarball" "latest" "/opt/sure"
|
||||
RUBY_VERSION="$(cat /opt/sure/.ruby-version)" RUBY_INSTALL_RAILS=false setup_ruby
|
||||
|
||||
msg_info "Updating Sure"
|
||||
source ~/.profile
|
||||
cd /opt/sure
|
||||
export RAILS_ENV=production
|
||||
export BUNDLE_DEPLOYMENT=1
|
||||
export BUNDLE_WITHOUT=development
|
||||
$STD ./bin/bundle install
|
||||
$STD ./bin/bundle exec bootsnap precompile --gemfile -j 0
|
||||
$STD ./bin/bundle exec bootsnap precompile -j 0 app/ lib/
|
||||
export SECRET_KEY_BASE_DUMMY=1 && $STD ./bin/rails assets:precompile
|
||||
unset SECRET_KEY_BASE_DUMMY
|
||||
msg_ok "Updated Sure"
|
||||
|
||||
msg_info "Starting Services"
|
||||
$STD systemctl start sure sure-worker
|
||||
msg_ok "Started Services"
|
||||
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}:3000${CL}"
|
||||
@@ -33,7 +33,7 @@ function update_script() {
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Updated LXC Container"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="verdaccio" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="verdaccio" setup_nodejs
|
||||
systemctl restart verdaccio
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
|
||||
@@ -134,7 +134,7 @@ update_links() {
|
||||
# Find all files containing the old repo reference
|
||||
while IFS= read -r file; do
|
||||
# Count occurrences
|
||||
local count=$(grep -c "github.com/$old_repo/$old_name" "$file" 2>/dev/null || echo 0)
|
||||
local count=$(grep -E -c "(github.com|githubusercontent.com)/$old_repo/$old_name" "$file" 2>/dev/null || echo 0)
|
||||
|
||||
if [[ $count -gt 0 ]]; then
|
||||
# Backup original
|
||||
@@ -143,16 +143,16 @@ update_links() {
|
||||
# Replace links - use different sed syntax for BSD/macOS vs GNU sed
|
||||
if sed --version &>/dev/null 2>&1; then
|
||||
# GNU sed
|
||||
sed -i "s|github.com/$old_repo/$old_name|github.com/$new_owner/$new_repo|g" "$file"
|
||||
sed -E -i "s@(github.com|githubusercontent.com)/$old_repo/$old_name@\\1/$new_owner/$new_repo@g" "$file"
|
||||
else
|
||||
# BSD sed (macOS)
|
||||
sed -i '' "s|github.com/$old_repo/$old_name|github.com/$new_owner/$new_repo|g" "$file"
|
||||
sed -E -i '' "s@(github.com|githubusercontent.com)/$old_repo/$old_name@\\1/$new_owner/$new_repo@g" "$file"
|
||||
fi
|
||||
|
||||
((files_updated++))
|
||||
print_success "Updated $file ($count links)"
|
||||
fi
|
||||
done < <(find "$search_path" -type f \( -name "*.md" -o -name "*.sh" -o -name "*.func" -o -name "*.json" \) -not -path "*/.git/*" 2>/dev/null | xargs grep -l "github.com/$old_repo/$old_name" 2>/dev/null)
|
||||
done < <(find "$search_path" -type f \( -name "*.md" -o -name "*.sh" -o -name "*.func" -o -name "*.json" \) -not -path "*/.git/*" 2>/dev/null | xargs grep -E -l "(github.com|githubusercontent.com)/$old_repo/$old_name" 2>/dev/null)
|
||||
|
||||
return $files_updated
|
||||
}
|
||||
|
||||
40
frontend/public/json/arcane.json
Normal file
40
frontend/public/json/arcane.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "Arcane",
|
||||
"slug": "arcane",
|
||||
"categories": [
|
||||
3
|
||||
],
|
||||
"date_created": "2026-02-24",
|
||||
"type": "addon",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3552,
|
||||
"documentation": "https://getarcane.app/docs",
|
||||
"website": "https://getarcane.app/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/arcane.webp",
|
||||
"config_path": "/opt/arcane/.env",
|
||||
"description": "Arcane is designed to be an easy and modern Docker management platform, built with everybody in mind. The goal of Arcane is to be built for and by the community to make sure nobody feels left out or behind with their specific features or processes. ",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "tools/addon/arcane.sh",
|
||||
"resources": {
|
||||
"cpu": null,
|
||||
"ram": null,
|
||||
"hdd": null,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": "arcane",
|
||||
"password": "arcane-admin"
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "This is an addon script intended to be used on top of an existing Docker container.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
40
frontend/public/json/calibre-web.json
Normal file
40
frontend/public/json/calibre-web.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "Calibre-Web",
|
||||
"slug": "calibre-web",
|
||||
"categories": [
|
||||
4
|
||||
],
|
||||
"date_created": "2026-02-20",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8083,
|
||||
"documentation": "https://github.com/janeczku/calibre-web/wiki",
|
||||
"website": "https://github.com/janeczku/calibre-web",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/calibre-web.webp",
|
||||
"config_path": "/opt/calibre-web/app.db",
|
||||
"description": "Web app for browsing, reading and downloading eBooks from a Calibre database. Provides an attractive interface with mobile support, user management, and eBook conversion capabilities.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/calibre-web.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": "admin",
|
||||
"password": "admin123"
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Upload your Calibre library metadata.db during first setup wizard.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,52 +1,52 @@
|
||||
{
|
||||
"name": "Coolify",
|
||||
"slug": "coolify",
|
||||
"categories": [
|
||||
3
|
||||
],
|
||||
"date_created": "2025-12-09",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8000,
|
||||
"documentation": "https://coolify.io/docs",
|
||||
"config_path": "/data/coolify",
|
||||
"website": "https://coolify.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/coolify.webp",
|
||||
"description": "Coolify is an open-source & self-hostable alternative to Heroku, Netlify, and Vercel. It helps you manage your servers, applications, and databases on your own hardware with Docker. Deploy any application from Git repositories, Docker images, or use pre-built templates.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/coolify.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 30,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
"name": "Coolify",
|
||||
"slug": "coolify",
|
||||
"categories": [
|
||||
3
|
||||
],
|
||||
"date_created": "2025-12-09",
|
||||
"type": "addon",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8000,
|
||||
"documentation": "https://coolify.io/docs",
|
||||
"website": "https://coolify.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/coolify.webp",
|
||||
"config_path": "/data/coolify",
|
||||
"description": "Coolify is an open-source & self-hostable alternative to Heroku, Netlify, and Vercel. It helps you manage your servers, applications, and databases on your own hardware with Docker. Deploy any application from Git repositories, Docker images, or use pre-built templates.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "tools/addon/coolify.sh",
|
||||
"resources": {
|
||||
"cpu": null,
|
||||
"ram": null,
|
||||
"hdd": null,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "This is an addon script intended to be used on top of an existing Docker container.",
|
||||
"type": "info"
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Initial setup will be done via the web interface on first access.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Coolify has built-in auto-updates. You can configure update frequency in Settings.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Coolify requires SSH access to manage deployments. SSH is enabled automatically.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "This container uses Docker-in-Docker (nesting) for application deployments.",
|
||||
"type": "warning"
|
||||
}
|
||||
]
|
||||
{
|
||||
"text": "Initial setup will be done via the web interface on first access.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Coolify has built-in auto-updates. You can configure update frequency in Settings.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "To update via CLI, run the addon script again and select Update, or use: bash <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/coolify.sh)",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
44
frontend/public/json/cronmaster.json
Normal file
44
frontend/public/json/cronmaster.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "CR*NMASTER",
|
||||
"slug": "cronmaster",
|
||||
"categories": [
|
||||
1
|
||||
],
|
||||
"date_created": "2026-02-22",
|
||||
"type": "addon",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://github.com/fccview/cronmaster",
|
||||
"website": "https://github.com/fccview/cronmaster",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/cr-nmaster.webp",
|
||||
"config_path": "/opt/cronmaster/.env",
|
||||
"description": "Self-hosted cron job scheduler with web UI, live logs, auth and prebuilt binaries provided upstream.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "tools/addon/cronmaster.sh",
|
||||
"resources": {
|
||||
"cpu": null,
|
||||
"ram": null,
|
||||
"hdd": null,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Credentials are saved to: /root/cronmaster.creds",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Update with: update_cronmaster",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
44
frontend/public/json/databasus.json
Normal file
44
frontend/public/json/databasus.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "Databasus",
|
||||
"slug": "databasus",
|
||||
"categories": [
|
||||
7
|
||||
],
|
||||
"date_created": "2026-02-17",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": "https://github.com/databasus/databasus",
|
||||
"website": "https://github.com/databasus/databasus",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/databasus.webp",
|
||||
"config_path": "/opt/databasus/.env",
|
||||
"description": "Free, open source and self-hosted solution for automated PostgreSQL backups. With multiple storage options, notifications, scheduling, and a beautiful web interface for managing database backups across multiple PostgreSQL instances.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/databasus.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": "admin@localhost",
|
||||
"password": "See /root/databasus.creds"
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Supports PostgreSQL versions 12-18 with cloud and self-hosted instances",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Features: Scheduled backups, multiple storage providers, notifications, encryption",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://dawarich.app/docs",
|
||||
"documentation": "https://dawarich.app/docs/intro",
|
||||
"website": "https://dawarich.app/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/dawarich.webp",
|
||||
"config_path": "/opt/dawarich/.env",
|
||||
|
||||
@@ -5,25 +5,25 @@
|
||||
3
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"type": "addon",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 5001,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/louislam/dockge",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/dockge.webp",
|
||||
"config_path": "",
|
||||
"config_path": "/opt/dockge/compose.yaml",
|
||||
"description": "Dockge is a fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/dockge.sh",
|
||||
"script": "tools/addon/dockge.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 18,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"cpu": null,
|
||||
"ram": null,
|
||||
"hdd": null,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -33,12 +33,12 @@
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Options to add Immich and/or Home Assistant",
|
||||
"text": "This is an addon script intended to be used on top of an existing Docker container.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
|
||||
"type": "warning"
|
||||
"text": "To update, run the addon script again and select Update, or use: bash <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/dockge.sh)",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,48 +1,52 @@
|
||||
{
|
||||
"name": "Dokploy",
|
||||
"slug": "dokploy",
|
||||
"categories": [
|
||||
3
|
||||
],
|
||||
"date_created": "2025-12-09",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": true,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://docs.dokploy.com/",
|
||||
"config_path": "/etc/dokploy",
|
||||
"website": "https://dokploy.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/dokploy.png",
|
||||
"description": "Dokploy is a free, self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases. Built with Docker and Traefik, it offers features like automatic SSL, Docker Compose support, database backups, and a real-time monitoring dashboard.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/dokploy.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
"name": "Dokploy",
|
||||
"slug": "dokploy",
|
||||
"categories": [
|
||||
3
|
||||
],
|
||||
"date_created": "2025-12-09",
|
||||
"type": "addon",
|
||||
"updateable": true,
|
||||
"privileged": true,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://docs.dokploy.com/",
|
||||
"website": "https://dokploy.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/dokploy.png",
|
||||
"config_path": "/etc/dokploy",
|
||||
"description": "Dokploy is a free, self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases. Built with Docker and Traefik, it offers features like automatic SSL, Docker Compose support, database backups, and a real-time monitoring dashboard.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "tools/addon/dokploy.sh",
|
||||
"resources": {
|
||||
"cpu": null,
|
||||
"ram": null,
|
||||
"hdd": null,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "This is an addon script intended to be used on top of an existing Docker container.",
|
||||
"type": "info"
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Initial setup will be done via the web interface on first access.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Dokploy has built-in auto-updates via the web interface.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "This container uses Docker-in-Docker (nesting) for application deployments.",
|
||||
"type": "warning"
|
||||
}
|
||||
]
|
||||
{
|
||||
"text": "Initial setup will be done via the web interface on first access.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Dokploy has built-in auto-updates via the web interface.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "To update via CLI, run the addon script again and select Update, or use: bash <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/dokploy.sh)",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
44
frontend/public/json/frigate.json
Normal file
44
frontend/public/json/frigate.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "Frigate",
|
||||
"slug": "frigate",
|
||||
"categories": [
|
||||
15
|
||||
],
|
||||
"date_created": "2026-02-23",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"config_path": "/config/config.yml",
|
||||
"interface_port": 5000,
|
||||
"documentation": "https://docs.frigate.video/",
|
||||
"website": "https://frigate.video/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/frigate-light.webp",
|
||||
"description": "Frigate is a complete and local NVR (Network Video Recorder) with realtime AI object detection for CCTV cameras.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/frigate.sh",
|
||||
"resources": {
|
||||
"cpu": 4,
|
||||
"ram": 4096,
|
||||
"hdd": 20,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "SemanticSearch is not pre-installed due to high resource requirements (8+ cores, 16-24GB RAM, GPU recommended). Manual configuration required if needed.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "OpenVino detector may fail on older CPUs (pre-Haswell/AVX2). If you encounter 'Illegal instruction' errors, consider using alternative detectors.",
|
||||
"type": "warning"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
{
|
||||
"name": "Frigate",
|
||||
"slug": "frigate",
|
||||
"categories": [
|
||||
15
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": true,
|
||||
"interface_port": 5000,
|
||||
"documentation": "https://docs.frigate.video/",
|
||||
"website": "https://frigate.video/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/frigate.webp",
|
||||
"config_path": "",
|
||||
"description": "Frigate is an open source NVR built around real-time AI object detection. All processing is performed locally on your own hardware, and your camera feeds never leave your home.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/frigate.sh",
|
||||
"resources": {
|
||||
"cpu": 4,
|
||||
"ram": 4096,
|
||||
"hdd": 20,
|
||||
"os": "debian",
|
||||
"version": "11"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Discussions (explore more advanced methods): `https://github.com/tteck/Proxmox/discussions/2711`",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "go2rtc Interface port:`1984`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated": "2026-02-16T12:14:16Z",
|
||||
"generated": "2026-02-24T06:23:39Z",
|
||||
"versions": [
|
||||
{
|
||||
"slug": "2fauth",
|
||||
@@ -11,9 +11,9 @@
|
||||
{
|
||||
"slug": "adguard",
|
||||
"repo": "AdguardTeam/AdGuardHome",
|
||||
"version": "v0.107.71",
|
||||
"version": "v0.107.72",
|
||||
"pinned": false,
|
||||
"date": "2025-12-08T14:34:55Z"
|
||||
"date": "2026-02-19T15:37:49Z"
|
||||
},
|
||||
{
|
||||
"slug": "adguardhome-sync",
|
||||
@@ -25,9 +25,9 @@
|
||||
{
|
||||
"slug": "adventurelog",
|
||||
"repo": "seanmorley15/adventurelog",
|
||||
"version": "v0.11.0",
|
||||
"version": "v0.12.0",
|
||||
"pinned": false,
|
||||
"date": "2025-09-01T16:19:38Z"
|
||||
"date": "2026-02-23T14:06:45Z"
|
||||
},
|
||||
{
|
||||
"slug": "alpine-redlib",
|
||||
@@ -39,9 +39,9 @@
|
||||
{
|
||||
"slug": "ampache",
|
||||
"repo": "ampache/ampache",
|
||||
"version": "7.8.0",
|
||||
"version": "7.9.0",
|
||||
"pinned": false,
|
||||
"date": "2025-12-22T04:23:45Z"
|
||||
"date": "2026-02-19T07:01:25Z"
|
||||
},
|
||||
{
|
||||
"slug": "argus",
|
||||
@@ -88,9 +88,9 @@
|
||||
{
|
||||
"slug": "backrest",
|
||||
"repo": "garethgeorge/backrest",
|
||||
"version": "v1.11.2",
|
||||
"version": "v1.12.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-27T06:27:56Z"
|
||||
"date": "2026-02-22T06:49:49Z"
|
||||
},
|
||||
{
|
||||
"slug": "baikal",
|
||||
@@ -116,16 +116,16 @@
|
||||
{
|
||||
"slug": "bentopdf",
|
||||
"repo": "alam00000/bentopdf",
|
||||
"version": "v2.2.1",
|
||||
"version": "v2.3.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-14T16:33:47Z"
|
||||
"date": "2026-02-21T09:04:27Z"
|
||||
},
|
||||
{
|
||||
"slug": "beszel",
|
||||
"repo": "henrygd/beszel",
|
||||
"version": "v0.18.3",
|
||||
"version": "v0.18.4",
|
||||
"pinned": false,
|
||||
"date": "2026-02-01T19:02:42Z"
|
||||
"date": "2026-02-20T21:10:52Z"
|
||||
},
|
||||
{
|
||||
"slug": "bichon",
|
||||
@@ -151,16 +151,16 @@
|
||||
{
|
||||
"slug": "booklore",
|
||||
"repo": "booklore-app/BookLore",
|
||||
"version": "v1.18.5",
|
||||
"version": "v2.0.1",
|
||||
"pinned": false,
|
||||
"date": "2026-01-24T17:15:32Z"
|
||||
"date": "2026-02-24T04:15:33Z"
|
||||
},
|
||||
{
|
||||
"slug": "bookstack",
|
||||
"repo": "BookStackApp/BookStack",
|
||||
"version": "v25.12.3",
|
||||
"version": "v25.12.7",
|
||||
"pinned": false,
|
||||
"date": "2026-01-29T15:29:25Z"
|
||||
"date": "2026-02-19T23:36:55Z"
|
||||
},
|
||||
{
|
||||
"slug": "byparr",
|
||||
@@ -183,19 +183,26 @@
|
||||
"pinned": false,
|
||||
"date": "2025-07-29T16:39:18Z"
|
||||
},
|
||||
{
|
||||
"slug": "calibre-web",
|
||||
"repo": "janeczku/calibre-web",
|
||||
"version": "0.6.26",
|
||||
"pinned": false,
|
||||
"date": "2026-02-06T21:17:44Z"
|
||||
},
|
||||
{
|
||||
"slug": "checkmate",
|
||||
"repo": "bluewave-labs/Checkmate",
|
||||
"version": "v3.3",
|
||||
"version": "v3.4.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-28T14:25:25Z"
|
||||
"date": "2026-02-20T21:08:55Z"
|
||||
},
|
||||
{
|
||||
"slug": "cleanuparr",
|
||||
"repo": "Cleanuparr/Cleanuparr",
|
||||
"version": "v2.6.2",
|
||||
"version": "v2.7.4",
|
||||
"pinned": false,
|
||||
"date": "2026-02-15T02:15:19Z"
|
||||
"date": "2026-02-23T18:41:16Z"
|
||||
},
|
||||
{
|
||||
"slug": "cloudreve",
|
||||
@@ -207,23 +214,23 @@
|
||||
{
|
||||
"slug": "comfyui",
|
||||
"repo": "comfyanonymous/ComfyUI",
|
||||
"version": "v0.13.0",
|
||||
"version": "v0.14.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-10T20:27:38Z"
|
||||
"date": "2026-02-18T06:12:02Z"
|
||||
},
|
||||
{
|
||||
"slug": "commafeed",
|
||||
"repo": "Athou/commafeed",
|
||||
"version": "6.2.0",
|
||||
"version": "7.0.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-09T19:44:58Z"
|
||||
"date": "2026-02-21T21:54:15Z"
|
||||
},
|
||||
{
|
||||
"slug": "configarr",
|
||||
"repo": "raydak-labs/configarr",
|
||||
"version": "v1.20.0",
|
||||
"version": "v1.23.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-10T21:25:47Z"
|
||||
"date": "2026-02-23T12:28:13Z"
|
||||
},
|
||||
{
|
||||
"slug": "convertx",
|
||||
@@ -242,9 +249,16 @@
|
||||
{
|
||||
"slug": "cronicle",
|
||||
"repo": "jhuckaby/Cronicle",
|
||||
"version": "v0.9.106",
|
||||
"version": "v0.9.107",
|
||||
"pinned": false,
|
||||
"date": "2026-02-11T17:11:46Z"
|
||||
"date": "2026-02-23T17:48:27Z"
|
||||
},
|
||||
{
|
||||
"slug": "cronmaster",
|
||||
"repo": "fccview/cronmaster",
|
||||
"version": "2.1.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-11T19:29:11Z"
|
||||
},
|
||||
{
|
||||
"slug": "cryptpad",
|
||||
@@ -253,6 +267,13 @@
|
||||
"pinned": false,
|
||||
"date": "2026-02-11T15:39:05Z"
|
||||
},
|
||||
{
|
||||
"slug": "databasus",
|
||||
"repo": "databasus/databasus",
|
||||
"version": "v3.16.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-22T21:10:12Z"
|
||||
},
|
||||
{
|
||||
"slug": "dawarich",
|
||||
"repo": "Freika/dawarich",
|
||||
@@ -263,9 +284,9 @@
|
||||
{
|
||||
"slug": "discopanel",
|
||||
"repo": "nickheyer/discopanel",
|
||||
"version": "v1.0.36",
|
||||
"version": "v1.0.37",
|
||||
"pinned": false,
|
||||
"date": "2026-02-09T21:15:44Z"
|
||||
"date": "2026-02-18T08:53:43Z"
|
||||
},
|
||||
{
|
||||
"slug": "dispatcharr",
|
||||
@@ -305,9 +326,9 @@
|
||||
{
|
||||
"slug": "drawio",
|
||||
"repo": "jgraph/drawio",
|
||||
"version": "v29.3.6",
|
||||
"version": "v29.5.2",
|
||||
"pinned": false,
|
||||
"date": "2026-01-28T18:25:02Z"
|
||||
"date": "2026-02-22T10:36:14Z"
|
||||
},
|
||||
{
|
||||
"slug": "duplicati",
|
||||
@@ -361,16 +382,16 @@
|
||||
{
|
||||
"slug": "firefly",
|
||||
"repo": "firefly-iii/firefly-iii",
|
||||
"version": "v6.4.22",
|
||||
"version": "v6.5.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-15T18:43:08Z"
|
||||
"date": "2026-02-23T19:19:00Z"
|
||||
},
|
||||
{
|
||||
"slug": "fladder",
|
||||
"repo": "DonutWare/Fladder",
|
||||
"version": "v0.9.0",
|
||||
"version": "v0.10.1",
|
||||
"pinned": false,
|
||||
"date": "2026-01-05T17:30:07Z"
|
||||
"date": "2026-02-21T12:45:53Z"
|
||||
},
|
||||
{
|
||||
"slug": "flaresolverr",
|
||||
@@ -400,19 +421,26 @@
|
||||
"pinned": false,
|
||||
"date": "2026-01-25T18:20:14Z"
|
||||
},
|
||||
{
|
||||
"slug": "frigate",
|
||||
"repo": "blakeblackshear/frigate",
|
||||
"version": "v0.16.4",
|
||||
"pinned": true,
|
||||
"date": "2026-01-29T00:42:14Z"
|
||||
},
|
||||
{
|
||||
"slug": "gatus",
|
||||
"repo": "TwiN/gatus",
|
||||
"version": "v5.34.0",
|
||||
"version": "v5.35.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-03T03:12:12Z"
|
||||
"date": "2026-02-20T20:58:03Z"
|
||||
},
|
||||
{
|
||||
"slug": "ghostfolio",
|
||||
"repo": "ghostfolio/ghostfolio",
|
||||
"version": "2.239.0",
|
||||
"version": "2.243.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-15T09:51:16Z"
|
||||
"date": "2026-02-23T19:31:36Z"
|
||||
},
|
||||
{
|
||||
"slug": "gitea",
|
||||
@@ -424,9 +452,9 @@
|
||||
{
|
||||
"slug": "gitea-mirror",
|
||||
"repo": "RayLabsHQ/gitea-mirror",
|
||||
"version": "v3.9.2",
|
||||
"version": "v3.9.4",
|
||||
"pinned": false,
|
||||
"date": "2025-11-08T05:36:48Z"
|
||||
"date": "2026-02-24T06:17:56Z"
|
||||
},
|
||||
{
|
||||
"slug": "glance",
|
||||
@@ -456,6 +484,13 @@
|
||||
"pinned": false,
|
||||
"date": "2026-02-13T15:22:31Z"
|
||||
},
|
||||
{
|
||||
"slug": "gramps-web",
|
||||
"repo": "gramps-project/gramps-web-api",
|
||||
"version": "v3.7.1.1",
|
||||
"pinned": false,
|
||||
"date": "2026-01-30T09:15:46Z"
|
||||
},
|
||||
{
|
||||
"slug": "grist",
|
||||
"repo": "gristlabs/grist-core",
|
||||
@@ -515,9 +550,9 @@
|
||||
{
|
||||
"slug": "homarr",
|
||||
"repo": "homarr-labs/homarr",
|
||||
"version": "v1.53.1",
|
||||
"version": "v1.53.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-13T19:47:11Z"
|
||||
"date": "2026-02-20T19:41:55Z"
|
||||
},
|
||||
{
|
||||
"slug": "homebox",
|
||||
@@ -547,19 +582,12 @@
|
||||
"pinned": false,
|
||||
"date": "2025-12-23T14:53:51Z"
|
||||
},
|
||||
{
|
||||
"slug": "huntarr",
|
||||
"repo": "plexguide/Huntarr.io",
|
||||
"version": "9.2.4.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-12T22:17:47Z"
|
||||
},
|
||||
{
|
||||
"slug": "immich-public-proxy",
|
||||
"repo": "alangrainger/immich-public-proxy",
|
||||
"version": "v1.15.2",
|
||||
"version": "v1.15.3",
|
||||
"pinned": false,
|
||||
"date": "2026-02-16T08:54:59Z"
|
||||
"date": "2026-02-16T22:54:27Z"
|
||||
},
|
||||
{
|
||||
"slug": "inspircd",
|
||||
@@ -578,16 +606,16 @@
|
||||
{
|
||||
"slug": "invoiceninja",
|
||||
"repo": "invoiceninja/invoiceninja",
|
||||
"version": "v5.12.60",
|
||||
"version": "v5.12.65",
|
||||
"pinned": false,
|
||||
"date": "2026-02-15T00:11:31Z"
|
||||
"date": "2026-02-21T01:03:52Z"
|
||||
},
|
||||
{
|
||||
"slug": "jackett",
|
||||
"repo": "Jackett/Jackett",
|
||||
"version": "v0.24.1127",
|
||||
"version": "v0.24.1193",
|
||||
"pinned": false,
|
||||
"date": "2026-02-16T08:43:41Z"
|
||||
"date": "2026-02-24T05:58:04Z"
|
||||
},
|
||||
{
|
||||
"slug": "jellystat",
|
||||
@@ -634,9 +662,9 @@
|
||||
{
|
||||
"slug": "keycloak",
|
||||
"repo": "keycloak/keycloak",
|
||||
"version": "26.5.3",
|
||||
"version": "26.5.4",
|
||||
"pinned": false,
|
||||
"date": "2026-02-10T07:30:08Z"
|
||||
"date": "2026-02-20T09:19:45Z"
|
||||
},
|
||||
{
|
||||
"slug": "kimai",
|
||||
@@ -697,16 +725,16 @@
|
||||
{
|
||||
"slug": "leantime",
|
||||
"repo": "Leantime/leantime",
|
||||
"version": "v3.6.2",
|
||||
"version": "v3.7.1",
|
||||
"pinned": false,
|
||||
"date": "2026-01-29T16:37:00Z"
|
||||
"date": "2026-02-22T01:25:16Z"
|
||||
},
|
||||
{
|
||||
"slug": "librenms",
|
||||
"repo": "librenms/librenms",
|
||||
"version": "26.1.1",
|
||||
"version": "26.2.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-12T23:26:02Z"
|
||||
"date": "2026-02-16T12:15:13Z"
|
||||
},
|
||||
{
|
||||
"slug": "librespeed-rust",
|
||||
@@ -718,9 +746,9 @@
|
||||
{
|
||||
"slug": "libretranslate",
|
||||
"repo": "LibreTranslate/LibreTranslate",
|
||||
"version": "v1.9.0",
|
||||
"version": "v1.9.3",
|
||||
"pinned": false,
|
||||
"date": "2026-02-10T19:05:48Z"
|
||||
"date": "2026-02-21T19:08:33Z"
|
||||
},
|
||||
{
|
||||
"slug": "lidarr",
|
||||
@@ -739,9 +767,9 @@
|
||||
{
|
||||
"slug": "linkstack",
|
||||
"repo": "linkstackorg/linkstack",
|
||||
"version": "v4.8.5",
|
||||
"version": "v4.8.6",
|
||||
"pinned": false,
|
||||
"date": "2026-01-26T18:46:52Z"
|
||||
"date": "2026-02-17T16:53:47Z"
|
||||
},
|
||||
{
|
||||
"slug": "linkwarden",
|
||||
@@ -781,9 +809,9 @@
|
||||
{
|
||||
"slug": "mail-archiver",
|
||||
"repo": "s1t5/mail-archiver",
|
||||
"version": "2602.1",
|
||||
"version": "2602.3",
|
||||
"pinned": false,
|
||||
"date": "2026-02-11T06:23:11Z"
|
||||
"date": "2026-02-22T20:24:18Z"
|
||||
},
|
||||
{
|
||||
"slug": "managemydamnlife",
|
||||
@@ -802,9 +830,9 @@
|
||||
{
|
||||
"slug": "mealie",
|
||||
"repo": "mealie-recipes/mealie",
|
||||
"version": "v3.10.2",
|
||||
"version": "v3.11.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-04T23:32:32Z"
|
||||
"date": "2026-02-17T04:13:35Z"
|
||||
},
|
||||
{
|
||||
"slug": "mediamanager",
|
||||
@@ -816,9 +844,9 @@
|
||||
{
|
||||
"slug": "mediamtx",
|
||||
"repo": "bluenviron/mediamtx",
|
||||
"version": "v1.16.1",
|
||||
"version": "v1.16.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-07T18:58:24Z"
|
||||
"date": "2026-02-22T17:31:41Z"
|
||||
},
|
||||
{
|
||||
"slug": "meilisearch",
|
||||
@@ -830,16 +858,16 @@
|
||||
{
|
||||
"slug": "memos",
|
||||
"repo": "usememos/memos",
|
||||
"version": "v0.25.3",
|
||||
"pinned": true,
|
||||
"date": "2025-11-25T15:40:41Z"
|
||||
"version": "v0.26.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T13:28:34Z"
|
||||
},
|
||||
{
|
||||
"slug": "metube",
|
||||
"repo": "alexta69/metube",
|
||||
"version": "2026.02.14",
|
||||
"version": "2026.02.22",
|
||||
"pinned": false,
|
||||
"date": "2026-02-14T07:49:11Z"
|
||||
"date": "2026-02-22T00:58:45Z"
|
||||
},
|
||||
{
|
||||
"slug": "miniflux",
|
||||
@@ -886,9 +914,9 @@
|
||||
{
|
||||
"slug": "netbox",
|
||||
"repo": "netbox-community/netbox",
|
||||
"version": "v4.5.2",
|
||||
"version": "v4.5.3",
|
||||
"pinned": false,
|
||||
"date": "2026-02-03T13:54:26Z"
|
||||
"date": "2026-02-17T15:39:18Z"
|
||||
},
|
||||
{
|
||||
"slug": "nextcloud-exporter",
|
||||
@@ -956,9 +984,9 @@
|
||||
{
|
||||
"slug": "opencloud",
|
||||
"repo": "opencloud-eu/opencloud",
|
||||
"version": "v5.0.2",
|
||||
"version": "v5.1.0",
|
||||
"pinned": true,
|
||||
"date": "2026-02-05T16:29:01Z"
|
||||
"date": "2026-02-16T15:04:28Z"
|
||||
},
|
||||
{
|
||||
"slug": "opengist",
|
||||
@@ -970,9 +998,9 @@
|
||||
{
|
||||
"slug": "ots",
|
||||
"repo": "Luzifer/ots",
|
||||
"version": "v1.21.1",
|
||||
"version": "v1.21.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-16T12:12:23Z"
|
||||
"date": "2026-02-20T16:20:03Z"
|
||||
},
|
||||
{
|
||||
"slug": "outline",
|
||||
@@ -1026,16 +1054,16 @@
|
||||
{
|
||||
"slug": "paperless-ngx",
|
||||
"repo": "paperless-ngx/paperless-ngx",
|
||||
"version": "v2.20.6",
|
||||
"version": "v2.20.8",
|
||||
"pinned": false,
|
||||
"date": "2026-01-31T07:30:27Z"
|
||||
"date": "2026-02-22T01:40:54Z"
|
||||
},
|
||||
{
|
||||
"slug": "patchmon",
|
||||
"repo": "PatchMon/PatchMon",
|
||||
"version": "v1.4.0",
|
||||
"version": "v1.4.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-13T10:39:03Z"
|
||||
"date": "2026-02-20T13:15:31Z"
|
||||
},
|
||||
{
|
||||
"slug": "paymenter",
|
||||
@@ -1054,9 +1082,9 @@
|
||||
{
|
||||
"slug": "pelican-panel",
|
||||
"repo": "pelican-dev/panel",
|
||||
"version": "v1.0.0-beta32",
|
||||
"version": "v1.0.0-beta33",
|
||||
"pinned": false,
|
||||
"date": "2026-02-09T22:15:44Z"
|
||||
"date": "2026-02-18T21:37:11Z"
|
||||
},
|
||||
{
|
||||
"slug": "pelican-wings",
|
||||
@@ -1089,9 +1117,9 @@
|
||||
{
|
||||
"slug": "planka",
|
||||
"repo": "plankanban/planka",
|
||||
"version": "v2.0.0",
|
||||
"version": "v2.0.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-11T13:50:10Z"
|
||||
"date": "2026-02-23T17:47:15Z"
|
||||
},
|
||||
{
|
||||
"slug": "plant-it",
|
||||
@@ -1103,16 +1131,16 @@
|
||||
{
|
||||
"slug": "pocketbase",
|
||||
"repo": "pocketbase/pocketbase",
|
||||
"version": "v0.36.3",
|
||||
"version": "v0.36.5",
|
||||
"pinned": false,
|
||||
"date": "2026-02-13T18:38:58Z"
|
||||
"date": "2026-02-21T11:45:32Z"
|
||||
},
|
||||
{
|
||||
"slug": "pocketid",
|
||||
"repo": "pocket-id/pocket-id",
|
||||
"version": "v2.2.0",
|
||||
"version": "v2.3.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-11T15:01:07Z"
|
||||
"date": "2026-02-23T19:50:48Z"
|
||||
},
|
||||
{
|
||||
"slug": "privatebin",
|
||||
@@ -1180,9 +1208,9 @@
|
||||
{
|
||||
"slug": "pulse",
|
||||
"repo": "rcourtman/Pulse",
|
||||
"version": "v5.1.9",
|
||||
"version": "v5.1.13",
|
||||
"pinned": false,
|
||||
"date": "2026-02-11T15:34:40Z"
|
||||
"date": "2026-02-22T12:40:41Z"
|
||||
},
|
||||
{
|
||||
"slug": "pve-scripts-local",
|
||||
@@ -1201,23 +1229,23 @@
|
||||
{
|
||||
"slug": "qbittorrent-exporter",
|
||||
"repo": "martabal/qbittorrent-exporter",
|
||||
"version": "v1.13.2",
|
||||
"version": "v1.13.3",
|
||||
"pinned": false,
|
||||
"date": "2025-12-13T22:59:03Z"
|
||||
"date": "2026-02-22T13:01:42Z"
|
||||
},
|
||||
{
|
||||
"slug": "qdrant",
|
||||
"repo": "qdrant/qdrant",
|
||||
"version": "v1.16.3",
|
||||
"version": "v1.17.0",
|
||||
"pinned": false,
|
||||
"date": "2025-12-19T17:45:42Z"
|
||||
"date": "2026-02-20T11:11:50Z"
|
||||
},
|
||||
{
|
||||
"slug": "qui",
|
||||
"repo": "autobrr/qui",
|
||||
"version": "v1.13.1",
|
||||
"version": "v1.14.1",
|
||||
"pinned": false,
|
||||
"date": "2026-01-28T20:12:50Z"
|
||||
"date": "2026-02-23T13:13:31Z"
|
||||
},
|
||||
{
|
||||
"slug": "radarr",
|
||||
@@ -1236,16 +1264,16 @@
|
||||
{
|
||||
"slug": "rclone",
|
||||
"repo": "rclone/rclone",
|
||||
"version": "v1.73.0",
|
||||
"version": "v1.73.1",
|
||||
"pinned": false,
|
||||
"date": "2026-01-30T22:12:03Z"
|
||||
"date": "2026-02-17T18:27:21Z"
|
||||
},
|
||||
{
|
||||
"slug": "rdtclient",
|
||||
"repo": "rogerfar/rdt-client",
|
||||
"version": "v2.0.120",
|
||||
"version": "v2.0.124",
|
||||
"pinned": false,
|
||||
"date": "2026-02-12T02:53:51Z"
|
||||
"date": "2026-02-24T03:18:03Z"
|
||||
},
|
||||
{
|
||||
"slug": "reactive-resume",
|
||||
@@ -1257,9 +1285,9 @@
|
||||
{
|
||||
"slug": "recyclarr",
|
||||
"repo": "recyclarr/recyclarr",
|
||||
"version": "v7.5.2",
|
||||
"version": "v8.2.1",
|
||||
"pinned": false,
|
||||
"date": "2025-11-30T22:08:46Z"
|
||||
"date": "2026-02-22T19:19:49Z"
|
||||
},
|
||||
{
|
||||
"slug": "reitti",
|
||||
@@ -1306,9 +1334,9 @@
|
||||
{
|
||||
"slug": "scanopy",
|
||||
"repo": "scanopy/scanopy",
|
||||
"version": "v0.14.4",
|
||||
"version": "v0.14.7",
|
||||
"pinned": false,
|
||||
"date": "2026-02-10T03:57:28Z"
|
||||
"date": "2026-02-23T01:36:44Z"
|
||||
},
|
||||
{
|
||||
"slug": "scraparr",
|
||||
@@ -1317,6 +1345,13 @@
|
||||
"pinned": false,
|
||||
"date": "2026-02-12T14:20:56Z"
|
||||
},
|
||||
{
|
||||
"slug": "seaweedfs",
|
||||
"repo": "seaweedfs/seaweedfs",
|
||||
"version": "4.13",
|
||||
"pinned": false,
|
||||
"date": "2026-02-17T01:09:45Z"
|
||||
},
|
||||
{
|
||||
"slug": "seelf",
|
||||
"repo": "YuukanOO/seelf",
|
||||
@@ -1334,9 +1369,9 @@
|
||||
{
|
||||
"slug": "semaphore",
|
||||
"repo": "semaphoreui/semaphore",
|
||||
"version": "v2.17.2",
|
||||
"version": "v2.17.12",
|
||||
"pinned": false,
|
||||
"date": "2026-02-16T10:27:40Z"
|
||||
"date": "2026-02-20T09:16:50Z"
|
||||
},
|
||||
{
|
||||
"slug": "shelfmark",
|
||||
@@ -1348,9 +1383,9 @@
|
||||
{
|
||||
"slug": "signoz",
|
||||
"repo": "SigNoz/signoz-otel-collector",
|
||||
"version": "v0.142.0",
|
||||
"version": "v0.142.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-06T11:40:30Z"
|
||||
"date": "2026-02-21T18:04:07Z"
|
||||
},
|
||||
{
|
||||
"slug": "silverbullet",
|
||||
@@ -1362,23 +1397,23 @@
|
||||
{
|
||||
"slug": "slskd",
|
||||
"repo": "slskd/slskd",
|
||||
"version": "0.24.3",
|
||||
"version": "0.24.4",
|
||||
"pinned": false,
|
||||
"date": "2026-01-15T14:40:15Z"
|
||||
"date": "2026-02-16T16:50:17Z"
|
||||
},
|
||||
{
|
||||
"slug": "snipeit",
|
||||
"repo": "grokability/snipe-it",
|
||||
"version": "v8.3.7",
|
||||
"version": "v8.4.0",
|
||||
"pinned": false,
|
||||
"date": "2025-12-12T09:13:40Z"
|
||||
"date": "2026-02-23T20:59:43Z"
|
||||
},
|
||||
{
|
||||
"slug": "snowshare",
|
||||
"repo": "TuroYT/snowshare",
|
||||
"version": "v1.3.5",
|
||||
"version": "v1.3.7",
|
||||
"pinned": false,
|
||||
"date": "2026-02-11T10:24:51Z"
|
||||
"date": "2026-02-23T15:51:39Z"
|
||||
},
|
||||
{
|
||||
"slug": "sonarr",
|
||||
@@ -1387,12 +1422,19 @@
|
||||
"pinned": false,
|
||||
"date": "2025-11-05T01:56:48Z"
|
||||
},
|
||||
{
|
||||
"slug": "sonobarr",
|
||||
"repo": "Dodelidoo-Labs/sonobarr",
|
||||
"version": "0.11.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-21T19:07:21Z"
|
||||
},
|
||||
{
|
||||
"slug": "speedtest-tracker",
|
||||
"repo": "alexjustesen/speedtest-tracker",
|
||||
"version": "v1.13.9",
|
||||
"version": "v1.13.10",
|
||||
"pinned": false,
|
||||
"date": "2026-02-08T21:48:49Z"
|
||||
"date": "2026-02-20T03:14:47Z"
|
||||
},
|
||||
{
|
||||
"slug": "spoolman",
|
||||
@@ -1411,9 +1453,9 @@
|
||||
{
|
||||
"slug": "stirling-pdf",
|
||||
"repo": "Stirling-Tools/Stirling-PDF",
|
||||
"version": "v2.4.6",
|
||||
"version": "v2.5.3",
|
||||
"pinned": false,
|
||||
"date": "2026-02-12T00:01:19Z"
|
||||
"date": "2026-02-23T23:23:39Z"
|
||||
},
|
||||
{
|
||||
"slug": "streamlink-webui",
|
||||
@@ -1429,6 +1471,13 @@
|
||||
"pinned": false,
|
||||
"date": "2025-09-19T22:23:28Z"
|
||||
},
|
||||
{
|
||||
"slug": "sure",
|
||||
"repo": "we-promise/sure",
|
||||
"version": "chart-v0.6.8-alpha.13",
|
||||
"pinned": false,
|
||||
"date": "2026-02-20T11:15:15Z"
|
||||
},
|
||||
{
|
||||
"slug": "tandoor",
|
||||
"repo": "TandoorRecipes/recipes",
|
||||
@@ -1495,9 +1544,9 @@
|
||||
{
|
||||
"slug": "traccar",
|
||||
"repo": "traccar/traccar",
|
||||
"version": "v6.11.1",
|
||||
"version": "v6.12.1",
|
||||
"pinned": false,
|
||||
"date": "2025-12-07T19:19:08Z"
|
||||
"date": "2026-02-22T18:47:37Z"
|
||||
},
|
||||
{
|
||||
"slug": "tracearr",
|
||||
@@ -1516,9 +1565,9 @@
|
||||
{
|
||||
"slug": "traefik",
|
||||
"repo": "traefik/traefik",
|
||||
"version": "v3.6.8",
|
||||
"version": "v3.6.9",
|
||||
"pinned": false,
|
||||
"date": "2026-02-11T16:44:37Z"
|
||||
"date": "2026-02-23T17:21:17Z"
|
||||
},
|
||||
{
|
||||
"slug": "trilium",
|
||||
@@ -1530,9 +1579,9 @@
|
||||
{
|
||||
"slug": "trip",
|
||||
"repo": "itskovacs/TRIP",
|
||||
"version": "1.40.0",
|
||||
"version": "1.41.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-10T20:12:53Z"
|
||||
"date": "2026-02-23T17:57:31Z"
|
||||
},
|
||||
{
|
||||
"slug": "tududi",
|
||||
@@ -1544,9 +1593,9 @@
|
||||
{
|
||||
"slug": "tunarr",
|
||||
"repo": "chrisbenincasa/tunarr",
|
||||
"version": "v1.1.12",
|
||||
"version": "v1.1.16",
|
||||
"pinned": false,
|
||||
"date": "2026-02-03T20:19:00Z"
|
||||
"date": "2026-02-23T21:24:47Z"
|
||||
},
|
||||
{
|
||||
"slug": "uhf",
|
||||
@@ -1586,23 +1635,23 @@
|
||||
{
|
||||
"slug": "uptimekuma",
|
||||
"repo": "louislam/uptime-kuma",
|
||||
"version": "2.1.1",
|
||||
"version": "2.1.3",
|
||||
"pinned": false,
|
||||
"date": "2026-02-13T16:07:33Z"
|
||||
"date": "2026-02-19T05:37:30Z"
|
||||
},
|
||||
{
|
||||
"slug": "vaultwarden",
|
||||
"repo": "dani-garcia/vaultwarden",
|
||||
"version": "1.35.3",
|
||||
"version": "1.35.4",
|
||||
"pinned": false,
|
||||
"date": "2026-02-10T20:37:03Z"
|
||||
"date": "2026-02-23T21:43:25Z"
|
||||
},
|
||||
{
|
||||
"slug": "victoriametrics",
|
||||
"repo": "VictoriaMetrics/VictoriaMetrics",
|
||||
"version": "v1.135.0",
|
||||
"version": "v1.136.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-02T14:20:15Z"
|
||||
"date": "2026-02-16T13:17:50Z"
|
||||
},
|
||||
{
|
||||
"slug": "vikunja",
|
||||
@@ -1628,9 +1677,9 @@
|
||||
{
|
||||
"slug": "wanderer",
|
||||
"repo": "meilisearch/meilisearch",
|
||||
"version": "v1.35.0",
|
||||
"version": "v1.36.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-02T09:57:03Z"
|
||||
"date": "2026-02-23T08:13:32Z"
|
||||
},
|
||||
{
|
||||
"slug": "warracker",
|
||||
@@ -1691,16 +1740,16 @@
|
||||
{
|
||||
"slug": "wishlist",
|
||||
"repo": "cmintey/wishlist",
|
||||
"version": "v0.60.0",
|
||||
"version": "v0.60.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-10T04:05:26Z"
|
||||
"date": "2026-02-24T04:01:37Z"
|
||||
},
|
||||
{
|
||||
"slug": "wizarr",
|
||||
"repo": "wizarrrr/wizarr",
|
||||
"version": "v2025.12.0",
|
||||
"version": "v2026.2.0",
|
||||
"pinned": false,
|
||||
"date": "2025-12-09T14:30:23Z"
|
||||
"date": "2026-02-23T19:25:28Z"
|
||||
},
|
||||
{
|
||||
"slug": "writefreely",
|
||||
@@ -1719,9 +1768,9 @@
|
||||
{
|
||||
"slug": "yubal",
|
||||
"repo": "guillevc/yubal",
|
||||
"version": "v0.6.0",
|
||||
"version": "v0.6.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-15T17:47:56Z"
|
||||
"date": "2026-02-18T23:24:16Z"
|
||||
},
|
||||
{
|
||||
"slug": "zigbee2mqtt",
|
||||
@@ -1754,9 +1803,9 @@
|
||||
{
|
||||
"slug": "zwave-js-ui",
|
||||
"repo": "zwave-js/zwave-js-ui",
|
||||
"version": "v11.11.0",
|
||||
"version": "v11.12.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-03T13:13:05Z"
|
||||
"date": "2026-02-19T10:14:19Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
44
frontend/public/json/gramps-web.json
Normal file
44
frontend/public/json/gramps-web.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "Gramps Web",
|
||||
"slug": "gramps-web",
|
||||
"categories": [
|
||||
12
|
||||
],
|
||||
"date_created": "2026-02-22",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 5000,
|
||||
"documentation": "https://www.grampsweb.org/install_setup/setup/",
|
||||
"website": "https://www.grampsweb.org/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gramps.webp",
|
||||
"config_path": "/opt/gramps-web/config/config.cfg",
|
||||
"description": "Gramps Web is a collaborative genealogy platform for browsing, editing and sharing family trees through a modern web interface.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/gramps-web.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 20,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "On first access, create the owner account via the built-in onboarding wizard.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "The initial deployment compiles the frontend and can take several minutes.",
|
||||
"type": "warning"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"name": "Huntarr",
|
||||
"slug": "huntarr",
|
||||
"categories": [
|
||||
14
|
||||
],
|
||||
"date_created": "2025-06-18",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 9705,
|
||||
"documentation": "https://github.com/plexguide/Huntarr.io/wiki",
|
||||
"config_path": "/opt/huntarr",
|
||||
"website": "https://github.com/plexguide/Huntarr.io",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/huntarr.webp",
|
||||
"description": "Huntarr is a tool that automates the search for missing or low-quality media content in your collection. It works seamlessly with applications like Sonarr, Radarr, Lidarr, Readarr, and Whisparr, enhancing their functionality with continuous background scans to identify and update missed or outdated content. Through a user-friendly web interface accessible on port 9705, Huntarr provides real-time statistics, log views, and extensive configuration options. The software is especially useful for users who want to keep their media library up to date by automatically searching for missing episodes or higher-quality versions. Huntarr is well-suited for self-hosted environments and can easily run in LXC containers or Docker setups.",
|
||||
"disable": false,
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/huntarr.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
3
|
||||
],
|
||||
"date_created": "2025-01-01",
|
||||
"type": "ct",
|
||||
"type": "addon",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 9120,
|
||||
@@ -17,24 +17,13 @@
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/komodo.sh",
|
||||
"script": "tools/addon/komodo.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-komodo.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 10,
|
||||
"os": "alpine",
|
||||
"version": "3.23"
|
||||
"cpu": null,
|
||||
"ram": null,
|
||||
"hdd": null,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -44,7 +33,15 @@
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "For admin username and password type `cat ~/komodo.creds` inside LXC.",
|
||||
"text": "This is an addon script intended to be used on top of an existing Docker container.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "For admin username and password, run: cat ~/komodo.creds",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "To update, run the addon script again and select Update, or use: bash <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/komodo.sh)",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8000,
|
||||
"documentation": "https://maxdorninger.github.io/MediaManager/introduction.html",
|
||||
"documentation": "https://maxdorninger.github.io/MediaManager/latest/",
|
||||
"config_path": "/opt/mm/config/config.toml",
|
||||
"website": "https://github.com/maxdorninger/MediaManager",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/mediamanager.webp",
|
||||
|
||||
@@ -5,25 +5,25 @@
|
||||
2
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"type": "addon",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": "https://runtipi.io/docs/introduction",
|
||||
"website": "https://runtipi.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/runtipi.webp",
|
||||
"config_path": "opt/runtipi/state/settings.json",
|
||||
"config_path": "/opt/runtipi/state/settings.json",
|
||||
"description": "Runtipi lets you install all your favorite self-hosted apps without the hassle of configuring and managing each service. One-click installs and updates for more than 180 popular apps.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/runtipi.sh",
|
||||
"script": "tools/addon/runtipi.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"cpu": null,
|
||||
"ram": null,
|
||||
"hdd": null,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -32,9 +32,17 @@
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "This is an addon script intended to be used on top of an existing Docker container.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
"text": "To update via CLI, run the addon script again and select Update, or use: bash <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/runtipi.sh)",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2025-08-26",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8888,
|
||||
"documentation": "https://docs.searxng.org/",
|
||||
|
||||
48
frontend/public/json/seaweedfs.json
Normal file
48
frontend/public/json/seaweedfs.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "SeaweedFS",
|
||||
"slug": "seaweedfs",
|
||||
"categories": [
|
||||
11
|
||||
],
|
||||
"date_created": "2026-02-23",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 9333,
|
||||
"documentation": "https://github.com/seaweedfs/seaweedfs/wiki",
|
||||
"website": "https://seaweedfs.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/seaweedfs.webp",
|
||||
"config_path": "",
|
||||
"description": "SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lakes, with O(1) disk seek, S3 API, FUSE mount, WebDAV, and cloud tiering support.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/seaweedfs.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 16,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Master UI available at port 9333, Filer UI at port 8888, S3 API at port 8333.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Data is stored in /opt/seaweedfs-data.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "FUSE mounting requires fuse3 (pre-installed).",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
40
frontend/public/json/sonobarr.json
Normal file
40
frontend/public/json/sonobarr.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "Sonobarr",
|
||||
"slug": "sonobarr",
|
||||
"categories": [
|
||||
14
|
||||
],
|
||||
"date_created": "2026-02-23",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 5000,
|
||||
"documentation": "https://github.com/Dodelidoo-Labs/sonobarr",
|
||||
"config_path": "/etc/sonobarr/.env",
|
||||
"website": "https://github.com/Dodelidoo-Labs/sonobarr",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/sonobarr.webp",
|
||||
"description": "Sonobarr marries your existing Lidarr library with Last.fm’s discovery graph to surface artists you'll actually like. It runs as a Flask + Socket.IO application, ships with a polished Bootstrap UI, and includes admin tooling so folks can share a single instance safely.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/sonobarr.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 20,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Default generated admin password is in the env file (sonobarr_superadmin_password)",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
35
frontend/public/json/sparkyfitness.json
Normal file
35
frontend/public/json/sparkyfitness.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "SparkyFitness",
|
||||
"slug": "sparkyfitness",
|
||||
"categories": [
|
||||
9
|
||||
],
|
||||
"date_created": "2026-02-23",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": "https://codewithcj.github.io/SparkyFitness",
|
||||
"website": "https://github.com/CodeWithCJ/SparkyFitness",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/sparkyfitness.webp",
|
||||
"config_path": "/etc/sparkyfitness/.env",
|
||||
"description": "A self-hosted, privacy-first alternative to MyFitnessPal. Track nutrition, exercise, body metrics, and health data while keeping full control of your data.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/sparkyfitness.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
35
frontend/public/json/sure.json
Normal file
35
frontend/public/json/sure.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "Sure",
|
||||
"slug": "sure",
|
||||
"categories": [
|
||||
23
|
||||
],
|
||||
"date_created": "2026-02-20",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://github.com/we-promise/sure",
|
||||
"website": "https://sure.am",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/sure-finance.webp",
|
||||
"config_path": "/etc/sure/.env",
|
||||
"description": "The personal finance app for everyone. NOT affiliated with or endorsed by Maybe Finance Inc..",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/sure.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
40
frontend/public/json/truenas-vm.json
Normal file
40
frontend/public/json/truenas-vm.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "TrueNAS Community Edition",
|
||||
"slug": "truenas-vm",
|
||||
"categories": [
|
||||
2
|
||||
],
|
||||
"date_created": "2026-02-19",
|
||||
"type": "vm",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": "https://www.truenas.com/docs/",
|
||||
"website": "https://www.truenas.com/truenas-community-edition/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/truenas-core.webp",
|
||||
"config_path": "",
|
||||
"description": "TrueNAS Community Edition is the world's most deployed storage software. Free, flexible and build on OpenZFS with Docker.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "vm/truenas-vm.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 8192,
|
||||
"hdd": 16,
|
||||
"os": "Debian",
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Once the script finishes, proceed with the OS installation via the console. For more details, please refer to this discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/11344`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
#!/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://komo.do/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apk add --no-cache ca-certificates openssl
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Docker Repository"
|
||||
$STD apk add --no-cache docker docker-cli docker-compose openrc
|
||||
msg_ok "Setup Docker Repository"
|
||||
|
||||
msg_info "Enabling Docker Service"
|
||||
$STD rc-update add docker boot
|
||||
$STD service docker start
|
||||
msg_ok "Enabled Docker Service"
|
||||
|
||||
echo "${TAB3}Choose the database for Komodo installation:"
|
||||
echo "${TAB3}1) MongoDB (recommended)"
|
||||
echo "${TAB3}2) FerretDB"
|
||||
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
|
||||
DB_CHOICE=${DB_CHOICE:-1}
|
||||
|
||||
case $DB_CHOICE in
|
||||
1)
|
||||
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||
;;
|
||||
2)
|
||||
DB_COMPOSE_FILE="ferretdb.compose.yaml"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice. Defaulting to MongoDB."
|
||||
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||
;;
|
||||
esac
|
||||
|
||||
mkdir -p /opt/komodo
|
||||
cd /opt/komodo
|
||||
curl -fsSL "https://raw.githubusercontent.com/moghtech/komodo/main/compose/$DB_COMPOSE_FILE" -o "$(basename "$DB_COMPOSE_FILE")"
|
||||
|
||||
msg_info "Setup Komodo Environment"
|
||||
curl -fsSL "https://raw.githubusercontent.com/moghtech/komodo/main/compose/compose.env" -o "/opt/komodo/compose.env"
|
||||
DB_PASSWORD=$(openssl rand -base64 16 | tr -d '/+=')
|
||||
PASSKEY=$(openssl rand -base64 24 | tr -d '/+=')
|
||||
WEBHOOK_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
|
||||
JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
|
||||
|
||||
sed -i "s/^KOMODO_DB_USERNAME=.*/KOMODO_DB_USERNAME=komodo_admin/" /opt/komodo/compose.env
|
||||
sed -i "s/^KOMODO_DB_PASSWORD=.*/KOMODO_DB_PASSWORD=${DB_PASSWORD}/" /opt/komodo/compose.env
|
||||
sed -i "s/^KOMODO_PASSKEY=.*/KOMODO_PASSKEY=${PASSKEY}/" /opt/komodo/compose.env
|
||||
sed -i "s/^KOMODO_WEBHOOK_SECRET=.*/KOMODO_WEBHOOK_SECRET=${WEBHOOK_SECRET}/" /opt/komodo/compose.env
|
||||
sed -i "s/^KOMODO_JWT_SECRET=.*/KOMODO_JWT_SECRET=${JWT_SECRET}/" /opt/komodo/compose.env
|
||||
msg_ok "Setup Komodo Environment"
|
||||
|
||||
msg_info "Initialize Komodo"
|
||||
$STD docker compose -p komodo -f "/opt/komodo/$DB_COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||
msg_ok "Initialized Komodo"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apk cache clean
|
||||
msg_ok "Cleaned"
|
||||
@@ -36,7 +36,7 @@ $STD apt install -y \
|
||||
libavformat-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
JAVA_VERSION="11" setup_java
|
||||
JAVA_VERSION="17" setup_java
|
||||
setup_mariadb
|
||||
MARIADB_DB_NAME="guacamole_db" MARIADB_DB_USER="guacamole_user" setup_mariadb_db
|
||||
|
||||
|
||||
@@ -13,11 +13,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
JAVA_VERSION="21" setup_java
|
||||
JAVA_VERSION="25" setup_java
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
setup_mariadb
|
||||
setup_yq
|
||||
@@ -30,6 +26,11 @@ $STD npm install --force
|
||||
$STD npm run build --configuration=production
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Embedding Frontend into Backend"
|
||||
mkdir -p /opt/booklore/booklore-api/src/main/resources/static
|
||||
cp -r /opt/booklore/booklore-ui/dist/booklore/browser/* /opt/booklore/booklore-api/src/main/resources/static/
|
||||
msg_ok "Embedded Frontend into Backend"
|
||||
|
||||
msg_info "Creating Environment"
|
||||
mkdir -p /opt/booklore_storage/{data,books,bookdrop}
|
||||
cat <<EOF >/opt/booklore_storage/.env
|
||||
@@ -41,6 +42,7 @@ DATABASE_PASSWORD=${MARIADB_DB_PASS}
|
||||
# App Configuration (Spring Boot mapping from app.* properties)
|
||||
APP_PATH_CONFIG=/opt/booklore_storage/data
|
||||
APP_BOOKDROP_FOLDER=/opt/booklore_storage/bookdrop
|
||||
SERVER_PORT=6060
|
||||
EOF
|
||||
msg_ok "Created Environment"
|
||||
|
||||
@@ -48,7 +50,7 @@ msg_info "Building Backend"
|
||||
cd /opt/booklore/booklore-api
|
||||
APP_VERSION=$(get_latest_github_release "booklore-app/BookLore")
|
||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||
$STD ./gradlew clean build --no-daemon
|
||||
$STD ./gradlew clean build -x test --no-daemon
|
||||
mkdir -p /opt/booklore/dist
|
||||
JAR_PATH=$(find /opt/booklore/booklore-api/build/libs -maxdepth 1 -type f -name "booklore-api-*.jar" ! -name "*plain*" | head -n1)
|
||||
if [[ -z "$JAR_PATH" ]]; then
|
||||
@@ -58,16 +60,6 @@ fi
|
||||
cp "$JAR_PATH" /opt/booklore/dist/app.jar
|
||||
msg_ok "Built Backend"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
rm -rf /usr/share/nginx/html
|
||||
ln -s /opt/booklore/booklore-ui/dist/booklore/browser /usr/share/nginx/html
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
cp /opt/booklore/nginx.conf /etc/nginx/nginx.conf
|
||||
sed -i 's/listen \${BOOKLORE_PORT};/listen 6060;/' /etc/nginx/nginx.conf
|
||||
sed -i 's/listen \[::\]:${BOOKLORE_PORT};/listen [::]:6060;/' /etc/nginx/nginx.conf
|
||||
systemctl restart nginx
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/booklore.service
|
||||
[Unit]
|
||||
@@ -78,7 +70,7 @@ After=network.target mariadb.service
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/booklore/dist
|
||||
ExecStart=/usr/bin/java -jar /opt/booklore/dist/app.jar
|
||||
ExecStart=/usr/bin/java -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -jar /opt/booklore/dist/app.jar
|
||||
EnvironmentFile=/opt/booklore_storage/.env
|
||||
SuccessExitStatus=143
|
||||
TimeoutStopSec=10
|
||||
|
||||
68
install/calibre-web-install.sh
Normal file
68
install/calibre-web-install.sh
Normal file
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: mikolaj92
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/janeczku/calibre-web
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
python3 \
|
||||
python3-dev \
|
||||
libldap2-dev \
|
||||
libsasl2-dev \
|
||||
libssl-dev \
|
||||
imagemagick \
|
||||
libpango-1.0-0 \
|
||||
libharfbuzz0b \
|
||||
libpangoft2-1.0-0 \
|
||||
fonts-liberation
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Calibre (for eBook conversion)"
|
||||
$STD apt install -y calibre
|
||||
msg_ok "Installed Calibre"
|
||||
|
||||
fetch_and_deploy_gh_release "Calibre-Web" "janeczku/calibre-web" "prebuild" "latest" "/opt/calibre-web" "calibre-web*.tar.gz"
|
||||
setup_uv
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
cd /opt/calibre-web
|
||||
$STD uv venv
|
||||
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel
|
||||
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir -r requirements.txt
|
||||
msg_ok "Installed Python Dependencies"
|
||||
|
||||
msg_info "Creating Service"
|
||||
mkdir -p /opt/calibre-web/data
|
||||
cat <<EOF >/etc/systemd/system/calibre-web.service
|
||||
[Unit]
|
||||
Description=Calibre-Web Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/calibre-web
|
||||
ExecStart=/opt/calibre-web/.venv/bin/python /opt/calibre-web/cps.py
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now calibre-web
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://coolify.io/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
git \
|
||||
openssl
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://coolify.io/)."
|
||||
msg_warn "The following code is NOT maintained or audited by our repository."
|
||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
|
||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://cdn.coollabs.io/coolify/install.sh"
|
||||
echo
|
||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
|
||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||
msg_error "Aborted by user. No changes have been made."
|
||||
exit 10
|
||||
fi
|
||||
|
||||
msg_info "Installing Coolify (Patience - this installs Docker and pulls containers)"
|
||||
$STD bash <(curl -fsSL https://cdn.coollabs.io/coolify/install.sh)
|
||||
msg_ok "Installed Coolify"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -13,7 +13,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
msg_info "Setup Cross-Seed"
|
||||
$STD npm install cross-seed@latest -g
|
||||
|
||||
171
install/databasus-install.sh
Normal file
171
install/databasus-install.sh
Normal file
@@ -0,0 +1,171 @@
|
||||
#!/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/databasus/databasus
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
nginx \
|
||||
valkey
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PG_VERSION="17" setup_postgresql
|
||||
setup_go
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "databasus" "databasus/databasus" "tarball" "latest" "/opt/databasus"
|
||||
|
||||
msg_info "Building Databasus (Patience)"
|
||||
cd /opt/databasus/frontend
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
cd /opt/databasus/backend
|
||||
$STD go mod tidy
|
||||
$STD go mod download
|
||||
$STD go install github.com/swaggo/swag/cmd/swag@latest
|
||||
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
||||
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o databasus ./cmd/main.go
|
||||
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
||||
mkdir -p /databasus-data/{pgdata,temp,backups,data,logs}
|
||||
mkdir -p /opt/databasus/ui/build
|
||||
mkdir -p /opt/databasus/migrations
|
||||
cp -r /opt/databasus/frontend/dist/* /opt/databasus/ui/build/
|
||||
cp -r /opt/databasus/backend/migrations/* /opt/databasus/migrations/
|
||||
chown -R postgres:postgres /databasus-data
|
||||
msg_ok "Built Databasus"
|
||||
|
||||
msg_info "Configuring Databasus"
|
||||
JWT_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
# Create PostgreSQL version symlinks for compatibility
|
||||
for v in 12 13 14 15 16 18; do
|
||||
ln -sf /usr/lib/postgresql/17 /usr/lib/postgresql/$v
|
||||
done
|
||||
# Install goose for migrations
|
||||
$STD go install github.com/pressly/goose/v3/cmd/goose@latest
|
||||
ln -sf /root/go/bin/goose /usr/local/bin/goose
|
||||
cat <<EOF >/opt/databasus/.env
|
||||
# Environment
|
||||
ENV_MODE=production
|
||||
|
||||
# Server
|
||||
SERVER_PORT=4005
|
||||
SERVER_HOST=0.0.0.0
|
||||
|
||||
# Database
|
||||
DATABASE_DSN=host=localhost user=postgres password=postgres dbname=databasus port=5432 sslmode=disable
|
||||
DATABASE_URL=postgres://postgres:postgres@localhost:5432/databasus?sslmode=disable
|
||||
|
||||
# Migrations
|
||||
GOOSE_DRIVER=postgres
|
||||
GOOSE_DBSTRING=postgres://postgres:postgres@localhost:5432/databasus?sslmode=disable
|
||||
GOOSE_MIGRATION_DIR=/opt/databasus/migrations
|
||||
|
||||
# Valkey (Redis-compatible cache)
|
||||
VALKEY_HOST=localhost
|
||||
VALKEY_PORT=6379
|
||||
|
||||
# Security
|
||||
JWT_SECRET=${JWT_SECRET}
|
||||
ENCRYPTION_KEY=${ENCRYPTION_KEY}
|
||||
|
||||
# Paths
|
||||
DATA_DIR=/databasus-data/data
|
||||
BACKUP_DIR=/databasus-data/backups
|
||||
LOG_DIR=/databasus-data/logs
|
||||
EOF
|
||||
chown postgres:postgres /opt/databasus/.env
|
||||
chmod 600 /opt/databasus/.env
|
||||
msg_ok "Configured Databasus"
|
||||
|
||||
msg_info "Configuring Valkey"
|
||||
cat <<EOF >/etc/valkey/valkey.conf
|
||||
port 6379
|
||||
bind 127.0.0.1
|
||||
protected-mode yes
|
||||
save ""
|
||||
maxmemory 256mb
|
||||
maxmemory-policy allkeys-lru
|
||||
EOF
|
||||
systemctl enable -q --now valkey-server
|
||||
systemctl restart valkey-server
|
||||
msg_ok "Configured Valkey"
|
||||
|
||||
msg_info "Creating Database"
|
||||
# Configure PostgreSQL to allow local password auth for databasus
|
||||
PG_HBA="/etc/postgresql/17/main/pg_hba.conf"
|
||||
if ! grep -q "databasus" "$PG_HBA"; then
|
||||
sed -i '/^local\s*all\s*all/i local databasus postgres trust' "$PG_HBA"
|
||||
sed -i '/^host\s*all\s*all\s*127/i host databasus postgres 127.0.0.1/32 trust' "$PG_HBA"
|
||||
systemctl reload postgresql
|
||||
fi
|
||||
$STD sudo -u postgres psql -c "CREATE DATABASE databasus;" 2>/dev/null || true
|
||||
$STD sudo -u postgres psql -c "ALTER USER postgres WITH SUPERUSER CREATEROLE CREATEDB;" 2>/dev/null || true
|
||||
msg_ok "Created Database"
|
||||
|
||||
msg_info "Creating Databasus Service"
|
||||
cat <<EOF >/etc/systemd/system/databasus.service
|
||||
[Unit]
|
||||
Description=Databasus - Database Backup Management
|
||||
After=network.target postgresql.service valkey.service
|
||||
Requires=postgresql.service valkey.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/databasus
|
||||
EnvironmentFile=/opt/databasus/.env
|
||||
ExecStart=/opt/databasus/databasus
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
$STD systemctl daemon-reload
|
||||
$STD systemctl enable -q --now databasus
|
||||
msg_ok "Created Databasus Service"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
cat <<EOF >/etc/nginx/sites-available/databasus
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:4005;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade \$http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host \$host;
|
||||
proxy_set_header X-Real-IP \$remote_addr;
|
||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto \$scheme;
|
||||
proxy_cache_bypass \$http_upgrade;
|
||||
proxy_buffering off;
|
||||
proxy_read_timeout 86400s;
|
||||
proxy_send_timeout 86400s;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/databasus /etc/nginx/sites-enabled/databasus
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD nginx -t
|
||||
$STD systemctl enable -q --now nginx
|
||||
$STD systemctl reload nginx
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,64 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://dockge.kuma.pet/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
DOCKER_LATEST_VERSION=$(get_latest_github_release "moby/moby")
|
||||
|
||||
msg_info "Installing Docker $DOCKER_LATEST_VERSION (with Compose, Buildx)"
|
||||
DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
|
||||
mkdir -p $(dirname $DOCKER_CONFIG_PATH)
|
||||
echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json
|
||||
$STD sh <(curl -fsSL https://get.docker.com)
|
||||
msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
|
||||
|
||||
msg_info "Installing Dockge"
|
||||
mkdir -p /opt/{dockge,stacks}
|
||||
curl -fsSL "https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml" -o "/opt/dockge/compose.yaml"
|
||||
cd /opt/dockge
|
||||
$STD docker compose up -d
|
||||
msg_ok "Installed Dockge"
|
||||
|
||||
read -r -p "${TAB3}Would you like to add Immich? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Adding Immich compose.yaml"
|
||||
mkdir -p /opt/stacks/immich
|
||||
curl -fsSL "https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml" -o "/opt/stacks/immich/compose.yaml"
|
||||
curl -fsSL "https://github.com/immich-app/immich/releases/latest/download/example.env" -o "/opt/stacks/immich/.env"
|
||||
msg_ok "Added Immich compose.yaml"
|
||||
fi
|
||||
|
||||
read -r -p "${TAB3}Would you like to add Home Assistant? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Adding Home Assistant compose.yaml"
|
||||
mkdir -p /opt/stacks/homeassistant
|
||||
cat <<EOF >/opt/stacks/homeassistant/compose.yaml
|
||||
version: "3"
|
||||
services:
|
||||
homeassistant:
|
||||
container_name: homeassistant
|
||||
image: ghcr.io/home-assistant/home-assistant:stable
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /run/dbus:/run/dbus:ro
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
network_mode: host
|
||||
EOF
|
||||
msg_ok "Added Home Assistant compose.yaml"
|
||||
fi
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,40 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://dokploy.com/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
git \
|
||||
openssl \
|
||||
redis
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://dokploy.com/)."
|
||||
msg_warn "The following code is NOT maintained or audited by our repository."
|
||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
|
||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://dokploy.com/install.sh"
|
||||
echo
|
||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
|
||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||
msg_error "Aborted by user. No changes have been made."
|
||||
exit 10
|
||||
fi
|
||||
|
||||
msg_info "Installing Dokploy (Patience - this installs Docker and pulls containers)"
|
||||
$STD bash <(curl -sSL https://dokploy.com/install.sh)
|
||||
msg_ok "Installed Dokploy"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -21,6 +21,8 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
echo "${TAB3}It is important to choose the name for your server before you install Synapse, because it cannot be changed later."
|
||||
echo "${TAB3}The server name determines the “domain” part of user-ids for users on your server: these will all be of the format @user:my.domain.name. It also determines how other matrix servers will reach yours for federation."
|
||||
read -p "${TAB3}Please enter the name for your server: " servername
|
||||
|
||||
msg_info "Installing Element Synapse"
|
||||
|
||||
@@ -13,7 +13,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
PHP_VERSION="8.4" PHP_APACHE="YES" setup_php
|
||||
PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
|
||||
setup_composer
|
||||
setup_mariadb
|
||||
MARIADB_DB_NAME="firefly" MARIADB_DB_USER="firefly" setup_mariadb_db
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# Co-Author: remz1337
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Authors: MickLesk (CanbiZ)
|
||||
# Co-Authors: remz1337
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://frigate.video/
|
||||
|
||||
@@ -14,60 +14,224 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies (Patience)"
|
||||
$STD apt-get install -y {git,ca-certificates,automake,build-essential,xz-utils,libtool,ccache,pkg-config,libgtk-3-dev,libavcodec-dev,libavformat-dev,libswscale-dev,libv4l-dev,libxvidcore-dev,libx264-dev,libjpeg-dev,libpng-dev,libtiff-dev,gfortran,openexr,libatlas-base-dev,libssl-dev,libtbb2,libtbb-dev,libdc1394-22-dev,libopenexr-dev,libgstreamer-plugins-base1.0-dev,libgstreamer1.0-dev,gcc,gfortran,libopenblas-dev,liblapack-dev,libusb-1.0-0-dev,jq,moreutils}
|
||||
source /etc/os-release
|
||||
if [[ "$VERSION_ID" != "12" ]]; then
|
||||
msg_error "Frigate requires Debian 12 (Bookworm) due to Python 3.11 dependencies"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
msg_info "Converting APT sources to DEB822 format"
|
||||
if [ -f /etc/apt/sources.list ]; then
|
||||
cat >/etc/apt/sources.list.d/debian.sources <<'EOF'
|
||||
Types: deb
|
||||
URIs: http://deb.debian.org/debian
|
||||
Suites: bookworm
|
||||
Components: main contrib
|
||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||
|
||||
Types: deb
|
||||
URIs: http://deb.debian.org/debian
|
||||
Suites: bookworm-updates
|
||||
Components: main contrib
|
||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||
|
||||
Types: deb
|
||||
URIs: http://security.debian.org
|
||||
Suites: bookworm-security
|
||||
Components: main contrib
|
||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||
EOF
|
||||
mv /etc/apt/sources.list /etc/apt/sources.list.bak
|
||||
$STD apt update
|
||||
fi
|
||||
msg_ok "Converted APT sources"
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
xz-utils \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip \
|
||||
gcc \
|
||||
pkg-config \
|
||||
libhdf5-dev \
|
||||
build-essential \
|
||||
automake \
|
||||
libtool \
|
||||
ccache \
|
||||
libusb-1.0-0-dev \
|
||||
apt-transport-https \
|
||||
cmake \
|
||||
git \
|
||||
libgtk-3-dev \
|
||||
libavcodec-dev \
|
||||
libavformat-dev \
|
||||
libswscale-dev \
|
||||
libv4l-dev \
|
||||
libxvidcore-dev \
|
||||
libx264-dev \
|
||||
libjpeg-dev \
|
||||
libpng-dev \
|
||||
libtiff-dev \
|
||||
gfortran \
|
||||
openexr \
|
||||
libssl-dev \
|
||||
libtbbmalloc2 \
|
||||
libtbb-dev \
|
||||
libdc1394-dev \
|
||||
libopenexr-dev \
|
||||
libgstreamer-plugins-base1.0-dev \
|
||||
libgstreamer1.0-dev \
|
||||
tclsh \
|
||||
libopenblas-dev \
|
||||
liblapack-dev \
|
||||
make \
|
||||
moreutils
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y {python3,python3-dev,python3-setuptools,python3-distutils,python3-pip}
|
||||
$STD pip install --upgrade pip
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
msg_info "Installing go2rtc"
|
||||
mkdir -p /usr/local/go2rtc/bin
|
||||
cd /usr/local/go2rtc/bin
|
||||
curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o "go2rtc"
|
||||
chmod +x go2rtc
|
||||
$STD ln -svf /usr/local/go2rtc/bin/go2rtc /usr/local/bin/go2rtc
|
||||
msg_ok "Installed go2rtc"
|
||||
|
||||
setup_hwaccel
|
||||
|
||||
msg_info "Installing Frigate v0.14.1 (Perseverance)"
|
||||
cd ~
|
||||
mkdir -p /opt/frigate/models
|
||||
curl -fsSL "https://github.com/blakeblackshear/frigate/archive/refs/tags/v0.14.1.tar.gz" -o "frigate.tar.gz"
|
||||
tar -xzf frigate.tar.gz -C /opt/frigate --strip-components 1
|
||||
rm -rf frigate.tar.gz
|
||||
cd /opt/frigate
|
||||
$STD pip3 wheel --wheel-dir=/wheels -r /opt/frigate/docker/main/requirements-wheels.txt
|
||||
cp -a /opt/frigate/docker/main/rootfs/. /
|
||||
export TARGETARCH="amd64"
|
||||
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections
|
||||
$STD /opt/frigate/docker/main/install_deps.sh
|
||||
$STD apt update
|
||||
$STD ln -svf /usr/lib/btbn-ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
|
||||
$STD ln -svf /usr/lib/btbn-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe
|
||||
export CCACHE_DIR=/root/.ccache
|
||||
export CCACHE_MAXSIZE=2G
|
||||
export APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
|
||||
export PIP_BREAK_SYSTEM_PACKAGES=1
|
||||
export NVIDIA_VISIBLE_DEVICES=all
|
||||
export NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
|
||||
export TOKENIZERS_PARALLELISM=true
|
||||
export TRANSFORMERS_NO_ADVISORY_WARNINGS=1
|
||||
export OPENCV_FFMPEG_LOGLEVEL=8
|
||||
export HAILORT_LOGGER_PATH=NONE
|
||||
|
||||
fetch_and_deploy_gh_release "frigate" "blakeblackshear/frigate" "tarball" "v0.16.4" "/opt/frigate"
|
||||
|
||||
msg_info "Building Nginx"
|
||||
$STD bash /opt/frigate/docker/main/build_nginx.sh
|
||||
sed -e '/s6-notifyoncheck/ s/^#*/#/' -i /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run
|
||||
ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
|
||||
msg_ok "Built Nginx"
|
||||
|
||||
msg_info "Building SQLite Extensions"
|
||||
$STD bash /opt/frigate/docker/main/build_sqlite_vec.sh
|
||||
msg_ok "Built SQLite Extensions"
|
||||
|
||||
fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/usr/local/go2rtc/bin" "go2rtc_linux_amd64"
|
||||
|
||||
msg_info "Installing Tempio"
|
||||
sed -i 's|/rootfs/usr/local|/usr/local|g' /opt/frigate/docker/main/install_tempio.sh
|
||||
$STD bash /opt/frigate/docker/main/install_tempio.sh
|
||||
ln -sf /usr/local/tempio/bin/tempio /usr/local/bin/tempio
|
||||
msg_ok "Installed Tempio"
|
||||
|
||||
msg_info "Building libUSB"
|
||||
fetch_and_deploy_gh_release "libusb" "libusb/libusb" "tarball" "v1.0.26" "/opt/libusb"
|
||||
cd /opt/libusb
|
||||
$STD ./bootstrap.sh
|
||||
$STD ./configure CC='ccache gcc' CCX='ccache g++' --disable-udev --enable-shared
|
||||
$STD make -j "$(nproc)"
|
||||
cd /opt/libusb/libusb
|
||||
mkdir -p /usr/local/lib /usr/local/include/libusb-1.0 /usr/local/lib/pkgconfig
|
||||
$STD bash ../libtool --mode=install /usr/bin/install -c libusb-1.0.la /usr/local/lib
|
||||
install -c -m 644 libusb.h /usr/local/include/libusb-1.0
|
||||
cd /opt/libusb/
|
||||
install -c -m 644 libusb-1.0.pc /usr/local/lib/pkgconfig
|
||||
ldconfig
|
||||
msg_ok "Built libUSB"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
$STD pip3 install -r /opt/frigate/docker/main/requirements.txt
|
||||
msg_ok "Installed Python Dependencies"
|
||||
|
||||
msg_info "Building Python Wheels (Patience)"
|
||||
mkdir -p /wheels
|
||||
sed -i 's|^SQLITE3_VERSION=.*|SQLITE3_VERSION="version-3.46.0"|g' /opt/frigate/docker/main/build_pysqlite3.sh
|
||||
$STD bash /opt/frigate/docker/main/build_pysqlite3.sh
|
||||
for i in {1..3}; do
|
||||
$STD pip3 wheel --wheel-dir=/wheels -r /opt/frigate/docker/main/requirements-wheels.txt --default-timeout=300 --retries=3 && break
|
||||
[[ $i -lt 3 ]] && sleep 10
|
||||
done
|
||||
msg_ok "Built Python Wheels"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
msg_info "Downloading Inference Models"
|
||||
mkdir -p /models /openvino-model
|
||||
wget -q -O /edgetpu_model.tflite https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite
|
||||
wget -q -O /models/cpu_model.tflite https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess.tflite
|
||||
cp /opt/frigate/labelmap.txt /labelmap.txt
|
||||
msg_ok "Downloaded Inference Models"
|
||||
|
||||
msg_info "Downloading Audio Model"
|
||||
wget -q -O /tmp/yamnet.tar.gz https://www.kaggle.com/api/v1/models/google/yamnet/tfLite/classification-tflite/1/download
|
||||
$STD tar xzf /tmp/yamnet.tar.gz -C /
|
||||
mv /1.tflite /cpu_audio_model.tflite
|
||||
cp /opt/frigate/audio-labelmap.txt /audio-labelmap.txt
|
||||
rm -f /tmp/yamnet.tar.gz
|
||||
msg_ok "Downloaded Audio Model"
|
||||
|
||||
msg_info "Installing HailoRT Runtime"
|
||||
$STD bash /opt/frigate/docker/main/install_hailort.sh
|
||||
cp -a /opt/frigate/docker/main/rootfs/. /
|
||||
sed -i '/^.*unset DEBIAN_FRONTEND.*$/d' /opt/frigate/docker/main/install_deps.sh
|
||||
echo "libedgetpu1-max libedgetpu/accepted-eula boolean true" | debconf-set-selections
|
||||
echo "libedgetpu1-max libedgetpu/install-confirm-max boolean true" | debconf-set-selections
|
||||
# Allow Frigate's Intel media packages to overwrite files from system GPU driver packages
|
||||
echo 'force-overwrite' >/etc/dpkg/dpkg.cfg.d/force-overwrite
|
||||
$STD bash /opt/frigate/docker/main/install_deps.sh
|
||||
rm -f /etc/dpkg/dpkg.cfg.d/force-overwrite
|
||||
$STD pip3 install -U /wheels/*.whl
|
||||
ldconfig
|
||||
msg_ok "Installed HailoRT Runtime"
|
||||
|
||||
msg_info "Installing OpenVino"
|
||||
$STD pip3 install -r /opt/frigate/docker/main/requirements-ov.txt
|
||||
msg_ok "Installed OpenVino"
|
||||
|
||||
msg_info "Building OpenVino Model"
|
||||
cd /models
|
||||
wget -q http://download.tensorflow.org/models/object_detection/ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz
|
||||
$STD tar -zxf ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz --no-same-owner
|
||||
if $STD python3 /opt/frigate/docker/main/build_ov_model.py; then
|
||||
cp /models/ssdlite_mobilenet_v2.xml /openvino-model/
|
||||
cp /models/ssdlite_mobilenet_v2.bin /openvino-model/
|
||||
wget -q https://github.com/openvinotoolkit/open_model_zoo/raw/master/data/dataset_classes/coco_91cl_bkgr.txt -O /openvino-model/coco_91cl_bkgr.txt
|
||||
sed -i 's/truck/car/g' /openvino-model/coco_91cl_bkgr.txt
|
||||
msg_ok "Built OpenVino Model"
|
||||
else
|
||||
msg_warn "OpenVino build failed (CPU may not support required instructions). Frigate will use CPU model."
|
||||
fi
|
||||
|
||||
msg_info "Building Frigate Application (Patience)"
|
||||
cd /opt/frigate
|
||||
$STD pip3 install -r /opt/frigate/docker/main/requirements-dev.txt
|
||||
$STD /opt/frigate/.devcontainer/initialize.sh
|
||||
$STD bash /opt/frigate/.devcontainer/initialize.sh
|
||||
$STD make version
|
||||
cd /opt/frigate/web
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
cp -r /opt/frigate/web/dist/* /opt/frigate/web/
|
||||
cp -r /opt/frigate/config/. /config
|
||||
sed -i '/^s6-svc -O \.$/s/^/#/' /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/frigate/run
|
||||
msg_ok "Built Frigate Application"
|
||||
|
||||
msg_info "Configuring Frigate"
|
||||
mkdir -p /config /media/frigate
|
||||
cp -r /opt/frigate/config/. /config
|
||||
|
||||
curl -fsSL "https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4" -o "/media/frigate/person-bicycle-car-detection.mp4"
|
||||
|
||||
echo "tmpfs /tmp/cache tmpfs defaults 0 0" >>/etc/fstab
|
||||
|
||||
cat <<EOF >/etc/frigate.env
|
||||
DEFAULT_FFMPEG_VERSION="7.0"
|
||||
INCLUDED_FFMPEG_VERSIONS="7.0:5.0"
|
||||
EOF
|
||||
|
||||
cat <<EOF >/config/config.yml
|
||||
mqtt:
|
||||
enabled: false
|
||||
cameras:
|
||||
test:
|
||||
ffmpeg:
|
||||
#hwaccel_args: preset-vaapi
|
||||
inputs:
|
||||
- path: /media/frigate/person-bicycle-car-detection.mp4
|
||||
input_args: -re -stream_loop -1 -fflags +genpts
|
||||
@@ -78,96 +242,42 @@ cameras:
|
||||
height: 1080
|
||||
width: 1920
|
||||
fps: 5
|
||||
auth:
|
||||
enabled: false
|
||||
detect:
|
||||
enabled: false
|
||||
EOF
|
||||
ln -sf /config/config.yml /opt/frigate/config/config.yml
|
||||
if [[ "$CTTYPE" == "0" ]]; then
|
||||
sed -i -e 's/^kvm:x:104:$/render:x:104:root,frigate/' -e 's/^render:x:105:root$/kvm:x:105:/' /etc/group
|
||||
else
|
||||
sed -i -e 's/^kvm:x:104:$/render:x:104:frigate/' -e 's/^render:x:105:$/kvm:x:105:/' /etc/group
|
||||
fi
|
||||
echo "tmpfs /tmp/cache tmpfs defaults 0 0" >>/etc/fstab
|
||||
msg_ok "Installed Frigate"
|
||||
|
||||
if grep -q -o -m1 -E 'avx[^ ]*' /proc/cpuinfo; then
|
||||
msg_ok "AVX Support Detected"
|
||||
msg_info "Installing Openvino Object Detection Model (Resilience)"
|
||||
$STD pip install -r /opt/frigate/docker/main/requirements-ov.txt
|
||||
cd /opt/frigate/models
|
||||
export ENABLE_ANALYTICS=NO
|
||||
$STD /usr/local/bin/omz_downloader --name ssdlite_mobilenet_v2 --num_attempts 2
|
||||
$STD /usr/local/bin/omz_converter --name ssdlite_mobilenet_v2 --precision FP16 --mo /usr/local/bin/mo
|
||||
cd /
|
||||
cp -r /opt/frigate/models/public/ssdlite_mobilenet_v2 openvino-model
|
||||
curl -fsSL "https://github.com/openvinotoolkit/open_model_zoo/raw/master/data/dataset_classes/coco_91cl_bkgr.txt" -o "openvino-model/coco_91cl_bkgr.txt"
|
||||
sed -i 's/truck/car/g' openvino-model/coco_91cl_bkgr.txt
|
||||
if grep -q -o -m1 -E 'avx[^ ]*|sse4_2' /proc/cpuinfo; then
|
||||
cat <<EOF >>/config/config.yml
|
||||
ffmpeg:
|
||||
hwaccel_args: auto
|
||||
detectors:
|
||||
ov:
|
||||
detector01:
|
||||
type: openvino
|
||||
device: CPU
|
||||
model:
|
||||
path: /openvino-model/FP16/ssdlite_mobilenet_v2.xml
|
||||
model:
|
||||
width: 300
|
||||
height: 300
|
||||
input_tensor: nhwc
|
||||
input_pixel_format: bgr
|
||||
path: /openvino-model/ssdlite_mobilenet_v2.xml
|
||||
labelmap_path: /openvino-model/coco_91cl_bkgr.txt
|
||||
EOF
|
||||
msg_ok "Installed Openvino Object Detection Model"
|
||||
else
|
||||
cat <<EOF >>/config/config.yml
|
||||
ffmpeg:
|
||||
hwaccel_args: auto
|
||||
model:
|
||||
path: /cpu_model.tflite
|
||||
EOF
|
||||
fi
|
||||
|
||||
msg_info "Installing Coral Object Detection Model (Patience)"
|
||||
cd /opt/frigate
|
||||
export CCACHE_DIR=/root/.ccache
|
||||
export CCACHE_MAXSIZE=2G
|
||||
curl -fsSL "https://github.com/libusb/libusb/archive/v1.0.26.zip" -o "v1.0.26.zip"
|
||||
$STD unzip v1.0.26.zip
|
||||
rm v1.0.26.zip
|
||||
cd libusb-1.0.26
|
||||
$STD ./bootstrap.sh
|
||||
$STD ./configure --disable-udev --enable-shared
|
||||
$STD make -j $(nproc --all)
|
||||
cd /opt/frigate/libusb-1.0.26/libusb
|
||||
mkdir -p /usr/local/lib
|
||||
$STD /bin/bash ../libtool --mode=install /usr/bin/install -c libusb-1.0.la '/usr/local/lib'
|
||||
mkdir -p /usr/local/include/libusb-1.0
|
||||
$STD /usr/bin/install -c -m 644 libusb.h '/usr/local/include/libusb-1.0'
|
||||
ldconfig
|
||||
cd /
|
||||
curl -fsSL "https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite" -o "edgetpu_model.tflite"
|
||||
curl -fsSL "https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess.tflite" -o "cpu_model.tflite"
|
||||
cp /opt/frigate/labelmap.txt /labelmap.txt
|
||||
curl -fsSL "https://www.kaggle.com/api/v1/models/google/yamnet/tfLite/classification-tflite/1/download" -o "yamnet-tflite-classification-tflite-v1.tar.gz"
|
||||
tar xzf yamnet-tflite-classification-tflite-v1.tar.gz
|
||||
rm -rf yamnet-tflite-classification-tflite-v1.tar.gz
|
||||
mv 1.tflite cpu_audio_model.tflite
|
||||
cp /opt/frigate/audio-labelmap.txt /audio-labelmap.txt
|
||||
mkdir -p /media/frigate
|
||||
curl -fsSL "https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4" -o "/media/frigate/person-bicycle-car-detection.mp4"
|
||||
msg_ok "Installed Coral Object Detection Model"
|
||||
|
||||
msg_info "Building Nginx with Custom Modules"
|
||||
$STD /opt/frigate/docker/main/build_nginx.sh
|
||||
sed -e '/s6-notifyoncheck/ s/^#*/#/' -i /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run
|
||||
ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
|
||||
msg_ok "Built Nginx"
|
||||
|
||||
msg_info "Installing Tempio"
|
||||
sed -i 's|/rootfs/usr/local|/usr/local|g' /opt/frigate/docker/main/install_tempio.sh
|
||||
$STD /opt/frigate/docker/main/install_tempio.sh
|
||||
ln -sf /usr/local/tempio/bin/tempio /usr/local/bin/tempio
|
||||
msg_ok "Installed Tempio"
|
||||
msg_ok "Configured Frigate"
|
||||
|
||||
msg_info "Creating Services"
|
||||
cat <<EOF >/etc/systemd/system/create_directories.service
|
||||
[Unit]
|
||||
Description=Create necessary directories for logs
|
||||
Description=Create necessary directories for Frigate logs
|
||||
Before=frigate.service go2rtc.service nginx.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
@@ -176,13 +286,11 @@ ExecStart=/bin/bash -c '/bin/mkdir -p /dev/shm/logs/{frigate,go2rtc,nginx} && /b
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now create_directories
|
||||
sleep 3
|
||||
|
||||
cat <<EOF >/etc/systemd/system/go2rtc.service
|
||||
[Unit]
|
||||
Description=go2rtc service
|
||||
After=network.target
|
||||
After=create_directories.service
|
||||
Description=go2rtc streaming service
|
||||
After=network.target create_directories.service
|
||||
StartLimitIntervalSec=0
|
||||
|
||||
[Service]
|
||||
@@ -190,7 +298,8 @@ Type=simple
|
||||
Restart=always
|
||||
RestartSec=1
|
||||
User=root
|
||||
ExecStartPre=+rm /dev/shm/logs/go2rtc/current
|
||||
EnvironmentFile=/etc/frigate.env
|
||||
ExecStartPre=+rm -f /dev/shm/logs/go2rtc/current
|
||||
ExecStart=/bin/bash -c "bash /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/go2rtc/run 2> >(/usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S ' >&2) | /usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S '"
|
||||
StandardOutput=file:/dev/shm/logs/go2rtc/current
|
||||
StandardError=file:/dev/shm/logs/go2rtc/current
|
||||
@@ -198,13 +307,11 @@ StandardError=file:/dev/shm/logs/go2rtc/current
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now go2rtc
|
||||
sleep 3
|
||||
|
||||
cat <<EOF >/etc/systemd/system/frigate.service
|
||||
[Unit]
|
||||
Description=Frigate service
|
||||
After=go2rtc.service
|
||||
After=create_directories.service
|
||||
Description=Frigate NVR service
|
||||
After=go2rtc.service create_directories.service
|
||||
StartLimitIntervalSec=0
|
||||
|
||||
[Service]
|
||||
@@ -212,8 +319,8 @@ Type=simple
|
||||
Restart=always
|
||||
RestartSec=1
|
||||
User=root
|
||||
# Environment=PLUS_API_KEY=
|
||||
ExecStartPre=+rm /dev/shm/logs/frigate/current
|
||||
EnvironmentFile=/etc/frigate.env
|
||||
ExecStartPre=+rm -f /dev/shm/logs/frigate/current
|
||||
ExecStart=/bin/bash -c "bash /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/frigate/run 2> >(/usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S ' >&2) | /usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S '"
|
||||
StandardOutput=file:/dev/shm/logs/frigate/current
|
||||
StandardError=file:/dev/shm/logs/frigate/current
|
||||
@@ -221,13 +328,11 @@ StandardError=file:/dev/shm/logs/frigate/current
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now frigate
|
||||
sleep 3
|
||||
|
||||
cat <<EOF >/etc/systemd/system/nginx.service
|
||||
[Unit]
|
||||
Description=Nginx service
|
||||
After=frigate.service
|
||||
After=create_directories.service
|
||||
Description=Nginx reverse proxy for Frigate
|
||||
After=frigate.service create_directories.service
|
||||
StartLimitIntervalSec=0
|
||||
|
||||
[Service]
|
||||
@@ -235,7 +340,7 @@ Type=simple
|
||||
Restart=always
|
||||
RestartSec=1
|
||||
User=root
|
||||
ExecStartPre=+rm /dev/shm/logs/nginx/current
|
||||
ExecStartPre=+rm -f /dev/shm/logs/nginx/current
|
||||
ExecStart=/bin/bash -c "bash /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run 2> >(/usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S ' >&2) | /usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S '"
|
||||
StandardOutput=file:/dev/shm/logs/nginx/current
|
||||
StandardError=file:/dev/shm/logs/nginx/current
|
||||
@@ -243,8 +348,20 @@ StandardError=file:/dev/shm/logs/nginx/current
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable -q --now create_directories
|
||||
sleep 2
|
||||
systemctl enable -q --now go2rtc
|
||||
sleep 2
|
||||
systemctl enable -q --now frigate
|
||||
sleep 2
|
||||
systemctl enable -q --now nginx
|
||||
msg_ok "Configured Services"
|
||||
msg_ok "Created Services"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/libusb /wheels /models/*.tar.gz
|
||||
msg_ok "Cleaned Up"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
118
install/gramps-web-install.sh
Normal file
118
install/gramps-web-install.sh
Normal file
@@ -0,0 +1,118 @@
|
||||
#!/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://www.grampsweb.org/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
appstream \
|
||||
build-essential \
|
||||
ffmpeg \
|
||||
gettext \
|
||||
gobject-introspection \
|
||||
gir1.2-gexiv2-0.10 \
|
||||
gir1.2-gtk-3.0 \
|
||||
gir1.2-osmgpsmap-1.0 \
|
||||
gir1.2-pango-1.0 \
|
||||
git \
|
||||
graphviz \
|
||||
libcairo2-dev \
|
||||
libgirepository1.0-dev \
|
||||
libglib2.0-dev \
|
||||
libicu-dev \
|
||||
libopencv-dev \
|
||||
pkg-config \
|
||||
poppler-utils \
|
||||
python3-dev \
|
||||
tesseract-ocr
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "gramps-web-api" "gramps-project/gramps-web-api" "tarball" "latest" "/opt/gramps-web-api"
|
||||
fetch_and_deploy_gh_release "gramps-web" "gramps-project/gramps-web" "tarball" "latest" "/opt/gramps-web/frontend"
|
||||
|
||||
msg_info "Setting up Gramps Web"
|
||||
mkdir -p \
|
||||
/opt/gramps-web/config \
|
||||
/opt/gramps-web/data/cache/export \
|
||||
/opt/gramps-web/data/cache/persistent \
|
||||
/opt/gramps-web/data/cache/report \
|
||||
/opt/gramps-web/data/cache/request \
|
||||
/opt/gramps-web/data/cache/thumbnail \
|
||||
/opt/gramps-web/data/gramps/grampsdb \
|
||||
/opt/gramps-web/data/indexdir \
|
||||
/opt/gramps-web/data/media \
|
||||
/opt/gramps-web/data/users
|
||||
|
||||
SECRET_KEY="$(openssl rand -hex 32)"
|
||||
cat <<EOF >/opt/gramps-web/config/config.cfg
|
||||
TREE="Gramps Web"
|
||||
SECRET_KEY="${SECRET_KEY}"
|
||||
BASE_URL="http://${LOCAL_IP}:5000"
|
||||
USER_DB_URI="sqlite:////opt/gramps-web/data/users/users.sqlite"
|
||||
SEARCH_INDEX_DB_URI="sqlite:////opt/gramps-web/data/indexdir/search_index.db"
|
||||
MEDIA_BASE_DIR="/opt/gramps-web/data/media"
|
||||
STATIC_PATH="/opt/gramps-web/frontend/dist"
|
||||
THUMBNAIL_CACHE_CONFIG={"CACHE_TYPE":"FileSystemCache","CACHE_DIR":"/opt/gramps-web/data/cache/thumbnail","CACHE_THRESHOLD":1000,"CACHE_DEFAULT_TIMEOUT":0}
|
||||
REQUEST_CACHE_CONFIG={"CACHE_TYPE":"FileSystemCache","CACHE_DIR":"/opt/gramps-web/data/cache/request","CACHE_THRESHOLD":1000,"CACHE_DEFAULT_TIMEOUT":0}
|
||||
PERSISTENT_CACHE_CONFIG={"CACHE_TYPE":"FileSystemCache","CACHE_DIR":"/opt/gramps-web/data/cache/persistent","CACHE_THRESHOLD":0,"CACHE_DEFAULT_TIMEOUT":0}
|
||||
REPORT_DIR="/opt/gramps-web/data/cache/report"
|
||||
EXPORT_DIR="/opt/gramps-web/data/cache/export"
|
||||
EOF
|
||||
$STD uv venv -c -p python3.12 /opt/gramps-web/venv
|
||||
source /opt/gramps-web/venv/bin/activate
|
||||
$STD uv pip install --no-cache-dir --upgrade pip setuptools wheel
|
||||
$STD uv pip install --no-cache-dir gunicorn
|
||||
$STD uv pip install --no-cache-dir /opt/gramps-web-api
|
||||
cd /opt/gramps-web/frontend
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
$STD corepack enable
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
cd /opt/gramps-web-api
|
||||
GRAMPS_API_CONFIG=/opt/gramps-web/config/config.cfg \
|
||||
ALEMBIC_CONFIG=/opt/gramps-web-api/alembic.ini \
|
||||
GRAMPSHOME=/opt/gramps-web/data/gramps \
|
||||
GRAMPS_DATABASE_PATH=/opt/gramps-web/data/gramps/grampsdb \
|
||||
$STD /opt/gramps-web/venv/bin/python3 -m gramps_webapi user migrate
|
||||
msg_ok "Set up Gramps Web"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/gramps-web.service
|
||||
[Unit]
|
||||
Description=Gramps Web Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/gramps-web-api
|
||||
Environment=GRAMPS_API_CONFIG=/opt/gramps-web/config/config.cfg
|
||||
Environment=GRAMPSHOME=/opt/gramps-web/data/gramps
|
||||
Environment=GRAMPS_DATABASE_PATH=/opt/gramps-web/data/gramps/grampsdb
|
||||
Environment=PATH=/opt/gramps-web/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
ExecStart=/opt/gramps-web/venv/bin/gunicorn -w 2 -b 0.0.0.0:5000 gramps_webapi.wsgi:app --timeout 120 --limit-request-line 8190
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now gramps-web
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,41 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: BiluliB
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/plexguide/Huntarr.io
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io" "tarball"
|
||||
|
||||
msg_info "Configure Huntarr"
|
||||
$STD uv venv --clear /opt/huntarr/.venv
|
||||
$STD uv pip install --python /opt/huntarr/.venv/bin/python -r /opt/huntarr/requirements.txt
|
||||
msg_ok "Configured Huntrarr"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/huntarr.service
|
||||
[Unit]
|
||||
Description=Huntarr Service
|
||||
After=network.target
|
||||
[Service]
|
||||
WorkingDirectory=/opt/huntarr
|
||||
ExecStart=/opt/huntarr/.venv/bin/python /opt/huntarr/main.py
|
||||
Restart=always
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now huntarr
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -30,7 +30,7 @@ setup_meilisearch
|
||||
fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep" "tarball"
|
||||
cd /opt/karakeep
|
||||
MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)"
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
|
||||
|
||||
msg_info "Installing karakeep"
|
||||
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://komo.do/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setup Docker Repository"
|
||||
setup_deb822_repo \
|
||||
"docker" \
|
||||
"https://download.docker.com/linux/$(get_os_info id)/gpg" \
|
||||
"https://download.docker.com/linux/$(get_os_info id)" \
|
||||
"$(get_os_info codename)" \
|
||||
"stable" \
|
||||
"$(dpkg --print-architecture)"
|
||||
msg_ok "Setup Docker Repository"
|
||||
|
||||
msg_info "Installing Docker"
|
||||
$STD apt install -y \
|
||||
docker-ce \
|
||||
docker-ce-cli \
|
||||
containerd.io \
|
||||
docker-buildx-plugin \
|
||||
docker-compose-plugin
|
||||
msg_ok "Installed Docker"
|
||||
|
||||
echo "${TAB3}Choose the database for Komodo installation:"
|
||||
echo "${TAB3}1) MongoDB (recommended)"
|
||||
echo "${TAB3}2) FerretDB"
|
||||
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
|
||||
DB_CHOICE=${DB_CHOICE:-1}
|
||||
|
||||
case $DB_CHOICE in
|
||||
1)
|
||||
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||
;;
|
||||
2)
|
||||
DB_COMPOSE_FILE="ferretdb.compose.yaml"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice. Defaulting to MongoDB."
|
||||
DB_COMPOSE_FILE="mongo.compose.yaml"
|
||||
;;
|
||||
esac
|
||||
mkdir -p /opt/komodo
|
||||
cd /opt/komodo
|
||||
curl -fsSL "https://raw.githubusercontent.com/moghtech/komodo/main/compose/$DB_COMPOSE_FILE" -o "/opt/komodo/$DB_COMPOSE_FILE"
|
||||
|
||||
msg_info "Setup Komodo Environment"
|
||||
curl -fsSL "https://raw.githubusercontent.com/moghtech/komodo/main/compose/compose.env" -o "/opt/komodo/compose.env"
|
||||
DB_PASSWORD=$(openssl rand -base64 16 | tr -d '/+=')
|
||||
ADMIN_PASSWORD=$(openssl rand -base64 8 | tr -d '/+=')
|
||||
PASSKEY=$(openssl rand -base64 24 | tr -d '/+=')
|
||||
WEBHOOK_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
|
||||
JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
|
||||
|
||||
sed -i "s/^KOMODO_DB_USERNAME=.*/KOMODO_DB_USERNAME=komodo_admin/" /opt/komodo/compose.env
|
||||
sed -i "s/^KOMODO_DB_PASSWORD=.*/KOMODO_DB_PASSWORD=${DB_PASSWORD}/" /opt/komodo/compose.env
|
||||
sed -i "s/^KOMODO_INIT_ADMIN_PASSWORD=changeme/KOMODO_INIT_ADMIN_PASSWORD=${ADMIN_PASSWORD}/" /opt/komodo/compose.env
|
||||
sed -i "s/^KOMODO_PASSKEY=.*/KOMODO_PASSKEY=${PASSKEY}/" /opt/komodo/compose.env
|
||||
sed -i "s/^KOMODO_WEBHOOK_SECRET=.*/KOMODO_WEBHOOK_SECRET=${WEBHOOK_SECRET}/" /opt/komodo/compose.env
|
||||
sed -i "s/^KOMODO_JWT_SECRET=.*/KOMODO_JWT_SECRET=${JWT_SECRET}/" /opt/komodo/compose.env
|
||||
{
|
||||
echo "Komodo Credentials"
|
||||
echo ""
|
||||
echo "Admin User : admin"
|
||||
echo "Admin Password: $ADMIN_PASSWORD"
|
||||
} >>~/komodo.creds
|
||||
msg_ok "Setup Komodo Environment"
|
||||
|
||||
msg_info "Initialize Komodo"
|
||||
$STD docker compose -p komodo -f /opt/komodo/$DB_COMPOSE_FILE --env-file /opt/komodo/compose.env up -d
|
||||
msg_ok "Initialized Komodo"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -35,10 +35,12 @@ $STD apt install -y \
|
||||
python3-redis \
|
||||
python3-setuptools \
|
||||
python3-systemd \
|
||||
python3-pip
|
||||
python3-pip \
|
||||
python3-psutil \
|
||||
python3-command-runner
|
||||
msg_ok "Installed Python Dependencies"
|
||||
|
||||
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="snmp" setup_php
|
||||
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="cli,snmp,gmp" setup_php
|
||||
setup_mariadb
|
||||
setup_composer
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
@@ -78,7 +80,7 @@ sed -i "s/listen = \/run\/php\/php8.4-fpm.sock/listen = \/run\/php-fpm-librenms.
|
||||
msg_ok "Configured PHP-FPM"
|
||||
|
||||
msg_info "Configure Nginx"
|
||||
cat >/etc/nginx/sites-enabled/librenms <<'EOF'
|
||||
cat <<EOF >/etc/nginx/sites-enabled/librenms
|
||||
server {
|
||||
listen 80;
|
||||
server_name ${LOCAL_IP};
|
||||
@@ -89,7 +91,7 @@ server {
|
||||
gzip on;
|
||||
gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
try_files \$uri \$uri/ /index.php?\$query_string;
|
||||
}
|
||||
location ~ [^/]\.php(/|$) {
|
||||
fastcgi_pass unix:/run/php-fpm-librenms.sock;
|
||||
|
||||
@@ -26,7 +26,7 @@ msg_ok "Installed Dependencies"
|
||||
setup_imagemagick
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PG_DB_NAME="manyfold" PG_DB_USER="manyfold" setup_postgresql_db
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "manyfold" "manyfold3d/manyfold" "tarball" "latest" "/opt/manyfold/app"
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ update_os
|
||||
|
||||
msg_info "Install Matterbridge"
|
||||
mkdir -p /root/Matterbridge
|
||||
NODE_VERSION="22" NODE_MODULE="matterbridge" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="matterbridge" setup_nodejs
|
||||
msg_ok "Installed Matterbridge"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -14,7 +14,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "v0.25.3" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "latest" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||
mkdir -p /opt/memos_data
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -15,22 +15,19 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
ca-certificates \
|
||||
build-essential \
|
||||
python3 \
|
||||
python3-setuptools \
|
||||
graphicsmagick
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
msg_info "Installing n8n (Patience)"
|
||||
$STD npm install --global patch-package
|
||||
$STD npm install --global n8n
|
||||
$STD npm install -g n8n
|
||||
msg_ok "Installed n8n"
|
||||
|
||||
msg_info "Creating Service"
|
||||
mkdir -p /opt
|
||||
cat <<EOF >/opt/n8n.env
|
||||
N8N_SECURE_COOKIE=false
|
||||
N8N_PORT=5678
|
||||
|
||||
@@ -14,7 +14,7 @@ network_check
|
||||
update_os
|
||||
|
||||
fetch_and_deploy_gh_release "nodecast-tv" "technomancer702/nodecast-tv"
|
||||
setup_nodejs
|
||||
NODE_VERSION="20" setup_nodejs
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y ffmpeg
|
||||
|
||||
@@ -64,7 +64,7 @@ $STD sudo -u cool coolconfig set-admin-password --user=admin --password="$COOLPA
|
||||
echo "$COOLPASS" >~/.coolpass
|
||||
msg_ok "Installed Collabora Online"
|
||||
|
||||
fetch_and_deploy_gh_release "opencloud" "opencloud-eu/opencloud" "singlefile" "v5.0.2" "/usr/bin" "opencloud-*-linux-amd64"
|
||||
fetch_and_deploy_gh_release "opencloud" "opencloud-eu/opencloud" "singlefile" "v5.1.0" "/usr/bin" "opencloud-*-linux-amd64"
|
||||
|
||||
msg_info "Configuring OpenCloud"
|
||||
DATA_DIR="/var/lib/opencloud"
|
||||
|
||||
@@ -19,7 +19,7 @@ $STD apt install -y \
|
||||
iptables
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
|
||||
fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
|
||||
fetch_and_deploy_gh_release "traefik" "traefik/traefik" "prebuild" "latest" "/usr/bin" "traefik_v*_linux_amd64.tar.gz"
|
||||
|
||||
@@ -47,8 +47,8 @@ sed -i -e "s|DATABASE_URL=.*|DATABASE_URL=\"postgresql://$PG_DB_USER:$PG_DB_PASS
|
||||
-e "/JWT_SECRET/s/[=$].*/=$JWT_SECRET/" \
|
||||
-e "\|CORS_ORIGIN|s|localhost|$LOCAL_IP|" \
|
||||
-e "/PORT=3001/aSERVER_PROTOCOL=http \\
|
||||
SERVER_HOST=$LOCAL_IP \\
|
||||
SERVER_PORT=3000" \
|
||||
SERVER_HOST=$LOCAL_IP \\
|
||||
SERVER_PORT=3000" \
|
||||
-e '/_ENV=production/aTRUST_PROXY=1' \
|
||||
-e '/REDIS_USER=.*/,+1d' /opt/patchmon/backend/.env
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ cp .env.sample .env
|
||||
sed -i "s#http://localhost:1337#http://$LOCAL_IP:1337#g" /opt/planka/.env
|
||||
sed -i "s#postgres@localhost#planka:$DB_PASS@localhost#g" /opt/planka/.env
|
||||
sed -i "s#notsecretkey#$SECRET_KEY#g" /opt/planka/.env
|
||||
mkdir -p /opt/planka/data/protected/{favicons,user-avatars,background-images} /opt/planka/data/private/attachments
|
||||
$STD npm run db:init
|
||||
msg_ok "Configured PLANKA"
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: tteck (tteckster) | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.plex.tv/
|
||||
|
||||
@@ -16,19 +16,16 @@ update_os
|
||||
setup_hwaccel
|
||||
|
||||
msg_info "Setting Up Plex Media Server Repository"
|
||||
curl -fsSL https://downloads.plex.tv/plex-keys/PlexSign.key | tee /usr/share/keyrings/PlexSign.asc >/dev/null
|
||||
cat <<EOF >/etc/apt/sources.list.d/plexmediaserver.sources
|
||||
Types: deb
|
||||
URIs: https://downloads.plex.tv/repo/deb/
|
||||
Suites: public
|
||||
Components: main
|
||||
Signed-By: /usr/share/keyrings/PlexSign.asc
|
||||
EOF
|
||||
setup_deb822_repo \
|
||||
"plexmediaserver" \
|
||||
"https://downloads.plex.tv/plex-keys/PlexSign.v2.key" \
|
||||
"https://repo.plex.tv/deb/" \
|
||||
"public" \
|
||||
"main"
|
||||
msg_ok "Set Up Plex Media Server Repository"
|
||||
|
||||
msg_info "Installing Plex Media Server"
|
||||
$STD apt update
|
||||
$STD apt -o Dpkg::Options::="--force-confold" install -y plexmediaserver
|
||||
$STD apt install -y plexmediaserver
|
||||
if [[ "$CTTYPE" == "0" ]]; then
|
||||
sed -i -e 's/^ssl-cert:x:104:plex$/render:x:104:root,plex/' -e 's/^render:x:108:root$/ssl-cert:x:108:plex/' /etc/group
|
||||
else
|
||||
|
||||
@@ -80,6 +80,7 @@ $STD php artisan p:user:make --no-interaction --admin=1 --email "$ADMIN_EMAIL" -
|
||||
echo "* * * * * php /opt/pterodactyl-panel/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data -
|
||||
chown -R www-data:www-data /opt/pterodactyl-panel/*
|
||||
chmod -R 755 /opt/pterodactyl-panel/storage/* /opt/pterodactyl-panel/bootstrap/cache/
|
||||
ln -s /opt/pterodactyl-panel /var/www/pterodactyl
|
||||
{
|
||||
echo ""
|
||||
echo "pterodactyl Admin Username: admin"
|
||||
|
||||
@@ -20,7 +20,7 @@ msg_ok "Installed Dependencies"
|
||||
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
|
||||
|
||||
msg_info "Configuring Recyclarr"
|
||||
mkdir -p /root/.config/recyclarr
|
||||
mkdir -p /root/.config/recyclarr/{configs,includes}
|
||||
$STD recyclarr config create
|
||||
msg_ok "Configured Recyclarr"
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ $STD apt install -y \
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
setup_mariadb
|
||||
MARIADB_DB_NAME="romm" MARIADB_DB_USER="romm" setup_mariadb_db
|
||||
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://runtipi.io/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://runtipi.io/)."
|
||||
msg_warn "The following code is NOT maintained or audited by our repository."
|
||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
|
||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://raw.githubusercontent.com/runtipi/runtipi/master/scripts/install.sh"
|
||||
echo
|
||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
|
||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||
msg_error "Aborted by user. No changes have been made."
|
||||
exit 10
|
||||
fi
|
||||
|
||||
msg_info "Installing Runtipi (Patience)"
|
||||
DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
|
||||
mkdir -p "$(dirname "$DOCKER_CONFIG_PATH")"
|
||||
echo -e '{\n "log-driver": "journald"\n}' >"$DOCKER_CONFIG_PATH"
|
||||
cd /opt
|
||||
curl -fsSL "https://raw.githubusercontent.com/runtipi/runtipi/master/scripts/install.sh" -o "install.sh"
|
||||
chmod +x install.sh
|
||||
$STD ./install.sh
|
||||
chmod 666 /opt/runtipi/state/settings.json
|
||||
rm -f /opt/install.sh
|
||||
msg_ok "Installed Runtipi"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user