## Summary - Rename `date-modified` -> `modified` in all 80 docs and the `docs-check-frontmatter` task Quartz's `CreatedModifiedDate` plugin recognizes `modified`, `lastmod`, `updated`, and `last-modified` — but not `date-modified`. The wrong field name caused Quartz to ignore frontmatter dates entirely and fall through to filesystem timestamps (UTC inside Dagger), showing Feb 12 on pages built late on Feb 11 PST. ## Test plan - [x] `mise run docs-check-frontmatter` passes - [ ] Kick off docs release after merge — verify rendered dates match frontmatter values Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/158
66 lines
2 KiB
Markdown
66 lines
2 KiB
Markdown
---
|
|
title: Tailscale
|
|
modified: 2026-02-08
|
|
tags:
|
|
- infrastructure
|
|
- networking
|
|
---
|
|
|
|
# Tailscale
|
|
|
|
Tailnet `tail8d86e.ts.net` provides secure networking for all BlumeOps infrastructure.
|
|
|
|
## ACL Management
|
|
|
|
ACLs managed via Pulumi in `pulumi/policy.hujson`.
|
|
|
|
## Groups
|
|
|
|
| Group | Members | Purpose |
|
|
|-------|---------|---------|
|
|
| `group:allisonflix` | admin, member | [[jellyfin]] media access |
|
|
|
|
## Device Tags
|
|
|
|
| Tag | Devices | Purpose |
|
|
|-----|---------|---------|
|
|
| `tag:homelab` | indri | Server infrastructure |
|
|
| `tag:nas` | sifaka | Network-attached storage |
|
|
| `tag:blumeops` | indri, sifaka | Pulumi IaC managed resources |
|
|
| `tag:registry` | indri | Container registry access |
|
|
| `tag:k8s-api` | indri | Kubernetes API server access |
|
|
| `tag:k8s-operator` | (operator pod) | Tailscale operator for k8s |
|
|
| `tag:k8s` | (Ingress proxy pods) | Kubernetes Tailscale Ingress nodes |
|
|
| `tag:flyio-target` | (k8s Ingress nodes) | Endpoints reachable by fly.io proxy |
|
|
|
|
**Important:** Don't tag user-owned devices (like gilbert). Tagging converts them to "tagged devices" which lose user identity and break user-based SSH rules.
|
|
|
|
## Access Matrix
|
|
|
|
| Source | Kiwix | Forge | PyPI | Miniflux | PostgreSQL | NAS | Grafana | Loki |
|
|
|--------|-------|-------|------|----------|------------|-----|---------|------|
|
|
| `autogroup:admin` | Y | Y | Y | Y | Y | Y | Y | Y |
|
|
| `autogroup:member` | Y | Y | Y | Y | Y | - | - | - |
|
|
| `tag:homelab` | - | - | - | - | - | Y | - | - |
|
|
|
|
- **Admins** - full access to all services
|
|
- **Members** - member services only, no Grafana/Loki/NAS
|
|
|
|
## SSH Access
|
|
|
|
| Source | Destinations | Auth |
|
|
|--------|--------------|------|
|
|
| `autogroup:member` | `autogroup:self` | check |
|
|
| `autogroup:admin` | `tag:homelab` | check (12h) |
|
|
| `autogroup:admin` | `tag:nas` | check (12h) |
|
|
|
|
## OAuth Credentials
|
|
|
|
Pulumi uses OAuth client from 1Password (blumeops vault):
|
|
- Scopes: acl, dns, devices, services
|
|
- Auto-applies `tag:blumeops` to IaC-managed resources
|
|
|
|
## Related
|
|
|
|
- [[routing|Routing]] - Service URLs
|
|
- [[hosts|Hosts]] - Device inventory
|