niklas‑stephan.de

Metis is a headless server (desktop environment removed)

Last updated 05/11/2026 · metis, desktop, gnome, headless, kiosk, snapd, ubuntu

Current state (verified 2026-10-20)

Metis no longer has any desktop environment - it runs only the docker services, like the other servers. Rebooted afterwards: multi-user.target, systemctl --failed empty, HA :8123 200, llama :8000 200, backrest + tailscale containers up.

  • Boot: sudo systemctl set-default multi-user.target; dangling /etc/systemd/system/display-manager.service symlink deleted; /etc/gdm3 deleted.
  • Removed (apt): ubuntu-desktop-minimal, gdm3, gnome-shell + gnome-settings-daemon/control-center/nautilus/papers/yelp/gnome-keyring, all of xfce4, lxqt*, labwc, xorg/xserver-xorg*/xwayland/xinit/x11-common/x11-utils, pipewire/wireplumber/pavucontrol + pulseaudio libs, xdg-desktop-portal*, rygel, thunar, icon themes, plus orphaned media cruft (mpv, audacious, smplayer, yt-dlp, screengrab, quassel, meteo-qt, qpdfview, kdump-tools, printer drivers, cups/gvfs/udisks2). ~1400 -> 1303 packages.
  • Snaps removed: firefox, thunderbird, snap-store, snapd-desktop-integration, desktop-security-center, gnome-46-2404, gtk-common-themes, hwctl, mesa-2404, prompting-client, firmware-updater. Remaining: bare/core22/core24 + canonical-livepatch, so snapd must stay (it is the only thing still needing it; ~45 MiB RSS, 1.7 GiB of /var/lib/snapd of which 1.3 GiB is snapd’s metadata cache and 212 MiB snapshots of the removed snaps). apt-get remove snapd would also kill Ubuntu Pro kernel livepatch, which is supported for metis’s bleeding-edge 7.0.0-38 kernel - Niklas decides whether that is worth losing.
  • Deliberately kept: mesa-vulkan-drivers, libdrm-amdgpu1 (llama.cpp Vulkan), unattended-upgrades, cloud-init, initramfs-tools-core/initramfs-tools-bin/busybox-initramfs/klibc-utils (marked apt-mark manual so autoremove would not eat them), libxml2-dev, sanoid/dracut.
  • The kiosk (Home Assistant fullscreen) is gone by design; Niklas will rebuild it on iris after the servers swap positions. Install scripts and the labwc/GNOME notes are preserved in /data/maintenance/kiosk-session/ and memory iris-ha-kiosk.
  • Full pre-removal package list for reference/restore: /data/maintenance/desktop-removal/packages-before-2026-10-20.txt.

How it was done (for a repeat on another box)

sudo apt-mark manual unattended-upgrades cloud-init \
  initramfs-tools-core initramfs-tools-bin busybox-initramfs klibc-utils libklibc
sudo apt-get remove -y ubuntu-desktop-minimal xfce4 xfce4-power-manager xfce4-terminal labwc lxqt
sudo apt-get autoremove -y
# then purge the remaining gnome/xfce/lxqt/kde/xorg/pipewire/portal packages (rc leftovers):
sudo dpkg --purge <packages shown as "rc" by dpkg -l>
sudo systemctl set-default multi-user.target

Gotcha: after apt remove the packages still show in dpkg -l with status rc (config files left); use dpkg -l | awk '/^rc/ {print $2}' to spot them and dpkg --purge to clean.

Login-shell error bash: /usr/share/im-config/initializer: Datei oder Verzeichnis nicht gefunden (seen 2026-10-21): im-config was removed but not purged, so its /etc/profile.d/im-config_wayland.sh still sourced a deleted file. Fixed with sudo apt-get purge -y im-config. Same class of leftovers: on 2026-10-21 all 134 desktop-related rc packages (ibus, cups, bluez, xscreensaver, gtk/kf5 libs, icon themes …) were purged with dpkg --purge; health afterwards fine (no failed units, docker/HA/llama up). Deliberately kept as rc: old kernels/modules, grub-pc, memtest86+, kdump/kexec, ssl-cert, openvpn, sssd/libnss-*, avahi, systemd-oomd, acl, yt-dlp and a few doc packages.

Source: Wiki.js