TJCloud
This is my personal cloud - for hobby programming, personal projects, and experiments.
Key Technologies
I’m leaning on the following core technologies:
- Terraform (and Terraform Cloud or Github Actions) for provisioning infrastructure as code
- Kubernetes for orchestrating various workloads
- NGINX Ingress for exposing web services to the web from the cluster
- DigitalOcean as my main Kubernetes provider, while using block storage container storage interface for persistent storage.
- Cloudflare for DNS, TLS, and origin server protection.
- Cloudflare Access for zero-trust access
- GitHub Packages as my main image registry.
Previous Technologies
These are tech that I’ve retired from my personal cloud:
- Linode, due to an ominous acquisition by Akamai and a price increase despite no feature parity with DigitalOcean to which I have moved.
- Linode Kubernetes Engine, a simple, developer-friendly, and inexpensive cloud provider for managed Kubernetes, and
- Linode Object Storage for storing data files
- Self-hosted stack for user management and authentication of itnernal services, replaced by Cloudflare Access
- Keycloak for identity and access management
- OAuth2 Proxy as main gateway to protect private services
- Self-hosted stack for image building, replaced by GitHub Actions
- Kaniko for building images inside a Kubernetes cluster
Applications
I host the following applications:
- my personal coding and writing environment from code-server that allows me to develop on the cloud, with any device (including iPads and chromebooks!). Some additional mods features are:
- Protected domains (https://<port>.<domain>) to test web apps running on the server or for exposing environments like Jupyter or Pluto
- Custom web fonts through an NGINX sub_filter
- Python, Julia, JS, and R installations for the confused data person
Disabled Applications
The code is still in the repo, but is no longer in active use:
- PGAdmin, an excellent open source administration console for PostgreSQL
- Mastodon - my own personal Mastodon server for interacting with the Fediverse (open source Twitter but less annoying virality and more useful, insightful content)
- FreshRSS - feed reading service, I read using Reeder on iOS and Mac.
- Kill the Newsletter - A self-hosted, secure version of Kill the Newsletter for managing newsletters and feeding them into FreshRSS.
- PostgreSQL for my main database
- Clickhouse as a requirement for Plausible Analytics, storing clickstream data
- Redis as a requirement for Mastodon, but also for general caching in the development server
- Plausible Analytics for hosting privacy-friendly website analytics
- the Kubernetes Dashboard for administering the cluster, and metrics-server for collecting data to present in the dashboard.