Arpad Krejczinger ad7270aa74 Add Restic backup repository initialization script
Initialize encrypted backup repository on NAS with:
- Auto-install of Restic if needed
- Secure password generation and storage
- Repository initialization with AES-256 encryption
2025-10-11 18:24:41 +02:00
2025-09-12 20:40:21 +02:00

Homelab Setup

Overview

Setting up a personal homelab using a ThinkPad laptop running Arch Linux to move away from cloud providers like Google.

Goals

  • Linux installation (Arch Linux on ThinkPad)
  • SSH remote access (hostname: homelab)
  • Dotfiles and development environment setup
  • Network domain setup with SSL certificates
  • Self-hosted file server with WebDAV (copyparty)
  • Self-hosted git repository (Gitea)
  • Self-hosted media server (Jellyfin)
  • AI voice assistant (local TTS with Piper)
  • Reverse proxy with nginx for multiple services
  • Geographic IP blocking (geoip-shell whitelist)
  • Gradual migration from commercial cloud services

Hardware

  • Main Server: ThinkPad laptop
  • Development: Windows PC with WSL (for AI experimentation)
  • Android tablet: Not good for long-term work but can be useful for short SSH sessions
    • Runs Manjaro in a VM, same OS like the laptop

Development Tools

  • Claude Code: Primary AI coding assistant (via CLI)
  • OpenCode: Tested alternative - excellent tool, better than Claude Code in some ways, but causes laptop overheating issues during intensive use

Inspiration & Resources

Current Status

  • Arch Linux installed on ThinkPad
  • SSH access configured (accessible as homelab)
  • Dotfiles management with yadm configured and merged
  • Development environment setup completed
  • Network domain setup (DuckDNS + Nginx reverse proxy + SSL)
  • Geographic IP blocking (geoip-shell whitelist for European countries)
  • Gitea Git server running (Docker container)
  • Copyparty file server with working WebDAV support
  • Jellyfin media server (Docker container)
  • AI voice assistant with local TTS (Piper + FastAPI)
  • All services accessible via HTTPS with proper SSL certificates
  • Next: Additional self-hosted services, backup solutions

Documentation Structure

Quick Start Guide

  1. System Setup: Follow docs/system-setup.md for Arch installation and configuration
  2. Network Security: Configure SSH, DNS, and VPN using docs/network-security.md
  3. Services: Plan and deploy applications from docs/services.md
  4. Voice Assistant: Set up AI voice capabilities with docs/voice-assistant.md
  5. Tasks: Track progress in TODO.md
  6. Issues: Find solutions in docs/troubleshooting/

Repository Structure

homelab/
├── README.md                    # This overview
├── TODO.md                     # Task tracking
├── docs/                       # Detailed documentation
│   ├── system-setup.md         # Arch Linux installation & config
│   ├── network-security.md     # SSH, DNS, VPN, firewall
│   ├── geoip-blocking.md       # Geographic IP blocking setup
│   ├── services.md             # Self-hosted services
│   ├── voice-assistant.md      # AI voice setup with Piper TTS
│   └── troubleshooting/         # Solutions & troubleshooting guides
├── config/                     # Configurations & scripts
│   ├── docker/gitea/           # Gitea container setup
│   ├── docker/jellyfin/        # Jellyfin media server setup
│   ├── docker/nextcloud/       # Nextcloud config (tested but disabled)
│   ├── copyparty/              # Copyparty file server configuration
│   ├── nginx/                  # Reverse proxy configs
│   ├── www/                    # Landing page HTML
│   └── scripts/                # Utility scripts
├── voice-server/               # AI voice assistant server
│   ├── src/voice_server/       # FastAPI application
│   ├── pyproject.toml          # Poetry dependencies
│   └── README.md               # Voice server documentation
└── scripts/                    # Convenience scripts
    ├── enable-voice.sh         # Start voice assistant
    └── disable-voice.sh        # Stop voice assistant

Documentation Files

Current Configuration

  • System: Arch Linux with XFCE desktop, ter-124b TTY font, Colemak layout
  • Network: Static IP (192.168.0.100), SSH port 2222, DuckDNS (ak-homelab.duckdns.org)
  • Services: Nginx reverse proxy, Gitea Git server, Copyparty file server with WebDAV, Jellyfin media server, AI voice assistant
  • Security: SSH hardened, SSL certificates active, WebDAV authentication enabled, geographic IP blocking (geoip-shell whitelist)
  • Development: yadm dotfiles, tmux with temperature monitoring, zsh with proper history
Description
Home web server setup with various services, media server etc
Readme 3.9 MiB
Languages
Shell 56.4%
Python 29.6%
HTML 14%