Compare commits

...

48 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
c586dfe87f Update CHANGELOG.md (#4400)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-12 02:15:53 +02:00
community-scripts-pr-app[bot]
7f65be34ff Update versions.json (#4399)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-12 02:15:23 +02:00
community-scripts-pr-app[bot]
c158dbb3ea Update CHANGELOG.md (#4393)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-11 17:13:12 +02:00
Slaviša Arežina
95acf8c018 Enable ElasticSearch service (#4391) 2025-05-11 17:12:46 +02:00
community-scripts-pr-app[bot]
6c5aa6677a Update versions.json (#4392)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-11 14:06:43 +02:00
community-scripts-pr-app[bot]
43ff379ed4 Update CHANGELOG.md (#4388)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-11 02:15:59 +02:00
community-scripts-pr-app[bot]
2c2849179a Update versions.json (#4387)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-11 02:15:20 +02:00
community-scripts-pr-app[bot]
d116505ff2 Update CHANGELOG.md (#4384)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-10 23:24:23 +02:00
Chris
42535e14ab (fix) Documenso: fix build failures (#4382)
- change build command
- change port in ENV file; remove unneeded sed cmds
- change systemd service file
- ensure turbo daemon is stopped to prevent hang on exit
2025-05-10 23:23:51 +02:00
Slaviša Arežina
990ce16a7d Portainer is on https port (#4371) 2025-05-10 15:23:43 +02:00
Slaviša Arežina
af1cf0bc71 Fix verbose (#4373) 2025-05-10 15:23:13 +02:00
community-scripts-pr-app[bot]
e166115745 Update versions.json (#4379)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-10 14:06:45 +02:00
community-scripts-pr-app[bot]
bdef92cc71 Update CHANGELOG.md (#4378)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-10 08:43:49 +02:00
CanbiZ
1e59c934ec Jellyseerr: better handling of node and pnpm (#4365)
* Jellyseerr: better handling of node and pnpm

* Update jellyseerr.sh
2025-05-10 08:42:45 +02:00
community-scripts-pr-app[bot]
456b00882d Update CHANGELOG.md (#4377)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-10 02:14:47 +02:00
community-scripts-pr-app[bot]
9b8a30c84f Update versions.json (#4376)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-10 02:14:03 +02:00
community-scripts-pr-app[bot]
3b90e3fe15 Update CHANGELOG.md (#4374)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-10 01:55:40 +02:00
CanbiZ
5e3a5bb24c HomeAssistant-Core: update script for 2025.5+ (#4363)
* HomeAssistant-Core: update script for 2025.5+

* Update homeassistant-core-install.sh
2025-05-10 01:55:09 +02:00
community-scripts-pr-app[bot]
7413a03009 Update CHANGELOG.md (#4367)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-09 23:24:43 +02:00
CanbiZ
bb1c9d73c4 Authentik: change install to UV & increase resources to 10GB RAM (#4364) 2025-05-09 23:24:06 +02:00
CanbiZ
3b5a901832 Revert "fix: detect all bridge types, not just vmbr prefix (#4351)" (#4362)
This reverts commit 9d21ceacc3.
2025-05-09 21:55:07 +02:00
community-scripts-pr-app[bot]
a62a4876ec Update CHANGELOG.md (#4358)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-09 20:53:25 +02:00
Filippo
9d21ceacc3 fix: detect all bridge types, not just vmbr prefix (#4351) 2025-05-09 20:53:01 +02:00
Tobias
c604aeb064 fix app/application var mapping (#4357) 2025-05-09 20:30:29 +02:00
community-scripts-pr-app[bot]
9b9ed2f6e1 Update CHANGELOG.md (#4348)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-09 15:33:19 +02:00
community-scripts-pr-app[bot]
1ddc74d2b5 Update versions.json (#4347)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-09 15:32:39 +02:00
community-scripts-pr-app[bot]
ee9f6dd818 Update CHANGELOG.md (#4346)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-09 15:28:43 +02:00
CanbiZ
a1754dff4e Feature: Autologin for Alpine (#4344) 2025-05-09 15:28:12 +02:00
community-scripts-pr-app[bot]
4827a17ba3 Update CHANGELOG.md (#4336)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-09 15:24:04 +02:00
Michel Roegl-Brunner
b5ed7b9f4e Auto-Merge Automatic PR (#4343)
* Make Automatic issues auto-close

* Change PAT
2025-05-09 15:20:43 +02:00
Michel Roegl-Brunner
ab9760194d Add a Repo check to all Workflows (#4339) 2025-05-09 13:15:59 +02:00
community-scripts-pr-app[bot]
abb5b6d5ac Update versions.json (#4332)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-09 12:08:58 +02:00
CanbiZ
4656fe21f9 remove documenso/suwayomi from website 2025-05-09 11:19:23 +02:00
Slaviša Arežina
93e503eb87 Upscale resources (#4329) 2025-05-08 21:41:59 +02:00
Tobias
6ab80dc5e3 Update streamlink-webui.sh (#4328) 2025-05-08 19:50:53 +02:00
community-scripts-pr-app[bot]
ceaff9006a Update CHANGELOG.md (#4325)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-08 16:18:12 +02:00
Michel Roegl-Brunner
c749fe6fb0 Update build.func (#4327) 2025-05-08 16:17:48 +02:00
Michel Roegl-Brunner
402586756f build.func Change the menu for Bridge Selection (#4326)
* Change the menu for Bridge Selection

* Change the menu for Bridge Selection

* Change the menu for Bridge Selection
2025-05-08 15:50:34 +02:00
community-scripts-pr-app[bot]
19800da808 Update CHANGELOG.md (#4323)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-08 15:21:13 +02:00
community-scripts-pr-app[bot]
d62da0c982 Update versions.json (#4324)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-08 15:20:58 +02:00
Biendeo
41df1d5a76 Update searxng-install.sh (#4322)
The build script in the repository needs to use the same Python virtualenv as the running one. This change is suggested from their docs: https://docs.searxng.org/admin/installation-searxng.html#install-searxng-dependencies
2025-05-08 14:04:19 +02:00
CanbiZ
bcdf8f15e7 Update openwrt.sh 2025-05-08 13:23:22 +02:00
community-scripts-pr-app[bot]
326cbc3bec Update CHANGELOG.md (#4315)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-08 13:03:54 +02:00
CanbiZ
607d966322 Bugfix: Mikrotik & Pimox HAOS VM (NEXTID) (#4313) 2025-05-08 12:57:27 +02:00
Slaviša Arežina
69298090ce FAQ: Explanation "updatable" (#4300)
* Update FAQ

* Update frontend/src/config/faqConfig.tsx
2025-05-08 11:01:42 +02:00
community-scripts-pr-app[bot]
9c7d50fdff Update versions.json (#4307) 2025-05-08 10:51:27 +02:00
Tobias
fabbe8fe59 Update streamlink-webui.sh (#4314) 2025-05-08 10:50:45 +02:00
community-scripts-pr-app[bot]
6abb55ba86 Update CHANGELOG.md (#4293)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-08 06:38:00 +02:00
42 changed files with 668 additions and 548 deletions

View File

@@ -10,6 +10,7 @@ on:
jobs: jobs:
update-app-files: update-app-files:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
permissions: permissions:
@@ -90,14 +91,15 @@ jobs:
gh pr review $PR_NUMBER --approve gh pr review $PR_NUMBER --approve
fi fi
- name: Re-approve pull request after update - name: Approve pull request and merge
if: env.changed == 'true' if: env.changed == 'true'
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.PAT_AUTOMERGE }}
run: | run: |
PR_NUMBER=$(gh pr list --head "pr-update-app-files" --json number --jq '.[].number') PR_NUMBER=$(gh pr list --head "pr-update-app-files" --json number --jq '.[].number')
if [ -n "$PR_NUMBER" ]; then if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve gh pr review $PR_NUMBER --approve
gh pr merge $PR_NUMBER --squash --admin
fi fi
# Step 8: Output success message when no changes # Step 8: Output success message when no changes

View File

@@ -7,6 +7,7 @@ on:
jobs: jobs:
autolabeler: autolabeler:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
permissions: permissions:
pull-requests: write pull-requests: write

View File

@@ -7,6 +7,7 @@ on:
jobs: jobs:
update-changelog-pull-request: update-changelog-pull-request:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
env: env:
CONFIG_PATH: .github/changelog-pr-config.json CONFIG_PATH: .github/changelog-pr-config.json
@@ -263,6 +264,17 @@ jobs:
gh pr review $PR_NUMBER --approve gh pr review $PR_NUMBER --approve
fi fi
- name: Approve pull request and merge
if: env.changed == 'true'
env:
GH_TOKEN: ${{ secrets.PAT_AUTOMERGE }}
run: |
PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve
gh pr merge $PR_NUMBER --squash --admin
fi
- name: Re-approve pull request after update - name: Re-approve pull request after update
if: env.changed == 'true' if: env.changed == 'true'
env: env:

View File

@@ -11,6 +11,7 @@ permissions:
jobs: jobs:
close-discussion: close-discussion:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
steps: steps:

View File

@@ -5,6 +5,7 @@ on:
jobs: jobs:
close_tteck_issues: close_tteck_issues:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Auto-close if tteck script detected - name: Auto-close if tteck script detected

View File

@@ -5,7 +5,7 @@ on:
- closed - closed
jobs: jobs:
close_issue: close_issue:
if: github.event.pull_request.merged == true if: github.event.pull_request.merged == true && github.repository == 'community-scripts/ProxmoxVE'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

View File

@@ -12,6 +12,7 @@ permissions:
jobs: jobs:
crawl-versions: crawl-versions:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
steps: steps:
@@ -103,6 +104,17 @@ jobs:
gh pr review $PR_NUMBER --approve gh pr review $PR_NUMBER --approve
fi fi
- name: Approve pull request and merge
if: env.changed == 'true'
env:
GH_TOKEN: ${{ secrets.PAT_AUTOMERGE }}
run: |
PR_NUMBER=$(gh pr list --head "update_versions" --json number --jq '.[].number')
if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve
gh pr merge $PR_NUMBER --squash --admin
fi
- name: Re-approve pull request after update - name: Re-approve pull request after update
if: env.changed == 'true' if: env.changed == 'true'
env: env:

View File

@@ -11,6 +11,7 @@ on:
jobs: jobs:
build: build:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: ubuntu-latest #To ensure it always builds we use the github runner with all the right tooling runs-on: ubuntu-latest #To ensure it always builds we use the github runner with all the right tooling
steps: steps:

View File

@@ -9,6 +9,7 @@ on:
jobs: jobs:
delete_branch: delete_branch:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
steps: steps:
- name: Checkout the code - name: Checkout the code

View File

@@ -25,6 +25,7 @@ concurrency:
jobs: jobs:
build: build:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
defaults: defaults:
run: run:
@@ -63,7 +64,7 @@ jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: build needs: build
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main' && github.repository == 'community-scripts/ProxmoxVE'
permissions: permissions:
pages: write pages: write
id-token: write id-token: write

View File

@@ -7,6 +7,7 @@ on:
jobs: jobs:
create-daily-release: create-daily-release:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
permissions: permissions:
contents: write contents: write

View File

@@ -11,6 +11,7 @@ on:
jobs: jobs:
run-install-script: run-install-script:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: pvenode runs-on: pvenode
steps: steps:
- name: Checkout PR branch - name: Checkout PR branch

View File

@@ -11,6 +11,7 @@ on:
jobs: jobs:
run-install-script: run-install-script:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: pvenode runs-on: pvenode
steps: steps:
- name: Checkout PR branch (supports forks) - name: Checkout PR branch (supports forks)

View File

@@ -10,6 +10,7 @@ on:
jobs: jobs:
update-app-files: update-app-files:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
permissions: permissions:
@@ -125,6 +126,16 @@ jobs:
if [ -n "$PR_NUMBER" ]; then if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve gh pr review $PR_NUMBER --approve
fi fi
- name: Approve pull request and merge
if: env.changed == 'true'
env:
GH_TOKEN: ${{ secrets.PAT_AUTOMERGE }}
run: |
PR_NUMBER=$(gh pr list --head "${{ env.BRANCH_NAME }}" --json number --jq '.[].number')
if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve
gh pr merge $PR_NUMBER --squash --admin
fi
- name: No changes detected - name: No changes detected
if: env.changed == 'false' if: env.changed == 'false'

View File

@@ -9,6 +9,7 @@ on:
jobs: jobs:
check-files: check-files:
if: github.repository == 'community-scripts/ProxmoxVE'
name: Check changed files name: Check changed files
runs-on: runner-cluster-htl-set runs-on: runner-cluster-htl-set
permissions: permissions:

View File

@@ -14,6 +14,68 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment. All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
## 2025-05-12
## 2025-05-11
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Zammad: Enable ElasticSearch service [@tremor021](https://github.com/tremor021) ([#4391](https://github.com/community-scripts/ProxmoxVE/pull/4391))
## 2025-05-10
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- (fix) Documenso: fix build failures [@vhsdream](https://github.com/vhsdream) ([#4382](https://github.com/community-scripts/ProxmoxVE/pull/4382))
- Jellyseerr: better handling of node and pnpm [@MickLesk](https://github.com/MickLesk) ([#4365](https://github.com/community-scripts/ProxmoxVE/pull/4365))
## 2025-05-09
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Authentik: change install to UV & increase resources to 10GB RAM [@MickLesk](https://github.com/MickLesk) ([#4364](https://github.com/community-scripts/ProxmoxVE/pull/4364))
- #### ✨ New Features
- HomeAssistant-Core: update script for 2025.5+ [@MickLesk](https://github.com/MickLesk) ([#4363](https://github.com/community-scripts/ProxmoxVE/pull/4363))
- Feature: autologin for Alpine [@MickLesk](https://github.com/MickLesk) ([#4344](https://github.com/community-scripts/ProxmoxVE/pull/4344))
### 🧰 Maintenance
- #### 💾 Core
- fix: detect all bridge types, not just vmbr prefix [@filippolauria](https://github.com/filippolauria) ([#4351](https://github.com/community-scripts/ProxmoxVE/pull/4351))
- #### 📂 Github
- Add a Repo check to all Workflows [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4339](https://github.com/community-scripts/ProxmoxVE/pull/4339))
- Auto-Merge Automatic PR [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4343](https://github.com/community-scripts/ProxmoxVE/pull/4343))
## 2025-05-08
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- SearXNG: fix to resolve yaml dependency error [@Biendeo](https://github.com/Biendeo) ([#4322](https://github.com/community-scripts/ProxmoxVE/pull/4322))
- Bugfix: Mikrotik & Pimox HAOS VM (NEXTID) [@MickLesk](https://github.com/MickLesk) ([#4313](https://github.com/community-scripts/ProxmoxVE/pull/4313))
### 🧰 Maintenance
- #### 💾 Core
- build.func Change the menu for Bridge Selection [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4326](https://github.com/community-scripts/ProxmoxVE/pull/4326))
### 🌐 Website
- FAQ: Explanation "updatable" [@tremor021](https://github.com/tremor021) ([#4300](https://github.com/community-scripts/ProxmoxVE/pull/4300))
## 2025-05-07 ## 2025-05-07
### 🚀 Updated Scripts ### 🚀 Updated Scripts
@@ -24,6 +86,16 @@ All LXC instances created using this repository come pre-installed with Midnight
- SuwayomiServer: Bump Java to v21, code formating [@tremor021](https://github.com/tremor021) ([#3987](https://github.com/community-scripts/ProxmoxVE/pull/3987)) - SuwayomiServer: Bump Java to v21, code formating [@tremor021](https://github.com/tremor021) ([#3987](https://github.com/community-scripts/ProxmoxVE/pull/3987))
- #### ✨ New Features
- Feature: get correct next VMID [@MickLesk](https://github.com/MickLesk) ([#4292](https://github.com/community-scripts/ProxmoxVE/pull/4292))
### 🌐 Website
- #### 📝 Script Information
- OpenWebUI: Update docs link [@tremor021](https://github.com/tremor021) ([#4298](https://github.com/community-scripts/ProxmoxVE/pull/4298))
## 2025-05-06 ## 2025-05-06
### 🆕 New Scripts ### 🆕 New Scripts

View File

@@ -9,7 +9,7 @@ APP="Authentik"
var_tags="${var_tags:-identity-provider}" var_tags="${var_tags:-identity-provider}"
var_disk="${var_disk:-12}" var_disk="${var_disk:-12}"
var_cpu="${var_cpu:-6}" var_cpu="${var_cpu:-6}"
var_ram="${var_ram:-8192}" var_ram="${var_ram:-10240}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
@@ -29,6 +29,13 @@ function update_script() {
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}') RELEASE=$(curl -fsSL https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
NODE_VERSION="22"
PG_VERSION="16"
setup_uv
install_postgresql
install_node_and_modules
install_go
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop authentik-server systemctl stop authentik-server
systemctl stop authentik-worker systemctl stop authentik-worker
@@ -54,17 +61,14 @@ function update_script() {
go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/ go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
msg_ok "Built ${APP} server" msg_ok "Built ${APP} server"
msg_info "Installing Python Dependencies" msg_info "Building Authentik"
cd /opt/authentik cd /opt/authentik
$STD poetry install --only=main --no-ansi --no-interaction --no-root $STD uv sync --frozen --no-install-project --no-dev
$STD poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt uv run python -m lifecycle.migrate
$STD pip install --no-cache-dir -r requirements.txt ln -s /opt/authentik/.venv/bin/gunicorn /usr/local/bin/gunicorn
$STD pip install . ln -s /opt/authentik/.venv/bin/celery /usr/local/bin/celery
msg_ok "Installed Python Dependencies" msg_ok "Authentik built"
msg_info "Updating ${APP} to v${RELEASE} (Patience)"
cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints
$STD bash /opt/authentik/lifecycle/ak migrate
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}" msg_ok "Updated ${APP} to v${RELEASE}"

View File

@@ -42,9 +42,14 @@ function update_script() {
mv documenso-${RELEASE} /opt/documenso mv documenso-${RELEASE} /opt/documenso
cd /opt/documenso cd /opt/documenso
mv /opt/.env /opt/documenso/.env mv /opt/.env /opt/documenso/.env
$STD npm install export TURBO_CACHE=1
$STD npm run build:web export NEXT_TELEMETRY_DISABLED=1
export CYPRESS_INSTALL_BINARY=0
export NODE_OPTIONS="--max-old-space-size=4096"
$STD npm ci
$STD turbo run build --filter=@documenso/remix
$STD npm run prisma:migrate-deploy $STD npm run prisma:migrate-deploy
$STD turbo daemon stop
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"

View File

@@ -21,8 +21,6 @@ catch_errors
function update_script() { function update_script() {
header_info header_info
# OS Check
if ! lsb_release -d | grep -q "Ubuntu 24.10"; then if ! lsb_release -d | grep -q "Ubuntu 24.10"; then
msg_error "Wrong OS detected. This script only supports Ubuntu 24.10." msg_error "Wrong OS detected. This script only supports Ubuntu 24.10."
msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549" msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549"
@@ -32,54 +30,88 @@ function update_script() {
check_container_resources check_container_resources
if [[ ! -d /srv/homeassistant ]]; then if [[ ! -d /srv/homeassistant ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit 1
fi fi
PY=$(ls /srv/homeassistant/lib/) setup_uv
IP=$(hostname -I | awk '{print $1}') IP=$(hostname -I | awk '{print $1}')
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \ UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
"1" "Update Core" ON \ "1" "Update Core" ON \
"2" "Install HACS" OFF \ "2" "Install HACS" OFF \
"3" "Install FileBrowser" OFF \ "3" "Install FileBrowser" OFF \
3>&1 1>&2 2>&3) 3>&1 1>&2 2>&3)
if [ "$UPD" == "1" ]; then if [ "$UPD" == "1" ]; then
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then
clear clear
header_info header_info
echo -e "${GN}Updating to Beta Version${CL}" echo -e "${GN}Updating to Beta Version${CL}"
BR="--pre " BR="--pre"
else else
clear clear
header_info header_info
echo -e "${GN}Updating to Stable Version${CL}" echo -e "${GN}Updating to Stable Version${CL}"
BR="" BR=""
fi fi
msg_info "Stopping Home Assistant" msg_info "Stopping Home Assistant"
systemctl stop homeassistant systemctl stop homeassistant
msg_ok "Stopped Home Assistant" msg_ok "Stopped Home Assistant"
if [[ -d /srv/homeassistant/bin ]]; then
msg_info "Migrating to .venv-based structure"
$STD source /srv/homeassistant/bin/activate
PY_VER=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
$STD deactivate
mv /srv/homeassistant "/srv/homeassistant_backup_$PY_VER"
mkdir -p /srv/homeassistant
cd /srv/homeassistant
$STD uv python install 3.13
UV_PYTHON=$(uv python list | awk '/3\.13\.[0-9]+.*\/root\/.local/ {print $2; exit}')
if [[ -z "$UV_PYTHON" ]]; then
msg_error "No local Python 3.13 found via uv"
exit 1
fi
$STD uv venv .venv --python "$UV_PYTHON"
$STD source .venv/bin/activate
$STD uv pip install homeassistant mysqlclient psycopg2-binary isal webrtcvad wheel
mkdir -p /root/.homeassistant
msg_ok "Migration complete"
else
source /srv/homeassistant/.venv/bin/activate
fi
msg_info "Updating Home Assistant" msg_info "Updating Home Assistant"
source /srv/homeassistant/bin/activate $STD uv pip install $BR --upgrade homeassistant
$STD pip install ${BR}--upgrade homeassistant
msg_ok "Updated Home Assistant" msg_ok "Updated Home Assistant"
msg_info "Starting Home Assistant" msg_info "Starting Home Assistant"
if [[ -f /etc/systemd/system/homeassistant.service ]] && grep -q "/srv/homeassistant/bin/python3" /etc/systemd/system/homeassistant.service; then
sed -i 's|ExecStart=/srv/homeassistant/bin/python3|ExecStart=/srv/homeassistant/.venv/bin/python3|' /etc/systemd/system/homeassistant.service
sed -i 's|PATH=/srv/homeassistant/bin|PATH=/srv/homeassistant/.venv/bin|' /etc/systemd/system/homeassistant.service
$STD systemctl daemon-reload
fi
systemctl start homeassistant systemctl start homeassistant
sleep 2 sleep 5
msg_ok "Started Home Assistant" msg_ok "Started Home Assistant"
msg_ok "Update Successful" msg_ok "Update Successful"
echo -e "\n Go to http://${IP}:8123 \n" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
exit exit
fi fi
if [ "$UPD" == "2" ]; then if [ "$UPD" == "2" ]; then
msg_info "Installing Home Assistant Community Store (HACS)" msg_info "Installing Home Assistant Community Store (HACS)"
$STD apt update $STD apt update
$STD apt install -y unzip $STD apt install -y unzip
cd .homeassistant cd /root/.homeassistant
$STD bash <(curl -fsSL https://get.hacs.xyz) $STD bash <(curl -fsSL https://get.hacs.xyz)
msg_ok "Installed Home Assistant Community Store (HACS)" msg_ok "Installed Home Assistant Community Store (HACS)"
echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n" echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
exit exit
fi fi
if [ "$UPD" == "3" ]; then if [ "$UPD" == "3" ]; then
set +Eeuo pipefail set +Eeuo pipefail
read -r -p "Would you like to use No Authentication? <y/N> " prompt read -r -p "Would you like to use No Authentication? <y/N> " prompt

View File

@@ -38,7 +38,7 @@ function update_script() {
msg_info "Updating All Containers" msg_info "Updating All Containers"
CONTAINER_LIST="${1:-$(docker ps -q)}" CONTAINER_LIST="${1:-$(docker ps -q)}"
for container in ${CONTAINER_LIST}; do for container in ${CONTAINER_LIST}; do
CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container ${container})" CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container "${container}")"
RUNNING_IMAGE="$(docker inspect --format "{{.Image}}" --type container "${container}")" RUNNING_IMAGE="$(docker inspect --format "{{.Image}}" --type container "${container}")"
docker pull "${CONTAINER_IMAGE}" docker pull "${CONTAINER_IMAGE}"
LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")" LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
@@ -47,7 +47,7 @@ function update_script() {
echo "Updating ${container} image ${CONTAINER_IMAGE}" echo "Updating ${container} image ${CONTAINER_IMAGE}"
DOCKER_COMMAND="$(runlike --use-volume-id "${container}")" DOCKER_COMMAND="$(runlike --use-volume-id "${container}")"
docker rm --force "${container}" docker rm --force "${container}"
eval ${DOCKER_COMMAND} eval "${DOCKER_COMMAND}"
fi fi
done done
msg_ok "Updated All Containers" msg_ok "Updated All Containers"
@@ -109,4 +109,4 @@ msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}HA: http://${IP}:8123${CL}" echo -e "${TAB}${GATEWAY}${BGN}HA: http://${IP}:8123${CL}"
echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}" echo -e "${TAB}${GATEWAY}${BGN}Portainer: https://${IP}:9443${CL}"

View File

@@ -53,10 +53,10 @@ function update_script() {
if [ -z "$pnpm_current" ]; then if [ -z "$pnpm_current" ]; then
msg_error "pnpm not found. Installing version $pnpm_desired..." msg_error "pnpm not found. Installing version $pnpm_desired..."
$STD npm install -g pnpm@"$pnpm_desired" NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" install_node_and_modules
elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then
msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..." msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..."
$STD npm install -g pnpm@"$pnpm_desired" NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" install_node_and_modules
else else
msg_ok "pnpm is already installed and satisfies version $pnpm_desired." msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
fi fi

View File

@@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Open WebUI" APP="Open WebUI"
var_tags="${var_tags:-ai;interface}" var_tags="${var_tags:-ai;interface}"
var_cpu="${var_cpu:-4}" var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-8192}"
var_disk="${var_disk:-16}" var_disk="${var_disk:-25}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"

View File

@@ -24,32 +24,34 @@ function update_script() {
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /opt/streamlink-webui ]]; then if [[ ! -d /opt/streamlink-webui ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/CrazyWolf13/streamlink-webui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/CrazyWolf13/streamlink-webui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Starting Update"
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop ${APP} systemctl stop ${APP}
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
rm -rf /opt/${APP} rm -rf /opt/${APP}
NODE_VERSION="22" NODE_VERSION="22"
NODE_MODULE="npm@latest,yarn@latest" NODE_MODULE="npm,yarn"
install_node_and_modules install_node_and_modules
setup_uv setup_uv
fetch_and_deploy_gh_release "CrazyWolf13/streamlink-webui" fetch_and_deploy_gh_release "CrazyWolf13/streamlink-webui"
msg_info "Updating $APP to v${RELEASE}" msg_info "Updating $APP to v${RELEASE}"
$STD uv venv /opt/"${APPLICATION}"/backend/src/.venv $STD uv venv /opt/"${APP}"/backend/src/.venv
source /opt/"${APPLICATION}"/backend/src/.venv/bin/activate source /opt/"${APP}"/backend/src/.venv/bin/activate
$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/"${APPLICATION}"/backend/src/.venv $STD uv pip install -r /opt/"${APP}"/backend/src/requirements.txt --python=/opt/"${APP}"/backend/src/.venv
cd /opt/"${APPLICATION}"/frontend/src cd /opt/"${APP}"/frontend/src
$STD yarn install $STD yarn install
$STD yarn build $STD yarn build
chmod +x /opt/"${APPLICATION}"/start.sh chmod +x /opt/"${APP}"/start.sh
msg_ok "Updated $APP to v${RELEASE}" msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"

View File

@@ -20,7 +20,7 @@
"script": "ct/authentik.sh", "script": "ct/authentik.sh",
"resources": { "resources": {
"cpu": 6, "cpu": 6,
"ram": 8192, "ram": 10240,
"hdd": 12, "hdd": 12,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
@@ -33,7 +33,11 @@
}, },
"notes": [ "notes": [
{ {
"text": "Authentik is very resource-heavy, it is recommended to use at least 8GB RAM anytime!", "text": "Authentik is very resource-heavy, it is recommended to use at least 10GB RAM anytime!",
"type": "warning"
},
{
"text": "Some updates don't work due to massive dependency errors, it's recommended to do a backup before updating or a pg_dump and a new LXC.",
"type": "warning" "type": "warning"
} }
] ]

View File

@@ -1,35 +0,0 @@
{
"name": "Documenso",
"slug": "documenso",
"categories": [
12
],
"date_created": "2025-04-28",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://documenso.com/",
"website": "https://documenso.com/",
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/documenso.svg",
"config_path": "/opt/documenso/.env",
"description": "Signing documents digitally should be fast and easy and should be the best practice for every document signed worldwide. This is technically quite easy today, but it also introduces a new party to every signature: The signing tool providers. While this is not a problem in itself, it should make us think about how we want these providers of trust to work. Documenso aims to be the world's most trusted document-signing tool. This trust is built by empowering you to self-host Documenso and review how it works under the hood.",
"install_methods": [
{
"type": "default",
"script": "ct/documenso.sh",
"resources": {
"cpu": 4,
"ram": 6144,
"hdd": 10,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "helper-scripts@local.com",
"password": "helper-scripts"
},
"notes": []
}

View File

@@ -20,8 +20,8 @@
"script": "ct/openwebui.sh", "script": "ct/openwebui.sh",
"resources": { "resources": {
"cpu": 4, "cpu": 4,
"ram": 4096, "ram": 8192,
"hdd": 16, "hdd": 25,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }

View File

@@ -1,40 +0,0 @@
{
"name": "Suwayomi-Server",
"slug": "suwayomi-server",
"categories": [
13
],
"date_created": "2025-02-07",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 4567,
"documentation": "https://github.com/Suwayomi/Suwayomi-Server/wiki",
"website": "https://github.com/Suwayomi/Suwayomi-Server",
"logo": "https://github.com/Suwayomi/Suwayomi-Server/raw/master/server/src/main/resources/icon/faviconlogo.png",
"config_path": "",
"description": "A free and open source manga reader server that runs extensions built for Mihon (Tachiyomi).",
"install_methods": [
{
"type": "default",
"script": "ct/suwayomiserver.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "This application is conflicting with Kaspersky products. You need to disable Kaspersky in order to use this application.",
"type": "info"
}
]
}

View File

@@ -1,24 +1,264 @@
[ [
{
"name": "esphome/esphome",
"version": "2025.4.2",
"date": "2025-05-11T22:18:43Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.2",
"date": "2025-05-11T16:40:55Z"
},
{
"name": "outline/outline",
"version": "v0.84.0",
"date": "2025-05-11T15:50:48Z"
},
{
"name": "Kozea/Radicale",
"version": "v3.5.3",
"date": "2025-05-11T15:17:13Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.12",
"date": "2025-04-20T19:22:17Z"
},
{
"name": "Prowlarr/Prowlarr",
"version": "v1.35.1.5034",
"date": "2025-04-30T11:02:36Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.12.4",
"date": "2025-05-11T11:41:32Z"
},
{
"name": "authelia/authelia",
"version": "v4.39.3",
"date": "2025-05-11T11:12:15Z"
},
{
"name": "theonedev/onedev",
"version": "v11.9.5",
"date": "2025-05-11T10:50:37Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.22.4.9896",
"date": "2025-04-23T18:51:12Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.28.0",
"date": "2025-05-11T06:25:22Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.1888",
"date": "2025-05-11T06:00:48Z"
},
{
"name": "owncast/owncast",
"version": "v0.2.3",
"date": "2025-05-10T21:14:45Z"
},
{
"name": "runtipi/runtipi",
"version": "e2e",
"date": "2025-05-10T20:46:31Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.9",
"date": "2025-05-10T19:05:02Z"
},
{
"name": "ollama/ollama",
"version": "v0.6.9-rc0",
"date": "2025-05-10T18:57:30Z"
},
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v0.46.1",
"date": "2025-05-10T15:39:10Z"
},
{
"name": "juanfont/headscale",
"version": "v0.25.1",
"date": "2025-02-25T17:30:48Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "v1.22.2-victorialogs",
"date": "2025-05-10T01:20:19Z"
},
{
"name": "pelican-dev/wings",
"version": "v1.0.0-beta13",
"date": "2025-05-09T23:14:41Z"
},
{
"name": "pelican-dev/panel",
"version": "v1.0.0-beta21",
"date": "2025-05-09T23:14:23Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.19.1",
"date": "2025-05-09T19:15:10Z"
},
{
"name": "MediaBrowser/Emby.Releases",
"version": "4.8.11.0",
"date": "2025-03-10T06:39:11Z"
},
{
"name": "home-assistant/core",
"version": "2025.5.1",
"date": "2025-05-09T15:05:54Z"
},
{
"name": "keycloak/keycloak",
"version": "26.2.4",
"date": "2025-05-08T09:10:10Z"
},
{
"name": "mattermost/mattermost",
"version": "v9.11.15",
"date": "2025-05-09T13:48:50Z"
},
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.8",
"date": "2025-03-25T13:33:10Z"
},
{
"name": "zitadel/zitadel",
"version": "v3.0.4",
"date": "2025-05-09T11:38:33Z"
},
{
"name": "coder/code-server",
"version": "v4.99.4",
"date": "2025-05-02T18:33:09Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v0.53.0",
"date": "2025-05-08T19:56:55Z"
},
{
"name": "ellite/Wallos",
"version": "v3.1.0",
"date": "2025-05-08T15:33:17Z"
},
{
"name": "BookStackApp/BookStack",
"version": "v25.02.4",
"date": "2025-05-08T15:03:17Z"
},
{
"name": "wazuh/wazuh",
"version": "v4.12.0",
"date": "2025-05-08T13:27:46Z"
},
{
"name": "apache/tomcat",
"version": "10.1.41",
"date": "2025-05-08T12:45:44Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.91.3",
"date": "2025-05-08T12:25:10Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v10.4.2",
"date": "2025-05-08T08:11:27Z"
},
{
"name": "umami-software/umami",
"version": "v2.18.0",
"date": "2025-05-08T07:14:55Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.14.10",
"date": "2025-05-07T20:23:29Z"
},
{
"name": "readeck/readeck",
"version": "0.18.2",
"date": "2025-05-07T19:22:22Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.36.3",
"date": "2025-05-07T17:22:07Z"
},
{
"name": "ipfs/kubo",
"version": "v0.34.1",
"date": "2025-03-25T18:11:12Z"
},
{
"name": "NodeBB/NodeBB",
"version": "v4.3.1",
"date": "2025-05-07T15:38:20Z"
},
{
"name": "donaldzou/WGDashboard",
"version": "v4.2.3",
"date": "2025-05-07T15:35:04Z"
},
{
"name": "stonith404/pingvin-share",
"version": "v1.12.0",
"date": "2025-05-07T14:12:11Z"
},
{
"name": "Brandawg93/PeaNUT",
"version": "v5.7.5",
"date": "2025-05-07T14:01:45Z"
},
{
"name": "Graylog2/graylog2-server",
"version": "6.3.0-alpha.3",
"date": "2025-05-07T13:58:36Z"
},
{
"name": "glpi-project/glpi",
"version": "10.0.18",
"date": "2025-02-12T11:07:02Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v24.8",
"date": "2025-03-18T07:33:51Z"
},
{
"name": "ZoeyVid/NPMplus",
"version": "2025-05-07-r1",
"date": "2025-05-07T12:18:42Z"
},
{ {
"name": "docker/compose", "name": "docker/compose",
"version": "v2.36.0", "version": "v2.36.0",
"date": "2025-05-07T11:54:14Z" "date": "2025-05-07T11:54:14Z"
}, },
{ {
"name": "Graylog2/graylog2-server", "name": "Checkmk/checkmk",
"version": "6.2.2", "version": "v2.2.0p42-rc1",
"date": "2025-05-07T11:36:20Z" "date": "2025-05-07T11:50:30Z"
}, },
{ {
"name": "openobserve/openobserve", "name": "openobserve/openobserve",
"version": "v0.14.7", "version": "v0.14.7",
"date": "2025-05-07T11:32:23Z" "date": "2025-05-07T11:32:23Z"
}, },
{
"name": "home-assistant/core",
"version": "2025.4.4",
"date": "2025-04-25T07:47:57Z"
},
{ {
"name": "grokability/snipe-it", "name": "grokability/snipe-it",
"version": "v8.1.3", "version": "v8.1.3",
@@ -34,51 +274,16 @@
"version": "7.4.0beta2", "version": "7.4.0beta2",
"date": "2025-05-07T10:39:21Z" "date": "2025-05-07T10:39:21Z"
}, },
{
"name": "zwave-js/zwave-js-ui",
"version": "v10.4.1",
"date": "2025-05-07T09:22:38Z"
},
{ {
"name": "jupyter/notebook", "name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.5.0-alpha.0", "version": "@jupyter-notebook/ui-components@7.5.0-alpha.0",
"date": "2025-05-07T09:12:08Z" "date": "2025-05-07T09:12:08Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.22.1874",
"date": "2025-05-07T05:56:30Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.12.2",
"date": "2025-04-28T17:44:49Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.7",
"date": "2025-05-06T23:08:38Z"
},
{ {
"name": "influxdata/influxdb", "name": "influxdata/influxdb",
"version": "v1.12.1rc0", "version": "v1.12.1rc0",
"date": "2025-05-06T20:56:30Z" "date": "2025-05-06T20:56:30Z"
}, },
{
"name": "keycloak/keycloak",
"version": "26.2.3",
"date": "2025-05-05T11:12:36Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v0.52.0",
"date": "2025-05-06T20:14:44Z"
},
{
"name": "runtipi/runtipi",
"version": "v4.0.2",
"date": "2025-05-01T16:10:58Z"
},
{ {
"name": "redis/redis", "name": "redis/redis",
"version": "8.0.1-int", "version": "8.0.1-int",
@@ -94,16 +299,6 @@
"version": "v0.19.0", "version": "v0.19.0",
"date": "2025-05-06T18:05:42Z" "date": "2025-05-06T18:05:42Z"
}, },
{
"name": "HabitRPG/habitica",
"version": "v5.36.2",
"date": "2025-05-06T17:32:30Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w19-4.13.0",
"date": "2025-05-06T15:59:45Z"
},
{ {
"name": "jenkinsci/jenkins", "name": "jenkinsci/jenkins",
"version": "jenkins-2.509", "version": "jenkins-2.509",
@@ -124,26 +319,11 @@
"version": "v0.107.61", "version": "v0.107.61",
"date": "2025-04-22T12:42:26Z" "date": "2025-04-22T12:42:26Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v2.65.8",
"date": "2025-05-06T13:57:49Z"
},
{ {
"name": "element-hq/synapse", "name": "element-hq/synapse",
"version": "v1.129.0", "version": "v1.129.0",
"date": "2025-05-06T12:28:54Z" "date": "2025-05-06T12:28:54Z"
}, },
{
"name": "nzbgetcom/nzbget",
"version": "v24.8",
"date": "2025-03-18T07:33:51Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.91.2",
"date": "2025-05-05T12:59:51Z"
},
{ {
"name": "Luligu/matterbridge", "name": "Luligu/matterbridge",
"version": "3.0.1", "version": "3.0.1",
@@ -154,21 +334,6 @@
"version": "v1.29.6", "version": "v1.29.6",
"date": "2025-05-06T07:57:02Z" "date": "2025-05-06T07:57:02Z"
}, },
{
"name": "mattermost/mattermost",
"version": "v9.11.14",
"date": "2025-05-05T17:50:53Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.4.0",
"date": "2025-05-06T06:47:16Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.1",
"date": "2025-01-01T16:15:52Z"
},
{ {
"name": "linkwarden/linkwarden", "name": "linkwarden/linkwarden",
"version": "v2.10.2", "version": "v2.10.2",
@@ -199,11 +364,6 @@
"version": "v12.0.0", "version": "v12.0.0",
"date": "2025-05-05T18:28:19Z" "date": "2025-05-05T18:28:19Z"
}, },
{
"name": "BookStackApp/BookStack",
"version": "v25.02.3",
"date": "2025-05-05T17:39:11Z"
},
{ {
"name": "apache/couchdb", "name": "apache/couchdb",
"version": "3.5.0", "version": "3.5.0",
@@ -229,31 +389,11 @@
"version": "v3.4.0", "version": "v3.4.0",
"date": "2025-05-05T13:59:23Z" "date": "2025-05-05T13:59:23Z"
}, },
{
"name": "semaphoreui/semaphore",
"version": "v2.14.9",
"date": "2025-05-05T12:20:38Z"
},
{
"name": "theonedev/onedev",
"version": "v11.9.3",
"date": "2025-05-05T10:22:11Z"
},
{ {
"name": "evcc-io/evcc", "name": "evcc-io/evcc",
"version": "0.203.5", "version": "0.203.5",
"date": "2025-05-05T06:41:02Z" "date": "2025-05-05T06:41:02Z"
}, },
{
"name": "MediaBrowser/Emby.Releases",
"version": "4.8.11.0",
"date": "2025-03-10T06:39:11Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.12",
"date": "2025-04-20T19:22:17Z"
},
{ {
"name": "moghtech/komodo", "name": "moghtech/komodo",
"version": "v1.17.5", "version": "v1.17.5",
@@ -264,11 +404,6 @@
"version": "debian/12.0.16", "version": "debian/12.0.16",
"date": "2025-05-04T22:06:15Z" "date": "2025-05-04T22:06:15Z"
}, },
{
"name": "juanfont/headscale",
"version": "v0.25.1",
"date": "2025-02-25T17:30:48Z"
},
{ {
"name": "Lidarr/Lidarr", "name": "Lidarr/Lidarr",
"version": "v2.11.2.4629", "version": "v2.11.2.4629",
@@ -279,26 +414,11 @@
"version": "v2.0.0.4645", "version": "v2.0.0.4645",
"date": "2017-03-07T18:56:06Z" "date": "2017-03-07T18:56:06Z"
}, },
{
"name": "Prowlarr/Prowlarr",
"version": "v1.35.1.5034",
"date": "2025-04-30T11:02:36Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.22.4.9896",
"date": "2025-04-23T18:51:12Z"
},
{ {
"name": "bastienwirtz/homer", "name": "bastienwirtz/homer",
"version": "v25.05.1", "version": "v25.05.1",
"date": "2025-05-04T12:17:00Z" "date": "2025-05-04T12:17:00Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.6.8",
"date": "2025-05-03T22:56:44Z"
},
{ {
"name": "FreshRSS/FreshRSS", "name": "FreshRSS/FreshRSS",
"version": "1.26.2", "version": "1.26.2",
@@ -309,11 +429,6 @@
"version": "v25.5.0", "version": "v25.5.0",
"date": "2025-05-03T19:03:17Z" "date": "2025-05-03T19:03:17Z"
}, },
{
"name": "owncast/owncast",
"version": "v0.2.2",
"date": "2025-05-03T18:45:34Z"
},
{ {
"name": "rogerfar/rdt-client", "name": "rogerfar/rdt-client",
"version": "v2.0.111", "version": "v2.0.111",
@@ -324,11 +439,6 @@
"version": "0.49.16", "version": "0.49.16",
"date": "2025-05-03T14:44:01Z" "date": "2025-05-03T14:44:01Z"
}, },
{
"name": "ellite/Wallos",
"version": "v3.0.2",
"date": "2025-05-03T13:38:57Z"
},
{ {
"name": "blakeblackshear/frigate", "name": "blakeblackshear/frigate",
"version": "v0.14.1", "version": "v0.14.1",
@@ -339,26 +449,11 @@
"version": "2.33.0", "version": "2.33.0",
"date": "2025-05-03T10:33:49Z" "date": "2025-05-03T10:33:49Z"
}, },
{
"name": "Brandawg93/PeaNUT",
"version": "v5.7.4",
"date": "2025-05-02T23:41:08Z"
},
{ {
"name": "documenso/documenso", "name": "documenso/documenso",
"version": "v1.10.3", "version": "v1.10.3",
"date": "2025-05-02T23:23:25Z" "date": "2025-05-02T23:23:25Z"
}, },
{
"name": "homarr-labs/homarr",
"version": "v1.19.0",
"date": "2025-05-02T19:15:25Z"
},
{
"name": "coder/code-server",
"version": "v4.99.4",
"date": "2025-05-02T18:33:09Z"
},
{ {
"name": "prometheus/prometheus", "name": "prometheus/prometheus",
"version": "v0.304.0-rc.0", "version": "v0.304.0-rc.0",
@@ -404,16 +499,6 @@
"version": "v4.3.0", "version": "v4.3.0",
"date": "2025-05-01T16:46:17Z" "date": "2025-05-01T16:46:17Z"
}, },
{
"name": "NodeBB/NodeBB",
"version": "v4.3.0",
"date": "2025-05-01T04:13:41Z"
},
{
"name": "readeck/readeck",
"version": "0.18.1",
"date": "2025-04-30T17:44:46Z"
},
{ {
"name": "WordPress/WordPress", "name": "WordPress/WordPress",
"version": "6.8.1", "version": "6.8.1",
@@ -439,11 +524,6 @@
"version": "version/2025.4.0", "version": "version/2025.4.0",
"date": "2025-04-30T12:34:14Z" "date": "2025-04-30T12:34:14Z"
}, },
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v0.46.0",
"date": "2025-04-30T07:05:42Z"
},
{ {
"name": "go-gitea/gitea", "name": "go-gitea/gitea",
"version": "v1.25.0-dev", "version": "v1.25.0-dev",
@@ -464,11 +544,6 @@
"version": "v1.4.7", "version": "v1.4.7",
"date": "2025-04-29T15:00:18Z" "date": "2025-04-29T15:00:18Z"
}, },
{
"name": "esphome/esphome",
"version": "2025.4.1",
"date": "2025-04-29T02:20:36Z"
},
{ {
"name": "henrygd/beszel", "name": "henrygd/beszel",
"version": "v0.11.1", "version": "v0.11.1",
@@ -489,16 +564,6 @@
"version": "v1.132.3", "version": "v1.132.3",
"date": "2025-04-28T14:11:06Z" "date": "2025-04-28T14:11:06Z"
}, },
{
"name": "pocketbase/pocketbase",
"version": "v0.27.2",
"date": "2025-04-28T12:03:30Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.116.0",
"date": "2025-04-28T11:30:10Z"
},
{ {
"name": "FlowiseAI/Flowise", "name": "FlowiseAI/Flowise",
"version": "flowise@2.2.8", "version": "flowise@2.2.8",
@@ -559,11 +624,6 @@
"version": "v2.1.0.117-2.1.0.117_canary_2025-04-25", "version": "v2.1.0.117-2.1.0.117_canary_2025-04-25",
"date": "2025-04-25T17:22:12Z" "date": "2025-04-25T17:22:12Z"
}, },
{
"name": "donaldzou/WGDashboard",
"version": "v4.2.2",
"date": "2025-04-25T07:42:03Z"
},
{ {
"name": "mongodb/mongo", "name": "mongodb/mongo",
"version": "r7.0.19", "version": "r7.0.19",
@@ -574,11 +634,6 @@
"version": "v1.4.0", "version": "v1.4.0",
"date": "2025-04-24T16:20:17Z" "date": "2025-04-24T16:20:17Z"
}, },
{
"name": "glpi-project/glpi",
"version": "10.0.18",
"date": "2025-02-12T11:07:02Z"
},
{ {
"name": "NLnetLabs/unbound", "name": "NLnetLabs/unbound",
"version": "release-1.23.0", "version": "release-1.23.0",
@@ -589,11 +644,6 @@
"version": "0.17.11", "version": "0.17.11",
"date": "2025-04-24T05:25:55Z" "date": "2025-04-24T05:25:55Z"
}, },
{
"name": "Kozea/Radicale",
"version": "v3.5.2",
"date": "2025-04-23T18:41:46Z"
},
{ {
"name": "minio/minio", "name": "minio/minio",
"version": "RELEASE.2025-04-22T22-12-26Z", "version": "RELEASE.2025-04-22T22-12-26Z",
@@ -709,26 +759,11 @@
"version": "4.5.1", "version": "4.5.1",
"date": "2025-04-11T09:57:47Z" "date": "2025-04-11T09:57:47Z"
}, },
{
"name": "outline/outline",
"version": "v0.83.0",
"date": "2025-04-11T03:53:10Z"
},
{ {
"name": "apache/cassandra", "name": "apache/cassandra",
"version": "cassandra-5.0.4", "version": "cassandra-5.0.4",
"date": "2025-04-10T16:32:00Z" "date": "2025-04-10T16:32:00Z"
}, },
{
"name": "pelican-dev/panel",
"version": "v1.0.0-beta19",
"date": "2025-04-07T23:06:29Z"
},
{
"name": "pelican-dev/wings",
"version": "v1.0.0-beta11",
"date": "2025-04-07T23:02:00Z"
},
{ {
"name": "Threadfin/Threadfin", "name": "Threadfin/Threadfin",
"version": "1.2.32", "version": "1.2.32",
@@ -744,11 +779,6 @@
"version": "21.0.1", "version": "21.0.1",
"date": "2025-04-06T19:22:59Z" "date": "2025-04-06T19:22:59Z"
}, },
{
"name": "stonith404/pingvin-share",
"version": "v1.11.1",
"date": "2025-04-06T18:39:42Z"
},
{ {
"name": "wavelog/wavelog", "name": "wavelog/wavelog",
"version": "2.0.3", "version": "2.0.3",
@@ -774,11 +804,6 @@
"version": "v0.55.2", "version": "v0.55.2",
"date": "2025-04-05T12:07:32Z" "date": "2025-04-05T12:07:32Z"
}, },
{
"name": "apache/tomcat",
"version": "9.0.104",
"date": "2025-04-04T12:58:11Z"
},
{ {
"name": "MagicMirrorOrg/MagicMirror", "name": "MagicMirrorOrg/MagicMirror",
"version": "v2.31.0", "version": "v2.31.0",
@@ -849,26 +874,11 @@
"version": "v1.34.0", "version": "v1.34.0",
"date": "2025-03-26T08:48:34Z" "date": "2025-03-26T08:48:34Z"
}, },
{
"name": "ipfs/kubo",
"version": "v0.34.1",
"date": "2025-03-25T18:11:12Z"
},
{ {
"name": "hansmi/prometheus-paperless-exporter", "name": "hansmi/prometheus-paperless-exporter",
"version": "v0.0.7", "version": "v0.0.7",
"date": "2025-03-25T15:11:18Z" "date": "2025-03-25T15:11:18Z"
}, },
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.8",
"date": "2025-03-25T13:33:10Z"
},
{
"name": "ZoeyVid/NPMplus",
"version": "2025-03-24-r2",
"date": "2025-03-24T20:52:35Z"
},
{ {
"name": "nextcloud/nextcloudpi", "name": "nextcloud/nextcloudpi",
"version": "v1.55.4", "version": "v1.55.4",
@@ -904,11 +914,6 @@
"version": "v0.22.1", "version": "v0.22.1",
"date": "2025-03-18T21:01:22Z" "date": "2025-03-18T21:01:22Z"
}, },
{
"name": "authelia/authelia",
"version": "v4.39.1",
"date": "2025-03-18T03:57:41Z"
},
{ {
"name": "Sonarr/Sonarr", "name": "Sonarr/Sonarr",
"version": "v4.0.14.2939", "version": "v4.0.14.2939",
@@ -954,11 +959,6 @@
"version": "v2.4.2", "version": "v2.4.2",
"date": "2025-03-08T10:49:04Z" "date": "2025-03-08T10:49:04Z"
}, },
{
"name": "umami-software/umami",
"version": "v2.17.0",
"date": "2025-03-08T06:08:04Z"
},
{ {
"name": "prometheus/alertmanager", "name": "prometheus/alertmanager",
"version": "v0.28.1", "version": "v0.28.1",

View File

@@ -34,4 +34,9 @@ export const FAQ_Items = [
content: content:
"If an LXC script fails, run it again using Verbose mode. Standard mode hides detailed output for neatness, showing only progress. Verbose mode displays all messages, which helps you (and us) diagnose the error. Include this verbose output if you report the issue.", "If an LXC script fails, run it again using Verbose mode. Standard mode hides detailed output for neatness, showing only progress. Verbose mode displays all messages, which helps you (and us) diagnose the error. Include this verbose output if you report the issue.",
}, },
{
title: "What does \"Updatable\" and \"Not updatable\" mean?",
content:
"Updatable means that script has a function that is used to update the installed application to the latest version available. Not updatable means that script doesn't have a function that can safely update the application to the latest version available, so only the LXC OS is updated.",
},
]; ];

View File

@@ -15,7 +15,6 @@ update_os
msg_info "Installing Dependencies (Patience)" msg_info "Installing Dependencies (Patience)"
$STD apt-get install -y \ $STD apt-get install -y \
gpg \
pkg-config \ pkg-config \
libffi-dev \ libffi-dev \
build-essential \ build-essential \
@@ -33,9 +32,15 @@ $STD apt-get install -y \
libxmlsec1-openssl \ libxmlsec1-openssl \
libmaxminddb0 \ libmaxminddb0 \
python3-pip \ python3-pip \
redis-server \
git git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_uv
PG_VERSION="16" install_postgresql
NODE_VERSION="22" install_node_and_modules
install_go
msg_info "Installing yq" msg_info "Installing yq"
cd /tmp cd /tmp
YQ_LATEST="$(curl -fsSL https://api.github.com/repos/mikefarah/yq/releases/latest | grep -Po '"tag_name": "\K.*?(?=")')" YQ_LATEST="$(curl -fsSL https://api.github.com/repos/mikefarah/yq/releases/latest | grep -Po '"tag_name": "\K.*?(?=")')"
@@ -56,46 +61,8 @@ cat <<EOF >/etc/GeoIP.conf
EOF EOF
msg_ok "Installed GeoIP" msg_ok "Installed GeoIP"
msg_info "Setting up Python 3"
cd /tmp
curl -fsSL "https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz" -o "Python.tgz"
tar -zxf Python.tgz
cd Python-3.12.1
$STD ./configure --enable-optimizations
$STD make altinstall
cd ~
$STD update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.12 1
msg_ok "Setup Python 3"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
msg_ok "Installed Node.js"
msg_info "Installing Golang"
set +o pipefail
temp_file=$(mktemp)
golang_tarball=$(curl -fsSL https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1)
curl -fsSL "https://golang.org/dl/${golang_tarball}" -o "$temp_file"
tar -C /usr/local -xzf "$temp_file"
ln -sf /usr/local/go/bin/go /usr/local/bin/go
rm -f "$temp_file"
set -o pipefail
msg_ok "Installed Golang"
msg_info "Installing Redis"
$STD apt-get install -y redis-server
systemctl enable -q --now redis-server
msg_ok "Installed Redis"
msg_info "Installing PostgreSQL" msg_info "Installing PostgreSQL"
$STD apt-get install -y postgresql postgresql-contrib $STD apt-get install -y postgresql-16 postgresql-contrib-16
DB_NAME="authentik" DB_NAME="authentik"
DB_USER="authentik" DB_USER="authentik"
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)" DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
@@ -111,25 +78,29 @@ RELEASE=$(curl -fsSL https://api.github.com/repos/goauthentik/authentik/releases
mkdir -p /opt/authentik mkdir -p /opt/authentik
curl -fsSL "${RELEASE}" -o "authentik.tar.gz" curl -fsSL "${RELEASE}" -o "authentik.tar.gz"
tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite
export NODE_OPTIONS="--max-old-space-size=4096"
cd /opt/authentik/website cd /opt/authentik/website
$STD npm install $STD npm install
$STD npm run build-bundled $STD npm run build-bundled
cd /opt/authentik/web cd /opt/authentik/web
$STD npm install $STD npm install
$STD npm run build $STD npm run build
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
cd /opt/authentik cd /opt/authentik
$STD go mod download $STD go mod download
$STD go build -o /go/authentik ./cmd/server $STD go build -o /go/authentik ./cmd/server
$STD go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/ $STD go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
cd /opt/authentik $STD uv sync --frozen --no-install-project --no-dev
$STD pip3 install --upgrade pip #$STD pip3 install --no-cache-dir --upgrade pip
$STD pip3 install poetry poetry-plugin-export #$STD pip3 install --upgrade pip
ln -s /usr/local/bin/poetry /usr/bin/poetry #$STD pip3 install poetry poetry-plugin-export
$STD poetry install --only=main --no-ansi --no-interaction --no-root
$STD poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt #ln -s /usr/local/bin/poetry /usr/bin/poetry
$STD pip install --no-cache-dir -r requirements.txt #$STD poetry install --only=main --no-ansi --no-interaction --no-root
$STD pip install . #$STD poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt
#$STD pip install --no-cache-dir -r requirements.txt
#$STD pip install .
mkdir -p /etc/authentik mkdir -p /etc/authentik
mv /opt/authentik/authentik/lib/default.yml /etc/authentik/config.yml mv /opt/authentik/authentik/lib/default.yml /etc/authentik/config.yml
$STD yq -i ".secret_key = \"$(openssl rand -hex 32)\"" /etc/authentik/config.yml $STD yq -i ".secret_key = \"$(openssl rand -hex 32)\"" /etc/authentik/config.yml
@@ -137,23 +108,30 @@ $STD yq -i ".postgresql.password = \"${DB_PASS}\"" /etc/authentik/config.yml
$STD yq -i ".geoip = \"/opt/authentik/tests/GeoLite2-City-Test.mmdb\"" /etc/authentik/config.yml $STD yq -i ".geoip = \"/opt/authentik/tests/GeoLite2-City-Test.mmdb\"" /etc/authentik/config.yml
cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints
$STD yq -i ".blueprints_dir = \"/opt/authentik/blueprints\"" /etc/authentik/config.yml $STD yq -i ".blueprints_dir = \"/opt/authentik/blueprints\"" /etc/authentik/config.yml
ln -s /usr/bin/python3 /usr/bin/python #ln -s /usr/bin/python3 /usr/bin/python
ln -s /usr/local/bin/gunicorn /usr/bin/gunicorn #ln -s /usr/local/bin/gunicorn /usr/bin/gunicorn
ln -s /usr/local/bin/celery /usr/bin/celery #ln -s /usr/local/bin/celery /usr/bin/celery
$STD bash /opt/authentik/lifecycle/ak migrate #$STD bash /opt/authentik/lifecycle/ak migrate
cd ~ cd /opt/authentik
uv run python -m lifecycle.migrate
ln -s /opt/authentik/.venv/bin/gunicorn /usr/local/bin/gunicorn
ln -s /opt/authentik/.venv/bin/celery /usr/local/bin/celery
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed authentik" msg_ok "Installed authentik"
msg_info "Creating Services" msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/authentik-server.service cat <<EOF >/etc/systemd/system/authentik-server.service
[Unit] [Unit]
Description = authentik Server Description=authentik Go Server (API Gateway)
After=network.target
Wants=redis.service postgresql.service
[Service] [Service]
ExecStart=/opt/authentik/authentik-server
WorkingDirectory=/opt/authentik/ WorkingDirectory=/opt/authentik/
ExecStart=/opt/authentik/authentik-server
Restart=always Restart=always
RestartSec=5 RestartSec=5
Environment=DJANGO_SETTINGS_MODULE=authentik.root.settings
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@@ -161,21 +139,49 @@ EOF
cat <<EOF >/etc/systemd/system/authentik-worker.service cat <<EOF >/etc/systemd/system/authentik-worker.service
[Unit] [Unit]
Description = authentik Worker Description=authentik Celery Worker
After=network.target redis.service postgresql.service
Requires=redis.service
[Service] [Service]
Environment=DJANGO_SETTINGS_MODULE="authentik.root.settings" Type=simple
ExecStart=celery -A authentik.root.celery worker -Ofair --max-tasks-per-child=1 --autoscale 3,1 -E -B -s /tmp/celerybeat-schedule -Q authentik,authentik_scheduled,authentik_events WorkingDirectory=/opt/authentik
WorkingDirectory=/opt/authentik/authentik ExecStart=/opt/authentik/.venv/bin/celery \
-A authentik.root.celery worker \
-Ofair \
--max-tasks-per-child=1 \
--autoscale 3,1 \
-Q authentik,authentik_scheduled,authentik_events \
-E
Restart=always Restart=always
RestartSec=5 RestartSec=5
Environment=DJANGO_SETTINGS_MODULE=authentik.root.settings
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now authentik-server
sleep 2 cat <<EOF >/etc/systemd/system/authentik-celery-beat.service
systemctl enable -q --now authentik-worker [Unit]
Description=authentik Celery Beat Scheduler
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/authentik
ExecStart=/opt/authentik/.venv/bin/celery \
-A authentik.root.celery beat \
-s /tmp/celerybeat-schedule
Restart=always
RestartSec=5
#User=authentik
Environment=DJANGO_SETTINGS_MODULE=authentik.root.settings
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now authentik-server authentik-worker authentik-celery-beat
msg_ok "Created Services" msg_ok "Created Services"
motd_ssh motd_ssh

View File

@@ -26,7 +26,7 @@ mkdir -p /var/lib/bazarr/
curl -fsSL "https://github.com/morpheus65535/bazarr/releases/latest/download/bazarr.zip" -o $(basename "https://github.com/morpheus65535/bazarr/releases/latest/download/bazarr.zip") curl -fsSL "https://github.com/morpheus65535/bazarr/releases/latest/download/bazarr.zip" -o $(basename "https://github.com/morpheus65535/bazarr/releases/latest/download/bazarr.zip")
unzip -qq bazarr -d /opt/bazarr unzip -qq bazarr -d /opt/bazarr
chmod 775 /opt/bazarr /var/lib/bazarr/ chmod 775 /opt/bazarr /var/lib/bazarr/
python3 -m pip install -q -r /opt/bazarr/requirements.txt $STD python3 -m pip install -q -r /opt/bazarr/requirements.txt
msg_ok "Installed Bazarr" msg_ok "Installed Bazarr"
msg_info "Creating Service" msg_info "Creating Service"

View File

@@ -73,9 +73,7 @@ sed -i \
-e "s|^NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=.*|NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ -e "s|^NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=.*|NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \
-e "s|^DOCUMENSO_ENCRYPTION_KEY=.*|DOCUMENSO_ENCRYPTION_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ -e "s|^DOCUMENSO_ENCRYPTION_KEY=.*|DOCUMENSO_ENCRYPTION_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \
-e "s|^DOCUMENSO_ENCRYPTION_SECONDARY_KEY=.*|DOCUMENSO_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ -e "s|^DOCUMENSO_ENCRYPTION_SECONDARY_KEY=.*|DOCUMENSO_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \
-e "s|^NEXTAUTH_URL=.*|NEXTAUTH_URL=\"http://${LOCAL_IP}:3000\"|" \ -e "s|^NEXT_PUBLIC_WEBAPP_URL=.*|NEXT_PUBLIC_WEBAPP_URL='http://${LOCAL_IP}:3000'|" \
-e "s|^NEXT_PUBLIC_WEBAPP_URL=.*|NEXT_PUBLIC_WEBAPP_URL='http://${LOCAL_IP}:9000'|" \
-e "s|^NEXT_PUBLIC_MARKETING_URL=.*|NEXT_PUBLIC_MARKETING_URL=\"http://${LOCAL_IP}:3001\"|" \
-e "s|^NEXT_PRIVATE_INTERNAL_WEBAPP_URL=.*|NEXT_PRIVATE_INTERNAL_WEBAPP_URL=\"http://${LOCAL_IP}:3000\"|" \ -e "s|^NEXT_PRIVATE_INTERNAL_WEBAPP_URL=.*|NEXT_PRIVATE_INTERNAL_WEBAPP_URL=\"http://${LOCAL_IP}:3000\"|" \
-e "s|^NEXT_PRIVATE_DATABASE_URL=.*|NEXT_PRIVATE_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \ -e "s|^NEXT_PRIVATE_DATABASE_URL=.*|NEXT_PRIVATE_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \
-e "s|^NEXT_PRIVATE_DIRECT_DATABASE_URL=.*|NEXT_PRIVATE_DIRECT_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \ -e "s|^NEXT_PRIVATE_DIRECT_DATABASE_URL=.*|NEXT_PRIVATE_DIRECT_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \
@@ -85,7 +83,7 @@ export NEXT_TELEMETRY_DISABLED=1
export CYPRESS_INSTALL_BINARY=0 export CYPRESS_INSTALL_BINARY=0
export NODE_OPTIONS="--max-old-space-size=4096" export NODE_OPTIONS="--max-old-space-size=4096"
$STD npm ci $STD npm ci
$STD npm run build:web $STD turbo run build --filter=@documenso/remix
$STD npm run prisma:migrate-deploy $STD npm run prisma:migrate-deploy
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Documenso" msg_ok "Installed Documenso"
@@ -103,8 +101,8 @@ Description=Documenso Service
After=network.target postgresql.service After=network.target postgresql.service
[Service] [Service]
WorkingDirectory=/opt/documenso/apps/web WorkingDirectory=/opt/documenso
ExecStart=/usr/bin/npm start ExecStart=/usr/bin/turbo run start --filter=@documenso/remix
Restart=always Restart=always
EnvironmentFile=/opt/documenso/.env EnvironmentFile=/opt/documenso/.env
@@ -118,6 +116,7 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD turbo daemon stop
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -46,29 +46,33 @@ $STD apt-get install -y \
pkg-config pkg-config
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_uv
msg_info "Setup Python3" msg_info "Setup Python3"
$STD apt-get update
$STD rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
$STD apt-get remove --purge -y python3.12 python3.12-dev python3.12-venv
$STD apt-get install -y \ $STD apt-get install -y \
python3.13 \ python3.13 \
python3-pip \
python3.13-dev \ python3.13-dev \
python3.13-venv python3.13-venv
ln -sf /usr/bin/python3.13 /usr/bin/python3
msg_ok "Setup Python3" msg_ok "Setup Python3"
msg_info "Preparing Python 3.13 for uv"
$STD uv python install 3.13
UV_PYTHON=$(uv python list | awk '/3\.13\.[0-9]+.*\/root\/.local/ {print $2; exit}')
if [[ -z "$UV_PYTHON" ]]; then
msg_error "No local Python 3.13 found via uv"
exit 1
fi
msg_ok "Prepared Python 3.13"
msg_info "Setting up Home Assistant-Core environment" msg_info "Setting up Home Assistant-Core environment"
mkdir /srv/homeassistant rm -rf /srv/homeassistant
mkdir -p /srv/homeassistant
cd /srv/homeassistant cd /srv/homeassistant
python3 -m venv . $STD uv venv .venv --python "$UV_PYTHON"
source bin/activate source .venv/bin/activate
msg_ok "Created virtual environment" msg_ok "Created virtual environment"
msg_info "Installing Home Assistant-Core" msg_info "Installing Home Assistant-Core"
$STD python3 -m pip install webrtcvad wheel homeassistant mysqlclient psycopg2-binary isal $STD uv pip install homeassistant mysqlclient psycopg2-binary isal webrtcvad wheel
mkdir -p /root/.homeassistant mkdir -p /root/.homeassistant
msg_ok "Installed Home Assistant-Core" msg_ok "Installed Home Assistant-Core"
@@ -77,16 +81,19 @@ cat <<EOF >/etc/systemd/system/homeassistant.service
[Unit] [Unit]
Description=Home Assistant Description=Home Assistant
After=network-online.target After=network-online.target
[Service] [Service]
Type=simple Type=simple
WorkingDirectory=/root/.homeassistant WorkingDirectory=/root/.homeassistant
Environment="PATH=/srv/homeassistant/bin:/usr/local/bin:/usr/bin:/usr/local/bin/uv" Environment="PATH=/srv/homeassistant/.venv/bin:/usr/local/bin:/usr/bin"
ExecStart=/srv/homeassistant/bin/python3 -m homeassistant --config /root/.homeassistant ExecStart=/srv/homeassistant/.venv/bin/python3 -m homeassistant --config /root/.homeassistant
Restart=always Restart=always
RestartForceExitStatus=100 RestartForceExitStatus=100
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now homeassistant systemctl enable -q --now homeassistant
msg_ok "Created Service" msg_ok "Created Service"

View File

@@ -15,30 +15,18 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y \
gnupg \
git \ git \
build-essential build-essential
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
msg_ok "Installed Node.js"
git clone -q https://github.com/Fallenbagel/jellyseerr.git /opt/jellyseerr git clone -q https://github.com/Fallenbagel/jellyseerr.git /opt/jellyseerr
cd /opt/jellyseerr cd /opt/jellyseerr
$STD git checkout main $STD git checkout main
pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json) pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json)
msg_info "Installing pnpm version $pnpm_desired..." NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" install_node_and_modules
$STD npm install -g pnpm@$pnpm_desired
msg_ok "Installed pnpm"
msg_info "Installing Jellyseerr (Patience)" msg_info "Installing Jellyseerr (Patience)"
export CYPRESS_INSTALL_BINARY=0 export CYPRESS_INSTALL_BINARY=0

View File

@@ -40,7 +40,7 @@ sudo -u searxng python3 -m venv /usr/local/searxng/searx-pyenv
source /usr/local/searxng/searx-pyenv/bin/activate source /usr/local/searxng/searx-pyenv/bin/activate
$STD pip install --upgrade pip setuptools wheel $STD pip install --upgrade pip setuptools wheel
$STD pip install pyyaml $STD pip install pyyaml
$STD pip install -e /usr/local/searxng/searxng-src $STD pip install --use-pep517 --no-build-isolation -e /usr/local/searxng/searxng-src
SECRET_KEY=$(openssl rand -hex 32) SECRET_KEY=$(openssl rand -hex 32)
cat <<EOF >/etc/searxng/settings.yml cat <<EOF >/etc/searxng/settings.yml
# SearXNG settings # SearXNG settings

View File

@@ -30,7 +30,8 @@ $STD apt-get -y install elasticsearch
echo "-Xms2g" >>/etc/elasticsearch/jvm.options echo "-Xms2g" >>/etc/elasticsearch/jvm.options
echo "-Xmx2g" >>/etc/elasticsearch/jvm.options echo "-Xmx2g" >>/etc/elasticsearch/jvm.options
$STD /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment -b $STD /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment -b
systemctl -q restart elasticsearch systemctl enable -q elasticsearch
systemctl restart -q elasticsearch
msg_ok "Setup Elasticsearch" msg_ok "Setup Elasticsearch"
msg_info "Installing Zammad" msg_info "Installing Zammad"

View File

@@ -190,10 +190,29 @@ validate_tz() {
customize() { customize() {
if [[ "$PASSWORD" == "" ]]; then if [[ "$PASSWORD" == "" ]]; then
msg_info "Customizing Container" msg_info "Customizing Container"
bash -c "passwd -d root" >/dev/null 2>&1 passwd -d root >/dev/null 2>&1
# Ensure agetty is available
apk add --no-cache --force-broken-world util-linux >/dev/null 2>&1
# Create persistent autologin boot script
mkdir -p /etc/local.d
cat <<'EOF' >/etc/local.d/autologin.start
#!/bin/sh
sed -i 's|^tty1::respawn:.*|tty1::respawn:/sbin/agetty --autologin root --noclear tty1 38400 linux|' /etc/inittab
kill -HUP 1
EOF
touch /root/.hushlogin
chmod +x /etc/local.d/autologin.start
rc-update add local >/dev/null 2>&1
# Apply autologin immediately for current session
/etc/local.d/autologin.start
msg_ok "Customized Container" msg_ok "Customized Container"
fi fi
echo "bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/${app}.sh)\"" >/usr/bin/update echo "bash -c \"\$(curl -fsSL https://github.com/community-scripts/ProxmoxVE/raw/main/ct/${app}.sh)\"" >/usr/bin/update
chmod +x /usr/bin/update chmod +x /usr/bin/update
} }

View File

@@ -528,15 +528,17 @@ advanced_settings() {
exit_script exit_script
fi fi
if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Bridge" 8 58 vmbr0 --title "BRIDGE" 3>&1 1>&2 2>&3); then BRIDGES=$( ip link show | grep -oP '(?<=: )vmbr\d+' | sort)
if [ -z "$BRG" ]; then if [[ -z "$BRIDGES" ]]; then
BRG="vmbr0" BRG="vmbr0"
echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}"
else
BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --menu "Select network bridge:" 15 40 6 $(echo "$BRIDGES" | awk '{print $0, "Bridge"}') 3>&1 1>&2 2>&3)
if [ -z "$BRG" ]; then
exit_script
else else
echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}"
fi fi
else
exit_script
fi fi
while true; do while true; do

View File

@@ -479,7 +479,7 @@ install_mongodb() {
fetch_and_deploy_gh_release() { fetch_and_deploy_gh_release() {
local repo="$1" local repo="$1"
local app=$(echo ${APPLICATION,,} | tr -d ' ') local app=${APP:-$(echo "${APPLICATION,,}" | tr -d ' ')}
local api_url="https://api.github.com/repos/$repo/releases/latest" local api_url="https://api.github.com/repos/$repo/releases/latest"
local header=() local header=()
local attempt=0 local attempt=0

View File

@@ -114,8 +114,8 @@ function msg_ok() {
} }
function default_settings() { function default_settings() {
METHOD="default" METHOD="default"
echo -e "${DGN}Using Virtual Machine ID: ${BGN}$NEXTID${CL}" VMID=$(get_valid_nextid)
VMID=$NEXTID echo -e "${DGN}Using Virtual Machine ID: ${BGN}$VMID${CL}"
echo -e "${DGN}Using Hostname: ${BGN}mikrotik-routeros-chr${CL}" echo -e "${DGN}Using Hostname: ${BGN}mikrotik-routeros-chr${CL}"
HN=mikrotik-routeros-chr HN=mikrotik-routeros-chr
echo -e "${DGN}Allocated Cores: ${BGN}1${CL}" echo -e "${DGN}Allocated Cores: ${BGN}1${CL}"
@@ -136,7 +136,8 @@ function default_settings() {
} }
function advanced_settings() { function advanced_settings() {
METHOD="advanced" METHOD="advanced"
VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" 3>&1 1>&2 2>&3) [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" 3>&1 1>&2 2>&3)
exitstatus=$? exitstatus=$?
if [ $exitstatus = 0 ]; then if [ $exitstatus = 0 ]; then
echo -e "${DGN}Using Virtual Machine ID: ${BGN}$VMID${CL}" echo -e "${DGN}Using Virtual Machine ID: ${BGN}$VMID${CL}"

View File

@@ -223,7 +223,7 @@ function exit-script() {
} }
function default_settings() { function default_settings() {
VMID=$NEXTID VMID=$(get_valid_nextid)
HN=openwrt HN=openwrt
CORE_COUNT="1" CORE_COUNT="1"
RAM_SIZE="256" RAM_SIZE="256"

View File

@@ -137,8 +137,8 @@ function default_settings() {
METHOD="default" METHOD="default"
echo -e "${DGN}Using HAOS Version: ${BGN}${STABLE}${CL}" echo -e "${DGN}Using HAOS Version: ${BGN}${STABLE}${CL}"
BRANCH=${STABLE} BRANCH=${STABLE}
echo -e "${DGN}Using Virtual Machine ID: ${BGN}$NEXTID${CL}" VMID=$(get_valid_nextid)
VMID=$NEXTID echo -e "${DGN}Using Virtual Machine ID: ${BGN}$VMID${CL}"
echo -e "${DGN}Using Hostname: ${BGN}haos${STABLE}${CL}" echo -e "${DGN}Using Hostname: ${BGN}haos${STABLE}${CL}"
HN=haos${STABLE} HN=haos${STABLE}
echo -e "${DGN}Allocated Cores: ${BGN}2${CL}" echo -e "${DGN}Allocated Cores: ${BGN}2${CL}"
@@ -166,10 +166,11 @@ function advanced_settings() {
3>&1 1>&2 2>&3) 3>&1 1>&2 2>&3)
exitstatus=$? exitstatus=$?
if [ $exitstatus = 0 ]; then echo -e "${DGN}Using HAOS Version: ${BGN}$BRANCH${CL}"; fi if [ $exitstatus = 0 ]; then echo -e "${DGN}Using HAOS Version: ${BGN}$BRANCH${CL}"; fi
VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3) [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3)
exitstatus=$? exitstatus=$?
if [ -z $VMID ]; then if [ -z $VMID ]; then
VMID="$NEXTID" VMID="$VMID"
echo -e "${DGN}Virtual Machine: ${BGN}$VMID${CL}" echo -e "${DGN}Virtual Machine: ${BGN}$VMID${CL}"
else else
if echo "$USEDID" | egrep -q "$VMID"; then if echo "$USEDID" | egrep -q "$VMID"; then