Commit graph

42 commits

Author SHA1 Message Date
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
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
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
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
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
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
Claude
cce203ed62
feat: Add service template, backup solution, dashboard, and IaC tooling
This commit adds several new features to enhance homelab management:

## New Services

### Backrest (backup.fig.systems)
- Modern web UI for managing Restic backups
- Encrypted, deduplicated backups to Backblaze B2
- Automated scheduling and retention policies
- Pre-configured to backup Immich photos and homelab configs
- SSO protected via tinyauth

### Homarr (home.fig.systems)
- Auto-discovery dashboard for all homelab services
- Docker socket integration for service monitoring
- Clean, modern interface with customizable widgets
- SSO protected via tinyauth

## Infrastructure

### Service Template System (templates/service-template/)
- Complete template with all common patterns
- Traefik labels, health checks, dependencies
- Environment variable examples
- Comprehensive README with usage instructions
- Ensures consistency across all new services

### OpenTofu/Terraform IaC (terraform/)
- Complete Proxmox VM provisioning setup
- Cloud-init automation for Docker host creation
- Automated Docker installation and configuration
- Media directory structure creation
- Step-by-step documentation including:
  - Cloud template creation guide
  - Variable configuration examples
  - Resource sizing recommendations
  - Security hardening options

## Documentation Updates
- Updated README with new service URLs
- Added Homarr and Backrest to directory structure
- Updated deployment instructions
- Added service table entries for new services

All new services follow established patterns:
- External homelab network
- Let's Encrypt SSL via Traefik
- Dual domain support (fig.systems + edfig.dev)
- Consistent naming and structure
2025-11-05 21:54:30 +00:00
Claude
172f6815d2 fix: Resolve Traefik network and labeler configuration errors
Traefik Network Fix:
- Change homelab network to external: true
- Consistent with all other services
- Network must be created before deploying Traefik
- Resolves CI validation warning

Labeler Configuration Fix:
- Remove unsupported changed-lines option
- actions/labeler@v5 doesn't support line-based matching
- Simplified to file path matching only
- Removes 'traefik' and 'dependencies' advanced filters
- Resolves 'Unknown config options' error

CI should now pass all validation checks
2025-11-05 21:25:45 +00:00
Claude
d484f0d01e fix: Resolve all GitHub Actions CI failures
YAML Linting Fixes:
- Fix comment spacing in lldap compose file
- Fix comment indentation in jellyfin compose file

File Cleanup:
- Remove deprecated nginxproxymanager directory
- Traefik replaces this functionality

Labeler Configuration:
- Update to actions/labeler@v5 format
- Use changed-files objects structure

Dependency Review:
- Add continue-on-error for private repos
- Requires GitHub Advanced Security
2025-11-05 21:18:08 +00:00
Claude
fd48fed9d8
feat: Complete homelab GitOps setup with SSO and SSL
Core Infrastructure:
- Add LLDAP for centralized user authentication (lldap.fig.systems)
- Configure Tinyauth with LLDAP backend for SSO (auth.fig.systems)
- Set up Traefik v3.3 with Let's Encrypt SSL automation
- Create homelab Docker network for service isolation

Media Services:
- Configure Jellyfin with /media folder mappings (flix.fig.systems)
- Add Jellyseerr for media requests (requests.fig.systems)
- Update Immich with photo library access (photos.fig.systems)
- Set up Sonarr for TV automation (sonarr.fig.systems)
- Set up Radarr for movie automation (radarr.fig.systems)
- Configure SABnzbd for Usenet downloads (sabnzbd.fig.systems)
- Add qBittorrent for torrent downloads (qbt.fig.systems)

Utility Services:
- Update Linkwarden with proper networking (links.fig.systems)
- Configure Vikunja task management (tasks.fig.systems)
- Set up LubeLogger vehicle tracking (garage.fig.systems)
- Configure Calibre-web for ebooks (books.fig.systems)
- Add Booklore for book tracking (booklore.fig.systems)
- Update FreshRSS reader (rss.fig.systems)
- Update RSSHub with internal networking (rsshub.fig.systems)
- Update MicroBin pastebin (paste.fig.systems)
- Add File Browser for media access (files.fig.systems)

Technical Improvements:
- Standardize all compose files to compose.yaml (Docker best practice)
- Add Traefik labels to all services for SSL termination
- Implement proper network isolation (homelab + service-specific networks)
- Add health checks to database services
- Configure dual domain support (fig.systems + edfig.dev)
- Set proper /media folder mappings for all media services
- Add comprehensive README with deployment instructions

Security:
- Enable SSO via Tinyauth for most services
- Configure LLDAP with admin user (edfig/admin@edfig.dev)
- Services with built-in auth have SSO disabled by default
- All traffic secured with automatic Let's Encrypt certificates
2025-11-05 19:12:04 +00:00
Eduardo Figueroa
cae18a8dba
templates 2025-10-24 11:47:48 -07:00
Eduardo Figueroa
eba4affd55
Restructure 2025-10-24 11:24:40 -07:00
edfig
4542578536 Update compose/specialized/rsshub/compose.yaml 2025-10-13 19:10:45 +02:00
edfig
ac023120ad Update compose/specialized/rsshub/compose.yml 2025-10-13 18:59:01 +02:00
ed532209f3 does this need to be yaml? 2025-08-23 17:28:23 -07:00
25f2593afc Initial boilerplate and structure 2025-08-23 15:23:16 -07:00