├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── config.yml │ └── new-script.yaml ├── CODEOWNERS ├── workflows │ ├── scripts │ │ ├── update-json.sh │ │ ├── update_json_date.sh │ │ ├── get-gh-release.sh │ │ └── generate-app-headers.sh │ ├── delete-discord-thread.yml │ └── push-to-gitea.yml ├── CONTRIBUTOR_AND_GUIDES │ ├── json │ │ ├── AppName.md │ │ └── AppName.json │ └── CODE-AUDIT.md └── pull_request_template.md ├── .vscode ├── .shellcheckrc ├── extensions.json └── settings.json ├── frontend ├── .prettierignore ├── public │ ├── logo.png │ ├── defaultimg.png │ └── json │ │ ├── frigate.json │ │ ├── byparr.json │ │ ├── ubuntu.json │ │ ├── nextexplorer.json │ │ ├── almalinux.json │ │ ├── debian.json │ │ ├── fedora.json │ │ ├── opensuse.json │ │ ├── openeuler.json │ │ ├── rockylinux.json │ │ ├── alpine.json │ │ ├── rybbit.json │ │ ├── romm.json │ │ ├── devuan.json │ │ ├── gentoo.json │ │ ├── allstarlink.json │ │ ├── centos.json │ │ ├── unifi-os-server-vm.json │ │ ├── petio.json │ │ ├── freepbx.json │ │ ├── pihole-exporter.json │ │ ├── jellystat.json │ │ ├── qbittorrent-exporter.json │ │ ├── garmin-grafana.json │ │ ├── koel.json │ │ ├── transmission-openvpn.json │ │ ├── postgresus.json │ │ ├── pixelfed.json │ │ └── ente.json ├── .prettierrc ├── src │ ├── app │ │ ├── favicon.ico │ │ ├── scripts │ │ │ └── _components │ │ │ │ ├── VersionBadge.tsx │ │ │ │ ├── ScriptItems │ │ │ │ ├── ConfigFile.tsx │ │ │ │ ├── Description.tsx │ │ │ │ ├── InterFaces.tsx │ │ │ │ ├── Alerts.tsx │ │ │ │ ├── DefaultSettings.tsx │ │ │ │ ├── DefaultPassword.tsx │ │ │ │ └── Tooltips.tsx │ │ │ │ ├── Sidebar.tsx │ │ │ │ └── ResourceDisplay.tsx │ │ ├── robots.ts │ │ ├── sitemap.ts │ │ ├── not-found.tsx │ │ ├── manifest.ts │ │ ├── api │ │ │ ├── versions │ │ │ │ └── route.ts │ │ │ └── categories │ │ │ │ └── route.ts │ │ └── json-editor │ │ │ └── _schemas │ │ │ └── schemas.ts │ ├── __tests__ │ │ ├── setupTests.ts │ │ └── app │ │ │ └── page.test.tsx │ ├── lib │ │ ├── utils.ts │ │ ├── utils │ │ │ └── resource-utils.ts │ │ ├── time.ts │ │ ├── data.ts │ │ └── types.ts │ ├── components │ │ ├── theme-provider.tsx │ │ ├── handleCopy.tsx │ │ ├── query-provider.tsx │ │ ├── ui │ │ │ ├── textarea.tsx │ │ │ ├── label.tsx │ │ │ ├── separator.tsx │ │ │ ├── input.tsx │ │ │ ├── sonner.tsx │ │ │ ├── animated-gradient-text.tsx │ │ │ ├── switch.tsx │ │ │ ├── tooltip.tsx │ │ │ ├── popover.tsx │ │ │ ├── badge.tsx │ │ │ ├── theme-toggle.tsx │ │ │ ├── config-copy-button.tsx │ │ │ ├── number-ticker.tsx │ │ │ └── alert.tsx │ │ ├── Modal.tsx │ │ ├── TextCopyBlock.tsx │ │ ├── icons │ │ │ └── resource-icons.tsx │ │ ├── FAQ.tsx │ │ └── Footer.tsx │ └── hooks │ │ └── useVersions.ts ├── .eslintrc.json ├── postcss.config.mjs ├── vitest.config.mjs ├── components.json ├── next.config.mjs ├── .gitignore ├── tsconfig.json └── LICENSE ├── api ├── .env.example └── go.mod ├── misc └── images │ ├── logo.png │ └── logo-81x112.png ├── bak └── core_ref │ ├── newtemplateavailable.png │ └── pve-container-upgrader.png ├── ct ├── headers │ ├── ente │ ├── petio │ ├── mealie │ ├── alpine │ ├── romm │ ├── debian │ ├── rybbit │ ├── docker │ ├── qdrant │ ├── viseron │ ├── ubuntu │ ├── frigate │ ├── freepbx │ ├── metabase │ ├── wanderer │ ├── web-check │ ├── snowshare │ ├── alpine-ntfy │ ├── gitea-mirror │ ├── joplin-server │ ├── garmin-grafana │ └── transmission-openvpn ├── deferred │ ├── maxun.json │ ├── docspell.json │ ├── polaris.sh │ ├── ocis.sh │ ├── kanba.sh │ ├── pixelfed.sh │ ├── ampache.sh │ ├── docspell.sh │ ├── squirrelserversmanager.sh │ └── maxun.sh ├── fedora.sh ├── almalinux.sh ├── opensuse.sh ├── rockylinux.sh ├── openeuler.sh ├── centos.sh ├── devuan.sh ├── rybbit.sh ├── gentoo.sh ├── ente.sh ├── alpine.sh ├── debian.sh ├── ubuntu.sh ├── frigate.sh ├── petio.sh ├── alpine-ntfy.sh ├── byparr.sh └── opencloud.sh ├── docs ├── misc │ ├── cloud-init.func │ │ ├── CLOUD_INIT_FUNC_INTEGRATION.md │ │ ├── CLOUD_INIT_FUNC_USAGE_EXAMPLES.md │ │ ├── CLOUD_INIT_FUNC_FLOWCHART.md │ │ └── CLOUD_INIT_FUNC_FUNCTIONS_REFERENCE.md │ ├── alpine-tools.func │ │ ├── ALPINE_TOOLS_FUNC_INTEGRATION.md │ │ ├── ALPINE_TOOLS_FUNC_USAGE_EXAMPLES.md │ │ ├── ALPINE_TOOLS_FUNC_FLOWCHART.md │ │ └── ALPINE_TOOLS_FUNC_FUNCTIONS_REFERENCE.md │ ├── alpine-install.func │ │ ├── ALPINE_INSTALL_FUNC_INTEGRATION.md │ │ ├── ALPINE_INSTALL_FUNC_USAGE_EXAMPLES.md │ │ ├── ALPINE_INSTALL_FUNC_FLOWCHART.md │ │ └── ALPINE_INSTALL_FUNC_FUNCTIONS_REFERENCE.md │ └── install.func │ │ └── INSTALL_FUNC_USAGE_EXAMPLES.md └── contribution │ └── CODE-AUDIT.md ├── tools ├── headers │ ├── add-iptag │ ├── glances │ ├── saltminion │ ├── copyparty │ ├── filebrowser │ ├── code-server │ ├── phpmyadmin │ ├── meilisearch-ui │ ├── prx-add-ips │ ├── core-restore-from-backup │ ├── qbittorrent-exporter │ ├── filebrowser-quantum │ ├── pve-privilege-converter │ └── container-restore-from-backup ├── addon │ └── grafana-loki.sh └── pve │ └── usb-passthrough.sh ├── vm └── headers │ ├── docker-vm │ ├── umbrel-os-vm │ └── ubuntu2410-vm ├── .gitignore ├── install ├── almalinux-install.sh ├── devuan-install.sh ├── fedora-install.sh ├── gentoo-install.sh ├── opensuse-install.sh ├── rockylinux-install.sh ├── openeuler-install.sh ├── centos-install.sh ├── alpine-install.sh ├── ubuntu-install.sh ├── alpine-ntfy-install.sh ├── debian-install.sh ├── deferred │ ├── ocis-install.sh │ ├── vikunja-install.sh │ ├── jumpserver-install.sh │ └── netbootxyz-install.sh ├── byparr-install.sh ├── plex2-install.sh ├── heimdall-dashboard-install.sh ├── plex-install.sh └── cronmaster-install.sh ├── .editorconfig ├── LICENSE ├── README.md └── SECURITY.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | ko_fi: community_scripts 2 | github: community_scripts 3 | -------------------------------------------------------------------------------- /.vscode/.shellcheckrc: -------------------------------------------------------------------------------- 1 | disable=SC2034,SC1091,SC2155,SC2086,SC2317,SC2181 2 | -------------------------------------------------------------------------------- /frontend/.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | .next 4 | build 5 | .contentlayer -------------------------------------------------------------------------------- /api/.env.example: -------------------------------------------------------------------------------- 1 | MONGO_USER= 2 | MONGO_PASSWORD= 3 | MONGO_IP= 4 | MONGO_PORT= 5 | MONGO_DATABASE= -------------------------------------------------------------------------------- /misc/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVED/HEAD/misc/images/logo.png -------------------------------------------------------------------------------- /frontend/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVED/HEAD/frontend/public/logo.png -------------------------------------------------------------------------------- /frontend/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["prettier-plugin-tailwindcss", "prettier-plugin-organize-imports"] 3 | } 4 | -------------------------------------------------------------------------------- /misc/images/logo-81x112.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVED/HEAD/misc/images/logo-81x112.png -------------------------------------------------------------------------------- /frontend/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVED/HEAD/frontend/src/app/favicon.ico -------------------------------------------------------------------------------- /frontend/public/defaultimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVED/HEAD/frontend/public/defaultimg.png -------------------------------------------------------------------------------- /bak/core_ref/newtemplateavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVED/HEAD/bak/core_ref/newtemplateavailable.png -------------------------------------------------------------------------------- /bak/core_ref/pve-container-upgrader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVED/HEAD/bak/core_ref/pve-container-upgrader.png -------------------------------------------------------------------------------- /frontend/src/__tests__/setupTests.ts: -------------------------------------------------------------------------------- 1 | import { vi } from "vitest"; 2 | 3 | // Mock canvas getContext 4 | HTMLCanvasElement.prototype.getContext = vi.fn(); -------------------------------------------------------------------------------- /frontend/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals"], 3 | "parser": "@typescript-eslint/parser", 4 | "plugins": ["@typescript-eslint"] 5 | } 6 | -------------------------------------------------------------------------------- /ct/headers/ente: -------------------------------------------------------------------------------- 1 | ______ __ 2 | / ____/___ / /____ 3 | / __/ / __ \/ __/ _ \ 4 | / /___/ / / / /_/ __/ 5 | /_____/_/ /_/\__/\___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/petio: -------------------------------------------------------------------------------- 1 | ____ __ _ 2 | / __ \___ / /_(_)___ 3 | / /_/ / _ \/ __/ / __ \ 4 | / ____/ __/ /_/ / /_/ / 5 | /_/ \___/\__/_/\____/ 6 | 7 | -------------------------------------------------------------------------------- /frontend/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "bmalehorn.shell-syntax", 4 | "timonwong.shellcheck", 5 | "foxundermoon.shell-format" 6 | ], 7 | "unwantedRecommendations": [] 8 | } 9 | -------------------------------------------------------------------------------- /docs/misc/cloud-init.func/CLOUD_INIT_FUNC_INTEGRATION.md: -------------------------------------------------------------------------------- 1 | # cloud-init.func Integration Guide 2 | 3 | Cloud-init integration with Proxmox VM provisioning. 4 | 5 | --- 6 | 7 | **Last Updated**: December 2025 8 | -------------------------------------------------------------------------------- /frontend/src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)); 6 | } 7 | -------------------------------------------------------------------------------- /ct/headers/mealie: -------------------------------------------------------------------------------- 1 | __ ___ ___ 2 | / |/ /__ ____ _/ (_)__ 3 | / /|_/ / _ \/ __ `/ / / _ \ 4 | / / / / __/ /_/ / / / __/ 5 | /_/ /_/\___/\__,_/_/_/\___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/alpine: -------------------------------------------------------------------------------- 1 | ___ __ _ 2 | / | / /___ (_)___ ___ 3 | / /| | / / __ \/ / __ \/ _ \ 4 | / ___ |/ / /_/ / / / / / __/ 5 | /_/ |_/_/ .___/_/_/ /_/\___/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /docs/misc/alpine-tools.func/ALPINE_TOOLS_FUNC_INTEGRATION.md: -------------------------------------------------------------------------------- 1 | # alpine-tools.func Integration Guide 2 | 3 | Alpine tool installation integration with container workflows. 4 | 5 | --- 6 | 7 | **Last Updated**: December 2025 8 | -------------------------------------------------------------------------------- /ct/headers/romm: -------------------------------------------------------------------------------- 1 | ____ __ ___ 2 | / __ \____ ____ ___ / |/ / 3 | / /_/ / __ \/ __ `__ \/ /|_/ / 4 | / _, _/ /_/ / / / / / / / / / 5 | /_/ |_|\____/_/ /_/ /_/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/debian: -------------------------------------------------------------------------------- 1 | ____ __ _ 2 | / __ \___ / /_ (_)___ _____ 3 | / / / / _ \/ __ \/ / __ `/ __ \ 4 | / /_/ / __/ /_/ / / /_/ / / / / 5 | /_____/\___/_.___/_/\__,_/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/rybbit: -------------------------------------------------------------------------------- 1 | ____ __ __ _ __ 2 | / __ \__ __/ /_ / /_ (_) /_ 3 | / /_/ / / / / __ \/ __ \/ / __/ 4 | / _, _/ /_/ / /_/ / /_/ / / /_ 5 | /_/ |_|\__, /_.___/_.___/_/\__/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/docker: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ \____ _____/ /_____ _____ 3 | / / / / __ \/ ___/ //_/ _ \/ ___/ 4 | / /_/ / /_/ / /__/ ,< / __/ / 5 | /_____/\____/\___/_/|_|\___/_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/qdrant: -------------------------------------------------------------------------------- 1 | ____ __ __ 2 | / __ \____/ /________ _____ / /_ 3 | / / / / __ / ___/ __ `/ __ \/ __/ 4 | / /_/ / /_/ / / / /_/ / / / / /_ 5 | \___\_\__,_/_/ \__,_/_/ /_/\__/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/viseron: -------------------------------------------------------------------------------- 1 | _ ___ 2 | | | / (_)_______ _________ ____ 3 | | | / / / ___/ _ \/ ___/ __ \/ __ \ 4 | | |/ / (__ ) __/ / / /_/ / / / / 5 | |___/_/____/\___/_/ \____/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/ubuntu: -------------------------------------------------------------------------------- 1 | __ ____ __ 2 | / / / / /_ __ ______ / /___ __ 3 | / / / / __ \/ / / / __ \/ __/ / / / 4 | / /_/ / /_/ / /_/ / / / / /_/ /_/ / 5 | \____/_.___/\__,_/_/ /_/\__/\__,_/ 6 | 7 | -------------------------------------------------------------------------------- /tools/headers/add-iptag: -------------------------------------------------------------------------------- 1 | ________ ______ 2 | / _/ __ \ /_ __/___ _____ _ 3 | / // /_/ /_____/ / / __ `/ __ `/ 4 | _/ // ____/_____/ / / /_/ / /_/ / 5 | /___/_/ /_/ \__,_/\__, / 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/frigate: -------------------------------------------------------------------------------- 1 | ______ _ __ 2 | / ____/____(_)___ _____ _/ /____ 3 | / /_ / ___/ / __ `/ __ `/ __/ _ \ 4 | / __/ / / / / /_/ / /_/ / /_/ __/ 5 | /_/ /_/ /_/\__, /\__,_/\__/\___/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /tools/headers/glances: -------------------------------------------------------------------------------- 1 | ________ 2 | / ____/ /___ _____ ________ _____ 3 | / / __/ / __ `/ __ \/ ___/ _ \/ ___/ 4 | / /_/ / / /_/ / / / / /__/ __(__ ) 5 | \____/_/\__,_/_/ /_/\___/\___/____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/freepbx: -------------------------------------------------------------------------------- 1 | ______ ____ ____ _ __ 2 | / ____/_______ ___ / __ \/ __ ) |/ / 3 | / /_ / ___/ _ \/ _ \/ /_/ / __ | / 4 | / __/ / / / __/ __/ ____/ /_/ / | 5 | /_/ /_/ \___/\___/_/ /_____/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /frontend/src/lib/utils/resource-utils.ts: -------------------------------------------------------------------------------- 1 | export function getDisplayValueFromRAM(ram: number): string { 2 | return ram >= 1024 ? `${Math.floor(ram / 1024)}GB` : `${ram}MB`; 3 | } 4 | 5 | export function cleanSlug(slug: string): string { 6 | return slug.replace(/[^a-z0-9]/gi, "").toLowerCase(); 7 | } 8 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: 🌟 new Script request 4 | url: https://github.com/community-scripts/ProxmoxVE/discussions/new?category=request-script 5 | about: For feature/script requests, please use the Discussions section. 6 | 7 | -------------------------------------------------------------------------------- /vm/headers/docker-vm: -------------------------------------------------------------------------------- 1 | ____ __ _ ____ ___ 2 | / __ \____ _____/ /_____ _____ | | / / |/ / 3 | / / / / __ \/ ___/ //_/ _ \/ ___/ | | / / /|_/ / 4 | / /_/ / /_/ / /__/ ,< / __/ / | |/ / / / / 5 | /_____/\____/\___/_/|_|\___/_/ |___/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/metabase: -------------------------------------------------------------------------------- 1 | __ ___ __ __ 2 | / |/ /__ / /_____ _/ /_ ____ _________ 3 | / /|_/ / _ \/ __/ __ `/ __ \/ __ `/ ___/ _ \ 4 | / / / / __/ /_/ /_/ / /_/ / /_/ (__ ) __/ 5 | /_/ /_/\___/\__/\__,_/_.___/\__,_/____/\___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/wanderer: -------------------------------------------------------------------------------- 1 | _ __ __ 2 | | | / /___ _____ ____/ /__ ________ _____ 3 | | | /| / / __ `/ __ \/ __ / _ \/ ___/ _ \/ ___/ 4 | | |/ |/ / /_/ / / / / /_/ / __/ / / __/ / 5 | |__/|__/\__,_/_/ /_/\__,_/\___/_/ \___/_/ 6 | 7 | -------------------------------------------------------------------------------- /frontend/src/lib/time.ts: -------------------------------------------------------------------------------- 1 | export function extractDate(dateString: string): string { 2 | const date = new Date(dateString); 3 | const year = date.getFullYear(); 4 | const month = String(date.getMonth() + 1).padStart(2, "0"); 5 | const day = String(date.getDate()).padStart(2, "0"); 6 | return `${year}-${month}-${day}`; 7 | } 8 | -------------------------------------------------------------------------------- /tools/headers/saltminion: -------------------------------------------------------------------------------- 1 | ____ _ _ 2 | _________ _/ / /_____ ___ (_)___ (_)___ ____ 3 | / ___/ __ `/ / __/ __ `__ \/ / __ \/ / __ \/ __ \ 4 | (__ ) /_/ / / /_/ / / / / / / / / / / /_/ / / / / 5 | /____/\__,_/_/\__/_/ /_/ /_/_/_/ /_/_/\____/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/web-check: -------------------------------------------------------------------------------- 1 | __ __ __ 2 | _ _____ / /_ _____/ /_ ___ _____/ /__ 3 | | | /| / / _ \/ __ \______/ ___/ __ \/ _ \/ ___/ //_/ 4 | | |/ |/ / __/ /_/ /_____/ /__/ / / / __/ /__/ ,< 5 | |__/|__/\___/_.___/ \___/_/ /_/\___/\___/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /frontend/vitest.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config' 2 | import react from '@vitejs/plugin-react' 3 | import tsconfigPaths from 'vite-tsconfig-paths' 4 | 5 | export default defineConfig({ 6 | plugins: [tsconfigPaths(), react()], 7 | test: { 8 | environment: "jsdom", 9 | setupFiles: ["src/__tests__/setupTests.ts"] 10 | }, 11 | }) -------------------------------------------------------------------------------- /tools/headers/copyparty: -------------------------------------------------------------------------------- 1 | ______ ____ __ 2 | / ____/___ ____ __ __/ __ \____ ______/ /___ __ 3 | / / / __ \/ __ \/ / / / /_/ / __ `/ ___/ __/ / / / 4 | / /___/ /_/ / /_/ / /_/ / ____/ /_/ / / / /_/ /_/ / 5 | \____/\____/ .___/\__, /_/ \__,_/_/ \__/\__, / 6 | /_/ /____/ /____/ 7 | -------------------------------------------------------------------------------- /frontend/src/components/theme-provider.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { ThemeProvider as NextThemesProvider } from "next-themes"; 4 | import { type ThemeProviderProps } from "next-themes/dist/types"; 5 | 6 | export function ThemeProvider({ children, ...props }: ThemeProviderProps) { 7 | return {children}; 8 | } 9 | -------------------------------------------------------------------------------- /ct/headers/snowshare: -------------------------------------------------------------------------------- 1 | _____ _____ __ 2 | / ___/____ ____ _ __/ ___// /_ ____ _________ 3 | \__ \/ __ \/ __ \ | /| / /\__ \/ __ \/ __ `/ ___/ _ \ 4 | ___/ / / / / /_/ / |/ |/ /___/ / / / / /_/ / / / __/ 5 | /____/_/ /_/\____/|__/|__//____/_/ /_/\__,_/_/ \___/ 6 | 7 | -------------------------------------------------------------------------------- /frontend/src/components/handleCopy.tsx: -------------------------------------------------------------------------------- 1 | import { ClipboardCheck } from "lucide-react"; 2 | import { toast } from "sonner"; 3 | 4 | export default function handleCopy(type: string, value: string) { 5 | navigator.clipboard.writeText(value); 6 | 7 | toast.success(`copied ${type} to clipboard`, { 8 | icon: , 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /ct/headers/alpine-ntfy: -------------------------------------------------------------------------------- 1 | ___ __ _ __ ____ 2 | / | / /___ (_)___ ___ ____ / /_/ __/_ __ 3 | / /| | / / __ \/ / __ \/ _ \______/ __ \/ __/ /_/ / / / 4 | / ___ |/ / /_/ / / / / / __/_____/ / / / /_/ __/ /_/ / 5 | /_/ |_/_/ .___/_/_/ /_/\___/ /_/ /_/\__/_/ \__, / 6 | /_/ /____/ 7 | -------------------------------------------------------------------------------- /tools/headers/filebrowser: -------------------------------------------------------------------------------- 1 | _______ __ ____ 2 | / ____(_) /__ / __ )_________ _ __________ _____ 3 | / /_ / / / _ \/ __ / ___/ __ \ | /| / / ___/ _ \/ ___/ 4 | / __/ / / / __/ /_/ / / / /_/ / |/ |/ (__ ) __/ / 5 | /_/ /_/_/\___/_____/_/ \____/|__/|__/____/\___/_/ 6 | 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/settings.json 2 | CHANGELOG_MISC.md 3 | misc/COMPLETION_REPORT.md 4 | misc/DOCUMENTATION_INDEX.md 5 | misc/DOCUMENTATION_SUMMARY.md 6 | misc/live/alpine-install.func 7 | misc/live/build.func 8 | misc/live/install.func 9 | vm/debian-13-vm.sh 10 | vm/README-vm-manager.md 11 | vm/vm-manager.sh 12 | vm/debian-13-vm.sh 13 | vm/vm-manager.sh 14 | vm/vm-manager.sh 15 | vm/debian-13-vm.sh 16 | -------------------------------------------------------------------------------- /frontend/src/components/query-provider.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; 3 | import React from "react"; 4 | 5 | const queryClient = new QueryClient(); 6 | 7 | export default function QueryProvider({ children }: { children: React.ReactNode }) { 8 | return {children}; 9 | } 10 | -------------------------------------------------------------------------------- /tools/headers/code-server: -------------------------------------------------------------------------------- 1 | ______ __ _____ 2 | / ____/___ ____/ /__ / ___/___ ______ _____ _____ 3 | / / / __ \/ __ / _ \ \__ \/ _ \/ ___/ | / / _ \/ ___/ 4 | / /___/ /_/ / /_/ / __/ ___/ / __/ / | |/ / __/ / 5 | \____/\____/\__,_/\___/ /____/\___/_/ |___/\___/_/ 6 | 7 | -------------------------------------------------------------------------------- /frontend/src/app/scripts/_components/VersionBadge.tsx: -------------------------------------------------------------------------------- 1 | import { AppVersion } from "@/lib/types"; 2 | 3 | interface VersionBadgeProps { 4 | version: AppVersion; 5 | } 6 | 7 | export function VersionBadge({ version }: VersionBadgeProps) { 8 | return ( 9 |
10 | {version.version} 11 |
12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /docs/misc/alpine-install.func/ALPINE_INSTALL_FUNC_INTEGRATION.md: -------------------------------------------------------------------------------- 1 | # alpine-install.func Integration Guide 2 | 3 | Integration of alpine-install.func with Alpine container workflows. 4 | 5 | ## Alpine-Specific Integration 6 | 7 | Alpine containers use: 8 | - `apk` instead of `apt-get` 9 | - `OpenRC` instead of `systemd` 10 | - Alpine-specific package names 11 | 12 | --- 13 | 14 | **Last Updated**: December 2025 15 | -------------------------------------------------------------------------------- /docs/misc/cloud-init.func/CLOUD_INIT_FUNC_USAGE_EXAMPLES.md: -------------------------------------------------------------------------------- 1 | # cloud-init.func Usage Examples 2 | 3 | Examples for VM cloud-init configuration. 4 | 5 | ### Example: Basic Cloud-Init 6 | 7 | ```bash 8 | #!/usr/bin/env bash 9 | 10 | generate_cloud_init > cloud-init.yaml 11 | setup_ssh_keys "$VMID" "$SSH_KEY" 12 | apply_cloud_init "$VMID" cloud-init.yaml 13 | ``` 14 | 15 | --- 16 | 17 | **Last Updated**: December 2025 18 | -------------------------------------------------------------------------------- /tools/headers/phpmyadmin: -------------------------------------------------------------------------------- 1 | __ __ ___ ___ __ _ 2 | ____ / /_ ____ / |/ /_ __/ | ____/ /___ ___ (_)___ 3 | / __ \/ __ \/ __ \/ /|_/ / / / / /| |/ __ / __ `__ \/ / __ \ 4 | / /_/ / / / / /_/ / / / / /_/ / ___ / /_/ / / / / / / / / / / 5 | / .___/_/ /_/ .___/_/ /_/\__, /_/ |_\__,_/_/ /_/ /_/_/_/ /_/ 6 | /_/ /_/ /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/gitea-mirror: -------------------------------------------------------------------------------- 1 | _ __ _ 2 | ____ _(_) /____ ____ _ ____ ___ (_)_____________ _____ 3 | / __ `/ / __/ _ \/ __ `/_____/ __ `__ \/ / ___/ ___/ __ \/ ___/ 4 | / /_/ / / /_/ __/ /_/ /_____/ / / / / / / / / / / /_/ / / 5 | \__, /_/\__/\___/\__,_/ /_/ /_/ /_/_/_/ /_/ \____/_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /frontend/src/app/robots.ts: -------------------------------------------------------------------------------- 1 | import { basePath } from "@/config/siteConfig"; 2 | import type { MetadataRoute } from "next"; 3 | 4 | export const dynamic = "force-static"; 5 | 6 | export default function robots(): MetadataRoute.Robots { 7 | return { 8 | rules: { 9 | userAgent: "*", 10 | allow: "/", 11 | }, 12 | sitemap: `https://community-scripts.github.io/${basePath}/sitemap.xml`, 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /docs/misc/alpine-tools.func/ALPINE_TOOLS_FUNC_USAGE_EXAMPLES.md: -------------------------------------------------------------------------------- 1 | # alpine-tools.func Usage Examples 2 | 3 | Examples for Alpine tool installation. 4 | 5 | ### Example: Alpine Setup with Tools 6 | 7 | ```bash 8 | #!/usr/bin/env bash 9 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 10 | 11 | apk_update 12 | setup_nodejs "20" 13 | setup_php "8.3" 14 | setup_mariadb "11" 15 | ``` 16 | 17 | --- 18 | 19 | **Last Updated**: December 2025 20 | -------------------------------------------------------------------------------- /frontend/src/app/scripts/_components/ScriptItems/ConfigFile.tsx: -------------------------------------------------------------------------------- 1 | import ConfigCopyButton from "@/components/ui/config-copy-button"; 2 | import { Script } from "@/lib/types"; 3 | 4 | export default function ConfigFile({ item }: { item: Script }) { 5 | return ( 6 |
7 | {item.config_path ? item.config_path : "No config path set"} 8 |
9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /ct/headers/joplin-server: -------------------------------------------------------------------------------- 1 | __ ___ _____ 2 | / /___ ____ / (_)___ / ___/___ ______ _____ _____ 3 | __ / / __ \/ __ \/ / / __ \______\__ \/ _ \/ ___/ | / / _ \/ ___/ 4 | / /_/ / /_/ / /_/ / / / / / /_____/__/ / __/ / | |/ / __/ / 5 | \____/\____/ .___/_/_/_/ /_/ /____/\___/_/ |___/\___/_/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /frontend/components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "default", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "@/styles/globals.css", 9 | "baseColor": "slate", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /frontend/src/__tests__/app/page.test.tsx: -------------------------------------------------------------------------------- 1 | import { screen } from "@testing-library/dom"; 2 | import { render } from "@testing-library/react"; 3 | import { describe, expect, it } from "vitest"; 4 | import Page from "@/app/page"; 5 | 6 | describe("Page", () => { 7 | it("should show button to view scripts", () => { 8 | render(); 9 | expect(screen.getByRole("button", { name: "View Scripts" })).toBeDefined(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /tools/headers/meilisearch-ui: -------------------------------------------------------------------------------- 1 | __ ___ _ ___ __ __ ______ 2 | / |/ /__ (_) (_)_______ ____ ___________/ /_ / / / / _/ 3 | / /|_/ / _ \/ / / / ___/ _ \/ __ `/ ___/ ___/ __ \ / / / // / 4 | / / / / __/ / / (__ ) __/ /_/ / / / /__/ / / / / /_/ // / 5 | /_/ /_/\___/_/_/_/____/\___/\__,_/_/ \___/_/ /_/ \____/___/ 6 | 7 | -------------------------------------------------------------------------------- /vm/headers/umbrel-os-vm: -------------------------------------------------------------------------------- 1 | __ __ __ __ ____ _____ _ ____ ___ 2 | / / / /___ ___ / /_ ________ / / / __ \/ ___/ | | / / |/ / 3 | / / / / __ `__ \/ __ \/ ___/ _ \/ / / / / /\__ \ | | / / /|_/ / 4 | / /_/ / / / / / / /_/ / / / __/ / / /_/ /___/ / | |/ / / / / 5 | \____/_/ /_/ /_/_.___/_/ \___/_/ \____//____/ |___/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /install/almalinux-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 community-scripts ORG 4 | # Author: MickLesk (CanbiZ) 5 | # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 6 | # Source: https://almalinux.org/ 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | motd_ssh 17 | customize 18 | cleanup_lxc 19 | -------------------------------------------------------------------------------- /install/devuan-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 community-scripts ORG 4 | # Author: MickLesk (CanbiZ) 5 | # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 6 | # Source: https://www.devuan.org/ 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | motd_ssh 17 | customize 18 | cleanup_lxc 19 | -------------------------------------------------------------------------------- /install/fedora-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 community-scripts ORG 4 | # Author: MickLesk (CanbiZ) 5 | # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 6 | # Source: https://fedoraproject.org/ 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | motd_ssh 17 | customize 18 | cleanup_lxc 19 | -------------------------------------------------------------------------------- /install/gentoo-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 community-scripts ORG 4 | # Author: MickLesk (CanbiZ) 5 | # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 6 | # Source: https://www.gentoo.org/ 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | motd_ssh 17 | customize 18 | cleanup_lxc 19 | -------------------------------------------------------------------------------- /install/opensuse-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 community-scripts ORG 4 | # Author: MickLesk (CanbiZ) 5 | # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 6 | # Source: https://www.opensuse.org/ 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | motd_ssh 17 | customize 18 | cleanup_lxc 19 | -------------------------------------------------------------------------------- /install/rockylinux-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 community-scripts ORG 4 | # Author: MickLesk (CanbiZ) 5 | # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 6 | # Source: https://rockylinux.org/ 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | motd_ssh 17 | customize 18 | cleanup_lxc 19 | -------------------------------------------------------------------------------- /install/openeuler-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 community-scripts ORG 4 | # Author: MickLesk (CanbiZ) 5 | # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 6 | # Source: https://www.openeuler.org/ 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | motd_ssh 17 | customize 18 | cleanup_lxc 19 | -------------------------------------------------------------------------------- /install/centos-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 community-scripts ORG 4 | # Author: MickLesk (CanbiZ) 5 | # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 6 | # Source: https://www.centos.org/centos-stream/ 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | motd_ssh 17 | customize 18 | cleanup_lxc 19 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | ; editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | continuation_indent_size = 2 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | insert_final_newline = true 11 | max_line_length = 120 12 | tab_width = 2 13 | ; trim_trailing_whitespace = true ; disabled until files are cleaned up 14 | 15 | [*.md] 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /docs/misc/cloud-init.func/CLOUD_INIT_FUNC_FLOWCHART.md: -------------------------------------------------------------------------------- 1 | # cloud-init.func Flowchart 2 | 3 | Cloud-init VM provisioning flow. 4 | 5 | ## Cloud-Init Generation and Application 6 | 7 | ``` 8 | generate_cloud_init() 9 | ↓ 10 | generate_user_data() 11 | ↓ 12 | setup_ssh_keys() 13 | ↓ 14 | Apply to VM 15 | ↓ 16 | VM Boot 17 | ↓ 18 | cloud-init phases 19 | ├─ system 20 | ├─ config 21 | └─ final 22 | ↓ 23 | VM Ready ✓ 24 | ``` 25 | 26 | --- 27 | 28 | **Last Updated**: December 2025 29 | -------------------------------------------------------------------------------- /vm/headers/ubuntu2410-vm: -------------------------------------------------------------------------------- 1 | __ ____ __ ___ __ __ _______ _ ____ ___ 2 | / / / / /_ __ ______ / /___ __ |__ \/ // / < / __ \ | | / / |/ / 3 | / / / / __ \/ / / / __ \/ __/ / / / __/ / // /_ / / / / / | | / / /|_/ / 4 | / /_/ / /_/ / /_/ / / / / /_/ /_/ / / __/__ __/ / / /_/ / | |/ / / / / 5 | \____/_.___/\__,_/_/ /_/\__/\__,_/ /____/ /_/ (_)_/\____/ |___/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /frontend/src/app/scripts/_components/ScriptItems/Description.tsx: -------------------------------------------------------------------------------- 1 | import TextCopyBlock from "@/components/TextCopyBlock"; 2 | import { Script } from "@/lib/types"; 3 | 4 | export default function Description({ item }: { item: Script }) { 5 | return ( 6 |
7 |

Description

8 |

9 | {TextCopyBlock(item.description)} 10 |

11 |
12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /docs/misc/alpine-tools.func/ALPINE_TOOLS_FUNC_FLOWCHART.md: -------------------------------------------------------------------------------- 1 | # alpine-tools.func Flowchart 2 | 3 | Alpine tool installation and package management flow. 4 | 5 | ## Tool Installation on Alpine 6 | 7 | ``` 8 | apk_update() 9 | ↓ 10 | add_community_repo() [optional] 11 | ↓ 12 | apk_add PACKAGES 13 | ↓ 14 | Tool Installation 15 | ↓ 16 | rc-service start 17 | ↓ 18 | rc-update add [enable at boot] 19 | ↓ 20 | Complete ✓ 21 | ``` 22 | 23 | --- 24 | 25 | **Last Updated**: December 2025 26 | -------------------------------------------------------------------------------- /frontend/next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | webpack: (config) => { 4 | config.resolve.alias.canvas = false; 5 | 6 | return config; 7 | }, 8 | images: { 9 | remotePatterns: [ 10 | { 11 | protocol: "https", 12 | hostname: "**", 13 | }, 14 | ], 15 | }, 16 | 17 | env: { 18 | BASE_PATH: "ProxmoxVED", 19 | }, 20 | 21 | output: "export", 22 | basePath: `/ProxmoxVED`, 23 | }; 24 | 25 | export default nextConfig; 26 | -------------------------------------------------------------------------------- /docs/misc/alpine-install.func/ALPINE_INSTALL_FUNC_USAGE_EXAMPLES.md: -------------------------------------------------------------------------------- 1 | # alpine-install.func Usage Examples 2 | 3 | Basic examples for Alpine container installation. 4 | 5 | ### Example: Basic Alpine Setup 6 | 7 | ```bash 8 | #!/usr/bin/env bash 9 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 10 | 11 | setting_up_container 12 | update_os 13 | 14 | # Install Alpine packages 15 | apk add --no-cache curl wget git 16 | 17 | motd_ssh 18 | customize 19 | cleanup_lxc 20 | ``` 21 | 22 | --- 23 | 24 | **Last Updated**: December 2025 25 | -------------------------------------------------------------------------------- /ct/headers/garmin-grafana: -------------------------------------------------------------------------------- 1 | _ ____ 2 | ____ _____ __________ ___ (_)___ ____ __________ _/ __/___ _____ ____ _ 3 | / __ `/ __ `/ ___/ __ `__ \/ / __ \______/ __ `/ ___/ __ `/ /_/ __ `/ __ \/ __ `/ 4 | / /_/ / /_/ / / / / / / / / / / / /_____/ /_/ / / / /_/ / __/ /_/ / / / / /_/ / 5 | \__, /\__,_/_/ /_/ /_/ /_/_/_/ /_/ \__, /_/ \__,_/_/ \__,_/_/ /_/\__,_/ 6 | /____/ /____/ 7 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # 2 | # CODEOWNERS for ProxmoxVE 3 | # 4 | 5 | # Order is important; the last matching pattern takes the most 6 | # precedence. 7 | 8 | 9 | # Codeowners for specific folders and files 10 | # Remember ending folders with / 11 | 12 | 13 | # Set default reviewers 14 | * @community-scripts/Contributor 15 | 16 | # All changes in frontend 17 | /frontend/ @community-scripts/Frontend-Dev 18 | -------------------------------------------------------------------------------- /.github/workflows/scripts/update-json.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE=$1 4 | TODAY=$(date -u +"%Y-%m-%d") 5 | 6 | if [[ -z "$FILE" ]]; then 7 | echo "No file specified. Exiting." 8 | exit 1 9 | fi 10 | 11 | if [[ ! -f "$FILE" ]]; then 12 | echo "File $FILE not found. Exiting." 13 | exit 1 14 | fi 15 | 16 | DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "") 17 | 18 | if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then 19 | jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE" 20 | fi 21 | -------------------------------------------------------------------------------- /tools/headers/prx-add-ips: -------------------------------------------------------------------------------- 1 | ____ ___ __ __ ________ 2 | / __ \_________ _ ______ ___ ____ _ __ / | ____/ /___/ / / _/ __ \_____ 3 | / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \| |/_/ / /| |/ __ / __ /_____ / // /_/ / ___/ 4 | / ____/ / / /_/ /> < / ___ / /_/ / /_/ /_____// // ____(__ ) 5 | /_/ /_/ \____/_/|_/_/ /_/ /_/\____/_/|_| /_/ |_\__,_/\__,_/ /___/_/ /____/ 6 | 7 | -------------------------------------------------------------------------------- /install/alpine-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 tteck 4 | # Author: tteck (tteckster) 5 | # License: MIT 6 | # https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | msg_info "Installing Dependencies" 17 | $STD apk add newt 18 | $STD apk add curl 19 | $STD apk add openssh 20 | $STD apk add nano 21 | $STD apk add mc 22 | msg_ok "Installed Dependencies" 23 | 24 | motd_ssh 25 | customize 26 | -------------------------------------------------------------------------------- /.github/CONTRIBUTOR_AND_GUIDES/json/AppName.md: -------------------------------------------------------------------------------- 1 | # **AppName.json Files** 2 | 3 | `AppName.json` files found in the `/json` directory. These files are used to provide informations for the website. For this guide we take `/json/snipeit.json` as example. 4 | 5 | ## Table of Contents 6 | 7 | - [**AppName.json Files**](#appnamejson-files) 8 | - [Table of Contents](#table-of-contents) 9 | - [1. JSON Generator](#1-json-generator) 10 | 11 | ## 1. JSON Generator 12 | 13 | Use the [JSON Generator](https://community-scripts.github.io/ProxmoxVED/json-editor) to create this file for your application. 14 | -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # wrangler 10 | .worker-next 11 | .wrangler 12 | 13 | # testing 14 | /coverage 15 | 16 | # next.js 17 | /.next/ 18 | out 19 | # production 20 | /build 21 | 22 | # misc 23 | .DS_Store 24 | *.pem 25 | 26 | # debug 27 | npm-debug.log* 28 | yarn-debug.log* 29 | yarn-error.log* 30 | 31 | # # local env files 32 | # .env*.local 33 | # .env 34 | # vercel 35 | .vercel 36 | 37 | # typescript 38 | *.tsbuildinfo 39 | next-env.d.ts 40 | -------------------------------------------------------------------------------- /install/ubuntu-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 tteck 4 | # Author: tteck (tteckster) 5 | # License: MIT 6 | # https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | msg_info "Installing Dependencies" 17 | $STD apt-get install -y jq 18 | msg_ok "Installed Dependencies" 19 | 20 | motd_ssh 21 | customize 22 | 23 | msg_info "Cleaning up" 24 | $STD apt-get -y autoremove 25 | $STD apt-get -y autoclean 26 | msg_ok "Cleaned" 27 | -------------------------------------------------------------------------------- /frontend/src/lib/data.ts: -------------------------------------------------------------------------------- 1 | import { Category } from "./types"; 2 | 3 | export const fetchCategories = async () => { 4 | const response = await fetch("api/categories"); 5 | if (!response.ok) { 6 | throw new Error(`Failed to fetch categories: ${response.statusText}`); 7 | } 8 | const categories: Category[] = await response.json(); 9 | return categories; 10 | }; 11 | 12 | export const fetchVersions = async () => { 13 | const response = await fetch(`api/versions`); 14 | if (!response.ok) { 15 | throw new Error(`Failed to fetch versions: ${response.statusText}`); 16 | } 17 | return response.json(); 18 | }; 19 | -------------------------------------------------------------------------------- /docs/misc/alpine-install.func/ALPINE_INSTALL_FUNC_FLOWCHART.md: -------------------------------------------------------------------------------- 1 | # alpine-install.func Flowchart 2 | 3 | Alpine container initialization flow (apk-based, OpenRC init system). 4 | 5 | ## Alpine Container Setup Flow 6 | 7 | ``` 8 | Alpine Container Started 9 | ↓ 10 | setting_up_container() 11 | ↓ 12 | verb_ip6() [optional - IPv6] 13 | ↓ 14 | update_os() [apk update/upgrade] 15 | ↓ 16 | network_check() 17 | ↓ 18 | Application Installation 19 | ↓ 20 | motd_ssh() 21 | ↓ 22 | customize() 23 | ↓ 24 | cleanup_lxc() 25 | ↓ 26 | Complete ✓ 27 | ``` 28 | 29 | **Last Updated**: December 2025 30 | -------------------------------------------------------------------------------- /tools/headers/core-restore-from-backup: -------------------------------------------------------------------------------- 1 | __ __ ___ _ __ __ ______ 2 | / / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_ / ____/___ ________ 3 | / /_/ / __ \/ __ `__ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/ / / / __ \/ ___/ _ \ 4 | / __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ / /___/ /_/ / / / __/ 5 | /_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ \____/\____/_/ \___/ 6 | 7 | -------------------------------------------------------------------------------- /tools/headers/qbittorrent-exporter: -------------------------------------------------------------------------------- 1 | __ _ __ __ __ __ 2 | ____ _/ /_ (_) /_/ /_____ _____________ ____ / /_ ___ _ ______ ____ _____/ /____ _____ 3 | / __ `/ __ \/ / __/ __/ __ \/ ___/ ___/ _ \/ __ \/ __/_____/ _ \| |/_/ __ \/ __ \/ ___/ __/ _ \/ ___/ 4 | / /_/ / /_/ / / /_/ /_/ /_/ / / / / / __/ / / / /_/_____/ __/> ({ 9 | queryKey: ["versions"], 10 | queryFn: async () => { 11 | const fetchedVersions = await fetchVersions(); 12 | if (Array.isArray(fetchedVersions)) { 13 | return fetchedVersions; 14 | } 15 | if (fetchedVersions && typeof fetchedVersions === "object") { 16 | return [fetchedVersions]; 17 | } 18 | return []; 19 | }, 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /docs/misc/cloud-init.func/CLOUD_INIT_FUNC_FUNCTIONS_REFERENCE.md: -------------------------------------------------------------------------------- 1 | # cloud-init.func Functions Reference 2 | 3 | Cloud-init and VM provisioning functions. 4 | 5 | ## Core Functions 6 | 7 | ### generate_cloud_init() 8 | Generate cloud-init configuration. 9 | 10 | ### generate_user_data() 11 | Generate user-data script for VM. 12 | 13 | ### apply_cloud_init() 14 | Apply cloud-init to VM. 15 | 16 | ### setup_ssh_keys() 17 | Deploy SSH public keys. 18 | 19 | ### setup_static_ip() 20 | Configure static IP on VM. 21 | 22 | ### setup_dns() 23 | Configure DNS for VM. 24 | 25 | ### setup_ipv6() 26 | Enable IPv6 on VM. 27 | 28 | --- 29 | 30 | **Last Updated**: December 2025 31 | -------------------------------------------------------------------------------- /ct/headers/transmission-openvpn: -------------------------------------------------------------------------------- 1 | __ _ _ 2 | / /__________ _____ _________ ___ (_)_________(_)___ ____ ____ ____ ___ ____ _ ______ ____ 3 | / __/ ___/ __ `/ __ \/ ___/ __ `__ \/ / ___/ ___/ / __ \/ __ \______/ __ \/ __ \/ _ \/ __ \ | / / __ \/ __ \ 4 | / /_/ / / /_/ / / / (__ ) / / / / / (__ |__ ) / /_/ / / / /_____/ /_/ / /_/ / __/ / / / |/ / /_/ / / / / 5 | \__/_/ \__,_/_/ /_/____/_/ /_/ /_/_/____/____/_/\____/_/ /_/ \____/ .___/\___/_/ /_/|___/ .___/_/ /_/ 6 | /_/ /_/ 7 | -------------------------------------------------------------------------------- /frontend/src/app/sitemap.ts: -------------------------------------------------------------------------------- 1 | import { basePath } from "@/config/siteConfig"; 2 | import type { MetadataRoute } from "next"; 3 | 4 | export const dynamic = "force-static"; 5 | 6 | export default async function sitemap(): Promise { 7 | let domain = "community-scripts.github.io"; 8 | let protocol = "https"; 9 | return [ 10 | { 11 | url: `${protocol}://${domain}/${basePath}`, 12 | lastModified: new Date(), 13 | }, 14 | { 15 | url: `${protocol}://${domain}/${basePath}/scripts`, 16 | lastModified: new Date(), 17 | }, 18 | { 19 | url: `${protocol}://${domain}/${basePath}/json-editor`, 20 | lastModified: new Date(), 21 | } 22 | ]; 23 | } 24 | -------------------------------------------------------------------------------- /install/alpine-ntfy-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (c) 2021-2025 community-scripts ORG 4 | # Author: cobalt (cobaltgit) 5 | # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE 6 | # Source: https://ntfy.sh/ 7 | 8 | source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" 9 | color 10 | verb_ip6 11 | catch_errors 12 | setting_up_container 13 | network_check 14 | update_os 15 | 16 | msg_info "Installing ntfy" 17 | $STD apk add --no-cache ntfy ntfy-openrc libcap 18 | sed -i '/^listen-http/s/^\(.*\)$/#\1\n/' /etc/ntfy/server.yml 19 | setcap 'cap_net_bind_service=+ep' /usr/bin/ntfy 20 | $STD rc-update add ntfy default 21 | $STD service ntfy start 22 | msg_ok "Installed ntfy" 23 | 24 | motd_ssh 25 | customize 26 | 27 | -------------------------------------------------------------------------------- /tools/headers/pve-privilege-converter: -------------------------------------------------------------------------------- 1 | ____ _ ________ ____ _ _ __ ______ __ 2 | / __ \ | / / ____/ / __ \_____(_) __(_) /__ ____ ____ / ____/___ ____ _ _____ _____/ /____ _____ 3 | / /_/ / | / / __/______/ /_/ / ___/ / | / / / / _ \/ __ `/ _ \______/ / / __ \/ __ \ | / / _ \/ ___/ __/ _ \/ ___/ 4 | / ____/| |/ / /__/_____/ ____/ / / /| |/ / / / __/ /_/ / __/_____/ /___/ /_/ / / / / |/ / __/ / / /_/ __/ / 5 | /_/ |___/_____/ /_/ /_/ /_/ |___/_/_/\___/\__, /\___/ \____/\____/_/ /_/|___/\___/_/ \__/\___/_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /api/go.mod: -------------------------------------------------------------------------------- 1 | module proxmox-api 2 | 3 | go 1.24.0 4 | 5 | require ( 6 | github.com/gorilla/mux v1.8.1 7 | github.com/joho/godotenv v1.5.1 8 | github.com/rs/cors v1.11.1 9 | go.mongodb.org/mongo-driver v1.17.2 10 | ) 11 | 12 | require ( 13 | github.com/golang/snappy v0.0.4 // indirect 14 | github.com/klauspost/compress v1.16.7 // indirect 15 | github.com/montanaflynn/stats v0.7.1 // indirect 16 | github.com/xdg-go/pbkdf2 v1.0.0 // indirect 17 | github.com/xdg-go/scram v1.1.2 // indirect 18 | github.com/xdg-go/stringprep v1.0.4 // indirect 19 | github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect 20 | golang.org/x/crypto v0.45.0 // indirect 21 | golang.org/x/sync v0.18.0 // indirect 22 | golang.org/x/text v0.31.0 // indirect 23 | ) 24 | -------------------------------------------------------------------------------- /frontend/src/app/not-found.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { Button } from "@/components/ui/button"; 3 | 4 | export default function NotFoundPage() { 5 | return ( 6 |
7 |
8 |

9 | 404 10 |

11 |

12 | Oops, the page you are looking for could not be found. 13 |

14 |
15 | 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /docs/misc/alpine-install.func/ALPINE_INSTALL_FUNC_FUNCTIONS_REFERENCE.md: -------------------------------------------------------------------------------- 1 | # alpine-install.func Functions Reference 2 | 3 | Alpine Linux-specific installation functions (apk-based, OpenRC). 4 | 5 | ## Core Functions 6 | 7 | ### setting_up_container() 8 | Initialize Alpine container setup. 9 | 10 | ### update_os() 11 | Update Alpine packages via `apk update && apk upgrade`. 12 | 13 | ### verb_ip6() 14 | Enable IPv6 on Alpine with persistent configuration. 15 | 16 | ### network_check() 17 | Verify network connectivity in Alpine. 18 | 19 | ### motd_ssh() 20 | Configure SSH daemon and MOTD on Alpine. 21 | 22 | ### customize() 23 | Apply Alpine-specific customizations. 24 | 25 | ### cleanup_lxc() 26 | Final cleanup (Alpine-specific). 27 | 28 | --- 29 | 30 | **Last Updated**: December 2025 31 | -------------------------------------------------------------------------------- /tools/headers/container-restore-from-backup: -------------------------------------------------------------------------------- 1 | __ __ ___ _ __ __ ______ __ _ 2 | / / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_ / ____/___ ____ / /_____ _(_)___ ___ _____ 3 | / /_/ / __ \/ __ `__ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/ / / / __ \/ __ \/ __/ __ `/ / __ \/ _ \/ ___/ 4 | / __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ / /___/ /_/ / / / / /_/ /_/ / / / / / __/ / 5 | /_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ \____/\____/_/ /_/\__/\__,_/_/_/ /_/\___/_/ 6 | 7 | -------------------------------------------------------------------------------- /docs/misc/alpine-tools.func/ALPINE_TOOLS_FUNC_FUNCTIONS_REFERENCE.md: -------------------------------------------------------------------------------- 1 | # alpine-tools.func Functions Reference 2 | 3 | Alpine-specific tool installation functions. 4 | 5 | ## Core Functions 6 | 7 | ### apk_update() 8 | Update Alpine package lists. 9 | 10 | ### apk_add(PACKAGES) 11 | Install Alpine packages. 12 | 13 | ### apk_del(PACKAGES) 14 | Remove Alpine packages. 15 | 16 | ### add_community_repo() 17 | Enable Alpine community repository. 18 | 19 | ### add_testing_repo() 20 | Enable Alpine testing repository. 21 | 22 | ### Alpine Tool Functions 23 | - `setup_nodejs()` - Alpine Node.js 24 | - `setup_php()` - Alpine PHP 25 | - `setup_mariadb()` - Alpine MariaDB 26 | - `setup_postgresql()` - Alpine PostgreSQL 27 | - (+ more Alpine-specific setups) 28 | 29 | --- 30 | 31 | **Last Updated**: December 2025 32 | -------------------------------------------------------------------------------- /frontend/src/components/ui/textarea.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "@/lib/utils" 4 | 5 | const Textarea = React.forwardRef< 6 | HTMLTextAreaElement, 7 | React.ComponentProps<"textarea"> 8 | >(({ className, ...props }, ref) => { 9 | return ( 10 |