PROJECT / INFRASTRUCTURE + SERVERS

Homebase

From a spare PC to the infrastructure behind JOS: a self-hosted platform for applications, databases, networking, media, and remote development.

ActiveStarted January 2026

Development updates

Newest first. Approximate dates are kept as recorded; their order within a month or year is not exact.

  1. Planned an offline page for JOS

    I started planning a dedicated offline page for times when Homebase cannot be reached. It could show limited, non-sensitive connection information, but it was not deployed.

  2. Investigated remote Codex Bridge access

    I started investigating why Codex Bridge could appear offline away from home even with Tailscale active. I checked which network interfaces and addresses the bridge was listening on; the issue was still under investigation.

  3. Connected my portfolio to Cloudflare

    I created this portfolio and connected its GitHub repository to Cloudflare deployments. The portfolio runs separately from Homebase.

  4. Protected the public JOS deployment

    I added owner authentication and protected API access to the public JOS deployment. The work also covered session cookies, login limits, and separate authentication for Codex worker routes.

  5. Started planning power backup

    A power outage shut down Homebase and the services running on it. I began work on a UPS and server upgrade plan, including battery backup and controlled shutdown; those upgrades were not finished.

  6. Clarified how JOS is accessed

    I confirmed that the LAN address, Tailscale address, and usejos.com all reached the same JOS application. They were different ways to access it, not separate deployments.

  7. Worked through domain and tunnel issues

    I moved usejos.com toward the Homebase-hosted application and checked DNS, HTTPS, and tunnel connectivity. A Cloudflare 1033 error helped identify that the tunnel connector was unavailable.

  8. Reviewed storage and upgrade plans

    I reviewed the split between application storage on the SSD and Plex media on the external drive. I also started planning more memory, better backups, battery backup, and a better server setup. These were upgrade plans, not completed installations.

  9. Added public access through Cloudflare

    I began moving JOS from private LAN and Tailscale access to usejos.com. Cloudflare Tunnel connected the public site to Homebase without directly forwarding router ports.

  10. Connected Google Calendar

    I connected JOS to Google Calendar on Homebase. Later, I used SSH port forwarding to complete browser authorization for the headless server and restored the integration after renewing access.

  11. Stored syllabus uploads

    I added persistent storage for uploaded syllabi and linked the files to course records in PostgreSQL. I confirmed that a CHM 111 syllabus was uploaded and tracked.

  12. Troubleshot remote access to JOS

    SSH worked through Tailscale, but the JOS webpage initially did not. I checked service bindings, ports, and firewall settings to work out why the web application was not reachable.

  13. Worked on keeping the server awake

    I investigated sleep, suspend, hibernation, and automatic shutdown settings. Homebase needed to stay available as more of my applications depended on it.

  14. Connected remotely with Tailscale

    I set up Tailscale, MagicDNS, and Tailscale SSH for private access to Homebase. I was able to manage the server from my Mac while away from home without exposing SSH publicly.

  15. Saved chat history in PostgreSQL

    JOS began storing conversations and messages in PostgreSQL. I checked that conversations stayed available after refreshing the page and switching between chats.

  16. Started hosting JOS

    I started running my personal assistant project on Homebase, initially under the name Jarvis. It later became JOS and grew into the main application on the server.

  17. Troubleshot an SSH connection problem

    Homebase became unreachable over SSH. I checked the Ethernet connection, host address, and SSH service, and learned to distinguish Docker bridge addresses from the server’s LAN address.

  18. Reviewed the services running on Homebase

    By July, Homebase was running Portainer, Plex, Pi-hole, Netdata, Minecraft, and WG-Easy. It had become the server I used for several projects rather than just a Linux experiment.

  19. Summer 2026

    Added the JOS backend and database

    As JOS grew, I set up its backend, frontend, PostgreSQL database, and persistent file storage on Homebase. I also introduced Alembic migrations to keep track of database changes.

  20. Tried WireGuard for remote access

    I started experimenting with WireGuard through WG-Easy. The goal was to connect my laptop and phone to my home network while I was away.

  21. Added Plex and media storage

    I set up Plex and connected an external drive for movies and TV. This gave me practice with Linux mounts and keeping container data on persistent storage.

  22. Set up Pi-hole

    I deployed Pi-hole in Docker to filter DNS requests and block advertising and tracking domains on my home network.

  23. Set up my first server

    I turned an old spare PC into Homebase and installed Ubuntu Server. I managed it over SSH and used it to learn Linux and try self-hosting services.

  24. Added an Ethernet switch

    I added a switch so my main computer and Homebase could share the available Ethernet connection.

  25. Added Docker

    I installed Docker and Docker Compose to run services in separate containers. This let me update or restart one service without changing everything on the server.

  26. Hosted the detailing website

    I hosted the YesterDay Car Detailing website on Homebase. Maintaining it gave me more experience with web servers, domains, DNS, and deployments.

  27. Early 2026

    Added container management and monitoring

    I added Portainer to manage containers and check their logs. I also set up Netdata to see how the server was using CPU, memory, storage, and network resources.

  28. Early 2026

    Hosted a Minecraft server

    I deployed a Minecraft server on Homebase. I worked with container storage, ports, and networking to run it alongside my other services.

03 / THE SYSTEM

Current Homebase architecture

Public HTTPS

  1. Browser · usejos.com
  2. Cloudflare + Cloudflare Tunnel

Public access to JOS; owner authentication protects application data.

Private remote access

  1. Personal devices
  2. Tailscale · MagicDNS · SSH

Remote administration without public SSH exposure.

Home network

  1. Personal devices
  2. LAN · Ethernet switch

Local access to Homebase and its services.

Self-hosted core

Homebase

Ubuntu Server · Docker / Docker Compose

Infrastructure

  • Pi-hole
  • Portainer
  • Netdata
  • WG-Easy / WireGuard

Tailscale also provides host-level private networking.

Media / Entertainment

  • Plex
  • Minecraft Server

Application Infrastructure

  • JOS · Python / FastAPI
  • PostgreSQL · Alembic
  • Persistent file storage
  • Google Calendar integration
  • Course / syllabus systems
  • Codex integration

Web Infrastructure

  • usejos.com → Homebase / JOS
  • YesterDay Car Detailing hosting

The portfolio deployment is separate: GitHub → Cloudflare.

Primary storage

512 GB NVMe SSD

Ubuntu, Docker, JOS, PostgreSQL, and application data.

Media storage

4 TB external HDD

Seagate media drive, primarily used by Plex.

Documented architecture, October 2026. WireGuard / WG-Easy reflects the earlier VPN experiment; Tailscale is the preferred private-access path. Upgrades and fallback work remain planned or in progress.

04 / TECHNOLOGIES

A connected stack

Host & containers

Ubuntu Server · Linux · Docker · Docker Compose · Portainer · Linux storage

Networking & access

SSH · Tailscale · WireGuard · WG-Easy · Cloudflare · Cloudflare Tunnel · DNS · Networking

Application & data

Python · FastAPI · PostgreSQL · Alembic · REST APIs · OAuth · Google APIs

Services & operations

Pi-hole · Plex · Netdata · Server monitoring · Web security · Git · GitHub

05 / WHAT I LEARNED

Beyond running containers

Operate the whole system

Linux administration, containerization, Docker networking, filesystems, persistent storage, and monitoring taught me to manage the host as well as the services running on it.

Trace the path of a request

SSH, VPNs, Tailscale, DNS, Cloudflare, reverse tunneling, and HTTP / HTTPS made remote administration and infrastructure troubleshooting practical skills.

Build applications that keep their state

PostgreSQL, migrations, REST APIs, backend development, web hosting, and OAuth connected application behavior to durable data and real infrastructure.

Treat reliability and security as engineering work

Authentication, web security, power management, storage planning, and outages showed why a working application is only one part of a dependable platform.

06 / MEDIA

Hardware photos and screenshots have not been added yet. The architecture above documents how the pieces connect.

← All projectsExplore JOS ↗