Skip to content
TuxLux40 edited this page Jul 10, 2026 · 36 revisions

This is a reference hub and showcase for how I run, secure, and document my homelab and daily Linux workflows as well as solutions for problems I have faced (see troubleshooting section).

Hardware Stack

Gaming PC

Alt-Text

Case

In 2025 I built my first PC ever from the ground up. Normally I am not a big fan of desktop PCs because they tend to take up much space, but I wanted something that I can expand in the future. At first I was looking for some kind of tower case with lots of bays like the THERMALTAKE Level 10 GT. But again my taste is too exotic, so I settled for the Newway NW1. Then in august 2025 I changed my mind again and wanted a smaller case, because I bought an old used Chieftec case I could expand with lots of HDDs and optical drives. I googled for weird and uncommon cases with unique features and immediately fell in love with the first result: the Jonsbo D31 mesh with screen.

For now I am really happy with this case. The builtin screen is perfect for docking messengers or monitoring software or as a backup if my primary monitors aren't working. Currently I have it configured to display btop as a wallpaper (via a KDE plugin).

CPU

AMD Ryzen 5 5600G - 6x 3.90 GHz AM4

GPU

For the GPU I went with the ASUS Dual Radeon RX 7600 EVO OC Edition 8GB GDDR6 which seemed like a decent middle tier graphics card. It runs even Silent Hill 2 remake pretty well on higher details. As long as you play on Linux of course. On windows the performance was expectedly much worse. It runs smaller LLMs, though not well. For the future I'm planning on getting a GPU with decent vRAM (16GB upwards) to really get good use out of local models.

Other components

Upgrade plans PC

  • more powerful GPU for better LLM inference and maybe gaming with raytracing
  • Top fans, maybe AIO cooler
  • CPU with more powerful iGPU

Raspberry Pi

Raspberry Pi 4 Raspberry Pi 4 running BlackArch

I have two RPis: a Raspberry Pi 3 which is currently not in use and a Raspberry Pi 4b 4GB which I currently use as a BlackArch-based security and lab node. I'm always having trouble finding good use cases, since I can do most stuff with my NAS already. I tried using it as a retro gaming station, but I hardly used it. So for now I have configured it as a server to experiment. I have WiFi antenna with monitor mode plugged in so I can practice a bit of pentesting. It also runs a snowflake proxy.

Case is the awesome GeeekPi Argon One V2 with M.2 expansion and a 240GB NVMe SSD.

Proxmox Server

I currently run Proxmox on Lenovo ThinkCentre M715q hardware for more demanding services that would otherwise consume too many resources on the NAS.

NAS and Proxmox cluster

Components

  • Lenovo ThinkCentre M715q (AMD PRO A10-9700E)
  • 16GB DDR4 RAM
  • 1x 512GB NVMe SSD
  • 1x 240GB SATA SSD

Current role:

  • Hosts memory-intensive services (for example OPNsense and OpenWebUI/Ollama)
  • Runs LXC and containerized workloads depending on use case
  • Serves as part of the core homelab compute layer

Ugreen DXP2800 NAS

I previously used Synology devices (DS218j and DS224+), but recently moved my main workload to the Ugreen DXP2800. Main reasons were better hardware value for the price and more flexibility for splitting workloads across HDD and NVMe storage.

Configured Memory & Storage:

  • 8GB DDR5 RAM
  • 1x 4TB HDD
  • 1x 2TB HDD
  • 1x 2TB NVMe SSD

Current role:

  • Main NAS and service host for always-on workloads
  • Storage backend for documents, photos, and media
  • Docker/LXC-adjacent services with backup integration into the wider homelab stack

Laptop

Lenovo ThinkPad T570 — Intel i7-7600U, 16 GB RAM, 512 GB NVMe, running CachyOS (BORE+LTO kernel) with LUKS2 full-disk encryption and AppArmor.

Smartphone

Pixel 8 with GrapheneOS.

Tablet

Pixel Tablet with GrapheneOS. Tried to use it as a laptop replacement. Not really useful for that, since it's media tablet with limited RAM and GrapheneOS and smart launcher seem to eat a lot of RAM.

Router

Fritzbox 7590 AX from my ISP. Will upgrade to one with OpenWRT support once I can afford it.

Network Topology

Everything sits behind the Fritzbox on 192.168.178.0/24, with Zoraxy as the single reverse-proxy/TLS entry point for anything I expose. The two Proxmox nodes carry almost everything in the hosted services table below — PVE1 (ThinkCentre M630e) leans toward data/infra (databases, LDAP, Podman), PVE2 (ThinkCentre M715q) toward user-facing apps (Open WebUI, automation, dashboards) — with the NAS picking up media and always-on storage-adjacent services. The Raspberry Pi sits a bit outside that, running its own Tor Snowflake proxy and WiFi pentest lab. Anything remote — gaming PC, laptop, phone, tablet — reaches back in over Tailscale instead of poking holes in the router.

Mapped with Scanopy, a self-hosted network-discovery daemon I run here — it keeps this diagram honest against what's actually live instead of my memory of what I set up months ago.

flowchart TB
    WAN(["Internet"])
    FRITZ["FRITZ!Box 7590 AX<br/>192.168.178.0/24"]
    ZORAXY["Zoraxy reverse proxy"]

    subgraph TS["Tailscale (remote access)"]
        GAMINGPC["Gaming PC<br/>Ryzen 5 5600G / RX 7600"]
        LAPTOP["ThinkPad T570<br/>CachyOS"]
        PHONE["Pixel 8<br/>GrapheneOS"]
        TABLET["Pixel Tablet<br/>GrapheneOS"]
    end

    subgraph PVE1G["PVE1 - ThinkCentre M630e"]
        PVE1APPS["Gitea, LLDAP, PostgreSQL,<br/>MariaDB, MongoDB, Redis,<br/>Podman, Baikal, Vaultwarden<br/>+10 more"]
    end

    subgraph PVE2G["PVE2 - ThinkCentre M715q"]
        PVE2APPS["Open WebUI, Zoraxy, n8n,<br/>NetBox, Authentik, Karakeep,<br/>PVE Scripts Local<br/>+8 more"]
    end

    subgraph NASG["NAS - Ugreen DXP2800"]
        NASAPPS["Jellyfin, Portainer,<br/>Kiwix, IT-Tools"]
    end

    subgraph RASPI["Raspberry Pi 4 - BlackArch"]
        SNOWFLAKE["Tor Snowflake proxy<br/>WiFi monitor-mode lab"]
    end

    WAN --> FRITZ --> ZORAXY
    GAMINGPC -. "Tailscale" .-> ZORAXY
    LAPTOP -. "Tailscale" .-> ZORAXY
    PHONE -. "Tailscale" .-> ZORAXY
    TABLET -. "Tailscale" .-> ZORAXY
    ZORAXY --> PVE1G
    ZORAXY --> PVE2G
    ZORAXY --> NASG
    FRITZ --- RASPI

    classDef wan fill:#868E96,color:#fff,stroke:#495057
    classDef proxy fill:#F76707,color:#fff,stroke:#D9480F
    classDef node fill:#0CA678,color:#fff,stroke:#087F5B
    classDef remote fill:#E64980,color:#fff,stroke:#A61E4D

    class WAN,FRITZ wan
    class ZORAXY proxy
    class PVE1APPS,PVE2APPS,NASAPPS,SNOWFLAKE node
    class GAMINGPC,LAPTOP,PHONE,TABLET remote
Loading

Misc. stuff & gadgets

  • 2in1 LightBar from 4smarts - Webcam and monitor lamp combined
  • Cherry secure board 1.0 - haven't figured out how to configure the certificate for keylogger blocking, but I love the card reader

Software Stack

Hosted services

This is a list of services I host at the moment:

Status Service Type Description Host Exposure
Authentik 📦 SSO and identity provider (DEV) PVE2 🔒
Baikal 📦 CalDAV/CardDAV server for calendar and contact synchronization.
Replaces the old Synology WebDAV Calendar & Contacts setup.
PVE1 🌐
DigiKam 💻 Photo management application running on desktop PC.
Photos are stored on the NAS. I use the MariaDB on PVE1 for more persistent and portable storage.
PC/NAS 🔒
Domain Monitor 📦 Domain and SSL certificate monitoring PVE1 🔒
Gitea 📦 Lightweight Git service for self-hosted repositories.
I like to mirror repos there that run the risk of being censored, like VPN and encryption protocols.
PVE1 🌐
Gitea Mirror 📦 Automated GitHub-to-Gitea repository mirroring PVE2 🔒
Homarr 📦 Personal homelab dashboard PVE1 🔒
Homelable 📦 Homelab management/dev environment (DEV) PVE1 🔒
IT-Tools 🐳 Collection of developer utilities NAS 🔒
Jellyfin 🐳 Free media system for streaming music, movies, and TV shows.
I also have a plugin for ebooks installed, so I have all kinds of media in one app.
NAS 🌐
Karakeep 📦 Bookmark and link manager PVE2 🔒
Kiwix 🐳 Offline wiki/content reader NAS 🔒
Koillection 📦 Collection management tool PVE1 🔒
LLDAP 📦 Lightweight LDAP server for centralized user management PVE1 🔒
LM Studio 💻 Local LLM inference, OpenAI-compatible API server (:1234). Headless systemd service, shared model/config storage across both PC OS installs. PC 🔒
MariaDB 📦 Relational database server PVE1 🔒
MongoDB 📦 Document database PVE1 🔒
n8n 📦 Workflow automation platform PVE2 🔒
NetBoot.xyz 📦 Network boot environment for PXE booting PVE2 🔒
NetBox 📦 Network documentation and IPAM PVE2 🔒
OpenObserve 📦 Observability and log aggregation platform PVE2 🔒
Open WebUI 📦 AI chat interface with local and remote LLMs. PVE2 🌐
Podman 📦 Podman container host for rootless containers PVE1 🔒
Portainer 🐳 Docker management UI.
I have a free business license with GitHub SSO support.
NAS 🌐
PostgreSQL 📦 Relational database server PVE1 🔒
PVE Scripts Local 📦 Community-scripts local development/testing environment PVE2 🔒
Reactive Resume 📦 Open-source resume builder PVE1 🔒
Redis 📦 In-memory data store and cache PVE1 🔒
RustDesk Server 📦 Self-hosted remote desktop relay server PVE2 🔒
SnowShare 📦 File sharing service PVE1 🔒
SparkyFitness 📦 Self-hosted fitness tracker PVE2 🔒
Speedtest Tracker 📦 Automated internet speed monitoring PVE1 🔒
Tor Snowflake 📦 Donates bandwidth to help Tor users bypass censorship.
Highly recommend to install the browser extension wherever possible.
PVE1 n.A.
UpSnap 📦 Wake-on-LAN dashboard (DEV) PVE2 🔒
Vaultwarden 📦 Bitwarden-compatible password manager PVE1 🌐
Web-Check 📦 Website security and analysis tool PVE2 🔒
Zoraxy 📦 Reverse proxy with automatic SSL PVE2 🌐
FreshRSS 📦 RSS feed reader/aggregator PVE1
KitchenOwl 📦 Grocery and recipe manager PVE1
Nametag 📦 PVE2
Protonmail Bridge 📦 Protonmail IMAP/SMTP bridge PVE1
Readeck 📦 Web content clipper and article saver PVE1
Stirling PDF 📦 PDF manipulation tools PVE1
Teleport 📦 Infrastructure access platform PVE2
TubeArchivist 📦 YouTube video archive and manager PVE2
Wazuh 📦 Security monitoring and SIEM PVE2

Legend

Symbol Meaning
Currently in use and running
Stopped / not in use
🐳 Docker container
📦 LXC container / system package
💻 Desktop application
NAS Ugreen DXP2800 NAS
PC Desktop/Gaming PC
PVE1 Proxmox Node 1 (ThinkCentre M630e)
PVE2 Proxmox Node 2 (ThinkCentre M715q)
Raspi Raspberry Pi 4
🌐 Publicly accessible
🔒 Private/locally accessible
n.A. Not applicable

AI Stack

The AI stack lives entirely on one LXC on PVE2 (hostname ai-hub — still shows up as openwebui in some of my older notes, need to fix that). Open WebUI is the front door; behind it sits Hermes, a small Python agent gateway I built to proxy chat requests to Grok and run scheduled jobs (it checks my job-application inbox every morning and updates a Notion tracker, for example). Anything the agent needs beyond raw chat — web search, code search, database access, container management, network discovery — comes through one of five separate MCP tool servers/gateways running alongside it. Long-term memory across sessions is handled by Honcho, which I originally set up self-hosted but have since moved to their managed cloud offering.

Diagram below is generated from the actual live service/port state on the box, not from what I remember configuring, so it should stay accurate as long as I keep re-deriving it instead of hand-editing.

flowchart TB
    User(["User / Browser"])

    subgraph FRONTEND["Frontend"]
        OWU["OpenWebUI :8080"]
    end

    subgraph AGENT["Agent layer"]
        HERMES["Hermes gateway/proxy<br/>:8643 :8644 :8645 proxy :9119 dashboard<br/>not systemd-managed"]
        CRON["Hermes cron plugin<br/>~/.hermes/cron/jobs.json"]
    end

    subgraph MCPTOOLS["MCP tool layer"]
        MCPO["ai-hub-mcpo :8000"]
        JUNGLE["mcpjungle :8081<br/>sqlite-backed"]
        DBHUB["dbhub :8083 podman"]
        HOMEBOX["homebox-mcp podman"]
        PROXMCP["proxmox-mcp podman<br/>127.0.0.1:8001 to 8000"]
    end

    subgraph MCPSTDIO["mcpo-proxied stdio servers"]
        SEQ["sequential-thinking"]
        FIRECRAWL["firecrawl"]
        NOTIONMCP["notion"]
        TAVILY["tavily"]
        PORTAINERMCP["portainer"]
        SCANOPYMCP["scanopy"]
    end

    subgraph DATA["Data and infra"]
        REDIS["redis :6379<br/>OWU cache/RAG"]
        TTS["piper-tts :5050"]
        CODESRV["code-server :8680"]
        PORTAGENT["portainer-agent :9001"]
    end

    subgraph EXTERNAL["External / cloud deps"]
        HONCHO["Honcho managed cloud<br/>api.honcho.dev"]
        XAI["xAI / Grok"]
        OLLAMAREMOTE["Ollama<br/>192.168.178.2:11434"]
        NOTIONAPI["Notion API"]
        TAVILYAPI["Tavily API"]
        FIRECRAWLAPI["Firecrawl API"]
        SIGNAL["Signal"]
        PROTONMAIL["ProtonMail via MCPJungle"]
        PROXMOXAPI["Proxmox API"]
    end

    User --> OWU
    OWU -- "LLM calls" --> HERMES
    OWU -- "memory filter" --> HONCHO
    OWU --> REDIS
    OWU --> OLLAMAREMOTE
    OWU --> TTS
    OWU -- "tool calls" --> MCPO

    HERMES --> XAI
    HERMES --> CRON
    HERMES -. "own stdio MCP clients" .-> TAVILYAPI
    HERMES -.-> NOTIONAPI
    CRON --> JUNGLE
    JUNGLE --> PROTONMAIL
    JUNGLE --> NOTIONAPI
    CRON -. "delivery" .-> SIGNAL

    MCPO --> SEQ
    MCPO --> FIRECRAWL
    MCPO --> NOTIONMCP
    MCPO --> TAVILY
    MCPO --> PORTAINERMCP
    MCPO --> SCANOPYMCP

    FIRECRAWL --> FIRECRAWLAPI
    TAVILY --> TAVILYAPI
    NOTIONMCP --> NOTIONAPI
    PORTAINERMCP --> PORTAGENT
    SCANOPYMCP -.-> DATA

    PROXMCP -. "Proxmox API" .-> PROXMOXAPI

    classDef frontend fill:#4C6EF5,color:#fff,stroke:#364FC7
    classDef agent fill:#F76707,color:#fff,stroke:#D9480F
    classDef mcp fill:#0CA678,color:#fff,stroke:#087F5B
    classDef data fill:#7048E8,color:#fff,stroke:#5F3DC4
    classDef ext fill:#868E96,color:#fff,stroke:#495057

    class OWU frontend
    class HERMES,CRON agent
    class MCPO,JUNGLE,DBHUB,HOMEBOX,PROXMCP,SEQ,FIRECRAWL,NOTIONMCP,TAVILY,PORTAINERMCP,SCANOPYMCP mcp
    class REDIS,TTS,CODESRV,PORTAGENT data
    class HONCHO,XAI,OLLAMAREMOTE,NOTIONAPI,TAVILYAPI,FIRECRAWLAPI,SIGNAL,PROTONMAIL,PROXMOXAPI ext
Loading

Clone this wiki locally