Skip to content

Timcuan/Oracle-create-script-

Repository files navigation

Oracle ARM Always Free Provisioning Toolkit

Get a free permanent ARM VPS (2 OCPU / 12 GB / 200 GB) on Oracle Cloud's Always-Free tier — without writing Terraform, without babysitting the "Out of Capacity" wall, with Telegram notifications on success.

  • Status: Production-ready (June 2026)
  • Region: ap-singapore-1 recommended for Southeast Asia
  • Cost: $0/month — PAYG tier held but Always Free resources incur no charge
  • Limit model: Hours-budget (1,500 OCPU-h + 9,000 GB-h / month, equivalent to 2 OCPU / 12 GB 24/7)
  • License: MIT (this toolkit) + MIT (vendored jitendhull) | GPL-3.0 fallback via Docker
  • Last verified: 2026-06-18 against rssnyder/oracle-cloud-free-tier-guide (June 16, 2026 comments), mosesman831/OCI-OcC-Fix, jitendhull/oracle-vps-script, and edunavajas.com (cross-checked; see docs/SOURCES.md)

TL;DR

git clone https://github.com/Timcuan/Oracle-create-script-
cd Oracle-create-script-
sudo bash install.sh
# follow /opt/oracle-tools/README-timc.md

Why this exists

Oracle Cloud's Always-Free tier offers a permanent ARM instance (VM.Standard.A1.Flex) functionally equivalent to a $20-30/month hosting plan. The catch: free capacity is so oversubscribed that manual attempts to click Create instance fail with Out of host capacity every time. The community has converged on three strategies:

  1. Manual retry loop in the browser (works, painful, I/O bound)
  2. Automated API retry against the OCI SDK (Python or Bash)
  3. Terraform via Oracle Resource Manager (most resilient)

This toolkit bundles #2 (jitendhull) as the primary path and #3 (mosesman Python) via Docker as a fallback, wrapped behind one install.sh and a config injector that enforces "all-three-fields-filled-or-we-don't-run" safety.


Architecture

Hetzner control plane (this repo installed here)
/opt/oracle-tools/
  bin/inject-config.sh        validate + sed
  config/oracle-a1-stack.ini  Master Timc edits
  keys/oracle-arm-ed25519(.pub)
  README-timc.md              operator runbook
  scripts/
    jitendhull-oracle-arm.sh  PRIMARY retry
    mosesman-occ/             Python fallback
    post-provision.sh         harden new VM
  venv-oci/                   OCI CLI 3.87.0
  logs/oracle_automation_v2.log

screen / tmux / nohup         (24/7 unattended)
        |
        v  OCI REST API + Resource Manager

Oracle Cloud tenant
  PAYG tier confirmed via email
  Region: ap-singapore-1
  Resource Manager Stack (Terraform auto-generated)
  ARM instance VM.Standard.A1.Flex (2 OCPU / 12 GB / 50 GB)
  Public IP (ephemeral)

        capacity hit
        v

new ARM joins Tailnet 100.x.x.x
> Master Timc SSHs 100.x.x.x directly

See docs/ARCHITECTURE.md for the full breakdown.


What you get

When the bot reports success:

  • Permanent ARM VPS — $0/month within Free Tier limits
  • 2 OCPU / 12 GB RAM / 50 GB disk within hours-budget envelope
  • Public IP that survives reboots
  • Tailscale-ready so the box joins your existing tailnet
  • No payment processor drama — Oracle does instant $93 refunds on the PAYG upgrade hold
  • No manual babysitting — screen + exponential backoff = 24/7
  • Telegram pings on capacity hit + rate-limit windows

Quick install

git clone https://github.com/Timcuan/Oracle-create-script-
cd Oracle-create-script-
sudo bash install.sh

After install follow /opt/oracle-tools/README-timc.md — the operator-facing runbook with nine numbered steps. The toolkit itself doesn't automate Oracle signup (KYC + credit-card hold + real-name verification) because that part genuinely requires a human in the loop.


Prerequisites

Need Why
Real-name credit card Oracle KYC rejects mismatches between cardholder name and account name. Country-restricted cards (IN 2026-02, parts of LATAM) get rejected.
Debit card Sometimes works (~50/50). Credit is safer.
Browser with JavaScript Oracle's console UI uses Forms; breaks in some headless browsers.
Telegram account Real-time notifications on capacity hit. Free.
Tailscale (optional) Lets new ARM join your existing tailnet for private SSH.
Control-plane host Any Linux box works (Hetzner, Oracle E2 micro, laptop). Writes to /opt/oracle-tools/.
Python 3.10+ Only needed for mosesman Python fallback (not Docker variant).
Docker (optional) For mosesman via Docker — keeps MCP pollution off your host. Docker 29.5.3 verified.

Can I get 4 OCPU / 24 GB?

Short answer: NO. Oracle cut Always Free on 2026-06-15. See docs/RISK.md for full audit; relevant quotes:

Oracle docs (2026-06-12): "All tenancies get the first 1,500 OCPU hours and 9,000 GB hours per month for free for VM instances using the VM.Standard.A1.Flex shape. For Always Free tenancies, this is equivalent to 2 OCPUs and 12 GB of memory."

Reddit r/oraclecloud (Upstairs-Bread-4545): "Free Tier Users will have their instance(s) shut down and PAYG User will get charged if they dont change their shape!"

Your realistic options for >2/12:

  1. Burst pattern — spin 4/24 (or 12/64) for short time, pay hourly See docs/FALLBACKS.md F7 for full recipe + cost formula
  2. Hetzner CAX31 (16 GB ARM) €17/month flat — predictable paid cost
  3. Stay at 2/12 24/7 — $0/month, fits the budget envelope

Repository layout

Oracle-create-script-/
+-- README.md                    (this file)
+-- LICENSE                      (MIT, this toolkit)
+-- LICENSE-MIT-jitendhull       (vendored dependency)
+-- LICENSE-GPL-mosesman-ref     (Docker-only reference)
+-- .gitignore
+-- install.sh                   (one-shot installer)
+-- lib/
|   +-- inject-config.sh         (validate + sed-inject)
|   +-- post-provision.sh        (harden new VM)
|   +-- oracle-a1-stack.ini.template
|   +-- README.md                (lib-level notes)
+-- vendor/
|   +-- jitendhull/
|       +-- oracle_a1_automation-v2.sh  (PRIMARY)
|       +-- LICENSE-MIT
+-- docs/
|   +-- SOURCES.md
|   +-- RISK.md
|   +-- DECISIONS.md
|   +-- FALLBACKS.md
|   +-- FAQ.md
+-- tests/
    +-- smoke.sh                 (syntax + placeholder guards)

Usage

After install.sh completes:

  1. Open https://signup.cloud.oracle.com/ in a browser
  2. Sign up with real-name + matching credit card
  3. After email verify, upgrade to Pay-as-you-go (still free within tier limits — $93 hold, instant refund)
  4. Follow steps 3-9 of /opt/oracle-tools/README-timc.md
  5. Telegram pings when capacity hit — your ARM is live

Why split jitendhull + mosesman

Two independent tools with different retry mechanics = strict improvement over picking only one. If jitendhull hits oracle-cloud rate limits hard, mosesman uses different OCI surface area. If both fail, manual oci compute instance launch documented in docs/FALLBACKS.md.


Roadmap

  • Terraform wrapper as 3rd path
  • Auto-failover when STACK_ID auto-discovery returns nothing
  • Region rotation beyond SG / Sydney / Ashburn
  • IPv6-only fallback when no public IPv4 available
  • Hetzner-to-Oracle rsync backup recipes
  • Docker Compose mode for mosesman

Contributing

Issues and PRs welcome. Particularly:

  • Region availability update for the current month
  • Capacity edge cases you've hit
  • Better back-off tuning for rate limits

Do not contribute:

  • Real STACK_IDs / OCI private keys / Telegram bot tokens (> CI scans .ini / .sh for accidental secrets; redact before PR)
  • Mining, scraping, or anything that violates Oracle ToS (> this toolkit will be DMCA'd if it encourages resource abuse)

Sources & credits

This toolkit is a thin wrapper around:

See docs/SOURCES.md for full citations, dates, and divergence analysis.


License

MIT for the wrapper code. Vendored jitendhull script retains its MIT license (see LICENSE-MIT-jitendhull). mosesman is referenced as a Docker invocation only — host code does not link against it, so the GPL does not propagate.

Copyright (c) 2026 Endymuhammad Bahtiar M.M. (Timcuan) and contributors.

About

Toolkit for getting a free permanent ARM VPS on Oracle Cloud Always-Free tier. Wraps jitendhull + mosesman retry bots with config validation. June 2026 reality: 2 OCPU/12 GB.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages