Refresh services list (needs Matt's classification review) #2

Merged
matt merged 5 commits from services-refresh-20260910 into main 2026-09-14 10:28:51 -04:00
Owner

⚠️ Do not merge without Matt's sign-off

Every classification in this PR is a proposal, not a confirmed fact. Nothing here should be read as
published policy until Matt has reviewed the table below and corrected it. The branch page carries a
visible note — "The list and access details below are proposed and pending confirmation, and may
change."
— so that even if it were merged un-reviewed, no access/sign-up claim would read as settled.
Delete that note once the classifications are signed off.

  • Branch: services-refresh-20260910
  • File changed: src/pages/services.astro (1 file, +41 / −13)
  • Build: npm ci && npm run build → exit 0 (see bottom)
  • CI: this is a PR branch, so only the testbuild job runs (npm ci && npm run build). No deploy
    can happen from a PR branch; main is untouched.

⚠️ The testbuild check on this PR is RED — pre-existing workflow bug, not this change

CI dies in the Checkout step, before npm ci ever runs. Verbatim full log of the
pull_request-triggered task (15 lines):

2026-09-10T20:45:57.2211538Z Runner 21667a6d-e500-4429-8120-3004ae905033 (version:v13.1.0) received task 120 of job testbuild, triggered by event: pull_request
2026-09-10T20:45:57.2297514Z workflow prepared
2026-09-10T20:45:57.2463244Z 🚀  Start image=node:current-bookworm
2026-09-10T20:45:57.2566190Z Cleaning up network for job testbuild, and network name is: WORKFLOW-fb2a6278b46ed54fc90d59ab6d1a6d84
2026-09-10T20:45:57.3710200Z   🐳  docker create image=node:current-bookworm platform=linux/amd64 entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="WORKFLOW-fb2a6278b46ed54fc90d59ab6d1a6d84"
2026-09-10T20:45:57.5525648Z   🐳  docker run image=node:current-bookworm platform=linux/amd64 entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="WORKFLOW-fb2a6278b46ed54fc90d59ab6d1a6d84"
2026-09-10T20:45:58.1109811Z ⭐ Run Main Checkout
2026-09-10T20:45:58.1164340Z   🐳  docker exec cmd=[sh /var/run/act/c721a8a4e0dd0bfd.sh] user= workdir=
2026-09-10T20:45:58.2107425Z   🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/0.sh] user= workdir=
2026-09-10T20:45:58.2985612Z Cloning into '.'...
2026-09-10T20:45:58.4390323Z warning: Could not find remote branch 2 to clone.
2026-09-10T20:45:58.4390935Z fatal: Remote branch 2 not found in upstream origin
2026-09-10T20:45:58.4610473Z ⚙️ [runner]: exitcode '128': failure
2026-09-10T20:45:58.4613456Z 🏁  Job failed
2026-09-10T20:45:58.8860183Z Job 'testbuild' failed

Cause: the Checkout step clones --branch "$GITHUB_REF_NAME". On a pull_request event Forgejo sets
GITHUB_REF_NAME to the PR number (2), not the head branch — so git asks for a branch named 2
and exits 128. This repo had never run the PR path before (PR #2 is its first pull request, and the
pull_request job is the only thing that ever runs testbuild), so the bug was never exercised. It will
fail on any PR, not just this one.

Because the job dies in Checkout, CI never reaches npm ci && npm run build, so the red tick says
nothing about this change — the identical build was run locally against this exact commit and passed
(verbatim below). One-line fix, here or in a separate PR: use --branch "$GITHUB_HEAD_REF", or drop
--branch and git checkout "$GITHUB_SHA". I deliberately did not touch build.yml — a
services-list refresh shouldn't silently change CI.

Where the list came from

Source of truth = the edge reverse-proxy config that fronts *.goober.cloud, *.mattcompton.dev and
gnometravel.com. Re-verified today (2026-09-10): 32 proxy hosts, an exact match for the inventory I
was handed — no drift.
Breakdown: 15 *.goober.cloud, 16 *.mattcompton.dev, 1 gnometravel.com.

Two user-facing hosts (status.goober.cloud, emailsignup.goober.cloud) are not on that proxy — a
second, VPS-side ingress serves them — so the live set was confirmed by HTTP responses as well as by
config, not by config alone. This PR body deliberately does not enumerate internal hostnames, backends
or ports.

Table A — services proposed for the page

Service name URL Proposed classification What changed vs today
VPS Status Page https://status.goober.cloud/status/goober public-free No change (already listed; live, HTTP 200)
Maine Status Page https://kuma.goober.cloud/status/goober public-free Renamed from "ME Status Page"; copy "ME Proxmox" → "Maine Proxmox"
Arch Linux Package Mirror https://arch.goober.cloud public-free No change
Artix Linux Package Mirror https://artix.goober.cloud public-free No change
Email https://emailsignup.goober.cloud registration-required No change (classification unchanged; portal live, HTTP 200)
NextCloud https://next.goober.cloud registration-required No change
Git (Forgejo) https://git.goober.cloud registration-required — proposed Fixed: was "Git → https://gitlab.goober.cloud / GitLab instance". URL is now git.goober.cloud and the copy says Forgejo. I also dropped the old "Goober.Cloud email required to register" line — see notes
Immich https://immich.goober.cloud registration-required — proposed Added (was not listed); live, HTTP 200
Vaultwarden https://vault.goober.cloud registration-required — proposed Added (was not listed); live, HTTP 200
Collabora Online https://office.goober.cloud registration-required — proposed Added (was not listed); live, HTTP 200
Custom VM's on Proxmox (no public URL — by request) by-request No change

Table B — live hosts deliberately NOT proposed for the page

Service name URL Proposed classification What changed vs today
GitLab https://gitlab.goober.cloud private — proposed Removed from the page. Still answers with a GitLab sign-in page, but Forgejo is now the code host. Keep it listed only if you want a deprecation signpost
Proxmox web UI https://pve.goober.cloud private Not listed, not proposed for listing — admin console
Glance https://glance.goober.cloud private — proposed Not listed; never was. Currently returns 502 (upstream down)
Registration host https://reg.goober.cloud unknown — needs your call Not listed. Currently 502; I don't know what it's for
Scoreboard host https://score.goober.cloud unknown — needs your call Not listed. Currently 502; I don't know what it's for
Personal page https://michal.goober.cloud private Not listed. Serves a joke page ("itd alive"); not a service
Main site https://goober.cloud public-free Not repeated inside its own services list
~16 personal/admin services on *.mattcompton.dev *.mattcompton.dev private Out of scope — dashboards, monitoring, media, home automation, analytics and admin tooling. Deliberately not enumerated in this public PR body; full inventory available on request
AUR package mirror https://aur.mattcompton.dev public-free in practice — needs your call Left off: it lives on a personal domain, not goober.cloud. Say the word and I'll add it, or alias it under goober.cloud
gnometravel.com https://gnometravel.com private Separate personal project site, not a goober.cloud service

Notes for Matt

  1. The Forgejo sign-up policy is the one thing I could not verify. The old copy said a Goober.Cloud
    email is required to register, but that was written for GitLab. Rather than carry an unverified
    requirement over to Forgejo I replaced it with "Sign-up details pending confirmation." Tell me the
    real rule and I'll put it back.
  2. Immich / Vaultwarden / Collabora Online are proposed as registration-required purely because
    they are account-based products — not because I confirmed anything. Reclassify them freely
    (public-free / by-request / private); the page copy is one line per item.
  3. "Maine" spelling. The page was renamed VT → ME in commit 271f4e7. Given the standing rule that
    public homelab docs use the live cluster names rather than old ones, I spelled it out as "Maine".
    Shout if you'd rather it read "ME Status Page".
  4. No structure touched. Same three sections, same ServiceCategoryCard / Section / Heading
    components, same tailwind classes, same by-request block. The site's existing ad-blocker popup comes
    from the layout and is unchanged. Only copy and URLs changed.
  5. Nothing was invented. No new service is claimed to be shared publicly and no new registration
    requirement is asserted — each addition is tagged "pending confirmation" in the page copy and marked
    proposed here.

Build result — this exact commit, run locally (verbatim):

> website@0.0.1 build
> astro check && astro build

20:45:22 [@astrojs/sitemap] `sitemap-index.xml` created at `dist`
20:45:22 [build] 27 page(s) built in 6.65s
20:45:22 [build] Complete!
exit code: 0

astro check printed only pre-existing warnings (Base.astro inline-script hint, Astro.glob
deprecation in index.astro/tags) — nothing from services.astro.

## ⚠️ Do not merge without Matt's sign-off Every classification in this PR is a **proposal**, not a confirmed fact. Nothing here should be read as published policy until Matt has reviewed the table below and corrected it. The branch page carries a visible note — *"The list and access details below are proposed and pending confirmation, and may change."* — so that even if it were merged un-reviewed, no access/sign-up claim would read as settled. Delete that note once the classifications are signed off. - **Branch:** `services-refresh-20260910` - **File changed:** `src/pages/services.astro` (1 file, +41 / −13) - **Build:** `npm ci && npm run build` → **exit 0** (see bottom) - **CI:** this is a PR branch, so only the `testbuild` job runs (`npm ci && npm run build`). No deploy can happen from a PR branch; `main` is untouched. ## ⚠️ The `testbuild` check on this PR is RED — pre-existing workflow bug, not this change CI dies in the **Checkout** step, *before* `npm ci` ever runs. Verbatim full log of the `pull_request`-triggered task (15 lines): ``` 2026-09-10T20:45:57.2211538Z Runner 21667a6d-e500-4429-8120-3004ae905033 (version:v13.1.0) received task 120 of job testbuild, triggered by event: pull_request 2026-09-10T20:45:57.2297514Z workflow prepared 2026-09-10T20:45:57.2463244Z 🚀 Start image=node:current-bookworm 2026-09-10T20:45:57.2566190Z Cleaning up network for job testbuild, and network name is: WORKFLOW-fb2a6278b46ed54fc90d59ab6d1a6d84 2026-09-10T20:45:57.3710200Z 🐳 docker create image=node:current-bookworm platform=linux/amd64 entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="WORKFLOW-fb2a6278b46ed54fc90d59ab6d1a6d84" 2026-09-10T20:45:57.5525648Z 🐳 docker run image=node:current-bookworm platform=linux/amd64 entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="WORKFLOW-fb2a6278b46ed54fc90d59ab6d1a6d84" 2026-09-10T20:45:58.1109811Z ⭐ Run Main Checkout 2026-09-10T20:45:58.1164340Z 🐳 docker exec cmd=[sh /var/run/act/c721a8a4e0dd0bfd.sh] user= workdir= 2026-09-10T20:45:58.2107425Z 🐳 docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/0.sh] user= workdir= 2026-09-10T20:45:58.2985612Z Cloning into '.'... 2026-09-10T20:45:58.4390323Z warning: Could not find remote branch 2 to clone. 2026-09-10T20:45:58.4390935Z fatal: Remote branch 2 not found in upstream origin 2026-09-10T20:45:58.4610473Z ⚙️ [runner]: exitcode '128': failure 2026-09-10T20:45:58.4613456Z 🏁 Job failed 2026-09-10T20:45:58.8860183Z Job 'testbuild' failed ``` **Cause:** the Checkout step clones `--branch "$GITHUB_REF_NAME"`. On a `pull_request` event Forgejo sets `GITHUB_REF_NAME` to the **PR number** (`2`), not the head branch — so git asks for a branch named `2` and exits 128. This repo had never run the PR path before (PR #2 is its first pull request, and the `pull_request` job is the only thing that ever runs `testbuild`), so the bug was never exercised. It will fail on **any** PR, not just this one. Because the job dies in Checkout, CI never reaches `npm ci && npm run build`, so the red tick says nothing about this change — the identical build was run locally against this exact commit and passed (verbatim below). One-line fix, here or in a separate PR: use `--branch "$GITHUB_HEAD_REF"`, or drop `--branch` and `git checkout "$GITHUB_SHA"`. **I deliberately did not touch `build.yml`** — a services-list refresh shouldn't silently change CI. ## Where the list came from Source of truth = the edge reverse-proxy config that fronts `*.goober.cloud`, `*.mattcompton.dev` and `gnometravel.com`. Re-verified today (2026-09-10): **32 proxy hosts, an exact match for the inventory I was handed — no drift.** Breakdown: 15 `*.goober.cloud`, 16 `*.mattcompton.dev`, 1 `gnometravel.com`. Two user-facing hosts (`status.goober.cloud`, `emailsignup.goober.cloud`) are *not* on that proxy — a second, VPS-side ingress serves them — so the live set was confirmed by HTTP responses as well as by config, not by config alone. This PR body deliberately does not enumerate internal hostnames, backends or ports. ## Table A — services proposed for the page | Service name | URL | Proposed classification | What changed vs today | |---|---|---|---| | VPS Status Page | https://status.goober.cloud/status/goober | public-free | No change (already listed; live, HTTP 200) | | Maine Status Page | https://kuma.goober.cloud/status/goober | public-free | **Renamed** from "ME Status Page"; copy "ME Proxmox" → "Maine Proxmox" | | Arch Linux Package Mirror | https://arch.goober.cloud | public-free | No change | | Artix Linux Package Mirror | https://artix.goober.cloud | public-free | No change | | Email | https://emailsignup.goober.cloud | registration-required | No change (classification unchanged; portal live, HTTP 200) | | NextCloud | https://next.goober.cloud | registration-required | No change | | Git (Forgejo) | https://git.goober.cloud | registration-required — **proposed** | **Fixed**: was "Git → https://gitlab.goober.cloud / GitLab instance". URL is now `git.goober.cloud` and the copy says Forgejo. I also dropped the old "Goober.Cloud email required to register" line — see notes | | Immich | https://immich.goober.cloud | registration-required — **proposed** | **Added** (was not listed); live, HTTP 200 | | Vaultwarden | https://vault.goober.cloud | registration-required — **proposed** | **Added** (was not listed); live, HTTP 200 | | Collabora Online | https://office.goober.cloud | registration-required — **proposed** | **Added** (was not listed); live, HTTP 200 | | Custom VM's on Proxmox | (no public URL — by request) | by-request | No change | ## Table B — live hosts deliberately NOT proposed for the page | Service name | URL | Proposed classification | What changed vs today | |---|---|---|---| | GitLab | https://gitlab.goober.cloud | private — **proposed** | **Removed from the page.** Still answers with a GitLab sign-in page, but Forgejo is now the code host. Keep it listed only if you want a deprecation signpost | | Proxmox web UI | https://pve.goober.cloud | private | Not listed, not proposed for listing — admin console | | Glance | https://glance.goober.cloud | private — **proposed** | Not listed; never was. Currently returns **502** (upstream down) | | Registration host | https://reg.goober.cloud | unknown — **needs your call** | Not listed. Currently **502**; I don't know what it's for | | Scoreboard host | https://score.goober.cloud | unknown — **needs your call** | Not listed. Currently **502**; I don't know what it's for | | Personal page | https://michal.goober.cloud | private | Not listed. Serves a joke page ("itd alive"); not a service | | Main site | https://goober.cloud | public-free | Not repeated inside its own services list | | ~16 personal/admin services on `*.mattcompton.dev` | `*.mattcompton.dev` | private | Out of scope — dashboards, monitoring, media, home automation, analytics and admin tooling. Deliberately not enumerated in this public PR body; full inventory available on request | | AUR package mirror | https://aur.mattcompton.dev | public-free in practice — **needs your call** | Left off: it lives on a personal domain, not `goober.cloud`. Say the word and I'll add it, or alias it under goober.cloud | | gnometravel.com | https://gnometravel.com | private | Separate personal project site, not a goober.cloud service | ## Notes for Matt 1. **The Forgejo sign-up policy is the one thing I could not verify.** The old copy said a Goober.Cloud email is required to register, but that was written for GitLab. Rather than carry an unverified requirement over to Forgejo I replaced it with "Sign-up details pending confirmation." Tell me the real rule and I'll put it back. 2. **Immich / Vaultwarden / Collabora Online** are proposed as *registration-required* purely because they are account-based products — not because I confirmed anything. Reclassify them freely (public-free / by-request / private); the page copy is one line per item. 3. **"Maine" spelling.** The page was renamed VT → ME in commit 271f4e7. Given the standing rule that public homelab docs use the live cluster names rather than old ones, I spelled it out as "Maine". Shout if you'd rather it read "ME Status Page". 4. **No structure touched.** Same three sections, same `ServiceCategoryCard` / `Section` / `Heading` components, same tailwind classes, same by-request block. The site's existing ad-blocker popup comes from the layout and is unchanged. Only copy and URLs changed. 5. **Nothing was invented.** No new service is claimed to be shared publicly and no new registration requirement is asserted — each addition is tagged "pending confirmation" in the page copy and marked *proposed* here. **Build result — this exact commit, run locally (verbatim):** ``` > website@0.0.1 build > astro check && astro build 20:45:22 [@astrojs/sitemap] `sitemap-index.xml` created at `dist` 20:45:22 [build] 27 page(s) built in 6.65s 20:45:22 [build] Complete! exit code: 0 ``` `astro check` printed only pre-existing warnings (`Base.astro` inline-script hint, `Astro.glob` deprecation in `index.astro`/`tags`) — nothing from `services.astro`.
Refresh services list: Forgejo, Maine rename, add Immich/Vaultwarden/Collabora (proposal)
Some checks failed
build-and-deploy / testbuild (push) Has been skipped
build-and-deploy / build_and_deploy (push) Has been skipped
build-and-deploy / testbuild (pull_request) Failing after 1s
build-and-deploy / build_and_deploy (pull_request) Has been skipped
99029d66f2
- Git entry is now Forgejo at https://git.goober.cloud (was "GitLab instance" at gitlab.goober.cloud)
- "ME Status Page" -> "Maine Status Page" (match the live cluster name, not the old abbreviation)
- Add Immich, Vaultwarden and Collabora Online as proposed additions; each is marked
  "pending confirmation" in the copy rather than asserting an access policy
- Add a page note that the list and access details are proposed and pending confirmation
- No changes to page structure, components or tailwind classes; no internal hostnames,
  IPs or proxy-tool names introduced

Proposal only -- needs Matt's classification review before merge.
ci: re-trigger after workflow checkout fix
Some checks failed
build-and-deploy / testbuild (push) Has been skipped
build-and-deploy / build_and_deploy (push) Has been skipped
build-and-deploy / testbuild (pull_request) Failing after 2s
build-and-deploy / build_and_deploy (pull_request) Has been skipped
7c72a4698f
merge main: pick up CI checkout fix (Forgejo runs the PR's head workflow)
All checks were successful
build-and-deploy / testbuild (push) Has been skipped
build-and-deploy / build_and_deploy (push) Has been skipped
build-and-deploy / testbuild (pull_request) Successful in 42s
build-and-deploy / build_and_deploy (pull_request) Has been skipped
e5bed631a3
Author
Owner

CI is green now (run #12) — the earlier red run was not caused by this diff.

Two problems, both fixed:

  1. .forgejo/workflows/build.yml cloned with --branch "$GITHUB_REF_NAME". On Forgejo pull_request events that variable is the PR number (2), so Checkout died before npm ci ever ran — a latent bug this repo had never exercised, because main pushes only run the deploy job.
  2. Forgejo runs a PR's workflow from the head branch, not from main, so fixing main alone was not enough. The fix is now on this branch too, via a merge of main into it.

Net effect on this PR: the diff against main is still only src/pages/services.astro (+41/−13) — the merge brought the workflow fix along without adding it to the diff. Runs: #8 (main deploy, post-fix) success, #12 (this PR's test build) success.

Nothing about the service-list content changed in this fix; the classifications below are still awaiting Matt's review.

CI is **green** now (run #12) — the earlier red run was not caused by this diff. Two problems, both fixed: 1. `.forgejo/workflows/build.yml` cloned with `--branch "$GITHUB_REF_NAME"`. On Forgejo `pull_request` events that variable is the **PR number** (`2`), so Checkout died before `npm ci` ever ran — a latent bug this repo had never exercised, because `main` pushes only run the deploy job. 2. Forgejo runs a PR's workflow from the **head branch**, not from `main`, so fixing `main` alone was not enough. The fix is now on this branch too, via a merge of `main` into it. Net effect on this PR: **the diff against `main` is still only `src/pages/services.astro` (+41/−13)** — the merge brought the workflow fix along without adding it to the diff. Runs: #8 (main deploy, post-fix) success, #12 (this PR's test build) success. Nothing about the service-list content changed in this fix; the classifications below are still awaiting Matt's review.
services: add Goober Paste (PrivateBin) to Public & Free to Access
All checks were successful
build-and-deploy / testbuild (push) Has been skipped
build-and-deploy / build_and_deploy (push) Has been skipped
build-and-deploy / testbuild (pull_request) Successful in 48s
build-and-deploy / build_and_deploy (pull_request) Has been skipped
9a347b4517
services: apply Matt's review — keep Maine/Forgejo/Vaultwarden/Immich (10GB cap), drop Collabora, access by request
All checks were successful
build-and-deploy / testbuild (push) Has been skipped
build-and-deploy / build_and_deploy (push) Has been skipped
build-and-deploy / testbuild (pull_request) Successful in 43s
build-and-deploy / build_and_deploy (pull_request) Has been skipped
970e76bce6
matt merged commit a97a751d64 into main 2026-09-14 10:28:51 -04:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
goobercloud/website!2
No description provided.