Add devops days presentation, software_pi service, and update software_toolbx
- Add presentations/devops_days_self_hosting_presentation.md - Add active/software_pi/ service directory - Update active/software_toolbx/Containerfile - Update retired/kubernetes_userspace submodule LLM-Generated: true
This commit is contained in:
@@ -0,0 +1,52 @@
|
|||||||
|
# Pi AI Harness
|
||||||
|
|
||||||
|
## Prereqs
|
||||||
|
|
||||||
|
I would recommend using `pass` to store your api key. This is installed with `dnf install pass` on Fedora systems.
|
||||||
|
|
||||||
|
After installing pass, update your `~/.gnupg/gpg-agent.conf` to set the timeout to max so automated processes can use the values in your password store:
|
||||||
|
|
||||||
|
```conf
|
||||||
|
default-cache-ttl 2147483647
|
||||||
|
max-cache-ttl 2147483647
|
||||||
|
```
|
||||||
|
|
||||||
|
Then add a `pass.sh` to you `~/.bashrc.d` that looks like
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pass unlock
|
||||||
|
```
|
||||||
|
|
||||||
|
That way every time you log in your pass keyring is unlocked for your session so automations can use it.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
This is my ~/.pi/agent/models.json
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"providers": {
|
||||||
|
"reeseapps-aipi": {
|
||||||
|
"baseUrl": "https://aipi.reeseapps.com/v1",
|
||||||
|
"api": "openai-completions",
|
||||||
|
"apiKey": "!pass aipi/dev-token",
|
||||||
|
"models": [
|
||||||
|
{
|
||||||
|
"id": "juggernaut",
|
||||||
|
"input": ["text", "image"],
|
||||||
|
"reasoning": true,
|
||||||
|
"contextWindow": 262144,
|
||||||
|
"maxTokens": 128000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "turbo",
|
||||||
|
"input": ["text", "image"],
|
||||||
|
"reasoning": true,
|
||||||
|
"contextWindow": 262144,
|
||||||
|
"maxTokens": 128000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
@@ -30,4 +30,10 @@ p7zip \
|
|||||||
make \
|
make \
|
||||||
gcc \
|
gcc \
|
||||||
codium \
|
codium \
|
||||||
pass
|
pass \
|
||||||
|
stress-ng \
|
||||||
|
fuse \
|
||||||
|
bind-utils \
|
||||||
|
nmap \
|
||||||
|
poppler \
|
||||||
|
nodejs24
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
# An Opinionated Guide to Home Labbing: from Hardware to Software
|
||||||
|
|
||||||
|
## Abstract
|
||||||
|
|
||||||
|
Between increasingly required subscriptions, privacy terms changing overnight,
|
||||||
|
and the difficulty of downloading your own data, it often feels like we rent our
|
||||||
|
digital lives rather than own them. We'll walk you through hardware selection,
|
||||||
|
the tools you'll need, the operating systems you'll install, and the software
|
||||||
|
you might want to support for your homelab. We'll share our experience with our
|
||||||
|
own variety of hardware, which ranges from tiny Raspberry Pis to mid-size laptop
|
||||||
|
motherboards to overkill Threadripper servers. We'll talk about the operating
|
||||||
|
systems we use and which ones have found the most stability and longevity in our
|
||||||
|
deployments while comparing them to other homelab operating systems. We'll cover
|
||||||
|
common homelab use-cases like media servers, Git servers, network storage, and
|
||||||
|
local AI tooling. We'll also talk about safety and maintenance so you can weigh
|
||||||
|
the choice of cutting the cloud cord properly. By the end of this talk you'll have a
|
||||||
|
starting point for your own homelab journey, and maybe even a grocery list.
|
||||||
|
|
||||||
|
Alex Oladele is a senior software engineer at Red Hat, working on Ansible Galaxy
|
||||||
|
as part of the Ansible Automation Platform. He is a member of Black Python Devs
|
||||||
|
and speaks at conferences about compassionate culture, Python, and practical
|
||||||
|
engineering skills. He is passionate about mentoring and creating safe,
|
||||||
|
inclusive spaces in tech. Outside of work, he builds silly side projects and
|
||||||
|
runs a homelab he is very proud of
|
||||||
|
|
||||||
|
Reese is DIY technology enthusiast with a passion for projects that make things
|
||||||
|
easy. He's been working in development since 2017 with experience in risk,
|
||||||
|
scripting automation, full stack web development, container infrastructure, amd
|
||||||
|
homelab server hardware. He has a passion for mentoring, but even more of a
|
||||||
|
passion for sharing the new tech he found last week with anyone who will listen.
|
||||||
|
Currently, he leads the agentic vulnerability management team at Hungtington
|
||||||
|
Bank.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
"I'm lazy, I don't want my family to kill me, and it works"
|
||||||
|
|
||||||
|
1. I want this in my house
|
||||||
|
2. I want to connect outside my house
|
||||||
|
3. I want my friends to connect
|
||||||
|
4. I don't want this to go down
|
||||||
|
5. I want to recover if there's an error
|
||||||
|
6. My server died, what now?
|
||||||
|
|
||||||
|
## Thoughts
|
||||||
|
|
||||||
|
Give 2 ideas per section. First for "I can't let this break my family will kill
|
||||||
|
me". Second for "I have an understanding partner who is my cat and won't care."
|
||||||
|
|
||||||
|
## Story driven presentation
|
||||||
|
|
||||||
|
I have decided to make a strong home server. Where do I even start?
|
||||||
|
|
||||||
|
Overarching theme:
|
||||||
|
|
||||||
|
- This is about privacy, control, and stability
|
||||||
|
- This is not about saving money
|
||||||
|
- This is not about keeping up with the bleeding edge of the industry
|
||||||
|
- (Both of these things might happen though, and that's great when it does)
|
||||||
|
|
||||||
|
1. Hardware: you find a box (old laptop, rpi) you're set.
|
||||||
|
|
||||||
|
- Reese
|
||||||
|
- Framework 13 motherboard for experiments, QA, Forgejo/Gitea runners, `experimental.reeseapps.com`
|
||||||
|
- Raspberry pi for home assistant
|
||||||
|
- Threadripper 3000 series with a bunch of disks for main apps
|
||||||
|
- framework desktop for local AI
|
||||||
|
- Alex
|
||||||
|
- "Gaming PC Foundation": 5950x + ddr4 64GB ram (before memory shortage)
|
||||||
|
- Framework motherboard
|
||||||
|
- Raspberry pi cluster
|
||||||
|
|
||||||
|
2. I'm a little familiar with linux but what do I install on that hardware?
|
||||||
|
|
||||||
|
- Alex: Truenas, Raspberry Pi OS
|
||||||
|
- Reese: Address the proxmox shaped elephant in the room, Fedora, Alma Linux, cloud init
|
||||||
|
|
||||||
|
3. What does your homelab maintenance toolbox look like? What toolkit do you
|
||||||
|
open to work on your homelab? What do you bring to the table to start
|
||||||
|
tinkering?
|
||||||
|
|
||||||
|
- Reese: btop, podman, uv, yarn, pi.dev, borg backup, distrobox (talk about misconceptions like bash history preservation)
|
||||||
|
- AI in the homelab, safety, security, privacy
|
||||||
|
- Discuss the progression: chat bots -> harnesses -> agentic integration
|
||||||
|
- Alex: truenas catalog, ansible, opencode
|
||||||
|
- Discuss security in your tooling like setting wait periods before yarn installing
|
||||||
|
- mention uv acquisition
|
||||||
|
- Building custom apps with AI
|
||||||
|
|
||||||
|
4. So you want to launch some containers
|
||||||
|
|
||||||
|
- We dislike docker compose
|
||||||
|
- Truenas apps
|
||||||
|
- quadlets + podman
|
||||||
|
- kubernetes (k3s) and its downsides
|
||||||
|
|
||||||
|
5. When to use VMs
|
||||||
|
|
||||||
|
- An extra layer of isolation
|
||||||
|
- Easier networking
|
||||||
|
- Simpler to prevent resource exhaustion
|
||||||
|
- Talk about "right-sizing": Every VM gets 2GB ram and 2cpu cores to start. On a 32GB system, assuming 4GB for the host, that creates 14 VM "slots".
|
||||||
|
- Alma Linux 10 takes up about 450MB at boot with nothing installed
|
||||||
|
- Double the memory when resource exhaustion happens
|
||||||
|
|
||||||
|
6. I want to install a new app while I'm at friend's house
|
||||||
|
- Truenas web portal (app page, both official and community) + tailscale
|
||||||
|
- VPN and I need access to my computer
|
||||||
|
|
||||||
|
7. I want to check my server status on my phone (updates, disks, memory pressure, error logs, services running)
|
||||||
|
- Truenas web interface
|
||||||
|
- Cockpit web interface
|
||||||
|
|
||||||
|
8. I want to add more storage
|
||||||
|
- Truenas ZFS storage pools
|
||||||
|
- BTRFS pools
|
||||||
|
|
||||||
|
9. I want to install a new alpha app without much support
|
||||||
|
- Truenas custom docker compose images
|
||||||
|
- Fedora clone and run (in a VM for style)
|
||||||
|
|
||||||
|
10. I want to backup my photos
|
||||||
|
- Google Photos: don't use git, images aren't meant for git
|
||||||
|
- **Immich, with backups (tell stories about losing my image data)**
|
||||||
|
|
||||||
|
11. I want a local copy of my code
|
||||||
|
- Github
|
||||||
|
- Gitea/Gitlab (talk about that transition)
|
||||||
|
- Forgejo
|
||||||
|
|
||||||
|
12. I want private document editing
|
||||||
|
- Google drive, Obsidian (forces use of markdown as my standard)
|
||||||
|
- VSCode + pandoc (commit markdown files as your documents)
|
||||||
|
- Nextcloud (Collabora)
|
||||||
|
|
||||||
|
13. I want a local, offline LLMs
|
||||||
|
- llama.cpp is great, but has a very high learning curve
|
||||||
|
- Ollama has pitfalls
|
||||||
|
- You don't know which model you're downloading
|
||||||
|
- Model inference is not optimized
|
||||||
|
|
||||||
|
14. I want to watch media I own
|
||||||
|
- Plex - I know that ruffles some jimmies. Give example: add letterbox support into Plex.
|
||||||
|
- Jellyfin if you're cheap
|
||||||
|
|
||||||
|
15. I want to know when something goes wrong
|
||||||
|
- Uptime Kuma!
|
||||||
|
- NTFY
|
||||||
|
- N8N
|
||||||
|
- Truenas sending emails if there's an error
|
||||||
|
- Fedora requires a custom solution
|
||||||
|
|
||||||
|
16. I want "reasonable availability"
|
||||||
|
- Truenas hits 90%+ availability. Updates take it down for reboot (5-10
|
||||||
|
minutes). Disk failure requires full shutdown, disk swap, and rebuild.
|
||||||
|
This could be half a day.
|
||||||
|
- Fedora hits 90%+ availability. Updates take it down for reboot (<1 min).
|
||||||
|
Disk failures can be ignored by rebalancing. Disk failures still require
|
||||||
|
full shutdown and resilver. This can take half a day.
|
||||||
|
|
||||||
|
17. I want to automate my house
|
||||||
|
- Home Assistant (raspberry pi or green)
|
||||||
|
|
||||||
|
18. I want backups of all my data
|
||||||
|
- No backups is an option
|
||||||
|
- Local weekly backups to usb drives via Truenas data replication
|
||||||
|
- Borg backup via CLI or Pika.
|
||||||
|
- Full disk backups, app directory backups, hybrid model
|
||||||
|
- Backblaze and S3 integration for Truenas
|
||||||
|
- 3 copies of your data, 2 different media, 1 off site.
|
||||||
|
|
||||||
|
1. I want a private VPN
|
||||||
|
- Tailscale, moved from wifiman, also moved from pivpn
|
||||||
|
- unifi wireguard server, rawdog wireguard on a pi
|
||||||
Reference in New Issue
Block a user