- Document OpenCode as tested alternative to Claude Code - Note: OpenCode is excellent but causes laptop overheating during intensive use
98 lines
5.2 KiB
Markdown
98 lines
5.2 KiB
Markdown
# Homelab Setup
|
|
|
|
## Overview
|
|
Setting up a personal homelab using a ThinkPad laptop running Arch Linux to move away from cloud providers like Google.
|
|
|
|
## Goals
|
|
- [x] Linux installation (Arch Linux on ThinkPad)
|
|
- [x] SSH remote access (hostname: homelab)
|
|
- [x] Dotfiles and development environment setup
|
|
- [x] Network domain setup with SSL certificates
|
|
- [x] Self-hosted file server with WebDAV (copyparty)
|
|
- [x] Self-hosted git repository (Gitea)
|
|
- [x] Self-hosted media server (Jellyfin)
|
|
- [x] AI voice assistant (local TTS with Piper)
|
|
- [x] Reverse proxy with nginx for multiple services
|
|
- [ ] 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
|
|
- PewDiePie homelab setup video: https://www.youtube.com/watch?v=u_Lxkt50xOg
|
|
- Need to collect tips and inspiration from this video
|
|
|
|
## 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)
|
|
- ✅ 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](docs/system-setup.md) for Arch installation and configuration
|
|
2. **Network Security**: Configure SSH, DNS, and VPN using [docs/network-security.md](docs/network-security.md)
|
|
3. **Services**: Plan and deploy applications from [docs/services.md](docs/services.md)
|
|
4. **Voice Assistant**: Set up AI voice capabilities with [docs/voice-assistant.md](docs/voice-assistant.md)
|
|
5. **Tasks**: Track progress in [TODO.md](TODO.md)
|
|
6. **Issues**: Find solutions in [docs/troubleshooting/](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
|
|
│ ├── 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
|
|
- **[docs/system-setup.md](docs/system-setup.md)** - Complete Arch Linux installation, TTY config, desktop setup
|
|
- **[docs/network-security.md](docs/network-security.md)** - SSH hardening, DuckDNS, WireGuard VPN, firewall setup
|
|
- **[docs/services.md](docs/services.md)** - Self-hosted services: Git hosting, cloud storage, media server
|
|
- **[docs/voice-assistant.md](docs/voice-assistant.md)** - AI voice assistant setup with Piper TTS and FastAPI
|
|
- **[TODO.md](TODO.md)** - Centralized task list with progress tracking by category
|
|
- **[docs/troubleshooting/](docs/troubleshooting/)** - Hardware issues, software problems, and solutions
|
|
- **[docs/troubleshooting/webdav-copyparty.md](docs/troubleshooting/webdav-copyparty.md)** - WebDAV troubleshooting guide
|
|
|
|
### 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
|
|
- **Development**: yadm dotfiles, tmux with temperature monitoring, zsh with proper history
|