mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-08-26 18:15:49 +00:00
Compare commits
1 Commits
chore/remo
...
migrate/co
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
509622acaa |
209
.github/workflows/pocketbase-bot.yml
generated
vendored
209
.github/workflows/pocketbase-bot.yml
generated
vendored
@@ -33,10 +33,6 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
FRONTEND_URL: ${{ secrets.FRONTEND_URL }}
|
||||
REVALIDATE_SECRET: ${{ secrets.REVALIDATE_SECRET }}
|
||||
# Screenshot attaching is delegated to the frontend, which owns the
|
||||
# fetching and validation. Without this the subcommand says so rather
|
||||
# than failing halfway.
|
||||
SCREENSHOT_IMPORT_SECRET: ${{ secrets.SCREENSHOT_IMPORT_SECRET }}
|
||||
run: |
|
||||
node << 'ENDSCRIPT'
|
||||
(async function () {
|
||||
@@ -327,21 +323,11 @@ jobs:
|
||||
'/pocketbase <slug> method remove <type>\n' +
|
||||
'```\n' +
|
||||
'Method fields: `cpu` `ram` `hdd` `os` `version` `config_path` `script`\n\n' +
|
||||
'`cpu` `ram` `hdd` `os` `version` also work without `method` — they go to the\n' +
|
||||
'default install method, e.g. `/pocketbase <slug> hdd=25`\n\n' +
|
||||
'**Editable fields:** `name` `description` `logo` `documentation` `website` `project_url` `repository` ' +
|
||||
'`config_path` `port` `default_user` `default_passwd` ' +
|
||||
'`updateable` `privileged` `is_dev` `has_arm` ' +
|
||||
'`updateable` `privileged` `is_dev` ' +
|
||||
'`architectures` (amd64,arm64) `platforms` (pve,incus) ' +
|
||||
'`execute_in` (pve,lxc,pbs,vm,pmg,pdm) `categories` (names or ids) ' +
|
||||
'`type` (ct, vm, addon, …) ' +
|
||||
'`is_disabled` `disable_message` `is_deleted` `deleted_message`\n\n' +
|
||||
'**Screenshots:**\n' +
|
||||
'```\n' +
|
||||
'/pocketbase <slug> screenshot https://example.com/one.png https://example.com/two.png\n' +
|
||||
'```\n\n' +
|
||||
'`slug` is deliberately not editable: it is the URL, the JSON filename and the\n' +
|
||||
'ct/<slug>.sh path all at once, so renaming it is a migration rather than an edit.';
|
||||
'`is_disabled` `disable_message` `is_deleted` `deleted_message`';
|
||||
|
||||
if (!withoutCmd) {
|
||||
await addReaction('-1');
|
||||
@@ -504,7 +490,6 @@ jobs:
|
||||
const noteMatch = rest.match(/^note\s+(list|add|edit|remove)\b/i);
|
||||
const methodMatch = rest.match(/^method\b/i);
|
||||
const setMatch = rest.match(/^set\s+(\S+)/i);
|
||||
const shotMatch = rest.match(/^screenshots?\s+(.+)$/i);
|
||||
|
||||
if (infoMatch) {
|
||||
// ── INFO SUBCOMMAND ──────────────────────────────────────────────
|
||||
@@ -550,44 +535,6 @@ jobs:
|
||||
await addReaction('+1');
|
||||
await postComment(out.join('\n'));
|
||||
|
||||
} else if (shotMatch) {
|
||||
// ── SCREENSHOT SUBCOMMAND ────────────────────────────────────────
|
||||
// Delegated to the frontend rather than reimplemented here: it
|
||||
// already fetches the URL, checks the content type and size, and
|
||||
// attaches the file to PocketBase. Doing that a second time in a
|
||||
// workflow would be a second set of bugs.
|
||||
const shotUrls = shotMatch[1].split(/[\s,]+/).map(function (u) { return u.trim(); }).filter(Boolean);
|
||||
const bad = shotUrls.filter(function (u) { return !/^https?:\/\//i.test(u); });
|
||||
if (bad.length > 0) {
|
||||
await addReaction('-1');
|
||||
await postComment('❌ **PocketBase Bot**: not a URL: `' + bad.join('`, `') + '`');
|
||||
process.exit(0);
|
||||
}
|
||||
const frontendUrl = process.env.FRONTEND_URL;
|
||||
const shotSecret = process.env.SCREENSHOT_IMPORT_SECRET;
|
||||
if (!frontendUrl || !shotSecret) {
|
||||
await addReaction('-1');
|
||||
await postComment('❌ **PocketBase Bot**: screenshot import is not configured (FRONTEND_URL / SCREENSHOT_IMPORT_SECRET).');
|
||||
process.exit(1);
|
||||
}
|
||||
const shotRes = await request(frontendUrl.replace(/\/$/, '') + '/api/screenshots', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ slug: slug, secret: shotSecret, urls: shotUrls })
|
||||
});
|
||||
if (!shotRes.ok) {
|
||||
await addReaction('-1');
|
||||
await postComment('❌ **PocketBase Bot**: screenshot import failed:\n```\n' + shotRes.body + '\n```');
|
||||
process.exit(1);
|
||||
}
|
||||
await revalidate(slug);
|
||||
await addReaction('+1');
|
||||
await postComment(
|
||||
'✅ **PocketBase Bot**: attached ' + shotUrls.length + ' screenshot' + (shotUrls.length === 1 ? '' : 's') +
|
||||
' to **`' + slug + '`**\n\n' + shotUrls.map(function (u) { return '- ' + u; }).join('\n') +
|
||||
'\n\n*Executed by @' + actor + '*'
|
||||
);
|
||||
|
||||
} else if (noteMatch) {
|
||||
// ── NOTE SUBCOMMAND ──────────────────────────────────────────────
|
||||
const noteAction = noteMatch[1].toLowerCase();
|
||||
@@ -891,20 +838,15 @@ jobs:
|
||||
} else if (setMatch) {
|
||||
// ── SET SUBCOMMAND (value from code block) ───────────────────────
|
||||
const fieldName = setMatch[1].toLowerCase();
|
||||
// app_vars is a JSON column, so it rides the code-block path like
|
||||
// the long text fields - but its content is parsed, not stored
|
||||
// verbatim, or PocketBase ends up with a string where an object
|
||||
// belongs and every reader has to guess.
|
||||
const SET_ALLOWED = {
|
||||
name: 'string', description: 'string', logo: 'string',
|
||||
documentation: 'string', website: 'string', project_url: 'string', repository: 'string',
|
||||
config_path: 'string', disable_message: 'string', deleted_message: 'string',
|
||||
app_vars: 'json'
|
||||
config_path: 'string', disable_message: 'string', deleted_message: 'string'
|
||||
};
|
||||
if (!SET_ALLOWED[fieldName]) {
|
||||
await addReaction('-1');
|
||||
await postComment(
|
||||
'❌ **PocketBase Bot**: `set` only supports text and JSON fields.\n\n' +
|
||||
'❌ **PocketBase Bot**: `set` only supports text fields.\n\n' +
|
||||
'**Allowed:** `' + Object.keys(SET_ALLOWED).join('`, `') + '`\n\n' +
|
||||
'For boolean/number fields use `field=value` syntax instead.'
|
||||
);
|
||||
@@ -919,21 +861,7 @@ jobs:
|
||||
process.exit(0);
|
||||
}
|
||||
const setPayload = {};
|
||||
if (SET_ALLOWED[fieldName] === 'json') {
|
||||
let parsedJson;
|
||||
try {
|
||||
parsedJson = JSON.parse(codeBlockValue);
|
||||
} catch (e) {
|
||||
await addReaction('-1');
|
||||
await postComment(
|
||||
'❌ **PocketBase Bot**: `' + fieldName + '` must be valid JSON.\n\n```\n' + e.message + '\n```'
|
||||
);
|
||||
process.exit(0);
|
||||
}
|
||||
setPayload[fieldName] = parsedJson;
|
||||
} else {
|
||||
setPayload[fieldName] = codeBlockValue;
|
||||
}
|
||||
setPayload[fieldName] = codeBlockValue;
|
||||
const setPatchRes = await request(recordsUrl + '/' + record.id, {
|
||||
method: 'PATCH',
|
||||
headers: { 'Authorization': token, 'Content-Type': 'application/json' },
|
||||
@@ -973,10 +901,6 @@ jobs:
|
||||
privileged: 'boolean',
|
||||
architectures: 'select_list',
|
||||
platforms: 'select_list',
|
||||
execute_in: 'select_list',
|
||||
has_arm: 'boolean',
|
||||
categories: 'relation_list',
|
||||
type: 'relation_single',
|
||||
is_dev: 'boolean',
|
||||
is_disabled: 'boolean',
|
||||
disable_message: 'string',
|
||||
@@ -986,18 +910,7 @@ jobs:
|
||||
|
||||
const parsedFields = parseKVPairs(rest);
|
||||
|
||||
// cpu/ram/hdd/os/version live inside install_methods, not on the
|
||||
// record itself. "/pocketbase immich hdd=25" is how people ask for
|
||||
// it, so route those keys there instead of rejecting them as
|
||||
// unknown fields. Everything else stays a plain record field.
|
||||
const TOP_RESOURCE_KEYS = { cpu: 'number', ram: 'number', hdd: 'number', os: 'string', version: 'string' };
|
||||
const resourceFields = {};
|
||||
const scriptFields = {};
|
||||
for (const [rk, rv] of Object.entries(parsedFields)) {
|
||||
if (TOP_RESOURCE_KEYS[rk]) resourceFields[rk] = rv; else scriptFields[rk] = rv;
|
||||
}
|
||||
|
||||
const unknownFields = Object.keys(scriptFields).filter(function (f) { return !ALLOWED_FIELDS[f]; });
|
||||
const unknownFields = Object.keys(parsedFields).filter(function (f) { return !ALLOWED_FIELDS[f]; });
|
||||
if (unknownFields.length > 0) {
|
||||
await addReaction('-1');
|
||||
await postComment(
|
||||
@@ -1017,10 +930,9 @@ jobs:
|
||||
const SELECT_VALUES = {
|
||||
architectures: ['amd64', 'arm64'],
|
||||
platforms: ['pve', 'incus'],
|
||||
execute_in: ['pve', 'lxc', 'pbs', 'vm', 'pmg', 'pdm'],
|
||||
};
|
||||
const payload = {};
|
||||
for (const [key, rawVal] of Object.entries(scriptFields)) {
|
||||
for (const [key, rawVal] of Object.entries(parsedFields)) {
|
||||
const type = ALLOWED_FIELDS[key];
|
||||
if (type === 'boolean') {
|
||||
if (rawVal === 'true') payload[key] = true;
|
||||
@@ -1050,65 +962,6 @@ jobs:
|
||||
process.exit(0);
|
||||
}
|
||||
payload[key] = values;
|
||||
} else if (type === 'relation_list') {
|
||||
// categories is a relation, so the stored value is a list of
|
||||
// record ids. People write category names, so resolve them —
|
||||
// and accept ids too, which is what a copy out of the
|
||||
// PocketBase UI gives you.
|
||||
const wanted = rawVal.split(',').map(function (v) { return v.trim(); }).filter(Boolean);
|
||||
const catRes = await request(apiBase + '/collections/script_categories/records?perPage=500&fields=id,name', {
|
||||
headers: { 'Authorization': token }
|
||||
});
|
||||
if (!catRes.ok) {
|
||||
await addReaction('-1');
|
||||
await postComment('❌ **PocketBase Bot**: could not read `script_categories` to resolve `' + key + '`.');
|
||||
process.exit(1);
|
||||
}
|
||||
const cats = JSON.parse(catRes.body).items || [];
|
||||
const byName = {};
|
||||
const ids = {};
|
||||
cats.forEach(function (c) { byName[String(c.name).toLowerCase()] = c.id; ids[c.id] = true; });
|
||||
const resolved = [];
|
||||
const unknownCats = [];
|
||||
wanted.forEach(function (w) {
|
||||
if (ids[w]) { resolved.push(w); return; }
|
||||
const id = byName[w.toLowerCase()];
|
||||
if (id) resolved.push(id); else unknownCats.push(w);
|
||||
});
|
||||
if (unknownCats.length > 0) {
|
||||
await addReaction('-1');
|
||||
await postComment(
|
||||
'❌ **PocketBase Bot**: unknown ' + key + ': `' + unknownCats.join('`, `') + '`\n\n' +
|
||||
'**Available:** `' + cats.map(function (c) { return c.name; }).sort().join('`, `') + '`'
|
||||
);
|
||||
process.exit(0);
|
||||
}
|
||||
payload[key] = resolved;
|
||||
} else if (type === 'relation_single') {
|
||||
// type points at one z_ref_script_types record. People write
|
||||
// "ct" or "vm", not a 15-character id.
|
||||
const typeRes = await request(apiBase + '/collections/z_ref_script_types/records?perPage=200&fields=id,type', {
|
||||
headers: { 'Authorization': token }
|
||||
});
|
||||
if (!typeRes.ok) {
|
||||
await addReaction('-1');
|
||||
await postComment('❌ **PocketBase Bot**: could not read `z_ref_script_types` to resolve `' + key + '`.');
|
||||
process.exit(1);
|
||||
}
|
||||
const types = JSON.parse(typeRes.body).items || [];
|
||||
const wantType = rawVal.trim().toLowerCase();
|
||||
const hit = types.find(function (t) {
|
||||
return t.id === rawVal.trim() || String(t.type).toLowerCase() === wantType;
|
||||
});
|
||||
if (!hit) {
|
||||
await addReaction('-1');
|
||||
await postComment(
|
||||
'❌ **PocketBase Bot**: unknown type `' + rawVal + '`\n\n' +
|
||||
'**Available:** `' + types.map(function (t) { return t.type; }).sort().join('`, `') + '`'
|
||||
);
|
||||
process.exit(0);
|
||||
}
|
||||
payload[key] = hit.id;
|
||||
} else if (type === 'nullable_string') {
|
||||
payload[key] = rawVal === '' ? null : rawVal;
|
||||
} else {
|
||||
@@ -1116,42 +969,6 @@ jobs:
|
||||
}
|
||||
}
|
||||
|
||||
// Resources go into install_methods. Which method: the only one if
|
||||
// there is only one, otherwise the non-Alpine default — and the
|
||||
// reply says which, so nobody has to guess where 25 GB landed.
|
||||
const resourceKeys = Object.keys(resourceFields);
|
||||
let resourceTargetType = null;
|
||||
if (resourceKeys.length > 0) {
|
||||
const methodsArr = readJsonBlob(record.install_methods) || [];
|
||||
if (methodsArr.length === 0) {
|
||||
await addReaction('-1');
|
||||
await postComment(
|
||||
'❌ **PocketBase Bot**: `' + slug + '` has no install methods, so there is nowhere to put `' +
|
||||
resourceKeys.join('`, `') + '`.\n\nAdd one first: `/pocketbase ' + slug + ' method add default cpu=2 ram=2048 hdd=8`'
|
||||
);
|
||||
process.exit(0);
|
||||
}
|
||||
let target = methodsArr.find(function (m) {
|
||||
return String(m.type || '').toLowerCase() !== 'alpine';
|
||||
}) || methodsArr[0];
|
||||
resourceTargetType = target.type || 'default';
|
||||
if (!target.resources) target.resources = {};
|
||||
for (const [rk, rv] of Object.entries(resourceFields)) {
|
||||
if (TOP_RESOURCE_KEYS[rk] === 'number') {
|
||||
const n = parseInt(rv, 10);
|
||||
if (isNaN(n)) {
|
||||
await addReaction('-1');
|
||||
await postComment('❌ **PocketBase Bot**: `' + rk + '` must be a number, got: `' + rv + '`');
|
||||
process.exit(0);
|
||||
}
|
||||
target.resources[rk] = n;
|
||||
} else {
|
||||
target.resources[rk] = rv;
|
||||
}
|
||||
}
|
||||
payload.install_methods = methodsArr;
|
||||
}
|
||||
|
||||
const patchRes = await request(recordsUrl + '/' + record.id, {
|
||||
method: 'PATCH',
|
||||
headers: { 'Authorization': token, 'Content-Type': 'application/json' },
|
||||
@@ -1164,16 +981,10 @@ jobs:
|
||||
}
|
||||
await revalidate(slug);
|
||||
const FIELD_TO_CT_VAR = { tags: 'var_tags', unprivileged: 'var_unprivileged' };
|
||||
const RESOURCE_CT_VAR = { cpu: 'var_cpu', ram: 'var_ram', hdd: 'var_disk', os: 'var_os', version: 'var_version' };
|
||||
const fieldCtChanges = {};
|
||||
for (const [k, v] of Object.entries(payload)) {
|
||||
if (FIELD_TO_CT_VAR[k]) fieldCtChanges[FIELD_TO_CT_VAR[k]] = v;
|
||||
}
|
||||
// Resources belong in the CT script too, exactly as the `method`
|
||||
// path syncs them - otherwise PocketBase and ct/<slug>.sh drift.
|
||||
for (const [k, v] of Object.entries(resourceFields)) {
|
||||
if (RESOURCE_CT_VAR[k]) fieldCtChanges[RESOURCE_CT_VAR[k]] = v;
|
||||
}
|
||||
let fieldCtSync = null;
|
||||
try {
|
||||
fieldCtSync = await upsertCtDefaultsPr(slug, fieldCtChanges);
|
||||
@@ -1181,14 +992,8 @@ jobs:
|
||||
fieldCtSync = { status: 'skipped', reason: 'CT sync failed: ' + e.message };
|
||||
}
|
||||
await addReaction('+1');
|
||||
// install_methods is skipped here: dumping the whole array as JSON
|
||||
// buries the one number that actually changed.
|
||||
const changesLines = Object.entries(payload)
|
||||
.filter(function (e) { return e[0] !== 'install_methods'; })
|
||||
.map(function ([k, v]) { return '- `' + k + '` → `' + JSON.stringify(v) + '`'; })
|
||||
.concat(Object.entries(resourceFields).map(function ([k, v]) {
|
||||
return '- `' + k + '` → `' + v + '` *(install method `' + resourceTargetType + '`)*';
|
||||
}))
|
||||
.join('\n');
|
||||
await postComment(
|
||||
'✅ **PocketBase Bot**: Updated **`' + slug + '`** successfully!\n\n' +
|
||||
|
||||
56
.github/workflows/sync-to-incus.yml
generated
vendored
56
.github/workflows/sync-to-incus.yml
generated
vendored
@@ -1,56 +0,0 @@
|
||||
name: Sync ct/install to Incus
|
||||
|
||||
# When a ct/*.sh or install/*.sh file changes on main, trigger the Incus repo's
|
||||
# own sync workflow immediately instead of waiting for its daily 04:00 cron.
|
||||
#
|
||||
# The actual mirroring + transformation lives in community-scripts/Incus
|
||||
# (.github/workflows/sync-scripts.yml): it rewrites each script's bootstrap line
|
||||
# to load the engine from community-scripts/core (ProxmoxVE's misc/build.func is
|
||||
# a monolith with no Incus backend), so a plain 1:1 copy would break every Incus
|
||||
# script. We therefore only fire a repository_dispatch and let that single
|
||||
# source of truth do the work (and auto-approve + merge its own PR).
|
||||
#
|
||||
# Auth: the "push-app-to-main" GitHub App (vars.PUSH_MAIN_APP_ID /
|
||||
# secrets.PUSH_MAIN_APP_SECRET), scoped to community-scripts/Incus. It has
|
||||
# contents:write, which repository_dispatch requires (community-scripts-pr-app
|
||||
# only has pull_requests:write, so it cannot dispatch). The app must be
|
||||
# installed on the Incus repo.
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "ct/**.sh"
|
||||
- "install/**.sh"
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: sync-to-incus
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
dispatch:
|
||||
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Generate token (dispatch to Incus)
|
||||
id: token
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ vars.PUSH_MAIN_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_MAIN_APP_SECRET }}
|
||||
owner: community-scripts
|
||||
repositories: Incus
|
||||
|
||||
- name: Trigger Incus sync workflow
|
||||
env:
|
||||
GH_TOKEN: ${{ steps.token.outputs.token }}
|
||||
SOURCE_SHA: ${{ github.sha }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
echo "Dispatching proxmoxve-scripts-changed to community-scripts/Incus (from ${SOURCE_SHA})"
|
||||
gh api repos/community-scripts/Incus/dispatches \
|
||||
-X POST \
|
||||
-f "event_type=proxmoxve-scripts-changed" \
|
||||
-F "client_payload[sha]=${SOURCE_SHA}"
|
||||
35
CHANGELOG.md
35
CHANGELOG.md
@@ -527,41 +527,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-08-26
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Devuan ([#16773](https://github.com/community-scripts/ProxmoxVE/pull/16773))
|
||||
- OpenEuler ([#16774](https://github.com/community-scripts/ProxmoxVE/pull/16774))
|
||||
- Gentoo ([#16775](https://github.com/community-scripts/ProxmoxVE/pull/16775))
|
||||
- openSUSE ([#16776](https://github.com/community-scripts/ProxmoxVE/pull/16776))
|
||||
- Directus ([#16779](https://github.com/community-scripts/ProxmoxVE/pull/16779))
|
||||
- HAProxy ([#16760](https://github.com/community-scripts/ProxmoxVE/pull/16760))
|
||||
|
||||
### 📂 Github
|
||||
|
||||
- github: teach the PocketBase bot every field [@MickLesk](https://github.com/MickLesk) ([#16781](https://github.com/community-scripts/ProxmoxVE/pull/16781))
|
||||
|
||||
## 2026-08-25
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Budget-Board ([#16714](https://github.com/community-scripts/ProxmoxVE/pull/16714))
|
||||
- Maintainerr ([#16716](https://github.com/community-scripts/ProxmoxVE/pull/16716))
|
||||
- pyLoad ([#16717](https://github.com/community-scripts/ProxmoxVE/pull/16717))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(apache-tika): handle upstream's switch from jar to zip distribution [@Munza2020](https://github.com/Munza2020) ([#16726](https://github.com/community-scripts/ProxmoxVE/pull/16726))
|
||||
- Fix Firecrawl install: add ccache dependency for koffi native build [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#16746](https://github.com/community-scripts/ProxmoxVE/pull/16746))
|
||||
- excalidash: Fix broken Update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#16747](https://github.com/community-scripts/ProxmoxVE/pull/16747))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Migrate the (remaining) Top 25 scripts to the new core engine [@MickLesk](https://github.com/MickLesk) ([#16749](https://github.com/community-scripts/ProxmoxVE/pull/16749))
|
||||
|
||||
## 2026-08-24
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
@@ -35,8 +35,11 @@ function update_script() {
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_from_url "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.zip" /opt/apache-tika
|
||||
mv "/opt/apache-tika/tika-server-standard-${RELEASE}.jar" /opt/apache-tika/tika-server-standard.jar
|
||||
cd /opt/apache-tika
|
||||
curl -fsSL -o tika-server-standard-${RELEASE}.jar "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar"
|
||||
mv --force tika-server-standard.jar tika-server-standard-prev-version.jar
|
||||
mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
|
||||
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/teelur/budget-board
|
||||
|
||||
APP="Budget-Board"
|
||||
var_tags="${var_tags:-finance;budget;money}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||
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/budget-board ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "budget-board" "teelur/budget-board"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop budget-board
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/budget-board/budget-board.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "budget-board" "teelur/budget-board" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Backend"
|
||||
cd /opt/budget-board/server
|
||||
$STD dotnet restore "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj"
|
||||
export configuration=Release
|
||||
$STD dotnet publish "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj" -c $configuration -o /opt/budget-board/publish /p:UseAppHost=false --no-restore
|
||||
msg_ok "Rebuilt Backend"
|
||||
|
||||
msg_info "Rebuilding Frontend"
|
||||
cd /opt/budget-board/client
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
$STD yarn install
|
||||
$STD yarn run build
|
||||
cp -r dist/. /var/www/html/
|
||||
msg_ok "Rebuilt Frontend"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start budget-board
|
||||
nginx_enable_site budget-board.conf
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
46
ct/devuan.sh
46
ct/devuan.sh
@@ -1,46 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.devuan.org/
|
||||
|
||||
APP="Devuan"
|
||||
var_tags="${var_tags:-os}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-devuan}"
|
||||
var_version="${var_version:-5.0}"
|
||||
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||
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 /var ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating Devuan LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated Devuan LXC"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
@@ -1,68 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://directus.com/
|
||||
|
||||
APP="Directus"
|
||||
var_tags="${var_tags:-cms;api;database;headless}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /opt/directus/node_modules/.bin/directus ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "directus" "directus/directus"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop directus
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/directus/.env \
|
||||
/opt/directus/uploads \
|
||||
/opt/directus/extensions
|
||||
|
||||
msg_info "Updating Directus"
|
||||
cd /opt/directus
|
||||
$STD npm install --omit=dev "directus@${CHECK_UPDATE_RELEASE#v}"
|
||||
cat <<EOF >~/.directus
|
||||
${CHECK_UPDATE_RELEASE#v}
|
||||
EOF
|
||||
restore_backup
|
||||
msg_ok "Updated Directus"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start directus
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||
echo -e "${GATEWAY}${BGN}http://${IP}:8055${CL}"
|
||||
@@ -47,11 +47,11 @@ function update_script() {
|
||||
msg_ok "Configured Database Provider"
|
||||
|
||||
msg_info "Rebuilding Application"
|
||||
$STD npm ci --include=dev
|
||||
$STD npm ci
|
||||
$STD npx prisma generate
|
||||
$STD npx tsc
|
||||
cd /opt/excalidash/frontend
|
||||
$STD npm ci --include=dev
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
cp -r /opt/excalidash/frontend/dist/. /var/www/excalidash/
|
||||
msg_ok "Rebuilt Application"
|
||||
|
||||
@@ -30,7 +30,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
ensure_dependencies build-essential ccache
|
||||
ensure_dependencies build-essential
|
||||
|
||||
if check_for_gh_release "firecrawl" "firecrawl/firecrawl"; then
|
||||
msg_info "Stopping Services"
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Authors: MickLesk (CanbiZ) | Co-Author: remz1337
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
46
ct/gentoo.sh
46
ct/gentoo.sh
@@ -1,46 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.gentoo.org/
|
||||
|
||||
APP="Gentoo"
|
||||
var_tags="${var_tags:-os}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-gentoo}"
|
||||
var_version="${var_version:-current}"
|
||||
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||
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 /var ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating Gentoo LXC"
|
||||
$STD emerge --sync
|
||||
$STD emerge --quiet --update --deep @world
|
||||
msg_ok "Updated Gentoo LXC"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
@@ -1,62 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.haproxy.org/
|
||||
|
||||
APP="HAProxy"
|
||||
var_tags="${var_tags:-network;proxy}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||
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/haproxy/haproxy.cfg ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
$STD apt update
|
||||
$STD apt install -y haproxy
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Validating Configuration"
|
||||
if ! $STD haproxy -c -f /etc/haproxy/haproxy.cfg; then
|
||||
msg_error "Configuration is invalid - service not restarted"
|
||||
exit
|
||||
fi
|
||||
msg_ok "Validated Configuration"
|
||||
|
||||
msg_info "Restarting Service"
|
||||
systemctl restart haproxy
|
||||
msg_ok "Restarted Service"
|
||||
msg_ok "Updated successfully!"
|
||||
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}Statistics page:${CL}"
|
||||
echo -e "${GATEWAY}${BGN}http://${IP}:8404${CL}"
|
||||
echo -e "${INFO}${YW}The generated stats password is in /etc/haproxy/haproxy.cfg${CL}"
|
||||
@@ -1,6 +0,0 @@
|
||||
____ __ __ ____ __
|
||||
/ __ )__ ______/ /___ ____ / /_ / __ )____ ____ __________/ /
|
||||
/ __ / / / / __ / __ `/ _ \/ __/_____/ __ / __ \/ __ `/ ___/ __ /
|
||||
/ /_/ / /_/ / /_/ / /_/ / __/ /_/_____/ /_/ / /_/ / /_/ / / / /_/ /
|
||||
/_____/\__,_/\__,_/\__, /\___/\__/ /_____/\____/\__,_/_/ \__,_/
|
||||
/____/
|
||||
@@ -1,6 +0,0 @@
|
||||
____
|
||||
/ __ \___ _ ____ ______ _____
|
||||
/ / / / _ \ | / / / / / __ `/ __ \
|
||||
/ /_/ / __/ |/ / /_/ / /_/ / / / /
|
||||
/_____/\___/|___/\__,_/\__,_/_/ /_/
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
____ _ __
|
||||
/ __ \(_)_______ _____/ /___ _______
|
||||
/ / / / / ___/ _ \/ ___/ __/ / / / ___/
|
||||
/ /_/ / / / / __/ /__/ /_/ /_/ (__ )
|
||||
/_____/_/_/ \___/\___/\__/\__,_/____/
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
______ __
|
||||
/ ____/__ ____ / /_____ ____
|
||||
/ / __/ _ \/ __ \/ __/ __ \/ __ \
|
||||
/ /_/ / __/ / / / /_/ /_/ / /_/ /
|
||||
\____/\___/_/ /_/\__/\____/\____/
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
__ _____ ____
|
||||
/ / / / | / __ \_________ _ ____ __
|
||||
/ /_/ / /| | / /_/ / ___/ __ \| |/_/ / / /
|
||||
/ __ / ___ |/ ____/ / / /_/ /> </ /_/ /
|
||||
/_/ /_/_/ |_/_/ /_/ \____/_/|_|\__, /
|
||||
/____/
|
||||
@@ -1,6 +0,0 @@
|
||||
__ ___ _ __ _
|
||||
/ |/ /___ _(_)___ / /_____ _(_)___ ___ __________
|
||||
/ /|_/ / __ `/ / __ \/ __/ __ `/ / __ \/ _ \/ ___/ ___/
|
||||
/ / / / /_/ / / / / / /_/ /_/ / / / / / __/ / / /
|
||||
/_/ /_/\__,_/_/_/ /_/\__/\__,_/_/_/ /_/\___/_/ /_/
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
______ __
|
||||
____ ____ ___ ____ / ____/_ __/ /__ _____
|
||||
/ __ \/ __ \/ _ \/ __ \/ __/ / / / / / _ \/ ___/
|
||||
/ /_/ / /_/ / __/ / / / /___/ /_/ / / __/ /
|
||||
\____/ .___/\___/_/ /_/_____/\__,_/_/\___/_/
|
||||
/_/
|
||||
@@ -1,6 +0,0 @@
|
||||
_____ __ _______ ______
|
||||
____ ____ ___ ____ / ___// / / / ___// ____/
|
||||
/ __ \/ __ \/ _ \/ __ \\__ \/ / / /\__ \/ __/
|
||||
/ /_/ / /_/ / __/ / / /__/ / /_/ /___/ / /___
|
||||
\____/ .___/\___/_/ /_/____/\____//____/_____/
|
||||
/_/
|
||||
@@ -1,6 +0,0 @@
|
||||
__ __
|
||||
____ __ __/ / ____ ____ _____/ /
|
||||
/ __ \/ / / / / / __ \/ __ `/ __ /
|
||||
/ /_/ / /_/ / /___/ /_/ / /_/ / /_/ /
|
||||
/ .___/\__, /_____/\____/\__,_/\__,_/
|
||||
/_/ /____/
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Stephen Chin (steveonjava)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Karolis Stanelis (kstanelis)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Maintainerr/Maintainerr
|
||||
|
||||
APP="Maintainerr"
|
||||
var_tags="${var_tags:-media;arr;cleanup}"
|
||||
var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-8192}"
|
||||
var_disk="${var_disk:-24}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||
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/maintainerr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "maintainerr" "Maintainerr/Maintainerr"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop maintainerr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/data /opt/maintainerr/.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "maintainerr" "Maintainerr/Maintainerr" "tarball" "latest" "/opt/maintainerr"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Maintainerr (Patience)"
|
||||
cd /opt/maintainerr
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||
$STD corepack enable
|
||||
$STD corepack prepare yarn@4.11.0 --activate
|
||||
$STD yarn config set enableTelemetry 0
|
||||
$STD yarn install --network-timeout 300000
|
||||
$STD yarn turbo build --concurrency=1
|
||||
cp -r apps/ui/dist apps/server/dist/ui
|
||||
cp -r apps/server/assets apps/server/dist/assets
|
||||
find apps/server/dist/ui -type f -not -path '*/node_modules/*' -print0 | xargs -0 sed -i "s,/__PATH_PREFIX__,,g"
|
||||
$STD yarn workspaces focus --all --production
|
||||
rm -rf /opt/maintainerr/.yarn/cache /opt/maintainerr/.turbo /opt/maintainerr/apps/ui
|
||||
sed -i '/^npm_package_version=/d;/^VERSION_TAG=/d' /opt/maintainerr/.env
|
||||
{
|
||||
echo "VERSION_TAG=stable"
|
||||
echo "npm_package_version=$(cat ~/.maintainerr)"
|
||||
} >>/opt/maintainerr/.env
|
||||
msg_ok "Rebuilt Maintainerr"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start maintainerr
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated Successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6246${CL}"
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: tteck (tteckster) | Co-Author: CrazyWolf13, MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: havardthom | Co-Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.openeuler.org/
|
||||
|
||||
APP="openEuler"
|
||||
var_tags="${var_tags:-os}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-openeuler}"
|
||||
var_version="${var_version:-25.03}"
|
||||
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||
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 /var ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating OpenEuler LXC"
|
||||
$STD dnf -y upgrade
|
||||
msg_ok "Updated OpenEuler LXC"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
@@ -1,46 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.opensuse.org/
|
||||
|
||||
APP="openSUSE"
|
||||
var_tags="${var_tags:-os}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-opensuse}"
|
||||
var_version="${var_version:-16.0}"
|
||||
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||
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 /var ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating OpenSUSE LXC"
|
||||
$STD zypper -n update
|
||||
msg_ok "Updated OpenSUSE LXC"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
msg_custom "🚀" "${GN}" "${APP} setup has been successfully initialized!"
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck | Co-Author: havardthom | Co-Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
57
ct/pyload.sh
57
ct/pyload.sh
@@ -1,57 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/pyload/pyload
|
||||
|
||||
APP="pyLoad"
|
||||
var_tags="${var_tags:-downloader}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-16}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||
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/pyload ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop pyload
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
$STD uv pip install --python /opt/pyload/.venv --upgrade --prerelease allow "pyload-ng[all]"
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start pyload
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
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 "${GATEWAY}${BGN}http://${IP}:8000${CL}"
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
@@ -35,9 +35,11 @@ msg_ok "Installed Dependencies"
|
||||
JAVA_VERSION="21" setup_java
|
||||
|
||||
msg_info "Installing Apache Tika"
|
||||
mkdir -p /opt/apache-tika
|
||||
cd /opt/apache-tika
|
||||
RELEASE="$(curl -fsSL https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)"
|
||||
fetch_and_deploy_from_url "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.zip" /opt/apache-tika
|
||||
mv "/opt/apache-tika/tika-server-standard-${RELEASE}.jar" /opt/apache-tika/tika-server-standard.jar
|
||||
curl -fsSL "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar" -o tika-server-standard-${RELEASE}.jar
|
||||
mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Installed Apache Tika"
|
||||
|
||||
|
||||
@@ -1,127 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/teelur/budget-board
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y nginx
|
||||
setup_deb822_repo \
|
||||
"microsoft" \
|
||||
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
|
||||
"https://packages.microsoft.com/debian/13/prod/" \
|
||||
"trixie"
|
||||
$STD apt install -y dotnet-sdk-10.0
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION=25 setup_nodejs
|
||||
PG_VERSION=16 setup_postgresql
|
||||
PG_DB_NAME=budget_board_db PG_DB_USER=budget_board setup_postgresql_db
|
||||
|
||||
fetch_and_deploy_gh_release "budget-board" "teelur/budget-board" "tarball"
|
||||
|
||||
msg_info "Configuring Budget Board Backend"
|
||||
cd /opt/budget-board/server
|
||||
$STD dotnet restore "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj"
|
||||
export configuration=Release
|
||||
$STD dotnet publish "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj" -c $configuration -o /opt/budget-board/publish /p:UseAppHost=false --no-restore
|
||||
|
||||
cat <<EOF >/opt/budget-board/budget-board.env
|
||||
Logging__LogLevel__Default=Information
|
||||
CLIENT_ADDRESS=$LOCAL_IP
|
||||
POSTGRES_HOST=localhost
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_DATABASE=$PG_DB_NAME
|
||||
POSTGRES_USER=$PG_DB_USER
|
||||
POSTGRES_PASSWORD=$PG_DB_PASS
|
||||
OIDC_ENABLED=false
|
||||
OIDC_ISSUER=
|
||||
OIDC_CLIENT_ID=
|
||||
OIDC_CLIENT_SECRET=
|
||||
EMAIL_SENDER=
|
||||
EMAIL_SENDER_USERNAME=
|
||||
EMAIL_SENDER_PASSWORD=
|
||||
EMAIL_SMTP_HOST=
|
||||
EMAIL_SMTP_PORT=587
|
||||
DISABLE_NEW_USERS=false
|
||||
DISABLE_LOCAL_AUTH=false
|
||||
AUTO_UPDATE_DB=true
|
||||
DISABLE_AUTO_SYNC=false
|
||||
SYNC_INTERVAL_HOURS=8
|
||||
TZ=UTC
|
||||
|
||||
ASPNETCORE_URLS=http://127.0.0.1:6253
|
||||
PORT=6253
|
||||
VITE_SERVER_ADDRESS=${LOCAL_IP}
|
||||
VITE_OIDC_ENABLED=false
|
||||
VITE_OIDC_PROVIDER=
|
||||
VITE_OIDC_CLIENT_ID=
|
||||
VITE_DISABLE_NEW_USERS=false
|
||||
VITE_DISABLE_LOCAL_AUTH=false
|
||||
EOF
|
||||
msg_ok "Configured Budget Board Backend"
|
||||
|
||||
msg_info "Configuring Budget Board Frontend"
|
||||
cd /opt/budget-board/client
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
$STD yarn config set --home enableTelemetry 0
|
||||
$STD npm install --global corepack@latest
|
||||
$STD corepack enable
|
||||
$STD yarn install
|
||||
$STD yarn run build
|
||||
cp -r dist/. /var/www/html/
|
||||
msg_ok "Configured Budget Board Frontend"
|
||||
|
||||
msg_info "Creating services"
|
||||
cat <<EOF >/etc/systemd/system/budget-board.service
|
||||
[Unit]
|
||||
Description=Budget Board Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/budget-board/publish
|
||||
ExecStart=dotnet BudgetBoard.WebAPI.dll
|
||||
Restart=always
|
||||
EnvironmentFile=/opt/budget-board/budget-board.env
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now budget-board
|
||||
|
||||
cat <<'EOF' >/etc/nginx/sites-available/budget-board.conf
|
||||
server {
|
||||
listen 80 default_server;
|
||||
server_name _;
|
||||
root /var/www/html;
|
||||
index index.html;
|
||||
|
||||
location /api/ {
|
||||
proxy_pass http://127.0.0.1:6253;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
nginx_enable_site budget-board.conf
|
||||
msg_ok "Created services"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.devuan.org/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,90 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://directus.com/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
PG_VERSION="17" setup_postgresql
|
||||
PG_DB_NAME="directus" PG_DB_USER="directus" setup_postgresql_db
|
||||
|
||||
msg_info "Installing Directus"
|
||||
mkdir -p /opt/directus/uploads /opt/directus/extensions
|
||||
cd /opt/directus
|
||||
$STD npm init -y
|
||||
DIRECTUS_VERSION=$(get_latest_github_release "directus/directus")
|
||||
$STD npm install --omit=dev "directus@${DIRECTUS_VERSION}"
|
||||
cat <<EOF >~/.directus
|
||||
${DIRECTUS_VERSION}
|
||||
EOF
|
||||
msg_ok "Installed Directus"
|
||||
|
||||
msg_info "Configuring Directus"
|
||||
DIRECTUS_KEY=$(openssl rand -hex 32)
|
||||
DIRECTUS_SECRET=$(openssl rand -hex 32)
|
||||
DIRECTUS_ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
||||
cat <<EOF >/opt/directus/.env
|
||||
HOST="0.0.0.0"
|
||||
PORT=8055
|
||||
PUBLIC_URL="http://${LOCAL_IP}:8055"
|
||||
KEY="${DIRECTUS_KEY}"
|
||||
SECRET="${DIRECTUS_SECRET}"
|
||||
|
||||
DB_CLIENT="pg"
|
||||
DB_HOST="127.0.0.1"
|
||||
DB_PORT=5432
|
||||
DB_DATABASE="${PG_DB_NAME}"
|
||||
DB_USER="${PG_DB_USER}"
|
||||
DB_PASSWORD="${PG_DB_PASS}"
|
||||
|
||||
ADMIN_EMAIL="admin@community-scripts.org"
|
||||
ADMIN_PASSWORD="${DIRECTUS_ADMIN_PASSWORD}"
|
||||
|
||||
STORAGE_LOCATIONS="local"
|
||||
STORAGE_LOCAL_DRIVER="local"
|
||||
STORAGE_LOCAL_ROOT="/opt/directus/uploads"
|
||||
EXTENSIONS_PATH="/opt/directus/extensions"
|
||||
TELEMETRY=false
|
||||
EOF
|
||||
chmod 640 /opt/directus/.env
|
||||
msg_ok "Configured Directus"
|
||||
|
||||
msg_info "Initializing Directus"
|
||||
cd /opt/directus
|
||||
$STD /opt/directus/node_modules/.bin/directus bootstrap
|
||||
msg_ok "Initialized Directus"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/directus.service
|
||||
[Unit]
|
||||
Description=Directus
|
||||
After=network.target postgresql.service
|
||||
Requires=postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/directus
|
||||
EnvironmentFile=/opt/directus/.env
|
||||
ExecStart=/opt/directus/node_modules/.bin/directus start
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now directus
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -16,7 +16,6 @@ update_os
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
ccache \
|
||||
cmake \
|
||||
git \
|
||||
nftables \
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.gentoo.org/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -30,9 +30,8 @@ setup_deb_based() {
|
||||
chown -R gitea:gitea /var/lib/gitea/
|
||||
chmod -R 750 /var/lib/gitea/
|
||||
chown root:gitea /etc/gitea
|
||||
chmod 770 /etc/gitea
|
||||
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
|
||||
chmod 750 /etc/gitea
|
||||
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
|
||||
msg_ok "Configured Gitea"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.haproxy.org/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing HAProxy"
|
||||
$STD apt install -y haproxy
|
||||
msg_ok "Installed HAProxy"
|
||||
|
||||
msg_info "Configuring HAProxy"
|
||||
HAPROXY_STATS_PASSWORD=$(openssl rand -base64 18)
|
||||
cat <<EOF >/etc/haproxy/haproxy.cfg
|
||||
global
|
||||
log /dev/log local0
|
||||
chroot /var/lib/haproxy
|
||||
stats socket /run/haproxy/admin.sock mode 660 level admin
|
||||
stats timeout 30s
|
||||
user haproxy
|
||||
group haproxy
|
||||
daemon
|
||||
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
|
||||
|
||||
defaults
|
||||
log global
|
||||
mode http
|
||||
option httplog
|
||||
option dontlognull
|
||||
timeout connect 5s
|
||||
timeout client 50s
|
||||
timeout server 50s
|
||||
errorfile 400 /etc/haproxy/errors/400.http
|
||||
errorfile 403 /etc/haproxy/errors/403.http
|
||||
errorfile 408 /etc/haproxy/errors/408.http
|
||||
errorfile 500 /etc/haproxy/errors/500.http
|
||||
errorfile 502 /etc/haproxy/errors/502.http
|
||||
errorfile 503 /etc/haproxy/errors/503.http
|
||||
errorfile 504 /etc/haproxy/errors/504.http
|
||||
|
||||
listen stats
|
||||
bind *:8404
|
||||
stats enable
|
||||
stats uri /
|
||||
stats refresh 10s
|
||||
stats admin if TRUE
|
||||
stats auth admin:${HAPROXY_STATS_PASSWORD}
|
||||
|
||||
# Example: replace with your own frontend/backend pairs.
|
||||
#frontend http_in
|
||||
# bind *:80
|
||||
# default_backend servers
|
||||
#
|
||||
#backend servers
|
||||
# balance roundrobin
|
||||
# server web1 192.168.1.10:80 check
|
||||
# server web2 192.168.1.11:80 check
|
||||
EOF
|
||||
$STD haproxy -c -f /etc/haproxy/haproxy.cfg
|
||||
systemctl restart haproxy
|
||||
msg_ok "Configured HAProxy"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,84 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Karolis Stanelis (kstanelis)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Maintainerr/Maintainerr
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
pkg-config \
|
||||
libcairo2-dev \
|
||||
libpango1.0-dev \
|
||||
libjpeg-dev \
|
||||
libgif-dev \
|
||||
libpixman-1-dev \
|
||||
librsvg2-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "maintainerr" "Maintainerr/Maintainerr" "tarball" "latest" "/opt/maintainerr"
|
||||
|
||||
msg_info "Building Maintainerr (Patience)"
|
||||
cd /opt/maintainerr
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||
$STD corepack enable
|
||||
$STD corepack prepare yarn@4.11.0 --activate
|
||||
$STD yarn config set enableTelemetry 0
|
||||
$STD yarn install --network-timeout 300000
|
||||
$STD yarn turbo build --concurrency=1
|
||||
cp -r apps/ui/dist apps/server/dist/ui
|
||||
cp -r apps/server/assets apps/server/dist/assets
|
||||
find apps/server/dist/ui -type f -not -path '*/node_modules/*' -print0 | xargs -0 sed -i "s,/__PATH_PREFIX__,,g"
|
||||
$STD yarn workspaces focus --all --production
|
||||
rm -rf /opt/maintainerr/.yarn/cache /opt/maintainerr/.turbo /opt/maintainerr/apps/ui
|
||||
msg_ok "Built Maintainerr"
|
||||
|
||||
msg_info "Configuring Environment"
|
||||
mkdir -p /opt/data/logs
|
||||
ln -sfn /opt/maintainerr /opt/app
|
||||
cat <<EOF >/opt/maintainerr/.env
|
||||
NODE_ENV=production
|
||||
DATA_DIR=/opt/data
|
||||
UI_PORT=6246
|
||||
UI_HOSTNAME=0.0.0.0
|
||||
BASE_PATH=
|
||||
VERSION_TAG=stable
|
||||
npm_package_version=$(cat ~/.maintainerr)
|
||||
EOF
|
||||
msg_ok "Configured Environment"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/maintainerr.service
|
||||
[Unit]
|
||||
Description=Maintainerr
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/maintainerr/apps/server
|
||||
EnvironmentFile=/opt/maintainerr/.env
|
||||
ExecStart=/usr/bin/node dist/main
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now maintainerr
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.openeuler.org/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.opensuse.org/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,67 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/pyload/pyload
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
unrar-free \
|
||||
p7zip-full \
|
||||
tesseract-ocr
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
UV_PYTHON="3.13" setup_uv
|
||||
|
||||
msg_info "Setting up pyLoad"
|
||||
mkdir -p /opt/pyload_data/{userdir,downloads}
|
||||
$STD uv venv --python 3.13 /opt/pyload/.venv
|
||||
$STD uv pip install --python /opt/pyload/.venv --prerelease allow "pyload-ng[all]"
|
||||
msg_ok "Set up pyLoad"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/pyload.service
|
||||
[Unit]
|
||||
Description=pyLoad Download Manager
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/pyload
|
||||
ExecStart=/opt/pyload/.venv/bin/pyload --userdir /opt/pyload_data/userdir --storagedir /opt/pyload_data/downloads
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now pyload
|
||||
msg_ok "Created Service"
|
||||
|
||||
msg_info "Configuring Web Interface"
|
||||
for _ in {1..30}; do
|
||||
[[ -f /opt/pyload_data/userdir/settings/pyload.cfg ]] && break
|
||||
sleep 1
|
||||
done
|
||||
sed -i 's|^\([[:space:]]*ip host : "IP address"\) = localhost$|\1 = 0.0.0.0|' /opt/pyload_data/userdir/settings/pyload.cfg
|
||||
|
||||
# pyLoad rewrites storage_folder from --storagedir on every start; the first start seeded it.
|
||||
sed -i 's| --storagedir /opt/pyload_data/downloads||' /etc/systemd/system/pyload.service
|
||||
systemctl daemon-reload
|
||||
systemctl restart pyload
|
||||
msg_ok "Configured Web Interface"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -136,7 +136,7 @@ network_check() {
|
||||
fi
|
||||
|
||||
# DNS resolution checks for GitHub-related domains
|
||||
GIT_HOSTS=("github.com" "raw.githubusercontent.com" "api.github.com")
|
||||
GIT_HOSTS=("github.com" "raw.githubusercontent.com" "api.github.com" "git.community-scripts.org")
|
||||
GIT_STATUS="Git DNS:"
|
||||
DNS_FAILED=false
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ TELEMETRY_ERROR_MAX_BYTES=10240
|
||||
# ------------------------------------------------------------------------------
|
||||
# detect_repo_source()
|
||||
#
|
||||
# - Dynamically detects which GitHub repo the scripts were loaded from
|
||||
# - Dynamically detects which GitHub/Gitea repo the scripts were loaded from
|
||||
# - Inspects /proc/$$/cmdline and $0 to find the source URL
|
||||
# - Maps detected repo to one of three canonical values:
|
||||
# * "ProxmoxVE" — official community-scripts/ProxmoxVE (production)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# execution helpers used throughout the Community-Scripts ecosystem.
|
||||
#
|
||||
# Usage:
|
||||
# source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
# source <(curl -fsSL https://git.community-scripts.org/.../core.func)
|
||||
# load_functions
|
||||
#
|
||||
# ==============================================================================
|
||||
|
||||
@@ -211,7 +211,7 @@ network_check() {
|
||||
fi
|
||||
|
||||
# DNS resolution checks for GitHub-related domains (IPv4 and/or IPv6)
|
||||
GIT_HOSTS=("github.com" "raw.githubusercontent.com" "api.github.com")
|
||||
GIT_HOSTS=("github.com" "raw.githubusercontent.com" "api.github.com" "git.community-scripts.org")
|
||||
GIT_STATUS="Git DNS:"
|
||||
DNS_FAILED=false
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ declare -A MSG_INFO_SHOWN
|
||||
[[ -n "${_CORE_FUNC_LOADED:-}" ]] && return
|
||||
_CORE_FUNC_LOADED=1
|
||||
|
||||
COMMUNITY_SCRIPTS_URL="${COMMUNITY_SCRIPTS_URL:-https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main}"
|
||||
COMMUNITY_SCRIPTS_URL="${COMMUNITY_SCRIPTS_URL:-https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main}"
|
||||
|
||||
load_api_functions() {
|
||||
if ! declare -f post_to_api_vm >/dev/null 2>&1; then
|
||||
|
||||
@@ -10,7 +10,7 @@ if ! command -v curl >/dev/null 2>&1; then
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get install -y curl >/dev/null 2>&1
|
||||
fi
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/misc/core.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func) 2>/dev/null || true
|
||||
load_functions
|
||||
declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "pve-privilege-converter" "pve"
|
||||
|
||||
@@ -4,9 +4,8 @@
|
||||
# Author: BvdBerg01 | Co-Author: remz1337
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
_CS_CORE_URL="${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}"
|
||||
source <(curl -fsSL "${_CS_CORE_URL}/core/core.func")
|
||||
source <(curl -fsSL "${_CS_CORE_URL}/api/api.func") 2>/dev/null || true
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/core.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func) 2>/dev/null || true
|
||||
declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "update-apps" "pve"
|
||||
|
||||
# =============================================================================
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
# Docker VM - Creates a Docker-ready Virtual Machine
|
||||
# ==============================================================================
|
||||
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func) 2>/dev/null
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/vm-core.func) 2>/dev/null
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/cloud-init.func) 2>/dev/null || true
|
||||
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/misc/api.func) 2>/dev/null
|
||||
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/misc/vm-core.func) 2>/dev/null
|
||||
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/misc/cloud-init.func) 2>/dev/null || true
|
||||
|
||||
# ==============================================================================
|
||||
# SCRIPT VARIABLES
|
||||
|
||||
Reference in New Issue
Block a user