$ resource "oci_core_instance" "my-arm-instance" { shape = "VM.Standard.A1.Flex" shape_config { ocpus = 4 memory_in_gbs = 24 } source_details { source_type = "image" source_id = var.oracle_linux_minimal_image_id boot_volume_size_in_gbs = 50 # OCI minimum }
} resource "oci_core_volume" "data" { # this is where anything you'd like to still exist tomorrow lives size_in_gbs = 150
}
resource "oci_core_instance" "my-arm-instance" { shape = "VM.Standard.A1.Flex" shape_config { ocpus = 4 memory_in_gbs = 24 } source_details { source_type = "image" source_id = var.oracle_linux_minimal_image_id boot_volume_size_in_gbs = 50 # OCI minimum }
} resource "oci_core_volume" "data" { # this is where anything you'd like to still exist tomorrow lives size_in_gbs = 150
}
resource "oci_core_instance" "my-arm-instance" { shape = "VM.Standard.A1.Flex" shape_config { ocpus = 4 memory_in_gbs = 24 } source_details { source_type = "image" source_id = var.oracle_linux_minimal_image_id boot_volume_size_in_gbs = 50 # OCI minimum }
} resource "oci_core_volume" "data" { # this is where anything you'd like to still exist tomorrow lives size_in_gbs = 150
}
-weight: 500;">curl -sfL https://get.k3s.io | sh
-weight: 500;">kubectl get nodes
-weight: 500;">curl -sfL https://get.k3s.io | sh
-weight: 500;">kubectl get nodes
-weight: 500;">curl -sfL https://get.k3s.io | sh
-weight: 500;">kubectl get nodes
-weight: 500;">docker run \ --privileged \ --name k3s-server \ -p 6443:6443 \ -d rancher/k3s:v1.29.3-k3s1 \ server
-weight: 500;">docker run \ --privileged \ --name k3s-server \ -p 6443:6443 \ -d rancher/k3s:v1.29.3-k3s1 \ server
-weight: 500;">docker run \ --privileged \ --name k3s-server \ -p 6443:6443 \ -d rancher/k3s:v1.29.3-k3s1 \ server
podman run -d \ --privileged \ --network host \ -v /data:/data \ ---weight: 500;">restart always \ ghcr.io/you/k3s-env:latest
podman run -d \ --privileged \ --network host \ -v /data:/data \ ---weight: 500;">restart always \ ghcr.io/you/k3s-env:latest
podman run -d \ --privileged \ --network host \ -v /data:/data \ ---weight: 500;">restart always \ ghcr.io/you/k3s-env:latest
FROM rancher/k3s:v1.29.3-k3s1 # Whatever else you want running alongside K3s
RUN -weight: 500;">apk add --no-cache tailscale # K3s auto-deploys anything placed here on startup
COPY argocd--weight: 500;">install.yaml /var/lib/rancher/k3s/server/manifests/argocd.yaml
COPY root-app.yaml /var/lib/rancher/k3s/server/manifests/root-app.yaml COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
FROM rancher/k3s:v1.29.3-k3s1 # Whatever else you want running alongside K3s
RUN -weight: 500;">apk add --no-cache tailscale # K3s auto-deploys anything placed here on startup
COPY argocd--weight: 500;">install.yaml /var/lib/rancher/k3s/server/manifests/argocd.yaml
COPY root-app.yaml /var/lib/rancher/k3s/server/manifests/root-app.yaml COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
FROM rancher/k3s:v1.29.3-k3s1 # Whatever else you want running alongside K3s
RUN -weight: 500;">apk add --no-cache tailscale # K3s auto-deploys anything placed here on startup
COPY argocd--weight: 500;">install.yaml /var/lib/rancher/k3s/server/manifests/argocd.yaml
COPY root-app.yaml /var/lib/rancher/k3s/server/manifests/root-app.yaml COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
#!/bin/bash # Secrets are in /data/env, written at startup
source /data/env # Start networking, wait for it to be ready
tailscaled --state=/data/tailscale.state &
tailscale up --authkey=$TAILSCALE_AUTHKEY
until tailscale -weight: 500;">status; do sleep 2; done # K3s in the foreground — keeps the container alive
exec k3s server --data-dir=/data/rancher/k3s
#!/bin/bash # Secrets are in /data/env, written at startup
source /data/env # Start networking, wait for it to be ready
tailscaled --state=/data/tailscale.state &
tailscale up --authkey=$TAILSCALE_AUTHKEY
until tailscale -weight: 500;">status; do sleep 2; done # K3s in the foreground — keeps the container alive
exec k3s server --data-dir=/data/rancher/k3s
#!/bin/bash # Secrets are in /data/env, written at startup
source /data/env # Start networking, wait for it to be ready
tailscaled --state=/data/tailscale.state &
tailscale up --authkey=$TAILSCALE_AUTHKEY
until tailscale -weight: 500;">status; do sleep 2; done # K3s in the foreground — keeps the container alive
exec k3s server --data-dir=/data/rancher/k3s
#!/bin/bash
-weight: 500;">dnf -weight: 500;">install -y podman
mkdir -p /data
mount /dev/sdb /data cat > /data/env <<EOF
TAILSCALE_AUTHKEY=your-key-here
OTHER_SECRET=whatever
EOF
chmod 600 /data/env podman run -d \ --privileged \ --network host \ -v /data:/data \ --env-file /data/env \ ---weight: 500;">restart always \ --name k3s-env \ ghcr.io/you/k3s-env:latest
#!/bin/bash
-weight: 500;">dnf -weight: 500;">install -y podman
mkdir -p /data
mount /dev/sdb /data cat > /data/env <<EOF
TAILSCALE_AUTHKEY=your-key-here
OTHER_SECRET=whatever
EOF
chmod 600 /data/env podman run -d \ --privileged \ --network host \ -v /data:/data \ --env-file /data/env \ ---weight: 500;">restart always \ --name k3s-env \ ghcr.io/you/k3s-env:latest
#!/bin/bash
-weight: 500;">dnf -weight: 500;">install -y podman
mkdir -p /data
mount /dev/sdb /data cat > /data/env <<EOF
TAILSCALE_AUTHKEY=your-key-here
OTHER_SECRET=whatever
EOF
chmod 600 /data/env podman run -d \ --privileged \ --network host \ -v /data:/data \ --env-file /data/env \ ---weight: 500;">restart always \ --name k3s-env \ ghcr.io/you/k3s-env:latest
-weight: 500;">docker run -it --privileged --network host \ -v /tmp/test-data:/data \ --env-file .env.test \ ghcr.io/you/k3s-env:latest
-weight: 500;">docker run -it --privileged --network host \ -v /tmp/test-data:/data \ --env-file .env.test \ ghcr.io/you/k3s-env:latest
-weight: 500;">docker run -it --privileged --network host \ -v /tmp/test-data:/data \ --env-file .env.test \ ghcr.io/you/k3s-env:latest
podman pull ghcr.io/you/k3s-env:latest && podman -weight: 500;">restart k3s-env
podman pull ghcr.io/you/k3s-env:latest && podman -weight: 500;">restart k3s-env
podman pull ghcr.io/you/k3s-env:latest && podman -weight: 500;">restart k3s-env - Compute → Instances → Create Instance
- Change the shape to VM.Standard.A1.Flex — that's the ARM one
- Set OCPUs to 4 and memory to 24GB (max free allocation)
- Pick your image. Oracle Linux if you're comfortable with -weight: 500;">dnf. Ubuntu Server if you're a -weight: 500;">apt person.
Either works — both have Minimal variants that strip out a lot of packages out. And if you're about to do what I'm about to describe, you'll want the Minimal version.
- Oracle Linux if you're comfortable with -weight: 500;">dnf. Ubuntu Server if you're a -weight: 500;">apt person.
- Either works — both have Minimal variants that strip out a lot of packages out. And if you're about to do what I'm about to describe, you'll want the Minimal version.
- Add your SSH key - Oracle Linux if you're comfortable with -weight: 500;">dnf. Ubuntu Server if you're a -weight: 500;">apt person.
- Either works — both have Minimal variants that strip out a lot of packages out. And if you're about to do what I'm about to describe, you'll want the Minimal version. - Keeping Podman alive
- Applying its own package updates at 3am via -weight: 500;">dnf-automatic (or unattended-upgrades on Ubuntu) — -weight: 500;">install it, -weight: 500;">enable the timer, forget about it