This project provisions and operates a public Ubuntu server in Oracle Cloud's Johannesburg region. It automates the network, retries instance creation when capacity is unavailable, and serves this project page from nginx over HTTPS. The goal is a small, reproducible home for experiments, services, and infrastructure work.
[2026-09-21 22:38:27] >>> Attempt 446: launching linux-server [2026-09-21 22:40:05] Launch error: TooManyRequests: Too many requests for the user [2026-09-21 22:40:05] >>> Attempt 446: launch failed. Retrying in 600s [2026-09-21 22:50:09] >>> Attempt 447: launching linux-server [2026-09-21 22:51:46] Launch error: InternalError: Out of host capacity. [2026-09-21 22:51:46] >>> Attempt 447: launch failed. Retrying in 600s [2026-09-21 23:01:50] >>> Attempt 448: launching linux-server [2026-09-21 23:03:28] Launch error: InternalError: Out of host capacity. [2026-09-21 23:03:28] >>> Attempt 448: launch failed. Retrying in 600s [2026-09-21 23:13:31] >>> Attempt 449: launching linux-server [2026-09-21 23:15:08] Launch error: InternalError: Out of host capacity. [2026-09-21 23:15:08] >>> Attempt 449: launch failed. Retrying in 600s [2026-09-21 23:25:12] >>> Attempt 450: launching linux-server [2026-09-21 23:26:48] Launch error: InternalError: Out of host capacity. [2026-09-21 23:26:48] >>> Attempt 450: launch failed. Retrying in 600s [2026-09-21 23:36:52] >>> Attempt 451: launching linux-server [2026-09-21 23:38:29] Launch error: InternalError: Out of host capacity. [2026-09-21 23:38:29] >>> Attempt 451: launch failed. Retrying in 600s
{ "provider": "Oracle Cloud Infrastructure", "region": "af-johannesburg-1", "compute": "VM.Standard.A1.Flex / 4 OCPUs / 24 GB", "network": "VCN / subnet / internet gateway / route table", "delivery": "Ubuntu / nginx / Cloudflare HTTPS" }
The provisioner reuses existing OCI resources when possible, launches the latest compatible Ubuntu image, waits for a running instance, and prints the SSH connection details. The current public page is served by nginx; Coolify was tested and removed after resource pressure on the smaller AMD host made a lightweight static setup the better fit.
An automated GitHub Actions workflow can keep the capture process moving: it serializes retries, stores the provisioning log, and sends an optional webhook notification when the Flex instance is confirmed running. For continuous execution beyond a GitHub runner's time limit, the project also documents an always-on systemd service.