96 lines
3.6 KiB
Markdown
96 lines
3.6 KiB
Markdown
# Homelab
|
|
|
|
A project to store homelab stuff.
|
|
|
|
## Table of Contents
|
|
|
|
- [Homelab](#homelab)
|
|
- [Table of Contents](#table-of-contents)
|
|
- [Fun Facts](#fun-facts)
|
|
- [Project Lifecycle](#project-lifecycle)
|
|
- [Supported Projects](#supported-projects)
|
|
- [Graduation Requirements](#graduation-requirements)
|
|
- [Retirement Requirements](#retirement-requirements)
|
|
- [Order of Operations](#order-of-operations)
|
|
|
|
## Fun Facts
|
|
|
|
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 ° symbol. Also you
|
|
can enter any unicode symbol this way.
|
|
|
|
## Project Lifecycle
|
|
|
|
Projects will fall into one of the three following categories:
|
|
|
|
1. Incubating
|
|
2. Graduated
|
|
3. Retired
|
|
|
|
Incubating projects are experimental or prototypal. They're being actively developed and aren't
|
|
ready for production deployment. These projects may appear and disappear without warning and are not
|
|
stable. There is no minimum requirement for a project to be in incubation.
|
|
|
|
Graduated projects are in-use, stable, and production ready. They met the [graduation
|
|
requirements](#graduation-requirements) and are actively maintained.
|
|
|
|
Retired projects are no longer in use or recommended. They are kept for reference. Retired projects
|
|
must meet the [retirement requirements](#retirement-requirements)
|
|
|
|
## Supported Projects
|
|
|
|
All projects will fall into one of the following categories:
|
|
|
|
- hardware
|
|
- infrastructure
|
|
- cloud
|
|
- systemd
|
|
- podman
|
|
- docker
|
|
- kubernetes
|
|
|
|
Hardware will contain projects that relate to specific machines or equipment. 3D printers, Raspberry
|
|
Pis, and other IOT devices qualify as specialized hardware that needs documentation and
|
|
configuration. This is not limited to computer equipment. The furnace is an important part of the
|
|
home lab. 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
|
|
types. For example, infrastructure will contain "how to set up a linux box with docker" or "how to
|
|
set up a k3s cluster for kubernetes".
|
|
|
|
Cloud projects are for specific cloud providers.
|
|
|
|
Systemd projects are designed to be installed with ansible and run via systemd on a linux VM or
|
|
other linux hardware.
|
|
|
|
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.
|
|
|
|
Kubernetes projects are helm, kustomize, kubectl, or some other kubernetes compliant deployment.
|
|
|
|
## Graduation Requirements
|
|
|
|
- [ ] Installation is documented
|
|
- [ ] Installation configuration examples are provided
|
|
- [ ] Hardening guidelines are documented
|
|
- [ ] Upgrade procedures are documented
|
|
- [ ] Maintenance procedures are documented
|
|
- [ ] Uninstall procedures are documented
|
|
- [ ] Backup and restore procedures are documented and tested
|
|
|
|
## Retirement Requirements
|
|
|
|
- [ ] A reason for retirement is documented
|
|
- [ ] If applicable, a replacement has been identified and documented
|
|
- [ ] If applicable, backup data locations are documented
|
|
|
|
## Order of Operations
|
|
|
|
1. Install cloud projects. These usually have no dependencies and typically provide critical services
|
|
to other projects (DNS, email notifications, etc.)
|
|
2. Install infrastructure projects. Usually these only have dependencies on cloud services.
|
|
3. Install systemd services. These are usually low-level programs that require a dedicated machine
|
|
and perform semi-critical functions (ipv4 proxy, ddns, etc.).
|
|
4. Install kubernetes, docker, podman, and other services.
|