proxmox-lxc — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited proxmox-lxc (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Plan and document Proxmox LXC deployments for Mick's homelab with practical container setup, networking, and maintenance steps.
proxmox-lxc.Deploy and configure Proxmox LXC containers for self-hosted services on Mick's homelab stack.
| Item | Value |
|---|---|
| Proxmox host | Local network |
| UniFi controller | Static IP assignment via MAC |
| Cloudflare Tunnel | HTTPS exposure with no port forwarding |
| Existing containers | CT 104 = n8n at 192.168.0.81 |
| Template | Ubuntu 22.04 standard |
| Next available CT ID | Ask Mick or check with pvesh get /nodes/{node}/lxc |
Resolve these before generating the pct create command, and state any assumption made:
pct list, ping or UniFi client list); never reuse an IP from the reference tablepvesh get /nodes/{node}/status or the dashboard) before assigning memory and cores; size from the workload table, not habitCommon services deviate from the generic sequence in known ways. Apply these adjustments on top of the full deployment sequence:
| Service | Memory | Disk | Notes |
|---|---|---|---|
| Pi-hole | 512MB | 8GB | Port 53 TCP/UDP plus web UI; set the container as DNS only after verifying it resolves |
| Home Assistant | 2048MB | 16GB | Privileged or device passthrough for USB radios; prefer HAOS VM if heavy add-on use is planned |
| Ollama / local LLM | 4096MB+ | 32GB+ | Models dominate disk; GPU passthrough needs the host driver plus cgroup device entries |
| PostgreSQL / MariaDB | 2048MB | 16GB+ | Put data on a dedicated mount point; schedule dumps, not just snapshots |
| Grafana / monitoring | 1024MB | 8GB | Pair with a metrics store; do not point it at production databases without a read-only user |
| FastAPI / MCP server | 512MB | 8GB | The generic sequence as written |
For services not listed, follow the generic sequence and say which recipe assumptions were borrowed.
Make changes testable before they are permanent:
pct snapshot {CT_ID} pre-{change}-$(date +%Y%m%d)vzdump to storage that is not the same disk as the containers, and verify a restore once rather than assuming/opt/{service} config) separately from the container image so data can restore into a rebuilt containerWhen asked to deploy a new service, generate all five of these pieces.
pct create commandpct create {CT_ID} local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--hostname {service-name} \
--memory 512 \
--cores 1 \
--rootfs local-lvm:8 \
--net0 name=eth0,bridge=vmbr0,ip={IP}/24,gw=192.168.0.1 \
--nameserver 1.1.1.1 \
--unprivileged 1 \
--start 1Adjust memory based on workload:
512MB1024MB2048MB+# Enter container
pct enter {CT_ID}
# Update and install basics
apt update && apt upgrade -y
apt install -y curl wget git python3 python3-pip
# For Python services
pip install {packages} --break-system-packages
# For Node services
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs# Create app directory
mkdir -p /opt/{service-name}
cd /opt/{service-name}
# Install app
pip install {package} --break-system-packages
# Create .env file for secrets
cat > /opt/{service-name}/.env << EOF
API_KEY=your_key_here
API_BASE_URL=https://api.example.com
PORT=8000
EOF
chmod 600 /opt/{service-name}/.envsystemd service unit# /etc/systemd/system/{service-name}.service
[Unit]
Description={Service Display Name}
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/{service-name}
EnvironmentFile=/opt/{service-name}/.env
ExecStart=/usr/bin/python3 /opt/{service-name}/server.py http
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.targetsystemctl daemon-reload
systemctl enable --now {service-name}
systemctl status {service-name}
journalctl -u {service-name} -fingress:
- hostname: {service-name}.yourdomain.com
service: http://{IP}:{PORT}
- service: http_status:404systemctl restart cloudflared
curl https://{service-name}.yourdomain.com/healthClientsYou can also set the IP at creation time with --net0 ... ip={IP}/24.
| Service | Default Port |
|---|---|
| n8n | 5678 |
| FastMCP or FastAPI | 8000 |
| Home Assistant | 8123 |
| Grafana | 3000 |
| Portainer | 9000 |
| Ollama | 11434 |
# List all containers
pct list
# Start, stop, restart
pct start {CT_ID}
pct stop {CT_ID}
pct restart {CT_ID}
# Enter container shell
pct enter {CT_ID}
# Check status
pct status {CT_ID}
# Snapshot before major changes
pct snapshot {CT_ID} pre-update-$(date +%Y%m%d)
# Restore snapshot
pct rollback {CT_ID} pre-update-YYYYMMDDpct create command completed successfully/opt/{service-name}/.env file created with chmod 600systemd unit file created and enabledIf the user is not sure how to use this skill, asks what it needs, or asks for examples:
Minimum useful input:
Example prompts:
Use proxmox-lxc to plan a new LXC container for an internal automation service.Help me deploy and harden an LXC on Proxmox for self hosted tooling.Show me the best example prompt for asking this skill for an LXC setup plan.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.