Add .gitignore and CLAUDE.md for repository guidance and configuration

This commit is contained in:
Decobus 2025-07-13 01:55:11 -04:00
parent 6fc1a3100b
commit 2fc476d058
2 changed files with 75 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/.idea/

74
CLAUDE.md Normal file
View file

@ -0,0 +1,74 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Repository Overview
This repository contains Kubernetes manifests for deploying a media server stack and supporting infrastructure. The deployment uses LinuxServer.io containers for media applications and integrates with external NFS storage.
## Architecture
### Application Stack
- **Media Applications** (`arr/` directory):
- Radarr (movies) - port 7878
- Sonarr (TV shows) - port 8989
- Prowlarr (indexer manager)
- SABnzbd (downloads)
- Overseerr (requests) - port 5055
- Tautulli (Plex monitoring)
### Infrastructure Components
- **MetalLB**: Load balancer with IP pool 192.168.15.200-192.168.15.210
- **Longhorn**: Block storage for application configs
- **NFS Storage**: External server at 192.168.12.16 for media files
- **Kubernetes Dashboard**: Web UI with admin access
## Deployment Commands
```bash
# Create namespace (required first)
kubectl create namespace media
# Deploy infrastructure
kubectl apply -f nfs-storage-classes.yaml
kubectl apply -f metallb-config.yaml
kubectl apply -f kubernetes-dashboard.yaml
# Deploy all media applications
kubectl apply -f arr/
# Deploy individual apps
kubectl apply -f arr/radarr.yaml
kubectl apply -f arr/sonarr.yaml
```
## Resource Patterns
Each media application follows this structure:
1. **Deployment**: Container with resource limits, PUID/PGID=1000, TZ=America/New_York
2. **PersistentVolumeClaim**: Config storage using Longhorn
3. **Service**: ClusterIP for internal communication
4. **Ingress**: NGINX routing with pattern `{app}.local`
## Storage Configuration
- **Config Storage**: Longhorn PVCs for each application
- **Media Storage**: NFS mounts from 192.168.12.16:
- `/Volume2/media``/media`
- `/Volume2/tv``/tv`
- `/Volume2/movies``/movies`
- `/Volume2/downloads``/downloads`
## Prerequisites
- NGINX Ingress Controller must be installed
- Longhorn storage system must be deployed
- NFS server must be accessible at 192.168.12.16
- Local DNS must resolve `*.local` domains
## Important Notes
- All containers run with UID/GID 1000
- Dashboard has full cluster-admin privileges
- All images use `latest` tag
- Media namespace must exist before deploying applications