#nspawn — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #nspawn, aggregated by home.social.
-
An almost hidden system inside systemd can run your containers.
#container #systemd #architecture #nspawn
https://silentarchitect.org/2026/08/your-hidden-container-engine.html
-
An almost hidden system inside systemd can run your containers.
#container #systemd #architecture #nspawn
https://silentarchitect.org/2026/08/your-hidden-container-engine.html
-
@ndreas once Podman/Docker add the corresponding support, this will work just fine, running containers inside nspawn:
https://github.com/systemd/systemd/blob/main/NEWS#L4573-L4599 -
@ndreas once Podman/Docker add the corresponding support, this will work just fine, running containers inside nspawn:
https://github.com/systemd/systemd/blob/main/NEWS#L4573-L4599 -
CW: tech, linux, networking, firewall
For a few weeks I had some strange errors with my self-hosted webmail, Snappymail. After working for some time it complained that it couldn't connect to tcp://mydomain.tld:143. My email clients worked, though. The situation got worse a few days ago when I updated the server and rebooted it.
My webmail is hosted in a systemd-nspawn system container. I use such containers for a lot of different services.
For debugging purposes I tried some telnet and openssl s_client stuff today but I've been on the wrong track with that. ping'ing from the webmail container already failed. There was something more fundamental amiss.
-
CW: tech, linux, networking, firewall
For a few weeks I had some strange errors with my self-hosted webmail, Snappymail. After working for some time it complained that it couldn't connect to tcp://mydomain.tld:143. My email clients worked, though. The situation got worse a few days ago when I updated the server and rebooted it.
My webmail is hosted in a systemd-nspawn system container. I use such containers for a lot of different services.
For debugging purposes I tried some telnet and openssl s_client stuff today but I've been on the wrong track with that. ping'ing from the webmail container already failed. There was something more fundamental amiss.
-
CW: tech, admin, nextcloud
Ich hatte ja fast vergessen, dass ich noch eine Nextcloud laufen habe, die als Server für eine Galerie einer Veranstaltung dient. Das Update von 28.0.5 bis hoch auf 31.0.4 verlief komplett unproblematisch (via Kommandozeile). Im Zuge dessen mal alle nspawn-Systemcontainer und den Host aktualisiert und neugestartet. Abgesehen davon, dass einer der Container nicht enabled war und der Keycloak-Service in einem anderen Container ebenfalls nicht, lief es komplett sauber durch.
Vielleicht kann ich das doch so langsam 😆
-
CW: tech, admin, nextcloud
Ich hatte ja fast vergessen, dass ich noch eine Nextcloud laufen habe, die als Server für eine Galerie einer Veranstaltung dient. Das Update von 28.0.5 bis hoch auf 31.0.4 verlief komplett unproblematisch (via Kommandozeile). Im Zuge dessen mal alle nspawn-Systemcontainer und den Host aktualisiert und neugestartet. Abgesehen davon, dass einer der Container nicht enabled war und der Keycloak-Service in einem anderen Container ebenfalls nicht, lief es komplett sauber durch.
Vielleicht kann ich das doch so langsam 😆
-
CW: tech, linux, forgejo, nspawn, podman
Because of my stupid curiosity I always try to achieve what other people do with a different toolset. People use LXC? I use systemd-nspawn. Docker? Nah, podman!
And today I setup Forgejo running in a systemd-nspawn container. I setup a second nspawn-container for the Forgejo runner.
It went as is to be expected. "Error: cannot ping the docker daemon. […]"
Of course I can't find anything regarding my special situation. 🤷
I got it working by overridng the podman.socket with SocketMode=0666 (default is 0660). Doesn't seem to be safe, though. After adding a group podman and adding the runner to this group the forgejo-runner.service also works with SocketGroup=podman.
-
CW: tech, linux, forgejo, nspawn, podman
Because of my stupid curiosity I always try to achieve what other people do with a different toolset. People use LXC? I use systemd-nspawn. Docker? Nah, podman!
And today I setup Forgejo running in a systemd-nspawn container. I setup a second nspawn-container for the Forgejo runner.
It went as is to be expected. "Error: cannot ping the docker daemon. […]"
Of course I can't find anything regarding my special situation. 🤷
I got it working by overridng the podman.socket with SocketMode=0666 (default is 0660). Doesn't seem to be safe, though. After adding a group podman and adding the runner to this group the forgejo-runner.service also works with SocketGroup=podman.
-
Trying to get a bit familiar with systemd-nspawn (little bit clumsy name) by following this article:
https://benjamintoll.com/2022/02/04/on-running-systemd-nspawn-containers/
Its a bit outdated, eg. `machinectl pull-raw ...` is `importctl pull-raw`, but it can be translated.
Trying to create an image using `mkosi` that then later can be started.
Overall aim is to start a firefox in a spawned container. Let's see...
-
The thing I hate about #Discourse is the need to use docker. Docker is a PITA to run in systemd-nspawn, and I guess #lxc, too. I would put much more energy into hosting my Discourse if I just could install it in my system containers without too much hassle.
Other than that, Discourse is great.
-
The thing I hate about #Discourse is the need to use docker. Docker is a PITA to run in systemd-nspawn, and I guess #lxc, too. I would put much more energy into hosting my Discourse if I just could install it in my system containers without too much hassle.
Other than that, Discourse is great.
-
Ok #systemd #nixos #nspawn container question.
On the host I've mounted a nfs share rw.
In a nixos container i've a bind mount of that nfs mount into another directory.
If I open a shell inside that container as root I see that nfs/bindmount rw. But all other users (if I look at their /proc/<pid>/mounts see that nfs share mounted as ro read-only ...
-
CW: tech, systemd-nspawn, network, ipv6
Ich habe auf meinem Server 2 #systemd-#nspawn-Container. Beiden habe ich ein IPVLAN-Interface konfiguriert und ihnen jeweils 1 IPv4-Adresse zugewiesen. Die sind erreichbar. Ich habe beiden auch jeweils 1 #IPv6-Adresse zugewiesen. Aber erreichbar ist nur 1 von 2 nspawn. Trotz identischer Konfiguration, so weit ich das überblicken kann. Der 2. Container ist heute dazugekommen, der 1. läuft seit Mai mit der Config. Es ist kein DNS-Problem, `ping` auf die IPv6-Adresse selbst sind 100% Paketverlust.
`tcpdump -n -i enp0s31f6 icmp6` auf der Host-Schnittstelle zeigt ICMP-Pakete für die 1. IPv6, aber nicht für die 2. IPv6. Beide sind Teil meines /64, die eine endet auf ::80, die andere auf ::81.
`ping` vom 2. nspawn ins Netz geht auch […]
-
CW: tech, systemd-nspawn, network, ipv6
Ich habe auf meinem Server 2 #systemd-#nspawn-Container. Beiden habe ich ein IPVLAN-Interface konfiguriert und ihnen jeweils 1 IPv4-Adresse zugewiesen. Die sind erreichbar. Ich habe beiden auch jeweils 1 #IPv6-Adresse zugewiesen. Aber erreichbar ist nur 1 von 2 nspawn. Trotz identischer Konfiguration, so weit ich das überblicken kann. Der 2. Container ist heute dazugekommen, der 1. läuft seit Mai mit der Config. Es ist kein DNS-Problem, `ping` auf die IPv6-Adresse selbst sind 100% Paketverlust.
`tcpdump -n -i enp0s31f6 icmp6` auf der Host-Schnittstelle zeigt ICMP-Pakete für die 1. IPv6, aber nicht für die 2. IPv6. Beide sind Teil meines /64, die eine endet auf ::80, die andere auf ::81.
`ping` vom 2. nspawn ins Netz geht auch […]
-
Alright , play time aka show off useless craps ... enjoy!
#linuxadmin #opensuse #fedora #systemd #nspawn #tool #opensource
-
Alright , play time aka show off useless craps ... enjoy!
#linuxadmin #opensuse #fedora #systemd #nspawn #tool #opensource
-
With Open Source IDE: #Lapce - https://lapce.dev/
and the ubiquity of #SystemD #nspawn #containers , It is possible to have a bloat-free workstation on #Linux
Just use the nspawn container to store all the dev-related packages and use the remote/SSH connection feature of Lapce to connect to those containers.
Your workstation will stay 'clean' relative to a situation if you had Java, Ruby, NodeJS, Python, Go and Rust all installed directly on the workstation.
-
With Open Source IDE: #Lapce - https://lapce.dev/
and the ubiquity of #SystemD #nspawn #containers , It is possible to have a bloat-free workstation on #Linux
Just use the nspawn container to store all the dev-related packages and use the remote/SSH connection feature of Lapce to connect to those containers.
Your workstation will stay 'clean' relative to a situation if you had Java, Ruby, NodeJS, Python, Go and Rust all installed directly on the workstation.
-
Creating Sandboxes with systemd-nspawn and debootstrap
Exploring new #Linux features is exciting, but it can be risky! I sometimes break my system while testing packages. To avoid this, I recently tried #systemd-nspawn with #debootstrap - it's a lightweight #container that works well for isolated testing.
#Debian users, this guide shows you how to get systemd-#nspawn up and running, no fuss.
Installing the packages
First things first, we need to install two packages:
systemd-containeranddebootstrap:sudo apt install systemd-container debootstrapdebootstrap lets you spin up a lightweight Debian right on your host, and systemd-container utilites such as systemd-nspawn and machinectl manage the OS in a lightweight container.
Create a Debian virtual machine
Let's generate a minimal Debian image called debian-testing with the following command:
sudo debootstrap --include=systemd,dbus stable /var/lib/machines/debian-testingTo verify successful installation, run
machinectl list-images. Look for 'debian-testing' in the output.Logging into virtual machine
Use the following command to start the debian-testing container.
sudo systemd-nspawn -D /var/lib/machines/debian-testingSince you're now inside your virtual machine, let's set a password for the root user. This will come in handy when you want to manage the container using machinectl.
To swiftly terminate the container, press the
Ctrl+]key combination three times in quick succession while inside the container.Running a graphical application in vm
To run graphical apps like Chromium within the container, we need to set up display sharing. First, gracefully shut down the container. Then, use this command to establish the connection:
xhost local:; sudo systemd-nspawn -E DISPLAY="$DISPLAY" -D /var/lib/machines/debian-testingNow that you're logged in, it's time to fire up Chromium! Just type the following commands to install and open it:
apt update apt install chromium chromium --no-sandboxReferences
- Tutorial: Systemd: The Adventure Continues - Lee Elston, The Linux Foundation: https://www.youtube.com/watch?v=-Tijw1SIXts. Slides: https://ossna2020.sched.com/event/c47t/tutorial-systemd-the-adventure-continues-lee-elston-the-linux-foundation
- https://wiki.debian.org/nspawn
- https://man7.org/linux/man-pages/man1/systemd-nspawn.1.html
- https://wiki.archlinux.org/title/Systemd-nspawn#Avoiding_xhost
- https://wiki.archlinux.org/title/systemd-nspawn
- https://man7.org/linux/man-pages/man1/machinectl.1.html
-
Creating Sandboxes with systemd-nspawn and debootstrap
Exploring new #Linux features is exciting, but it can be risky! I sometimes break my system while testing packages. To avoid this, I recently tried #systemd-nspawn with #debootstrap - it's a lightweight #container that works well for isolated testing.
#Debian users, this guide shows you how to get systemd-#nspawn up and running, no fuss.
Installing the packages
First things first, we need to install two packages:
systemd-containeranddebootstrap:sudo apt install systemd-container debootstrapdebootstrap lets you spin up a lightweight Debian right on your host, and systemd-container utilites such as systemd-nspawn and machinectl manage the OS in a lightweight container.
Create a Debian virtual machine
Let's generate a minimal Debian image called debian-testing with the following command:
sudo debootstrap --include=systemd,dbus stable /var/lib/machines/debian-testingTo verify successful installation, run
machinectl list-images. Look for 'debian-testing' in the output.Logging into virtual machine
Use the following command to start the debian-testing container.
sudo systemd-nspawn -D /var/lib/machines/debian-testingSince you're now inside your virtual machine, let's set a password for the root user. This will come in handy when you want to manage the container using machinectl.
To swiftly terminate the container, press the
Ctrl+]key combination three times in quick succession while inside the container.Running a graphical application in vm
To run graphical apps like Chromium within the container, we need to set up display sharing. First, gracefully shut down the container. Then, use this command to establish the connection:
xhost local:; sudo systemd-nspawn -E DISPLAY="$DISPLAY" -D /var/lib/machines/debian-testingNow that you're logged in, it's time to fire up Chromium! Just type the following commands to install and open it:
apt update apt install chromium chromium --no-sandboxReferences
- Tutorial: Systemd: The Adventure Continues - Lee Elston, The Linux Foundation: https://www.youtube.com/watch?v=-Tijw1SIXts. Slides: https://ossna2020.sched.com/event/c47t/tutorial-systemd-the-adventure-continues-lee-elston-the-linux-foundation
- https://wiki.debian.org/nspawn
- https://man7.org/linux/man-pages/man1/systemd-nspawn.1.html
- https://wiki.archlinux.org/title/Systemd-nspawn#Avoiding_xhost
- https://wiki.archlinux.org/title/systemd-nspawn
- https://man7.org/linux/man-pages/man1/machinectl.1.html
-
I only discovered nspawn today as an alternative to LXC. Been having some hiccups installing it, but it seems like a very niche Linux topic for creating local test/debug containers.
Trying to make debootstrap work with `nspctl` ( management tool for systemd-nspawn containers).
-
I only discovered nspawn today as an alternative to LXC. Been having some hiccups installing it, but it seems like a very niche Linux topic for creating local test/debug containers.
Trying to make debootstrap work with `nspctl` ( management tool for systemd-nspawn containers).
-
@nobodyinperson have you heard from our Lord & Saviour systemd-nspawn? 😁
That's basically chroot on steroids and allows to enter an OS' filesystem/disk image comparable to chroot, but properly namespaced and without all the "mount dev/proc/...“ dance.
Furthermore it also allows to fully boot such an environment (-b) with a systemd instance running inside, while everything can be controlled nicely from the outside using the -M flag of systemctl/journalctl/... -
@nobodyinperson have you heard from our Lord & Saviour systemd-nspawn? 😁
That's basically chroot on steroids and allows to enter an OS' filesystem/disk image comparable to chroot, but properly namespaced and without all the "mount dev/proc/...“ dance.
Furthermore it also allows to fully boot such an environment (-b) with a systemd instance running inside, while everything can be controlled nicely from the outside using the -M flag of systemctl/journalctl/... -
-
After a while of doing this, I managed to get the system working properly. #systemd boots the container via #nspawn which runs a minimal #debian image and acts as a router and firewall, allowing the host to be a desktop machine and the second LAN device to connect to a switch, and provide further local network. All set up from a machine originally running windows without me once touching the machine. Remote sysadmin achievement unlocked.
-
After a while of doing this, I managed to get the system working properly. #systemd boots the container via #nspawn which runs a minimal #debian image and acts as a router and firewall, allowing the host to be a desktop machine and the second LAN device to connect to a switch, and provide further local network. All set up from a machine originally running windows without me once touching the machine. Remote sysadmin achievement unlocked.
-
At the moment it clearly boots the #nspawn container and moves the two Ethernet interfaces into the container. It also sets up an extra #veth pair, but for some reason I can't raise the veth pair, "ip link dev lan set up" from the host OS leaves the veth "lan" in the DOWN state... Wth? I think if I could get that veth up id be able to remote log in through #yggdrasil connection.
-
At the moment it clearly boots the #nspawn container and moves the two Ethernet interfaces into the container. It also sets up an extra #veth pair, but for some reason I can't raise the veth pair, "ip link dev lan set up" from the host OS leaves the veth "lan" in the DOWN state... Wth? I think if I could get that veth up id be able to remote log in through #yggdrasil connection.
-
happy to find out that #systemd #nspawn supports multiple #container network interfaces after all.
VirtualEthernetExtra=host-if-name:container-if-name
which can easily be configured using /etc/systemd/network/
and depended on using a drop-in unit file
-
I have also published the slides of my #systemd #nspawn talk: https://blog.lieter.nl/presentations/plexis-NLUUG-fall-2019-systemd-nspawn.pdf