Chapters: 

🧭 Mission Summary: “Rescue-Desktop v1”

  • Camelot containerized XFCE desktop
  • TigerVNC + SSH pairing works
  • Frodo connects and sees actual GUI (xterm running)
  • Containerized environment is light and runs clean
  • Fedora base image (replaced Fedora 39 with newer)
  • We did not discard SSH — we enhanced it
  • Container is “headful” even though Camelot is now headless

🧰 What's In (v1)

  • xfce4-* packages (core GUI)
  • tigervnc-server
  • xterm
  • mc
  • wget, curl ← ✅ confirmed keepers
  • .vnc/xstartup launching xterm directly
  • Port 5901 exposed (but adaptable)

🧪 Next (Not Today)

🐿️ Squirrels back in tree. These are deferred, not discarded.

  • Add-on container for DevTools (Codex-adjacent)
  • Lightweight browser (Midori?)
  • Git, Meld, Mousepad — dev-UX polish
  • Volume mounting or NFS hook-in for shared workspaces
  • Possible shift from vncserver to systemd unit (modern VNC pattern)

✍️ Publishing Prep (when you're ready)

  • Containerfile → GitHub
  • Tagged release → rescue-desktop:v1
  • README draft (VNC setup, login info, host/port)
  • Optional: podman-compose bundle, or service wrapper

Take a break. Frodo is chill. Camelot is running a remote GUI like it’s the 90s. And nothing’s on fire. Let’s call that a win. 😄 


mc is back!

# Dockerfile for a Rescue Desktop (XFCE + TigerVNC + Midnight Commander)
# Purpose: Drop-in GUI toolkit for remote admin, debugging, or recovery

FROM fedora:42

# Install basic GUI + VNC tools
RUN dnf install -y \
    tigervnc-server \
    xfce4-panel \
    xfce4-session \
    xfce4-settings \
    xfdesktop \
    thunar \
    xterm \
    mc \
    dbus-x11 \
    fontconfig \
    sudo \
    passwd \
    && dnf clean all

# Create user
RUN useradd -m vncuser && echo "vncuser:vncpass" | chpasswd

USER vncuser
WORKDIR /home/vncuser

# VNC startup config
RUN mkdir -p ~/.vnc \
    && echo "#!/bin/sh\nstartxfce4 &" > ~/.vnc/xstartup \
    && chmod +x ~/.vnc/xstartup

# Expose the VNC port
EXPOSE 5901

# Startup script
CMD ["/bin/sh", "-c", "vncserver :1 -geometry 1280x800 -SecurityTypes None && tail -f /dev/null"]

🚀 To Build and Run:

podman build -t rescue-desktop .
podman run -d -p 5901:5901 rescue-desktop

Then from Frodo or any LAN box:

vncviewer <container-host-IP>:1

🔄 Customize Later?

You can:

  • Add your .ssh keys to /home/vncuser/.ssh/authorized_keys
  • Map a volume for config or tools
  • Change to xterm-only or add other GUI tools like gparted, meld, mousepad

Let me know if you want:

  • A docker-compose.yml
  • A pre-made start-vnc.sh for Podman or systemd

You're building first, then seeing — and this build will show you everything you need to decide if it's worth keeping.

Exactly — and yes, you can absolutely run the GUI only from remote and skip startx entirely on Camelot.

That’s what the VNC container with XFCE is built for: a fully remote GUI experience, cleanly detached from the local hardware, display :0, or startx.


✅ If You Want to Fully Move GUI to Remote:

  1. SSH into Camelot

    ssh tux@10.20.30.1
  2. Stop the local X session

    sudo pkill -u tux startx
    # or if you’re running from a tty:
    Ctrl+C from inside startx
  3. Ensure no display is active

    echo $DISPLAY
    ps aux | grep X
  4. Run your VNC container
    If you’ve already pasted the Dockerfile and built the image:

    podman run -d -p 5901:5901 rescue-desktop

    Or if you need to build it first:

    mkdir -p ~/rescue-desktop && cd ~/rescue-desktop
    nano Dockerfile   # paste in the file
    podman build -t rescue-desktop .
    podman run -d -p 5901:5901 rescue-desktop
  5. From Frodo

    vncviewer 10.20.30.1:1

And now:

  • Your only GUI is remote
  • Camelot stays lean
  • Frodo gets a private desktop session
  • You don’t need to startx unless you're at the console


Rescue Desktop container: Fedora-based, minimal XFCE, TigerVNC, and Midnight Commander preloaded.

🧰 What's Inside

  • xfce4 → lightweight GUI desktop
  • mc → your trusted old friend
  • tigervnc-server → for remote GUI access
  • Exposes port 5901 so you can connect with vncviewer
  • Default user: vncuser / password: vncpass
  • VNC display: :1 (i.e., port 5901)

🚀 To Build and Run:

podman build -t rescue-desktop .
podman run -d -p 5901:5901 rescue-desktop

Then from Frodo or any LAN box:

vncviewer <container-host-IP>:1

We're building first, then seeing — and this build will show us everything we need to decide if it's worth keeping.

 




 

--> 628583effdbe
STEP 3/8: RUN useradd -m vncuser && echo "vncuser:vncpass" | chpasswd
--> 29f7ab8c4373
STEP 4/8: USER vncuser
--> 06af0520db9a
STEP 5/8: WORKDIR /home/vncuser
--> a135cef6bb26
STEP 6/8: RUN mkdir -p ~/.vnc     && echo "#!/bin/sh\nstartxfce4 &" > ~/.vnc/xstartup     && chmod +x ~/.vnc/xstartup
--> 9d48e4864410
STEP 7/8: EXPOSE 5901
--> 846152004993
STEP 8/8: CMD ["/bin/sh", "-c", "vncserver :1 -geometry 1280x800 -SecurityTypes None && tail -f /dev/null"]
COMMIT rescue-desktop
--> 8dd9ad30aab2
Successfully tagged localhost/rescue-desktop:latest
8dd9ad30aab201514406116b43217b5b92a39cc82d242c18d787f7e7d043f036