From 91103ee7d4bc1b82336ef50da326e22b73716171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krejczinger=20=C3=81rp=C3=A1d?= Date: Tue, 29 Jul 2025 17:14:55 +0200 Subject: [PATCH] Initial commit --- README.md | 24 +++++++++++++++++++++ arch-install-notes.md | 43 ++++++++++++++++++++++++++++++++++++++ network-planning.md | 33 +++++++++++++++++++++++++++++ self-hosted-services.md | 46 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 146 insertions(+) create mode 100644 README.md create mode 100644 arch-install-notes.md create mode 100644 network-planning.md create mode 100644 self-hosted-services.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..4f5988a --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# 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 +- [ ] Network domain setup +- [ ] Self-hosted cloud storage (ownCloud/Nextcloud) +- [ ] Self-hosted git repository (Gitea/Forgejo/GitLab) +- [ ] Gradual migration from commercial cloud services + +## Hardware +- **Main Server**: ThinkPad laptop +- **Development**: Windows PC with WSL (for AI experimentation) + +## 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 +- Downloading Arch Linux ISO +- Planning initial setup phase \ No newline at end of file diff --git a/arch-install-notes.md b/arch-install-notes.md new file mode 100644 index 0000000..18e52c5 --- /dev/null +++ b/arch-install-notes.md @@ -0,0 +1,43 @@ +# Arch Linux Installation Notes + +## Pre-Installation Checklist +- [ ] Download Arch Linux ISO +- [ ] Create bootable USB drive +- [ ] Backup any important data on ThinkPad +- [ ] Note ThinkPad hardware specs for driver compatibility + +## Installation Steps +### Boot and Initial Setup +- [ ] Boot from USB +- [ ] Set keyboard layout if needed: `loadkeys us` +- [ ] Verify UEFI boot: `ls /sys/firmware/efi/efivars` +- [ ] Connect to internet (wifi-menu or ethernet) + +### Partitioning +- [ ] List disks: `fdisk -l` +- [ ] Create partitions (EFI, swap, root) +- [ ] Format partitions +- [ ] Mount filesystems + +### Base System Installation +- [ ] Update package database: `pacman -Sy` +- [ ] Install base system: `pacstrap /mnt base linux linux-firmware` +- [ ] Generate fstab: `genfstab -U /mnt >> /mnt/etc/fstab` +- [ ] Chroot: `arch-chroot /mnt` + +### System Configuration +- [ ] Set timezone +- [ ] Configure locale +- [ ] Set hostname +- [ ] Configure network +- [ ] Set root password +- [ ] Install bootloader (GRUB) +- [ ] Create user account with sudo privileges + +## Post-Installation Priorities +- [ ] Install essential packages (git, base-devel) +- [ ] Install and configure yadm: `pacman -S yadm` +- [ ] Clone dotfiles: `yadm clone ` +- [ ] Install SSH server: `pacman -S openssh` +- [ ] Enable SSH service: `systemctl enable sshd` +- [ ] Configure firewall \ No newline at end of file diff --git a/network-planning.md b/network-planning.md new file mode 100644 index 0000000..7cbb839 --- /dev/null +++ b/network-planning.md @@ -0,0 +1,33 @@ +# Network Planning + +## Current Network Setup +- Document your current router/modem setup +- Note internal IP range (usually 192.168.1.x or 10.0.0.x) + +## SSH Access Planning +### Local Network Access +- [ ] Assign static IP to ThinkPad +- [ ] Configure SSH key authentication +- [ ] Test SSH from WSL machine + +### External Access (Optional) +- [ ] Research dynamic DNS services (DuckDNS, No-IP) +- [ ] Configure router port forwarding (if needed) +- [ ] Set up VPN for secure remote access + +## Domain Setup Options +### Local Domain +- [ ] Configure local DNS (Pi-hole, router settings) +- [ ] Use .local domain for internal services + +### Public Domain +- [ ] Register domain name +- [ ] Configure DNS records +- [ ] Set up reverse proxy (nginx, Caddy) + +## Security Considerations +- [ ] Change default SSH port +- [ ] Disable root SSH login +- [ ] Configure fail2ban +- [ ] Set up firewall rules (iptables/ufw) +- [ ] Regular security updates \ No newline at end of file diff --git a/self-hosted-services.md b/self-hosted-services.md new file mode 100644 index 0000000..4351389 --- /dev/null +++ b/self-hosted-services.md @@ -0,0 +1,46 @@ +# Self-Hosted Services Planning + +## Git Repository Hosting +### Options to Research +- **Gitea**: Lightweight, Go-based, minimal resource usage +- **Forgejo**: Gitea fork, community-driven development +- **GitLab CE**: Feature-rich but more resource intensive +- **Gogs**: Simple, lightweight alternative + +### Requirements +- [ ] Web interface for repository management +- [ ] Git over SSH and HTTPS +- [ ] User management and permissions +- [ ] Issue tracking (optional) +- [ ] CI/CD integration (future consideration) + +### Installation Considerations +- Docker deployment vs native installation +- Database requirements (SQLite vs PostgreSQL) +- Reverse proxy setup for HTTPS +- Backup strategy for repositories + +## Cloud Storage Solutions +### Options to Research +- **Nextcloud**: Full-featured, extensive app ecosystem +- **ownCloud**: Original project, stable and mature +- **Seafile**: Performance-focused file sync +- **Syncthing**: Decentralized sync (no server needed) + +### Requirements +- [ ] File synchronization across devices +- [ ] Web interface for file management +- [ ] Mobile app support +- [ ] Calendar and contacts sync +- [ ] Document editing (optional) + +## Service Integration +- Single sign-on between services +- Shared storage for configuration backups +- Monitoring and logging setup +- Automated backups and disaster recovery + +## Resource Planning +- Estimate RAM and storage requirements +- Consider containerization with Docker/Podman +- Plan for service discovery and networking \ No newline at end of file