Sanitized mirror from private repository - 2026-04-20 01:32:01 UTC
This commit is contained in:
329
archive/joplin/02-Quick-Start-Guide.md
Normal file
329
archive/joplin/02-Quick-Start-Guide.md
Normal file
@@ -0,0 +1,329 @@
|
||||
# 🚀 Quick Start Guide
|
||||
|
||||
**🟢 Beginner-Friendly**
|
||||
|
||||
Get up and running with your first homelab service in under 30 minutes! This guide will walk you through deploying a simple service using the established patterns from this homelab.
|
||||
|
||||
## 🎯 What We'll Build
|
||||
|
||||
We'll deploy **Uptime Kuma** - a simple, beginner-friendly monitoring tool that will:
|
||||
- Monitor your other services
|
||||
- Send you alerts when things go down
|
||||
- Provide a beautiful dashboard
|
||||
- Teach you the basic deployment patterns
|
||||
|
||||
## 📋 Prerequisites
|
||||
|
||||
### ✅ What You Need
|
||||
- A computer running Linux (Ubuntu, Debian, or similar)
|
||||
- Docker and Docker Compose installed
|
||||
- Basic command line knowledge
|
||||
- 30 minutes of time
|
||||
|
||||
### 🔧 Install Docker (if needed)
|
||||
```bash
|
||||
# Update system
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
|
||||
# Install Docker
|
||||
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||
sudo sh get-docker.sh
|
||||
|
||||
# Add your user to docker group
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Install Docker Compose
|
||||
sudo apt install docker-compose -y
|
||||
|
||||
# Verify installation
|
||||
docker --version
|
||||
docker-compose --version
|
||||
```
|
||||
|
||||
## 📁 Step 1: Create Project Structure
|
||||
|
||||
```bash
|
||||
# Create project directory
|
||||
mkdir -p ~/homelab/monitoring
|
||||
cd ~/homelab/monitoring
|
||||
|
||||
# Create the directory structure
|
||||
mkdir -p uptime-kuma/data
|
||||
```
|
||||
|
||||
## 📝 Step 2: Create Docker Compose File
|
||||
|
||||
Create the main configuration file:
|
||||
|
||||
```bash
|
||||
cat > uptime-kuma/docker-compose.yml << 'EOF'
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
uptime-kuma:
|
||||
image: louislam/uptime-kuma:latest
|
||||
container_name: Uptime-Kuma
|
||||
hostname: uptime-kuma
|
||||
|
||||
# Security settings
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
user: 1000:1000 # Adjust for your system
|
||||
|
||||
# Health check
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3001/api/status-page/heartbeat/default"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 60s
|
||||
|
||||
# Restart policy
|
||||
restart: on-failure:5
|
||||
|
||||
# Resource limits
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 512M
|
||||
cpus: '0.5'
|
||||
|
||||
# Port mapping
|
||||
ports:
|
||||
- "3001:3001"
|
||||
|
||||
# Data persistence
|
||||
volumes:
|
||||
- ./data:/app/data:rw
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
# Environment variables
|
||||
environment:
|
||||
- TZ=America/Los_Angeles # Change to your timezone
|
||||
|
||||
# Custom network
|
||||
networks:
|
||||
- monitoring-network
|
||||
|
||||
networks:
|
||||
monitoring-network:
|
||||
name: monitoring-network
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.100.0/24
|
||||
EOF
|
||||
```
|
||||
|
||||
## 🔧 Step 3: Configure Environment
|
||||
|
||||
Create an environment file for easy customization:
|
||||
|
||||
```bash
|
||||
cat > uptime-kuma/.env << 'EOF'
|
||||
# Timezone (change to your location)
|
||||
TZ=America/Los_Angeles
|
||||
|
||||
# User ID and Group ID (run 'id' command to find yours)
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
|
||||
# Port (change if 3001 is already in use)
|
||||
PORT=3001
|
||||
EOF
|
||||
```
|
||||
|
||||
## 🚀 Step 4: Deploy the Service
|
||||
|
||||
```bash
|
||||
# Navigate to the service directory
|
||||
cd uptime-kuma
|
||||
|
||||
# Start the service
|
||||
docker-compose up -d
|
||||
|
||||
# Check if it's running
|
||||
docker-compose ps
|
||||
|
||||
# View logs
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
You should see output like:
|
||||
```
|
||||
uptime-kuma_1 | Welcome to Uptime Kuma
|
||||
uptime-kuma_1 | Server is running on port 3001
|
||||
```
|
||||
|
||||
## 🌐 Step 5: Access Your Service
|
||||
|
||||
1. **Open your web browser**
|
||||
2. **Navigate to**: `http://your-server-ip:3001`
|
||||
3. **Create admin account** on first visit
|
||||
4. **Start monitoring services!**
|
||||
|
||||
## 🎯 Step 6: Add Your First Monitor
|
||||
|
||||
1. **Click "Add New Monitor"**
|
||||
2. **Configure a basic HTTP monitor**:
|
||||
- **Monitor Type**: HTTP(s)
|
||||
- **Friendly Name**: Google
|
||||
- **URL**: https://google.com
|
||||
- **Heartbeat Interval**: 60 seconds
|
||||
3. **Click "Save"**
|
||||
|
||||
Congratulations! You've deployed your first homelab service! 🎉
|
||||
|
||||
## 🔍 Understanding What We Built
|
||||
|
||||
### 📦 Docker Compose Structure
|
||||
```yaml
|
||||
# This tells Docker what version of compose syntax we're using
|
||||
version: '3.9'
|
||||
|
||||
# Services section defines our containers
|
||||
services:
|
||||
uptime-kuma: # Service name
|
||||
image: louislam/uptime-kuma # Docker image to use
|
||||
container_name: Uptime-Kuma # Custom container name
|
||||
ports: # Port mapping (host:container)
|
||||
- "3001:3001"
|
||||
volumes: # Data persistence
|
||||
- ./data:/app/data:rw # Maps local ./data to container /app/data
|
||||
environment: # Environment variables
|
||||
- TZ=America/Los_Angeles
|
||||
```
|
||||
|
||||
### 🔐 Security Features
|
||||
- **no-new-privileges**: Prevents privilege escalation
|
||||
- **User mapping**: Runs as non-root user
|
||||
- **Resource limits**: Prevents resource exhaustion
|
||||
- **Health checks**: Monitors service health
|
||||
|
||||
### 📊 Monitoring Features
|
||||
- **Health checks**: Docker monitors the container
|
||||
- **Restart policy**: Automatically restarts on failure
|
||||
- **Logging**: All output captured by Docker
|
||||
|
||||
## 🎓 Next Steps - Expand Your Homelab
|
||||
|
||||
### 🟢 Beginner Services (Try Next)
|
||||
1. **Pi-hole** - Block ads network-wide
|
||||
```bash
|
||||
# Copy the uptime-kuma pattern and adapt for Pi-hole
|
||||
mkdir ~/homelab/pihole
|
||||
# Use the Pi-hole configuration from Atlantis/pihole.yml
|
||||
```
|
||||
|
||||
2. **Portainer** - Manage Docker containers with a web UI
|
||||
```bash
|
||||
mkdir ~/homelab/portainer
|
||||
# Adapt the pattern for Portainer
|
||||
```
|
||||
|
||||
3. **Nginx Proxy Manager** - Manage reverse proxy with SSL
|
||||
```bash
|
||||
mkdir ~/homelab/proxy
|
||||
# Use the pattern from Atlantis/nginxproxymanager/
|
||||
```
|
||||
|
||||
### 🟡 Intermediate Services (When Ready)
|
||||
1. **Plex or Jellyfin** - Media streaming
|
||||
2. **Vaultwarden** - Password manager
|
||||
3. **Grafana + Prometheus** - Advanced monitoring
|
||||
|
||||
### 🔴 Advanced Services (For Later)
|
||||
1. **GitLab** - Complete DevOps platform
|
||||
2. **Home Assistant** - Smart home automation
|
||||
3. **Matrix Synapse** - Decentralized chat
|
||||
|
||||
## 🛠️ Common Customizations
|
||||
|
||||
### 🔧 Change the Port
|
||||
If port 3001 is already in use:
|
||||
```yaml
|
||||
ports:
|
||||
- "3002:3001" # Use port 3002 instead
|
||||
```
|
||||
|
||||
### 🔧 Different Data Location
|
||||
To store data elsewhere:
|
||||
```yaml
|
||||
volumes:
|
||||
- /home/user/uptime-data:/app/data:rw
|
||||
```
|
||||
|
||||
### 🔧 Add Resource Limits
|
||||
For a more powerful server:
|
||||
```yaml
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 1G
|
||||
cpus: '1.0'
|
||||
```
|
||||
|
||||
## 🚨 Troubleshooting
|
||||
|
||||
### ❌ Service Won't Start
|
||||
```bash
|
||||
# Check logs for errors
|
||||
docker-compose logs
|
||||
|
||||
# Check if port is already in use
|
||||
sudo netstat -tulpn | grep :3001
|
||||
|
||||
# Check file permissions
|
||||
ls -la data/
|
||||
```
|
||||
|
||||
### ❌ Can't Access Web Interface
|
||||
```bash
|
||||
# Check if container is running
|
||||
docker ps
|
||||
|
||||
# Test internal connectivity
|
||||
docker exec Uptime-Kuma curl http://localhost:3001
|
||||
|
||||
# Check firewall
|
||||
sudo ufw status
|
||||
sudo ufw allow 3001
|
||||
```
|
||||
|
||||
### ❌ Data Not Persisting
|
||||
```bash
|
||||
# Check volume mount
|
||||
docker inspect Uptime-Kuma | grep -A 10 Mounts
|
||||
|
||||
# Fix permissions
|
||||
sudo chown -R 1000:1000 ./data
|
||||
```
|
||||
|
||||
## 🎯 What You've Learned
|
||||
|
||||
✅ **Docker Compose basics**
|
||||
✅ **Service deployment patterns**
|
||||
✅ **Data persistence with volumes**
|
||||
✅ **Network configuration**
|
||||
✅ **Security best practices**
|
||||
✅ **Health monitoring**
|
||||
✅ **Troubleshooting basics**
|
||||
|
||||
## 📋 Next Reading
|
||||
|
||||
- **[03-Architecture-Overview](03-Architecture-Overview.md)**: Understand how everything fits together
|
||||
- **[20-Service-Categories](20-Service-Categories.md)**: Explore what services are available
|
||||
- **[30-Deployment-Guide](30-Deployment-Guide.md)**: Learn advanced deployment patterns
|
||||
- **[40-Common-Issues](40-Common-Issues.md)**: Troubleshoot problems
|
||||
|
||||
---
|
||||
|
||||
**🎉 Congratulations!** You've successfully deployed your first homelab service using the same patterns used across all 176 services in this infrastructure. You're now ready to explore more complex services and build your own homelab empire!
|
||||
|
||||
*Remember: Every expert was once a beginner. Start small, learn continuously, and don't be afraid to break things - that's how you learn!*
|
||||
|
||||
## 🔗 Related Documents
|
||||
|
||||
- **[00-Homelab-Documentation-Index](00-Homelab-Documentation-Index.md)**: Main documentation index
|
||||
- **[01-What-is-a-Homelab](01-What-is-a-Homelab.md)**: Understanding homelabs
|
||||
- **[04-Prerequisites](04-Prerequisites.md)**: What you need before starting
|
||||
- **[22-Popular-Services](22-Popular-Services.md)**: Essential services to deploy next
|
||||
Reference in New Issue
Block a user