Skip to content

Latest commit

 

History

History
99 lines (77 loc) · 4.08 KB

File metadata and controls

99 lines (77 loc) · 4.08 KB

GitLab Infrastructure Deployment Summary

🎯 Primary Goal

Deploy GitLab CE with reverse proxy and Tailscale integration in homelab infrastructure

✅ Successfully Completed

Infrastructure Documentation

  • Updated CLAUDE.md with comprehensive deployment guides
  • Added Terraform deployment options and service access patterns
  • Documented security requirements and authentication flows

Security Implementation

  • Created encrypted Ansible vault (ansible-infrastructure/inventory/group_vars/all/vault.yml)
  • Implemented secure password generation patterns
  • Fixed hardcoded password security vulnerability
  • Configured 1Password SSH agent integration

GitLab Deployment

  • VM Created: 10.203.3.60 (manual deployment)
  • Services Running: GitLab CE + Caddy reverse proxy via Docker Compose
  • Status: HTTP → HTTPS redirect working (Caddy responding)
  • Root Password: Stored in encrypted Ansible vault
  • SSH Access: Port 2222 for Git operations

Automation Tools Built

  • DNS Manager (scripts/dns-manager.py): Complete Technitium DNS automation
  • UniFi Manager (scripts/unifi-manager.py): Network device management with CSV support
  • Deployment Scripts: Automated GitLab stack deployment

Infrastructure Foundation

  • Terraform configuration for reproducible deployments
  • Ansible playbooks for service configuration
  • Proper directory structure and collection organization

🔧 Issues Resolved

Major SSH Authentication Problem

  • Root Cause: Dotfiles XDG compliance changes added IdentitiesOnly yes
  • Impact: Blocked all Terraform and Ansible operations
  • Solution: Used -o IdentitiesOnly=no to allow 1Password SSH agent keys
  • User Insight: "You know what - i got help with my dotfiles earlier today"

Terraform Proxmox Permissions

  • Error: "VM.Monitor permission missing"
  • Solution: Created terraform@pve service user with proper API token
  • Result: Switched to manual VM deployment approach instead

Security Near-Miss

  • Issue: Almost pushed hardcoded passwords to public GitHub
  • Fix: Implemented comprehensive Ansible Vault encryption
  • Pattern: {{ vault_variable | default(lookup('password', '/dev/null length=20 chars=ascii_letters,digits')) }}

🚧 Pending Tasks

  1. DNS Configuration: Set up gitlab.doofus.co DNS records
  2. Tailscale Integration: Configure Tailscale on GitLab VM for gitlab.rawls.ts.net access
  3. Service Testing: Verify GitLab web interface and Git operations
  4. SSL Certificates: Confirm Caddy automatic HTTPS is working
  5. Initial Configuration: Complete GitLab admin setup

📊 Current Status

Services Running

CONTAINER   STATUS                    PORTS
caddy       Up (1 minute)            80:80, 443:443
gitlab      Up (health: starting)    2222:22

Access Points (Planned)

Network Test Results

  • HTTP (80): ✅ Redirects to HTTPS
  • HTTPS (443): ⏳ Needs further testing
  • Tailscale: ❌ VM not yet joined to network

🔄 Key Files Modified

  • CLAUDE.md: Enhanced documentation
  • ansible-infrastructure/inventory/group_vars/all/vault.yml: Secure credentials
  • terraform/gitlab/: Complete infrastructure as code
  • scripts/: DNS and UniFi management tools
  • DEPLOYMENT-STATUS.md: Real-time deployment tracking

💡 Lessons Learned

  1. SSH Agent Integration: 1Password SSH agent requires careful configuration
  2. Dotfiles Impact: System configuration changes can break automation workflows
  3. Security First: Vault encryption must be implemented before any deployment
  4. Proxmox Permissions: Service users need specific API token scopes
  5. Manual Fallback: Always have manual deployment option when automation fails

🎉 Achievement

Successfully deployed GitLab infrastructure stack with proper security practices, comprehensive documentation, and automation tooling. Ready for final configuration and testing phase.