build.func Environment Variables Reference
Overview
This document provides a comprehensive reference of all environment variables used in build.func, organized by category and usage context.
Variable Categories
Core Container Variables
| Variable |
Description |
Default |
Set In |
Used In |
APP |
Application name (e.g., "plex", "nextcloud") |
- |
Environment |
Throughout |
NSAPP |
Namespace application name |
$APP |
Environment |
Throughout |
CTID |
Container ID |
- |
Environment |
Container creation |
CT_TYPE |
Container type ("install" or "update") |
"install" |
Environment |
Entry point |
CT_NAME |
Container name |
$APP |
Environment |
Container creation |
Operating System Variables
| Variable |
Description |
Default |
Set In |
Used In |
var_os |
Operating system selection |
"debian" |
base_settings() |
OS selection |
var_version |
OS version |
"12" |
base_settings() |
Template selection |
var_template |
Template name |
Auto-generated |
base_settings() |
Template download |
Resource Configuration Variables
| Variable |
Description |
Default |
Set In |
Used In |
var_cpu |
CPU cores |
"2" |
base_settings() |
Container creation |
var_ram |
RAM in MB |
"2048" |
base_settings() |
Container creation |
var_disk |
Disk size in GB |
"8" |
base_settings() |
Container creation |
DISK_SIZE |
Disk size (alternative) |
$var_disk |
Environment |
Container creation |
CORE_COUNT |
CPU cores (alternative) |
$var_cpu |
Environment |
Container creation |
RAM_SIZE |
RAM size (alternative) |
$var_ram |
Environment |
Container creation |
Network Configuration Variables
| Variable |
Description |
Default |
Set In |
Used In |
var_net |
Network interface |
"vmbr0" |
base_settings() |
Network config |
var_bridge |
Bridge interface |
"vmbr0" |
base_settings() |
Network config |
var_gateway |
Gateway IP |
"192.168.1.1" |
base_settings() |
Network config |
var_ip |
Container IP address |
- |
User input |
Network config |
var_ipv6 |
IPv6 address |
- |
User input |
Network config |
var_vlan |
VLAN ID |
- |
User input |
Network config |
var_mtu |
MTU size |
"1500" |
base_settings() |
Network config |
var_mac |
MAC address |
Auto-generated |
base_settings() |
Network config |
NET |
Network interface (alternative) |
$var_net |
Environment |
Network config |
BRG |
Bridge interface (alternative) |
$var_bridge |
Environment |
Network config |
GATE |
Gateway IP (alternative) |
$var_gateway |
Environment |
Network config |
IPV6_METHOD |
IPv6 configuration method |
"none" |
Environment |
Network config |
VLAN |
VLAN ID (alternative) |
$var_vlan |
Environment |
Network config |
MTU |
MTU size (alternative) |
$var_mtu |
Environment |
Network config |
MAC |
MAC address (alternative) |
$var_mac |
Environment |
Network config |
Storage Configuration Variables
| Variable |
Description |
Default |
Set In |
Used In |
var_template_storage |
Storage for templates |
- |
select_storage() |
Template storage |
var_container_storage |
Storage for container disks |
- |
select_storage() |
Container storage |
TEMPLATE_STORAGE |
Template storage (alternative) |
$var_template_storage |
Environment |
Template storage |
CONTAINER_STORAGE |
Container storage (alternative) |
$var_container_storage |
Environment |
Container storage |
Feature Flags
| Variable |
Description |
Default |
Set In |
Used In |
var_fuse |
Enable FUSE support |
"no" |
CT script / Advanced Settings |
Container features |
var_tun |
Enable TUN/TAP support |
"no" |
CT script / Advanced Settings |
Container features |
var_nesting |
Enable nesting support |
"1" |
CT script / Advanced Settings |
Container features |
var_keyctl |
Enable keyctl support |
"0" |
CT script / Advanced Settings |
Container features |
var_mknod |
Allow device node creation |
"0" |
CT script / Advanced Settings |
Container features |
var_mount_fs |
Allowed filesystem mounts |
"" |
CT script / Advanced Settings |
Container features |
var_protection |
Enable container protection |
"no" |
CT script / Advanced Settings |
Container creation |
var_timezone |
Container timezone |
"" |
CT script / Advanced Settings |
Container creation |
var_verbose |
Enable verbose output |
"no" |
Environment / Advanced Settings |
Logging |
var_ssh |
Enable SSH key provisioning |
"no" |
CT script / Advanced Settings |
SSH setup |
ENABLE_FUSE |
FUSE flag (internal) |
"no" |
Advanced Settings |
Container creation |
ENABLE_TUN |
TUN/TAP flag (internal) |
"no" |
Advanced Settings |
Container creation |
ENABLE_NESTING |
Nesting flag (internal) |
"1" |
Advanced Settings |
Container creation |
ENABLE_KEYCTL |
Keyctl flag (internal) |
"0" |
Advanced Settings |
Container creation |
ENABLE_MKNOD |
Mknod flag (internal) |
"0" |
Advanced Settings |
Container creation |
PROTECT_CT |
Protection flag (internal) |
"no" |
Advanced Settings |
Container creation |
CT_TIMEZONE |
Timezone setting (internal) |
"" |
Advanced Settings |
Container creation |
VERBOSE |
Verbose mode flag |
"no" |
Environment |
Logging |
SSH |
SSH access flag |
"no" |
Advanced Settings |
SSH setup |
APT Cacher Configuration
| Variable |
Description |
Default |
Set In |
Used In |
var_apt_cacher |
Enable APT cacher proxy |
"no" |
CT script / Advanced Settings |
Package management |
var_apt_cacher_ip |
APT cacher server IP |
"" |
CT script / Advanced Settings |
Package management |
APT_CACHER |
APT cacher flag |
"no" |
Advanced Settings |
Container creation |
APT_CACHER_IP |
APT cacher IP (internal) |
"" |
Advanced Settings |
Container creation |
GPU Passthrough Variables
| Variable |
Description |
Default |
Set In |
Used In |
var_gpu |
Enable GPU passthrough |
"no" |
CT script / Environment / Advanced Settings |
GPU passthrough |
ENABLE_GPU |
GPU passthrough flag (internal) |
"no" |
Advanced Settings |
Container creation |
Note: GPU passthrough is controlled via var_gpu. Apps that benefit from GPU acceleration (media servers, AI/ML, transcoding) have var_gpu=yes as default in their CT scripts.
Apps with GPU enabled by default:
- Media: jellyfin, plex, emby, channels, ersatztv, tunarr, immich
- Transcoding: tdarr, unmanic, fileflows
- AI/ML: ollama, openwebui
- NVR: frigate
Usage Examples:
API and Diagnostics Variables
| Variable |
Description |
Default |
Set In |
Used In |
DIAGNOSTICS |
Enable diagnostics mode |
"false" |
Environment |
Diagnostics |
METHOD |
Installation method |
"install" |
Environment |
Installation flow |
RANDOM_UUID |
Random UUID for tracking |
- |
Environment |
Logging |
API_TOKEN |
Proxmox API token |
- |
Environment |
API calls |
API_USER |
Proxmox API user |
- |
Environment |
API calls |
Settings Persistence Variables
| Variable |
Description |
Default |
Set In |
Used In |
SAVE_DEFAULTS |
Save settings as defaults |
"false" |
User input |
Settings persistence |
SAVE_APP_DEFAULTS |
Save app-specific defaults |
"false" |
User input |
Settings persistence |
DEFAULT_VARS_FILE |
Path to default.vars |
"/usr/local/community-scripts/default.vars" |
Environment |
Settings persistence |
APP_DEFAULTS_FILE |
Path to app.vars |
"/usr/local/community-scripts/defaults/$APP.vars" |
Environment |
Settings persistence |
Variable Precedence Chain
Variables are resolved in the following order (highest to lowest priority):
- Hard Environment Variables: Set before script execution
- App-specific .vars file:
/usr/local/community-scripts/defaults/<app>.vars
- Global default.vars file:
/usr/local/community-scripts/default.vars
- Built-in defaults: Set in
base_settings() function
Critical Variables for Non-Interactive Use
For silent/non-interactive execution, these variables must be set:
Environment Variable Usage Patterns
1. Container Creation
2. GPU Passthrough
3. Advanced Network Configuration
4. Storage Configuration
Variable Validation
The script validates variables at several points:
- Container ID validation: Must be unique and within valid range
- IP address validation: Must be valid IPv4/IPv6 format
- Storage validation: Must exist and support required content types
- Resource validation: Must be within reasonable limits
- Network validation: Must be valid network configuration
Common Variable Combinations
Development Container
Media Server with GPU
Lightweight Service