coolify/dev/lima/coold.yaml

126 lines
4 KiB
YAML
Raw Normal View History

# Lima VM for testing Coolify v5 against a packaged coold endpoint.
# Start with: scripts/coold-vm.sh up
# Run endpoint: scripts/coold-vm.sh dev
#
# This file is copied into .dev/lima/coold.generated.yaml by the wrapper script,
# with {{COOLIFY_REPO}}, {{COOLIFY_COOLD_VERSION}}, and {{COOLIFY_CORROSION_VERSION}} replaced before Lima sees it.
vmType: "vz"
arch: "default"
cpus: 4
memory: "8GiB"
disk: "100GiB"
containerd:
system: false
user: false
images:
- location: "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img"
arch: "x86_64"
- location: "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img"
arch: "aarch64"
mountType: "virtiofs"
mounts:
- location: "{{COOLIFY_REPO}}"
mountPoint: "/workspace/coolify"
writable: true
portForwards:
- guestPort: 5173
hostPort: 5173
hostIP: "127.0.0.1"
- guestPort: 3000
hostPort: 3000
hostIP: "127.0.0.1"
provision:
- mode: system
script: |
#!/usr/bin/env bash
set -euxo pipefail
export DEBIAN_FRONTEND=noninteractive
echo "[coold-vm] Updating Ubuntu package index..."
apt-get update
echo "[coold-vm] Installing VM dependencies..."
apt-get install -y --no-install-recommends \
bash \
buildah \
ca-certificates \
clang \
curl \
git \
iproute2 \
iptables \
jq \
libssl-dev \
mold \
nftables \
openssl \
perl \
pkg-config \
podman \
protobuf-compiler \
sqlite3 \
sudo \
wireguard-tools
echo "[coold-vm] Enabling Podman socket..."
systemctl enable --now podman.socket
cat >/usr/local/bin/rtk <<'SH'
#!/usr/bin/env bash
exec "$@"
SH
chmod +x /usr/local/bin/rtk
mkdir -p /etc/coolify /var/lib/corrosion /run/corrosion /var/lib/coolify-dev /var/lib/coolify-builder/work
chmod 755 /etc/coolify
chmod 777 /var/lib/corrosion /run/corrosion
install_coolify_binary() {
name="$1"
version="{{COOLIFY_COOLD_VERSION}}"
arch_raw="$(uname -m)"
case "$arch_raw" in
x86_64) arch=amd64 ;;
aarch64) arch=arm64 ;;
*) echo "unsupported arch: $arch_raw" >&2; exit 1 ;;
esac
url="https://github.com/coollabsio/coold/releases/download/${version}/${name}-linux-${arch}.tar.gz"
echo "[coold-vm] Installing ${name} from ${url}..."
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' RETURN
curl -fsSL --retry 3 --max-time 120 -o "$tmpdir/${name}.tar.gz" "$url"
tar -xzf "$tmpdir/${name}.tar.gz" -C "$tmpdir"
test -f "$tmpdir/$name"
install -m 0755 "$tmpdir/$name" "/usr/local/bin/${name}.tmp"
mv "/usr/local/bin/${name}.tmp" "/usr/local/bin/${name}"
echo "$version" > "/usr/local/bin/${name}.version"
}
install_corrosion_binary() {
version="{{COOLIFY_CORROSION_VERSION}}"
arch_raw="$(uname -m)"
case "$arch_raw" in
x86_64) arch=x86_64-unknown-linux-gnu ;;
aarch64) arch=aarch64-unknown-linux-gnu ;;
*) echo "unsupported arch: $arch_raw" >&2; exit 1 ;;
esac
url="https://github.com/superfly/corrosion/releases/download/${version}/corrosion-${arch}.tar.gz"
echo "[coold-vm] Installing corrosion from ${url}..."
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' RETURN
curl -fsSL --retry 3 --max-time 180 -o "$tmpdir/corrosion.tar.gz" "$url"
tar -xzf "$tmpdir/corrosion.tar.gz" -C "$tmpdir"
test -f "$tmpdir/corrosion"
install -m 0755 "$tmpdir/corrosion" /usr/local/bin/corrosion.tmp
mv /usr/local/bin/corrosion.tmp /usr/local/bin/corrosion
echo "$version" > /usr/local/bin/corrosion.version
}
install_coolify_binary coold
install_coolify_binary builder
install_corrosion_binary
echo "[coold-vm] Endpoint binaries installed."
echo "[coold-vm] Provisioning complete."