This repository provides specialized development containers for Universal Blue projects. These containers include all the necessary tools, dependencies, and configurations needed for developing, building, and working with Universal Blue images and ISO distributions.
A comprehensive development environment for Universal Blue projects, built on Fedora with all essential tools pre-installed.
Use Cases:
- Developing Universal Blue images and configurations
- Building OCI container images with proper signing
- Working with rpm-ostree and bootc systems
- Container development with Podman/Buildah
- Shell scripting and automation
Key Tools Included:
- Container Tools: Podman, Buildah, Skopeo, Podman Machine
- Universal Blue Tools:
ublue-os-signing
- Universal Blue signing utilitiesbootc-base-imagectl
- Bootc image managementrpm-ostree
- Atomic host management
- Security & Signing:
cosign
- Container image signingsyft
- Software Bill of Materials generationsbsigntools
- Secure Boot signing
- Build Tools:
just
- Command runner (justfile support)golang-oras
- OCI registry clientyq
- YAML/JSON processor
- System Tools:
macadam
- Container machine managementerofs-utils
,zstd
- Filesystem utilitiestmux
,ShellCheck
,shfmt
- Development utilities
VSCode Extensions:
- GitHub Actions support
- GitHub Pull Request integration
- systemd syntax support
- Bash IDE with advanced shell scripting support
- Justfile syntax highlighting
Specialized container for building Titanoboa bootable ISOs, extending the base container with ISO creation tools.
Use Cases:
- Building Titanoboa installer ISOs
- Creating custom Universal Blue installer images
- UEFI/BIOS bootable media development
- Live system development
Additional Tools (beyond base container):
- ISO Creation:
xorriso
- ISO 9660 filesystem creation - Filesystem Tools:
squashfs-tools
- Compressed filesystem creationdosfstools
- FAT filesystem utilities
- Boot Management:
grub2
+ modules - GRUB bootloader (x86_64/aarch64)shim
- UEFI Secure Boot support
-
For Universal Blue Development:
{ "image": "ghcr.io/ublue-os/devcontainer:latest" }
-
For Titanoboa ISO Building:
{ "image": "ghcr.io/ublue-os/devcontainer:titanoboa", "privileged": true, "runArgs": ["--privileged"] }
# Base container for Universal Blue development
podman run -it --rm \
-v $(pwd):/workspace \
ghcr.io/ublue-os/devcontainer:latest
# Titanoboa container (requires privileged mode)
podman run -it --rm --privileged \
-v $(pwd):/workspace \
ghcr.io/ublue-os/devcontainer:titanoboa
Click the "Code" button on any Universal Blue repository and select "Create codespace on main" to automatically use the appropriate devcontainer.
The base container includes all tools needed for the standard Universal Blue development workflow:
# Clone your Universal Blue image repository
git clone https://github.com/your-org/your-ublue-image
cd your-ublue-image
# Build using the included tools
just build
just sign
Using the Titanoboa container for ISO creation:
# Clone Titanoboa
git clone https://github.com/ublue-os/titanoboa
cd titanoboa
# Build ISO (requires privileged container)
just build-iso
Both containers are built for multiple architectures:
- x86_64 (Intel/AMD 64-bit)
- aarch64 (ARM 64-bit)
The containers automatically detect the architecture and install appropriate tools (e.g., correct GRUB modules for the target platform).
- Images are signed with cosign using Universal Blue's signing infrastructure
- Secure Boot compatible tools included for creating signed bootable media
- SELinux policy targeted configuration included
- Pre-configured with popular VS Code extensions for Universal Blue development
- Shell completion and syntax highlighting for all included tools
- Optimized for container-in-container workflows with proper Podman configuration
- Default user:
ublue
(non-root for security) - Proper rootless container support with subuid/subgid configuration
- XDG_RUNTIME_DIR properly configured for user services
This repository follows Universal Blue's development practices:
- Pull Requests: All changes go through PR review
- Automated Building: GitHub Actions automatically builds and publishes containers
- Security: All images are signed and scanned for vulnerabilities
- Renovate: Dependencies are automatically updated via Renovate
To modify and test these containers locally:
# Clone the repository
git clone https://github.com/ublue-os/devcontainer
cd devcontainer
# Build base container
cd src/base
podman build -t local/ublue-devcontainer:base .
# Build Titanoboa container
cd ../titanoboa
podman build -t local/ublue-devcontainer:titanoboa .
- Documentation: Universal Blue Documentation
- Community: Universal Blue Discord
- Issues: Report issues in this repository's issue tracker
This project is part of the Universal Blue ecosystem. See individual component licenses for details.