Proxmox Linux Container: Difference between revisions
imported>ThinkChaos Make it clearer where to find the system tarball |
Add note to only run /run/current-system/activate when no commands can be found, e.g. ls. |
||
(11 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{outdated|See [[Proxmox]] for instructions that apply to more recent versions of nixpkgs and proxmox.}} | |||
= Building Proxmox Linux Containers with Nix = | |||
You can use 'make-system-tarball' to create a Linux Container that can run on Proxmox, for example like https://codeberg.org/raboof/nix-mastodon-bot/src/branch/main/default.nix#L31 | |||
= NixOS = | |||
With a small amount of work, it is possible to use NixOS as a LXC container under Proxmox. | With a small amount of work, it is possible to use NixOS as a LXC container under Proxmox. | ||
== Generate a container tarball == | |||
A better way to deploy a NixOS container tarball on Proxmox is described at [[Proxmox Virtual Environment#LXC]]. | |||
== Finding a container tarball == | == Finding a container tarball == | ||
Line 9: | Line 20: | ||
<pre> | <pre> | ||
mv nixos-system-x86_64-linux.tar.xz nixos-$RELEASE-default_$ | mv nixos-system-x86_64-linux.tar.xz nixos-${RELEASE}-default_${BUILDID}_amd64.tar.xz | ||
</pre> | </pre> | ||
Line 27: | Line 38: | ||
pct create 99999 \ | pct create 99999 \ | ||
--description nixos-template \ | --description nixos-template \ | ||
local:vztmpl/nixos-$RELEASE-default_$ | local:vztmpl/nixos-${RELEASE}-default_${BUILDID}_amd64.tar.xz \ | ||
-ostype unmanaged \ | -ostype unmanaged \ | ||
-net0 name=eth0 \ | -net0 name=eth0 \ | ||
Line 38: | Line 49: | ||
The last step using the CLI, edit <tt>/etc/pve/lxc/99999.conf</tt> to add this line: | The last step using the CLI, edit <tt>/etc/pve/lxc/99999.conf</tt> to add this line: | ||
<pre> | |||
lxc.init.cmd: /sbin/init | |||
</pre> | |||
Before NixOS version 21.11 it was | |||
<pre> | <pre> | ||
lxc.init.cmd: /init | lxc.init.cmd: /init | ||
</pre> | </pre> | ||
. | |||
=== Creating a template === | === Creating a template === | ||
Line 48: | Line 64: | ||
To create a new NixOS container, you can then clone the template instead of doing the preceding steps. | To create a new NixOS container, you can then clone the template instead of doing the preceding steps. | ||
== Expected issues == | |||
=== Entering the container by <code>pct enter</code> === | |||
enter a (nixos) container from the proxmox host | |||
: <syntaxhighlight lang="shell">[root@proxmox:~]# pct enter <vmid></syntaxhighlight> | |||
: <syntaxhighlight lang="shell">sh-5.2#</syntaxhighlight> | |||
== | : <s>set (missing) environment variables</s> | ||
:: <s><syntaxhighlight lang="shell">sh-5.2# source /etc/set-environment</syntaxhighlight></s> | |||
:: <s><syntaxhighlight lang="shell">sh-5.2#</syntaxhighlight></s> | |||
or | |||
: set (missing) environment variables with <code>[[wikipedia:en:dot (command)#source|.]]</code> | |||
:: <syntaxhighlight lang="shell">sh-5.2# . /etc/profile</syntaxhighlight> | |||
:: <syntaxhighlight lang="bash">[root@nixos:~]#</syntaxhighlight> | |||
If commands (like ls) still can't be found, try running: | |||
:: <syntaxhighlight lang="shell"> | |||
[root@nixos:~] /run/current-system/activate | |||
</syntaxhighlight> | |||
<!-- | |||
or | |||
: set (missing) environment variables by opening a new shell | |||
:: <syntaxhighlight lang="shell">sh-5.2# sh -l</syntaxhighlight> | |||
:: <syntaxhighlight lang="bash">[root@nixos:~]#</syntaxhighlight> | |||
--> | |||
=== nixos-rebuild switch === | |||
<code>nixos-rebuild switch</code> may fail with errors for special mount points. This does not look like it affects the container. | <code>nixos-rebuild switch</code> may fail with errors for special mount points. This does not look like it affects the container. | ||
Line 69: | Line 108: | ||
warning: error(s) occurred while switching to the new configuration | warning: error(s) occurred while switching to the new configuration | ||
</pre> | </pre> | ||
=== Black Console in Proxmox === | |||
The Proxmox console may appear black when launched. It is at the login prompt but no existing text is rendered. Just type "root" and hit enter and new text will get rendered just fine. If you are still unable to get the console to render, you can try changing the console to `/dev/console` instead of the standard tty. |