Skip to content

Latest commit

 

History

History
199 lines (157 loc) · 6.84 KB

File metadata and controls

199 lines (157 loc) · 6.84 KB

Fallback paths

What to do when the primary path fails — or when you need capabilities beyond what Always Free provides.

F1 — jitendhull rate-limited hard (>24h no success)

cd /opt/oracle-tools/scripts/mosesman-occ/   # clone if missing
python3 setup_wizard.py                     # interactive config
python3 bot.py                              # foreground

# or via Docker if pollutes Python envs you care about:
docker compose up -d --build
docker logs -f oci-occ-fix

mosesman uses direct OCI API rather than Resource Manager, so it has different rate-limit exposure.

F2 — Both tools fail (>48h stuck)

Manual retry against OCI CLI directly:

# 1. List availability domains
oci iam availability-domain list \
  --compartment-id "$(oci iam tenancy get --query 'data.id' --raw-output)" \
  --query 'data[*].name' --raw-output

# 2. Get Ubuntu ARM image OCID for our region
oci compute image list \
  --compartment-id "$(oci iam tenancy get --query 'data.id' --raw-output)" \
  --operating-system "Canonical Ubuntu" \
  --shape "VM.Standard.A1.Flex" \
  --query 'data[0].id' --raw-output

# 3. Get subnet OCID
oci network subnet list \
  --compartment-id "$(oci iam tenancy get --query 'data.id' --raw-output)" \
  --vcn-id "$(oci network vcn list --compartment-id ... --query 'data[0].id' --raw-output)" \
  --query 'data[0].id' --raw-output

# 4. Loop create instance — rotate AD on each attempt
for AD in $(oci iam availability-domain list --compartment-id ...); do
  oci compute instance launch \
    --compartment-id "$(oci iam tenancy get --query 'data.id' --raw-output)" \
    --availability-domain "$AD" \
    --shape "VM.Standard.A1.Flex" \
    --shape-config '{"ocpus":2,"memoryInGBs":12}' \
    --image-id "$UBUNTU_ARM_OCID" \
    --subnet-id "$SUBNET_OCID" \
    --assign-public-ip true \
    --metadata "{\"ssh_authorized_keys\":\"$(cat /opt/oracle-tools/keys/oracle-arm-ed25519.pub)\"}" \
    --display-name "oracle-arm-1"
  if [[ $? -eq 0 ]]; then break; fi
  sleep 30
done

Manual = full control, fewer abstractions, more boilerplate.

F3 — Region choice was wrong (home region stuck)

You can't change home region after signup. Workarounds:

  1. Cancel Oracle account — Oracle support usually does it within 24h
  2. Re-register with new email + new CC + new home region
  3. Use the original (sub-optimal) region, accept latency

We document this because it's irreversible. Pick wisely at signup.

F4 — CC rejected

  • Card-not-real-name? Use real card matching billing address
  • Card-issued-in-restricted-country? Try Privacy.com (US), Revolut virtual, or Wise (international). Variable success.
  • Card-prepaid? Oracle explicitly rejects prepaid in some countries
  • Card-debit? ~50/50 — try credit first

If all fails: use a friend/relative's card with their consent. The account belongs to whoever's name matches; you can still use the VM once provisioned.

F5 — PAYG upgrade stuck >7 days

Oracle support is reachable at https://cloud.oracle.com/contact Choose "Account upgrade" issue type. Usually responds within 24h.

F6 — DNS / Tailscale problems after capacity hit

If Tailscale fails to bring ARM into the mesh:

If SSH via public IP fails (50mbps throttle):

  • Use Tailscale 100.x.x.x directly
  • Or do pacenter config to prefer tailnet

F7 — Need > 2/12 capacity for short workloads (BURST pattern)

When you need a bigger box for a one-shot heavy workload (CI/CD, ML training, batch render, kernel compile), Oracle allows you to provision larger shapes above Always Free and pay only for compute-hours used. Pattern discovered by codelesscody in the rssnyder gist comments (Feb 2026).

Cost formula:

$$cost = ocpus × hours × \$0.0105/OCPU-h + memoryGB × hours × \$0.0015/GB-h$$

Always Free ARM rates that Oracle publishes (verify at docs.oracle.com):

  • OCPU rate: ~$0.0105/OCPU-hour
  • Memory rate: ~$0.0015/GB-hour

Example workloads:

Workload Shape Duration Cost
Default Always Free 2 OCPU / 12 GB 30 days $0
CI/CD burst 4 OCPU / 24 GB 8 hours $1.30 CPU + $0.29 MEM = $1.59
ML training 12 OCPU / 64 GB 24 hours × 3 days $9.07 + $6.91 = $15.98
Single render job 8 OCPU / 32 GB 4 hours $0.34 + $0.19 = $0.53
Intense dataset compilation 12 OCPU / 64 GB 10 days $30.24 + $23.04 = $53.28

Provisioning a burst:

# 1. Create a Stack OR launch directly via oci CLI
# Direct launch example for 4 OCPU / 24 GB 8h burst:
oci compute instance launch \
  --compartment-id "<TENANCY_OCID>" \
  --availability-domain "AD-1" \
  --shape "VM.Standard.A1.Flex" \
  --shape-config '{"ocpus":4,"memoryInGBs":24}' \
  --image-id "<UBUNTU_22_04_ARM_OCID>" \
  --subnet-id "<SUBNET_OCID>" \
  --assign-public-ip true \
  --metadata "{\"ssh_authorized_keys\":\"$(cat /root/.ssh/id_ed25519.pub)\"}" \
  --display-name "burst-cicd-$(date +%Y%m%d)"

Important checks before burst provisioning:

  1. You are on PAYG tier — required because shape > Always Free
  2. Compute-hours quota — verify you won't exceed monthly budget
    oci limits resource-availability get \
      --service compute \
      --limit-name "compute-core-count-per-region"
  3. Billing alert — set budget at 50% / 90% thresholds Console → Billing → Budgets

Cleanup (critical — burst costs accumulate):

# After workload finishes, IMMEDIATELY:
oci compute instance terminate \
  --instance-id "<BURST_INSTANCE_OCID>" --force
# Wait ~2 min for full teardown
# Verify: oci compute instance list | grep "burst"

Recommendation: keep the burst size reasonable. 12 OCPU/64 GB for 10 days = $53 vs Hetzner CAX41 32GB €33/month for steady compute. Oracle burst is cheaper only for true one-shot workloads.

F8 — Free-Tier user got throttled shut-down (post-cut regression)

If you originally provisioned 4/24 pre-June 2026 and never downgraded:

  1. Free-Tier account: Oracle may have already shut down your VM
  2. PAYG account: you're being billed for over-budget hours

Recovery (PAYG):

# Get instance OCID
oci compute instance list \
  --compartment-id "<TENANCY_OCID>" \
  --query 'data[?"shape"==`VM.Standard.A1.Flex`].{ocid:id,name:"display-name"}'
# Stop instance
oci compute instance action --instance-id <OCID> --action STOP
# Wait 30s for stopped state
# Edit shape
oci compute instance update \
  --instance-id <OCID> \
  --shape-config '{"ocpus":2,"memoryInGBs":12}'
# Restart
oci compute instance action --instance-id <OCID> --action START

Recovery (Free-Tier):

  • Contact Oracle support within 7 days
  • Request re-provisioning of data (if backed up to block volume)
  • Otherwise fall back to fresh bot run for 2/12 allocation