distribute READMEs
This commit is contained in:
187
README.md
187
README.md
@@ -10,19 +10,6 @@ A project to store homelab stuff.
|
||||
- [Supported Projects](#supported-projects)
|
||||
- [Graduation Requirements](#graduation-requirements)
|
||||
- [Retirement Requirements](#retirement-requirements)
|
||||
- [Apps (TODO: Move these into their respective folders)](#apps-todo-move-these-into-their-respective-folders)
|
||||
- [Gitea](#gitea)
|
||||
- [Staging](#staging)
|
||||
- [Install](#install)
|
||||
- [Minecraft](#minecraft)
|
||||
- [Testing](#testing)
|
||||
- [Nimcraft](#nimcraft)
|
||||
- [Courtnie](#courtnie)
|
||||
- [Snapdrop](#snapdrop)
|
||||
- [Jellyfin](#jellyfin)
|
||||
- [Iperf3](#iperf3)
|
||||
- [Wordpress](#wordpress)
|
||||
- [Grafana](#grafana)
|
||||
|
||||
## Project Lifecycle
|
||||
|
||||
@@ -55,7 +42,9 @@ All projects will fall into one of the following categories:
|
||||
- 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.
|
||||
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
|
||||
@@ -87,173 +76,3 @@ Kubernetes projects are helm, kustomize, kubectl, or some other kubernetes compl
|
||||
- [ ] A reason for retirement is documented
|
||||
- [ ] If applicable, a replacement has been identified and documented
|
||||
- [ ] If applicable, backup data locations are documented
|
||||
|
||||
## Apps (TODO: Move these into their respective folders)
|
||||
|
||||
### Gitea
|
||||
|
||||
Gitea provides a helm chart [here](https://gitea.com/gitea/helm-chart/). We're not
|
||||
going to modify much, but we are going to solidify some of the default values in case
|
||||
they decide to change things. This is the first chart (besides ingress-nginx) where
|
||||
we need to pay attention to the MetalLB annotation. This has been set in the values.yaml
|
||||
file.
|
||||
|
||||
#### Staging
|
||||
|
||||
There is a `gitea-staging.yaml` file with staging values. This should be installed in
|
||||
the `gitea-staging` namespace. Follow the instructions below, but replace the `gitea`
|
||||
namespace with `gitea-staging`. Staging is useful for testing major release upgrades,
|
||||
especially since Gitea tends to change how `values.yaml` is structured.
|
||||
|
||||
#### Install
|
||||
|
||||
First we need to create the gitea admin secret
|
||||
|
||||
```bash
|
||||
kubectl create namespace gitea
|
||||
kubectl create secret generic gitea-admin-secret \
|
||||
-n gitea \
|
||||
--from-literal=username='gitea-admin' \
|
||||
--from-literal=password="$(pwgen -c -s 64 | head -n 1)" \
|
||||
--from-literal=email=''
|
||||
```
|
||||
|
||||
```bash
|
||||
helm repo add gitea-charts https://dl.gitea.io/charts/
|
||||
helm repo update
|
||||
helm upgrade --install \
|
||||
gitea \
|
||||
gitea-charts/gitea \
|
||||
--values gitea/gitea-values.yaml \
|
||||
--namespace gitea \
|
||||
--create-namespace
|
||||
```
|
||||
|
||||
If you need to backup your database you can run:
|
||||
|
||||
```bash
|
||||
# Backup
|
||||
kubectl exec -it -n gitea gitea-postgresql-0 -- \
|
||||
pg_dump \
|
||||
--no-owner \
|
||||
--dbname=postgresql://gitea:gitea@localhost:5432 > gitea_backup.db
|
||||
|
||||
# Take gitea down to zero pods
|
||||
kubectl scale statefulset gitea --replicas 0
|
||||
|
||||
# Drop the existing database
|
||||
kubectl exec -it -n gitea gitea-postgresql-0 -- psql -U gitea
|
||||
|
||||
\c postgres;
|
||||
drop database gitea;
|
||||
CREATE DATABASE gitea WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
|
||||
exit
|
||||
|
||||
# restore from backup
|
||||
kubectl exec -it -n gitea gitea-postgresql-0 -- \
|
||||
psql \
|
||||
postgresql://gitea:gitea@localhost:5432 gitea < gitea_backup.db
|
||||
|
||||
# Restore gitea to 1 pod
|
||||
kubectl scale statefulset gitea --replicas 1
|
||||
```
|
||||
|
||||
### Minecraft
|
||||
|
||||
Minecraft is available through the custom helm chart (including a server downloader). The example
|
||||
below installs nimcraft. For each installation you'll want to create your own values.yaml
|
||||
with a new port. The server-downloader is called "minecraft_get_server" and is available on
|
||||
[Github](https://github.com/ducoterra/minecraft_get_server).
|
||||
|
||||
#### Testing
|
||||
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
testcraft \
|
||||
./minecraft \
|
||||
--namespace minecraft \
|
||||
--create-namespace
|
||||
```
|
||||
|
||||
#### Nimcraft
|
||||
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
nimcraft \
|
||||
./minecraft \
|
||||
--namespace minecraft \
|
||||
--create-namespace
|
||||
```
|
||||
|
||||
#### Courtnie
|
||||
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
courtniecraft \
|
||||
./minecraft \
|
||||
--namespace minecraft \
|
||||
--create-namespace
|
||||
```
|
||||
|
||||
### Snapdrop
|
||||
|
||||
Snapdrop is a file sharing app that allows airdrop-like functionality over the web
|
||||
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
snapdrop \
|
||||
./snapdrop \
|
||||
--namespace snapdrop \
|
||||
--create-namespace
|
||||
```
|
||||
|
||||
### Jellyfin
|
||||
|
||||
This assumes you have a media NFS share.
|
||||
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
jellyfin \
|
||||
./jellyfin \
|
||||
--namespace jellyfin \
|
||||
--create-namespace
|
||||
```
|
||||
|
||||
### Iperf3
|
||||
|
||||
This creates a basic iperf3 server.
|
||||
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
iperf3 \
|
||||
./iperf3 \
|
||||
--namespace iperf3 \
|
||||
--create-namespace
|
||||
```
|
||||
|
||||
### Wordpress
|
||||
|
||||
The bitnami wordpress chart allows enough customization to
|
||||
work on a custom K3S server. With some tweaks it's quite
|
||||
good. Use the values in `bitnami/wordpress.yaml` as a starting
|
||||
point.
|
||||
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
wordpress \
|
||||
-f bitnami/wordpress.yaml \
|
||||
--set wordpressUsername=admin \
|
||||
--set wordpressPassword=password \
|
||||
--set mariadb.auth.rootPassword=secretpassword \
|
||||
oci://registry-1.docker.io/bitnamicharts/wordpress
|
||||
```
|
||||
|
||||
### Grafana
|
||||
|
||||
<https://grafana.com/docs/grafana/latest/setup-grafana/installation/kubernetes/>
|
||||
|
||||
Grafana has a kubernetes yaml they prefer you use. See `kubectl/grafana.yaml`.
|
||||
|
||||
```bash
|
||||
kubectl apply -f kubectl/grafana.yaml
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user