mkdocs.yml
Rama main · réplica de lectura del repositorio original.
site_name: Norbert Csicsay - Homelab
site_description: Self-hosted infrastructure running 32 Docker Compose stacks and a 3-node K3s cluster on Proxmox VE. Built from scratch to learn Linux, networking, and DevOps practices.
site_author: Norbert Csicsay
site_url: https://docs.homelabor.net/
# Internal working documents. They live under docs/ so they sit beside the
# material they describe, but they are not part of the published portfolio:
# they name services and reasoning meant for me, not for a visitor. Leaving
# them out of `nav` was not enough - MkDocs still built them, listed them in
# sitemap.xml and indexed them for the site search.
exclude_docs: |
superpowers/
adr/
README.md
CLAUDE.md
# `README.md` is not an internal document: it is the index of docs/ for anyone
# reading the repo on GitHub, and it is kept in step with `nav` by hand. MkDocs
# drops it from the build anyway because `index.md` already claims that URL, but
# it does so with a warning, which `--strict` turns into a failed deploy. Naming
# it here makes the exclusion deliberate instead of incidental.
#
# `CLAUDE.md` never reaches CI at all - `.gitignore` covers it repo-wide - so it
# is listed for the sake of the local build only. Without the line, a local
# `mkdocs build --strict` aborts on a file the deploy workflow will never see,
# which would make the strict build impossible to reproduce before pushing.
# `--strict` in the deploy workflow turns each of these into a build failure, so
# a broken link cannot reach the published site. `warn` rather than `ignore` is
# what gives them something to escalate; `anchors` is the one that catches a
# heading rename breaking a `#fragment` somewhere else in the tree.
validation:
omitted_files: warn
absolute_links: warn
unrecognized_links: warn
anchors: warn
repo_url: https://github.com/Pironex9/homelab
repo_name: Pironex9/homelab
docs_dir: docs
theme:
name: material
# Exists only to carry the Umami <script> tag, which needs a data-* attribute
# that no MkDocs config key can express. See overrides/main.html.
custom_dir: overrides
logo: assets/mark.svg
favicon: assets/mark.svg
# Stops Material fetching Roboto from Google Fonts. The faces are then set
# through --md-text-font and --md-code-font in stylesheets/extra.css. This
# site links from a landing page whose argument is that it is self-hosted
# end to end; a Google Fonts request here contradicts it directly.
font: false
palette:
- scheme: default
primary: custom
accent: custom
toggle:
icon: material/weather-night
name: Switch to dark mode
- scheme: slate
primary: custom
accent: custom
toggle:
icon: material/weather-sunny
name: Switch to light mode
features:
- navigation.tabs
- navigation.sections
- navigation.top
- search.highlight
- search.suggest
- content.code.copy
icon:
repo: fontawesome/brands/github
extra_css:
- stylesheets/extra.css
extra:
social:
- icon: fontawesome/brands/github
link: https://github.com/Pironex9
- icon: fontawesome/brands/linkedin
link: https://www.linkedin.com/in/norbert-csicsay-497195334
nav:
- Home: index.md
- Proxmox:
- LXCs & VMs:
- Docker Host (LXC 100): hosts/docker-host.md
- Home Assistant (VM 101): hosts/haos.md
- AdGuard Home (LXC 102): hosts/adguard.md
- Vaultwarden (LXC 103): hosts/vaultwarden.md
- Komodo (LXC 105): hosts/komodo.md
- Karakeep (LXC 106): hosts/karakeep.md
- n8n (LXC 107): hosts/n8n.md
- Claude Code Mgmt (LXC 109): hosts/claude-mgmt.md
- Pocket ID (LXC 114): hosts/pocket-id.md
- Caddy Reverse Proxy (LXC 110): hosts/caddy.md
- Agentos (LXC 113): hosts/agentos.md
- Nobara PC: hosts/nobara.md
- Windows 11 (nobara dual-boot): hosts/winpc.md
- Hetzner VPS: hosts/vps.md
- K3s Cluster (3x OptiPlex): hosts/k3s-cluster.md
- Retired:
- Raspberry Pi 4: hosts/raspberry-pi.md
- Ollama (LXC 108): hosts/ollama.md
- Setup Guides:
- Core Infrastructure:
- 01 - Proxmox + MergerFS + SnapRAID: proxmox/01_Proxmox_VE_9.1_MergerFS_SnapRAID_Installation_Documentation.md
- 02 - Docker LXC Setup: proxmox/02_Proxmox_Docker_LXC_Setup_-_Detailed_Process.md
- 03 - USB HDD + SnapRAID Sync: proxmox/03_USB_HDD_Integration_SnapRAID_Sync_and_Media_Structure_Fix.md
- 04 - Home Assistant + Zigbee2MQTT: proxmox/04_Home_Assistant_OS_VM_Zigbee2MQTT_Backup_Strategy_Setup.md
- 05 - AdGuard Home + Tailscale DNS: proxmox/05_AdGuard_Home_Setup_Dedicated_LXC_Tailscale_DNS_Integration.md
- Services:
- 06 - Immich Photo Management: proxmox/06_Immich_Setup_Full_Installation_Guide.md
- 07 - Scrutiny Disk Health: proxmox/07_Scrutiny_Disk_Health_Monitoring_Setup_Guide.md
- 08 - Netdata Monitoring: proxmox/08_Netdata_System_Monitoring_Setup_Guide.md
- 09 - Vaultwarden: proxmox/09_Vaultwarden.md
- 10 - Helper Script LXCs: proxmox/10_Helper_Script_LXCs.md
- 11 - Jellyfin Hardware Transcoding: proxmox/11_Jellyfin_Hardware_Transcoding_Setup.md
- 12 - Karakeep AI Tagging: proxmox/12_Karakeep_AI_Tagging_with_Ollama_Setup_Documentation.md
- Operations:
- 13 - USB Disk Troubleshooting: proxmox/13_USB_Disk_Unmount_Problem_Resolution_disk4_ADATA_HD710_PRO.md
- 14 - NFS Setup: proxmox/14_NFS-Setup_Documentation.md
- 15 - Backup System: proxmox/15_Proxmox_Backup_System_Documentation.md
- Platform & Automation:
- 16 - Komodo Setup: proxmox/16_Komodo_complete_setup.md
- 17 - SuggestArr: proxmox/17_SuggestArr_Setup_Troubleshooting_Guide.md
- 18 - Claude Code Mgmt LXC: proxmox/18_Claude_Code_Management_LXC_Setup.md
- 19 - DocuSeal E-Signature: proxmox/19_DocuSeal_E-Signature_Setup.md
- 20 - MkDocs Portfolio Site: proxmox/20_MkDocs_Portfolio_Site_Setup.md
- 21 - Public Form E-Signature Automation: proxmox/21_Public_Form_E-Signature_Automation.md
- 22 - Dawarich GPS Tracking: proxmox/22_Dawarich_GPS_Tracking_Setup.md
- 23 - Homelable Network Visualization + MCP: proxmox/23_Homelable_Setup.md
- 24 - IP Conflict and DHCP Incident: proxmox/24_IP_Conflict_DHCP_Incident_Network_Hardening.md
- 25 - Art Portfolio Static Site: proxmox/25_Art_Portfolio_Static_Site.md
- 26 - Interactive Network Topology Map: proxmox/26_Network_Topology_Map.md
- 27 - Homepage GitOps Config: proxmox/27_Homepage_GitOps_Config.md
- 28 - SnapRAID Daemon Setup: proxmox/28_SnapRAID_Daemon_Setup.md
- 29 - Rails Learning Lab: proxmox/29_Rails_Learning_Lab.md
- 30 - Backup Verification + Restore Test: proxmox/30_Backup_Verification_Restore_Test.md
- 31 - Tailscale Port Collision + DNS Audit: proxmox/31_Tailscale_Port_Collision_DNS_Audit.md
- 32 - Nobara SSH Freeze (open): proxmox/32_Nobara_SSH_Freeze_Investigation.md
- 33 - Daily AI News Digest Pipeline: proxmox/33_AI_News_Digest_Pipeline.md
- 34 - Transcode-Free Re-encode (AV1/Hi10P to H.264): proxmox/34_Transcode_Free_Re-encode_AV1_to_H264.md
- 35 - Cron Job Monitoring (Uptime Kuma): proxmox/35_Cron_Job_Monitoring_Uptime_Kuma.md
- 36 - Immich Bulk Import and ML Pipeline: proxmox/36_Immich_Bulk_Import_ML_Pipeline.md
- 37 - Calibre-Web Bulk Ebook Import: proxmox/37_Calibre_Web_Automated_Bulk_Import.md
- 38 - Calibre Metadata Cleanup: proxmox/38_Calibre_Metadata_Cleanup.md
- 39 - Auditing a Community Fork: proxmox/39_Auditing_a_Community_Fork.md
- 40 - Shelfmark Book Pipeline: proxmox/40_Shelfmark_Book_Pipeline.md
- 41 - Hermes Agent Capability Hardening: proxmox/41_Hermes_Agent_Capability_Hardening.md
- 42 - Sonarr/Radarr Missing Media Audit: proxmox/42_Sonarr_Radarr_Missing_Media_Audit.md
- 43 - Nobara DSCP SSH Timeout: proxmox/43_Nobara_DSCP_SSH_Timeout.md
- 44 - Host Metrics Into The K3s Prometheus: proxmox/44_Host_Metrics_Into_The_K3s_Prometheus.md
- 45 - Fleet-Wide Package Updates: proxmox/45_Fleet_Wide_Package_Updates.md
- 46 - Pedicure Practice App: proxmox/46_Pedicure_Practice_App.md
- 47 - When One File Is Two Episodes: proxmox/47_When_One_File_Is_Two_Episodes.md
- 48 - When an Episode Is an Executable: proxmox/48_When_An_Episode_Is_An_Executable.md
- 49 - Six Hours of "No Internet": proxmox/49_Six_Hour_NIC_Hang.md
- 50 - Paperless and the HP Smart Tank: proxmox/50_Paperless_And_The_HP_Smart_Tank.md
- 51 - Two Alerts, and the One Nobody Raised: proxmox/51_Two_Alerts_And_The_One_Nobody_Raised.md
- 52 - The Door Sensor That Looked Alive: proxmox/52_The_Door_Sensor_That_Looked_Alive.md
- 53 - Autodarts Thin Client for a Friend: proxmox/53_Autodarts_Thin_Client_For_A_Friend.md
- 54 - The Reboot That Looked Like a Hang: proxmox/54_The_Reboot_That_Looked_Like_A_Hang.md
- 55 - PHP2Shell, Which of Our Services Run PHP: proxmox/55_PHP2Shell_Exposure_Check.md
- Deprecated:
- Recommendarr: proxmox/deprecated/Recommendarr_Setup_Troubleshooting_Guide.md
- Scanopy: proxmox/deprecated/Scanopy.md
- Minecraft Server: proxmox/deprecated/Minecraft_Server_Setup.md
- K3s Cluster:
- 01 - Infrastructure as Code: k3s/01_K3s_Infrastructure_as_Code.md
- 02 - Version Upgrades: k3s/02_Version_Upgrades.md
- 03 - Longhorn Storage: k3s/03_Longhorn_Storage.md
- 04 - Hardening and Recovery: k3s/04_Hardening_and_Recovery.md
- 05 - Wake-on-LAN: k3s/05_Wake_on_LAN.md
- VPS:
- 01 - Hetzner VPS + Pangolin + Jellyfin: vps/01_Hetzner_VPS_Pangolin_Jellyfin_Setup.md
- 02 - Security Configuration: vps/02_Security_Configuration_Guide.md
- 03 - Uptime Kuma Migration to VPS: vps/03_Uptime_Kuma_VPS_Migration.md
- 04 - Landing Page (homelabor.net): vps/04_Landing_Page_Setup.md
- Projects:
- Factory Defect Map Import Script: other/factory-copy-script.md
- Prompt Self-Audit Script: other/prompt-analysis.md
- Custom Claude Code Output Style: other/claude-output-style.md
plugins:
- search
markdown_extensions:
- admonition
- pymdownx.highlight:
anchor_linenums: true
line_spans: __span
pygments_lang_class: true
- pymdownx.inlinehilite
- pymdownx.superfences
- tables
- toc:
permalink: true