<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.cpate.ch/index.php?action=history&amp;feed=atom&amp;title=Proxmox_containers</id>
	<title>Proxmox containers - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cpate.ch/index.php?action=history&amp;feed=atom&amp;title=Proxmox_containers"/>
	<link rel="alternate" type="text/html" href="https://wiki.cpate.ch/index.php?title=Proxmox_containers&amp;action=history"/>
	<updated>2026-09-07T08:23:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.cpate.ch/index.php?title=Proxmox_containers&amp;diff=275&amp;oldid=prev</id>
		<title>Bftcpa606: Created page with &quot; = Running Containers on Proxmox VE =  == A Procedural Tutorial for Administrators ==  == 1. Purpose == This tutorial explains the key concepts and procedures involved in running Linux containers on Proxmox Virtual Environment.  After completing the tutorial, you should be able to:  1.         Explain the difference between a container and a virtual machine.  2.         Download a container operating-system template.  3.         Create and configure an LXC co...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.cpate.ch/index.php?title=Proxmox_containers&amp;diff=275&amp;oldid=prev"/>
		<updated>2026-07-13T20:48:30Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; = Running Containers on Proxmox VE =  == A Procedural Tutorial for Administrators ==  == 1. Purpose == This tutorial explains the key concepts and procedures involved in running Linux containers on Proxmox Virtual Environment.  After completing the tutorial, you should be able to:  1.         Explain the difference between a container and a virtual machine.  2.         Download a container operating-system template.  3.         Create and configure an LXC co...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= Running Containers on Proxmox VE =&lt;br /&gt;
&lt;br /&gt;
== A Procedural Tutorial for Administrators ==&lt;br /&gt;
&lt;br /&gt;
== 1. Purpose ==&lt;br /&gt;
This tutorial explains the key concepts and procedures involved in running Linux containers on Proxmox Virtual Environment.&lt;br /&gt;
&lt;br /&gt;
After completing the tutorial, you should be able to:&lt;br /&gt;
&lt;br /&gt;
1.         Explain the difference between a container and a virtual machine.&lt;br /&gt;
&lt;br /&gt;
2.         Download a container operating-system template.&lt;br /&gt;
&lt;br /&gt;
3.         Create and configure an LXC container.&lt;br /&gt;
&lt;br /&gt;
4.         Allocate CPU, memory, storage, and networking resources.&lt;br /&gt;
&lt;br /&gt;
5.         Start, stop, update, and troubleshoot a container.&lt;br /&gt;
&lt;br /&gt;
6.         Configure backups, snapshots, and firewall protection.&lt;br /&gt;
&lt;br /&gt;
7.         Decide whether an application should run in an LXC container, a virtual machine, or Docker.  &lt;br /&gt;
&lt;br /&gt;
== 2. Understand Proxmox Container Architecture ==&lt;br /&gt;
Proxmox VE supports two primary forms of virtualization:&lt;br /&gt;
&lt;br /&gt;
•            &amp;#039;&amp;#039;&amp;#039;KVM virtual machines&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
•            &amp;#039;&amp;#039;&amp;#039;LXC containers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A KVM virtual machine emulates a complete computer and runs its own kernel. An LXC container shares the Proxmox host’s Linux kernel but maintains a separate user space, filesystem, processes, network configuration, and resource limits.&lt;br /&gt;
&lt;br /&gt;
Proxmox containers are designed primarily as &amp;#039;&amp;#039;&amp;#039;system containers&amp;#039;&amp;#039;&amp;#039;. A system container behaves like a small Linux server. It can run services such as:&lt;br /&gt;
&lt;br /&gt;
•            Web servers&lt;br /&gt;
&lt;br /&gt;
•            Database servers&lt;br /&gt;
&lt;br /&gt;
•            DNS servers&lt;br /&gt;
&lt;br /&gt;
•            File-sharing services&lt;br /&gt;
&lt;br /&gt;
•            Monitoring systems&lt;br /&gt;
&lt;br /&gt;
•            Internal business applications&lt;br /&gt;
&lt;br /&gt;
•            Reverse proxies&lt;br /&gt;
&lt;br /&gt;
•            Development environments&lt;br /&gt;
&lt;br /&gt;
The Proxmox Container Toolkit, accessed through the pct command, manages LXC containers and integrates them with Proxmox storage, networking, clustering, firewall, backup, and high-availability features.&lt;br /&gt;
&lt;br /&gt;
=== Container versus virtual machine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Consideration&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |LXC container&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |KVM virtual machine&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Kernel&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Shares the Proxmox host kernel&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Uses its own kernel&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Operating systems&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Linux only&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Linux, Windows, BSD, and others&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Startup time&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Usually a few seconds&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Usually longer&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Resource overhead&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Low&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Higher&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Isolation&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Good, but less complete than a VM&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Stronger isolation&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Kernel modules&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Controlled by the host&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Managed inside the VM&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Hardware passthrough&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |More complicated&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Generally more flexible&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Best use&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Lightweight Linux services&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Strong isolation or non-Linux workloads&lt;br /&gt;
|}&lt;br /&gt;
Use a container when the workload is Linux-based, does not require its own kernel, and benefits from low overhead.&lt;br /&gt;
&lt;br /&gt;
Use a virtual machine when the workload:&lt;br /&gt;
&lt;br /&gt;
•            Runs Windows or another non-Linux operating system.&lt;br /&gt;
&lt;br /&gt;
•            Requires a custom kernel.&lt;br /&gt;
&lt;br /&gt;
•            Requires stronger security isolation.&lt;br /&gt;
&lt;br /&gt;
•            Requires complicated hardware passthrough.&lt;br /&gt;
&lt;br /&gt;
•            Runs software that is not compatible with LXC restrictions.&lt;br /&gt;
&lt;br /&gt;
•            Will host untrusted users or untrusted code.  &lt;br /&gt;
&lt;br /&gt;
== 3. Understand System Containers and Application Containers ==&lt;br /&gt;
An LXC container in Proxmox normally represents an entire Linux operating-system environment. For example, one container might run Debian with Nginx, PHP, SSH, systemd, and scheduled tasks.&lt;br /&gt;
&lt;br /&gt;
This differs from the common Docker model, in which each container usually runs a single application or service.&lt;br /&gt;
&lt;br /&gt;
A useful way to distinguish them is:&lt;br /&gt;
&lt;br /&gt;
•            &amp;#039;&amp;#039;&amp;#039;Proxmox LXC:&amp;#039;&amp;#039;&amp;#039; a lightweight Linux server.&lt;br /&gt;
&lt;br /&gt;
•            &amp;#039;&amp;#039;&amp;#039;Docker container:&amp;#039;&amp;#039;&amp;#039; a packaged application process.&lt;br /&gt;
&lt;br /&gt;
Current Proxmox documentation also describes support for creating LXC-based containers from Open Container Initiative images. However, application-container support is identified as a technology preview. For ordinary production administration, conventional Linux LXC templates remain the more established approach.  &lt;br /&gt;
&lt;br /&gt;
== 4. Prepare the Proxmox Host ==&lt;br /&gt;
Before creating a container, confirm that the Proxmox node has:&lt;br /&gt;
&lt;br /&gt;
•            Available memory&lt;br /&gt;
&lt;br /&gt;
•            Available CPU capacity&lt;br /&gt;
&lt;br /&gt;
•            Suitable storage&lt;br /&gt;
&lt;br /&gt;
•            A working Linux bridge&lt;br /&gt;
&lt;br /&gt;
•            Current system updates&lt;br /&gt;
&lt;br /&gt;
•            A configured backup destination&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Check the Proxmox version ===&lt;br /&gt;
Open the Proxmox shell and run:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pveversion -v&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Install available updates ===&lt;br /&gt;
Use the Proxmox web interface:&lt;br /&gt;
&lt;br /&gt;
1.         Select the Proxmox node.&lt;br /&gt;
&lt;br /&gt;
2.         Select &amp;#039;&amp;#039;&amp;#039;Updates&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
3.         Click &amp;#039;&amp;#039;&amp;#039;Refresh&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
4.         Review the available packages.&lt;br /&gt;
&lt;br /&gt;
5.         Click &amp;#039;&amp;#039;&amp;#039;Upgrade&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Alternatively, use the host shell:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
apt update&lt;br /&gt;
&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&lt;br /&gt;
Reboot the host when a kernel or other major system component has been updated:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
reboot&lt;br /&gt;
&lt;br /&gt;
Do not install ordinary application workloads directly on the Proxmox host. Keep the host dedicated to virtualization, storage, networking, backup, and cluster management.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Review available storage ===&lt;br /&gt;
In the web interface:&lt;br /&gt;
&lt;br /&gt;
1.         Select &amp;#039;&amp;#039;&amp;#039;Datacenter&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
2.         Select &amp;#039;&amp;#039;&amp;#039;Storage&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
3.         Review each storage target.&lt;br /&gt;
&lt;br /&gt;
4.         Confirm that at least one storage target permits &amp;#039;&amp;#039;&amp;#039;Container&amp;#039;&amp;#039;&amp;#039; content.&lt;br /&gt;
&lt;br /&gt;
5.         Confirm that storage is available for &amp;#039;&amp;#039;&amp;#039;Container templates&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Backup files&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Typical storage roles might be:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Storage name&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Typical contents&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |local&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Templates, ISO images, backup files&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |local-lvm&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Container and VM disks&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |local-zfs&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Container and VM datasets&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pbs&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Proxmox Backup Server backups&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |nfs-backup&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Backup files on network storage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Review the network bridge ===&lt;br /&gt;
In the web interface:&lt;br /&gt;
&lt;br /&gt;
1.         Select the Proxmox node.&lt;br /&gt;
&lt;br /&gt;
2.         Select &amp;#039;&amp;#039;&amp;#039;System&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
3.         Select &amp;#039;&amp;#039;&amp;#039;Network&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
4.         Identify the primary bridge, commonly named vmbr0.&lt;br /&gt;
&lt;br /&gt;
5.         Confirm that the bridge is connected to the correct physical network interface.&lt;br /&gt;
&lt;br /&gt;
A container’s virtual network adapter normally connects to a Linux bridge. The bridge acts like a virtual Ethernet switch that connects the container to the physical network.  &lt;br /&gt;
&lt;br /&gt;
== 5. Download a Container Template ==&lt;br /&gt;
A container template is a compressed Linux filesystem used to create new containers.&lt;br /&gt;
&lt;br /&gt;
=== Using the web interface ===&lt;br /&gt;
1.         Select the storage that accepts container templates, commonly &amp;#039;&amp;#039;&amp;#039;local&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
2.         Select &amp;#039;&amp;#039;&amp;#039;CT Templates&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
3.         Click &amp;#039;&amp;#039;&amp;#039;Templates&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
4.         Select a Linux distribution.&lt;br /&gt;
&lt;br /&gt;
5.         Click &amp;#039;&amp;#039;&amp;#039;Download&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
6.         Wait for the download task to finish.&lt;br /&gt;
&lt;br /&gt;
Common choices include Debian, Ubuntu, AlmaLinux, Rocky Linux, Fedora, and Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
=== Using the command line ===&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pveam available&lt;br /&gt;
&lt;br /&gt;
pveam available | grep debian&lt;br /&gt;
&lt;br /&gt;
pveam update&lt;br /&gt;
&lt;br /&gt;
pveam download local debian-13-standard_13.1-1_amd64.tar.zst&lt;br /&gt;
&lt;br /&gt;
pveam list local&lt;br /&gt;
&lt;br /&gt;
The exact filename changes as templates are updated. Use the filename shown by pveam available.  &lt;br /&gt;
&lt;br /&gt;
== 6. Plan the Container ==&lt;br /&gt;
Before clicking &amp;#039;&amp;#039;&amp;#039;Create CT&amp;#039;&amp;#039;&amp;#039;, record the planned configuration.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Setting&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Example&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Container ID&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Hostname&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |web01&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Operating system&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Debian&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Privilege mode&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Unprivileged&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |CPU cores&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |2&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Memory&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |2 GB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Swap&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |512 MB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Root disk&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |16 GB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Bridge&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |vmbr0&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |IPv4 address&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |192.168.10.110/24&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Gateway&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |192.168.10.1&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |DNS domain&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |example.local&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |DNS server&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |192.168.10.5&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Start at boot&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Yes&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Firewall&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Yes&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Backup&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Nightly&lt;br /&gt;
|}&lt;br /&gt;
Choose a descriptive hostname. Avoid generic names such as server1 when a functional name such as proxy01, wiki01, or monitor01 would be clearer.  &lt;br /&gt;
&lt;br /&gt;
== 7. Choose Between Privileged and Unprivileged Containers ==&lt;br /&gt;
&lt;br /&gt;
=== Unprivileged container ===&lt;br /&gt;
In an unprivileged container, root inside the container is mapped to a non-root user ID on the Proxmox host.&lt;br /&gt;
&lt;br /&gt;
Advantages include better protection against container escape and reduced impact of many container-level security problems.&lt;br /&gt;
&lt;br /&gt;
Disadvantages include more complicated permissions for bind mounts, device access, and some nested workloads.&lt;br /&gt;
&lt;br /&gt;
=== Privileged container ===&lt;br /&gt;
In a privileged container, root inside the container corresponds more directly to root privileges on the host.&lt;br /&gt;
&lt;br /&gt;
This can simplify device access, certain network appliances, filesystem mounts, and legacy applications, but it offers weaker isolation.&lt;br /&gt;
&lt;br /&gt;
=== Recommended rule ===&lt;br /&gt;
Use an &amp;#039;&amp;#039;&amp;#039;unprivileged container by default&amp;#039;&amp;#039;&amp;#039;. Create a privileged container only when the workload has a documented technical requirement that cannot reasonably be met with an unprivileged container.  &lt;br /&gt;
&lt;br /&gt;
== 8. Create a Container Through the Web Interface ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Open the creation wizard ===&lt;br /&gt;
1.         Log in to the Proxmox web interface.&lt;br /&gt;
&lt;br /&gt;
2.         Select the desired node.&lt;br /&gt;
&lt;br /&gt;
3.         Click &amp;#039;&amp;#039;&amp;#039;Create CT&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Complete the General page ===&lt;br /&gt;
Enter the node, CT ID, hostname, optional resource pool, root password, and SSH public key. Enable &amp;#039;&amp;#039;&amp;#039;Unprivileged container&amp;#039;&amp;#039;&amp;#039; unless there is a documented reason not to.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Select the template ===&lt;br /&gt;
Choose the template storage and downloaded operating-system template.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Configure the root disk ===&lt;br /&gt;
Choose the storage target and disk size.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Workload&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Starting root disk&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |DNS or small utility&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |4–8 GB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Reverse proxy&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |8–16 GB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |General Linux server&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |16–32 GB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Database server&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |32 GB or more&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |File or media service&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Separate data mount recommended&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Allocate CPU resources ===&lt;br /&gt;
Set cores, CPU limit if needed, and CPU units. Start small and increase resources based on measured demand.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Allocate memory ===&lt;br /&gt;
Set memory and swap.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Workload&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Memory&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Small DNS or proxy server&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |512 MB–1 GB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |General web application&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |1–4 GB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Database server&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Based on workload&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Monitoring platform&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |2–8 GB or more&lt;br /&gt;
|}&lt;br /&gt;
Leave sufficient memory for the Proxmox host, ZFS ARC if applicable, other guests, and backup operations.&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Configure networking ===&lt;br /&gt;
Enter the interface name, bridge, VLAN tag if needed, IP configuration, gateway, firewall setting, and optional rate limit.&lt;br /&gt;
&lt;br /&gt;
For DHCP:&lt;br /&gt;
&lt;br /&gt;
text&lt;br /&gt;
&lt;br /&gt;
IPv4: DHCP&lt;br /&gt;
&lt;br /&gt;
For a static address:&lt;br /&gt;
&lt;br /&gt;
text&lt;br /&gt;
&lt;br /&gt;
IPv4/CIDR: 192.168.10.110/24&lt;br /&gt;
&lt;br /&gt;
Gateway: 192.168.10.1&lt;br /&gt;
&lt;br /&gt;
=== Step 8: Configure DNS ===&lt;br /&gt;
Specify the DNS search domain and DNS server addresses.&lt;br /&gt;
&lt;br /&gt;
=== Step 9: Confirm the configuration ===&lt;br /&gt;
Review the settings, optionally enable &amp;#039;&amp;#039;&amp;#039;Start after created&amp;#039;&amp;#039;&amp;#039;, and click &amp;#039;&amp;#039;&amp;#039;Finish&amp;#039;&amp;#039;&amp;#039;.  &lt;br /&gt;
&lt;br /&gt;
== 9. Create a Container from the Command Line ==&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct create 110 \&lt;br /&gt;
&lt;br /&gt;
local:vztmpl/debian-13-standard_13.1-1_amd64.tar.zst \&lt;br /&gt;
&lt;br /&gt;
  --hostname web01 \&lt;br /&gt;
&lt;br /&gt;
  --unprivileged 1 \&lt;br /&gt;
&lt;br /&gt;
  --cores 2 \&lt;br /&gt;
&lt;br /&gt;
  --memory 2048 \&lt;br /&gt;
&lt;br /&gt;
  --swap 512 \&lt;br /&gt;
&lt;br /&gt;
  --rootfs local-lvm:16 \&lt;br /&gt;
&lt;br /&gt;
  --net0 name=eth0,bridge=vmbr0,ip=192.168.10.110/24,gw=192.168.10.1,firewall=1 \&lt;br /&gt;
&lt;br /&gt;
  --nameserver 192.168.10.5 \&lt;br /&gt;
&lt;br /&gt;
  --searchdomain example.local \&lt;br /&gt;
&lt;br /&gt;
  --ssh-public-keys /root/.ssh/id_ed25519.pub \&lt;br /&gt;
&lt;br /&gt;
  --onboot 1&lt;br /&gt;
&lt;br /&gt;
Display the container configuration:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct config 110  &lt;br /&gt;
&lt;br /&gt;
== 10. Start and Access the Container ==&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct start 110&lt;br /&gt;
&lt;br /&gt;
pct status 110&lt;br /&gt;
&lt;br /&gt;
pct console 110&lt;br /&gt;
&lt;br /&gt;
pct enter 110&lt;br /&gt;
&lt;br /&gt;
pct list&lt;br /&gt;
&lt;br /&gt;
Use exit to leave the container shell.  &lt;br /&gt;
&lt;br /&gt;
== 11. Perform the Initial Operating-System Configuration ==&lt;br /&gt;
For Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
apt update&lt;br /&gt;
&lt;br /&gt;
apt full-upgrade -y&lt;br /&gt;
&lt;br /&gt;
Set the timezone:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
timedatectl set-timezone America/Chicago&lt;br /&gt;
&lt;br /&gt;
Create an administrative user:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
adduser administrator&lt;br /&gt;
&lt;br /&gt;
usermod -aG sudo administrator&lt;br /&gt;
&lt;br /&gt;
Install and enable SSH if required:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
&lt;br /&gt;
systemctl enable --now ssh&lt;br /&gt;
&lt;br /&gt;
Recommended SSH settings after key-based access has been tested:&lt;br /&gt;
&lt;br /&gt;
text&lt;br /&gt;
&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
&lt;br /&gt;
Restart SSH:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
systemctl restart ssh&lt;br /&gt;
&lt;br /&gt;
Install basic tools as needed:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
apt install curl wget vim-nox nano htop ca-certificates gnupg unzip  &lt;br /&gt;
&lt;br /&gt;
== 12. Manage Container Resources ==&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct set 110 --memory 4096&lt;br /&gt;
&lt;br /&gt;
pct set 110 --swap 1024&lt;br /&gt;
&lt;br /&gt;
pct set 110 --cores 4&lt;br /&gt;
&lt;br /&gt;
pct set 110 --onboot 1&lt;br /&gt;
&lt;br /&gt;
pct set 110 --startup order=20,up=30,down=60&lt;br /&gt;
&lt;br /&gt;
Startup ordering is useful when one service depends on another.  &lt;br /&gt;
&lt;br /&gt;
== 13. Add Storage to a Container ==&lt;br /&gt;
&lt;br /&gt;
=== Proxmox-managed mount point ===&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct set 110 --mp0 local-lvm:50,mp=/srv/data,backup=1&lt;br /&gt;
&lt;br /&gt;
=== Bind mount ===&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
mkdir -p /srv/shared&lt;br /&gt;
&lt;br /&gt;
pct set 110 --mp0 /srv/shared,mp=/mnt/shared&lt;br /&gt;
&lt;br /&gt;
Bind mounts require careful planning for user-ID mappings, backups, and migration.  &lt;br /&gt;
&lt;br /&gt;
== 14. Understand User-ID Mapping ==&lt;br /&gt;
A common default mapping is conceptually similar to:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Container ID&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Host ID&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |0&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |100000&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |1&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |100001&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |1000&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |101000&lt;br /&gt;
|}&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
chown 101000:101000 /srv/shared&lt;br /&gt;
&lt;br /&gt;
cat /etc/subuid&lt;br /&gt;
&lt;br /&gt;
cat /etc/subgid&lt;br /&gt;
&lt;br /&gt;
Verify mappings before changing ownership.  &lt;br /&gt;
&lt;br /&gt;
== 15. Configure Networking After Creation ==&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct config 110&lt;br /&gt;
&lt;br /&gt;
pct set 110 --net0 name=eth0,bridge=vmbr0,ip=dhcp,firewall=1&lt;br /&gt;
&lt;br /&gt;
pct set 110 --net0 name=eth0,bridge=vmbr0,ip=192.168.10.110/24,gw=192.168.10.1,firewall=1&lt;br /&gt;
&lt;br /&gt;
pct set 110 --net0 name=eth0,bridge=vmbr0,tag=20,ip=192.168.20.110/24,gw=192.168.20.1,firewall=1  &lt;br /&gt;
&lt;br /&gt;
== 16. Configure the Proxmox Firewall ==&lt;br /&gt;
Enable and review the firewall at the Datacenter, node, container, and interface levels as appropriate.&lt;br /&gt;
&lt;br /&gt;
Example policy:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Direction&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Action&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Protocol/port&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Source&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |In&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Accept&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |TCP 22&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Administration subnet&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |In&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Accept&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |TCP 443&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Internal networks&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |In&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Drop&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |All others&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Any&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Out&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Accept&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Required traffic&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Any&lt;br /&gt;
|}&lt;br /&gt;
Always create and test management-access rules before applying a default-deny policy.  &lt;br /&gt;
&lt;br /&gt;
== 17. Back Up Containers ==&lt;br /&gt;
Create a manual backup:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
vzdump 110 --storage nfs-backup --mode snapshot --compress zstd&lt;br /&gt;
&lt;br /&gt;
Backup modes include snapshot, suspend, and stop.&lt;br /&gt;
&lt;br /&gt;
A basic retention plan might include seven daily backups, four weekly backups, and several monthly backups.&lt;br /&gt;
&lt;br /&gt;
Periodically test restores by restoring under a temporary ID, attaching the container to an isolated network, starting it, and verifying the operating system, application, and data.  &lt;br /&gt;
&lt;br /&gt;
== 18. Use Snapshots Carefully ==&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct snapshot 110 before-upgrade&lt;br /&gt;
&lt;br /&gt;
pct listsnapshot 110&lt;br /&gt;
&lt;br /&gt;
pct rollback 110 before-upgrade&lt;br /&gt;
&lt;br /&gt;
pct delsnapshot 110 before-upgrade&lt;br /&gt;
&lt;br /&gt;
Snapshots are short-term rollback tools, not backups.  &lt;br /&gt;
&lt;br /&gt;
== 19. Clone and Template Containers ==&lt;br /&gt;
Before cloning, remove or regenerate machine-specific information such as hostnames, IP addresses, SSH host keys, application node identifiers, monitoring IDs, and database replication identities.&lt;br /&gt;
&lt;br /&gt;
Use full clones when the new container should be independent.  &lt;br /&gt;
&lt;br /&gt;
== 20. Monitor Container Performance ==&lt;br /&gt;
Useful commands include:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
top&lt;br /&gt;
&lt;br /&gt;
htop&lt;br /&gt;
&lt;br /&gt;
free -h&lt;br /&gt;
&lt;br /&gt;
df -h&lt;br /&gt;
&lt;br /&gt;
ip address&lt;br /&gt;
&lt;br /&gt;
ss -tulpn&lt;br /&gt;
&lt;br /&gt;
journalctl -p warning&lt;br /&gt;
&lt;br /&gt;
Investigate CPU, memory, storage, networking, application, and host contention issues before simply adding resources.  &lt;br /&gt;
&lt;br /&gt;
== 21. Stop, Reboot, and Shut Down Containers Correctly ==&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct shutdown 110&lt;br /&gt;
&lt;br /&gt;
pct reboot 110&lt;br /&gt;
&lt;br /&gt;
pct stop 110&lt;br /&gt;
&lt;br /&gt;
pct status 110&lt;br /&gt;
&lt;br /&gt;
Use pct stop only when graceful shutdown fails or immediate termination is necessary.  &lt;br /&gt;
&lt;br /&gt;
== 22. Troubleshoot a Container That Will Not Start ==&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct start 110 --debug&lt;br /&gt;
&lt;br /&gt;
pct config 110&lt;br /&gt;
&lt;br /&gt;
pvesm status&lt;br /&gt;
&lt;br /&gt;
journalctl -xe&lt;br /&gt;
&lt;br /&gt;
journalctl -xe | grep 110&lt;br /&gt;
&lt;br /&gt;
df -h&lt;br /&gt;
&lt;br /&gt;
zpool status&lt;br /&gt;
&lt;br /&gt;
zfs list&lt;br /&gt;
&lt;br /&gt;
pvs&lt;br /&gt;
&lt;br /&gt;
vgs&lt;br /&gt;
&lt;br /&gt;
lvs&lt;br /&gt;
&lt;br /&gt;
The container configuration is normally stored under:&lt;br /&gt;
&lt;br /&gt;
text&lt;br /&gt;
&lt;br /&gt;
/etc/pve/lxc/110.conf  &lt;br /&gt;
&lt;br /&gt;
== 23. Troubleshoot Network Connectivity ==&lt;br /&gt;
From the host:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
ping 192.168.10.110&lt;br /&gt;
&lt;br /&gt;
pct config 110&lt;br /&gt;
&lt;br /&gt;
Inside the container:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
ip address&lt;br /&gt;
&lt;br /&gt;
ip route&lt;br /&gt;
&lt;br /&gt;
cat /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
ping 192.168.10.1&lt;br /&gt;
&lt;br /&gt;
ping 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
getent hosts example.com&lt;br /&gt;
&lt;br /&gt;
curl -I &amp;lt;nowiki&amp;gt;https://example.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check the interface, IP address, gateway, external routing, DNS, VLAN, bridge, and firewall rules in that order.  &lt;br /&gt;
&lt;br /&gt;
== 24. Use Nesting Only When Required ==&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct set 110 --features nesting=1&lt;br /&gt;
&lt;br /&gt;
Nesting may be required for Docker, Podman, some build systems, and certain sandboxing tools. It expands access to kernel-related interfaces and can reduce isolation.  &lt;br /&gt;
&lt;br /&gt;
== 25. Decide How to Run Docker ==&lt;br /&gt;
&lt;br /&gt;
=== Option 1: Docker in a virtual machine ===&lt;br /&gt;
text&lt;br /&gt;
&lt;br /&gt;
Proxmox host&lt;br /&gt;
&lt;br /&gt;
└── Linux virtual machine&lt;br /&gt;
&lt;br /&gt;
   └── Docker Engine&lt;br /&gt;
&lt;br /&gt;
       ├── Application container&lt;br /&gt;
&lt;br /&gt;
       ├── Database container&lt;br /&gt;
&lt;br /&gt;
       └── Proxy container&lt;br /&gt;
&lt;br /&gt;
This is usually the safest general recommendation for production Docker deployments.&lt;br /&gt;
&lt;br /&gt;
=== Option 2: Docker in an LXC container ===&lt;br /&gt;
text&lt;br /&gt;
&lt;br /&gt;
Proxmox host&lt;br /&gt;
&lt;br /&gt;
└── LXC system container&lt;br /&gt;
&lt;br /&gt;
   └── Docker Engine&lt;br /&gt;
&lt;br /&gt;
       └── Application containers&lt;br /&gt;
&lt;br /&gt;
This uses fewer resources but adds complexity around nesting, storage drivers, networking, AppArmor, cgroups, and device access.&lt;br /&gt;
&lt;br /&gt;
=== Option 3: Docker directly on the Proxmox host ===&lt;br /&gt;
This is generally discouraged because Docker can alter firewall behavior, bridges, packet-filtering rules, storage configuration, and upgrade behavior.  &lt;br /&gt;
&lt;br /&gt;
== 26. Apply Container Security Practices ==&lt;br /&gt;
1.         Prefer unprivileged containers.&lt;br /&gt;
&lt;br /&gt;
2.         Keep Proxmox VE updated.&lt;br /&gt;
&lt;br /&gt;
3.         Keep container operating systems updated.&lt;br /&gt;
&lt;br /&gt;
4.         Use SSH keys instead of passwords.&lt;br /&gt;
&lt;br /&gt;
5.         Disable unnecessary services.&lt;br /&gt;
&lt;br /&gt;
6.         Restrict management access by network.&lt;br /&gt;
&lt;br /&gt;
7.         Enable appropriate firewall rules.&lt;br /&gt;
&lt;br /&gt;
8.         Avoid exposing the Proxmox interface directly to the Internet.&lt;br /&gt;
&lt;br /&gt;
9.         Use multifactor authentication for administrators.&lt;br /&gt;
&lt;br /&gt;
10.      Back up container data.&lt;br /&gt;
&lt;br /&gt;
11.      Test restores.&lt;br /&gt;
&lt;br /&gt;
12.      Do not mount sensitive host directories into containers.&lt;br /&gt;
&lt;br /&gt;
13.      Avoid unnecessary nesting.&lt;br /&gt;
&lt;br /&gt;
14.      Avoid privileged containers unless technically required.&lt;br /&gt;
&lt;br /&gt;
15.      Use separate containers for unrelated services.&lt;br /&gt;
&lt;br /&gt;
16.      Monitor logs and resource usage.&lt;br /&gt;
&lt;br /&gt;
17.      Use a VM for untrusted code or workloads requiring stronger isolation.  &lt;br /&gt;
&lt;br /&gt;
== 27. Maintain Containers ==&lt;br /&gt;
&lt;br /&gt;
=== Weekly tasks ===&lt;br /&gt;
•            Review failed Proxmox tasks.&lt;br /&gt;
&lt;br /&gt;
•            Review backup results.&lt;br /&gt;
&lt;br /&gt;
•            Check storage utilization.&lt;br /&gt;
&lt;br /&gt;
•            Review high CPU or memory usage.&lt;br /&gt;
&lt;br /&gt;
•            Check container service health.&lt;br /&gt;
&lt;br /&gt;
=== Monthly tasks ===&lt;br /&gt;
•            Install operating-system updates.&lt;br /&gt;
&lt;br /&gt;
•            Review firewall rules.&lt;br /&gt;
&lt;br /&gt;
•            Review user accounts and SSH keys.&lt;br /&gt;
&lt;br /&gt;
•            Review available disk space.&lt;br /&gt;
&lt;br /&gt;
•            Verify monitoring and alerts.&lt;br /&gt;
&lt;br /&gt;
•            Test at least one representative backup restore.&lt;br /&gt;
&lt;br /&gt;
=== Quarterly tasks ===&lt;br /&gt;
•            Review resource allocations.&lt;br /&gt;
&lt;br /&gt;
•            Remove obsolete snapshots.&lt;br /&gt;
&lt;br /&gt;
•            Review privileged containers.&lt;br /&gt;
&lt;br /&gt;
•            Review containers with nesting enabled.&lt;br /&gt;
&lt;br /&gt;
•            Review unsupported or end-of-life operating systems.&lt;br /&gt;
&lt;br /&gt;
•            Confirm documentation and recovery procedures.  &lt;br /&gt;
&lt;br /&gt;
== 28. Example Deployment: Create a Small Web Server ==&lt;br /&gt;
Use these example settings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Setting&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Value&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |CT ID&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |120&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Hostname&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |web01&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Template&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Current Debian template&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Unprivileged&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Yes&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Cores&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |2&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Memory&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |1 GB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Swap&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |512 MB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Root disk&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |8 GB&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |IP address&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |192.168.10.120/24&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Gateway&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |192.168.10.1&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Bridge&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |vmbr0&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Start at boot&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Yes&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Firewall&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Yes&lt;br /&gt;
|}&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
pct start 120&lt;br /&gt;
&lt;br /&gt;
pct enter 120&lt;br /&gt;
&lt;br /&gt;
apt update&lt;br /&gt;
&lt;br /&gt;
apt full-upgrade -y&lt;br /&gt;
&lt;br /&gt;
apt install nginx -y&lt;br /&gt;
&lt;br /&gt;
systemctl enable --now nginx&lt;br /&gt;
&lt;br /&gt;
systemctl status nginx&lt;br /&gt;
&lt;br /&gt;
ss -tulpn | grep :80&lt;br /&gt;
&lt;br /&gt;
curl &amp;lt;nowiki&amp;gt;http://127.0.0.1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test from another computer by opening:&lt;br /&gt;
&lt;br /&gt;
text&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://192.168.10.120&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure firewall access, add the container to the backup schedule, and document its purpose, owner, IP address, and recovery procedure.  &lt;br /&gt;
&lt;br /&gt;
== 29. Essential pct Command Reference ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Task&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Command&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |List containers&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  list&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Show status&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  status 110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Show configuration&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  config 110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Start&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  start 110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Graceful shutdown&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  shutdown 110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Stop immediately&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  stop 110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Reboot&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  reboot 110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Open console&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  console 110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Enter shell&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  enter 110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Set memory&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  set 110 --memory 4096&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Set CPU cores&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  set 110 --cores 4&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Enable startup&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  set 110 --onboot 1&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Create snapshot&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  snapshot 110 snapshot-name&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |List snapshots&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  listsnapshot 110&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Roll back snapshot&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  rollback 110 snapshot-name&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Delete snapshot&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  delsnapshot 110 snapshot-name&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Create backup&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |vzdump  110 --storage backup-storage&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Display help&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  help&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |Display command help&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |pct  help create&lt;br /&gt;
|}  &lt;br /&gt;
&lt;br /&gt;
== 30. Final Deployment Checklist ==&lt;br /&gt;
•            [ ] The workload is appropriate for LXC.&lt;br /&gt;
&lt;br /&gt;
•            [ ] An unprivileged container was used unless privilege is required.&lt;br /&gt;
&lt;br /&gt;
•            [ ] CPU and memory limits are reasonable.&lt;br /&gt;
&lt;br /&gt;
•            [ ] The root disk has adequate free space.&lt;br /&gt;
&lt;br /&gt;
•            [ ] Application data is stored appropriately.&lt;br /&gt;
&lt;br /&gt;
•            [ ] The IP address and hostname are documented.&lt;br /&gt;
&lt;br /&gt;
•            [ ] DNS resolution works.&lt;br /&gt;
&lt;br /&gt;
•            [ ] The operating system is updated.&lt;br /&gt;
&lt;br /&gt;
•            [ ] SSH keys are configured.&lt;br /&gt;
&lt;br /&gt;
•            [ ] Unnecessary services are disabled.&lt;br /&gt;
&lt;br /&gt;
•            [ ] Firewall rules are enabled and tested.&lt;br /&gt;
&lt;br /&gt;
•            [ ] Automatic startup is configured.&lt;br /&gt;
&lt;br /&gt;
•            [ ] Startup order is configured when dependencies exist.&lt;br /&gt;
&lt;br /&gt;
•            [ ] Monitoring is active.&lt;br /&gt;
&lt;br /&gt;
•            [ ] Scheduled backups are active.&lt;br /&gt;
&lt;br /&gt;
•            [ ] A restore has been tested.&lt;br /&gt;
&lt;br /&gt;
•            [ ] Temporary snapshots have been removed.&lt;br /&gt;
&lt;br /&gt;
•            [ ] The application owner and recovery procedure are documented.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Proxmox LXC containers provide an efficient way to run Linux server workloads with less overhead than complete virtual machines. Their efficiency comes from sharing the Proxmox host’s Linux kernel.&lt;br /&gt;
&lt;br /&gt;
A well-managed deployment begins by selecting the correct virtualization model. Use an unprivileged LXC container for ordinary trusted Linux services, a KVM virtual machine for stronger isolation or specialized operating-system requirements, and a dedicated Linux VM for most production Docker environments.&lt;br /&gt;
&lt;br /&gt;
Reliable container operations depend on more than creating the container. Administrators must also plan storage, networking, security, updates, monitoring, backups, and tested recovery procedures.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
Proxmox VE documentation: &amp;lt;nowiki&amp;gt;https://pve.proxmox.com/pve-docs/&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bftcpa606</name></author>
	</entry>
</feed>