e0258a928e
Recommended base: Debian 13 Trixie (matches opencode-devbox base image). - cloud-init.yml: automated VM provisioning for Proxmox/OpenStack/cloud providers - setup-host.sh: interactive post-install script for manually-created VMs - README.md: documents both paths and VM sizing recommendations Installs Docker (official repo), Compose v2, ufw firewall, mosh support, and the IPv4 DNS preference workaround for Docker Hub IPv6 issues.
82 lines
3.5 KiB
YAML
82 lines
3.5 KiB
YAML
#cloud-config
|
|
# cloud-init template for opencode-devbox host VM
|
|
# Tested on Debian 13 (Trixie) and Ubuntu 24.04
|
|
#
|
|
# Usage:
|
|
# - Proxmox: attach this file as cloud-init user-data in VM config
|
|
# - OpenStack: pass as --user-data when creating the instance
|
|
# - Cloud providers: paste into "user data" field
|
|
#
|
|
# Customize the marked sections before use.
|
|
|
|
# ── Hostname ─────────────────────────────────────────────────────────
|
|
hostname: devbox
|
|
manage_etc_hosts: true
|
|
|
|
# ── User ─────────────────────────────────────────────────────────────
|
|
users:
|
|
- name: devbox
|
|
groups: sudo, docker
|
|
shell: /bin/bash
|
|
sudo: ALL=(ALL) NOPASSWD:ALL
|
|
ssh_authorized_keys:
|
|
# CUSTOMIZE: replace with your public SSH key
|
|
- ssh-ed25519 AAAA... your-key-here
|
|
|
|
# ── Locale and timezone ──────────────────────────────────────────────
|
|
locale: en_US.UTF-8
|
|
timezone: Europe/Stockholm
|
|
|
|
# ── Package installation ─────────────────────────────────────────────
|
|
package_update: true
|
|
package_upgrade: true
|
|
packages:
|
|
- ca-certificates
|
|
- curl
|
|
- gnupg
|
|
- git
|
|
- tmux
|
|
- mosh
|
|
- ufw
|
|
|
|
# ── Commands to run at first boot ────────────────────────────────────
|
|
runcmd:
|
|
# Install Docker from official repository
|
|
- install -m 0755 -d /etc/apt/keyrings
|
|
- curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg -o /etc/apt/keyrings/docker.asc
|
|
- chmod a+r /etc/apt/keyrings/docker.asc
|
|
- echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/$(. /etc/os-release && echo \"$ID\") $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" > /etc/apt/sources.list.d/docker.list
|
|
- apt-get update
|
|
- apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|
- usermod -aG docker devbox
|
|
|
|
# Firewall — allow SSH, mosh, and optionally HTTPS if running web-accessible services
|
|
- ufw default deny incoming
|
|
- ufw default allow outgoing
|
|
- ufw allow ssh
|
|
- ufw allow 60000:61000/udp
|
|
- ufw --force enable
|
|
|
|
# Disable IPv6 preference for Docker (avoids intermittent Docker Hub connectivity issues)
|
|
- echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf
|
|
|
|
# Create projects directory for the user
|
|
- mkdir -p /home/devbox/projects
|
|
- chown devbox:devbox /home/devbox/projects
|
|
|
|
# ── Final message ───────────────────────────────────────────────────
|
|
final_message: |
|
|
opencode-devbox host VM ready.
|
|
|
|
Next steps:
|
|
1. SSH in: ssh devbox@<this-host>
|
|
2. Clone your opencode-devbox compose config, or:
|
|
mkdir -p ~/opencode-devbox && cd ~/opencode-devbox
|
|
curl -sL https://gitea.jordbo.se/joakimp/opencode-devbox/raw/branch/main/docker-compose.yml -o docker-compose.yml
|
|
curl -sL https://gitea.jordbo.se/joakimp/opencode-devbox/raw/branch/main/.env.example -o .env
|
|
3. Edit .env with your provider and keys
|
|
4. docker compose up -d
|
|
5. docker compose exec -u developer devbox opencode
|
|
|
|
Cloud-init run completed in $UPTIME seconds.
|