/var/log/oracle_vps_setup.log
tl;dr
- sign up for oracle cloud free tier to get us$300 credit for 30 days and access to always free services.
- create an always free compute instance using an always free eligible shape (vm.standard.e2.1.micro or arm ampere a1 family).
- verify account (phone and payment method) and choose an always free eligible region and image to avoid charges.
- watch for boot volume minimums, idle-reclamation rules, and service limits to avoid accidental charges or resource deletion.
1. requirements before you start
- valid email.
- a phone for sms verification.
- a credit or debit card for identity verification. oracle does not charge during free trial unless you explicitly convert to paid.
2. what you get free
- us$300 cloud credits valid 30 days for trial services beyond always free.
- always free compute options including: two vm.standard.e2.1.micro (amd) instances and arm-based ampere a1 options depending on region and availability.
- oracle may reclaim idle always free compute instances if cpu, network, and memory are below thresholds over 7 days.
- beware of minimum boot volume sizes and non-always-free options that will bill. always select resources marked always free.
3. step by step: create the free oracle cloud account
- go to the oracle free tier signup page: https://signup.oraclecloud.com.
- fill in name, email, country. choose an always free eligible region when prompted if available.
- verify email. oracle will ask for phone verification and card details. provide a card for identity check but you will not be charged for always free usage.
- finish onboarding. you will see the free trial dashboard with the $300 credit and the always free resource list.
4. create an always free vps via the console
- sign in to your oracle cloud console.
- open the menu compute > instances > create instance.
- name the instance. wait a second. the console will show an “always free eligible” badge.
- under image and shape, click change shape. choose vm.standard.e2.1.micro or an always free arm shape (a1).
- ensure boot volume is within always free size. if the console shows a cost estimate, stop.
- keep default vcn or use the one created during signup. assign a public ip.
- add ssh keys:
ssh-keygen -t rsa -b 4096 -c "your_email@example.com"
cat ~/.ssh/id_rsa.pub- create the instance. wait until status is running and badge says always free.
5. connect and basic secure setup
- get the public ip from the console.
- ssh in:
ssh opc@public_ip
ssh ubuntu@public_ip- harden the system:
sudo apt update && sudo apt upgrade -y
sudo adduser deployer
sudo usermod -aG sudo deployer
sudo systemctl restart sshd
sudo apt install ufw -y
sudo ufw allow openssh
sudo ufw enable- snapshot after setup.
6. ensure it remains free
- use only always free shapes and storage.
- monitor billing dashboard regularly.
- prevent idle reclamation by scheduling light activity (cron ping). oracle may reclaim idle instances after 7 days.
7. common pitfalls
- wrong region or non-free image.
- large boot volume exceeding free limits.
- enabling paid features or converting to paid account unintentionally.
8. terraform quick start (optional)
minimal example:
provider "oci" {
tenancy_ocid = var.tenancy_ocid
user_ocid = var.user_ocid
fingerprint = var.fingerprint
private_key_path = var.private_key_path
region = var.region
}
resource "oci_core_instance" "vm" {
availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
compartment_id = var.compartment_ocid
shape = "vm.standard.e2.1.micro"
create_vnic_details {
subnet_id = var.subnet_ocid
assign_public_ip = true
}
source_details {
source_type = "image"
image_id = var.image_id
}
metadata = {
ssh_authorized_keys = file("~/.ssh/id_rsa.pub")
}
}9. cleanup
- delete instance, boot volumes, and snapshots when done.
- verify billing shows zero usage.
10. troubleshooting
- no always free badge: pick a different region or shape.
- small charges: check for non-free services.
- reclaimed instance: keep usage active weekly.
11. final checklist
- region and shape show always free badge.
- boot volume size within free limit.
- ssh key added.
- public ip assigned.
- billing dashboard verified.