Post

Self-Hosting an AI Assistant: Part 1 - Ubuntu Server on a Zotac Mini PC

Installing Ubuntu Server 24.04 LTS on a Zotac CI323 Nano mini PC - the first step toward building my own WOPR.

Self-Hosting an AI Assistant: Part 1 - Ubuntu Server on a Zotac Mini PC

This is the first post in a series documenting my journey to self-host OpenClaw, an open-source autonomous AI assistant, on a small fanless mini PC. The goal: a 24/7 AI assistant I can chat with via Discord, running entirely on my own hardware.

I’m calling him Joshua. The machine he runs on? WOPR. If you get the reference, we’re going to get along fine.

The Hardware

I had a Zotac CI323 Nano sitting around. It’s an older barebones mini PC with an Intel Celeron N3150 (Braswell architecture), passive cooling (completely silent), dual Gigabit Ethernet, and support for up to 8GB DDR3L RAM. Perfect for a low-power always-on server that doesn’t sound like it’s planning thermonuclear war.

If you’re using a Braswell-based system (N3150, N3160, etc.), pay attention to the kernel issues below. This will save you hours.

Why Ubuntu Server 24.04 LTS

OpenClaw explicitly supports Ubuntu, and LTS means five years of security updates without major version churn. For an appliance-style box that should be boring and reliable, that’s exactly what I want.

The Kernel Problem

Created a bootable USB with the standard Ubuntu Server 24.04 ISO and hit F8 during boot to access the one-time boot menu. The installer started, then crashed.

The error looked like an application crash, not a kernel panic. Searching the logs for BUG revealed ACPI BIOS warnings, but the real issue was that Ubuntu’s Subiquity installer (a Python/snap-based installer) was choking on something hardware-related.

First attempt at a fix: boot parameters. Edit the boot entry with e at the GRUB menu and add nomodeset to the linux line:

1
linux /casper/vmlinuz ... quiet nomodeset ---

This tells the kernel to skip graphics mode-setting. Didn’t help in my case.

The Fix: HWE Kernel

The Ubuntu Server installer offers an option for “Ubuntu Server with HWE kernel” (Hardware Enablement). This uses a newer kernel backport that includes fixes for older hardware quirks.

Selected that option, and the installer completed without issues.

HWE kernel is the move for Braswell systems. The default 6.8 kernel has regressions; HWE (6.11+) handles it properly.

Installation Choices

Kept it minimal:

  • Hostname: wopr
  • Username: lightman
  • Storage: Use entire disk, no LVM needed for a single-purpose box
  • SSH: Yes, install OpenSSH server (critical for headless management)
  • Snaps: None selected, we’ll install what we need manually
  • Ubuntu Pro: Skipped

After reboot, pulled the USB and let it come up. Noted the IP address from the console and moved to SSH for everything else. Greetings, Professor Falken.

Key Commands Reference

Task Command
Boot menu (one-time) F8 during POST
BIOS setup DEL during POST
Add boot parameter e at GRUB, edit linux line
Boot with parameter F10 after editing

Next Up

With the base OS installed, the next post covers hardening the server: SSH key authentication, firewall setup, and unattended security updates. WOPR needs to be secure before Joshua wakes up.


This post was co-written with Claude, who helped troubleshoot the Braswell kernel issues in real-time and suggested the HWE kernel solution.

This post is licensed under CC BY 4.0 by the author.