diff --git a/.github/workflows/_validate-shapes.yml b/.github/workflows/_validate-shapes.yml index 0a6a4a8..6034dad 100644 --- a/.github/workflows/_validate-shapes.yml +++ b/.github/workflows/_validate-shapes.yml @@ -16,9 +16,9 @@ name: _validate-shapes # on: { pull_request: {}, workflow_dispatch: {} } # jobs: # shapes: -# uses: Chrison-dev/Homelab/.github/workflows/_validate-shapes.yml@main +# uses: Chrison-Homelab/Homelab/.github/workflows/_validate-shapes.yml@main # secrets: -# schema_token: ${{ secrets.SCHEMA_RO_PAT }} # PAT: contents:read on Chrison-dev/Homelab +# schema_token: ${{ secrets.SCHEMA_RO_PAT }} # PAT: contents:read on Chrison-Homelab/Homelab # # The full-fidelity gate stays the superproject's `validate-shapes.yml` # (./build.sh ValidateShapes) — this is the lightweight, early-feedback mirror. @@ -38,7 +38,7 @@ on: default: '.' secrets: schema_token: - description: 'PAT with contents:read on the private Chrison-dev/Homelab repo (to download the release asset). GitHub secret ids allow only alphanumerics + underscore — no hyphen.' + description: 'PAT with contents:read on the private Chrison-Homelab/Homelab repo (to download the release asset). GitHub secret ids allow only alphanumerics + underscore — no hyphen.' required: true jobs: @@ -55,7 +55,7 @@ jobs: set -euo pipefail mkdir -p .validator gh release download "${{ inputs.schema-ref }}" \ - --repo Chrison-dev/Homelab \ + --repo Chrison-Homelab/Homelab \ --pattern 'homelab-validate-linux-x64.tar.gz' \ --dir .validator tar -C .validator -xzf .validator/homelab-validate-linux-x64.tar.gz diff --git a/.gitmodules b/.gitmodules index 1514db9..e2f395a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,12 +1,12 @@ [submodule "stacks/Komodo"] path = stacks/Komodo - url = https://github.com/Chrison-dev/Homelab.Stacks.Komodo.git + url = https://github.com/Chrison-Homelab/Homelab.Stacks.Komodo.git [submodule "stacks/DevOps"] path = stacks/DevOps - url = https://github.com/Chrison-dev/Homelab.Stacks.DevOps.git + url = https://github.com/Chrison-Homelab/Homelab.Stacks.DevOps.git [submodule "stacks/ErpForFactoryGames"] path = stacks/ErpForFactoryGames - url = https://github.com/Chrison-dev/Homelab.Stacks.ErpForFactoryGames.git + url = https://github.com/Chrison-Homelab/Homelab.Stacks.ErpForFactoryGames.git [submodule "vendor/ProxmoxSharp"] path = vendor/ProxmoxSharp url = https://github.com/Chrison-dev/ProxmoxSharp.git @@ -18,10 +18,10 @@ url = https://github.com/Chrison-dev/SynoSharp.git [submodule "stacks/Azure"] path = stacks/Azure - url = https://github.com/Chrison-dev/Homelab.Stacks.Azure.git + url = https://github.com/Chrison-Homelab/Homelab.Stacks.Azure.git [submodule "stacks/SmartHome"] path = stacks/SmartHome - url = https://github.com/Chrison-dev/Homelab.Stacks.SmartHome.git + url = https://github.com/Chrison-Homelab/Homelab.Stacks.SmartHome.git [submodule "stacks/BuildLab"] path = stacks/BuildLab - url = https://github.com/Chrison-dev/Homelab.Stacks.BuildLab.git + url = https://github.com/Chrison-Homelab/Homelab.Stacks.BuildLab.git diff --git a/CLAUDE.md b/CLAUDE.md index 2b58383..0f63b2e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -107,15 +107,15 @@ Each stack repo runs an **opt-in** `validate.yml` (calls the superproject's reusable [`_validate-shapes.yml`](.github/workflows/_validate-shapes.yml)), which downloads the pinned schema/validator from the private Homelab `schema-v1` release. That download needs the **`SCHEMA_RO_PAT`** Actions secret — a fine-grained PAT with -`contents:read` on `Chrison-dev/Homelab`, stored in Bitwarden as *"Homelab Schema +`contents:read` on `Chrison-Homelab/Homelab`, stored in Bitwarden as *"Homelab Schema Read PAT"*. **Whenever you extract/create a new stack repo, make sure it's in the secret's visibility scope**, else its `validate` check fails at the download step: ```bash # zero-maintenance: covers every current + future private stack repo -bw get password "Homelab Schema Read PAT" | gh secret set SCHEMA_RO_PAT --org Chrison-dev --visibility all +bw get password "Homelab Schema Read PAT" | gh secret set SCHEMA_RO_PAT --org Chrison-Homelab --visibility all # or tight (must re-run with the new repo appended each time): -bw get password "Homelab Schema Read PAT" | gh secret set SCHEMA_RO_PAT --org Chrison-dev \ +bw get password "Homelab Schema Read PAT" | gh secret set SCHEMA_RO_PAT --org Chrison-Homelab \ --visibility selected --repos Homelab.Stacks.SmartHome,Homelab.Stacks.BuildLab,Homelab.Stacks. ``` diff --git a/Infrastructure/schema/shape.schema.json b/Infrastructure/schema/shape.schema.json index 86ff50e..4f667bd 100644 --- a/Infrastructure/schema/shape.schema.json +++ b/Infrastructure/schema/shape.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/Chrison-dev/Homelab/Infrastructure/schema/shape.schema.json", + "$id": "https://github.com/Chrison-Homelab/Homelab/Infrastructure/schema/shape.schema.json", "title": "Homelab Infrastructure Shape", "description": "Declarative shape of a unit of homelab infrastructure provisioned by the C#-native engine / community-scripts renderer. See ADR-0001. kind: Stack groups LXC members and carries a CTID range + inheritable defaults; kind: LXC describes a container with the full Proxmox surface (most fields optional). The community-scripts create path (Deploy-Shape.ps1) honours a subset; the rest is converge-only (ProxmoxSharp, BL-010).", "type": "object", @@ -323,7 +323,7 @@ "properties": { "name": { "type": "string", "description": "Provider key the engine knows (e.g. 'github', 'cloudflare')." }, "action": { "type": "string", "description": "Provider verb (e.g. 'org-runner-token', 'tunnel-token')." }, - "with": { "type": "object", "description": "Action arguments (e.g. { org: Chrison-dev }).", "additionalProperties": true }, + "with": { "type": "object", "description": "Action arguments (e.g. { org: Chrison-Homelab }).", "additionalProperties": true }, "auth": { "$ref": "#/$defs/secretSource", "description": "How to authenticate to the provider — typically { env: }." } } } diff --git a/README.md b/README.md index 00a8aec..c84b97e 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ is a self-contained service/stack with its own lifecycle. Cross-cutting concerns ### Stack conventions Every `Homelab.Stacks.*` repo follows the same shape (see -[`ErpForFactoryGames`](https://github.com/Chrison-dev/Homelab.Stacks.ErpForFactoryGames) +[`ErpForFactoryGames`](https://github.com/Chrison-Homelab/Homelab.Stacks.ErpForFactoryGames) as the reference): - **`compose.yml`** + per-service `*.env` / `stack.env` — the stack itself. diff --git a/docs/Backlog.md b/docs/Backlog.md index 331b15a..8458c4d 100644 --- a/docs/Backlog.md +++ b/docs/Backlog.md @@ -4,7 +4,7 @@ - **Board:** [Homelab Backlog (Project #7)](https://github.com/users/ChrisonSimtian/projects/7) — the Idea → Planned → In Progress → Done view, with **Stage** and **Priority** fields. -- **Items:** [GitHub Issues](https://github.com/Chrison-dev/Homelab/issues) — one +- **Items:** [GitHub Issues](https://github.com/Chrison-Homelab/Homelab/issues) — one per `BL-xxx`. Labels carry priority (`priority:high|medium|low`) and tags (`iac`, `proxmox`, `networking`, `ci-cd`, …). - **Plans:** the detailed implementation plans stay in-repo under diff --git a/docs/Scripts.md b/docs/Scripts.md index 3e62c20..0607cae 100644 --- a/docs/Scripts.md +++ b/docs/Scripts.md @@ -10,9 +10,9 @@ All scripts are located in the `src/Proxmox/` directory and are designed to run Installs PowerShell Core on the Proxmox node for running PowerShell scripts. Uses snap package manager as Microsoft doesn't officially support Debian 13 yet. -**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/install-powershell.sh)` +**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/install-powershell.sh)` -**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/install-powershell.sh)` +**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/install-powershell.sh)` ### Inventory @@ -20,47 +20,47 @@ Collects hardware information from Proxmox nodes in Markdown format. Output is f **Bash version:** -**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/inventory.sh)` +**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/inventory.sh)` -**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/inventory.sh)` +**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/inventory.sh)` **PowerShell version:** **Direct execution:** ```bash -pwsh -c "Invoke-Expression (Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/inventory.ps1' -UseBasicParsing).Content" +pwsh -c "Invoke-Expression (Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/inventory.ps1' -UseBasicParsing).Content" ``` **Using wget (download first):** ```bash -wget https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/inventory.ps1 -O /tmp/inventory.ps1 && pwsh /tmp/inventory.ps1 +wget https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/inventory.ps1 -O /tmp/inventory.ps1 && pwsh /tmp/inventory.ps1 ``` ### Hardware Information Quick hardware overview script that collects vendor and model information for key components (CPU, mainboard, RAM, graphics, NICs). -**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/hardware-info.sh)` +**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/hardware-info.sh)` -**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/hardware-info.sh)` +**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/hardware-info.sh)` ### Detailed Hardware Information Comprehensive hardware information collector that gathers detailed information about CPU, memory, storage, network, GPU, and system components. More detailed than the basic hardware-info.sh script. -**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/get-hardware-info.sh)` +**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/get-hardware-info.sh)` -**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/get-hardware-info.sh)` +**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/get-hardware-info.sh)` ### CPU Snapshot Collects CPU configuration and usage statistics for VMs and LXC containers. Useful for capacity planning, performance analysis, and resource optimization. -**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/proxmox-cpu-snapshot.sh)` +**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/proxmox-cpu-snapshot.sh)` -**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/proxmox-cpu-snapshot.sh)` +**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/proxmox-cpu-snapshot.sh)` ### NFS Shares Setup @@ -71,14 +71,14 @@ This also allows us to at some point add a SSD to the node and use this for cach **Bash version:** -**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/setup-nfs-shares.sh)` +**CURL:** `bash <(curl -fsSL https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/setup-nfs-shares.sh)` -**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/setup-nfs-shares.sh)` +**WGET:** `bash <(wget -qO- https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/setup-nfs-shares.sh)` **With parameters:** ```bash -curl -fsSL https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/setup-nfs-shares.sh | bash -s -- "192.168.1.100" "MyNAS" +curl -fsSL https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/setup-nfs-shares.sh | bash -s -- "192.168.1.100" "MyNAS" ``` **PowerShell version:** @@ -86,11 +86,11 @@ curl -fsSL https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmo **Direct execution:** ```bash -pwsh -c "Invoke-Expression (Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/setup-nfs-shares.ps1' -UseBasicParsing).Content" +pwsh -c "Invoke-Expression (Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/setup-nfs-shares.ps1' -UseBasicParsing).Content" ``` **With custom parameters:** ```bash -pwsh -c "Invoke-Expression (Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/Chrison-dev/Homelab/main/src/Proxmox/setup-nfs-shares.ps1' -UseBasicParsing).Content" -- -NasIP "192.168.1.100" -NasName "MyNAS" +pwsh -c "Invoke-Expression (Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/Chrison-Homelab/Homelab/main/src/Proxmox/setup-nfs-shares.ps1' -UseBasicParsing).Content" -- -NasIP "192.168.1.100" -NasName "MyNAS" ``` diff --git a/docs/adr/ADR-0004-storage-architecture.md b/docs/adr/ADR-0004-storage-architecture.md index 253b83a..b94c2ec 100644 --- a/docs/adr/ADR-0004-storage-architecture.md +++ b/docs/adr/ADR-0004-storage-architecture.md @@ -4,7 +4,7 @@ - **Date:** 2026-06-01 - **Deciders:** Chris - **Relates to:** [ADR-0001](ADR-0001-iac-tooling.md), [BL-016 NFS hardening](../plans/BL-016-nfs-hardening.md), - build issue [#108](https://github.com/Chrison-dev/Homelab/issues/108), consumer [#105](https://github.com/Chrison-dev/Homelab/issues/105) + build issue [#108](https://github.com/Chrison-Homelab/Homelab/issues/108), consumer [#105](https://github.com/Chrison-Homelab/Homelab/issues/105) ## Context diff --git a/docs/adr/ADR-0005-cloudflare-tunnel-topology.md b/docs/adr/ADR-0005-cloudflare-tunnel-topology.md index 7d5fac6..fcba59c 100644 --- a/docs/adr/ADR-0005-cloudflare-tunnel-topology.md +++ b/docs/adr/ADR-0005-cloudflare-tunnel-topology.md @@ -5,8 +5,8 @@ - **Deciders:** Chris - **Relates to:** [ADR-0001](ADR-0001-iac-tooling.md), [BL-001 Teleport](../plans/BL-001-teleport.md), - Teleport exposure [#117](https://github.com/Chrison-dev/Homelab/issues/117), - cloudflared redeploy [#118](https://github.com/Chrison-dev/Homelab/issues/118) + Teleport exposure [#117](https://github.com/Chrison-Homelab/Homelab/issues/117), + cloudflared redeploy [#118](https://github.com/Chrison-Homelab/Homelab/issues/118) ## Context diff --git a/docs/adr/ADR-0006-media-stack.md b/docs/adr/ADR-0006-media-stack.md index 68662e2..3bab261 100644 --- a/docs/adr/ADR-0006-media-stack.md +++ b/docs/adr/ADR-0006-media-stack.md @@ -8,7 +8,7 @@ [#105 declarative *arr stack](../plans/105-arr-declarative-stack.md), [BL-013 community-scripts deploy](../plans/BL-013-community-scripts-deploy.md), [BL-016 NFS hardening](../plans/BL-016-nfs-hardening.md) -- **Defers to:** [#106 Komodo + Maintainerr](https://github.com/Chrison-dev/Homelab/issues/106) +- **Defers to:** [#106 Komodo + Maintainerr](https://github.com/Chrison-Homelab/Homelab/issues/106) ## Context diff --git a/docs/adr/ADR-0007-pangolin-remote-access.md b/docs/adr/ADR-0007-pangolin-remote-access.md index 88ca3aa..fb2a36c 100644 --- a/docs/adr/ADR-0007-pangolin-remote-access.md +++ b/docs/adr/ADR-0007-pangolin-remote-access.md @@ -5,10 +5,10 @@ - **Deciders:** Chris - **Relates to:** [ADR-0005 tunnel topology](ADR-0005-cloudflare-tunnel-topology.md) (**supersedes its Teleport-front-door decision**, §4–5), [BL-001 Teleport](../plans/BL-001-teleport.md), - Teleport exposure [#117](https://github.com/Chrison-dev/Homelab/issues/117), - cloudflared redeploy [#118](https://github.com/Chrison-dev/Homelab/issues/118), - [#136](https://github.com/Chrison-dev/Homelab/issues/136) (this), - [#137](https://github.com/Chrison-dev/Homelab/issues/137) (China VPN — co-tenant of the future VPS stack) + Teleport exposure [#117](https://github.com/Chrison-Homelab/Homelab/issues/117), + cloudflared redeploy [#118](https://github.com/Chrison-Homelab/Homelab/issues/118), + [#136](https://github.com/Chrison-Homelab/Homelab/issues/136) (this), + [#137](https://github.com/Chrison-Homelab/Homelab/issues/137) (China VPN — co-tenant of the future VPS stack) ## Context diff --git a/docs/adr/ADR-0008-stack-extraction-meta-repo.md b/docs/adr/ADR-0008-stack-extraction-meta-repo.md index 86af0fd..ad51b3d 100644 --- a/docs/adr/ADR-0008-stack-extraction-meta-repo.md +++ b/docs/adr/ADR-0008-stack-extraction-meta-repo.md @@ -5,8 +5,8 @@ - **Deciders:** Chris - **Relates to:** [ADR-0001 IaC tooling](ADR-0001-iac-tooling.md) (establishes "submodules declare the *shape*; the hub converges" — this ADR extends that to a first-class - composition model), Phase 0 epic [#272](https://github.com/Chrison-dev/Homelab/issues/272), - Leapmotor→SmartHome fold [#271](https://github.com/Chrison-dev/Homelab/pull/271) + composition model), Phase 0 epic [#272](https://github.com/Chrison-Homelab/Homelab/issues/272), + Leapmotor→SmartHome fold [#271](https://github.com/Chrison-Homelab/Homelab/pull/271) ## Context @@ -73,7 +73,7 @@ their own `Homelab.Stacks.` repos, composed as submodules at `stacks/ Scaffolded **locally** for now (not yet a submodule). Promote to -> `Chrison-dev/Homelab.Stacks.Gaming` once the shape stabilises. -> Plan: [#115](https://github.com/Chrison-dev/Homelab/issues/115) · +> `Chrison-Homelab/Homelab.Stacks.Gaming` once the shape stabilises. +> Plan: [#115](https://github.com/Chrison-Homelab/Homelab/issues/115) · > [`docs/plans/115-gaming-vm-steamos.md`](../../docs/plans/115-gaming-vm-steamos.md). ## Members diff --git a/stacks/Gaming/guest-apps/GamingIdleShutdown/README.md b/stacks/Gaming/guest-apps/GamingIdleShutdown/README.md index 949e536..9e8bbe5 100644 --- a/stacks/Gaming/guest-apps/GamingIdleShutdown/README.md +++ b/stacks/Gaming/guest-apps/GamingIdleShutdown/README.md @@ -6,7 +6,7 @@ on the shared, RAM-tight desktop-01. When it detects idle it shows a small always-on-top **countdown you can Cancel / Snooze / Shut down now**, so it never pulls the rug while you're playing (or actively idling). -Story: [#144](https://github.com/Chrison-dev/Homelab/issues/144). Part of the +Story: [#144](https://github.com/Chrison-Homelab/Homelab/issues/144). Part of the Gaming stack's guest-side seam — like [`../../guest-setup/`](../../guest-setup/), it's re-installed after a throwaway-OS rebuild; the converge engine doesn't touch the guest. diff --git a/tools/PowerOrchestrator/README.md b/tools/PowerOrchestrator/README.md index a0d0825..841f163 100644 --- a/tools/PowerOrchestrator/README.md +++ b/tools/PowerOrchestrator/README.md @@ -1,6 +1,6 @@ # PowerOrchestrator -Demand-driven node power management for the Proxmox fleet ([#191](https://github.com/Chrison-dev/Homelab/issues/191)): +Demand-driven node power management for the Proxmox fleet ([#191](https://github.com/Chrison-Homelab/Homelab/issues/191)): sleep heavy nodes when nobody's using them, wake them on demand. Full-stack C# (`net10.0`), dogfooding **ProxmoxSharp** + **UniFiSharp**. The repo's first long-running Generic-Host service. diff --git a/tools/PowerOrchestrator/deploy/power-orchestrator.service b/tools/PowerOrchestrator/deploy/power-orchestrator.service index 6b3d8ff..bbeca94 100644 --- a/tools/PowerOrchestrator/deploy/power-orchestrator.service +++ b/tools/PowerOrchestrator/deploy/power-orchestrator.service @@ -1,6 +1,6 @@ [Unit] Description=Homelab node power orchestrator (presence/idle → sleep/wake; dry-run by default) -Documentation=https://github.com/Chrison-dev/Homelab/issues/191 +Documentation=https://github.com/Chrison-Homelab/Homelab/issues/191 After=network-online.target Wants=network-online.target