Josh Ramirez
← Field guide

Entry 03 of 23

Departed Jan 2026 / returned Feb 2026

Oracle Free TierInfrastructureShipped
Terminal window streaming Minecraft Paper server logs inside a tmux session named oram, with player joins, disconnects, coordinates, and achievements visible over a cloudy background
Steady state: the laptop can close, the world keeps running.

Departure

I wanted a computer that did not go to sleep when I closed the laptop. Something reachable from school, home, or my phone. Something free. Oracle's Always Free tier had the shape I wanted if I could get one: ARM cores, real RAM, real storage, and no monthly bill. The visible payload was a Minecraft server my friends could join whenever; the real payload was learning what it takes to keep something running somewhere.

Approach

6 tools

  • Oracle Cloud ARM A1
  • Ubuntu
  • Tailscale
  • SSH keys
  • tmux
  • PaperMC

$0 budget, school firewall in the path, and no tolerance for a server that dies when my laptop closes.

Field log

7 entries

  1. The distance

    The first shift was mental. My code was no longer on the same desk as me. The laptop was in Dallas, the box was hundreds of miles away, and the only thing between them was a chain of credentials, networks, and processes I had to understand well enough to trust.

    Cloudy satellite map of the United States with a laptop near Dallas, a server rack near the Great Lakes, and a large cloud label reading 700 miles
    A laptop here, a machine somewhere else, and 700 miles of internet in between.
  2. Oracle roulette

    Oracle's free ARM shape is the deal: 4 OCPU, 24GB RAM, 200GB storage, billed at zero. Getting it is the fight. Capacity errors, retrying availability domains, waiting, retrying again. When the stack finally turned green as oram-A1-Server, the project became real.

    Oracle Resource Manager stack details page for oram-A1-Server showing active status and description 4 OCPU, 24GB RAM, 200GB Storage
    The free-tier box, active: 4 OCPU, 24GB RAM, 200GB storage.
  3. The public internet said no

    The naive plan was obvious: laptop to router, through the school firewall, across the public internet, into the Oracle server. It failed in every predictable place. Private IPs, NAT, open ports, public addresses, firewall policy. Every layer was technically doing its job, and none of it helped me get a shell.

    Diagram showing laptop private IP through home router NAT, school firewall, internet, and Oracle Cloud Server public IP, with red X marks over attempted direct arcs and the caption Public IP? Open ports? Firewall?
    The direct route was a pile of edge cases pretending to be a path.
  4. Tailscale collapsed the path

    Tailscale made the network problem smaller. Install it on the server, install it on the laptop, approve both devices, and the public route stops mattering. SSH could target a stable tailnet name instead of whatever the firewall allowed that day. The mesh became the one network I could reason about.

    Traditional network diagram blocked by NAT and firewalls beside an overlay network diagram connecting devices A, B, C, and D through a central overlay network
    Traditional path: blocked. Overlay path: devices by name.
  5. Closing the laptop killed the world

    SSH got me into the machine, but it did not make anything persistent. First long-running process died the moment the session died. That was the tmux lesson: the shell is not the server. Run the process inside a session that survives you leaving, then detach and come back to the same cursor later.

    Before and after process death diagram showing SSH Session leading to Shell and processes, then after disconnect every box is crossed out and the word Dead appears at the bottom
    Without tmux, disconnecting was not leaving. It was killing.
  6. The stack finally made sense

    By the end, the project was not one tool. It was a stack: Oracle ARM A1 as hardware, Ubuntu as the headless OS, Tailscale as the mesh, SSH keys as identity, Vim and Neovim for editing on the box, tmux for persistence, and the app running inside that session. Each layer handled one kind of failure.

    Stack diagram with layers for Application running inside Tmux, Tmux persistent sessions, Vim and Neovim editing, SSH secure access, Tailscale network mesh, Ubuntu headless OS, and Oracle ARM A1 free tier hardware
    The whole lesson as a layer cake.
  7. Steady state

    PaperMC ran inside tmux on the Oracle box. Friends joined, disconnected, crossed dimensions, completed achievements, and came back later. I could watch the logs, detach, walk away, and reattach. Oracle billed $0.00. Tailscale billed $0.00. The world kept ticking because I was no longer in the critical path.

From the gallery

7 figures

Minecraft server logs streaming in a terminal over a cloudy background
The server alive without me staring at it.
Satellite map with laptop and server separated by 700 miles
Remote stopped being abstract.
Oracle Free Tier A1 stack active with 4 OCPU, 24GB RAM, 200GB storage
The $0 machine.
Public IP and firewall connection failure diagram
The broken direct route.
Tailscale overlay network diagram
The network above the network.
SSH process tree dying after disconnect
Why tmux became mandatory.
Oracle, Ubuntu, Tailscale, SSH, Vim, tmux, application stack diagram
What actually stuck.

What I came back with

$0 always-on server

Lesson from the terrain

Always-on is mostly about removing yourself from the path. The server should not need my laptop awake, my network open, or my terminal attached. Oracle gave me the machine, Tailscale made it reachable, SSH keys made it mine, tmux kept the work alive, and the Minecraft logs proved the stack was doing its job. Every error along the way was not a wall; it was the next layer I had to understand.

Cross-links

This fed into / from