- My homelab is always evolving, so I will aim to keep the contents of this page agnostic to any current setup.
- Always intended to make the repository publicly accessible, but left secrets in the code early on.
- Always pushed toward complete configuration as code. Application data and secrets excepted, all application configuration *should* be defined in the application's config directory.
- Some docker images don't get us 100% of the way there, so we define what we can in the compose file, then either scripts or a README to fill in the gaps.
# Principles and Goals
1. Be useful. First and foremost we should remove anything that isn't useful, and trial anything that may be.
2. Be resilient. We should integrate configuration code with process documentation to make rebuilding from scratch as easy as possible.
3. Be simple.
4. Be helpful. First for myself to make future work easier, and second to make writing this page easier (3 years later).
# Development: Problems and Solutions
## What I've got to work with: Hosts and Cloud Resources
- Barbarian
- Fighter
- Druid
- Wizard
- Monk
## What I need to get done: Service Roles
- I need some way to store a lot of big files. Storing and protecting big library.
- I need some way for my friends and family to watch the movies in my movie library. Serving media library.
- I need some way to make my stuff accessible safely over the internet. Managing access.
- I need some way to manage this whole thing. Managing configuration.
- I need some way to know if it's breaking. Monitoring and notifying on service uptime.
## What I don't need to get done: Retired Service Roles
3. [Example secret in code - Cloudflare API Key](https://gitea.jafner.tools/Jafner/homelab/src/commit/45c541999d972020f21547c2d0ddea739f7103ce/server/config/cloudflare-ddns/docker-compose.yml#L8)
4. [Example secret in code - SSH key](https://gitea.jafner.tools/Jafner/homelab/src/commit/45c541999d972020f21547c2d0ddea739f7103ce/server/config/wikijs/id_rsa)