mirror of
https://github.com/tiennm99/coolify.git
synced 2026-09-03 14:18:12 +00:00
feat(dev): add coold VM dev workflow
Add scripts and Lima config for managing local coold endpoint VMs, mint Flux dev host JWTs, expose coold host details on the V5 home page, and document the local development workflow.
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# 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."
|
||||
Reference in New Issue
Block a user