Skip to content

System Requirements

This page details all requirements for running LXC AutoScale ML.

Hardware Requirements

Proxmox Host

ResourceMinimumRecommended
CPU2 cores4+ cores
RAM4 GB8+ GB
Storage20 GB free50+ GB free

The ML model training adds minimal overhead (typically less than 5% CPU during training cycles).

Container Scaling Limits

Default limits that can be adjusted in configuration:

ResourceMinimumMaximum
CPU Cores18
RAM512 MB16 GB

Software Requirements

Proxmox VE

VersionStatus
8.xTested and supported
7.xSupported
6.xSupported
5.x and earlierNot supported

Python

Python 3.10 to 3.12 is required, and the installation script verifies that Python is available.

The floor comes from the pinned requests, which needs 3.10; the ceiling from the pinned numpy, pandas and scikit-learn, which have no 3.13 wheels. Proxmox VE 8 (Debian 12) ships Python 3.11 and is the primary target. Proxmox VE 9 (Debian 13) ships 3.13, so the ML component needs those three pins raised before it will install there; the API and the monitor are unaffected.

bash
python3 --version

Required Python Packages

These packages are installed automatically by the installation script:

PackagePurpose
flaskAPI web framework
requestsHTTP client for API calls
scikit-learnMachine learning (IsolationForest)
pandasData manipulation
numpyNumerical operations
aiofilesAsync file operations
pyyamlYAML configuration parsing
psutilSystem metrics collection
aiohttpAsync HTTP client for batch requests

Optional Packages

PackagePurpose
prometheus-clientPrometheus metrics export

Network Requirements

Inbound Ports

PortServiceAccess
5000APILocalhost by default

The API ships unauthenticated

server.host defaults to 0.0.0.0 and authentication.enabled defaults to false, so out of the box anything that can route to port 5000 can resize, snapshot, clone and destroy containers. The service runs as root, because it executes pct.

On the standard single-node layout, set server.host: 127.0.0.1 — the model runs beside the API and does not need it exposed. If it must be reachable from another host, enable authentication, set a matching api.api_key in the model configuration, put TLS in front of it, and restrict access with firewall rules.

Outbound Connections

The installation script requires internet access to download packages and source files.

Filesystem Requirements

Required Directories

DirectoryPurposePermissions
/etc/lxc_autoscale_ml/Configuration filesroot:root 755
/var/log/Log filesroot:root 755
/run/Lock file (tmpfs, cleared on boot)root:root 755
/usr/local/bin/lxc_autoscale_ml/Application coderoot:root 755

Disk Space for Logs

FileTypical SizeNotes
lxc_metrics.json2 MB maxLimited to 1000 entries
lxc_autoscale_ml.logVariesUse logrotate
lxc_autoscale_api_access.logVariesUse logrotate

Container Requirements

Supported Container Types

  • Standard LXC containers
  • Privileged and unprivileged containers
  • Any Linux distribution inside containers

LXCFS Configuration

For accurate load average reporting inside containers, LXCFS must be configured with the -l flag:

bash
# Check current configuration
grep ExecStart /lib/systemd/system/lxcfs.service

# Should include -l flag:
# ExecStart=/usr/bin/lxcfs /var/lib/lxcfs -l

Verification Commands

Run these commands to verify your system meets requirements:

bash
# Check Proxmox version
pveversion

# Check Python version
python3 --version

# Check available disk space
df -h /var/log

# Check if required commands exist
which pct pvesh

# Verify LXCFS is running
systemctl status lxcfs

Known Limitations

Container ID Range

The API validates container IDs between 100 and 999999. IDs outside this range are rejected.

Maximum Containers

Tested with up to 200 containers. Performance remains stable with batch async processing.

Metrics Storage

The metrics file is limited to 1000 entries (configurable). Older entries are automatically removed.

Next Steps

Released under the MIT License. · Privacy & legal