A comprehensive setup guide for containerized remote development environments using LXD on Ubuntu, with NVIDIA GPU passthrough for CUDA development. Designed for developers who need access to high-performance computing resources from lightweight client machines.
- CUDA development from macOS - Access NVIDIA GPUs for machine learning, data science, and compute workloads from your MacBook
- Clean project isolation - Test and develop without polluting your local environment
- Reproducible dev environments - Create, snapshot, and share standardized setups across teams
- GPU-intensive applications - Run CUDA workloads remotely without impacting local machine performance
- Custom container workflows - Maintain clean environments for Docker development and testing
- LXD containerization with NVIDIA GPU passthrough
- Container snapshots using ZFS storage backend
- Pre-configured profiles for different development needs
- Audio passthrough for applications requiring sound
- Remote access via SSH and web UI
- Standardized workflows for creating and managing custom images
- Host Setup
- Initialize LXD
- Networking Configuration
- Remote Access & Web UI
- Local Mac/Linux Client Setup
- Audio Passthrough
- LXD Profiles
- Creating & Starting Containers
- Custom Image Workflow
- LXC Command Reference
- Custom Image Details:
sbox-lg
This documentation originated as internal setup notes, so you'll need to update several environment-specific values:
- Server name: References to
Devbox - IP addresses: Primary server (
10.0.0.10), client placeholder (10.0.0.254), static IP container range (10.0.0.150-155) - Container Username: Default
ubuntuuser - SSH keys: Placeholder keys in
ssh-*.yamlprofiles - Network interface:
eno1in bridge configuration - Storage: ZFS pool path
/data/fast/sandboxes/zfs.img
Contributions, bug reports, and suggestions are welcome. Please open an issue or submit a pull request.