Core Libraries
build.func
LXC Container Build & Configuration The main orchestrator for Proxmox LXC container creation. This is the heart of the container creation workflow.Key Responsibilities
Key Responsibilities
- Variable initialization and defaults management
- Container creation and resource allocation
- Storage selection and validation
- Advanced configuration wizard (19 steps)
- User defaults and app-specific defaults loading
- Installation mode routing (Default, Advanced, Edit)
Key Functions (50+)
Key Functions (50+)
variables()- Initialize core variables (NSAPP, SESSION_ID, EXECUTION_ID)install_script()- Main entry point and mode selectionbuild_container()- Create and configure the LXC containeradvanced_settings()- Interactive configuration wizardbase_settings()- Apply built-in and user defaultsload_vars_file()- Safe configuration file parsingdefault_var_settings()- Load user global defaultsmaybe_offer_save_app_defaults()- Save settings for future usestorage_selector()- Interactive storage selectionvalidate_container_id()- Cluster-wide CTID validation
Integration Points
Integration Points
- Sources:
api.func,core.func,error_handler.func - Called by: CT creation scripts (
ct/<app>.sh) - Calls into: Container install scripts via
pct exec
misc/build.func
core.func
System Utilities & Foundation Provides essential utility functions used across all scripts including colors, messaging, validation checks, and execution helpers.Key Responsibilities
Key Responsibilities
- Terminal color codes and formatting
- Standardized message output (msg_info, msg_ok, msg_error)
- System validation (root check, PVE check, architecture check)
- Silent/verbose execution modes
- Spinner animations for long-running operations
- Development mode parsing
Key Functions (20+)
Key Functions (20+)
load_functions()- Initialize all utility groupscolor()- Set ANSI color codesmsg_info()- Display info message with spinnermsg_ok()- Display success messagemsg_error()- Display error messagemsg_warn()- Display warning messageroot_check()- Verify root privilegespve_check()- Verify Proxmox VE environmentarch_check()- Verify supported architectureparse_dev_mode()- Parse development mode flagssilent()- Execute command with output suppressionspinner()- Animated loading indicator
Integration Points
Integration Points
- Sourced by: ALL scripts (first library loaded)
- No dependencies (foundation library)
- Provides: Global variables and functions used everywhere
misc/core.func
error_handler.func
Error Handling & Signal Management Comprehensive error handling and signal trapping to ensure proper cleanup and telemetry reporting.Key Responsibilities
Key Responsibilities
- Exit code explanations (150+ codes mapped)
- Error handler with detailed logging
- Signal handlers (EXIT, INT, TERM, HUP)
- Orphaned container cleanup
- Telemetry failure reporting
- Log collection and display
Key Functions (10+)
Key Functions (10+)
catch_errors()- Initialize error handling and trapserror_handler()- Main error handler (ERR trap)explain_exit_code()- Map exit code to descriptionon_exit()- EXIT trap (cleanup and orphan detection)on_interrupt()- SIGINT handler (Ctrl+C)on_terminate()- SIGTERM handler (kill)on_hangup()- SIGHUP handler (SSH disconnect)_send_abort_telemetry()- Report failure to API_stop_container_if_installing()- Stop orphaned containers
Supported Exit Codes
Supported Exit Codes
- 1-10: Generic shell errors
- 4-95: curl/wget errors
- 100-102: APT/DPKG errors
- 103-123: Script validation & setup
- 124-146: Signals and timeouts
- 150-154: Systemd/service errors
- 160-162: Python/pip errors
- 170-193: Database errors (PostgreSQL, MySQL, MongoDB)
- 200-231: Proxmox custom codes
- 232-238: Tools & addon scripts
- 239-249: Node.js/npm errors
- 250-254: Application install/update errors
misc/error_handler.func
api.func
Telemetry & Diagnostics API Handles anonymous telemetry reporting to help improve script reliability and track installation success rates.Key Responsibilities
Key Responsibilities
- Container/VM creation statistics
- Installation success/failure tracking
- Error code categorization and reporting
- Repository source detection
- Privacy-respecting anonymous telemetry
Key Functions (5+)
Key Functions (5+)
post_to_api()- Report LXC container creation startpost_to_api_vm()- Report VM creation startpost_update_to_api()- Update installation statusdetect_repo_source()- Identify script source (ProxmoxVE/ProxmoxVED/external)categorize_error()- Map exit code to error categoryget_error_description()- Build error context string
Privacy Features
Privacy Features
- Only anonymous statistics (no personal data)
- User can opt-out via DIAGNOSTICS=no
- Random UUID for session tracking only
- Data retention: 30 days
- No IP addresses or hostnames collected
https://telemetry.community-scripts.org/telemetry
Location: misc/api.func
Installation & Setup Libraries
install.func
Container Installation Workflow Executes inside LXC containers after creation to perform initial setup and configuration.Key Responsibilities
Key Responsibilities
- Network connectivity verification (IPv4/IPv6)
- OS updates and package installation
- DNS resolution checks
- MOTD and SSH configuration
- Container customization and auto-login
Key Functions (8+)
Key Functions (8+)
setting_up_container()- Verify network connectivitynetwork_check()- Comprehensive IPv4/IPv6 internet checkupdate_os()- Update container OS packagesmotd_ssh()- Configure MOTD and SSH accesscustomize()- Apply container customizationscleanup_lxc()- Remove unnecessary packagesverb_ip6()- Configure IPv6 settingspost_progress_to_api()- Report installation progress
Network Checks
Network Checks
IPv4 DNS Servers Tested:
- 1.1.1.1 (Cloudflare)
- 8.8.8.8 (Google)
- 9.9.9.9 (Quad9)
- 2606:4700:4700::1111 (Cloudflare)
- 2001:4860:4860::8888 (Google)
- 2620:fe::fe (Quad9)
- github.com
- raw.githubusercontent.com
- api.github.com
- git.community-scripts.org
misc/install.func
tools.func
Package & Tool Installation Robust package management and tool installation functions with automatic retry logic and OS-upgrade safety.Key Responsibilities
Key Responsibilities
- Automatic retry logic for transient APT failures
- Unified keyring cleanup (3 locations)
- Legacy installation cleanup (nvm, rbenv, rustup)
- OS-upgrade-safe repository preparation
- 30+ tool-specific installation functions
Key Functions (30+)
Key Functions (30+)
Package Management:
install_packages_with_retry()- Install with 3 retriesupgrade_packages_with_retry()- Upgrade with retry logicpkg_install()- Wrapper for package installationpkg_update()- Update package lists
setup_deb822_repo()- Modern DEB822 format repositoriesprepare_repository_setup()- Cleanup repos before setupcleanup_tool_keyrings()- Remove old keyringsdownload_gpg_key()- Download and validate GPG keys
setup_nodejs()- Node.js with specific versionsetup_php()- PHP with extensionssetup_mariadb()- MariaDB serversetup_docker()- Docker Enginesetup_python_uv()- Python with uv package managersetup_postgresql()- PostgreSQL serversetup_nginx()- Nginx web serversetup_go()- Go programming languagesetup_rust()- Rust programming language
Retry Logic
Retry Logic
misc/tools.func
Alpine Linux Libraries
alpine-install.func
Alpine Container Setup Alpine Linux-specific installation functions for lightweight container deployments.Key Responsibilities
Key Responsibilities
- Alpine OS updates (apk-based)
- IPv6 configuration for Alpine
- MOTD and SSH for Alpine
- Alpine-specific customizations
Key Functions (6+)
Key Functions (6+)
update_os()- Alpine version using apkverb_ip6()- IPv6 configuration for Alpinemotd_ssh()- Alpine MOTD/SSH setupcustomize()- Alpine customizationscleanup_lxc()- Alpine cleanup
misc/alpine-install.func
alpine-tools.func
Alpine Tool Installation Alpine-specific package and tool installation functions.Key Responsibilities
Key Responsibilities
- Alpine package management (apk)
- Community repository enablement
- Alpine-specific tool installations
Key Functions (15+)
Key Functions (15+)
apk_add()- Install Alpine packagesapk_update()- Update Alpine package listsapk_del()- Remove Alpine packagesadd_community_repo()- Enable Alpine community repo- Alpine-specific tool setup functions
misc/alpine-tools.func
VM Provisioning Libraries
cloud-init.func
VM Cloud-Init Configuration Cloud-init and VM provisioning functions for automated VM deployment.Key Responsibilities
Key Responsibilities
- Cloud-init configuration generation
- User-data and meta-data creation
- SSH key installation for VMs
- Static IP configuration
- VM network configuration
Key Functions (12+)
Key Functions (12+)
generate_cloud_init()- Generate cloud-init configgenerate_user_data()- Create user-data filesetup_ssh_keys()- Configure SSH keys for VMsetup_static_ip()- Static IP configurationconfigure_network()- VM network setup
misc/cloud-init.func
vm-core.func
VM Core Utilities & Workflow Provides core utility functions specifically for VM provisioning workflows, including enhanced messaging, spinners, and VM-specific operations.Key Responsibilities
Key Responsibilities
- VM-specific color codes and formatting
- Enhanced messaging for VM operations
- Spinner animations for long-running VM tasks
- VM workflow orchestration
- Validation checks for VM parameters
- Development mode support for VMs
Key Functions (30+)
Key Functions (30+)
load_functions()- Initialize VM utility groupscolor()- Set VM-specific ANSI color codesmsg_info()- Display VM operation messagesmsg_ok()- Display VM success messagesmsg_error()- Display VM error messagesspinner_start()- Start progress spinnerspinner_stop()- Stop progress spinnervalidate_vm_id()- Validate VMIDvm_cleanup()- Clean up failed VM creation
Integration Points
Integration Points
- Sourced by: VM creation scripts (
vm/*.sh) - Works with:
cloud-init.funcfor provisioning - Provides: VM-specific utilities similar to core.func for containers
misc/vm-core.func
Function Library Relationships
Quick Stats
| Library | Functions | Primary Use Case | Dependencies |
|---|---|---|---|
| build.func | 50+ | LXC container creation | api.func, core.func, error_handler.func |
| core.func | 20+ | System utilities | None (foundation) |
| error_handler.func | 10+ | Error handling | core.func |
| api.func | 5+ | Telemetry reporting | None |
| install.func | 8+ | Container setup | core.func, error_handler.func |
| tools.func | 30+ | Package management | core.func |
| alpine-install.func | 6+ | Alpine setup | core.func, error_handler.func |
| alpine-tools.func | 15+ | Alpine packages | core.func |
| cloud-init.func | 12+ | VM provisioning | core.func |
All function libraries are loaded via HTTP/HTTPS from the main repository using
source <(curl -fsSL ...) to ensure users always get the latest version without manual updates.