mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-05-16 08:40:25 +00:00
Compare commits
136 Commits
2025-05-07
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
f6d411b992 | ||
|
9359f6d883 | ||
|
b021a2c139 | ||
|
4de228d41b | ||
|
7d2e8eaaad | ||
|
ce69a571bc | ||
|
1fdda378ac | ||
|
7b62fd4866 | ||
|
0da24e2651 | ||
|
fd689e94ed | ||
|
47155ac280 | ||
|
aa57bac96d | ||
|
24d730c120 | ||
|
de9ae6eaa9 | ||
|
4fd065a4bd | ||
|
e26aac187b | ||
|
5e63b70e83 | ||
|
292ab6e54b | ||
|
7d924fac27 | ||
|
4b31957617 | ||
|
35c99ae503 | ||
|
62189321cc | ||
|
59dfdc9af6 | ||
|
19cf4d3dc2 | ||
|
369265a6d5 | ||
|
56f8306960 | ||
|
3daf3c3325 | ||
|
c36000a6aa | ||
|
12265b92e7 | ||
|
4e31445038 | ||
|
c30f96912d | ||
|
e3860c065e | ||
|
110b64df85 | ||
|
e17f7aa6f1 | ||
|
b4d98b1dd2 | ||
|
e24636133d | ||
|
7d0a964918 | ||
|
38c7e747bc | ||
|
180e003978 | ||
|
4762ea8fae | ||
|
4ec3af8e45 | ||
|
b816ca6788 | ||
|
d703a8abb2 | ||
|
4a1f87727b | ||
|
16c0d09d6b | ||
|
7740ab68f7 | ||
|
cd61025295 | ||
|
2695e2de1a | ||
|
7aea03034a | ||
|
e9960347bf | ||
|
3808d4d0b8 | ||
|
14c5bf5f75 | ||
|
fcc16ae8e1 | ||
|
aaf8bdb893 | ||
|
db81851db4 | ||
|
a2d92155a5 | ||
|
0bd18cc91b | ||
|
1e7981dbb7 | ||
|
704073cd69 | ||
|
22e1518951 | ||
|
57bd730233 | ||
|
cf1b13e5fb | ||
|
9a3b2c076d | ||
|
3981cc90c4 | ||
|
592d9d03aa | ||
|
59b00890f9 | ||
|
7ee57e7416 | ||
|
82a30df0c9 | ||
|
10e1d7e741 | ||
|
f85cddadcf | ||
|
1700291af7 | ||
|
e126e48439 | ||
|
b3bda56498 | ||
|
e59f868966 | ||
|
a9b53afcc5 | ||
|
38cf296a4c | ||
|
35c0d269ac | ||
|
d7211e856e | ||
|
dfbb1a8035 | ||
|
61b09e926a | ||
|
9140fd52ac | ||
|
4a3ee4db67 | ||
|
b333d8c3f9 | ||
|
245b35d01e | ||
|
37d20ba0dd | ||
|
b5062c51af | ||
|
1ea830c955 | ||
|
be31ecf432 | ||
|
c586dfe87f | ||
|
7f65be34ff | ||
|
c158dbb3ea | ||
|
95acf8c018 | ||
|
6c5aa6677a | ||
|
43ff379ed4 | ||
|
2c2849179a | ||
|
d116505ff2 | ||
|
42535e14ab | ||
|
990ce16a7d | ||
|
af1cf0bc71 | ||
|
e166115745 | ||
|
bdef92cc71 | ||
|
1e59c934ec | ||
|
456b00882d | ||
|
9b8a30c84f | ||
|
3b90e3fe15 | ||
|
5e3a5bb24c | ||
|
7413a03009 | ||
|
bb1c9d73c4 | ||
|
3b5a901832 | ||
|
a62a4876ec | ||
|
9d21ceacc3 | ||
|
c604aeb064 | ||
|
9b9ed2f6e1 | ||
|
1ddc74d2b5 | ||
|
ee9f6dd818 | ||
|
a1754dff4e | ||
|
4827a17ba3 | ||
|
b5ed7b9f4e | ||
|
ab9760194d | ||
|
abb5b6d5ac | ||
|
4656fe21f9 | ||
|
93e503eb87 | ||
|
6ab80dc5e3 | ||
|
ceaff9006a | ||
|
c749fe6fb0 | ||
|
402586756f | ||
|
19800da808 | ||
|
d62da0c982 | ||
|
41df1d5a76 | ||
|
bcdf8f15e7 | ||
|
326cbc3bec | ||
|
607d966322 | ||
|
69298090ce | ||
|
9c7d50fdff | ||
|
fabbe8fe59 | ||
|
6abb55ba86 |
14
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
vendored
14
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
vendored
@ -108,13 +108,13 @@ Example:
|
||||
|
||||
```bash
|
||||
APP="SnipeIT"
|
||||
var_tags="asset-management;foss"
|
||||
var_cpu="2"
|
||||
var_ram="2048"
|
||||
var_disk="4"
|
||||
var_os="debian"
|
||||
var_version="12"
|
||||
var_unprivileged="1"
|
||||
var_tags="${var_tags:-asset-management;foss}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
```
|
||||
|
||||
## 2.2 **📋 App output & base settings**
|
||||
|
16
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh
vendored
16
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh
vendored
@ -6,22 +6,22 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# Source: [SOURCE_URL]
|
||||
|
||||
# App Default Values
|
||||
APP="[APP_NAME]"
|
||||
# Name of the app (e.g. Google, Adventurelog, Apache-Guacamole"
|
||||
var_tags="[TAGS]"
|
||||
APP="[APP_NAME]"
|
||||
# Tags for Proxmox VE, maximum 2 pcs., no spaces allowed, separated by a semicolon ; (e.g. database | adblock;dhcp)
|
||||
var_cpu="[CPU]"
|
||||
var_tags="${var_tags:-[TAGS]}"
|
||||
# Number of cores (1-X) (e.g. 4) - default are 2
|
||||
var_ram="[RAM]"
|
||||
var_cpu="${var_cpu:-[CPU]}"
|
||||
# Amount of used RAM in MB (e.g. 2048 or 4096)
|
||||
var_disk="[DISK]"
|
||||
var_ram="${var_ram:-[RAM]}"
|
||||
# Amount of used disk space in GB (e.g. 4 or 10)
|
||||
var_os="[OS]"
|
||||
var_disk="${var_disk:-[DISK]}"
|
||||
# Default OS (e.g. debian, ubuntu, alpine)
|
||||
var_version="[VERSION]"
|
||||
var_os="${var_os:-[OS]}"
|
||||
# Default OS version (e.g. 12 for debian, 24.04 for ubuntu, 3.20 for alpine)
|
||||
var_unprivileged="[UNPRIVILEGED]"
|
||||
var_version="${var_version:-[VERSION]}"
|
||||
# 1 = unprivileged container, 0 = privileged container
|
||||
var_unprivileged="${var_unprivileged:-[UNPRIVILEGED]}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
|
@ -152,7 +152,7 @@ Example for a git release:
|
||||
|
||||
```bash
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
|
||||
curl -fsSL "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
||||
```
|
||||
|
||||
### 5.2 **Save the version for update checks**
|
||||
@ -163,7 +163,7 @@ wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
|
||||
Example:
|
||||
|
||||
```bash
|
||||
echo "${RELEASE}" >"/opt/AppName_version.txt"
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
```
|
||||
|
||||
---
|
||||
@ -184,7 +184,7 @@ msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y ...
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
read -p "Do you wish to enable HTTPS mode? (y/N): " httpschoice
|
||||
read -p "${TAB3}Do you wish to enable HTTPS mode? (y/N): " httpschoice
|
||||
```
|
||||
|
||||
### 6.2 **Verbosity**
|
||||
|
@ -6,7 +6,7 @@
|
||||
# Source: [SOURCE_URL]
|
||||
|
||||
# Import Functions und Setup
|
||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
@ -35,11 +35,9 @@ $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH
|
||||
echo "Database User: $DB_USER"
|
||||
echo "Database Password: $DB_PASS"
|
||||
echo "Database Name: $DB_NAME"
|
||||
} >> ~/$APP_NAME.creds
|
||||
} >>~/"$APP_NAME".creds
|
||||
msg_ok "Set up Database"
|
||||
|
||||
# Temp
|
||||
|
||||
# Setup App
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/[REPO]/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
@ -49,12 +47,12 @@ mv "${APPLICATION}-${RELEASE}/" "/opt/${APPLICATION}"
|
||||
#
|
||||
#
|
||||
#
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
|
||||
msg_ok "Setup ${APPLICATION}"
|
||||
|
||||
# Creating Service (if needed)
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
|
||||
cat <<EOF >/etc/systemd/system/"${APPLICATION}".service
|
||||
[Unit]
|
||||
Description=${APPLICATION} Service
|
||||
After=network.target
|
||||
@ -66,7 +64,7 @@ Restart=always
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now ${APPLICATION}
|
||||
systemctl enable -q --now "${APPLICATION}"
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
@ -74,7 +72,7 @@ customize
|
||||
|
||||
# Cleanup
|
||||
msg_info "Cleaning up"
|
||||
rm -f ${RELEASE}.zip
|
||||
rm -f "${RELEASE}".zip
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
19
.github/workflows/auto-update-app-headers.yml
vendored
19
.github/workflows/auto-update-app-headers.yml
vendored
@ -5,11 +5,12 @@ on:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'ct/**.sh'
|
||||
- "ct/**.sh"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update-app-files:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: runner-cluster-htl-set
|
||||
|
||||
permissions:
|
||||
@ -24,6 +25,13 @@ jobs:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Generate a token for PR approval and merge
|
||||
id: generate-token-merge
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||
|
||||
# Step 1: Checkout repository
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
@ -90,14 +98,17 @@ jobs:
|
||||
gh pr review $PR_NUMBER --approve
|
||||
fi
|
||||
|
||||
- name: Re-approve pull request after update
|
||||
- name: Approve pull request and merge
|
||||
if: env.changed == 'true'
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
|
||||
run: |
|
||||
PR_NUMBER=$(gh pr list --head "pr-update-app-files" --json number --jq '.[].number')
|
||||
git config --global user.name "github-actions-automege[bot]"
|
||||
git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
|
||||
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
|
||||
|
||||
# Step 8: Output success message when no changes
|
||||
|
1
.github/workflows/autolabeler.yml
vendored
1
.github/workflows/autolabeler.yml
vendored
@ -7,6 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
autolabeler:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: runner-cluster-htl-set
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
15
.github/workflows/changelog-pr.yml
vendored
15
.github/workflows/changelog-pr.yml
vendored
@ -7,6 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
update-changelog-pull-request:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: runner-cluster-htl-set
|
||||
env:
|
||||
CONFIG_PATH: .github/changelog-pr-config.json
|
||||
@ -23,6 +24,13 @@ jobs:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Generate a token for PR approval and merge
|
||||
id: generate-token-merge
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
@ -263,12 +271,15 @@ jobs:
|
||||
gh pr review $PR_NUMBER --approve
|
||||
fi
|
||||
|
||||
- name: Re-approve pull request after update
|
||||
- name: Approve pull request and merge
|
||||
if: env.changed == 'true'
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
|
||||
run: |
|
||||
git config --global user.name "github-actions-automege[bot]"
|
||||
git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
|
||||
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
|
1
.github/workflows/close-discussion.yml
vendored
1
.github/workflows/close-discussion.yml
vendored
@ -11,6 +11,7 @@ permissions:
|
||||
|
||||
jobs:
|
||||
close-discussion:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: runner-cluster-htl-set
|
||||
|
||||
steps:
|
||||
|
1
.github/workflows/close-ttek-issues.yaml
vendored
1
.github/workflows/close-ttek-issues.yaml
vendored
@ -5,6 +5,7 @@ on:
|
||||
|
||||
jobs:
|
||||
close_tteck_issues:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Auto-close if tteck script detected
|
||||
|
2
.github/workflows/close_issue_in_dev.yaml
vendored
2
.github/workflows/close_issue_in_dev.yaml
vendored
@ -5,7 +5,7 @@ on:
|
||||
- closed
|
||||
jobs:
|
||||
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
|
||||
|
||||
steps:
|
||||
|
12
.github/workflows/crawl-versions.yaml
vendored
12
.github/workflows/crawl-versions.yaml
vendored
@ -12,6 +12,7 @@ permissions:
|
||||
|
||||
jobs:
|
||||
crawl-versions:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: runner-cluster-htl-set
|
||||
|
||||
steps:
|
||||
@ -103,6 +104,17 @@ jobs:
|
||||
gh pr review $PR_NUMBER --approve
|
||||
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
|
||||
if: env.changed == 'true'
|
||||
env:
|
||||
|
@ -11,6 +11,7 @@ on:
|
||||
|
||||
jobs:
|
||||
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
|
||||
|
||||
steps:
|
||||
|
1
.github/workflows/delete-json-branch.yml
vendored
1
.github/workflows/delete-json-branch.yml
vendored
@ -9,6 +9,7 @@ on:
|
||||
|
||||
jobs:
|
||||
delete_branch:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: runner-cluster-htl-set
|
||||
steps:
|
||||
- name: Checkout the code
|
||||
|
3
.github/workflows/frontend-cicd.yml
vendored
3
.github/workflows/frontend-cicd.yml
vendored
@ -25,6 +25,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: runner-cluster-htl-set
|
||||
defaults:
|
||||
run:
|
||||
@ -63,7 +64,7 @@ jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: github.ref == 'refs/heads/main'
|
||||
if: github.ref == 'refs/heads/main' && github.repository == 'community-scripts/ProxmoxVE'
|
||||
permissions:
|
||||
pages: write
|
||||
id-token: write
|
||||
|
1
.github/workflows/github-release.yml
vendored
1
.github/workflows/github-release.yml
vendored
@ -7,6 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
create-daily-release:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: runner-cluster-htl-set
|
||||
permissions:
|
||||
contents: write
|
||||
|
1
.github/workflows/script-test.yml
vendored
1
.github/workflows/script-test.yml
vendored
@ -11,6 +11,7 @@ on:
|
||||
|
||||
jobs:
|
||||
run-install-script:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: pvenode
|
||||
steps:
|
||||
- name: Checkout PR branch
|
||||
|
1
.github/workflows/script_format.yml
vendored
1
.github/workflows/script_format.yml
vendored
@ -11,6 +11,7 @@ on:
|
||||
|
||||
jobs:
|
||||
run-install-script:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: pvenode
|
||||
steps:
|
||||
- name: Checkout PR branch (supports forks)
|
||||
|
@ -72,8 +72,7 @@ network_check() {
|
||||
|
||||
update_os() {
|
||||
msg_info "Updating Container OS"
|
||||
apk update
|
||||
apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Container OS"
|
||||
}
|
||||
|
||||
|
23
.github/workflows/update-json-date.yml
vendored
23
.github/workflows/update-json-date.yml
vendored
@ -5,11 +5,12 @@ on:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'frontend/public/json/**.json'
|
||||
- "frontend/public/json/**.json"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update-app-files:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: runner-cluster-htl-set
|
||||
|
||||
permissions:
|
||||
@ -24,6 +25,13 @@ jobs:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Generate a token for PR approval and merge
|
||||
id: generate-token-merge
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||
|
||||
- name: Generate dynamic branch name
|
||||
id: timestamp
|
||||
run: echo "BRANCH_NAME=pr-update-json-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
|
||||
@ -126,6 +134,19 @@ jobs:
|
||||
gh pr review $PR_NUMBER --approve
|
||||
fi
|
||||
|
||||
- name: Approve pull request and merge
|
||||
if: env.changed == 'true'
|
||||
env:
|
||||
GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
|
||||
run: |
|
||||
git config --global user.name "github-actions-automege[bot]"
|
||||
git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
|
||||
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: No changes detected
|
||||
if: env.changed == 'false'
|
||||
run: echo "No changes to commit. Workflow completed successfully."
|
||||
|
1
.github/workflows/validate-filenames.yml
vendored
1
.github/workflows/validate-filenames.yml
vendored
@ -9,6 +9,7 @@ on:
|
||||
|
||||
jobs:
|
||||
check-files:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
name: Check changed files
|
||||
runs-on: runner-cluster-htl-set
|
||||
permissions:
|
||||
|
195
CHANGELOG.md
195
CHANGELOG.md
@ -14,6 +14,191 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
||||
|
||||
|
||||
## 2025-05-16
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 💾 Core
|
||||
|
||||
- [core] Enable SSH_KEY and SSH without password [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4523](https://github.com/community-scripts/ProxmoxVE/pull/4523))
|
||||
- [core] Fix Bridge detection in Advanced Mode [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4522](https://github.com/community-scripts/ProxmoxVE/pull/4522))
|
||||
|
||||
- #### 📂 Github
|
||||
|
||||
- Updates to contributor docs/guide [@tremor021](https://github.com/tremor021) ([#4518](https://github.com/community-scripts/ProxmoxVE/pull/4518))
|
||||
|
||||
## 2025-05-15
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- bitmagnet ([#4493](https://github.com/community-scripts/ProxmoxVE/pull/4493))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- core: Add TAB3 formatting var to core [@tremor021](https://github.com/tremor021) ([#4496](https://github.com/community-scripts/ProxmoxVE/pull/4496))
|
||||
- Update scripts that use "read -p" to properly indent text [@tremor021](https://github.com/tremor021) ([#4498](https://github.com/community-scripts/ProxmoxVE/pull/4498))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: fix some things & add ruby default function [@MickLesk](https://github.com/MickLesk) ([#4507](https://github.com/community-scripts/ProxmoxVE/pull/4507))
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 💾 Core
|
||||
|
||||
- core: fix bridge detection for OVS [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4495](https://github.com/community-scripts/ProxmoxVE/pull/4495))
|
||||
|
||||
## 2025-05-14
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- odoo ([#4477](https://github.com/community-scripts/ProxmoxVE/pull/4477))
|
||||
- asterisk ([#4468](https://github.com/community-scripts/ProxmoxVE/pull/4468))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- fix: fetch_release_and_deploy function [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4478](https://github.com/community-scripts/ProxmoxVE/pull/4478))
|
||||
- Website: re-add documenso & some little bugfixes [@MickLesk](https://github.com/MickLesk) ([#4456](https://github.com/community-scripts/ProxmoxVE/pull/4456))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Add make installation dependency to Actual Budget script [@maciejmatczak](https://github.com/maciejmatczak) ([#4485](https://github.com/community-scripts/ProxmoxVE/pull/4485))
|
||||
- Bookstack: fix copy of themes/uploads/storage [@MickLesk](https://github.com/MickLesk) ([#4457](https://github.com/community-scripts/ProxmoxVE/pull/4457))
|
||||
- Alpine-Rclone: Fix location of passwords file [@tremor021](https://github.com/tremor021) ([#4465](https://github.com/community-scripts/ProxmoxVE/pull/4465))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- monitor-all: improvements - tag based filtering [@grizmin](https://github.com/grizmin) ([#4437](https://github.com/community-scripts/ProxmoxVE/pull/4437))
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 📂 Github
|
||||
|
||||
- Add Github app for auto PR merge [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4461](https://github.com/community-scripts/ProxmoxVE/pull/4461))
|
||||
|
||||
## 2025-05-13
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- gatus ([#4443](https://github.com/community-scripts/ProxmoxVE/pull/4443))
|
||||
- alpine-gatus ([#4442](https://github.com/community-scripts/ProxmoxVE/pull/4442))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- update some improvements from dev (tools.func) [@MickLesk](https://github.com/MickLesk) ([#4430](https://github.com/community-scripts/ProxmoxVE/pull/4430))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- openhab: use zulu17-jdk [@moodyblue](https://github.com/moodyblue) ([#4438](https://github.com/community-scripts/ProxmoxVE/pull/4438))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- openhab. correct some typos [@moodyblue](https://github.com/moodyblue) ([#4448](https://github.com/community-scripts/ProxmoxVE/pull/4448))
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 💾 Core
|
||||
|
||||
- fix: improve bridge detection in all network interface configuration files [@filippolauria](https://github.com/filippolauria) ([#4413](https://github.com/community-scripts/ProxmoxVE/pull/4413))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Jellyfin Media Server: Update configuration path [@tremor021](https://github.com/tremor021) ([#4434](https://github.com/community-scripts/ProxmoxVE/pull/4434))
|
||||
- Pingvin Share: Added explanation on how to add/edit environment variables [@tremor021](https://github.com/tremor021) ([#4432](https://github.com/community-scripts/ProxmoxVE/pull/4432))
|
||||
- pingvin.json: fix typo [@warmbo](https://github.com/warmbo) ([#4426](https://github.com/community-scripts/ProxmoxVE/pull/4426))
|
||||
|
||||
## 2025-05-12
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Alpine-Traefik [@MickLesk](https://github.com/MickLesk) ([#4412](https://github.com/community-scripts/ProxmoxVE/pull/4412))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Alpine: Use onliner for updates [@tremor021](https://github.com/tremor021) ([#4414](https://github.com/community-scripts/ProxmoxVE/pull/4414))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- homarr: fetch versions dynamically from source repo [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4409](https://github.com/community-scripts/ProxmoxVE/pull/4409))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Feature: LXC-Delete (pve helper): add "all items" [@MickLesk](https://github.com/MickLesk) ([#4296](https://github.com/community-scripts/ProxmoxVE/pull/4296))
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 💾 Core
|
||||
|
||||
- Config file Function in build.func [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4411](https://github.com/community-scripts/ProxmoxVE/pull/4411))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Navidrome - Fix config path (use /etc/ instead of /var/lib) [@quake1508](https://github.com/quake1508) ([#4406](https://github.com/community-scripts/ProxmoxVE/pull/4406))
|
||||
|
||||
## 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
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
@ -24,6 +209,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))
|
||||
|
||||
- #### ✨ 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
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
@ -22,8 +22,7 @@ catch_errors
|
||||
function update_script() {
|
||||
header_info
|
||||
msg_info "Updating Alpine Packages"
|
||||
$STD apk update
|
||||
$STD apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "Updating AdGuard Home"
|
||||
|
89
ct/alpine-bitmagnet.sh
Normal file
89
ct/alpine-bitmagnet.sh
Normal file
@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/bitmagnet-io/bitmagnet
|
||||
|
||||
APP="Alpine-bitmagnet"
|
||||
var_tags="${var_tags:-alpine;torrent}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-3}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
|
||||
if [[ ! -d /opt/bitmagnet ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit 1
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [ "${RELEASE}" != "$(cat /opt/bitmagnet_version.txt)" ] || [ ! -f /opt/bitmagnet_version.txt ]; then
|
||||
msg_info "Backing up database"
|
||||
rm -f /tmp/backup.sql
|
||||
$STD sudo -u postgres pg_dump \
|
||||
--column-inserts \
|
||||
--data-only \
|
||||
--on-conflict-do-nothing \
|
||||
--rows-per-insert=1000 \
|
||||
--table=metadata_sources \
|
||||
--table=content \
|
||||
--table=content_attributes \
|
||||
--table=content_collections \
|
||||
--table=content_collections_content \
|
||||
--table=torrent_sources \
|
||||
--table=torrents \
|
||||
--table=torrent_files \
|
||||
--table=torrent_hints \
|
||||
--table=torrent_contents \
|
||||
--table=torrent_tags \
|
||||
--table=torrents_torrent_sources \
|
||||
--table=key_values \
|
||||
bitmagnet \
|
||||
>/tmp/backup.sql
|
||||
mv /tmp/backup.sql /opt/
|
||||
msg_ok "Database backed up"
|
||||
|
||||
msg_info "Updating ${APP} from $(cat /opt/bitmagnet_version.txt) to ${RELEASE}"
|
||||
$STD apk -U upgrade
|
||||
$STD service bitmagnet stop
|
||||
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
|
||||
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
|
||||
rm -rf /opt/bitmagnet/*
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
|
||||
cd /opt/bitmagnet
|
||||
VREL=v$RELEASE
|
||||
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
||||
chmod +x bitmagnet
|
||||
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
|
||||
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
|
||||
rm -f "$temp_file"
|
||||
echo "${RELEASE}" >/opt/bitmagnet_version.txt
|
||||
$STD service bitmagnet start
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3333${CL}"
|
@ -36,7 +36,7 @@ function update_script() {
|
||||
header_info
|
||||
case $CHOICE in
|
||||
1)
|
||||
apk update && apk upgrade
|
||||
$STD apk -U upgrade
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
|
62
ct/alpine-gatus.sh
Normal file
62
ct/alpine-gatus.sh
Normal file
@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/TwiN/gatus
|
||||
|
||||
APP="Alpine-gatus"
|
||||
var_tags="${var_tags:-alpine;monitoring}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-3}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
|
||||
if [[ ! -d /opt/gatus ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit 1
|
||||
fi
|
||||
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [ "${RELEASE}" != "$(cat /opt/gatus_version.txt)" ] || [ ! -f /opt/gatus_version.txt ]; then
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apk -U upgrade
|
||||
$STD service gatus stop
|
||||
mv /opt/gatus/config/config.yaml /opt
|
||||
rm -rf /opt/gatus/*
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
|
||||
cd /opt/gatus
|
||||
$STD go mod tidy
|
||||
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
||||
setcap CAP_NET_RAW+ep gatus
|
||||
mv /opt/config.yaml config
|
||||
rm -f "$temp_file"
|
||||
echo "${RELEASE}" >/opt/gatus_version.txt
|
||||
$STD service gatus start
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
@ -22,8 +22,7 @@ catch_errors
|
||||
function update_script() {
|
||||
header_info
|
||||
msg_info "Updating Alpine Packages"
|
||||
apk update
|
||||
apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "Updating Gitea"
|
||||
|
@ -39,7 +39,7 @@ function update_script() {
|
||||
header_info
|
||||
case $CHOICE in
|
||||
1)
|
||||
apk update && apk upgrade
|
||||
$STD apk -U upgrade
|
||||
exit
|
||||
;;
|
||||
2)
|
||||
|
@ -21,8 +21,7 @@ catch_errors
|
||||
|
||||
function update_script() {
|
||||
msg_info "Updating Alpine Packages"
|
||||
$STD apk update
|
||||
$STD apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "Updating MariaDB"
|
||||
|
@ -21,8 +21,7 @@ catch_errors
|
||||
|
||||
function update_script() {
|
||||
msg_info "Updating Alpine Packages"
|
||||
$STD apk update
|
||||
$STD apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "Updating Node.js and npm"
|
||||
|
@ -21,8 +21,7 @@ catch_errors
|
||||
|
||||
function update_script() {
|
||||
msg_info "Updating Alpine Packages"
|
||||
$STD apk update
|
||||
$STD apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "Updating PostgreSQL"
|
||||
|
@ -21,8 +21,7 @@ catch_errors
|
||||
|
||||
function update_script() {
|
||||
msg_info "Updating Alpine Packages"
|
||||
$STD apk update
|
||||
$STD apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "Updating Prometheus"
|
||||
|
@ -28,7 +28,6 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then
|
||||
msg_info "Updating ${APP} LXC"
|
||||
|
@ -26,8 +26,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
msg_info "Updating Alpine Packages"
|
||||
$STD apk update
|
||||
$STD apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "Updating tinyauth"
|
||||
|
41
ct/alpine-traefik.sh
Normal file
41
ct/alpine-traefik.sh
Normal file
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://alpinelinux.org/
|
||||
|
||||
APP="Alpine-Traefik"
|
||||
var_tags="${var_tags:-os;alpine}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
msg_info "Updating Alpine Packages"
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "Upgrading traefik from edge"
|
||||
$STD apk add traefik --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
|
||||
msg_ok "Upgraded traefik"
|
||||
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} WebUI Access (if configured) - using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}"
|
@ -37,14 +37,15 @@ function update_script() {
|
||||
header_info
|
||||
case $CHOICE in
|
||||
1)
|
||||
apk update && apk upgrade && rc-service vaultwarden restart -q
|
||||
$STD apk -U upgrade
|
||||
rc-service vaultwarden restart -q
|
||||
exit
|
||||
;;
|
||||
2)
|
||||
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
|
||||
if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
|
||||
if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
|
||||
TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
|
||||
TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
|
||||
if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
|
||||
sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
|
||||
else
|
||||
|
@ -21,8 +21,7 @@ catch_errors
|
||||
|
||||
function update_script() {
|
||||
msg_info "Updating Alpine Packages"
|
||||
$STD apk update
|
||||
$STD apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated Alpine Packages"
|
||||
|
||||
msg_info "update wireguard-tools"
|
||||
|
@ -36,7 +36,7 @@ function update_script() {
|
||||
header_info
|
||||
case $CHOICE in
|
||||
1)
|
||||
apk update && apk upgrade
|
||||
$STD apk -U upgrade
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
|
@ -28,7 +28,7 @@ function update_script() {
|
||||
|
||||
header_info
|
||||
if [ "$UPD" == "1" ]; then
|
||||
apk update && apk upgrade
|
||||
$STD apk -U upgrade
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
35
ct/asterisk.sh
Normal file
35
ct/asterisk.sh
Normal file
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: michelroegl-brunner
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://asterisk.org/
|
||||
|
||||
APP="Asterisk"
|
||||
var_tags="${var_tags:-telephone;pbx}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
msg_error "No Update function provided for ${APP} LXC"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
@ -9,7 +9,7 @@ APP="Authentik"
|
||||
var_tags="${var_tags:-identity-provider}"
|
||||
var_disk="${var_disk:-12}"
|
||||
var_cpu="${var_cpu:-6}"
|
||||
var_ram="${var_ram:-8192}"
|
||||
var_ram="${var_ram:-10240}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
@ -29,6 +29,13 @@ function update_script() {
|
||||
fi
|
||||
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
|
||||
NODE_VERSION="22"
|
||||
PG_VERSION="16"
|
||||
setup_uv
|
||||
install_postgresql
|
||||
install_node_and_modules
|
||||
install_go
|
||||
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop authentik-server
|
||||
systemctl stop authentik-worker
|
||||
@ -54,17 +61,14 @@ function update_script() {
|
||||
go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
|
||||
msg_ok "Built ${APP} server"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
msg_info "Building Authentik"
|
||||
cd /opt/authentik
|
||||
$STD poetry install --only=main --no-ansi --no-interaction --no-root
|
||||
$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 .
|
||||
msg_ok "Installed Python Dependencies"
|
||||
$STD uv sync --frozen --no-install-project --no-dev
|
||||
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
|
||||
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
|
||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||
|
||||
|
98
ct/bitmagnet.sh
Normal file
98
ct/bitmagnet.sh
Normal file
@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/bitmagnet/bitmagnet
|
||||
|
||||
APP="Bitmagnet"
|
||||
var_tags="${var_tags:-os}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
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/bitmagnet ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop bitmagnet-web
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up database"
|
||||
rm -f /tmp/backup.sql
|
||||
$STD sudo -u postgres pg_dump \
|
||||
--column-inserts \
|
||||
--data-only \
|
||||
--on-conflict-do-nothing \
|
||||
--rows-per-insert=1000 \
|
||||
--table=metadata_sources \
|
||||
--table=content \
|
||||
--table=content_attributes \
|
||||
--table=content_collections \
|
||||
--table=content_collections_content \
|
||||
--table=torrent_sources \
|
||||
--table=torrents \
|
||||
--table=torrent_files \
|
||||
--table=torrent_hints \
|
||||
--table=torrent_contents \
|
||||
--table=torrent_tags \
|
||||
--table=torrents_torrent_sources \
|
||||
--table=key_values \
|
||||
bitmagnet \
|
||||
>/tmp/backup.sql
|
||||
mv /tmp/backup.sql /opt/
|
||||
msg_ok "Database backed up"
|
||||
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
|
||||
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
|
||||
rm -rf /opt/bitmagnet/*
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
|
||||
cd /opt/bitmagnet
|
||||
VREL=v$RELEASE
|
||||
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
||||
chmod +x bitmagnet
|
||||
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
|
||||
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start bitmagnet-web
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "$temp_file"
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3333${CL}"
|
@ -39,9 +39,9 @@ function update_script() {
|
||||
unzip -q "/opt/BookStack-${RELEASE}.zip" -d /opt
|
||||
mv "/opt/BookStack-${RELEASE}" /opt/bookstack
|
||||
cp /opt/bookstack-backup/.env /opt/bookstack/.env
|
||||
cp -r /opt/bookstack-backup/public/uploads/* /opt/bookstack/public/uploads/ || true
|
||||
cp -r /opt/bookstack-backup/storage/uploads/* /opt/bookstack/storage/uploads/ || true
|
||||
cp -r /opt/bookstack-backup/themes/* /opt/bookstack/themes/ || true
|
||||
[[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
|
||||
[[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/
|
||||
[[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/
|
||||
cd /opt/bookstack
|
||||
export COMPOSER_ALLOW_SUPERUSER=1
|
||||
$STD composer install --no-dev
|
||||
|
@ -42,9 +42,14 @@ function update_script() {
|
||||
mv documenso-${RELEASE} /opt/documenso
|
||||
cd /opt/documenso
|
||||
mv /opt/.env /opt/documenso/.env
|
||||
$STD npm install
|
||||
$STD npm run build:web
|
||||
export TURBO_CACHE=1
|
||||
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 turbo daemon stop
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
|
75
ct/gatus.sh
Normal file
75
ct/gatus.sh
Normal file
@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/TwiN/gatus
|
||||
|
||||
APP="gatus"
|
||||
var_tags="${var_tags:-monitoring}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
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/gatus ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||
msg_info "Updating $APP"
|
||||
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop gatus
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
mv /opt/gatus/config/config.yaml /opt
|
||||
rm -rf /opt/gatus/*
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
|
||||
cd /opt/gatus
|
||||
$STD go mod tidy
|
||||
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
||||
setcap CAP_NET_RAW+ep gatus
|
||||
mv /opt/config.yaml config
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start gatus
|
||||
msg_ok "Started $APP"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f "$temp_file"
|
||||
msg_ok "Cleanup Completed"
|
||||
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# Source: https://github.com/AlexxIT/go2rtc
|
||||
|
||||
APP="go2rtc"
|
||||
var_tags="${var_tags:-recorder;video}"
|
||||
var_tags="${var_tags:-streaming;video}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
|
6
ct/headers/alpine-bitmagnet
Normal file
6
ct/headers/alpine-bitmagnet
Normal file
@ -0,0 +1,6 @@
|
||||
___ __ _ __ _ __ __
|
||||
/ | / /___ (_)___ ___ / /_ (_) /_____ ___ ____ _____ _____ ___ / /_
|
||||
/ /| | / / __ \/ / __ \/ _ \______/ __ \/ / __/ __ `__ \/ __ `/ __ `/ __ \/ _ \/ __/
|
||||
/ ___ |/ / /_/ / / / / / __/_____/ /_/ / / /_/ / / / / / /_/ / /_/ / / / / __/ /_
|
||||
/_/ |_/_/ .___/_/_/ /_/\___/ /_.___/_/\__/_/ /_/ /_/\__,_/\__, /_/ /_/\___/\__/
|
||||
/_/ /____/
|
6
ct/headers/alpine-gatus
Normal file
6
ct/headers/alpine-gatus
Normal file
@ -0,0 +1,6 @@
|
||||
___ __ _ __
|
||||
/ | / /___ (_)___ ___ ____ _____ _/ /___ _______
|
||||
/ /| | / / __ \/ / __ \/ _ \______/ __ `/ __ `/ __/ / / / ___/
|
||||
/ ___ |/ / /_/ / / / / / __/_____/ /_/ / /_/ / /_/ /_/ (__ )
|
||||
/_/ |_/_/ .___/_/_/ /_/\___/ \__, /\__,_/\__/\__,_/____/
|
||||
/_/ /____/
|
6
ct/headers/alpine-traefik
Normal file
6
ct/headers/alpine-traefik
Normal file
@ -0,0 +1,6 @@
|
||||
___ __ _ ______ _____ __
|
||||
/ | / /___ (_)___ ___ /_ __/________ ____ / __(_) /__
|
||||
/ /| | / / __ \/ / __ \/ _ \______/ / / ___/ __ `/ _ \/ /_/ / //_/
|
||||
/ ___ |/ / /_/ / / / / / __/_____/ / / / / /_/ / __/ __/ / ,<
|
||||
/_/ |_/_/ .___/_/_/ /_/\___/ /_/ /_/ \__,_/\___/_/ /_/_/|_|
|
||||
/_/
|
6
ct/headers/asterisk
Normal file
6
ct/headers/asterisk
Normal file
@ -0,0 +1,6 @@
|
||||
___ __ _ __
|
||||
/ | _____/ /____ _____(_)____/ /__
|
||||
/ /| | / ___/ __/ _ \/ ___/ / ___/ //_/
|
||||
/ ___ |(__ ) /_/ __/ / / (__ ) ,<
|
||||
/_/ |_/____/\__/\___/_/ /_/____/_/|_|
|
||||
|
6
ct/headers/bitmagnet
Normal file
6
ct/headers/bitmagnet
Normal file
@ -0,0 +1,6 @@
|
||||
____ _ __ __
|
||||
/ __ )(_) /_____ ___ ____ _____ _____ ___ / /_
|
||||
/ __ / / __/ __ `__ \/ __ `/ __ `/ __ \/ _ \/ __/
|
||||
/ /_/ / / /_/ / / / / / /_/ / /_/ / / / / __/ /_
|
||||
/_____/_/\__/_/ /_/ /_/\__,_/\__, /_/ /_/\___/\__/
|
||||
/____/
|
6
ct/headers/gatus
Normal file
6
ct/headers/gatus
Normal file
@ -0,0 +1,6 @@
|
||||
__
|
||||
____ _____ _/ /___ _______
|
||||
/ __ `/ __ `/ __/ / / / ___/
|
||||
/ /_/ / /_/ / /_/ /_/ (__ )
|
||||
\__, /\__,_/\__/\__,_/____/
|
||||
/____/
|
@ -1,6 +1,6 @@
|
||||
__ __
|
||||
/ / / /___ ____ ___ ____ ___________
|
||||
/ /_/ / __ \/ __ `__ \/ __ `/ ___/ ___/
|
||||
/ __ / /_/ / / / / / / /_/ / / / /
|
||||
__
|
||||
/ /_ ____ ____ ___ ____ ___________
|
||||
/ __ \/ __ \/ __ `__ \/ __ `/ ___/ ___/
|
||||
/ / / / /_/ / / / / / / /_/ / / / /
|
||||
/_/ /_/\____/_/ /_/ /_/\__,_/_/ /_/
|
||||
|
||||
|
6
ct/headers/odoo
Normal file
6
ct/headers/odoo
Normal file
@ -0,0 +1,6 @@
|
||||
____ __
|
||||
/ __ \____/ /___ ____
|
||||
/ / / / __ / __ \/ __ \
|
||||
/ /_/ / /_/ / /_/ / /_/ /
|
||||
\____/\__,_/\____/\____/
|
||||
|
17
ct/homarr.sh
17
ct/homarr.sh
@ -1,11 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) | Co-Author: CrazyWolf13
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: CrazyWolf13
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://homarr.dev/
|
||||
|
||||
APP="Homarr"
|
||||
APP="homarr"
|
||||
var_tags="${var_tags:-arr;dashboard}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
@ -117,11 +117,12 @@ node apps/nextjs/server.js & PID=$!
|
||||
wait $PID
|
||||
EOF
|
||||
chmod +x /opt/run_homarr.sh
|
||||
curl -fsSL "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip")
|
||||
unzip -q v${RELEASE}.zip
|
||||
rm -rf v${RELEASE}.zip
|
||||
$STD command -v jq || $STD apt-get update && $STD apt-get install -y jq
|
||||
NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
|
||||
NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')"
|
||||
install_node_and_modules
|
||||
rm -rf /opt/homarr
|
||||
mv homarr-${RELEASE} /opt/homarr
|
||||
fetch_and_deploy_gh_release "homarr-labs/homarr"
|
||||
mv /opt/homarr-data-backup/.env /opt/homarr/.env
|
||||
cd /opt/homarr
|
||||
$STD pnpm install
|
||||
@ -150,7 +151,7 @@ curl -fsSL "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.
|
||||
systemctl start homarr
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated Successfully"
|
||||
read -p "It's recommended to reboot the LXC after an update, would you like to reboot the LXC now ? (y/n): " choice
|
||||
read -p "${TAB3}It's recommended to reboot the LXC after an update, would you like to reboot the LXC now ? (y/n): " choice
|
||||
if [[ "$choice" =~ ^[Yy]$ ]]; then
|
||||
reboot
|
||||
fi
|
||||
|
@ -21,8 +21,6 @@ catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
|
||||
# OS Check
|
||||
if ! lsb_release -d | grep -q "Ubuntu 24.10"; then
|
||||
msg_error "Wrong OS detected. This script only supports Ubuntu 24.10."
|
||||
msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549"
|
||||
@ -32,57 +30,91 @@ function update_script() {
|
||||
check_container_resources
|
||||
if [[ ! -d /srv/homeassistant ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
exit 1
|
||||
fi
|
||||
PY=$(ls /srv/homeassistant/lib/)
|
||||
setup_uv
|
||||
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 \
|
||||
"1" "Update Core" ON \
|
||||
"2" "Install HACS" OFF \
|
||||
"3" "Install FileBrowser" OFF \
|
||||
3>&1 1>&2 2>&3)
|
||||
|
||||
if [ "$UPD" == "1" ]; then
|
||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then
|
||||
clear
|
||||
header_info
|
||||
echo -e "${GN}Updating to Beta Version${CL}"
|
||||
BR="--pre "
|
||||
BR="--pre"
|
||||
else
|
||||
clear
|
||||
header_info
|
||||
echo -e "${GN}Updating to Stable Version${CL}"
|
||||
BR=""
|
||||
fi
|
||||
|
||||
msg_info "Stopping Home Assistant"
|
||||
systemctl stop homeassistant
|
||||
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"
|
||||
source /srv/homeassistant/bin/activate
|
||||
$STD pip install ${BR}--upgrade homeassistant
|
||||
$STD uv pip install $BR --upgrade homeassistant
|
||||
msg_ok "Updated 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
|
||||
sleep 2
|
||||
sleep 5
|
||||
msg_ok "Started Home Assistant"
|
||||
msg_ok "Update Successful"
|
||||
echo -e "\n Go to http://${IP}:8123 \n"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$UPD" == "2" ]; then
|
||||
msg_info "Installing Home Assistant Community Store (HACS)"
|
||||
$STD apt update
|
||||
$STD apt install -y unzip
|
||||
cd .homeassistant
|
||||
cd /root/.homeassistant
|
||||
$STD bash <(curl -fsSL https://get.hacs.xyz)
|
||||
msg_ok "Installed Home Assistant Community Store (HACS)"
|
||||
echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$UPD" == "3" ]; then
|
||||
set +Eeuo pipefail
|
||||
read -r -p "Would you like to use No Authentication? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to use No Authentication? <y/N> " prompt
|
||||
msg_info "Installing FileBrowser"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g')
|
||||
$STD curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/$RELEASE/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin
|
||||
|
@ -38,7 +38,7 @@ function update_script() {
|
||||
msg_info "Updating All Containers"
|
||||
CONTAINER_LIST="${1:-$(docker ps -q)}"
|
||||
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}")"
|
||||
docker pull "${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}"
|
||||
DOCKER_COMMAND="$(runlike --use-volume-id "${container}")"
|
||||
docker rm --force "${container}"
|
||||
eval ${DOCKER_COMMAND}
|
||||
eval "${DOCKER_COMMAND}"
|
||||
fi
|
||||
done
|
||||
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 "${INFO}${YW} Access it using the following URL:${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}"
|
||||
|
@ -53,10 +53,10 @@ function update_script() {
|
||||
|
||||
if [ -z "$pnpm_current" ]; then
|
||||
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
|
||||
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
|
||||
msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
|
||||
fi
|
||||
|
@ -30,7 +30,7 @@ function update_script() {
|
||||
case "$UPD" in
|
||||
"1")
|
||||
msg_info "Updating Alpine OS"
|
||||
apk update && apk upgrade
|
||||
$STD apk -U upgrade
|
||||
msg_ok "System updated"
|
||||
exit
|
||||
;;
|
||||
|
71
ct/odoo.sh
Normal file
71
ct/odoo.sh
Normal file
@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/odoo/odoo
|
||||
|
||||
APP="Odoo"
|
||||
var_tags="${var_tags:-erp}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
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 /etc/odoo/odoo.conf ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit 1
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://nightly.odoo.com/ | grep -oE 'href="[0-9]+\.[0-9]+/nightly"' | head -n1 | cut -d'"' -f2 | cut -d/ -f1)
|
||||
LATEST_VERSION=$(curl -fsSL "https://nightly.odoo.com/${RELEASE}/nightly/deb/" |
|
||||
grep -oP "odoo_${RELEASE}\.\d+_all\.deb" |
|
||||
sed -E "s/odoo_(${RELEASE}\.[0-9]+)_all\.deb/\1/" |
|
||||
sort -V |
|
||||
tail -n1)
|
||||
|
||||
if [[ "${LATEST_VERSION}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||
msg_info "Stopping ${APP} service"
|
||||
systemctl stop odoo
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Updating ${APP} to ${LATEST_VERSION}"
|
||||
curl -fsSL https://nightly.odoo.com/${RELEASE}/nightly/deb/odoo_${RELEASE}.latest_all.deb -o /opt/odoo.deb
|
||||
$STD apt install -y /opt/odoo.deb
|
||||
echo "$LATEST_VERSION" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP} to ${LATEST_VERSION}"
|
||||
|
||||
msg_info "Starting ${APP} service"
|
||||
systemctl start odoo
|
||||
msg_ok "Started ${APP}"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f /opt/odoo.deb
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${LATEST_VERSION}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8069${CL}"
|
@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
APP="Open WebUI"
|
||||
var_tags="${var_tags:-ai;interface}"
|
||||
var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-16}"
|
||||
var_ram="${var_ram:-8192}"
|
||||
var_disk="${var_disk:-25}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
@ -24,32 +24,34 @@ function update_script() {
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /opt/streamlink-webui ]]; then
|
||||
if [[ ! -d /opt/streamlink-webui ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
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) }')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||
msg_info "Starting Update"
|
||||
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop ${APP}
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
rm -rf /opt/${APP}
|
||||
NODE_VERSION="22"
|
||||
NODE_MODULE="npm@latest,yarn@latest"
|
||||
NODE_MODULE="npm,yarn"
|
||||
install_node_and_modules
|
||||
setup_uv
|
||||
fetch_and_deploy_gh_release "CrazyWolf13/streamlink-webui"
|
||||
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
$STD uv venv /opt/"${APPLICATION}"/backend/src/.venv
|
||||
source /opt/"${APPLICATION}"/backend/src/.venv/bin/activate
|
||||
$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/"${APPLICATION}"/backend/src/.venv
|
||||
cd /opt/"${APPLICATION}"/frontend/src
|
||||
$STD uv venv /opt/"${APP}"/backend/src/.venv
|
||||
source /opt/"${APP}"/backend/src/.venv/bin/activate
|
||||
$STD uv pip install -r /opt/"${APP}"/backend/src/requirements.txt --python=/opt/"${APP}"/backend/src/.venv
|
||||
cd /opt/"${APP}"/frontend/src
|
||||
$STD yarn install
|
||||
$STD yarn build
|
||||
chmod +x /opt/"${APPLICATION}"/start.sh
|
||||
chmod +x /opt/"${APP}"/start.sh
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
|
@ -49,7 +49,7 @@
|
||||
},
|
||||
{
|
||||
"type": "info",
|
||||
"text": "`htpasswd -b -B /opt/rclone/login.pwd newuser newuserpassword` to add more users."
|
||||
"text": "`htpasswd -b -B /opt/login.pwd newuser newuserpassword` to add more users."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -44,7 +44,7 @@
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "To Update Alpine: `apk update && apk upgrade`",
|
||||
"text": "To Update Alpine: `apk -U upgrade`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
|
33
frontend/public/json/asterisk.json
Normal file
33
frontend/public/json/asterisk.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "Asterisk",
|
||||
"slug": "asterisk",
|
||||
"categories": [0],
|
||||
"date_created": "2025-05-14",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": "https://docs.asterisk.org/",
|
||||
"config_path": "/etc/asterisk",
|
||||
"website": "https://asterisk.org/",
|
||||
"logo": "https://docs.asterisk.org/favicon.ico",
|
||||
"description": "Asterisk is an open-source framework for building communications applications, most commonly used as a phone system (PBX). Developed by Digium (now part of Sangoma), it turns a standard computer into a powerful telephony server.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/asterisk.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
@ -20,7 +20,7 @@
|
||||
"script": "ct/authentik.sh",
|
||||
"resources": {
|
||||
"cpu": 6,
|
||||
"ram": 8192,
|
||||
"ram": 10240,
|
||||
"hdd": 12,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
@ -33,7 +33,11 @@
|
||||
},
|
||||
"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"
|
||||
}
|
||||
]
|
||||
|
51
frontend/public/json/bitmagnet.json
Normal file
51
frontend/public/json/bitmagnet.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "Bitmagnet",
|
||||
"slug": "bitmagnet",
|
||||
"categories": [
|
||||
11
|
||||
],
|
||||
"date_created": "2025-05-15",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3333,
|
||||
"documentation": "https://bitmagnet.io/setup.html",
|
||||
"website": "https://bitmagnet.io/",
|
||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/webp/bitmagnet.webp",
|
||||
"config_path": "`/opt/bitmagnet/config.yml` or `/opt/bitmagnet/.env`",
|
||||
"description": "A self-hosted BitTorrent indexer, DHT crawler, content classifier and torrent search engine with web UI, GraphQL API and Servarr stack integration.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/bitmagnet.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-bitmagnet.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 3,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "During installation you will be asked to enter your TMDB API key, if you wanna use it. Make sure you have it ready.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
"categories": [
|
||||
12
|
||||
],
|
||||
"date_created": "2025-04-28",
|
||||
"date_created": "2025-05-14",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
|
46
frontend/public/json/gatus.json
Normal file
46
frontend/public/json/gatus.json
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"name": "gatus",
|
||||
"slug": "gatus",
|
||||
"categories": [
|
||||
9
|
||||
],
|
||||
"date_created": "2025-05-13",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8080,
|
||||
"documentation": "https://gatus.io/docs",
|
||||
"website": "https://gatus.io/",
|
||||
"logo": "https://raw.githubusercontent.com/TwiN/gatus/refs/heads/master/web/static/img/logo.svg",
|
||||
"config_path": "/opt/gatus/config/config.yaml",
|
||||
"description": "Gatus is a developer-oriented health dashboard that gives you the ability to monitor your services using HTTP, ICMP, TCP, and even DNS queries as well as evaluate the result of said queries by using a list of conditions on values like the status code, the response time, the certificate expiration, the body and many others. The icing on top is that each of these health checks can be paired with alerting via Slack, Teams, PagerDuty, Discord, Twilio and many more.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/gatus.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-gatus.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 256,
|
||||
"hdd": 3,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
@ -41,7 +41,7 @@
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
"text": "Use Ubuntu 24.10 ONLY",
|
||||
"text": "Deprecation-Warning: This Core-based setup will be deprecated by August 2025. Use Home Assistant OS is strongly recommended to ensure long-term stability and updates.",
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
|
@ -12,7 +12,7 @@
|
||||
"documentation": "https://jellyfin.org/docs/",
|
||||
"website": "https://jellyfin.org/",
|
||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/jellyfin.svg",
|
||||
"config_path": "/root/.config/jellyfin",
|
||||
"config_path": "/etc/jellyfin/",
|
||||
"description": "Jellyfin is a free and open-source media server and suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
@ -12,7 +12,7 @@
|
||||
"documentation": null,
|
||||
"website": "https://www.navidrome.org/",
|
||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/navidrome.svg",
|
||||
"config_path": "/var/lib/navidrome/navidrome.toml",
|
||||
"config_path": "/etc/navidrome/navidrome.toml",
|
||||
"description": "Navidrome is a music server solution that makes your music collection accessible from anywhere. It provides a modern web-based user interface and compatibility with a range of third-party mobile apps for both iOS and Android devices. With Navidrome, users can access their music collection from anywhere, whether at home or on the go. The software supports a variety of music formats, making it easy for users to play their favorite songs and albums. Navidrome provides a simple and user-friendly interface for managing and organizing music collections, making it a valuable tool for music lovers who want to access their music from anywhere. The software is designed to be easy to set up and use, making it a popular choice for those who want to host their own music server and enjoy their music collection from anywhere.",
|
||||
"install_methods": [
|
||||
{
|
||||
@ -33,7 +33,7 @@
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "To change Navidrome music folder path, `nano /var/lib/navidrome/navidrome.toml`",
|
||||
"text": "To change Navidrome music folder path, `nano /etc/navidrome/navidrome.toml`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
|
40
frontend/public/json/odoo.json
Normal file
40
frontend/public/json/odoo.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "Odoo",
|
||||
"slug": "odoo",
|
||||
"categories": [
|
||||
25
|
||||
],
|
||||
"date_created": "2025-05-14",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8069,
|
||||
"documentation": "https://www.odoo.com/en_EN/page/docs",
|
||||
"website": "https://www.odoo.com/",
|
||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/odoo.svg",
|
||||
"config_path": "/etc/odoo/odoo.conf",
|
||||
"description": "Odoo is a comprehensive open-source business platform made up of modular apps that cover key areas such as CRM, accounting, inventory, sales, project management, HR, helpdesk, and e-commerce. All modules are tightly integrated, allowing businesses to fully digitize and automate their workflows. Its modular design makes it suitable for both small companies and large enterprises, with flexibility to adapt to different industries. Odoo combines user-friendliness with powerful functionality, offering a unified solution for managing a wide range of business operations.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/odoo.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": "admin",
|
||||
"password": "admin"
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Database Credentials: `cat ~/odoo.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
@ -20,8 +20,8 @@
|
||||
"script": "ct/openwebui.sh",
|
||||
"resources": {
|
||||
"cpu": 4,
|
||||
"ram": 4096,
|
||||
"hdd": 16,
|
||||
"ram": 8192,
|
||||
"hdd": 25,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
@ -12,7 +12,7 @@
|
||||
"documentation": "https://stonith404.github.io/pingvin-share/introduction",
|
||||
"website": "https://github.com/stonith404/pingvin-share",
|
||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/pingvin-share.svg",
|
||||
"config_path": "/opt/pingin-share/config.yaml",
|
||||
"config_path": "/opt/pingvin-share/config.yaml",
|
||||
"description": "Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer.",
|
||||
"install_methods": [
|
||||
{
|
||||
@ -31,5 +31,10 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
"notes": [
|
||||
{
|
||||
"text": "Run `DATA_DIRECTORY=path-to-your-data-directory pm2 restart all --update-env` to update path to your data directory or to update environment variables.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -25,6 +25,17 @@
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-traefik.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -34,4 +34,9 @@ export const FAQ_Items = [
|
||||
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.",
|
||||
},
|
||||
{
|
||||
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.",
|
||||
},
|
||||
];
|
||||
|
@ -13,6 +13,11 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
make
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Actual Budget"
|
||||
cd /opt
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
|
85
install/alpine-bitmagnet-install.sh
Normal file
85
install/alpine-bitmagnet-install.sh
Normal file
@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/bitmagnet-io/bitmagnet
|
||||
|
||||
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 \
|
||||
gcc \
|
||||
musl-dev \
|
||||
git \
|
||||
iproute2-ss \
|
||||
sudo
|
||||
$STD apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community go
|
||||
msg_ok "Installed dependencies"
|
||||
|
||||
msg_info "Installing PostgreSQL"
|
||||
$STD apk add --no-cache \
|
||||
postgresql16 \
|
||||
postgresql16-contrib \
|
||||
postgresql16-openrc
|
||||
$STD rc-update add postgresql
|
||||
$STD rc-service postgresql start
|
||||
msg_ok "Installed PostreSQL"
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
|
||||
msg_info "Installing bitmagnet v${RELEASE}"
|
||||
mkdir -p /opt/bitmagnet
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
|
||||
cd /opt/bitmagnet
|
||||
VREL=v$RELEASE
|
||||
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
||||
chmod +x bitmagnet
|
||||
$STD su - postgres -c "psql -c 'CREATE DATABASE bitmagnet;'"
|
||||
echo "${RELEASE}" >/opt/bitmagnet_version.txt
|
||||
msg_ok "Installed bitmagnet v${RELEASE}"
|
||||
|
||||
read -rp "${TAB3}Enter your TMDB API key if you have one: " tmdbapikey
|
||||
|
||||
msg_info "Enabling bitmagnet Service"
|
||||
cat <<EOF >/etc/init.d/bitmagnet
|
||||
#!/sbin/openrc-run
|
||||
description="bitmagnet Service"
|
||||
directory="/opt/bitmagnet"
|
||||
command="/opt/bitmagnet/bitmagnet"
|
||||
command_args="worker run --all"
|
||||
command_background="true"
|
||||
command_user="root"
|
||||
pidfile="/var/run/bitmagnet.pid"
|
||||
|
||||
depend() {
|
||||
use net
|
||||
}
|
||||
|
||||
start_pre() {
|
||||
export TMDB_API_KEY="$tmdbapikey"
|
||||
}
|
||||
EOF
|
||||
chmod +x /etc/init.d/bitmagnet
|
||||
$STD rc-update add bitmagnet default
|
||||
msg_ok "Enabled bitmagnet Service"
|
||||
|
||||
msg_info "Starting bitmagnet"
|
||||
$STD service bitmagnet start
|
||||
msg_ok "Started bitmagnet"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "$temp_file"
|
||||
$STD apk cache clean
|
||||
msg_ok "Cleaned"
|
@ -29,13 +29,13 @@ $STD rc-update add docker default
|
||||
msg_ok "Installed Docker"
|
||||
|
||||
get_latest_release() {
|
||||
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
}
|
||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
|
||||
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
|
||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
|
||||
|
||||
read -r -p "Would you like to add Portainer? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
||||
docker volume create portainer_data >/dev/null
|
||||
@ -49,7 +49,7 @@ if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
portainer/portainer-ce:latest
|
||||
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
||||
else
|
||||
read -r -p "Would you like to add the Portainer Agent? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||
$STD docker run -d \
|
||||
@ -62,13 +62,13 @@ else
|
||||
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||
fi
|
||||
fi
|
||||
read -r -p "Would you like to add Docker Compose? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
|
||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
|
||||
mkdir -p $DOCKER_CONFIG/cli-plugins
|
||||
curl -fsSL https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_LATEST_VERSION/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
|
||||
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
|
||||
mkdir -p "$DOCKER_CONFIG"/cli-plugins
|
||||
curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
|
||||
chmod +x "$DOCKER_CONFIG"/cli-plugins/docker-compose
|
||||
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
fi
|
||||
|
||||
|
70
install/alpine-gatus-install.sh
Normal file
70
install/alpine-gatus-install.sh
Normal file
@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/TwiN/gatus
|
||||
|
||||
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 \
|
||||
libcap-setcap
|
||||
$STD apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community go
|
||||
msg_ok "Installed dependencies"
|
||||
|
||||
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
msg_info "Installing gatus v${RELEASE}"
|
||||
temp_file=$(mktemp)
|
||||
mkdir -p /opt/gatus
|
||||
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
|
||||
cd /opt/gatus
|
||||
$STD go mod tidy
|
||||
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
||||
setcap CAP_NET_RAW+ep gatus
|
||||
mv config.yaml config
|
||||
echo "${RELEASE}" >/opt/gatus_version.txt
|
||||
msg_ok "Installed gatus v${RELEASE}"
|
||||
|
||||
msg_info "Enabling gatus Service"
|
||||
cat <<EOF >/etc/init.d/gatus
|
||||
#!/sbin/openrc-run
|
||||
description="gatus Service"
|
||||
directory="/opt/gatus"
|
||||
command="/opt/gatus/gatus"
|
||||
command_args=""
|
||||
command_background="true"
|
||||
command_user="root"
|
||||
pidfile="/var/run/gatus.pid"
|
||||
|
||||
export GATUS_CONFIG_PATH=""
|
||||
export GATUS_LOG_LEVEL="INFO"
|
||||
export PORT="8080"
|
||||
|
||||
depend() {
|
||||
use net
|
||||
}
|
||||
EOF
|
||||
chmod +x /etc/init.d/gatus
|
||||
$STD rc-update add gatus default
|
||||
msg_ok "Enabled gatus Service"
|
||||
|
||||
msg_info "Starting gatus"
|
||||
$STD service gatus start
|
||||
msg_ok "Started gatus"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "$temp_file"
|
||||
$STD apk cache clean
|
||||
msg_ok "Cleaned"
|
@ -26,11 +26,11 @@ $STD rc-update add docker boot
|
||||
$STD service docker start
|
||||
msg_ok "Enabled Docker Service"
|
||||
|
||||
echo "Choose the database for Komodo installation:"
|
||||
echo "1) MongoDB (recommended)"
|
||||
echo "2) SQLite"
|
||||
echo "3) PostgreSQL"
|
||||
read -rp "Enter your choice (default: 1): " DB_CHOICE
|
||||
echo "${TAB3}Choose the database for Komodo installation:"
|
||||
echo "${TAB3}1) MongoDB (recommended)"
|
||||
echo "${TAB3}2) SQLite"
|
||||
echo "${TAB3}3) PostgreSQL"
|
||||
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
|
||||
DB_CHOICE=${DB_CHOICE:-1}
|
||||
|
||||
case $DB_CHOICE in
|
||||
|
@ -29,7 +29,7 @@ mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql >/dev/null
|
||||
$STD rc-service mariadb start
|
||||
msg_ok "MariaDB Configured"
|
||||
|
||||
read -r -p "Would you like to install Adminer with lighttpd? <y/N>: " prompt
|
||||
read -r -p "${TAB3}Would you like to install Adminer with lighttpd? <y/N>: " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Adminer and dependencies"
|
||||
$STD apk add --no-cache \
|
||||
|
@ -33,7 +33,7 @@ sed -i '/^host\s\+all\s\+all\s\+127.0.0.1\/32\s\+md5/ s/.*/host all all 0.0.0.0\
|
||||
$STD rc-service postgresql restart
|
||||
msg_ok "Configured and Restarted PostgreSQL"
|
||||
|
||||
read -r -p "Would you like to install Adminer with lighttpd? <y/N>: " prompt
|
||||
read -r -p "${TAB3}Would you like to install Adminer with lighttpd? <y/N>: " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Adminer and dependencies"
|
||||
$STD apk add --no-cache \
|
||||
|
@ -27,7 +27,7 @@ curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclon
|
||||
$STD unzip -j "$temp_file" '*/**' -d /opt/rclone
|
||||
cd /opt/rclone
|
||||
RCLONE_PASSWORD=$(head -c 16 /dev/urandom | xxd -p -c 16)
|
||||
$STD htpasswd -cb -B login.pwd admin "$RCLONE_PASSWORD"
|
||||
$STD htpasswd -cb -B /opt/login.pwd admin "$RCLONE_PASSWORD"
|
||||
{
|
||||
echo "rclone-Credentials"
|
||||
echo "rclone User Name: admin"
|
||||
@ -42,7 +42,7 @@ cat <<EOF >/etc/init.d/rclone
|
||||
#!/sbin/openrc-run
|
||||
description="rclone Service"
|
||||
command="/opt/rclone/rclone"
|
||||
command_args="rcd --rc-web-gui --rc-web-gui-no-open-browser --rc-addr :3000 --rc-htpasswd /opt/rclone/login.pwd"
|
||||
command_args="rcd --rc-web-gui --rc-web-gui-no-open-browser --rc-addr :3000 --rc-htpasswd /opt/login.pwd"
|
||||
command_background="true"
|
||||
command_user="root"
|
||||
pidfile="/var/run/rclone.pid"
|
||||
|
56
install/alpine-traefik-install.sh
Normal file
56
install/alpine-traefik-install.sh
Normal file
@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apk add ca-certificates
|
||||
$STD update-ca-certificates
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Traefik"
|
||||
$STD apk add traefik --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
|
||||
msg_ok "Installed Traefik"
|
||||
|
||||
read -p "${TAB3}Enable Traefik WebUI (Port 8080)? [y/N]: " enable_webui
|
||||
if [[ "$enable_webui" =~ ^[Yy]$ ]]; then
|
||||
msg_info "Configuring Traefik WebUI"
|
||||
mkdir -p /etc/traefik/config
|
||||
cat <<EOF >/etc/traefik/traefik.yml
|
||||
entryPoints:
|
||||
web:
|
||||
address: ":80"
|
||||
traefik:
|
||||
address: ":8080"
|
||||
|
||||
api:
|
||||
dashboard: true
|
||||
insecure: true
|
||||
|
||||
log:
|
||||
level: INFO
|
||||
|
||||
providers:
|
||||
file:
|
||||
directory: /etc/traefik/config
|
||||
watch: true
|
||||
EOF
|
||||
msg_ok "Configured Traefik WebUI"
|
||||
fi
|
||||
|
||||
msg_info "Enabling and starting Traefik service"
|
||||
$STD rc-update add traefik default
|
||||
$STD rc-service traefik start
|
||||
msg_ok "Traefik service started"
|
||||
|
||||
motd_ssh
|
||||
customize
|
@ -46,7 +46,7 @@ $STD rc-update add sysctl
|
||||
$STD sysctl -p /etc/sysctl.conf
|
||||
msg_ok "Installed WireGuard"
|
||||
|
||||
read -rp "Do you want to install WGDashboard? (y/N): " INSTALL_WGD
|
||||
read -rp "${TAB3}Do you want to install WGDashboard? (y/N): " INSTALL_WGD
|
||||
if [[ "$INSTALL_WGD" =~ ^[Yy]$ ]]; then
|
||||
msg_info "Installing additional dependencies for WGDashboard"
|
||||
$STD apk add --no-cache \
|
||||
|
@ -28,7 +28,7 @@ echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_COD
|
||||
$STD apt-get update
|
||||
msg_ok "Set up Adoptium Repository"
|
||||
|
||||
read -r -p "Which Tomcat version would you like to install? (9, 10.1, 11): " version
|
||||
read -r -p "${TAB3}Which Tomcat version would you like to install? (9, 10.1, 11): " version
|
||||
case $version in
|
||||
9)
|
||||
TOMCAT_VERSION="9"
|
||||
|
@ -17,7 +17,7 @@ msg_info "Installing Aria2"
|
||||
$STD apt-get install -y aria2
|
||||
msg_ok "Installed Aria2"
|
||||
|
||||
read -r -p "Would you like to add AriaNG? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to add AriaNG? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing AriaNG"
|
||||
$STD apt-get install -y nginx
|
||||
|
56
install/asterisk-install.sh
Normal file
56
install/asterisk-install.sh
Normal file
@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: michelroegl-brunner
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://asterisk.org
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
libsrtp2-dev \
|
||||
build-essential \
|
||||
libedit-dev \
|
||||
uuid-dev \
|
||||
libjansson-dev \
|
||||
libxml2-dev \
|
||||
libsqlite3-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Downloading Asterisk"
|
||||
RELEASE=$(curl -fsSL https://downloads.asterisk.org/pub/telephony/asterisk/ | grep -o 'asterisk-[0-9]\+-current\.tar\.gz' | sort -V | tail -n1)
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://downloads.asterisk.org/pub/telephony/asterisk/${RELEASE}" -o "$temp_file"
|
||||
mkdir -p /opt/asterisk
|
||||
tar zxf "$temp_file" --strip-components=1 -C /opt/asterisk
|
||||
cd /opt/asterisk
|
||||
msg_ok "Downloaded Asterisk"
|
||||
|
||||
msg_info "Installing Asterisk"
|
||||
$STD ./contrib/scripts/install_prereq install
|
||||
$STD ./configure
|
||||
$STD make -j$(nproc)
|
||||
$STD make install
|
||||
$STD make config
|
||||
$STD make install-logrotate
|
||||
$STD make samples
|
||||
mkdir -p /etc/radiusclient-ng/
|
||||
ln /etc/radcli/radiusclient.conf /etc/radiusclient-ng/radiusclient.conf
|
||||
systemctl enable -q --now asterisk
|
||||
msg_ok "Installed Asterisk"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "$temp_file"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
@ -19,7 +19,7 @@ curl -fsSL "https://github.com/authelia/authelia/releases/download/${RELEASE}/au
|
||||
$STD dpkg -i "authelia_${RELEASE}_amd64.deb"
|
||||
msg_ok "Install Authelia completed"
|
||||
|
||||
read -p "Enter your domain (ex. example.com): " DOMAIN
|
||||
read -p "${TAB3}Enter your domain (ex. example.com): " DOMAIN
|
||||
|
||||
msg_info "Setting Authelia up"
|
||||
touch /etc/authelia/emails.txt
|
||||
|
@ -15,7 +15,6 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies (Patience)"
|
||||
$STD apt-get install -y \
|
||||
gpg \
|
||||
pkg-config \
|
||||
libffi-dev \
|
||||
build-essential \
|
||||
@ -33,9 +32,15 @@ $STD apt-get install -y \
|
||||
libxmlsec1-openssl \
|
||||
libmaxminddb0 \
|
||||
python3-pip \
|
||||
redis-server \
|
||||
git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_uv
|
||||
PG_VERSION="16" install_postgresql
|
||||
NODE_VERSION="22" install_node_and_modules
|
||||
install_go
|
||||
|
||||
msg_info "Installing yq"
|
||||
cd /tmp
|
||||
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
|
||||
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"
|
||||
$STD apt-get install -y postgresql postgresql-contrib
|
||||
$STD apt-get install -y postgresql-16 postgresql-contrib-16
|
||||
DB_NAME="authentik"
|
||||
DB_USER="authentik"
|
||||
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
|
||||
curl -fsSL "${RELEASE}" -o "authentik.tar.gz"
|
||||
tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite
|
||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||
cd /opt/authentik/website
|
||||
$STD npm install
|
||||
$STD npm run build-bundled
|
||||
|
||||
cd /opt/authentik/web
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
|
||||
cd /opt/authentik
|
||||
$STD go mod download
|
||||
$STD go build -o /go/authentik ./cmd/server
|
||||
$STD go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
|
||||
cd /opt/authentik
|
||||
$STD pip3 install --upgrade pip
|
||||
$STD pip3 install poetry poetry-plugin-export
|
||||
ln -s /usr/local/bin/poetry /usr/bin/poetry
|
||||
$STD poetry install --only=main --no-ansi --no-interaction --no-root
|
||||
$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 .
|
||||
$STD uv sync --frozen --no-install-project --no-dev
|
||||
#$STD pip3 install --no-cache-dir --upgrade pip
|
||||
#$STD pip3 install --upgrade pip
|
||||
#$STD pip3 install poetry poetry-plugin-export
|
||||
|
||||
#ln -s /usr/local/bin/poetry /usr/bin/poetry
|
||||
#$STD poetry install --only=main --no-ansi --no-interaction --no-root
|
||||
#$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
|
||||
mv /opt/authentik/authentik/lib/default.yml /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
|
||||
cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints
|
||||
$STD yq -i ".blueprints_dir = \"/opt/authentik/blueprints\"" /etc/authentik/config.yml
|
||||
ln -s /usr/bin/python3 /usr/bin/python
|
||||
ln -s /usr/local/bin/gunicorn /usr/bin/gunicorn
|
||||
ln -s /usr/local/bin/celery /usr/bin/celery
|
||||
$STD bash /opt/authentik/lifecycle/ak migrate
|
||||
cd ~
|
||||
#ln -s /usr/bin/python3 /usr/bin/python
|
||||
#ln -s /usr/local/bin/gunicorn /usr/bin/gunicorn
|
||||
#ln -s /usr/local/bin/celery /usr/bin/celery
|
||||
#$STD bash /opt/authentik/lifecycle/ak migrate
|
||||
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_info "Creating Services"
|
||||
cat <<EOF >/etc/systemd/system/authentik-server.service
|
||||
[Unit]
|
||||
Description = authentik Server
|
||||
Description=authentik Go Server (API Gateway)
|
||||
After=network.target
|
||||
Wants=redis.service postgresql.service
|
||||
|
||||
[Service]
|
||||
ExecStart=/opt/authentik/authentik-server
|
||||
WorkingDirectory=/opt/authentik/
|
||||
ExecStart=/opt/authentik/authentik-server
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
Environment=DJANGO_SETTINGS_MODULE=authentik.root.settings
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@ -161,21 +139,49 @@ EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/authentik-worker.service
|
||||
[Unit]
|
||||
Description = authentik Worker
|
||||
Description=authentik Celery Worker
|
||||
After=network.target redis.service postgresql.service
|
||||
Requires=redis.service
|
||||
|
||||
[Service]
|
||||
Environment=DJANGO_SETTINGS_MODULE="authentik.root.settings"
|
||||
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/authentik
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/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
|
||||
RestartSec=5
|
||||
Environment=DJANGO_SETTINGS_MODULE=authentik.root.settings
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now authentik-server
|
||||
sleep 2
|
||||
systemctl enable -q --now authentik-worker
|
||||
|
||||
cat <<EOF >/etc/systemd/system/authentik-celery-beat.service
|
||||
[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"
|
||||
|
||||
motd_ssh
|
||||
|
@ -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")
|
||||
unzip -qq bazarr -d /opt/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_info "Creating Service"
|
||||
|
78
install/bitmagnet-install.sh
Normal file
78
install/bitmagnet-install.sh
Normal file
@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/bitmagnet-io/bitmagnet
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
iproute2 \
|
||||
gcc \
|
||||
musl-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PG_VERSION="16" install_postgresql
|
||||
install_go
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
|
||||
msg_info "Installing bitmagnet v${RELEASE}"
|
||||
mkdir -p /opt/bitmagnet
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
|
||||
cd /opt/bitmagnet
|
||||
VREL=v$RELEASE
|
||||
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
||||
chmod +x bitmagnet
|
||||
POSTGRES_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
$STD sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '$POSTGRES_PASSWORD';"
|
||||
$STD sudo -u postgres psql -c "CREATE DATABASE bitmagnet;"
|
||||
{
|
||||
echo "PostgreSQL Credentials"
|
||||
echo ""
|
||||
echo "postgres user password: $POSTGRES_PASSWORD"
|
||||
} >>~/postgres.creds
|
||||
echo "${RELEASE}" >/opt/bitmagnet_version.txt
|
||||
msg_ok "Installed bitmagnet v${RELEASE}"
|
||||
|
||||
read -r -p "${TAB3}Enter your TMDB API key if you have one: " tmdbapikey
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/bitmagnet-web.service
|
||||
[Unit]
|
||||
Description=bitmagnet Web GUI
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/bitmagnet
|
||||
ExecStart=/opt/bitmagnet/bitmagnet worker run --all
|
||||
Environment=POSTGRES_HOST=localhost
|
||||
Environment=POSTGRES_PASSWORD=$POSTGRES_PASSWORD
|
||||
Environment=TMDB_API_KEY=$tmdbapikey
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now bitmagnet-web
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "$temp_file"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
@ -43,7 +43,7 @@ $STD npm install
|
||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
msg_ok "Installed ByteStash"
|
||||
|
||||
read -p "Do you want to allow registration of multiple accounts? [y/n]: " allowreg
|
||||
read -p "${TAB3}Do you want to allow registration of multiple accounts? [y/n]: " allowreg
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/bytestash-backend.service
|
||||
|
@ -28,7 +28,7 @@ $STD apt-get update
|
||||
$STD apt-get install -y caddy
|
||||
msg_ok "Installed Caddy"
|
||||
|
||||
read -r -p "Would you like to install xCaddy Addon? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to install xCaddy Addon? <y/N> " prompt
|
||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Golang"
|
||||
set +o pipefail
|
||||
@ -46,7 +46,7 @@ if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
cd /opt
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
curl -fsSL "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${RELEASE:1}_linux_amd64.deb" -o $(basename "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${RELEASE:1}_linux_amd64.deb")
|
||||
$STD dpkg -i xcaddy_${RELEASE:1}_linux_amd64.deb
|
||||
$STD dpkg -i xcaddy_"${RELEASE:1}"_linux_amd64.deb
|
||||
rm -rf /opt/xcaddy*
|
||||
$STD xcaddy build
|
||||
msg_ok "Setup xCaddy"
|
||||
|
@ -22,7 +22,7 @@ $STD apt-get update
|
||||
$STD apt-get install -y cloudflared
|
||||
msg_ok "Installed Cloudflared"
|
||||
|
||||
read -r -p "Would you like to configure cloudflared as a DNS-over-HTTPS (DoH) proxy? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to configure cloudflared as a DNS-over-HTTPS (DoH) proxy? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/usr/local/etc/cloudflared/config.yml
|
||||
|
@ -30,7 +30,7 @@ $STD apt-get update
|
||||
$STD apt-get install -y nodejs
|
||||
msg_ok "Setup Node.js"
|
||||
|
||||
read -p "Install OnlyOffice components instead of CKEditor? (Y/N): " onlyoffice
|
||||
read -p "${TAB3}Install OnlyOffice components instead of CKEditor? (Y/N): " onlyoffice
|
||||
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
temp_file=$(mktemp)
|
||||
|
@ -14,7 +14,7 @@ network_check
|
||||
update_os
|
||||
|
||||
get_latest_release() {
|
||||
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
}
|
||||
|
||||
DOCKER_LATEST_VERSION=$(get_latest_release "moby/moby")
|
||||
@ -29,7 +29,7 @@ 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"
|
||||
|
||||
read -r -p "Would you like to add Portainer? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
||||
docker volume create portainer_data >/dev/null
|
||||
@ -43,7 +43,7 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
portainer/portainer-ce:latest
|
||||
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
||||
else
|
||||
read -r -p "Would you like to add the Portainer Agent? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||
$STD docker run -d \
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user