Initial commit: Homelab infrastructure repository with automated collection system
- Added Proxmox VE configuration collection scripts - Included documentation and quick-start guides - First infrastructure snapshot from serviceslab (2025-11-29) - All VM configs (10 VMs) and LXC configs (3 containers) - Git setup complete with .gitignore protecting sensitive data
This commit is contained in:
341
README-COLLECTION.md
Normal file
341
README-COLLECTION.md
Normal file
@@ -0,0 +1,341 @@
|
||||
# Homelab Infrastructure Collection Scripts
|
||||
|
||||
Automated collection tools for documenting and backing up your Proxmox VE homelab infrastructure.
|
||||
|
||||
## Quick Start
|
||||
|
||||
### From WSL2 (Your Current Environment)
|
||||
|
||||
The easiest way to collect your Proxmox configuration from WSL2:
|
||||
|
||||
```bash
|
||||
# 1. Make scripts executable
|
||||
chmod +x collect-homelab-config.sh collect-remote.sh
|
||||
|
||||
# 2. Set your Proxmox IP address
|
||||
PROXMOX_IP="192.168.1.100" # Replace with your actual IP
|
||||
|
||||
# 3. Run the remote collection
|
||||
./collect-remote.sh $PROXMOX_IP
|
||||
|
||||
# 4. Review results
|
||||
ls -la homelab-export-*/
|
||||
cat homelab-export-*/SUMMARY.md
|
||||
```
|
||||
|
||||
That's it! The script will SSH to your Proxmox host, collect all configurations, and download them to your WSL environment.
|
||||
|
||||
### Directly on Proxmox Host
|
||||
|
||||
If you prefer to run directly on the Proxmox server:
|
||||
|
||||
```bash
|
||||
# 1. Copy script to Proxmox
|
||||
scp collect-homelab-config.sh root@<proxmox-ip>:/root/
|
||||
|
||||
# 2. SSH to Proxmox
|
||||
ssh root@<proxmox-ip>
|
||||
|
||||
# 3. Run collection
|
||||
chmod +x /root/collect-homelab-config.sh
|
||||
./collect-homelab-config.sh
|
||||
|
||||
# 4. Copy results back to WSL
|
||||
# From WSL:
|
||||
scp -r root@<proxmox-ip>:/root/homelab-export-* ./
|
||||
```
|
||||
|
||||
## What You Get
|
||||
|
||||
After running the collection script, you'll have:
|
||||
|
||||
```
|
||||
homelab-export-20241128-143022/
|
||||
├── README.md # Detailed documentation
|
||||
├── SUMMARY.md # Collection statistics
|
||||
├── collection.log # Detailed log
|
||||
├── configs/
|
||||
│ ├── proxmox/ # Core Proxmox settings
|
||||
│ ├── vms/ # All VM configurations
|
||||
│ ├── lxc/ # All container configurations
|
||||
│ ├── storage/ # Storage pool configs
|
||||
│ ├── network/ # Network interface configs
|
||||
│ └── backup/ # Backup job definitions
|
||||
└── exports/
|
||||
├── system/ # System information
|
||||
├── cluster/ # Cluster status
|
||||
└── guests/ # VM/container lists
|
||||
```
|
||||
|
||||
## Files in This Directory
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `collect-homelab-config.sh` | Main collection script (runs on Proxmox host) |
|
||||
| `collect-remote.sh` | Wrapper for remote execution from WSL/Linux |
|
||||
| `COLLECTION-GUIDE.md` | Comprehensive usage guide and reference |
|
||||
| `README-COLLECTION.md` | This file - quick start guide |
|
||||
|
||||
## Common Use Cases
|
||||
|
||||
### Daily Documentation Snapshot
|
||||
|
||||
```bash
|
||||
# Run from WSL - executes on Proxmox and brings results back
|
||||
./collect-remote.sh 192.168.1.100 --level standard
|
||||
```
|
||||
|
||||
### Pre-Maintenance Full Backup
|
||||
|
||||
```bash
|
||||
# Full collection before making changes
|
||||
./collect-remote.sh 192.168.1.100 --level full --keep-remote
|
||||
```
|
||||
|
||||
### Sanitized Export for Sharing
|
||||
|
||||
```bash
|
||||
# Remove all sensitive data (IPs, passwords, tokens)
|
||||
./collect-remote.sh 192.168.1.100 --sanitize all
|
||||
```
|
||||
|
||||
### Weekly Automated Collection
|
||||
|
||||
On your Proxmox host, add to crontab:
|
||||
|
||||
```bash
|
||||
# Edit crontab
|
||||
sudo crontab -e
|
||||
|
||||
# Add weekly Sunday 3 AM collection
|
||||
0 3 * * 0 /root/collect-homelab-config.sh -l standard -o /backup/homelab/weekly-$(date +\%Y\%W)
|
||||
```
|
||||
|
||||
## Collection Levels
|
||||
|
||||
| Level | What It Includes | Best For |
|
||||
|-------|------------------|----------|
|
||||
| **basic** | System info, Proxmox configs, VM/LXC configs, network | Quick snapshots |
|
||||
| **standard** | Basic + storage, backups, cluster info | Regular documentation |
|
||||
| **full** | Standard + service configs, detailed state | Pre-maintenance |
|
||||
| **paranoid** | Everything possible | Maximum detail |
|
||||
|
||||
## Prerequisites
|
||||
|
||||
### SSH Access (Required for Remote Collection)
|
||||
|
||||
Set up passwordless SSH authentication:
|
||||
|
||||
```bash
|
||||
# Generate SSH key (if you don't have one)
|
||||
ssh-keygen -t ed25519
|
||||
|
||||
# Copy to Proxmox host
|
||||
ssh-copy-id root@<proxmox-ip>
|
||||
|
||||
# Test connection
|
||||
ssh root@<proxmox-ip> 'hostname'
|
||||
```
|
||||
|
||||
### Disk Space
|
||||
|
||||
Ensure adequate space:
|
||||
- On Proxmox: ~100-500 MB (depending on collection level)
|
||||
- On WSL: ~50-250 MB for compressed archives
|
||||
|
||||
### Permissions
|
||||
|
||||
The collection script needs root access on the Proxmox host to read all configurations.
|
||||
|
||||
## Security Considerations
|
||||
|
||||
### Default Sanitization
|
||||
|
||||
By default, the script sanitizes:
|
||||
- ✓ Passwords
|
||||
- ✓ API tokens
|
||||
- ✗ IP addresses (preserved for documentation)
|
||||
|
||||
### Full Sanitization
|
||||
|
||||
For exports that leave your network:
|
||||
|
||||
```bash
|
||||
./collect-remote.sh <proxmox-ip> --sanitize all
|
||||
```
|
||||
|
||||
This will redact:
|
||||
- Passwords
|
||||
- API tokens
|
||||
- IP addresses (replaced with 10.x.x.x)
|
||||
|
||||
### Storage Recommendations
|
||||
|
||||
1. **Keep unsanitized exports secure** - store in encrypted locations
|
||||
2. **Use private Git repositories** - never commit to public repos without sanitization
|
||||
3. **Encrypt sensitive exports**:
|
||||
```bash
|
||||
gpg --symmetric --cipher-algo AES256 homelab-export-*.tar.gz
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Run your first collection** using the Quick Start steps above
|
||||
|
||||
2. **Review the comprehensive guide**:
|
||||
```bash
|
||||
cat COLLECTION-GUIDE.md
|
||||
```
|
||||
|
||||
3. **Examine your infrastructure**:
|
||||
```bash
|
||||
# View VM configurations
|
||||
cat homelab-export-*/configs/vms/*.conf
|
||||
|
||||
# Check storage setup
|
||||
cat homelab-export-*/configs/proxmox/storage.cfg
|
||||
|
||||
# Review network configuration
|
||||
cat homelab-export-*/configs/network/interfaces
|
||||
```
|
||||
|
||||
4. **Set up version control**:
|
||||
```bash
|
||||
cd homelab-export-<timestamp>/
|
||||
git init
|
||||
git add .
|
||||
git commit -m "Initial infrastructure snapshot"
|
||||
git remote add origin <your-private-repo>
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
5. **Schedule regular collections** (see COLLECTION-GUIDE.md for automation)
|
||||
|
||||
6. **Use exports to build Infrastructure as Code** (Terraform, Ansible)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Cannot connect to Proxmox host"
|
||||
|
||||
Check:
|
||||
- Is the IP address correct?
|
||||
- Is SSH running on Proxmox? `ssh root@<proxmox-ip>`
|
||||
- Can you reach the host? `ping <proxmox-ip>`
|
||||
- Is firewall blocking port 22?
|
||||
|
||||
### "Permission denied"
|
||||
|
||||
Solutions:
|
||||
- Ensure scripts are executable: `chmod +x *.sh`
|
||||
- Use root user: `./collect-remote.sh 192.168.1.100 --user root`
|
||||
- Set up SSH keys: `ssh-copy-id root@<proxmox-ip>`
|
||||
|
||||
### "Not a Proxmox VE host"
|
||||
|
||||
This script requires a Proxmox VE installation. Verify:
|
||||
```bash
|
||||
ssh root@<proxmox-ip> 'cat /etc/pve/.version'
|
||||
```
|
||||
|
||||
### "Some items skipped"
|
||||
|
||||
This is normal! Review `SUMMARY.md` to see what was skipped. Common skipped items:
|
||||
- ZFS tools (if not using ZFS)
|
||||
- Cluster configs (on single-node setups)
|
||||
- HA configs (if High Availability not configured)
|
||||
|
||||
### Need more help?
|
||||
|
||||
1. Run with verbose flag: `./collect-remote.sh <proxmox-ip> -v`
|
||||
2. Check the log: `cat homelab-export-*/collection.log`
|
||||
3. Review the full guide: `cat COLLECTION-GUIDE.md`
|
||||
|
||||
## Examples
|
||||
|
||||
### Standard Collection from WSL
|
||||
|
||||
```bash
|
||||
./collect-remote.sh 192.168.1.100
|
||||
```
|
||||
|
||||
### Full Collection with Verbose Output
|
||||
|
||||
```bash
|
||||
./collect-remote.sh 192.168.1.100 --level full --verbose
|
||||
```
|
||||
|
||||
### Custom SSH Port and User
|
||||
|
||||
```bash
|
||||
./collect-remote.sh proxmox.local --port 2222 --user admin
|
||||
```
|
||||
|
||||
### Keep Remote Copy
|
||||
|
||||
```bash
|
||||
./collect-remote.sh 192.168.1.100 --keep-remote
|
||||
```
|
||||
|
||||
### Sanitized Export to Custom Location
|
||||
|
||||
```bash
|
||||
./collect-remote.sh 192.168.1.100 --sanitize all --output ~/Documents/homelab-backups
|
||||
```
|
||||
|
||||
## File Sizes
|
||||
|
||||
Approximate sizes for reference:
|
||||
|
||||
| Collection Level | Uncompressed | Compressed |
|
||||
|------------------|--------------|------------|
|
||||
| Basic | 5-15 MB | 1-3 MB |
|
||||
| Standard | 10-30 MB | 2-6 MB |
|
||||
| Full | 20-100 MB | 5-20 MB |
|
||||
| Paranoid | 50-500 MB | 10-50 MB |
|
||||
|
||||
*Actual sizes vary based on number of VMs/containers and configurations*
|
||||
|
||||
## Support
|
||||
|
||||
For detailed information on any topic:
|
||||
|
||||
- **Complete Usage Guide**: See `COLLECTION-GUIDE.md`
|
||||
- **Script Help**: Run `./collect-homelab-config.sh --help`
|
||||
- **Remote Wrapper Help**: Run `./collect-remote.sh --help`
|
||||
|
||||
## What's Collected vs. What's NOT
|
||||
|
||||
### ✓ Collected (READ-ONLY)
|
||||
- Configuration files
|
||||
- System information
|
||||
- Resource lists
|
||||
- Status information
|
||||
- Network settings
|
||||
- Storage definitions
|
||||
|
||||
### ✗ NOT Collected
|
||||
- Actual VM/container disk images
|
||||
- ISO files
|
||||
- Backup archives
|
||||
- User data within VMs/containers
|
||||
- Authentication credentials (sanitized)
|
||||
|
||||
**Note:** This script collects *configuration* and *metadata*, not actual data. For complete backups, use Proxmox Backup Server or vzdump.
|
||||
|
||||
## Integration Ideas
|
||||
|
||||
Once you have collected your infrastructure:
|
||||
|
||||
1. **Documentation**: Use as source of truth for runbooks
|
||||
2. **Change Tracking**: Diff exports to see what changed over time
|
||||
3. **Disaster Recovery**: Reference during rebuilds
|
||||
4. **IaC Development**: Convert to Terraform/Ansible
|
||||
5. **Compliance**: Evidence of configuration state
|
||||
6. **Training**: Sandbox for learning without risk
|
||||
7. **Migration Planning**: Understand dependencies before moving
|
||||
|
||||
---
|
||||
|
||||
**Version:** 1.0.0
|
||||
**Last Updated:** 2024-11-28
|
||||
**Maintained By:** Your homelab automation assistant, Steve
|
||||
Reference in New Issue
Block a user