# Setup LXC on debian 10 Install packages and add unprivileged user ``` apt install lxc libvirt0 libpam-cgfs bridge-utils uidmap useradd lxcuser cat /etc/s*id|grep lxcuser ``` Put the following in /etc/default/lxc-net ``` USE_LXC_BRIDGE="true" ``` Put the following in /etc/lxc/default.conf ``` lxc.idmap = u 0 lxc.idmap = g 0 lxc.mount.auto = proc:mixed sys:ro cgroup:mixed lxc.apparmor.profile = unconfined lxc.apparmor.allow_nesting = 1 lxc.net.0.type = veth lxc.net.0.link = lxcbr0 lxc.net.0.flags = up lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx ``` Give root acces to unprivileged user space ``` echo "root::" >> /etc/subuid echo "root::" >> /etc/subgid ``` Enable and start lxc network service ``` systemctl enable --now lxc-net ``` enable unprivileged user namespaces for kernels < 5.10 ``` echo kernel.unprivileged_userns_clone=1 >> /etc/sysctl.conf sysctl -p ``` # Extra config KB * Create Container `lxc-create -t download -n -- -d debian -r buster -a amd64` * Container config `/var/lib/lxc//config` * add to Container config to start on boot `lxc.start.auto = 1` * add to Container config for static ip ``` lxc.net.0.ipv4.address = 10.0.3./24 lxc.net.0.ipv4.gateway = 10.0.3.1 ``` # UFW forwarding also dont forget to add the extenal port as allow rule add to /etc/ufw/before.rules to begin of file before *filter ``` *nat :PREROUTING ACCEPT [0:0] -A PREROUTING -i enp0s3 -p tcp --dport -j DNAT --to : COMMIT ``` to end of file before last COMMIT ``` #LXC forwards -A FORWARD -o lxcbr0 -j ACCEPT -A FORWARD -i lxcbr0 -j ACCEPT ```