UXC Container Packages

Lightweight OCI containers for OpenWrt, distributed as APK packages with squashfs images.

Device Setup

Before installing containers, set up uvol (volume management) on the device.

1. Install required packages

apk add autopart uvol lvm2 partx-utils sfdisk e2fsprogs \
    kmod-fs-ext4 kmod-fs-squashfs block-mount \
    uxc procd-ujail kmod-veth

2. Initialize storage

The device needs free disk space for LVM. For VMs, resize the image first (qemu-img resize image.img +4G), then fix the GPT table on the device:

sfdisk --relocate gpt-bak-std /dev/vda

Reboot after installing autopart — it will create the LVM partition automatically. Then set up the metadata volume:

uvol create .meta 4194304 rw
uvol up .meta
mkdir -p /tmp/run/uvol/.meta/apk
ln -sf ../../tmp/run/uvol/.meta/apk /lib/apk/db-uvol
touch /lib/apk/db-uvol/world

3. Add the container feed

# Download the public key
uclient-fetch -O /etc/apk/keys/uxc-public.pem https://aparcar.org/uxc-action/public-key.pem

# Add the feed (replace ARCH with your device architecture, e.g. aarch64_generic)
echo "https://aparcar.org/uxc-action/ARCH/packages.adb" >> /etc/apk/repositories
apk update

4. Install a container

apk add container-alpine
uxc list
uxc start alpine

Packages

aarch64_generic

Feed URL: https://aparcar.org/uxc-action/aarch64_generic/packages.adb

PackageSize
container-alpine-3.21.3.apk3.2M
container-debian-12.13.apk22M
container-homeassistant-2026.3.4.apk579M
container-pihole-2026.02.0.apk33M

x86_64

Feed URL: https://aparcar.org/uxc-action/x86_64/packages.adb

PackageSize
container-alpine-3.21.3.apk3.0M
container-debian-12.13.apk23M
container-homeassistant-2026.3.4.apk599M
container-pihole-2026.02.0.apk34M

Public Key

public-key.pem (ECDSA P-256)