Some checks failed
Deploy Fly.io Proxy / deploy (push) Failing after 9s
## Summary - Adds a Fly.io reverse proxy (`blumeops-proxy`) that tunnels public traffic to homelab services over Tailscale - First service exposed: `docs.eblu.me` — the Quartz static docs site - Includes Pulumi IaC for Tailscale auth key/ACLs and Gandi DNS CNAME - Adds mise tasks (`fly-deploy`, `fly-setup`, `fly-shutoff`) and Forgejo CI workflow ## Key details - Fly.io Firecracker VMs support TUN devices natively — no userspace networking needed - Tailscale auth key is `preauthorized=True` to avoid device approval hangs on container restarts - nginx caches aggressively for the static site; health check is on the default_server block - ACLs restrict `tag:flyio-proxy` to `tag:k8s` on port 443 only - DNS CNAME deployed and verified: `docs.eblu.me` → `blumeops-proxy.fly.dev` ## Test plan - [x] `curl -sf https://blumeops-proxy.fly.dev/healthz` returns `ok` - [x] `curl -I -H "Host: docs.eblu.me" https://blumeops-proxy.fly.dev/` returns 200 with `X-Cache-Status` - [x] `curl -I https://docs.eblu.me/` returns 200 with valid Let's Encrypt cert - [x] `dig forge.ops.eblu.me` still resolves to 100.98.163.89 (private services unaffected) - [x] Set `FLY_DEPLOY_TOKEN` Forgejo Actions secret for CI auto-deploy 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/120
85 lines
3.4 KiB
Markdown
85 lines
3.4 KiB
Markdown
# blumeops
|
|
|
|
```
|
|
l0K k..:k.
|
|
.:...c. ;c....
|
|
....'o x.....
|
|
....k x....
|
|
... l' 'c....
|
|
....,l o'....
|
|
.....x k....
|
|
.....d. c....
|
|
... l x....
|
|
.,.d ;c.c'
|
|
'c':; x',c.
|
|
.:,'o .x.::.
|
|
.;:.k ,:.c'
|
|
,c.c';:.
|
|
.,.:;.
|
|
;'.c, l
|
|
d',c..:.d.
|
|
O.:;. 'c';c
|
|
;c.c' .:;.x
|
|
o',c. .;:.k
|
|
x.::. 'c.l.
|
|
dOKl.c, .c,'o
|
|
0l'...... ..' .::.ocx.
|
|
'o ............ o .... :olx;
|
|
x,ox;. ....... .k ....,dKKo;..x
|
|
'd,OXXXXk:. ...... ; ;:dXOl;',';l;o;
|
|
x,oXXXXXXXXXkc. ... .lc,',':dKNNNx;x;
|
|
;o;0KXXXXXXXXXXXX0l. .',ckNNNNNNNNNxco0d
|
|
l,d0oOXKOKXXXXKXXXX0. kNNNNNNNNNNNNNXxloo::
|
|
.OXxdXKOX0kXXXX0. .KNNNNNNNNNNXONX0o.
|
|
,OdxKldXXXXx. ,NNNNNNNNNNNKoc
|
|
:.OXXkKo .kNNNNNNNNXx.
|
|
':0c .NdNkXkc
|
|
```
|
|
|
|
*Blue Mops* — GitOps for Erich Blume's personal computing environment.
|
|
|
|
## What is this?
|
|
|
|
Infrastructure-as-code for my tailnet (`tail8d86e.ts.net`). This repo contains
|
|
ansible playbooks, configuration, and automation for managing my personal
|
|
infrastructure.
|
|
|
|
This codebase was heavily co-authored by Claude Code, as an experiment in
|
|
LLM-assisted development. I want to include a personal note here that I don't
|
|
know entirely how I feel about LLMs in our current era, but it felt important
|
|
to learn.
|
|
|
|
## Development
|
|
|
|
### Pre-commit Hooks
|
|
|
|
This repo uses [pre-commit](https://pre-commit.com) for code quality and consistency. Install hooks with:
|
|
|
|
```bash
|
|
uvx pre-commit install
|
|
```
|
|
|
|
Run all hooks manually:
|
|
|
|
```bash
|
|
uvx pre-commit run --all-files
|
|
```
|
|
|
|
Hooks include:
|
|
- **General**: trailing whitespace, end-of-file fixer, large files, merge conflicts
|
|
- **Secrets**: [TruffleHog](https://github.com/trufflesecurity/trufflehog) for secret detection
|
|
- **YAML**: yamllint, ansible-lint
|
|
- **Python**: ruff (linting + formatting)
|
|
- **Shell**: shellcheck, shfmt
|
|
- **TOML**: taplo
|
|
- **JSON**: prettier
|
|
|
|
## CI/CD
|
|
|
|
This repo uses [Forgejo Actions](https://forgejo.org/docs/latest/user/actions/) for CI/CD. Workflows live in `.forgejo/workflows/` (not `.github/workflows/`). The runner executes jobs in host mode within the Kubernetes cluster.
|
|
|
|
## Documentation
|
|
|
|
Documentation lives in `docs/` and follows the [Diataxis](https://diataxis.fr/) framework. Published at https://docs.eblu.me.
|
|
|
|
Docs use [Obsidian](https://obsidian.md) wiki-link syntax (`[[link]]`) for cross-references. Edit with any markdown editor, or use [obsidian.nvim](https://github.com/obsidian-nvim/obsidian.nvim) for enhanced navigation.
|