sdme
github.com/fiorix/sdme

The systemd machine editor: a command line tool for managing systemd-nspawn booted containers on Linux.

Installation

curl -fsSL https://fiorix.github.io/sdme/install.sh | sudo sh

Installs a single static binary to /usr/local/bin/sdme. Auto-detects architecture (x86_64 / aarch64) and verifies SHA256 checksums. For .deb, .rpm, and .pkg packages, see downloads below.


Tutorials

Using sdme on macOS

Set up a Linux VM with lima-vm to run sdme on your Mac.

Your First Container

Create a container, manage it, and learn how to run background processes like tmux.

Using a Different Root Filesystem

Import other Linux distributions and create containers from them.

Day-to-Day Management

Essential commands for managing containers: listing, logs, copying files, and troubleshooting.

Running Long-Lived Services

Install and run services like nginx inside sdme containers.

Intro to Running OCI Applications

Import and run OCI application images like nginx as systemd services inside sdme containers.

Bind Mounts and OCI Volumes

Share files between host and containers using bind mounts and OCI volumes.

Running an OCI Database with Volumes

Run PostgreSQL with automatically managed OCI volumes that persist data across container removal and re-creation.

Network Configuration

Configure container networking: host network, private network, veth, zones, bridges, and port forwarding.

Multi-Container Pod Networking

Share a network namespace between containers so they communicate via localhost.

Running Kubernetes Pods

Deploy OCI applications from Kubernetes Pod YAML manifests.

Building Root Filesystems

Build custom root filesystems with sdme fs build using Dockerfile-like configs.


Documentation

Architecture and Design

How sdme works: overlayfs, systemd integration, OCI support, and Kubernetes pods.

Security

Container isolation, hardening tiers, OCI workload security, and Kubernetes pod security.