← Projects

Something Running Somewhere

Free-tier Linux server for remote access and ongoing project backends.

Jan 2026 · Infrastructure · Active infrastructure

Illustrated map showing a laptop near Dallas and a cloud-covered server about 700 miles away
Laptop here, machine somewhere else, about 700 miles between them.

Stack

Stack: Oracle Cloud ARM A1 · Ubuntu · Tailscale · SSH keys · tmux · PaperMC

$0 budget, NAT and firewall behavior to understand, and no tolerance for a server that dies when my laptop closes.

Log

  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.

  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 straightforward plan was laptop to router, across the public internet, and into the Oracle server. NAT, private IPs, ports, firewalls, and remote-connectivity details made a direct connection harder than expected. Each layer had its own behavior, and I needed a path I could reason about.

    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; tmux kept the session running after I disconnected. The server has been available almost all the time by my observation, but I never measured uptime as a percentage. Oracle remains within its $0 free tier, and I still use the machine to host backends for later projects.

Result

Free-tier server still hosting backends for later projects; observed availability is almost all the time, without a measured uptime percentage.

What I learned

Keeping a server running mostly meant removing myself from the path. Oracle gave me the machine, Tailscale made it reachable, SSH keys made it mine, and tmux kept the Minecraft process running after I detached. I still use the machine for backend hosting, and my observation is that it has been available almost all the time. I never measured an uptime percentage. Every error along the way was not a wall; it was the next layer I had to understand.

Related