Commit graph

63 commits

Author SHA1 Message Date
Eduardo Figueroa
3bf1575ca8 chore: General catchup - service updates and cleanup
Updated service configurations, added new services, removed deprecated
ones, and improved gitignore patterns for better repository hygiene.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-15 05:23:02 +00:00
Eduardo Figueroa
85239ff11b docs(templates): Update service template to use Authelia
Change SSO middleware reference from 'tinyauth' to 'authelia' in the
service template to reflect the new SSO provider.
2025-12-12 23:17:30 +00:00
Eduardo Figueroa
d9c424e4fc refactor(monitoring): Remove Tinyauth middleware from monitoring services
Remove Tinyauth SSO middleware from Loki and Uptime Kuma.
These services will migrate to Authelia for authentication.
2025-12-12 23:17:26 +00:00
Eduardo Figueroa
2c60e54c80 refactor(services): Remove Tinyauth middleware from all services
Remove Tinyauth SSO middleware references from:
- FreshRSS, Backrest, Booklore, Code Server
- Homarr, Homepage, Karakeep, Komodo
- MicroBin, RSS Bridge, RSSHub, Static Sites

Services with local-only middleware now only use local-only restriction
(Backrest, Code Server) without Tinyauth.
2025-12-12 23:17:23 +00:00
Eduardo Figueroa
ffff392aa0 feat(ai): Update Ollama and Open WebUI configurations
Ollama:
- Replace Tinyauth middleware with Authelia + local-only
- Enable NVIDIA GPU support

Open WebUI:
- Update RAG search engine to DuckDuckGo
- Disable SSL verification for RAG web loader
- Change default model to qwen2.5:3b
- Remove Tinyauth middleware comment
2025-12-12 23:17:15 +00:00
Eduardo Figueroa
249903825b feat(vikunja): Configure Authelia OIDC authentication
Add Authelia OIDC configuration to Vikunja and remove Tinyauth middleware.
Users can now authenticate with Vikunja using Authelia SSO.
2025-12-12 23:17:08 +00:00
Eduardo Figueroa
75bdad695f feat(media): Configure Authelia OIDC for Immich and update Jellyfin
- Add Authelia OIDC configuration to Immich (.env)
- Remove Tinyauth middleware comment from Immich compose
- Update Jellyfin SSO comment to reference Authelia instead of Tinyauth
- Enable NVIDIA GPU transcoding for Jellyfin
2025-12-12 23:17:04 +00:00
Eduardo Figueroa
a1824a4043 refactor(media): Remove Tinyauth middleware from media automation services
Remove Tinyauth SSO middleware from all media automation services
(Lidarr, Profilarr, Prowlarr, qBittorrent, Radarr, SABnzbd, Sonarr)
and Jellyseerr. These services will migrate to Authelia for SSO.
2025-12-12 23:16:59 +00:00
Eduardo Figueroa
825232e10c feat(sso): Migrate from Tinyauth to Authelia
Remove Tinyauth SSO provider and migrate to Authelia for authentication.
Update LLDAP to use PostgreSQL backend and remove Tinyauth middleware
from core services.

Changes:
- Remove Tinyauth service entirely (compose/core/tinyauth/)
- Update LLDAP configuration with PostgreSQL database
- Remove Tinyauth middleware from Traefik dashboard
- Update LLDAP credentials and timezone to America/Los_Angeles
2025-12-12 23:16:52 +00:00
Eduardo Figueroa
d24baf3fd4 use nfs storage 2025-12-05 03:58:58 +00:00
Eduardo Figueroa
b3336b3442 two dashboards for testing 2025-12-05 03:36:54 +00:00
Eduardo Figueroa
bfa13904ab new service, rss bridge 2025-12-05 03:36:37 +00:00
Eduardo Figueroa
93b9c883a1 docs(freshrss): Add API troubleshooting documentation
Add comprehensive guides for debugging and resolving FreshRSS API
authentication issues with mobile apps.

Includes:
- API password setup instructions
- iOS app configuration (Reeder, NetNewsWire, etc.)
- Google Reader API vs Fever API comparison
- nginx Authorization header troubleshooting
- Debug logging locations and commands
- Common error patterns and solutions

Covers both successful resolution and known limitations.
2025-12-04 18:44:53 +00:00
Eduardo Figueroa
68632a9662 feat(freshrss): Enable debug logging
Add development environment mode for troubleshooting authentication
and API issues. Enables detailed PHP error logging and stack traces.

Can be reverted to production mode by removing FRESHRSS_ENV variable
after debugging is complete.
2025-12-04 18:44:46 +00:00
Eduardo Figueroa
bd9a55f293 fix(freshrss): Remove SSO and configure for API access
Remove Tinyauth SSO middleware and configure Traefik for FreshRSS API
compatibility with mobile apps.

Changes:
- Removed tinyauth middleware (conflicts with API authentication)
- Added passhostheader directive for proper request routing
- FreshRSS now uses built-in authentication only

This enables iOS RSS apps (Reeder, NetNewsWire, etc.) to connect via
FreshRSS's Google Reader and Fever APIs.
2025-12-04 18:44:40 +00:00
Eduardo Figueroa
2c3d646611 feat(grafana): Add Docker logs dashboard for Loki
Add comprehensive Grafana dashboard for viewing Docker container logs
via Loki datasource.

Dashboard features:
- Real-time log streaming from all containers
- Log volume visualization by container
- Error detection and tracking
- Container and image filtering
- Text search with regex support
- Statistics panels (active containers, total logs, error count, log rate)

Includes:
- Pre-configured template variables for dynamic filtering
- Auto-refresh every 10 seconds
- Complete documentation with LogQL examples
- Troubleshooting guide
2025-12-04 18:44:32 +00:00
Eduardo Figueroa
36e580f180 feat(dozzle): Add lightweight Docker log viewer
Add Dozzle for simple, real-time Docker container log viewing.

Features:
- Real-time log streaming from all containers
- Search and filter capabilities
- Multi-container side-by-side view
- Container resource statistics (CPU, memory)
- No database required (reads directly from Docker)
- Minimal footprint (~4MB image)

Configuration:
- Restricted to local network only (local-only middleware)
- Auto-discovery of all running containers
- Dark/light theme support

Includes quickstart guide and comprehensive documentation.
2025-12-04 18:44:23 +00:00
Eduardo Figueroa
27e4f5267d feat(komodo): Add Docker and server management platform
Add Komodo for centralized Docker container and server management.

Features:
- Docker container deployment and management
- Server monitoring and resource tracking
- Build system for Docker images from Git repositories
- Multi-server support with periphery agents
- Webhooks for automatic deployments

Stack includes:
- Komodo Core (web UI and API)
- Komodo Periphery (local Docker agent)
- MongoDB (configuration storage)

Includes comprehensive configuration with:
- Pre-configured .env with all available options
- Optional TOML config files for advanced settings
- Setup script with pre-deployment validation
- Full documentation and security checklist
2025-12-04 18:44:14 +00:00
Eduardo Figueroa
60781182f6 feat(security): Restrict sensitive services to local network
Apply local-only middleware to:
- Backrest (backup management)
- Code Server (IDE)
- Ollama (LLM API)

These services now require both SSO authentication and local network
access (10.0.0.0/16), preventing external access while maintaining
convenience on LAN.
2025-12-04 18:43:46 +00:00
Eduardo Figueroa
6ad3392056 feat(traefik): Add local-only IP allowlist middleware
Add IP allowlist middleware to restrict services to local network
(10.0.0.0/16). Allows services to be protected from external access
while remaining accessible on LAN.
2025-12-04 18:43:20 +00:00
Eduardo Figueroa
3a278690f7 feat: Add OpenCode configuration for local Ollama
Add OpenCode.ai configuration to use local Ollama instance with
Qwen2.5-Coder 7B model for AI-assisted coding tasks.
2025-12-03 19:54:13 +00:00
Eduardo Figueroa
8d0f60d9d1 feat: Add Lidarr and Prowlarr for music automation
Add Lidarr for music collection management and Prowlarr for
unified indexer management across all *arr applications.

- Lidarr accessible at lidarr.fig.systems
- Prowlarr accessible at prowlarr.fig.systems
- Both integrated with existing media automation stack
2025-12-03 19:54:05 +00:00
Eduardo Figueroa
fb25e9fea4 feat: Add Open WebUI and code-server for AI development
Add Open WebUI for ChatGPT-like interface to local Ollama models
with RAG capabilities for documentation Q&A. Add code-server for
web-based VS Code access with AI coding assistants.

- Open WebUI accessible at ai.fig.systems
- code-server accessible at code.fig.systems
- Both integrated with local Ollama instance
2025-12-03 19:53:58 +00:00
Eduardo Figueroa
4a0be9ff93 feat: Expose Ollama API port for local access
Add port mapping for Ollama API (11434) to enable direct access
from host machine for CLI tools and local development.
2025-12-03 19:53:51 +00:00
Eduardo Figueroa
f95eab1c68 feat: Configure Homarr dashboard and update FreshRSS hostname
- Add complete Traefik configuration for Homarr dashboard
- Enable Docker socket access for service discovery
- Configure Homarr to listen on dashboard.fig.systems
- Update FreshRSS hostname from rss to feeds for clarity
2025-12-03 19:53:45 +00:00
Eduardo Figueroa
2ee7b02f29 feat: Add Homarr discovery labels and service improvements
- Add Homarr discovery labels to Jellyfin and Jellyseerr
- Add config volume mount to Profilarr for persistence
- Improve service organization and discoverability
2025-12-03 19:53:38 +00:00
Eduardo Figueroa
d9f266a590 feat: Upgrade Loki and Promtail to v3.3.2
- Upgrade Loki from v2.9.3 to v3.3.2
- Upgrade Promtail from v2.9.3 to v3.3.2
- Update Loki configuration for v3 compatibility
- Replace deprecated table_manager with compactor settings
- Disable structured metadata for compatibility
2025-12-03 19:53:32 +00:00
Eduardo Figueroa
0ff2565c5c fix: Correct media volume paths from /media to /mnt/media
Update all media services to use the correct mount point at /mnt/media
for consistency across Sonarr, Radarr, SABnzbd, qBittorrent, Jellyfin,
and Immich. This ensures proper file access and atomic moves between
download and library directories.
2025-12-03 19:53:25 +00:00
Eduardo Figueroa
848c23f108 feat: Upgrade Traefik to v3.6.2 and update LLDAP configuration
- Upgrade Traefik from v3.3 to v3.6.2
- Add Docker API version specification for compatibility
- Update LLDAP to latest image tag
- Migrate LLDAP to named volume for better data management
2025-12-03 19:53:15 +00:00
Eduardo Figueroa
ddf8c7f09f docs: Add .env.example files with redacted credentials
Add example environment files for LLDAP, TinyAuth, and Grafana logging
with redacted passwords and secrets to serve as templates.
2025-12-03 19:53:04 +00:00
13ef4b1014
Merge pull request #9 from efigueroa/claude/karakeep-ollama-configs-011CUqEzDETA2BqAzYUcXtjt
Claude/karakeep ollama configs 011 c uq ez deta2 bq az y uc xtjt
2025-11-12 10:29:14 -08:00
Claude
460610986c
docs: Add non-root SSH user support for Terraform
- Updated documentation for users who disable root SSH
- Added setup instructions for non-root user with sudo access
- Configured write permissions for /var/lib/vz/snippets
- Added Option A (root) and Option B (non-root) SSH setup guides
- Enhanced troubleshooting for permission denied errors
- Updated terraform.tfvars.example with non-root user example
2025-11-11 06:28:37 +00:00
Claude
28849389ea
fix: Add SSH username configuration for Proxmox provider
- Added pm_ssh_username variable (default: "root")
- Updated Proxmox provider SSH config to use username
- Fixes "unable to authenticate user "" over SSH" error
- Updated terraform.tfvars.example with SSH username
- Enhanced README with complete SSH setup instructions
- Added troubleshooting for common SSH authentication issues
2025-11-11 06:26:50 +00:00
a942b58320
Merge pull request #8 from efigueroa/claude/karakeep-ollama-configs-011CUqEzDETA2BqAzYUcXtjt
feat: Add SOPS state management and fix Terraform deployment issues
2025-11-10 22:05:39 -08:00
Claude
9109712b59
feat: Add SOPS state management and fix Terraform deployment issues
SOPS State Management:
- Implemented Git + SOPS + age encryption for Terraform state files
- Added .gitignore files to prevent committing unencrypted secrets
- Created .sops.yaml.example template for age encryption configuration
- Created helper scripts for automated encryption/decryption workflow:
  - scripts/tf: Wrapper script with auto-encrypt/decrypt
  - scripts/tf-encrypt: Manual encryption of state files
  - scripts/tf-decrypt: Manual decryption of state files
- Added comprehensive STATE_MANAGEMENT.md documentation covering:
  - Installation of age and SOPS
  - Initial setup and key generation
  - Daily workflow examples
  - Security best practices
  - Troubleshooting common issues
  - Multi-user key management
  - Backup strategies

Terraform Deployment Fixes:
- Added snippets_storage variable for cloud-init snippet storage
- Fixed datastore error: "local" does not support snippets
- Updated README with solutions for datastore and SSH issues
- Added troubleshooting for:
  - Enabling snippets on existing storage (pvesm set)
  - Creating dedicated directory storage for snippets
  - SSH authentication setup with ssh-agent
  - Manual cloud-init snippet creation workaround

Files modified:
- terraform/proxmox-examples/docker-host/main.tf
- terraform/proxmox-examples/docker-host/variables.tf
- terraform/proxmox-examples/docker-host/terraform.tfvars.example
- terraform/proxmox-examples/docker-host/README.md

Files added:
- .gitignore (root level)
- terraform/proxmox-examples/docker-host/.gitignore
- terraform/proxmox-examples/docker-host/.sops.yaml.example
- terraform/proxmox-examples/docker-host/STATE_MANAGEMENT.md
- terraform/proxmox-examples/docker-host/scripts/tf
- terraform/proxmox-examples/docker-host/scripts/tf-encrypt
- terraform/proxmox-examples/docker-host/scripts/tf-decrypt
2025-11-11 05:55:07 +00:00
ac62e022da
Merge pull request #7 from efigueroa/claude/karakeep-ollama-configs-011CUqEzDETA2BqAzYUcXtjt
feat: Add GPU passthrough and NFS mount support to Terraform
2025-11-10 21:43:33 -08:00
Claude
21d373a513
feat: Add GPU passthrough and NFS mount support to Terraform
- Added GPU passthrough configuration for NVIDIA GTX 1070
  - Dynamic hostpci block with OVMF BIOS and q35 machine type
  - EFI disk support when GPU is enabled
  - Configurable via enable_gpu_passthrough and gpu_pci_id variables

- Added NFS mount support for Proxmox host media directories
  - Mounts 11 media directories from Proxmox host to VM
  - Configurable source path and mount point
  - Persistent mounts via /etc/fstab
  - NFS client installation via cloud-init

- Added multi-OS support (Ubuntu, AlmaLinux, Debian)
  - Separate cloud-init templates for Ubuntu and AlmaLinux
  - OS-specific package installation (apt vs dnf)
  - OS type validation via variable

- Updated terraform.tfvars.example with new configuration options
- Updated README.md with comprehensive documentation:
  - AlmaLinux cloud template creation steps
  - GPU passthrough setup for AMD Ryzen + NVIDIA
  - NFS server configuration on Proxmox host
  - Troubleshooting for GPU and NFS issues
2025-11-11 05:39:37 +00:00
c6132361c7
Merge pull request #6 from efigueroa/claude/karakeep-ollama-configs-011CUqEzDETA2BqAzYUcXtjt
Claude/karakeep ollama configs 011 c uq ez deta2 bq az y uc xtjt
2025-11-10 19:44:09 -08:00
Claude
953a9d52af
feat: Add Caddy static sites and implement domain strategy
Domain Strategy:
- fig.systems: Homelab services only (removed edfig.dev fallback from all services)
- edfig.dev: Professional/public sites (personal site, blog)
- figgy.foo: Experimental/private content (SSO protected)

Removed edfig.dev Fallbacks:
- Updated 22 compose files to remove || Host(...edfig.dev) pattern
- All homelab services now use fig.systems only
- Traefik email remains admin@edfig.dev

Added Caddy Static Sites Service:
- compose/services/static-sites/ with Caddy 2
- Serves three domains with different configurations:
  * edfig.dev (personal/professional) - Public, no SSO
  * blog.edfig.dev (blog) - Public, Markdown rendering, templates
  * figgy.foo (experimental) - SSO protected, directory browsing
- Example sites with modern, responsive designs
- Comprehensive README with usage examples
- Auto-reload on config changes (no restarts needed)

Features:
- Markdown rendering (write .md, serves as HTML)
- Go templates for dynamic content
- Directory browsing (figgy.foo)
- Automatic gzip compression
- Static asset caching
- Zero-downtime config reloads

Updated Documentation:
- README.md: Added domain strategy section, static sites in directory structure
- README.md: Added static sites to service URLs table
- README.md: Updated deployment instructions
2025-11-10 12:11:03 +00:00
Claude
07a8154fea
docs: Add architecture docs and fix compose files for integration 2025-11-10 11:32:13 +00:00
Claude
9fbd003798
feat: Replace Linkwarden with Karakeep, add Ollama LLM server, add config examples
- Replace Linkwarden with Karakeep for AI-powered bookmarking
  - Supports links, notes, images, PDFs
  - AI auto-tagging with Ollama integration
  - Browser extensions and mobile apps
  - Full-text search with Meilisearch

- Add Ollama for local LLM inference
  - Run Llama, Mistral, CodeLlama locally
  - GPU acceleration support (GTX 1070)
  - OpenAI-compatible API
  - Integrates with Karakeep for AI features

- Add example configuration files for services
  - Sonarr: config.xml.example
  - Radarr: config.xml.example
  - SABnzbd: sabnzbd.ini.example
  - qBittorrent: qBittorrent.conf.example
  - Vikunja: config.yml.example
  - FreshRSS: config.php.example

- Fix incomplete FreshRSS compose.yaml

- Update README with new services and deployment instructions
2025-11-09 06:16:27 +00:00
0798e54ba0
Merge pull request #5 from efigueroa/claude/centralized-logging-011CUqEzDETA2BqAzYUcXtjt
Claude/centralized logging 011 c uq ez deta2 bq az y uc xtjt
2025-11-08 21:47:33 -08:00
Claude
9807ce1627
feat: Add Recyclarr and Profilarr for quality profile management 2025-11-09 01:26:18 +00:00
Claude
07ce29affe
feat: Add Uptime Kuma for service uptime and status monitoring 2025-11-09 01:21:14 +00:00
25aea7dc34
Merge pull request #4 from efigueroa/claude/centralized-logging-011CUqEzDETA2BqAzYUcXtjt
feat: Add centralized logging stack with Loki, Promtail, and Grafana
2025-11-08 17:17:53 -08:00
Claude
7797f89fcb
feat: Add centralized logging stack with Loki, Promtail, and Grafana
Add complete centralized logging solution for all Docker containers.

New services:
- Loki: Log aggregation backend (loki.fig.systems)
- Promtail: Log collection agent
- Grafana: Log visualization (logs.fig.systems)

Features:
- Automatic Docker container discovery
- 30-day log retention (configurable)
- Powerful LogQL querying
- Pre-configured Grafana datasource
- Comprehensive documentation

Resources:
- ~400-700MB RAM for 20 containers
- Automatic labeling by container/project/service
- SSO protection for Loki API

Documentation:
- Complete setup guide
- Query examples and patterns
- Troubleshooting steps
- Best practices
2025-11-09 01:08:20 +00:00
165c72818c
Merge pull request #3 from efigueroa/claude/gitops-home-services-011CUqEzDETA2BqAzYUcXtjt
Claude/gitops home services
2025-11-06 11:40:25 -08:00
Claude
4adaa8e8be
docs: Add comprehensive documentation for homelab setup and operations
This commit adds extensive documentation covering all aspects of homelab setup,
configuration, and troubleshooting.

## Documentation Structure

### Main Documentation
- **docs/README.md**: Documentation hub with table of contents
- **docs/getting-started.md**: Complete setup guide from scratch
- **docs/quick-reference.md**: Fast reference for common tasks and commands

### Configuration Guides (docs/guides/)
- **secrets-management.md**: Environment variables and secrets configuration
  - How to generate secure secrets
  - Service-specific configuration
  - Automated secret generation scripts
  - Security best practices
  - Common mistakes to avoid

- **gpu-setup.md**: NVIDIA GTX 1070 GPU acceleration setup
  - Specific to Proxmox 9 on Debian 13
  - Complete passthrough configuration
  - Jellyfin hardware transcoding setup
  - Immich ML inference acceleration
  - Performance tuning and benchmarks
  - Troubleshooting GPU issues

### Troubleshooting (docs/troubleshooting/)
- **faq.md**: Frequently asked questions (60+ Q&A)
  - General questions about the homelab
  - Setup and configuration questions
  - SSL/TLS and SSO questions
  - Service-specific questions
  - Security and backup questions
  - Performance optimization

- **common-issues.md**: Common problems and solutions
  - Service startup failures
  - SSL certificate errors
  - SSO authentication issues
  - Access problems
  - Performance issues
  - Database errors
  - Network issues
  - GPU problems

### Services (docs/services/)
- **README.md**: Complete service overview
  - All 20 services with descriptions
  - Use cases for each service
  - Resource requirements
  - Deployment checklists
  - Service dependencies
  - Minimum viable setups

## Key Features

### Environment-Specific
All GPU documentation is specific to:
- **Platform**: Proxmox 9 (PVE)
- **OS**: Debian 13
- **GPU**: NVIDIA GTX 1070 (Pascal)
- Includes Proxmox-specific GPU passthrough
- VM guest setup on Debian 13
- NVIDIA Container Toolkit configuration

### Comprehensive Coverage
- 60+ FAQs answered
- 50+ common issues documented
- 100+ command examples
- Step-by-step procedures
- Troubleshooting decision trees
- Quick reference tables

### Practical Examples
- Actual command outputs
- Real-world scenarios
- Copy-paste ready commands
- Configuration file examples
- Debugging procedures

## Documentation Highlights

### Getting Started Guide
- Prerequisites checklist
- Docker installation
- Media directory setup
- DNS configuration
- Environment variable setup
- Service deployment order
- Initial service configuration
- Verification procedures

### Secrets Management
- Secret type identification
- Generation commands for each type
- Service-specific requirements
- Automated generation script
- Password manager integration
- Backup procedures
- Security best practices
- Common mistakes

### GPU Setup (Proxmox/Debian/GTX 1070)
- IOMMU enablement
- VFIO configuration
- PCI passthrough to VM
- NVIDIA driver installation on Debian 13
- Container toolkit setup
- Jellyfin NVENC configuration
- Immich CUDA acceleration
- Performance benchmarks
- NVENC stream limit unlock
- Monitoring and tuning

### Quick Reference
- All service URLs
- Common Docker Compose commands
- System check commands
- Secret generation commands
- Troubleshooting steps
- File locations
- Port reference
- Emergency procedures

### FAQ
Covers questions about:
- Hardware requirements
- Domain requirements
- Cost estimates
- Setup procedures
- Configuration details
- SSL certificates
- SSO authentication
- Service-specific issues
- Backup strategies
- Performance optimization
- Security considerations

### Common Issues
Solutions for:
- Container startup failures
- Environment variable errors
- Port conflicts
- Permission issues
- SSL certificate problems
- DNS issues
- SSO login failures
- Database connections
- Network connectivity
- GPU detection
- Resource constraints

### Services Overview
- Detailed description of all 20 services
- Use cases and features
- Required vs optional services
- Resource requirements by tier
- Service dependencies diagram
- Deployment checklists
- "When to use" guidance

## File Structure

```
docs/
├── README.md                           # Documentation hub
├── getting-started.md                  # Setup walkthrough
├── quick-reference.md                  # Command reference
├── guides/
│   ├── secrets-management.md           # Secrets configuration
│   └── gpu-setup.md                    # GPU acceleration (GTX 1070)
├── troubleshooting/
│   ├── faq.md                          # 60+ FAQs
│   └── common-issues.md                # Problem solving
└── services/
    └── README.md                       # Service overview
```

## Benefits

### For New Users
- Clear setup path from zero to running services
- Explains "why" not just "how"
- Common pitfalls documented and avoided
- Example configurations provided

### For Experienced Users
- Quick reference for commands
- Troubleshooting decision trees
- Performance tuning guides
- Advanced configurations

### For Maintenance
- Update procedures
- Backup and restore
- Monitoring guidelines
- Security hardening

## Documentation Standards

- Clear, concise writing
- Code blocks with syntax highlighting
- Examples with expected output
- Warning and tip callouts
- Cross-references between docs
- Tested commands and procedures

## Next Steps

Users should:
1. Start with getting-started.md
2. Configure secrets using secrets-management.md
3. Enable GPU if available (gpu-setup.md)
4. Use quick-reference.md for daily operations
5. Refer to faq.md and common-issues.md when stuck

---

**This documentation makes the homelab accessible to users of all skill levels!**
2025-11-06 19:32:10 +00:00
Claude
ffc30ff582
refactor: Move all environment variables to .env files with example secrets
This commit improves configuration management by:

## Changes

### Environment Variable Management
- Moved ALL environment blocks from compose.yaml files to .env files
- Added comprehensive .env files for all 20 services
- Included example secret formats with generation commands
- Added detailed comments explaining what each secret should look like

### Example Secret Formats
All .env files now include examples for:
- **JWT Secrets**: 64-character hex strings
  - Example format: `a1b2c3d4e5f67890abcdef1234567890...`
  - Generate with: `openssl rand -hex 32`

- **Passwords**: Strong alphanumeric passwords
  - Example format: `MyS3cur3P@ssw0rd!2024#HomeL@b`
  - Generate with: `openssl rand -base64 32 | tr -d /=+ | cut -c1-32`

- **Session Secrets**: Random hex strings
  - Example format: `b2c3d4e5f67890abcdef1234567890a1b2...`
  - Generate with: `openssl rand -hex 32`

- **API Keys**: Service-specific formats
  - Meili: 32-character hex (`openssl rand -hex 16`)
  - NextAuth: 64-character hex (`openssl rand -hex 32`)

### GPU Support Documentation
- Added NVIDIA GPU (GTX 1070) configuration for Jellyfin
- Added NVIDIA GPU configuration for Immich (ML inference & transcoding)
- Included setup instructions for NVIDIA Container Toolkit
- Documented how to enable GPU acceleration in each service

### Services Updated

**Core Infrastructure:**
- lldap: Added JWT secret and password examples
- tinyauth: Added session secret examples
- traefik: No environment variables needed

**Media Services:**
- jellyfin: Added .env with GPU configuration docs
- jellyseer: Created .env with logging and timezone settings
- immich: Added database password examples and GPU docs
- sonarr: Created .env for PUID/PGID/TZ
- radarr: Created .env for PUID/PGID/TZ
- sabnzbd: Created .env for PUID/PGID/TZ
- qbittorrent: Created .env for PUID/PGID/TZ/WEBUI_PORT

**Utility Services:**
- homarr: Created .env for port and timezone
- backrest: Added environment variables to .env
- linkwarden: Rewrote .env with NextAuth, Postgres, Meili examples
- vikunja: Created .env with JWT secret and database password
- FreshRSS: Created .env for PUID/PGID/TZ
- booklore: Created .env for PUID/PGID/TZ
- calibre-web: Created .env for PUID/PGID/TZ
- filebrowser: Created .env for PUID/PGID/TZ
- lubelogger: Created .env with locale settings
- rsshub: Created .env with cache and logging config
- microbin: Updated existing .env, removed environment block

### Benefits

1. **Security**:
   - Clear examples show what strong secrets look like
   - Generation commands prevent weak passwords
   - All secrets in one place per service

2. **Consistency**:
   - All services follow the same pattern (env_file: .env)
   - No more environment blocks in compose files
   - Easier to template new services

3. **Usability**:
   - Users know exactly what to change (look for `changeme_*`)
   - Example formats prevent configuration errors
   - Commands provided to generate secure values

4. **Maintainability**:
   - Compose files are cleaner and more readable
   - Environment changes don't require compose file edits
   - Version control friendly (.env files can be .gitignored)

### Files Changed
- Modified: 24 compose.yaml files
- Created: 14 new .env files
- Updated: 6 existing .env files
- Total .env files: 20 across all services

All compose.yaml files now use `env_file: .env` exclusively.
No environment blocks remain in any compose files.
2025-11-06 19:18:07 +00:00
312144f37e
Merge pull request #2 from efigueroa/claude/gitops-home-services-011CUqEzDETA2BqAzYUcXtjt
feat: Add service template, backup solution, dashboard, and IaC tooling
2025-11-05 14:06:11 -08:00