Getting Started¶
This guide will help you get familiar with the brennan.page homelab infrastructure and development workflow.
Prerequisites¶
Local Development Environment¶
- Git: For version control
- Docker: For local testing (optional but recommended)
- SSH Client: For server access
- Text Editor: VS Code, micro, or your preferred editor
- MkDocs: For documentation (pip install mkdocs mkdocs-material)
Server Access¶
- SSH key configured for
root@159.203.44.169 - Domain
brennan.pagepointing to the server IP (159.203.44.169) - Basic understanding of Linux command line
Development Workflow¶
1. Repository Structure¶
The homelab follows this directory structure according to the spec sheet:
brennan.page/
├── caddy/ # Reverse proxy configuration
├── services/ # Service configurations
├── scripts/ # Management scripts
├── wiki/ # Documentation source
├── docs/ # Project documentation
└── README.md # Project overview
2. Local Development¶
All configuration changes are made locally first:
# Clone the repository
git clone https://github.com/brennanbrown/brennan.page.git
cd brennan.page
# Make your changes
# Edit docker-compose files, documentation, etc.
# Test configurations locally (when possible)
docker compose config
# Test wiki locally
cd wiki
mkdocs serve
# Access at http://localhost:8000
3. Version Control¶
Commit your changes with descriptive messages:
4. Deployment¶
Use the deployment scripts to sync to the server:
# Deploy specific service
./scripts/deploy-service.sh service_name
# Deploy all services
./scripts/deploy-all.sh
# Deploy wiki
cd wiki
./deploy-wiki.sh
Quick Start¶
Accessing Services¶
All services are accessible through HTTPS:
| Service | URL | Description |
|---|---|---|
| Main Site | https://brennan.page | Landing page |
| Wiki | https://wiki.brennan.page | Documentation |
| Docker Management | https://docker.brennan.page | Portainer |
| File Management | https://files.brennan.page | FileBrowser |
| System Monitoring | https://monitor.brennan.page | Custom monitor |
| Task Management | https://tasks.brennan.page | Vikunja |
| Notes | https://notes.brennan.page | HedgeDoc |
| Bookmarks | https://bookmarks.brennan.page | Linkding |
| Music | https://music.brennan.page | Navidrome |
| Blog | https://blog.brennan.page | WriteFreely |
| Forum | https://forum.brennan.page | Flarum |
| RSS Reader | https://rss.brennan.page | FreshRSS |
SSH Access¶
# Connect to server
ssh -i ~/.omg-lol-keys/id_ed25519 root@159.203.44.169
# Quick status check
docker ps
free -h
df -h
Common Tasks¶
Adding a New Service¶
-
Create Service Directory:
-
Create Docker Compose:
-
Create Documentation:
-
Update Navigation:
-
Deploy:
Updating Documentation¶
-
Local Development:
-
Edit Files:
- Update markdown files in
docs/ -
Test changes locally
-
Deploy:
Monitoring Services¶
# Check all services
docker ps
# Check resource usage
docker stats
# Check service logs
docker logs service_name
# Health check script
./scripts/health-check.sh
Service Categories¶
Infrastructure Services¶
- Caddy: Reverse proxy with automatic HTTPS
- PostgreSQL: Primary database server
- MariaDB: Database for Flarum forum
Management Services¶
- Portainer: Docker management interface
- FileBrowser: File management interface
- Monitor: System monitoring dashboard
Productivity Services¶
- Vikunja: Task management system
- HedgeDoc: Collaborative markdown notes
- Linkding: Bookmark manager
- Navidrome: Music streaming server
Content & Community Services¶
- WriteFreely: Blog platform
- Flarum: Community forum
- FreshRSS: RSS feed aggregator
Security¶
SSH Access¶
- Key-based authentication only
- No password authentication
- Regular key rotation recommended
Web Services¶
- All services use HTTPS
- Automatic SSL certificate management
- Security headers configured
Database Security¶
- Isolated database users
- Encrypted connections
- Regular backups
Troubleshooting¶
Common Issues¶
Service Not Accessible:
# Check Caddy configuration
docker exec caddy caddy reload
# Check service status
docker ps | grep service_name
# Check service logs
docker logs service_name --tail 50
Wiki Not Updating:
# Check wiki build
cd /opt/homelab/wiki
mkdocs build --clean
# Check Caddy wiki configuration
grep -A 5 'wiki.brennan.page' /opt/homelab/caddy/Caddyfile
Database Connection Issues:
# Check database status
docker exec postgresql pg_isready
docker exec flarum_mariadb mysqladmin ping
# Test connection
docker exec postgresql psql -U user -d database -c "SELECT 1;"
Getting Help¶
- Check Documentation: Start with the wiki
- Review Logs: Use
docker logsfor service-specific issues - Check Status: Visit monitoring dashboard
- SSH Reference: See SSH Commands
Resources¶
Documentation¶
- Services: Detailed service documentation
- Operations: Operational procedures
- Troubleshooting: Common issues and solutions
- Reference: Command references
Scripts¶
- deploy-service.sh: Deploy individual services
- deploy-all.sh: Deploy all services
- health-check.sh: System health monitoring
- backup.sh: Backup procedures
Configuration Files¶
- caddy/Caddyfile: Reverse proxy configuration
- services/: Service-specific configurations
- wiki/mkdocs.yml: Documentation configuration
Next Steps¶
- Explore Services: Visit the various services to understand functionality
- Review Documentation: Read service-specific documentation
- Test Deployments: Try deploying a simple change
- Monitor System: Check the monitoring dashboard regularly
- Contribute: Add improvements or report issues
Support¶
For questions or issues: 1. Check the wiki documentation first 2. Review service logs for errors 3. Use the troubleshooting guides 4. Check the SSH Commands reference
Last updated: January 17, 2026 13:48:18