Sanitized mirror from private repository - 2026-04-16 07:12:52 UTC
This commit is contained in:
187
docs/advanced/customization.md
Normal file
187
docs/advanced/customization.md
Normal file
@@ -0,0 +1,187 @@
|
||||
# 🎨 Customization Guide
|
||||
|
||||
## Overview
|
||||
|
||||
This guide covers how to customize and extend the homelab configuration to fit your specific needs.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Customization Areas
|
||||
|
||||
### 1. Theme & Branding
|
||||
|
||||
#### Heimdall/Homer Dashboard
|
||||
```yaml
|
||||
# homer/config.yml
|
||||
title: "My Homelab"
|
||||
subtitle: "Self-hosted services"
|
||||
logo: "assets/logo.png"
|
||||
|
||||
colors:
|
||||
light:
|
||||
highlight-primary: "#3367d6"
|
||||
highlight-secondary: "#4285f4"
|
||||
dark:
|
||||
highlight-primary: "#3367d6"
|
||||
highlight-secondary: "#4285f4"
|
||||
```
|
||||
|
||||
#### Grafana Theme
|
||||
```ini
|
||||
# grafana.ini
|
||||
[users]
|
||||
default_theme = dark
|
||||
|
||||
[panels]
|
||||
disable_sanitize_html = true
|
||||
```
|
||||
|
||||
### 2. Service Configuration
|
||||
|
||||
#### Environment Variables
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
services:
|
||||
myservice:
|
||||
environment:
|
||||
# Override default settings
|
||||
- APP_NAME=My Custom Name
|
||||
- TIMEZONE=America/Los_Angeles
|
||||
- LANGUAGE=en_US
|
||||
```
|
||||
|
||||
#### Custom Domains
|
||||
```nginx
|
||||
# In Nginx Proxy Manager:
|
||||
# Add custom domain for any service
|
||||
# yourservice.yourdomain.com -> container:port
|
||||
```
|
||||
|
||||
### 3. Notification Customization
|
||||
|
||||
#### ntfy Topics
|
||||
```yaml
|
||||
# Customize alert channels
|
||||
alerts:
|
||||
critical: homelab-critical # High priority
|
||||
warnings: homelab-warnings # Normal
|
||||
info: homelab-info # Low priority
|
||||
```
|
||||
|
||||
#### Alert Templates
|
||||
```yaml
|
||||
# alertmanager/templates/custom.tmpl
|
||||
{{ define "custom.title" }}
|
||||
[{{ .Status | toUpper }}] {{ .CommonLabels.alertname }}
|
||||
{{ end }}
|
||||
|
||||
{{ define "custom.text" }}
|
||||
{{ range .Alerts }}
|
||||
*Alert:* {{ .Labels.alertname }}
|
||||
*Instance:* {{ .Labels.instance }}
|
||||
*Description:* {{ .Annotations.description }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📁 Adding New Services
|
||||
|
||||
### Template docker-compose.yml
|
||||
|
||||
```yaml
|
||||
# templates/new-service.yaml
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
servicename:
|
||||
image: image:tag
|
||||
container_name: servicename
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=America/Los_Angeles
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- ./data:/data
|
||||
ports:
|
||||
- "8080:8080"
|
||||
networks:
|
||||
- proxy
|
||||
labels:
|
||||
- "com.centurylinklabs.watchtower.enable=true"
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
```
|
||||
|
||||
### Adding to Monitoring
|
||||
|
||||
```yaml
|
||||
# prometheus/prometheus.yml
|
||||
scrape_configs:
|
||||
- job_name: 'new-service'
|
||||
static_configs:
|
||||
- targets: ['servicename:metrics_port']
|
||||
```
|
||||
|
||||
### Adding to Uptime Kuma
|
||||
1. Open Uptime Kuma dashboard
|
||||
2. Add New Monitor
|
||||
3. Configure HTTP/TCP check
|
||||
4. Add to relevant status page
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Advanced Customization
|
||||
|
||||
### Custom Docker Networks
|
||||
```yaml
|
||||
# Create isolated networks for service groups
|
||||
networks:
|
||||
media:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.20.0.0/16
|
||||
|
||||
monitoring:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.21.0.0/16
|
||||
```
|
||||
|
||||
### Reverse Proxy Custom Headers
|
||||
```nginx
|
||||
# In NPM Advanced config
|
||||
proxy_set_header X-Custom-Header "value";
|
||||
proxy_hide_header X-Powered-By;
|
||||
|
||||
# Security headers
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
```
|
||||
|
||||
### Custom Health Checks
|
||||
```yaml
|
||||
services:
|
||||
myservice:
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 Further Reading
|
||||
|
||||
- [Integrations Guide](integrations.md)
|
||||
- [Scaling Guide](scaling.md)
|
||||
- [Ansible Automation](ansible.md)
|
||||
Reference in New Issue
Block a user