Compare commits
1 Commits
fix/some_s
...
v0.4.6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5c6f1f129f |
11
.env.example
11
.env.example
@@ -26,13 +26,4 @@ AUTH_PASSWORD_HASH=
|
||||
AUTH_ENABLED=false
|
||||
AUTH_SETUP_COMPLETED=false
|
||||
JWT_SECRET=
|
||||
DATABASE_URL="file:/opt/ProxmoxVE-Local/data/settings.db"
|
||||
AUTO_SYNC_ENABLED=false
|
||||
SYNC_INTERVAL_TYPE=
|
||||
SYNC_INTERVAL_PREDEFINED=
|
||||
AUTO_DOWNLOAD_NEW=
|
||||
AUTO_UPDATE_EXISTING=
|
||||
NOTIFICATION_ENABLED=
|
||||
APPRISE_URLS=
|
||||
LAST_AUTO_SYNC=
|
||||
SYNC_INTERVAL_CRON=
|
||||
DATABASE_URL="file:./data/database.sqlite"
|
||||
|
||||
2
.github/workflows/node.js.yml
vendored
2
.github/workflows/node.js.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [24.x]
|
||||
node-version: [22.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
|
||||
29
.github/workflows/publish_release.yml
vendored
29
.github/workflows/publish_release.yml
vendored
@@ -46,6 +46,35 @@ jobs:
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git commit -m "chore: add VERSION $version" --allow-empty
|
||||
|
||||
|
||||
- name: Sync upstream JSONs
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
tmp_dir=$(mktemp -d)
|
||||
api_url="https://api.github.com/repos/community-scripts/ProxmoxVE/contents/frontend/public/json"
|
||||
# Fetch file list (no subfolders)
|
||||
curl -sSL -H "Authorization: token $GH_TOKEN" "$api_url" \
|
||||
| jq -r '.[] | select(.type=="file") | .name' > "$tmp_dir/files.txt"
|
||||
|
||||
# Download each file
|
||||
while IFS= read -r name; do
|
||||
curl -sSL -H "Authorization: token $GH_TOKEN" \
|
||||
"https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/frontend/public/json/$name" \
|
||||
-o "$tmp_dir/$name"
|
||||
done < "$tmp_dir/files.txt"
|
||||
|
||||
mkdir -p json
|
||||
rsync -a --delete "$tmp_dir/" json/
|
||||
|
||||
# Stage and amend commit to include JSON updates (and VERSION)
|
||||
git add json VERSION
|
||||
if ! git diff --cached --quiet; then
|
||||
git commit --amend --no-edit
|
||||
fi
|
||||
|
||||
|
||||
- name: Push changes
|
||||
run: |
|
||||
git push --force-with-lease --set-upstream origin "update-version-${{ steps.draft.outputs.tag_name }}"
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -37,9 +37,6 @@ yarn-debug.log*
|
||||
yarn-error.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
update.log
|
||||
server.log
|
||||
|
||||
# local env files
|
||||
# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables
|
||||
.env
|
||||
|
||||
44
json/frigate.json.bak
Normal file
44
json/frigate.json.bak
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "Frigate",
|
||||
"slug": "frigate",
|
||||
"categories": [
|
||||
15
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": true,
|
||||
"interface_port": 5000,
|
||||
"documentation": "https://docs.frigate.video/",
|
||||
"website": "https://frigate.video/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/frigate.webp",
|
||||
"config_path": "",
|
||||
"description": "Frigate is an open source NVR built around real-time AI object detection. All processing is performed locally on your own hardware, and your camera feeds never leave your home.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/frigate.sh",
|
||||
"resources": {
|
||||
"cpu": 4,
|
||||
"ram": 4096,
|
||||
"hdd": 20,
|
||||
"os": "debian",
|
||||
"version": "11"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Discussions (explore more advanced methods): `https://github.com/tteck/Proxmox/discussions/2711`",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "go2rtc Interface port:`1984`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
"documentation": "https://docs.openarchiver.com/",
|
||||
"config_path": "/opt/openarchiver/.env",
|
||||
"website": "https://openarchiver.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/open-archiver.webp",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/OpenArchiver.webp",
|
||||
"description": "Open Archiver is a secure, self-hosted email archiving solution, and it's completely open source. Get an email archiver that enables full-text search across email and attachments. Create a permanent, searchable, and compliant mail archive from Google Workspace, Microsoft 35, and any IMAP server.",
|
||||
"install_methods": [
|
||||
{
|
||||
|
||||
@@ -43,10 +43,6 @@ const config = {
|
||||
'http://192.168.*',
|
||||
],
|
||||
|
||||
turbopack: {
|
||||
// Disable Turbopack and use Webpack instead for compatibility
|
||||
// This is necessary for server-side code that uses child_process
|
||||
},
|
||||
webpack: (config, { dev, isServer }) => {
|
||||
if (dev && !isServer) {
|
||||
config.watchOptions = {
|
||||
@@ -54,19 +50,8 @@ const config = {
|
||||
aggregateTimeout: 300,
|
||||
};
|
||||
}
|
||||
// Handle server-side modules
|
||||
if (isServer) {
|
||||
config.externals = config.externals || [];
|
||||
if (!config.externals.includes('child_process')) {
|
||||
config.externals.push('child_process');
|
||||
}
|
||||
}
|
||||
return config;
|
||||
},
|
||||
// Ignore TypeScript errors during build (they can be fixed separately)
|
||||
typescript: {
|
||||
ignoreBuildErrors: true,
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
||||
3038
package-lock.json
generated
3038
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
50
package.json
50
package.json
@@ -4,11 +4,11 @@
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "next build --webpack",
|
||||
"build": "next build",
|
||||
"check": "next lint && tsc --noEmit",
|
||||
"dev": "next dev --webpack",
|
||||
"dev": "next dev",
|
||||
"dev:server": "node server.js",
|
||||
"dev:next": "next dev --webpack",
|
||||
"dev:next": "next dev --turbo",
|
||||
"format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,mdx}\" --cache",
|
||||
"format:write": "prettier --write \"**/*.{ts,tsx,js,jsx,mdx}\" --cache",
|
||||
"lint": "next lint",
|
||||
@@ -22,7 +22,7 @@
|
||||
"typecheck": "tsc --noEmit"
|
||||
},
|
||||
"dependencies": {
|
||||
"@prisma/client": "^6.19.0",
|
||||
"@prisma/client": "^6.17.1",
|
||||
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
||||
"@radix-ui/react-slot": "^1.2.3",
|
||||
"@t3-oss/env-nextjs": "^0.13.8",
|
||||
@@ -36,66 +36,58 @@
|
||||
"@xterm/addon-fit": "^0.10.0",
|
||||
"@xterm/addon-web-links": "^0.11.0",
|
||||
"@xterm/xterm": "^5.5.0",
|
||||
"axios": "^1.7.9",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"cron-validator": "^1.2.0",
|
||||
"dotenv": "^17.2.3",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"lucide-react": "^0.554.0",
|
||||
"next": "^16.0.4",
|
||||
"node-cron": "^4.2.1",
|
||||
"lucide-react": "^0.546.0",
|
||||
"next": "^15.5.6",
|
||||
"node-pty": "^1.0.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-markdown": "^10.1.0",
|
||||
"react-syntax-highlighter": "^16.1.0",
|
||||
"react-syntax-highlighter": "^15.6.6",
|
||||
"refractor": "^5.0.0",
|
||||
"remark-gfm": "^4.0.1",
|
||||
"server-only": "^0.0.1",
|
||||
"strip-ansi": "^7.1.2",
|
||||
"superjson": "^2.2.3",
|
||||
"superjson": "^2.2.1",
|
||||
"tailwind-merge": "^3.3.1",
|
||||
"ws": "^8.18.3",
|
||||
"zod": "^4.1.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/eslintrc": "^3.3.1",
|
||||
"@tailwindcss/postcss": "^4.1.16",
|
||||
"@tailwindcss/postcss": "^4.1.15",
|
||||
"@testing-library/jest-dom": "^6.9.1",
|
||||
"@testing-library/react": "^16.3.0",
|
||||
"@testing-library/user-event": "^14.6.1",
|
||||
"@types/bcryptjs": "^3.0.0",
|
||||
"@types/better-sqlite3": "^7.6.8",
|
||||
"@types/jsonwebtoken": "^9.0.10",
|
||||
"@types/node": "^24.10.1",
|
||||
"@types/node-cron": "^3.0.11",
|
||||
"@types/react": "^19.2.4",
|
||||
"@types/node": "^24.9.0",
|
||||
"@types/react": "^19.0.0",
|
||||
"@types/react-dom": "^19.2.2",
|
||||
"@vitejs/plugin-react": "^5.1.0",
|
||||
"@vitest/coverage-v8": "^4.0.13",
|
||||
"@vitest/ui": "^4.0.13",
|
||||
"eslint": "^9.39.1",
|
||||
"eslint-config-next": "^16.0.4",
|
||||
"jsdom": "^27.2.0",
|
||||
"@vitejs/plugin-react": "^5.0.2",
|
||||
"@vitest/coverage-v8": "^3.2.4",
|
||||
"@vitest/ui": "^3.2.4",
|
||||
"eslint": "^9.38.0",
|
||||
"eslint-config-next": "^15.5.6",
|
||||
"jsdom": "^27.0.1",
|
||||
"postcss": "^8.5.3",
|
||||
"prettier": "^3.5.3",
|
||||
"prettier-plugin-tailwindcss": "^0.7.1",
|
||||
"prisma": "^6.19.0",
|
||||
"tailwindcss": "^4.1.17",
|
||||
"prisma": "^6.17.1",
|
||||
"tailwindcss": "^4.1.15",
|
||||
"typescript": "^5.8.2",
|
||||
"typescript-eslint": "^8.46.2",
|
||||
"vitest": "^4.0.13"
|
||||
"vitest": "^3.2.4"
|
||||
},
|
||||
"ct3aMetadata": {
|
||||
"initVersion": "7.39.3"
|
||||
},
|
||||
"packageManager": "npm@10.9.3",
|
||||
"engines": {
|
||||
"node": ">=24.0.0"
|
||||
},
|
||||
"overrides": {
|
||||
"prismjs": "^1.30.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "repositories" (
|
||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
"url" TEXT NOT NULL,
|
||||
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
||||
"is_default" BOOLEAN NOT NULL DEFAULT false,
|
||||
"is_removable" BOOLEAN NOT NULL DEFAULT true,
|
||||
"priority" INTEGER NOT NULL DEFAULT 0,
|
||||
"created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "repositories_url_key" ON "repositories"("url");
|
||||
@@ -1,41 +0,0 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE IF NOT EXISTS "backups" (
|
||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
"container_id" TEXT NOT NULL,
|
||||
"server_id" INTEGER NOT NULL,
|
||||
"hostname" TEXT NOT NULL,
|
||||
"backup_name" TEXT NOT NULL,
|
||||
"backup_path" TEXT NOT NULL,
|
||||
"size" BIGINT,
|
||||
"created_at" DATETIME,
|
||||
"storage_name" TEXT NOT NULL,
|
||||
"storage_type" TEXT NOT NULL,
|
||||
"discovered_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "backups_server_id_fkey" FOREIGN KEY ("server_id") REFERENCES "servers" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE IF NOT EXISTS "pbs_storage_credentials" (
|
||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
"server_id" INTEGER NOT NULL,
|
||||
"storage_name" TEXT NOT NULL,
|
||||
"pbs_ip" TEXT NOT NULL,
|
||||
"pbs_datastore" TEXT NOT NULL,
|
||||
"pbs_password" TEXT NOT NULL,
|
||||
"pbs_fingerprint" TEXT NOT NULL,
|
||||
"created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" DATETIME NOT NULL,
|
||||
CONSTRAINT "pbs_storage_credentials_server_id_fkey" FOREIGN KEY ("server_id") REFERENCES "servers" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX IF NOT EXISTS "backups_container_id_idx" ON "backups"("container_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX IF NOT EXISTS "backups_server_id_idx" ON "backups"("server_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX IF NOT EXISTS "pbs_storage_credentials_server_id_idx" ON "pbs_storage_credentials"("server_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "pbs_storage_credentials_server_id_storage_name_key" ON "pbs_storage_credentials"("server_id", "storage_name");
|
||||
@@ -41,8 +41,6 @@ model Server {
|
||||
ssh_key_path String?
|
||||
key_generated Boolean? @default(false)
|
||||
installed_scripts InstalledScript[]
|
||||
backups Backup[]
|
||||
pbs_credentials PBSStorageCredential[]
|
||||
|
||||
@@map("servers")
|
||||
}
|
||||
@@ -97,52 +95,3 @@ model LXCConfig {
|
||||
|
||||
@@map("lxc_configs")
|
||||
}
|
||||
|
||||
model Backup {
|
||||
id Int @id @default(autoincrement())
|
||||
container_id String
|
||||
server_id Int
|
||||
hostname String
|
||||
backup_name String
|
||||
backup_path String
|
||||
size BigInt?
|
||||
created_at DateTime?
|
||||
storage_name String
|
||||
storage_type String // 'local', 'storage', or 'pbs'
|
||||
discovered_at DateTime @default(now())
|
||||
server Server @relation(fields: [server_id], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([container_id])
|
||||
@@index([server_id])
|
||||
@@map("backups")
|
||||
}
|
||||
|
||||
model PBSStorageCredential {
|
||||
id Int @id @default(autoincrement())
|
||||
server_id Int
|
||||
storage_name String
|
||||
pbs_ip String
|
||||
pbs_datastore String
|
||||
pbs_password String
|
||||
pbs_fingerprint String
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @updatedAt
|
||||
server Server @relation(fields: [server_id], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([server_id, storage_name])
|
||||
@@index([server_id])
|
||||
@@map("pbs_storage_credentials")
|
||||
}
|
||||
|
||||
model Repository {
|
||||
id Int @id @default(autoincrement())
|
||||
url String @unique
|
||||
enabled Boolean @default(true)
|
||||
is_default Boolean @default(false)
|
||||
is_removable Boolean @default(true)
|
||||
priority Int @default(0)
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @updatedAt
|
||||
|
||||
@@map("repositories")
|
||||
}
|
||||
|
||||
10
restore.log
10
restore.log
@@ -1,10 +0,0 @@
|
||||
Starting restore...
|
||||
Reading container configuration...
|
||||
Stopping container...
|
||||
Destroying container...
|
||||
Logging into PBS...
|
||||
Downloading backup from PBS...
|
||||
Packing backup folder...
|
||||
Restoring container...
|
||||
Cleaning up temporary files...
|
||||
Restore completed successfully
|
||||
@@ -1,132 +0,0 @@
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: michelroegl-brunner
|
||||
# License: MIT | https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/LICENSE
|
||||
|
||||
post_to_api() {
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ "$DIAGNOSTICS" = "no" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ -z "$RANDOM_UUID" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
local API_URL="http://api.community-scripts.org/upload"
|
||||
local pve_version="not found"
|
||||
pve_version=$(pveversion | awk -F'[/ ]' '{print $2}')
|
||||
|
||||
JSON_PAYLOAD=$(
|
||||
cat <<EOF
|
||||
{
|
||||
"ct_type": $CT_TYPE,
|
||||
"type":"lxc",
|
||||
"disk_size": $DISK_SIZE,
|
||||
"core_count": $CORE_COUNT,
|
||||
"ram_size": $RAM_SIZE,
|
||||
"os_type": "$var_os",
|
||||
"os_version": "$var_version",
|
||||
"disableip6": "",
|
||||
"nsapp": "$NSAPP",
|
||||
"method": "$METHOD(PVE-Local)",
|
||||
"pve_version": "$pve_version",
|
||||
"status": "installing",
|
||||
"random_id": "$RANDOM_UUID"
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
if [[ "$DIAGNOSTICS" == "yes" ]]; then
|
||||
RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$JSON_PAYLOAD") || true
|
||||
fi
|
||||
}
|
||||
|
||||
post_to_api_vm() {
|
||||
|
||||
if [[ ! -f /usr/local/community-scripts/diagnostics ]]; then
|
||||
return
|
||||
fi
|
||||
DIAGNOSTICS=$(grep -i "^DIAGNOSTICS=" /usr/local/community-scripts/diagnostics | awk -F'=' '{print $2}')
|
||||
if ! command -v curl &>/dev/null; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ "$DIAGNOSTICS" = "no" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ -z "$RANDOM_UUID" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
local API_URL="http://api.community-scripts.org/upload"
|
||||
local pve_version="not found"
|
||||
pve_version=$(pveversion | awk -F'[/ ]' '{print $2}')
|
||||
|
||||
DISK_SIZE_API=${DISK_SIZE%G}
|
||||
|
||||
JSON_PAYLOAD=$(
|
||||
cat <<EOF
|
||||
{
|
||||
"ct_type": 2,
|
||||
"type":"vm",
|
||||
"disk_size": $DISK_SIZE_API,
|
||||
"core_count": $CORE_COUNT,
|
||||
"ram_size": $RAM_SIZE,
|
||||
"os_type": "$var_os",
|
||||
"os_version": "$var_version",
|
||||
"disableip6": "",
|
||||
"nsapp": "$NSAPP",
|
||||
"method": "$METHOD(PVE-Local)",
|
||||
"pve_version": "$pve_version",
|
||||
"status": "installing",
|
||||
"random_id": "$RANDOM_UUID"
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
if [[ "$DIAGNOSTICS" == "yes" ]]; then
|
||||
RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$JSON_PAYLOAD") || true
|
||||
fi
|
||||
}
|
||||
|
||||
POST_UPDATE_DONE=false
|
||||
post_update_to_api() {
|
||||
|
||||
if ! command -v curl &>/dev/null; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ "$POST_UPDATE_DONE" = true ]; then
|
||||
return 0
|
||||
fi
|
||||
local API_URL="http://api.community-scripts.org/upload/updatestatus"
|
||||
local status="${1:-failed}"
|
||||
local error="${2:-No error message}"
|
||||
|
||||
JSON_PAYLOAD=$(
|
||||
cat <<EOF
|
||||
{
|
||||
"status": "$status",
|
||||
"error": "$error",
|
||||
"random_id": "$RANDOM_UUID"
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
if [[ "$DIAGNOSTICS" == "yes" ]]; then
|
||||
RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$JSON_PAYLOAD") || true
|
||||
fi
|
||||
|
||||
POST_UPDATE_DONE=true
|
||||
}
|
||||
@@ -17,9 +17,9 @@ variables() {
|
||||
|
||||
# Get absolute path to core directory
|
||||
CORE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$CORE_DIR/api.func"
|
||||
source "$CORE_DIR/core.func"
|
||||
load_functions
|
||||
|
||||
|
||||
# This function enables error handling in the script by setting options and defining a trap for the ERR signal.
|
||||
catch_errors() {
|
||||
set -Eeo pipefail
|
||||
@@ -33,15 +33,15 @@ error_handler() {
|
||||
local line_number="$1"
|
||||
local command="$2"
|
||||
local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
|
||||
post_update_to_api "failed" "${command}"
|
||||
|
||||
echo -e "\n$error_message\n"
|
||||
}
|
||||
|
||||
# Check if the current shell is using bash
|
||||
# Check if the shell is using bash
|
||||
shell_check() {
|
||||
if [[ "$(ps -p $$ -o comm=)" != "bash" ]]; then
|
||||
if [[ "$(basename "$SHELL")" != "bash" ]]; then
|
||||
clear
|
||||
msg_error "Your default shell is not bash. Please report this to our github issues or discord."
|
||||
msg_error "Your default shell is currently not set to Bash. To use these scripts, please switch to the Bash shell."
|
||||
echo -e "\nExiting..."
|
||||
sleep 2
|
||||
exit
|
||||
@@ -60,7 +60,7 @@ root_check() {
|
||||
}
|
||||
|
||||
# This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported.
|
||||
# Supported: Proxmox VE 8.0.x – 8.9.x, 9.0 and 9.1
|
||||
# Supported: Proxmox VE 8.0.x – 8.9.x and 9.0 (NOT 9.1+)
|
||||
pve_check() {
|
||||
local PVE_VER
|
||||
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
||||
@@ -76,12 +76,12 @@ pve_check() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Check for Proxmox VE 9.x: allow 9.0 and 9.1
|
||||
# Check for Proxmox VE 9.x: allow ONLY 9.0
|
||||
if [[ "$PVE_VER" =~ ^9\.([0-9]+) ]]; then
|
||||
local MINOR="${BASH_REMATCH[1]}"
|
||||
if ((MINOR < 0 || MINOR > 1)); then
|
||||
msg_error "This version of Proxmox VE is not supported."
|
||||
msg_error "Supported: Proxmox VE version 9.0 – 9.1"
|
||||
if ((MINOR != 0)); then
|
||||
msg_error "This version of Proxmox VE is not yet supported."
|
||||
msg_error "Supported: Proxmox VE version 9.0"
|
||||
exit 1
|
||||
fi
|
||||
return 0
|
||||
@@ -89,7 +89,7 @@ pve_check() {
|
||||
|
||||
# All other unsupported versions
|
||||
msg_error "This version of Proxmox VE is not supported."
|
||||
msg_error "Supported versions: Proxmox VE 8.0 – 8.x or 9.0 – 9.1"
|
||||
msg_error "Supported versions: Proxmox VE 8.0 – 8.x or 9.0"
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -914,7 +914,6 @@ install_script() {
|
||||
shell_check
|
||||
root_check
|
||||
arch_check
|
||||
#ssh_check
|
||||
maxkeys_check
|
||||
diagnostics_check
|
||||
|
||||
@@ -1049,6 +1048,7 @@ start() {
|
||||
source "$CORE_DIR/tools.func"
|
||||
if command -v pveversion >/dev/null 2>&1; then
|
||||
install_script
|
||||
|
||||
else
|
||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "${APP} LXC Update/Setting" --menu \
|
||||
"Support/Update functions for ${APP} LXC. Choose an option:" \
|
||||
@@ -1078,6 +1078,7 @@ start() {
|
||||
|
||||
# This function collects user settings and integrates all the collected information.
|
||||
build_container() {
|
||||
|
||||
# if [ "$VERBOSE" == "yes" ]; then set -x; fi
|
||||
|
||||
NET_STRING="-net0 name=eth0,bridge=$BRG$MAC,ip=$NET$GATE$VLAN$MTU"
|
||||
@@ -1101,12 +1102,18 @@ build_container() {
|
||||
fi
|
||||
|
||||
if [[ $DIAGNOSTICS == "yes" ]]; then
|
||||
post_to_api
|
||||
echo "Diagnostics enabled (post_to_api function not available)"
|
||||
fi
|
||||
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
pushd "$TEMP_DIR" >/dev/null
|
||||
|
||||
# CORE_DIR is already defined at the top of the file
|
||||
|
||||
if [ "$var_os" == "alpine" ]; then
|
||||
export FUNCTIONS_FILE_PATH="$(cat "$CORE_DIR/core.func" && echo && cat "$CORE_DIR/tools.func" && echo && cat "$CORE_DIR/alpine-install.func")"
|
||||
else
|
||||
export FUNCTIONS_FILE_PATH="$(cat "$CORE_DIR/core.func" && echo && cat "$CORE_DIR/tools.func" && echo && cat "$CORE_DIR/install.func")"
|
||||
fi
|
||||
|
||||
export DIAGNOSTICS="$DIAGNOSTICS"
|
||||
export RANDOM_UUID="$RANDOM_UUID"
|
||||
@@ -1126,10 +1133,21 @@ build_container() {
|
||||
export PCT_OSTYPE="$var_os"
|
||||
export PCT_OSVERSION="$var_version"
|
||||
export PCT_DISK_SIZE="$DISK_SIZE"
|
||||
export PCT_OPTIONS="-features $FEATURES -hostname $HN -tags $TAGS $SD $NS $NET_STRING -onboot 1 -cores $CORE_COUNT -memory $RAM_SIZE -unprivileged $CT_TYPE $PW"
|
||||
export PCT_OPTIONS="
|
||||
-features $FEATURES
|
||||
-hostname $HN
|
||||
-tags $TAGS
|
||||
$SD
|
||||
$NS
|
||||
$NET_STRING
|
||||
-onboot 1
|
||||
-cores $CORE_COUNT
|
||||
-memory $RAM_SIZE
|
||||
-unprivileged $CT_TYPE
|
||||
$PW
|
||||
"
|
||||
# This executes create_lxc.sh and creates the container and .conf file
|
||||
bash "$CORE_DIR/create_lxc.sh"
|
||||
|
||||
bash "$CORE_DIR/create_lxc.sh" $?
|
||||
|
||||
LXC_CONFIG="/etc/pve/lxc/${CTID}.conf"
|
||||
|
||||
@@ -1322,64 +1340,8 @@ EOF'
|
||||
fi
|
||||
msg_ok "Customized LXC Container"
|
||||
|
||||
if [ "$var_os" == "alpine" ]; then
|
||||
FUNCTIONS_FILE_PATH="$(cat "$CORE_DIR/core.func" && echo && cat "$CORE_DIR/tools.func" && echo && cat "$CORE_DIR/api.func" && echo && cat "$CORE_DIR/alpine-install.func")"
|
||||
else
|
||||
FUNCTIONS_FILE_PATH="$(cat "$CORE_DIR/core.func" && echo && cat "$CORE_DIR/tools.func" && echo && cat "$CORE_DIR/api.func" && echo && cat "$CORE_DIR/install.func")"
|
||||
fi
|
||||
|
||||
FUNCTIONS_FILE="/tmp/functions.sh"
|
||||
echo "$FUNCTIONS_FILE_PATH" | pct exec "$CTID" -- bash -c "cat > $FUNCTIONS_FILE"
|
||||
|
||||
pct exec "$CTID" -- test -f "$FUNCTIONS_FILE" || {
|
||||
msg_error "Failed to write functions file to container"
|
||||
exit 1
|
||||
}
|
||||
|
||||
INSTALL_SCRIPT_PATH="$(dirname "$CORE_DIR")/install/${var_install}.sh"
|
||||
INSTALL_SCRIPT_CONTENT=$(cat "$INSTALL_SCRIPT_PATH")
|
||||
|
||||
# Replace the old pattern: source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
# with direct file source: source "/tmp/functions.sh"
|
||||
# Use sed with a simpler pattern that matches the exact line
|
||||
MODIFIED_INSTALL_SCRIPT=$(echo "$INSTALL_SCRIPT_CONTENT" | \
|
||||
sed "s|source /dev/stdin <<<\"\$FUNCTIONS_FILE_PATH\"|source \"$FUNCTIONS_FILE\"|")
|
||||
|
||||
# Verify replacement worked - if not, force add the source line
|
||||
if ! echo "$MODIFIED_INSTALL_SCRIPT" | grep -q "source \"$FUNCTIONS_FILE\""; then
|
||||
# If replacement didn't work, add source line after the last comment
|
||||
MODIFIED_INSTALL_SCRIPT=$(echo "$MODIFIED_INSTALL_SCRIPT" | \
|
||||
awk -v func_file="$FUNCTIONS_FILE" '
|
||||
BEGIN { replaced = 0 }
|
||||
{
|
||||
if (/source.*dev\/stdin/ || /source.*FUNCTIONS_FILE_PATH/) {
|
||||
print "source \"" func_file "\""
|
||||
replaced = 1
|
||||
next
|
||||
}
|
||||
if (!replaced && /^#/ && !/^#!/) {
|
||||
print
|
||||
next
|
||||
}
|
||||
if (!replaced && !/^#!/ && !/^#/) {
|
||||
print "source \"" func_file "\""
|
||||
replaced = 1
|
||||
}
|
||||
print
|
||||
}
|
||||
END {
|
||||
if (!replaced) {
|
||||
print "source \"" func_file "\""
|
||||
}
|
||||
}')
|
||||
fi
|
||||
|
||||
# Write the modified script to a file in the container and execute it
|
||||
INSTALL_SCRIPT_FILE="/tmp/install_script.sh"
|
||||
echo "$MODIFIED_INSTALL_SCRIPT" | pct exec "$CTID" -- bash -c "cat > $INSTALL_SCRIPT_FILE"
|
||||
pct exec "$CTID" -- chmod +x "$INSTALL_SCRIPT_FILE"
|
||||
|
||||
lxc-attach -n "$CTID" -- bash "$INSTALL_SCRIPT_FILE"
|
||||
lxc-attach -n "$CTID" -- bash -c "$(cat "$(dirname "$CORE_DIR")/install/${var_install}.sh")"
|
||||
}
|
||||
|
||||
# This function sets the description of the container.
|
||||
@@ -1424,37 +1386,6 @@ EOF
|
||||
if [[ -f /etc/systemd/system/ping-instances.service ]]; then
|
||||
systemctl start ping-instances.service
|
||||
fi
|
||||
|
||||
post_update_to_api "done" "none"
|
||||
}
|
||||
|
||||
api_exit_script() {
|
||||
exit_code=$? # Capture the exit status of the last executed command
|
||||
#200 exit codes indicate error in create_lxc.sh
|
||||
#100 exit codes indicate error in install.func
|
||||
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
case $exit_code in
|
||||
100) post_update_to_api "failed" "100: Unexpected error in create_lxc.sh" ;;
|
||||
101) post_update_to_api "failed" "101: No network connection detected in create_lxc.sh" ;;
|
||||
200) post_update_to_api "failed" "200: LXC creation failed in create_lxc.sh" ;;
|
||||
201) post_update_to_api "failed" "201: Invalid Storage class in create_lxc.sh" ;;
|
||||
202) post_update_to_api "failed" "202: User aborted menu in create_lxc.sh" ;;
|
||||
203) post_update_to_api "failed" "203: CTID not set in create_lxc.sh" ;;
|
||||
204) post_update_to_api "failed" "204: PCT_OSTYPE not set in create_lxc.sh" ;;
|
||||
205) post_update_to_api "failed" "205: CTID cannot be less than 100 in create_lxc.sh" ;;
|
||||
206) post_update_to_api "failed" "206: CTID already in use in create_lxc.sh" ;;
|
||||
207) post_update_to_api "failed" "207: Template not found in create_lxc.sh" ;;
|
||||
208) post_update_to_api "failed" "208: Error downloading template in create_lxc.sh" ;;
|
||||
209) post_update_to_api "failed" "209: Container creation failed, but template is intact in create_lxc.sh" ;;
|
||||
*) post_update_to_api "failed" "Unknown error, exit code: $exit_code in create_lxc.sh" ;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
if command -v pveversion >/dev/null 2>&1; then
|
||||
trap 'api_exit_script' EXIT
|
||||
fi
|
||||
trap 'post_update_to_api "failed" "$BASH_COMMAND"' ERR
|
||||
trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT
|
||||
trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
|
||||
@@ -368,51 +368,6 @@ run_container_safe() {
|
||||
" || __handle_general_error "lxc-attach to CT $ct"
|
||||
}
|
||||
|
||||
cleanup_lxc() {
|
||||
msg_info "Cleaning up"
|
||||
|
||||
if is_alpine; then
|
||||
$STD apk cache clean || true
|
||||
rm -rf /var/cache/apk/*
|
||||
else
|
||||
$STD apt -y autoremove || true
|
||||
$STD apt -y autoclean || true
|
||||
$STD apt -y clean || true
|
||||
fi
|
||||
|
||||
# Clear temp artifacts (keep sockets/FIFOs; ignore errors)
|
||||
find /tmp /var/tmp -type f -name 'tmp*' -delete 2>/dev/null || true
|
||||
find /tmp /var/tmp -type f -name 'tempfile*' -delete 2>/dev/null || true
|
||||
|
||||
# Truncate writable log files silently (permission errors ignored)
|
||||
if command -v truncate >/dev/null 2>&1; then
|
||||
find /var/log -type f -writable -print0 2>/dev/null |
|
||||
xargs -0 -n1 truncate -s 0 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Python pip
|
||||
if command -v pip &>/dev/null; then $STD pip cache purge || true; fi
|
||||
# Node.js npm
|
||||
if command -v npm &>/dev/null; then $STD npm cache clean --force || true; fi
|
||||
# Node.js yarn
|
||||
if command -v yarn &>/dev/null; then $STD yarn cache clean || true; fi
|
||||
# Node.js pnpm
|
||||
if command -v pnpm &>/dev/null; then $STD pnpm store prune || true; fi
|
||||
# Go
|
||||
if command -v go &>/dev/null; then $STD go clean -cache -modcache || true; fi
|
||||
# Rust cargo
|
||||
if command -v cargo &>/dev/null; then $STD cargo clean || true; fi
|
||||
# Ruby gem
|
||||
if command -v gem &>/dev/null; then $STD gem cleanup || true; fi
|
||||
# Composer (PHP)
|
||||
if command -v composer &>/dev/null; then $STD composer clear-cache || true; fi
|
||||
|
||||
if command -v journalctl &>/dev/null; then
|
||||
$STD journalctl --vacuum-time=10m || true
|
||||
fi
|
||||
msg_ok "Cleaned"
|
||||
}
|
||||
|
||||
check_or_create_swap() {
|
||||
msg_info "Checking for active swap"
|
||||
|
||||
@@ -454,4 +409,4 @@ check_or_create_swap() {
|
||||
trap 'stop_spinner' EXIT INT TERM
|
||||
|
||||
# Initialize functions when core.func is sourced
|
||||
load_functions
|
||||
load_functions
|
||||
File diff suppressed because it is too large
Load Diff
44
scripts/json/2fauth.json
Normal file
44
scripts/json/2fauth.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "2FAuth",
|
||||
"slug": "2fauth",
|
||||
"categories": [
|
||||
6
|
||||
],
|
||||
"date_created": "2024-12-20",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": "https://docs.2fauth.app/",
|
||||
"website": "https://2fauth.app/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/2fauth.webp",
|
||||
"config_path": "cat /opt/2fauth/.env",
|
||||
"description": "2FAuth is a web based self-hosted alternative to One Time Passcode (OTP) generators like Google Authenticator, designed for both mobile and desktop. It aims to ease you perform your 2FA authentication steps whatever the device you handle, with a clean and suitable interface.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/2fauth.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Database credentials: `cat ~/2FAuth.creds`",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "The very first account created is automatically set up as an administrator account.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -48,6 +48,5 @@
|
||||
"text": "You can execute the ip tool manually with `iptag-run`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -44,6 +44,5 @@
|
||||
"text": "The script only works in Debian/Ubuntu, not in Alpine!",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -40,6 +40,5 @@
|
||||
"text": "Execute within the Proxmox host shell",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -47,6 +47,5 @@
|
||||
"text": "AdGuard Home can only be updated via the user interface.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -40,6 +40,5 @@
|
||||
"text": "Use `cat ~/adventurelog.creds` to see login credentials.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Resource and network settings are adjustable post LXC creation.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -42,6 +42,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -47,6 +47,5 @@
|
||||
"text": "The default credentials are located in `/opt/tinyauth/credentials.txt`.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "To Update Alpine: `apk -U upgrade`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Show Login Credentials: `cat CouchDB.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": "guacadmin",
|
||||
"password": "guacadmin"
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Configuration file is not created at install time. Example is at: `https://cwiki.apache.org/confluence/display/TIKA/TikaServer+in+Tika+2.x`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "User can select which Adoptium JDK should be used for the selected Tomcat version (9, 10.1 or 11). ",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": "archivebox",
|
||||
"password": "helper-scripts.com"
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "doesnt work with lvm and lvmthin disks!",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Within the LXC console, run `cat rpc.secret` to display the rpc-secret. Copy this token and paste it into the Aria2 RPC Secret Token box within the AriaNG Settings. Then, click the reload AriaNG button.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "During installation, you will have to input your domain (ex. domain.com). Authelia will use auth.domain.com",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": "admin",
|
||||
"password": "admin123"
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "for private SSL setup visit: `https://github.com/babybuddy/babybuddy/blob/master/docs/setup/ssl.md`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"type": "info",
|
||||
"text": "`cat ~/.ssh/id_ed25519.pub` to view ssh public key. This key is used to authenticate with sftp targets. You can add this key on the sftp server."
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": "Admin",
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "After install enable the option \"Use Redis cache\" on the settings page.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -47,6 +47,5 @@
|
||||
"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"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Starting Booklore (Web UI) may take up to 2 minutes after a restart or fresh installation.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Bookstack works only with static ip. If you Change the IP of your LXC, you Need to edit the .env File `nano /opt/bookstack/.env`",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
"documentation": "https://docs.bunkerweb.io/latest/",
|
||||
"website": "https://www.bunkerweb.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bunkerweb.webp",
|
||||
"config_path": "/etc/bunkerweb/variables.env",
|
||||
"config_path": "/opt/bunkerweb/variables.env",
|
||||
"description": "BunkerWeb is a security-focused web server that enhances web application protection. It guards against common web vulnerabilities like SQL injection, XSS, and CSRF. It features simple setup and configuration using a YAML file, customizable security rules, and provides detailed logs for traffic monitoring and threat detection.",
|
||||
"install_methods": [
|
||||
{
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -55,6 +55,5 @@
|
||||
"text": "if you need an external module run: `xcaddy build --with github.com/caddy-dns/cloudflare`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -40,6 +40,5 @@
|
||||
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Login Credentials : `cat ~/checkmk.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Execute within the Proxmox shell",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Execute within the Proxmox shell",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -40,6 +40,5 @@
|
||||
"text": "To update the configuration edit `/etc/systemd/system/cloudflare-ddns.service`. After edit please restart with `systemctl restart cloudflare-ddns`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "With an option to configure cloudflared as a DNS-over-HTTPS (DoH) proxy",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "After Installation: Register your user -> Login -> Dashboard -> Accept Primary URL.",
|
||||
"type": "warn"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -33,13 +33,8 @@
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Set a root password if using autologin. This will be the Cockpit password. To set root password run `sudo passwd root`",
|
||||
"text": "Set a root password if using autologin. This will be the Cockpit password.`sudo passwd root`",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "If you plan on using 45Drives extension with NFS, you must setup LXC as privileged. Some features of 45Drives don't work on Debian 13, so Debian 12 must be used.",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -38,6 +38,5 @@
|
||||
"text": "Execute within an existing LXC Console",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": "admin",
|
||||
"password": "admin"
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "change secrets file /opt/configarr/secrets.yml",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Complete setup via the web interface at http://<container-ip>:3000. Create and secure the admin account immediately.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Execute within the Proxmox shell or in LXC",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -37,6 +37,5 @@
|
||||
"type": "info",
|
||||
"text": "The file `/etc/sysconfig/CosmosCloud` is optional. If you need custom settings, you can create it yourself."
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Show password: `cat ~/crafty-controller.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -40,6 +40,5 @@
|
||||
"text": "To exclude LXCs from updating, edit the crontab using `crontab -e` and add CTID as shown in the example below:\n\n\n\n`0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/update-lxcs-cron.sh)\" -s 103 111 >>/var/log/update-lxcs-cron.log 2>/dev/null`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -28,14 +28,13 @@
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": "admin",
|
||||
"password": "admin"
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Primary and Worker Private Keys Must Match in the config file",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "After the installation cross-seed will fail to start with an empty configuration. To fix this, edit the config file to properly configure cross-seed, then restart by running `systemctl restart cross-seed`.",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Execute within an existing LXC Console. Debian only!",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "After installation finishes, `systemctl status cryptpad.service` to get token URL which you can use to create admin account",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -44,6 +44,5 @@
|
||||
"text": "If you use Cloud-init, checkout after installation: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -40,6 +40,5 @@
|
||||
"text": "After installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/836´ for useful Debian commands",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": null,
|
||||
"password": "deluge"
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -41,6 +41,5 @@
|
||||
"text": "This Script works on amd64 and arm64 Architecture.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -55,6 +55,5 @@
|
||||
"text": "Options to Install Portainer and/or Docker Compose V2",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -40,6 +40,5 @@
|
||||
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
|
||||
"type": "warning"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Use `cat ~/docmost.creds` to see database credentials.",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -31,6 +31,5 @@
|
||||
"username": "helper-scripts@local.com",
|
||||
"password": "helper-scripts"
|
||||
},
|
||||
"notes": [],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
"notes": []
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Database credentials: `cat ~/dolibarr.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "FTP server credentials: `cat ~/ftp.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "Admin password and database encryption key: `cat ~/duplicati.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -44,6 +44,5 @@
|
||||
"type": "info",
|
||||
"text": "For bridges Installation methods (WhatsApp, Signal, Discord, etc.), see: ´https://docs.mau.fi/bridges/go/setup.html´"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
@@ -36,6 +36,5 @@
|
||||
"text": "With Privileged/Unprivileged Hardware Acceleration Support",
|
||||
"type": "info"
|
||||
}
|
||||
],
|
||||
"repository_url": "https://github.com/community-scripts/ProxmoxVE"
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user