moving everything to active or retired vs incubating and graduated
All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 14s

This commit is contained in:
2025-04-19 18:46:40 -04:00
parent 6e393d90ee
commit ef9104c796
234 changed files with 456 additions and 244 deletions

View File

@@ -3,7 +3,7 @@ run-name: Build and Push Reese's Arch Toolbox
on: on:
push: push:
paths: paths:
- infrastructure/graduated/distoolbox/** - active/software_distoolbox/distoolbox/**
- .gitea/workflows/** - .gitea/workflows/**
schedule: schedule:
- cron: '@daily' - cron: '@daily'
@@ -23,8 +23,8 @@ jobs:
- name: Build and push Docker image - name: Build and push Docker image
uses: https://github.com/docker/build-push-action@v5 uses: https://github.com/docker/build-push-action@v5
with: with:
context: ${{ gitea.workspace }}/infrastructure/graduated/distoolbox context: ${{ gitea.workspace }}/active/software_distoolbox
file: ${{ gitea.workspace }}/infrastructure/graduated/distoolbox/arch-toolbox.containerfile file: ${{ gitea.workspace }}/active/software_distoolbox/arch-toolbox.containerfile
target: cpu target: cpu
push: true push: true
tags: "gitea.reeseapps.com/services/arch-toolbox:latest,gitea.reeseapps.com/services/arch-toolbox:${{gitea.sha}}" tags: "gitea.reeseapps.com/services/arch-toolbox:latest,gitea.reeseapps.com/services/arch-toolbox:${{gitea.sha}}"
@@ -32,8 +32,8 @@ jobs:
- name: Build and push AMD GPU Docker image - name: Build and push AMD GPU Docker image
uses: https://github.com/docker/build-push-action@v5 uses: https://github.com/docker/build-push-action@v5
with: with:
context: ${{ gitea.workspace }}/infrastructure/graduated/distoolbox context: ${{ gitea.workspace }}/active/software_distoolbox
file: ${{ gitea.workspace }}/infrastructure/graduated/distoolbox/arch-toolbox.containerfile file: ${{ gitea.workspace }}/active/software_distoolbox/arch-toolbox.containerfile
target: amdgpu target: amdgpu
push: true push: true
tags: "gitea.reeseapps.com/services/arch-toolbox-amdgpu:latest,gitea.reeseapps.com/services/arch-toolbox-amdgpu:${{gitea.sha}}" tags: "gitea.reeseapps.com/services/arch-toolbox-amdgpu:latest,gitea.reeseapps.com/services/arch-toolbox-amdgpu:${{gitea.sha}}"

2
.vscode/tasks.json vendored
View File

@@ -6,7 +6,7 @@
{ {
"label": "Build arch-toolbox", "label": "Build arch-toolbox",
"type": "shell", "type": "shell",
"command": "./infrastructure/graduated/distoolbox/arch-build.sh", "command": "./active/software_distoolbox/arch-build.sh",
"problemMatcher": [], "problemMatcher": [],
"group": { "group": {
"kind": "build", "kind": "build",

126
README.md
View File

@@ -4,9 +4,10 @@ A project to store homelab stuff.
Just here for the Arch distoolbox? Just here for the Arch distoolbox?
[Arch Distoolbox](infrastructure/graduated/distoolbox/distoolbox.md) [Arch Distoolbox](active/software_distoolbox/distoolbox.md)
![Arch Toolbox Status](https://gitea.reeseapps.com/services/homelab/actions/workflows/build.yaml/badge.svg?branch=main) ![Arch Toolbox
Status](https://gitea.reeseapps.com/services/homelab/actions/workflows/build.yaml/badge.svg?branch=main)
## Table of Contents ## Table of Contents
@@ -15,16 +16,18 @@ Just here for the Arch distoolbox?
- [Fun Facts](#fun-facts) - [Fun Facts](#fun-facts)
- [Important Dates and Times](#important-dates-and-times) - [Important Dates and Times](#important-dates-and-times)
- [Project Lifecycle](#project-lifecycle) - [Project Lifecycle](#project-lifecycle)
- [Supported Projects](#supported-projects) - [Project Types](#project-types)
- [Graduation Requirements](#graduation-requirements) - [Active Project Requirements](#active-project-requirements)
- [Retirement Requirements](#retirement-requirements) - [Retirement Requirements](#retirement-requirements)
- [Project Structure](#project-structure)
- [Creating a Project](#creating-a-project)
- [Order of Operations](#order-of-operations) - [Order of Operations](#order-of-operations)
## Fun Facts ## Fun Facts
On linux, <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>u</kbd>, then, while holding On linux, <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>u</kbd>, then, while holding
<kbd>ctrl</kbd>+<kbd>shift</kbd>, typing <kbd>b</kbd>+<kbd>0</kbd> will type a ° (degree) symbol. Also you <kbd>ctrl</kbd>+<kbd>shift</kbd>, typing <kbd>b</kbd>+<kbd>0</kbd> will type a
can enter any unicode symbol this way. ° (degree) symbol. Also you can enter any unicode symbol this way.
## Important Dates and Times ## Important Dates and Times
@@ -34,55 +37,67 @@ can enter any unicode symbol this way.
## Project Lifecycle ## Project Lifecycle
Projects will fall into one of the three following categories: Projects will either be `active` or `retired`.
1. Incubating Active projects are being actively developed. They are in-use, stable, and
2. Graduated production ready. Active projects should meet and track the [active project
3. Retired requirements](#active-project-requirements)
Incubating projects are experimental or prototypal. They're being actively developed and aren't Retired projects are no longer in use or recommended. They are kept for
ready for production deployment. These projects may appear and disappear without warning and are not reference. Retired projects must meet the [retirement
stable. There is no minimum requirement for a project to be in incubation. requirements](#retirement-requirements)
Graduated projects are in-use, stable, and production ready. They met the [graduation You'll notice that most of the active projects have scripts or examples that
requirements](#graduation-requirements) and are actively maintained. use the `active` path as part of their install process. When moved outside the
`active` directory their scripts and examples break. This is intentional. If
you want a retired project to work again, bring it back to the active
directory.
Retired projects are no longer in use or recommended. They are kept for reference. Retired projects ## Project Types
must meet the [retirement requirements](#retirement-requirements)
## Supported Projects All projects will be prefixed with one of the following categories:
All projects will fall into one of the following categories: - `device_`
- `os_`
- `cloud_`
- `systemd_`
- `podman_`
- `docker_`
- `kubernetes_`
- hardware Note, some projects will be named with just the prefix. These are projects for
- infrastructure configuring the underlying technology. The `podman` project, for example, will
- cloud tell you how to configure and install podman so it works correctly.
- systemd
- podman
- docker
- kubernetes
Hardware will contain projects that relate to specific machines or equipment. 3D printers, Raspberry `device_` will prefix projects that relate to specific machines or equipment.
Pis, and other IOT devices qualify as specialized hardware that needs documentation and 3D printers, Raspberry Pis, and other IOT devices qualify as specialized
configuration. This is not limited to computer equipment. The furnace is an important part of the hardware that needs documentation and configuration. This is not limited to
home lab. the Air Conditioner is integral to the homelab's function. These projects will also be documented. computer equipment. The furnace is an important part of the homelab. the Air
Conditioner is integral to the homelab's function. These projects will also be
documented.
Infrastructure will contain projects that set up the environments for the remaining listed project `os_` will contain projects that set up operating systems. These include best
types. For example, infrastructure will contain "how to set up a linux box with docker" or "how to practices, backups, updates, default software, etc.
set up a k3s cluster for kubernetes".
Cloud projects are for specific cloud providers. `cloud_` projects are for specific cloud providers. This will contain
documentation and errata for things like AWS IAM, Route53, etc. Note these will
be prefixed with the cloud's name, not the word "cloud". So AWS services will
be prefixed with `aws_` and azure would be `azure_`. This should make them more
searchable.
Systemd projects are designed to be installed with ansible and run via systemd on a linux VM or `systemd_` projects are designed to be installed with ansible and run via
other linux hardware. systemd on a linux VM or other linux hardware.
Podman projects are either designed to be run as quadlets or as podman containers outright. `podman_` projects are either designed to be run as quadlets or as podman
containers outright.
Docker projects are either docker-compose or some form of docker run command. `docker_` projects are either docker-compose or some form of docker run
command.
Kubernetes projects are helm, kustomize, kubectl, or some other kubernetes compliant deployment. `kubernetes_` projects are helm, kustomize, kubectl, or some other kubernetes
compliant deployment.
## Graduation Requirements ## Active Project Requirements
- [ ] Installation is documented - [ ] Installation is documented
- [ ] Installation configuration examples are provided - [ ] Installation configuration examples are provided
@@ -98,11 +113,30 @@ Kubernetes projects are helm, kustomize, kubectl, or some other kubernetes compl
- [ ] If applicable, a replacement has been identified and documented - [ ] If applicable, a replacement has been identified and documented
- [ ] If applicable, backup data locations are documented - [ ] If applicable, backup data locations are documented
## Project Structure
All projects will have, at minimum.
1. A README named `project-name.md`
2. A directory called `secrets` which will be gitignored.
## Creating a Project
Assuming your project name is `my-project` and it runs on `podman`
1. Create a new directory called `podman_my-project` under the `active`
directory
2. Copy the readme template: `cp project_readme_template.md
active/podman_my-project/my-project.md`
3. Populate `my-project.md` as you work through the install process
4. Create a directory called `secrets` in `podman_my-project`. This will be
automatically gitignored. Put all secrets here.
5. Push the changes when you have a working product
## Order of Operations ## Order of Operations
1. Install cloud projects. These usually have no dependencies and typically provide critical services 1. Configure cloud providers. These usually have no dependencies and typically
to other projects (DNS, email notifications, etc.) provide critical services to other projects (DNS, email notifications, etc.)
2. Install infrastructure projects. Usually these only have dependencies on cloud services. 2. Install infrastructure projects. Usually these only have dependencies on
3. Install systemd services. These are usually low-level programs that require a dedicated machine cloud services.
and perform semi-critical functions (ipv4 proxy, ddns, etc.). 3. Install systemd, kubernetes, docker, podman, and other services.
4. Install kubernetes, docker, podman, and other services.

View File

@@ -1,6 +1,6 @@
# AWS Credentials # AWS Credentials
Note: this requires the AWS CLI. See [AWS CLI](/cloud/graduated/aws_cli/aws_cli.md) Note: this requires the AWS CLI. See [AWS CLI](/active/aws_cli/aws_cli.md)
- [AWS Credentials](#aws-credentials) - [AWS Credentials](#aws-credentials)
- [Route53 Credential Generation](#route53-credential-generation) - [Route53 Credential Generation](#route53-credential-generation)
@@ -14,10 +14,10 @@ export AWS_USERNAME=
aws iam create-user --user-name $AWS_USERNAME aws iam create-user --user-name $AWS_USERNAME
# Allow updating reeseapps # Allow updating reeseapps
aws iam attach-user-policy --user-name $AWS_USERNAME --policy-arn $(cat cloud/graduated/aws_iam/secrets/update-reeseapps-iam-policy-arn) aws iam attach-user-policy --user-name $AWS_USERNAME --policy-arn $(cat active/aws_iam/secrets/update-reeseapps-iam-policy-arn)
# Allow updating reeselink # Allow updating reeselink
aws iam attach-user-policy --user-name $AWS_USERNAME --policy-arn $(cat cloud/graduated/aws_iam/secrets/update-reeselink-iam-policy-arn) aws iam attach-user-policy --user-name $AWS_USERNAME --policy-arn $(cat active/aws_iam/secrets/update-reeselink-iam-policy-arn)
# Create credentials (run aws configure on the machine that needs these to input them manually) # Create credentials (run aws configure on the machine that needs these to input them manually)
aws iam create-access-key --user-name $AWS_USERNAME aws iam create-access-key --user-name $AWS_USERNAME
@@ -27,7 +27,7 @@ aws iam create-access-key --user-name $AWS_USERNAME
Example Policy: Example Policy:
cloud/graduated/aws_iam/secrets/policies/route53_reeselink.json active/aws_iam/secrets/route53_reeselink.json
```json ```json
{ {
@@ -59,10 +59,10 @@ cloud/graduated/aws_iam/secrets/policies/route53_reeselink.json
```bash ```bash
# Allow updating route53 records for reeselink.com # Allow updating route53 records for reeselink.com
aws iam create-policy --policy-name update-reeselink --policy-document file://cloud/graduated/aws_iam/secrets/route53_reeselink_policy.json aws iam create-policy --policy-name update-reeselink --policy-document file://active/aws_iam/secrets/route53_reeselink_policy.json
# Allow updating route53 records for reeseapps.com # Allow updating route53 records for reeseapps.com
aws iam create-policy --policy-name update-reeseapps --policy-document file://cloud/graduated/aws_iam/secrets/route53_reeseapps_policy.json aws iam create-policy --policy-name update-reeseapps --policy-document file://active/aws_iam/secrets/route53_reeseapps_policy.json
``` ```
## Email Credentials ## Email Credentials

View File

@@ -17,14 +17,14 @@ convenience.
## Reeselink Addresses ## Reeselink Addresses
See `example-record-file.json` for example contents of `file://cloud/graduated/aws_route53/secrets/aws/reeselink.json`. See `example-record-file.json` for example contents of `file://active/aws_route53/secrets/aws/reeselink.json`.
```bash ```bash
aws route53 change-resource-record-sets --hosted-zone-id $(cat cloud/graduated/aws_route53/secrets/reeselink-zoneid) --change-batch file://cloud/graduated/aws_route53/secrets/reeselink.json aws route53 change-resource-record-sets --hosted-zone-id $(cat active/aws_route53/secrets/reeselink-zoneid) --change-batch file://active/aws_route53/secrets/reeselink.json
``` ```
## Reeseapps Addresses ## Reeseapps Addresses
```bash ```bash
aws route53 change-resource-record-sets --hosted-zone-id $(cat cloud/graduated/aws_route53/secrets/reeseapps-zoneid) --change-batch file://cloud/graduated/aws_route53/secrets/reeseapps.json aws route53 change-resource-record-sets --hosted-zone-id $(cat active/aws_route53/secrets/reeseapps-zoneid) --change-batch file://active/aws_route53/secrets/reeseapps.json
``` ```

View File

@@ -0,0 +1,3 @@
# AWS SES
AWS Simple Email Service

View File

@@ -0,0 +1,3 @@
# Kubernetes
See [k3s](/active/systemd_k3s/k3s.md)

View File

@@ -12,7 +12,7 @@ helm repo add bitwarden https://charts.bitwarden.com/
helm repo update helm repo update
kubectl create namespace bitwarden kubectl create namespace bitwarden
helm show values bitwarden/self-host > kubernetes/incubating/bitwarden/values.yaml helm show values bitwarden/self-host > active/kubernetes_bitwarden/values.yaml
# Installation ID: https://bitwarden.com/host/ # Installation ID: https://bitwarden.com/host/
# Optional argument for Have I Been Pwned: --from-literal=globalSettings__hibpApiKey="REPLACE" \ # Optional argument for Have I Been Pwned: --from-literal=globalSettings__hibpApiKey="REPLACE" \
@@ -25,5 +25,5 @@ kubectl create secret generic custom-secret -n bitwarden \
--from-file=globalSettings__yubico__key=./secrets/bitwarden/yubico_secret \ --from-file=globalSettings__yubico__key=./secrets/bitwarden/yubico_secret \
--from-file=SA_PASSWORD=./secrets/bitwarden/sa_password --from-file=SA_PASSWORD=./secrets/bitwarden/sa_password
helm upgrade bitwarden bitwarden/self-host --install --namespace bitwarden --values kubernetes/incubating/bitwarden/values.yaml helm upgrade bitwarden bitwarden/self-host --install --namespace bitwarden --values active/kubernetes_bitwarden/values.yaml
``` ```

View File

@@ -40,7 +40,7 @@ helm repo update
helm upgrade --install \ helm upgrade --install \
gitea \ gitea \
gitea-charts/gitea \ gitea-charts/gitea \
--values kubernetes/graduated/gitea/gitea-values.yaml \ --values active/kubernetes_gitea/gitea-values.yaml \
--namespace gitea \ --namespace gitea \
--create-namespace --create-namespace
``` ```

View File

@@ -8,7 +8,7 @@ helm repo update
helm upgrade --install my-grafana grafana/grafana \ helm upgrade --install my-grafana grafana/grafana \
--namespace monitoring \ --namespace monitoring \
--create-namespace \ --create-namespace \
--values kubernetes/incubating/grafana/values.yaml --values active/kubernetes_grafana/values.yaml
kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
``` ```
@@ -25,5 +25,5 @@ helm upgrade --install \
kube-prometheus-stack \ kube-prometheus-stack \
prometheus-community/kube-prometheus-stack \ prometheus-community/kube-prometheus-stack \
--namespace kube-system \ --namespace kube-system \
--values kubernetes/incubating/grafana/helm-prom-stack-values.yaml --values active/kubernetes_grafana/helm-prom-stack-values.yaml
``` ```

View File

@@ -7,7 +7,7 @@ This creates a basic iperf3 server.
```bash ```bash
helm upgrade --install \ helm upgrade --install \
iperf3 \ iperf3 \
./kubernetes/graduated/iperf3 \ ./active/kubernetes_iperf3/iperf3 \
--namespace iperf3 \ --namespace iperf3 \
--create-namespace --create-namespace
``` ```

View File

@@ -5,7 +5,7 @@
```bash ```bash
helm upgrade --install \ helm upgrade --install \
jellyfin \ jellyfin \
./kubernetes/graduated/jellyfin \ ./active/kubernetes_jellyfin \
--namespace jellyfin \ --namespace jellyfin \
--create-namespace --create-namespace
``` ```

View File

@@ -10,15 +10,8 @@
```bash ```bash
# Download the updated template from github # Download the updated template from github
kubectl kustomize "github.com/rancher/local-path-provisioner/deploy?ref=v0.0.31" > kubernetes/graduated/local-path-provisioner/local-path-storage.yaml kubectl kustomize "github.com/rancher/local-path-provisioner/deploy?ref=v0.0.31" > active/kubernetes_local-path-provisioner/local-path-storage.yaml
# Apply customizations (ssd/hdd storage, read write many support) # Apply customizations (ssd/hdd storage, read write many support)
kubectl kustomize kubernetes/graduated/local-path-provisioner | kubectl apply -f - kubectl kustomize active/kubernetes_local-path-provisioner | kubectl apply -f -
# Create test pod
kubectl apply -f systemd/graduated/k3s/tests/local-storage-test.yaml
kubectl get pod -n default
# Exec in and test - storage will be mounted at /storage
kubectl exec -it -n default <local-storage-test> -- bash
kubectl delete -f systemd/graduated/k3s/tests/local-storage-test.yaml
``` ```

View File

@@ -10,7 +10,7 @@ with a new port. The server-downloader is called "minecraft_get_server" and is a
```bash ```bash
helm upgrade --install \ helm upgrade --install \
testcraft \ testcraft \
./kubernetes/graduated/minecraft \ ./active/kubernetes_minecraft \
--namespace minecraft \ --namespace minecraft \
--create-namespace --create-namespace
``` ```
@@ -20,7 +20,7 @@ helm upgrade --install \
```bash ```bash
helm upgrade --install \ helm upgrade --install \
nimcraft \ nimcraft \
./kubernetes/graduated/minecraft \ ./active/kubernetes_minecraft \
--namespace minecraft \ --namespace minecraft \
--create-namespace --create-namespace
``` ```
@@ -30,7 +30,7 @@ helm upgrade --install \
```bash ```bash
helm upgrade --install \ helm upgrade --install \
courtniecraft \ courtniecraft \
./kubernetes/graduated/minecraft \ ./active/kubernetes_minecraft \
--namespace minecraft \ --namespace minecraft \
--create-namespace --create-namespace
``` ```
@@ -40,7 +40,7 @@ helm upgrade --install \
```bash ```bash
helm upgrade --install \ helm upgrade --install \
camcraft1 \ camcraft1 \
./kubernetes/graduated/minecraft \ ./active/kubernetes_minecraft \
--namespace minecraft \ --namespace minecraft \
--create-namespace --create-namespace
``` ```

View File

@@ -7,7 +7,7 @@ Snapdrop is a file sharing app that allows airdrop-like functionality over the w
```bash ```bash
helm upgrade --install \ helm upgrade --install \
snapdrop \ snapdrop \
./kubernetes/graduated/snapdrop \ ./active/kubernetes_snapdrop \
--namespace snapdrop \ --namespace snapdrop \
--create-namespace --create-namespace
``` ```

View File

@@ -10,9 +10,9 @@ point.
```bash ```bash
helm upgrade --install \ helm upgrade --install \
wordpress \ wordpress \
-f kubernetes/incubating/bitnami/wordpress.yaml \ -f active/kubernetes_bitnami/wordpress.yaml \
--set wordpressUsername=admin \ --set wordpressUsername=admin \
--set wordpressPassword=password \ --set wordpressPassword=password \
--set mariadb.auth.rootPassword=secretpassword \ --set mariadb.auth.rootPassword=secretpassword \
oci://registry-1.docker.io/bitnamicharts/wordpress oci://registry-1.docker.io/bitnamicharts/wordpress
``` ```

Some files were not shown because too many files have changed in this diff Show More