- Reverted ROOT_URL to HTTP on internal IP (100.120.125.113:3000) - Clone commands use internal IP (works on local network and with Pangolin) - Added note: Access UI at https://git.pdmarf.co.uk via Pangolin Tunnel - Pangolin Tunnel handles HTTPS → HTTP conversion Users on local network: Clone using http://100.120.125.113:3000/pdm/[repo] Users via Pangolin: Access UI at https://git.pdmarf.co.uk Both methods work with same repositories
543 lines
12 KiB
Markdown
543 lines
12 KiB
Markdown
# Gitea How-To Guide
|
|
|
|
Quick reference guide for using Gitea at http://100.120.125.113:3000 to manage your homelab projects.
|
|
|
|
## Table of Contents
|
|
- [Getting Started](#getting-started)
|
|
- [Terminology](#terminology)
|
|
- [Cloning Repositories](#cloning-repositories)
|
|
- [Making Changes](#making-changes)
|
|
- [Pushing Changes](#pushing-changes)
|
|
- [Common Workflows](#common-workflows)
|
|
- [Troubleshooting](#troubleshooting)
|
|
|
|
---
|
|
|
|
## Getting Started
|
|
|
|
### About Your Gitea Server
|
|
|
|
**Note:** Access via Pangolin Tunnel at https://git.pdmarf.co.uk if outside the local network.
|
|
|
|
- **Server URL: http://100.120.125.113:3000 (or https://git.pdmarf.co.uk via Pangolin)
|
|
- **User**: pdm
|
|
- **Available Repositories**:
|
|
- `homelab-agents` - Shared AI agent prompts (pull-only on VPS)
|
|
- `vps-system-apps` - VPS system configuration (push for backup)
|
|
- Additional project repositories as needed
|
|
|
|
---
|
|
|
|
## Terminology
|
|
|
|
### Workstation
|
|
Your **main development machine** where you do most of your work. This could be:
|
|
- Your laptop (MacBook, Windows laptop, Linux laptop)
|
|
- Your desktop computer
|
|
- Any machine you consider your primary development environment
|
|
|
|
**Not** a VPS - it's a machine you have physical access to or directly control.
|
|
|
|
### VPS
|
|
A **Virtual Private Server** - a remote machine hosted in the cloud or on another system. Examples:
|
|
- Your system-apps VPS at your hosting provider
|
|
- Remote servers you manage
|
|
- Machines you SSH into rather than use directly
|
|
|
|
### Repository
|
|
A project folder tracked by git with version history. Each repository can be:
|
|
- `homelab-agents` - The shared agents repository
|
|
- `vps-system-apps` - Your VPS configuration repository
|
|
- Any other project you create
|
|
|
|
---
|
|
|
|
## Cloning Repositories
|
|
|
|
Cloning creates a local copy of a repository on your workstation or VPS.
|
|
|
|
### Clone homelab-agents (Shared Prompts)
|
|
|
|
Use this to get the latest AI agent prompts on your VPS:
|
|
|
|
```bash
|
|
git clone http://100.120.125.113:3000/pdm/homelab-agents.git ~/.homelab-agents
|
|
```
|
|
|
|
This creates a `~/.homelab-agents` directory with all shared agent definitions and templates.
|
|
|
|
**Use Cases:**
|
|
- Getting agent prompts on a new VPS
|
|
- Keeping agents synchronized across systems
|
|
- Read-only reference for development
|
|
|
|
### Clone vps-system-apps (Project Configuration)
|
|
|
|
Use this to get your VPS configuration repository:
|
|
|
|
```bash
|
|
git clone http://100.120.125.113:3000/pdm/vps-system-apps.git ~/projects/system-apps
|
|
```
|
|
|
|
This creates a `~/projects/system-apps` directory with Docker, scripts, and documentation.
|
|
|
|
**Use Cases:**
|
|
- Setting up a new VPS with existing configuration
|
|
- Cloning on your workstation for editing
|
|
- Working on system configuration with version history
|
|
|
|
### Clone Any Other Project Repository
|
|
|
|
For future projects, use the same pattern:
|
|
|
|
```bash
|
|
git clone http://100.120.125.113:3000/pdm/[project-name].git ~/projects/[project-name]
|
|
```
|
|
|
|
---
|
|
|
|
## Making Changes
|
|
|
|
### Checking Repository Status
|
|
|
|
See what files have changed:
|
|
|
|
```bash
|
|
cd ~/projects/system-apps
|
|
git status
|
|
```
|
|
|
|
Output shows:
|
|
- Modified files (red) - existing files you changed
|
|
- Untracked files (red) - new files not yet in git
|
|
- Staged files (green) - files ready to commit
|
|
|
|
### Viewing Specific Changes
|
|
|
|
See exactly what changed in a file:
|
|
|
|
```bash
|
|
git diff docker-compose/docker-compose.yml
|
|
```
|
|
|
|
Or see all changes:
|
|
|
|
```bash
|
|
git diff
|
|
```
|
|
|
|
### Creating a Local Branch (Optional)
|
|
|
|
For experimental work, create a separate branch:
|
|
|
|
```bash
|
|
git checkout -b feature/new-monitoring-stack
|
|
# ... make your changes ...
|
|
git add .
|
|
git commit -m "Add Prometheus monitoring stack"
|
|
```
|
|
|
|
To switch back to main branch:
|
|
|
|
```bash
|
|
git checkout main
|
|
```
|
|
|
|
---
|
|
|
|
## Pushing Changes
|
|
|
|
### Basic Push Workflow
|
|
|
|
After making changes, follow these three steps:
|
|
|
|
#### Step 1: Stage Your Changes
|
|
|
|
Add all modified files to staging:
|
|
|
|
```bash
|
|
cd ~/projects/system-apps
|
|
git add -A
|
|
```
|
|
|
|
Or add specific files:
|
|
|
|
```bash
|
|
git add docker-compose/docker-compose.yml
|
|
git add scripts/deploy.sh
|
|
```
|
|
|
|
#### Step 2: Commit Your Changes
|
|
|
|
Create a commit with a descriptive message:
|
|
|
|
```bash
|
|
git commit -m "Add health checks to Docker services"
|
|
```
|
|
|
|
**Good commit message practices:**
|
|
- Start with action verb: "Add", "Fix", "Update", "Refactor"
|
|
- Be specific: what changed and why
|
|
- Keep it concise (under 72 characters for first line)
|
|
|
|
**Examples:**
|
|
```bash
|
|
git commit -m "Add Prometheus scrape config for Docker metrics"
|
|
git commit -m "Fix disk space alert threshold in monitoring"
|
|
git commit -m "Update deployment documentation with new workflow"
|
|
git commit -m "Refactor docker-compose.yml for better organization"
|
|
```
|
|
|
|
#### Step 3: Push to Gitea
|
|
|
|
Send your commits to the Gitea server:
|
|
|
|
```bash
|
|
git push origin main
|
|
```
|
|
|
|
**Success looks like:**
|
|
```
|
|
Enumerating objects: 5, done.
|
|
Counting objects: 100% (5/5), done.
|
|
Delta compression using up to 4 threads
|
|
Compressing objects: 100% (3/3), done.
|
|
Writing objects: 100% (3/3), 456 bytes, done.
|
|
Total 3 (delta 1), reused 0 (delta 0)
|
|
To http://100.120.125.113:3000/pdm/vps-system-apps.git
|
|
abc1234..def5678 main -> main
|
|
```
|
|
|
|
---
|
|
|
|
## Common Workflows
|
|
|
|
### Workflow 1: Edit on Your Workstation, Push to Gitea
|
|
|
|
**Workstation** = Your main development machine (laptop, desktop, etc.)
|
|
|
|
```bash
|
|
# Step 1: On your workstation, clone the repository
|
|
# (e.g., your laptop or desktop computer)
|
|
git clone http://100.120.125.113:3000/pdm/vps-system-apps.git ~/projects/system-apps
|
|
|
|
# Step 2: Edit files on your workstation using vim, VS Code, or any editor
|
|
cd ~/projects/system-apps
|
|
vim docker-compose/docker-compose.yml
|
|
vim scripts/deploy.sh
|
|
|
|
# Step 3: Check what you changed
|
|
git status
|
|
|
|
# Step 4: Stage and commit
|
|
git add -A
|
|
git commit -m "Update Docker services with new health checks"
|
|
|
|
# Step 5: Push to Gitea
|
|
git push origin main
|
|
|
|
# Now your changes are backed up on Gitea and can be deployed to your VPS
|
|
```
|
|
|
|
**When to use this workflow:**
|
|
- Editing configuration files on your computer
|
|
- Writing scripts and documentation
|
|
- Testing changes before deploying to VPS
|
|
|
|
### Workflow 2: Update Agents on VPS
|
|
|
|
```bash
|
|
# On your VPS (remote server)
|
|
cd ~/.homelab-agents
|
|
|
|
# Get latest agents from Gitea
|
|
git pull origin main
|
|
|
|
# Now use the agents in your work
|
|
cat agents/sysadmin-session-closer.md
|
|
```
|
|
|
|
### Workflow 3: Work on VPS, Backup to Gitea
|
|
|
|
```bash
|
|
# On your VPS (remote server)
|
|
cd ~/projects/system-apps
|
|
|
|
# Make changes directly on the VPS
|
|
vim scripts/backup.sh
|
|
vim docker-compose/docker-compose.yml
|
|
|
|
# Back up your work to Gitea
|
|
git add -A
|
|
git commit -m "Update backup script with better error handling"
|
|
git push origin main
|
|
|
|
# Now your work is backed up and version-controlled on Gitea!
|
|
```
|
|
|
|
### Workflow 4: Create and Test New Feature
|
|
|
|
```bash
|
|
# Create a new branch for experimental work
|
|
git checkout -b feature/new-setup
|
|
|
|
# Make your changes
|
|
# Test everything locally
|
|
|
|
# If it works, merge back to main
|
|
git checkout main
|
|
git merge feature/new-setup
|
|
|
|
# Push to Gitea
|
|
git push origin main
|
|
|
|
# Delete the feature branch (optional)
|
|
git branch -d feature/new-setup
|
|
```
|
|
|
|
---
|
|
|
|
## Useful Git Commands
|
|
|
|
### View Commit History
|
|
|
|
See what changed and when:
|
|
|
|
```bash
|
|
# Show last 10 commits
|
|
git log --oneline -10
|
|
|
|
# Show commits with files changed
|
|
git log --stat -5
|
|
|
|
# Show specific commit details
|
|
git show abc1234
|
|
```
|
|
|
|
### Undo Changes
|
|
|
|
If you made a mistake:
|
|
|
|
```bash
|
|
# Discard changes to a specific file (not yet committed)
|
|
git checkout -- scripts/deploy.sh
|
|
|
|
# Discard all uncommitted changes
|
|
git reset --hard HEAD
|
|
|
|
# Undo the last commit (keep your changes)
|
|
git reset --soft HEAD~1
|
|
|
|
# Undo the last commit (discard changes)
|
|
git reset --hard HEAD~1
|
|
```
|
|
|
|
### Compare Versions
|
|
|
|
See differences between versions:
|
|
|
|
```bash
|
|
# Changes not yet committed
|
|
git diff
|
|
|
|
# Changes between two commits
|
|
git diff abc1234 def5678
|
|
|
|
# Changes between branches
|
|
git diff main feature/new-setup
|
|
```
|
|
|
|
### Sync with Latest Changes
|
|
|
|
Get updates from Gitea:
|
|
|
|
```bash
|
|
# Fetch latest without merging
|
|
git fetch origin
|
|
|
|
# Pull latest and merge (recommended)
|
|
git pull origin main
|
|
```
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### "fatal: could not read Username"
|
|
|
|
**Problem:** Git is asking for authentication but you don't have credentials saved.
|
|
|
|
**Solution 1 - Use HTTPS with saved credentials:**
|
|
```bash
|
|
git config --global credential.helper store
|
|
git clone http://100.120.125.113:3000/pdm/homelab-agents.git
|
|
# Enter username (pdm) and password when prompted
|
|
# Credentials are saved for future use
|
|
```
|
|
|
|
**Solution 2 - Configure git user:**
|
|
```bash
|
|
git config --global user.name "pdm"
|
|
git config --global user.email "your@email.com"
|
|
```
|
|
|
|
### "Permission denied" on push
|
|
|
|
**Problem:** Your push was rejected, possibly due to:
|
|
- Network access to Gitea server
|
|
- Repository permissions
|
|
- Authentication issue
|
|
|
|
**Check network access:**
|
|
```bash
|
|
ping 100.120.125.113
|
|
curl -I http://100.120.125.113:3000
|
|
```
|
|
|
|
**Verify remote URL:**
|
|
```bash
|
|
git remote -v
|
|
# Should show: origin http://100.120.125.113:3000/pdm/[project].git
|
|
```
|
|
|
|
**Test Gitea access:**
|
|
```bash
|
|
# Try to fetch (read-only test)
|
|
git fetch origin
|
|
```
|
|
|
|
### "branch is behind" or merge conflicts
|
|
|
|
**Problem:** Someone else pushed changes, and you have local changes too.
|
|
|
|
**Solution:**
|
|
```bash
|
|
# Get latest from Gitea
|
|
git pull origin main
|
|
|
|
# If conflicts occur, manually edit the conflicted files
|
|
git add .
|
|
git commit -m "Resolve merge conflicts"
|
|
git push origin main
|
|
```
|
|
|
|
### Repository not found
|
|
|
|
**Problem:** Repository URL is incorrect or repository doesn't exist on Gitea.
|
|
|
|
**Solution:**
|
|
```bash
|
|
# Verify correct URL format:
|
|
# http://100.120.125.113:3000/pdm/[exact-project-name].git
|
|
|
|
# Check what repositories exist by visiting:
|
|
http://100.120.125.113:3000/pdm
|
|
|
|
# Update remote if needed
|
|
git remote set-url origin http://100.120.125.113:3000/pdm/correct-name.git
|
|
```
|
|
|
|
### Lost changes or need to recover
|
|
|
|
**Problem:** You made changes but accidentally ran `git reset --hard`
|
|
|
|
**Solution - Find your work:**
|
|
```bash
|
|
# See recent commits even if hidden
|
|
git reflog
|
|
|
|
# Restore to a specific commit
|
|
git reset --hard abc1234
|
|
```
|
|
|
|
---
|
|
|
|
## Quick Reference Card
|
|
|
|
```bash
|
|
# Cloning
|
|
git clone http://100.120.125.113:3000/pdm/homelab-agents.git ~/.homelab-agents
|
|
git clone http://100.120.125.113:3000/pdm/vps-system-apps.git ~/projects/system-apps
|
|
|
|
# Status and viewing changes
|
|
git status # See what changed
|
|
git diff # See exact changes
|
|
git log --oneline -10 # See recent commits
|
|
|
|
# Committing and pushing
|
|
git add -A # Stage all changes
|
|
git commit -m "Your message" # Create commit
|
|
git push origin main # Push to Gitea
|
|
|
|
# Getting updates
|
|
git pull origin main # Get latest from Gitea
|
|
git fetch origin # Check for updates without merging
|
|
|
|
# Branches
|
|
git checkout -b feature-name # Create new branch
|
|
git checkout main # Switch to main branch
|
|
git merge feature-name # Merge branch into main
|
|
|
|
# Undoing
|
|
git reset --hard HEAD~1 # Undo last commit
|
|
git checkout -- filename # Undo changes to file
|
|
git revert abc1234 # Create new commit undoing old one
|
|
```
|
|
|
|
---
|
|
|
|
## Tips and Best Practices
|
|
|
|
### ✓ Do
|
|
- **Pull before you push** - Get latest changes first: `git pull origin main`
|
|
- **Commit frequently** - Small, focused commits are easier to understand
|
|
- **Write good commit messages** - Future you will thank you
|
|
- **Test before pushing** - Verify changes work before committing
|
|
- **Use meaningful branch names** - `feature/monitoring-stack` not `test123`
|
|
- **Keep backups** - Push to Gitea regularly for safety
|
|
|
|
### ✗ Don't
|
|
- **Don't commit secrets** - Never commit passwords, API keys, or tokens
|
|
- **Don't push broken code** - Test locally first
|
|
- **Don't commit generated files** - Use `.gitignore` for compiled code, dependencies
|
|
- **Don't force push to main** - Unless you really know what you're doing
|
|
- **Don't let changes sit locally** - Push to Gitea for backup regularly
|
|
- **Don't ignore errors** - Read error messages carefully before asking for help
|
|
|
|
---
|
|
|
|
## Getting Help
|
|
|
|
### Git Help
|
|
```bash
|
|
git help [command] # Get help for a command
|
|
git help commit # Example: help for commit command
|
|
```
|
|
|
|
### Check Gitea Web Interface
|
|
|
|
Visit http://100.120.125.113:3000 to:
|
|
- Browse repository files
|
|
- View commit history
|
|
- See who changed what
|
|
- Manage repository settings
|
|
|
|
### Verify Your Setup
|
|
|
|
```bash
|
|
# Check git version
|
|
git --version
|
|
|
|
# Check global config
|
|
git config --global -l
|
|
|
|
# Test Gitea access
|
|
git clone http://100.120.125.113:3000/pdm/homelab-agents.git test-repo
|
|
# If successful, you're all set!
|
|
rm -rf test-repo
|
|
```
|
|
|
|
---
|
|
|
|
**Happy coding! Your homelab now has version control.** 🚀
|