Flux Node LXC Permission Fix

Please follow these instructions to fix permission errors when using LXC containers for your Flux Nodes.

On the host machine follow these instructions
nano /etc/default/grub
locate line GRUB_CMDLINE_LINUX_DEFAULT=""
add max_loop=255  example GRUB_CMDLINE_LINUX_DEFAULT="max_loop=255"
if there is already some value add max_loop=255  after , 
example GRUB_CMDLINE_LINUX_DEFAULT="something max_loop=255"
save
execute :  update-grub
reboot server (required)

Then you need to make sure you have the appropriate loop entries in your config file. Each loop (line) allows the node to install one dapp (excluding loops what is already used for Node. LXC by default restricts the config to only loop0 to loop6. You will need to add additional loops to the config.

On the host machine follow these instructions

edit container config
nano /etc/pve/lxc/xxxx.conf
add the following lines

lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.cgroup2.devices.allow: b 7:* rwm
lxc.cgroup2.devices.allow: c 10:237 rwm
lxc.mount.entry: /dev/loop0 dev/loop0 none bind,create=file 0 0
lxc.mount.entry: /dev/loop1 dev/loop1 none bind,create=file 0 0
lxc.mount.entry: /dev/loop2 dev/loop2 none bind,create=file 0 0
lxc.mount.entry: /dev/loop3 dev/loop3 none bind,create=file 0 0
lxc.mount.entry: /dev/loop4 dev/loop4 none bind,create=file 0 0
lxc.mount.entry: /dev/loop5 dev/loop5 none bind,create=file 0 0
lxc.mount.entry: /dev/loop6 dev/loop6 none bind,create=file 0 0
lxc.mount.entry: /dev/loop7 dev/loop7 none bind,create=file 0 0
lxc.mount.entry: /dev/loop8 dev/loop8 none bind,create=file 0 0
lxc.mount.entry: /dev/loop9 dev/loop9 none bind,create=file 0 0
lxc.mount.entry: /dev/loop10 dev/loop10 none bind,create=file 0 0
lxc.mount.entry: /dev/loop11 dev/loop11 none bind,create=file 0 0
lxc.mount.entry: /dev/loop12 dev/loop12 none bind,create=file 0 0
lxc.mount.entry: /dev/loop13 dev/loop13 none bind,create=file 0 0
lxc.mount.entry: /dev/loop14 dev/loop14 none bind,create=file 0 0
lxc.mount.entry: /dev/loop15 dev/loop15 none bind,create=file 0 0
lxc.mount.entry: /dev/loop16 dev/loop16 none bind,create=file 0 0
lxc.mount.entry: /dev/loop17 dev/loop17 none bind,create=file 0 0
lxc.mount.entry: /dev/loop18 dev/loop18 none bind,create=file 0 0
lxc.mount.entry: /dev/loop19 dev/loop19 none bind,create=file 0 0
lxc.mount.entry: /dev/loop20 dev/loop20 none bind,create=file 0 0
lxc.mount.entry: /dev/loop21 dev/loop21 none bind,create=file 0 0
lxc.mount.entry: /dev/loop22 dev/loop22 none bind,create=file 0 0
lxc.mount.entry: /dev/loop23 dev/loop23 none bind,create=file 0 0
lxc.mount.entry: /dev/loop24 dev/loop24 none bind,create=file 0 0
lxc.mount.entry: /dev/loop25 dev/loop25 none bind,create=file 0 0
lxc.mount.entry: /dev/loop26 dev/loop26 none bind,create=file 0 0
lxc.mount.entry: /dev/loop27 dev/loop27 none bind,create=file 0 0
lxc.mount.entry: /dev/loop28 dev/loop28 none bind,create=file 0 0
lxc.mount.entry: /dev/loop29 dev/loop29 none bind,create=file 0 0
lxc.mount.entry: /dev/loop30 dev/loop30 none bind,create=file 0 0
lxc.mount.entry: /dev/loop31 dev/loop31 none bind,create=file 0 0
lxc.mount.entry: /dev/loop32 dev/loop32 none bind,create=file 0 0
lxc.mount.entry: /dev/loop33 dev/loop33 none bind,create=file 0 0
lxc.mount.entry: /dev/loop34 dev/loop34 none bind,create=file 0 0
lxc.mount.entry: /dev/loop35 dev/loop35 none bind,create=file 0 0
lxc.mount.entry: /dev/loop36 dev/loop36 none bind,create=file 0 0
lxc.mount.entry: /dev/loop37 dev/loop37 none bind,create=file 0 0
lxc.mount.entry: /dev/loop38 dev/loop38 none bind,create=file 0 0
lxc.mount.entry: /dev/loop39 dev/loop39 none bind,create=file 0 0
lxc.mount.entry: /dev/loop40 dev/loop40 none bind,create=file 0 0
lxc.mount.entry: /dev/loop41 dev/loop41 none bind,create=file 0 0
lxc.mount.entry: /dev/loop42 dev/loop42 none bind,create=file 0 0
lxc.mount.entry: /dev/loop43 dev/loop43 none bind,create=file 0 0
lxc.mount.entry: /dev/loop44 dev/loop44 none bind,create=file 0 0
lxc.mount.entry: /dev/loop45 dev/loop45 none bind,create=file 0 0
lxc.mount.entry: /dev/loop46 dev/loop46 none bind,create=file 0 0
lxc.mount.entry: /dev/loop47 dev/loop47 none bind,create=file 0 0
lxc.mount.entry: /dev/loop48 dev/loop48 none bind,create=file 0 0
lxc.mount.entry: /dev/loop49 dev/loop49 none bind,create=file 0 0
lxc.mount.entry: /dev/loop50 dev/loop50 none bind,create=file 0 0
lxc.mount.entry: /dev/loop51 dev/loop51 none bind,create=file 0 0
lxc.mount.entry: /dev/loop52 dev/loop52 none bind,create=file 0 0
lxc.mount.entry: /dev/loop53 dev/loop53 none bind,create=file 0 0
lxc.mount.entry: /dev/loop54 dev/loop54 none bind,create=file 0 0
lxc.mount.entry: /dev/loop55 dev/loop55 none bind,create=file 0 0
lxc.mount.entry: /dev/loop56 dev/loop56 none bind,create=file 0 0
lxc.mount.entry: /dev/loop57 dev/loop57 none bind,create=file 0 0
lxc.mount.entry: /dev/loop58 dev/loop58 none bind,create=file 0 0
lxc.mount.entry: /dev/loop59 dev/loop59 none bind,create=file 0 0
lxc.mount.entry: /dev/loop60 dev/loop60 none bind,create=file 0 0
lxc.mount.entry: /dev/loop61 dev/loop61 none bind,create=file 0 0
lxc.mount.entry: /dev/loop62 dev/loop62 none bind,create=file 0 0
lxc.mount.entry: /dev/loop63 dev/loop63 none bind,create=file 0 0
lxc.mount.entry: /dev/loop-control dev/loop-control none bind,create=file 0 0

-------------------------------------------------------------------------------------
Then save the file.

Back on the Promoxmox GUI
Backup the CT
Delete the CT
Restore CT from backup , with privileged option (or uncheck unprivileged)
Start the CT

When you are restoring the CT please be sure to select the privileged box/button.

When you are creating a container make sure to uncheck the Unprivileged box.

To check the number of Dev Loops please run this command.

ls -l /dev/loop*

Last updated