LemonSec/GIT-REPO-SETUP.md

240 lines
5.2 KiB
Markdown

# Git Repository Setup for Portainer
This guide shows how to push LemonSec to your Git server for Portainer deployment.
## Files to Commit
These files should be in your Git repository:
```
LemonSec/
├── docker-compose.yml ✅ Main stack configuration
├── stack.env ✅ Environment variable template
├── .gitignore ✅ Git ignore rules
├── README.md ✅ Main documentation
├── SUMMARY.md ✅ Quick reference
├── PORTAINER-DEPLOY.md ✅ Portainer deployment guide
├── SETUP-TRUENAS-NEXTCLOUD.md ✅ TrueNAS specific guide
├── MIGRATE-FROM-NPM.md ✅ NPM migration guide
├── SETUP.md ✅ General setup guide
├── traefik/ ✅ Traefik configuration
│ ├── traefik.yml
│ └── dynamic/
│ ├── middlewares.yml
│ └── tls.yml
├── authelia/ ✅ Authelia configuration
│ ├── configuration.yml
│ └── users_database.yml ✅ (Add family users here)
├── crowdsec/ ✅ CrowdSec configuration
│ └── acquis.yaml
├── docs/ ✅ Documentation
│ ├── CLOUDFLARE.md
│ ├── TAILSCALE.md
│ └── SECURITY.md
├── examples/ ✅ Service examples
│ ├── nextcloud-compose.yml
│ ├── vaultwarden-compose.yml
│ └── internal-service-compose.yml
└── monitoring/ ✅ Monitoring configs
├── prometheus.yml
├── loki-config.yml
└── promtail-config.yml
```
## Files NOT to Commit
These are in `.gitignore`:
- `.env` - Contains your actual secrets
- `secrets/` directory - Secret files
- `*.log` - Log files
- `traefik/logs/` - Traefik logs
- `*.tar.gz` - Backup files
## Step-by-Step Git Setup
### 1. Initialize Repository
```bash
cd LemonSec
git init
```
### 2. Add Your Git Server
```bash
git remote add origin https://git.lemonlink.eu/impulsivefps/LemonSec.git
```
### 3. Configure Git (if needed)
```bash
git config user.name "Your Name"
git config user.email "your.email@example.com"
```
### 4. Add and Commit Files
```bash
# Add all files
git add .
# Commit
git commit -m "Initial LemonSec deployment
- Traefik reverse proxy with Cloudflare SSL
- Authelia SSO and 2FA
- CrowdSec intrusion detection
- AdGuard Home DNS
- TrueNAS Nextcloud routing
"
```
### 5. Push to Server
```bash
# For main branch
git push -u origin main
# Or if your default is master
git push -u origin master
```
### 6. Verify
```bash
# Check remote
git remote -v
# Should show:
# origin https://git.lemonlink.eu/impulsivefps/LemonSec.git (fetch)
# origin https://git.lemonlink.eu/impulsivefps/LemonSec.git (push)
# Check status
git status
# Should show: "nothing to commit, working tree clean"
```
## Updating the Repository
After making changes:
```bash
# Make changes to files
nano authelia/users_database.yml # Add family member
# Commit
git add authelia/users_database.yml
git commit -m "Add family member to Authelia"
# Push
git push
# In Portainer: Pull and redeploy stack
```
## Repository URL for Portainer
Use this URL in Portainer:
```
https://git.lemonlink.eu/impulsivefps/LemonSec
```
### If Repository is Private
If your Git server requires authentication:
1. **Option A: Deploy Key** (Recommended)
- Generate SSH key pair
- Add public key to Git repo as deploy key
- Use SSH URL: `git@git.lemonlink.eu:impulsivefps/LemonSec.git`
2. **Option B: Personal Access Token**
- Create token in Git settings
- Use HTTPS with token: `https://token@git.lemonlink.eu/impulsivefps/LemonSec`
3. **Option C: Portainer Git Credentials**
- In Portainer stack settings
- Enable authentication
- Enter username/password
## Testing Git Access
From your Proxmox VM:
```bash
# Test HTTPS access
git ls-remote https://git.lemonlink.eu/impulsivefps/LemonSec
# Should show refs without errors
```
## Troubleshooting
### "repository not found"
- Verify URL is correct
- Check repository exists on Git server
- Confirm permissions
### "Authentication failed"
- Check credentials
- Verify deploy key is added (if using SSH)
- Try accessing in browser first
### "Updates were rejected"
```bash
# Pull first
git pull origin main
# Then push
git push
```
### Large files / Binary files
If you accidentally committed secrets:
```bash
# Remove from history (be careful!)
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch .env' HEAD
# Force push
git push --force
```
## Branch Strategy
For simple deployments, use `main` or `master`:
```bash
# Check current branch
git branch
# Create and switch to main if needed
git checkout -b main
git push -u origin main
```
For advanced setups, you might want:
- `main` - Production
- `develop` - Testing
- `feature/*` - New services
## Automated Updates
Set up webhook (if your Git server supports it):
1. Go to Git repo settings
2. Add webhook URL: `http://portainer:9000/api/stacks/{stack_id}/git/redeploy`
3. On push, Portainer auto-redeploys
Or use Portainer's polling:
- Stacks → lemonsec → Git settings
- Enable automatic updates
- Set interval (e.g., 5 minutes)