7.4 KiB
7.4 KiB
Beginner's Quick Start Guide
New to homelabs? This guide walks you through deploying your first service step-by-step.
🎯 What You'll Learn
By the end of this guide, you'll know how to:
- Access your homelab tools (Gitea, Portainer)
- Deploy a simple service
- Understand the basic workflow
- Troubleshoot common issues
📋 Before You Start
What You Need
- Computer with internet access
- Web browser (Chrome, Firefox, Safari, etc.)
- Text editor (Notepad++, VS Code, or even basic Notepad)
- Basic understanding of copy/paste and file editing
What You DON'T Need
- Advanced programming knowledge
- Command line experience (we'll show you the easy way)
- Docker expertise
🚀 Step-by-Step: Deploy Your First Service
Step 1: Access Your Tools
Gitea (Your Code Repository)
- Open your web browser
- Go to
https://git.vish.gg(or your Gitea URL) - Log in with your credentials
- Navigate to the
homelabrepository
Portainer (Your Container Manager)
- Open a new browser tab
- Go to your Portainer URL (usually
https://portainer.yourdomain.com) - Log in with your credentials
- You should see the Portainer dashboard
Step 2: Choose What to Deploy
For your first deployment, let's use a simple service like:
- Uptime Kuma - Website monitoring
- IT Tools - Handy web utilities
- Stirling PDF - PDF manipulation tools
We'll use IT Tools as our example.
Step 3: Create Your Service File
Option A: Using Gitea Web Interface (Easiest)
- In Gitea, navigate to your homelab repository
- Choose your server location:
- Click on
hosts/folder - Click on your server type (e.g.,
synology/) - Click on your server name (e.g.,
atlantis/)
- Click on
- Create new file:
- Click the "+" button or "New File"
- Name it:
it-tools.yml
- Copy this configuration:
version: '3.8'
services:
it-tools:
image: corentinth/it-tools:latest
container_name: it-tools
restart: unless-stopped
ports:
- "8080:80" # Change 8080 if this port is already used
networks:
- homelab
networks:
homelab:
external: true
- Save the file:
- Add a commit message: "Add IT Tools service"
- Click "Commit Changes"
Option B: Using Git (If You're Comfortable)
# Clone the repository
git clone https://git.vish.gg/Vish/homelab.git
cd homelab
# Create the file
nano hosts/synology/atlantis/it-tools.yml
# (Copy the YAML content above)
# Save and commit
git add hosts/synology/atlantis/it-tools.yml
git commit -m "Add IT Tools service"
git push
Step 4: Deploy via Portainer
- In Portainer, go to "Stacks" (left sidebar)
- Click "Add stack"
- Fill in the details:
- Name:
it-tools - Build method: Select "Repository"
- Repository URL:
https://git.vish.gg/Vish/homelab - Repository reference:
refs/heads/main - Compose path:
hosts/synology/atlantis/it-tools.yml - Automatic updates: Check this box (optional)
- Name:
- Click "Deploy the stack"
- Wait for deployment - You'll see logs showing the progress
Step 5: Access Your Service
- Find your server's IP address (e.g., 192.168.1.100)
- Open your browser and go to:
http://192.168.1.100:8080 - You should see IT Tools running!
🎉 Congratulations!
You just deployed your first homelab service! Here's what happened:
- You created a Docker Compose file describing your service
- Gitea stored your configuration safely
- Portainer read the configuration from Gitea
- Docker deployed your service automatically
🔧 Understanding Your Setup
The Files You Work With
homelab/
├── hosts/ # Server configurations
│ ├── synology/atlantis/ # Your main NAS
│ ├── synology/calypso/ # Your backup NAS
│ ├── vms/homelab-vm/ # Your virtual machines
│ └── physical/concord-nuc/ # Your physical servers
├── docs/ # Documentation (like this guide)
└── scripts/ # Helpful automation scripts
The Tools Working Together
- Gitea = Your filing cabinet (stores all configurations)
- Portainer = Your deployment assistant (reads from Gitea and deploys)
- Docker = Your service runner (actually runs the applications)
The Workflow
You edit file → Gitea stores it → Portainer deploys it → Service runs
🛠️ Common Tasks
Deploy Another Service
- Find an example in the existing files
- Copy and modify it for your needs
- Change the ports to avoid conflicts
- Deploy via Portainer using the same steps
Update a Service
- Edit the YAML file in Gitea
- Commit your changes
- In Portainer, go to your stack and click "Update"
- Portainer will redeploy with your changes
Remove a Service
- In Portainer, go to "Stacks"
- Find your service and click the trash icon
- Confirm deletion
- Optionally delete the YAML file from Gitea
🚨 Troubleshooting
"Port already in use" Error
Problem: Another service is using the same port.
Solution: Change the port in your YAML file:
ports:
- "8081:80" # Changed from 8080 to 8081
"Cannot access service" Error
Checklist:
- Is the service running? (Check Portainer → Stacks)
- Are you using the right IP address?
- Are you using the right port number?
- Is your firewall blocking the port?
"Deployment failed" Error
Common causes:
- YAML syntax error - Check indentation (use spaces, not tabs)
- Invalid image name - Verify the Docker image exists
- Volume path doesn't exist - Create the directory first
Getting Help
- Check the logs in Portainer (Stacks → Your Stack → Logs)
- Look at similar services in the repository for examples
- Check the service documentation on Docker Hub
📚 Next Steps
Learn More About Docker Compose
Key concepts to understand:
- Services - The applications you run
- Ports - How to access services from outside
- Volumes - Where data is stored
- Networks - How services talk to each other
Explore Advanced Features
- Environment variables for configuration
- Multiple services in one file
- Service dependencies and startup order
- Resource limits and health checks
Popular Services to Try
Media Management:
- Plex/Jellyfin (media server)
- Sonarr/Radarr (media automation)
- Overseerr (media requests)
Productivity:
- Nextcloud (file sync)
- Bitwarden (password manager)
- Paperless-ngx (document management)
Monitoring:
- Uptime Kuma (uptime monitoring)
- Grafana (dashboards)
- Portainer Agent (container monitoring)
🔗 Useful Resources
Documentation
Finding Services
- Docker Hub - Official Docker images
- LinuxServer.io - Well-maintained homelab images
- Awesome-Selfhosted - Huge list of self-hosted services
Remember: Start simple, learn as you go, and don't be afraid to experiment! Your homelab is a safe place to try new things.
Happy homelabbing! 🏠🔬