477 lines
17 KiB
Bash
Executable File
477 lines
17 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Clean Organized Gitea Wiki Creation Script
|
|
# Creates a fresh, properly organized wiki with hierarchical navigation
|
|
|
|
set -e
|
|
|
|
# Configuration
|
|
GITEA_TOKEN=REDACTED_TOKEN
|
|
GITEA_URL="https://git.vish.gg"
|
|
REPO_OWNER="Vish"
|
|
REPO_NAME="homelab"
|
|
BASE_URL="$GITEA_URL/api/v1/repos/$REPO_OWNER/$REPO_NAME/wiki"
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
YELLOW='\033[1;33m'
|
|
PURPLE='\033[0;35m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}🚀 Creating CLEAN organized Gitea Wiki with hierarchical structure...${NC}"
|
|
|
|
# Function to create or update wiki page
|
|
create_wiki_page() {
|
|
local title="$1"
|
|
local file_path="$2"
|
|
local message="$3"
|
|
|
|
if [[ ! -f "$file_path" ]]; then
|
|
echo -e "${RED}❌ File not found: $file_path${NC}"
|
|
return 1
|
|
fi
|
|
|
|
echo -e "${YELLOW}📄 Creating: $title${NC}"
|
|
|
|
# Read file content and escape for JSON
|
|
local content
|
|
content=$(cat "$file_path" | jq -Rs .)
|
|
|
|
# Create JSON payload
|
|
local json_payload
|
|
json_payload=$(jq -n \
|
|
--arg title "$title" \
|
|
--argjson content "$content" \
|
|
--arg message "$message" \
|
|
'{
|
|
title: $title,
|
|
content_base64: ($content | @base64),
|
|
message: $message
|
|
}')
|
|
|
|
# Try to create new page
|
|
local response
|
|
response=$(curl -s -w "%{http_code}" -o /tmp/wiki_response.json \
|
|
-X POST \
|
|
-H "Authorization: token $GITEA_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$json_payload" \
|
|
"$BASE_URL/new")
|
|
|
|
local http_code="${response: -3}"
|
|
|
|
if [[ "$http_code" == "201" ]]; then
|
|
echo -e "${GREEN}✅ Created: $title${NC}"
|
|
return 0
|
|
elif [[ "$http_code" == "409" ]] || [[ "$http_code" == "400" ]]; then
|
|
# Page exists, try to update it
|
|
response=$(curl -s -w "%{http_code}" -o /tmp/wiki_response.json \
|
|
-X POST \
|
|
-H "Authorization: token $GITEA_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$json_payload" \
|
|
"$BASE_URL/$title")
|
|
|
|
http_code="${response: -3}"
|
|
|
|
if [[ "$http_code" == "200" ]]; then
|
|
echo -e "${GREEN}✅ Updated: $title${NC}"
|
|
return 0
|
|
else
|
|
echo -e "${RED}❌ Failed to update $title (HTTP $http_code)${NC}"
|
|
return 1
|
|
fi
|
|
else
|
|
echo -e "${RED}❌ Failed to create $title (HTTP $http_code)${NC}"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Success counter
|
|
success_count=0
|
|
total_count=0
|
|
|
|
echo -e "${BLUE}📋 Creating main organized navigation hub...${NC}"
|
|
|
|
# Create REDACTED_APP_PASSWORD with clean organized navigation
|
|
cat > /tmp/clean_wiki_home.md << 'EOF'
|
|
# 🏠 Homelab Documentation Wiki
|
|
|
|
*Organized documentation for Vish's homelab infrastructure*
|
|
|
|
## 🎯 Quick Access
|
|
|
|
| Category | Description | Key Pages |
|
|
|----------|-------------|-----------|
|
|
| [🔧 **Administration**](Administration) | System management & operations | [GitOps Guide](GitOps-Guide), [Deployment](Deployment-Guide) |
|
|
| [🏗️ **Infrastructure**](Infrastructure) | Core infrastructure & networking | [Overview](Infrastructure-Overview), [Networking](Networking-Guide) |
|
|
| [🎯 **Services**](Services) | Application services & setup | [Service Index](Service-Index), [Dashboard Setup](Dashboard-Setup) |
|
|
| [🚀 **Getting Started**](Getting-Started) | Beginner guides & quickstart | [Quickstart](Beginner-Quickstart), [What is Homelab](What-Is-Homelab) |
|
|
| [🛠️ **Troubleshooting**](Troubleshooting) | Problem solving & diagnostics | [Common Issues](Common-Issues), [Emergency Guide](Emergency-Guide) |
|
|
| [🔬 **Advanced**](Advanced) | Advanced topics & optimization | [Maturity Roadmap](Maturity-Roadmap), [Scaling](Scaling-Guide) |
|
|
|
|
---
|
|
|
|
## 📊 **System Status**
|
|
|
|
- **🚀 GitOps Status**: ✅ 18 active stacks, 50+ containers
|
|
- **🖥️ Active Servers**: 5 (Atlantis, Calypso, Gaming VPS, Homelab VM, Concord NUC)
|
|
- **🎯 Services**: 100+ containerized services
|
|
- **📚 Documentation**: 300+ organized pages
|
|
|
|
---
|
|
|
|
## 🌐 **Access Points**
|
|
|
|
- **🔗 Git Repository**: https://git.vish.gg/Vish/homelab
|
|
- **📖 Gitea Wiki**: https://git.vish.gg/Vish/homelab/wiki
|
|
- **📚 DokuWiki Mirror**: http://atlantis.vish.local:8399/doku.php?id=homelab:start
|
|
|
|
---
|
|
|
|
## 📚 **Documentation Categories**
|
|
|
|
### 🔧 Administration
|
|
Essential system management and operational procedures.
|
|
- [GitOps Comprehensive Guide](GitOps-Guide) - Complete deployment procedures ⭐
|
|
- [Deployment Documentation](Deployment-Guide) - Step-by-step deployment
|
|
- [Operational Status](Operational-Status) - Current system status
|
|
- [Security Hardening](Security-Guide) - Security procedures
|
|
|
|
### 🏗️ Infrastructure
|
|
Core infrastructure, networking, and host management.
|
|
- [Infrastructure Overview](Infrastructure-Overview) - Complete infrastructure guide
|
|
- [Networking Guide](Networking-Guide) - Network configuration
|
|
- [SSH Access Guide](SSH-Guide) - Access procedures
|
|
- [Hardware Inventory](Hardware-Inventory) - Equipment catalog
|
|
|
|
### 🎯 Services
|
|
Application services, dashboards, and service management.
|
|
- [Service Index](Service-Index) - All available services
|
|
- [Dashboard Setup](Dashboard-Setup) - Dashboard configuration
|
|
- [Stoatchat Setup](Stoatchat-Guide) - Chat platform
|
|
- [Media Services](Media-Services) - ARR suite and media
|
|
|
|
### 🚀 Getting Started
|
|
Beginner-friendly guides and quick start procedures.
|
|
- [Beginner Quickstart](Beginner-Quickstart) - Quick start guide
|
|
- [What Is Homelab](What-Is-Homelab) - Introduction to homelabs
|
|
- [Prerequisites](Prerequisites) - Requirements and setup
|
|
- [Architecture Overview](Architecture-Overview) - System architecture
|
|
|
|
### 🛠️ Troubleshooting
|
|
Problem solving, diagnostics, and emergency procedures.
|
|
- [Common Issues](Common-Issues) - Frequently encountered problems
|
|
- [Emergency Access Guide](Emergency-Guide) - Emergency procedures
|
|
- [Disaster Recovery](Disaster-Recovery) - Recovery procedures
|
|
- [Container Diagnosis](Container-Diagnosis) - Container troubleshooting
|
|
|
|
### 🔬 Advanced Topics
|
|
Advanced configuration, optimization, and scaling.
|
|
- [Homelab Maturity Roadmap](Maturity-Roadmap) - Growth planning
|
|
- [Repository Optimization](Optimization-Guide) - Optimization strategies
|
|
- [Terraform Implementation](Terraform-Guide) - Infrastructure as code
|
|
- [Scaling Strategies](Scaling-Guide) - Growth and scaling
|
|
|
|
---
|
|
|
|
*🏠 **Source Repository**: https://git.vish.gg/Vish/homelab*
|
|
*👨💻 **Maintainer**: Homelab Administrator*
|
|
*📚 **Documentation**: Organized and navigable*
|
|
EOF
|
|
|
|
total_count=$((total_count + 1))
|
|
if create_wiki_page "Home" "/tmp/clean_wiki_home.md" "Created clean organized wiki home page"; then
|
|
success_count=$((success_count + 1))
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${BLUE}📚 Creating category pages...${NC}"
|
|
|
|
# Create Administration category page
|
|
cat > /tmp/administration.md << 'EOF'
|
|
# 🔧 Administration
|
|
|
|
*System management and operational procedures*
|
|
|
|
## 🚀 Deployment & GitOps
|
|
- [GitOps Comprehensive Guide](GitOps-Guide) - Complete deployment procedures ⭐
|
|
- [Deployment Documentation](Deployment-Guide) - Step-by-step deployment
|
|
- [Deployment Workflow](Deployment-Workflow) - Workflow procedures
|
|
|
|
## 🔧 System Administration
|
|
- [Development Guide](Development-Guide) - Development procedures
|
|
- [Agent Memory](Agent-Memory) - AI agent context
|
|
- [Monitoring Setup](Monitoring-Setup) - Monitoring configuration
|
|
- [Backup Strategies](Backup-Strategies) - Backup procedures
|
|
- [Maintenance Procedures](Maintenance-Guide) - System maintenance
|
|
|
|
## 📊 Status & Reports
|
|
- [Operational Status](Operational-Status) - Current system status
|
|
- [Documentation Audit](Documentation-Audit) - Audit results
|
|
|
|
## 📚 Integration
|
|
- [DokuWiki Integration](DokuWiki-Integration) - External wiki setup
|
|
- [Gitea Wiki Integration](Gitea-Wiki-Integration) - Native wiki setup
|
|
|
|
---
|
|
[🏠 Back to Home](Home)
|
|
EOF
|
|
|
|
total_count=$((total_count + 1))
|
|
if create_wiki_page "Administration" "/tmp/administration.md" "Created administration category page"; then
|
|
success_count=$((success_count + 1))
|
|
fi
|
|
|
|
# Create Infrastructure category page
|
|
cat > /tmp/infrastructure.md << 'EOF'
|
|
# 🏗️ Infrastructure
|
|
|
|
*Core infrastructure, networking, and host management*
|
|
|
|
## 🌐 Core Infrastructure
|
|
- [Infrastructure Overview](Infrastructure-Overview) - Complete infrastructure guide
|
|
- [Infrastructure Health](Infrastructure-Health) - System health status
|
|
- [Networking Guide](Networking-Guide) - Network configuration
|
|
- [Storage Guide](Storage-Guide) - Storage configuration
|
|
- [Host Management](Host-Management) - Host administration
|
|
|
|
## 🔐 Access & Security
|
|
- [SSH Access Guide](SSH-Guide) - SSH access procedures
|
|
- [User Access Guide](User-Access-Guide) - User management
|
|
- [Authentik SSO](Authentik-SSO) - Single sign-on setup
|
|
|
|
## 🌐 Network Services
|
|
- [Tailscale Setup](Tailscale-Guide) - VPN configuration
|
|
- [Cloudflare Tunnels](Cloudflare-Tunnels) - Tunnel configuration
|
|
- [Cloudflare DNS](Cloudflare-DNS) - DNS configuration
|
|
- [Network Performance](Network-Performance) - Performance tuning
|
|
|
|
## 🏠 Hardware & Hosts
|
|
- [Hardware Inventory](Hardware-Inventory) - Equipment catalog
|
|
- [Atlantis Migration](Atlantis-Migration) - Migration procedures
|
|
- [Mobile Setup](Mobile-Setup) - Mobile device configuration
|
|
- [Laptop Setup](Laptop-Setup) - Laptop configuration
|
|
|
|
---
|
|
[🏠 Back to Home](Home)
|
|
EOF
|
|
|
|
total_count=$((total_count + 1))
|
|
if create_wiki_page "Infrastructure" "/tmp/infrastructure.md" "Created infrastructure category page"; then
|
|
success_count=$((success_count + 1))
|
|
fi
|
|
|
|
# Create Services category page
|
|
cat > /tmp/services.md << 'EOF'
|
|
# 🎯 Services
|
|
|
|
*Application services and configuration guides*
|
|
|
|
## 📊 Service Management
|
|
- [Service Index](Service-Index) - All available services
|
|
- [Verified Service Inventory](Service-Inventory) - Service catalog
|
|
- [Dashboard Setup](Dashboard-Setup) - Dashboard configuration
|
|
- [Homarr Setup](Homarr-Setup) - Homarr dashboard
|
|
- [Theme Park](Theme-Park) - UI theming
|
|
|
|
## 🎬 Media Services
|
|
- [ARR Suite Enhancements](ARR-Suite-Enhancements) - Media stack improvements
|
|
- [ARR Suite Language Config](ARR-Language-Config) - Language configuration
|
|
|
|
## 💬 Communication Services
|
|
- [Stoatchat Setup](Stoatchat-Guide) - Chat platform setup
|
|
- [Matrix Setup](Matrix-Guide) - Matrix server configuration
|
|
- [Mastodon Setup](Mastodon-Guide) - Social media platform
|
|
- [Mattermost Setup](Mattermost-Guide) - Team communication
|
|
|
|
## 🔧 Development Services
|
|
- [OpenHands](OpenHands-Guide) - AI development assistant
|
|
- [Paperless](Paperless-Guide) - Document management
|
|
- [Reactive Resume](Reactive-Resume-Guide) - Resume builder
|
|
|
|
---
|
|
[🏠 Back to Home](Home)
|
|
EOF
|
|
|
|
total_count=$((total_count + 1))
|
|
if create_wiki_page "Services" "/tmp/services.md" "Created services category page"; then
|
|
success_count=$((success_count + 1))
|
|
fi
|
|
|
|
# Create Getting Started category page
|
|
cat > /tmp/getting-started.md << 'EOF'
|
|
# 🚀 Getting Started
|
|
|
|
*Beginner guides and quick start procedures*
|
|
|
|
## 🎯 Quick Start
|
|
- [Beginner Quickstart](Beginner-Quickstart) - Quick start guide
|
|
- [What Is Homelab](What-Is-Homelab) - Introduction to homelabs
|
|
- [Prerequisites](Prerequisites) - Requirements and setup
|
|
- [Architecture Overview](Architecture-Overview) - System architecture
|
|
|
|
## 📚 Comprehensive Guides
|
|
- [Beginner Homelab Guide](Beginner-Guide) - Complete beginner guide
|
|
- [Shopping Guide](Shopping-Guide) - Hardware recommendations
|
|
- [Complete Rebuild Guide](Rebuild-Guide) - Full rebuild procedures
|
|
- [Quick Start Guide](Quick-Start) - Quick deployment
|
|
|
|
---
|
|
[🏠 Back to Home](Home)
|
|
EOF
|
|
|
|
total_count=$((total_count + 1))
|
|
if create_wiki_page "Getting-Started" "/tmp/getting-started.md" "Created getting started category page"; then
|
|
success_count=$((success_count + 1))
|
|
fi
|
|
|
|
# Create Troubleshooting category page
|
|
cat > /tmp/troubleshooting.md << 'EOF'
|
|
# 🛠️ Troubleshooting
|
|
|
|
*Problem solving, diagnostics, and emergency procedures*
|
|
|
|
## 🚨 Emergency Procedures
|
|
- [Emergency Access Guide](Emergency-Guide) - Emergency procedures
|
|
- [Disaster Recovery](Disaster-Recovery) - Recovery procedures
|
|
- [Recovery Guide](Recovery-Guide) - System recovery
|
|
|
|
## 🔍 Diagnostics
|
|
- [Common Issues](Common-Issues) - Frequently encountered problems
|
|
- [Diagnostics Guide](Diagnostics-Guide) - Diagnostic procedures
|
|
- [Container Diagnosis](Container-Diagnosis) - Container troubleshooting
|
|
- [Performance Issues](Performance-Issues) - Performance troubleshooting
|
|
|
|
## 🔧 Specific Issues
|
|
- [Watchtower Emergency](Watchtower-Emergency) - Watchtower issues
|
|
- [Authentik SSO Rebuild](Authentik-Rebuild) - SSO troubleshooting
|
|
- [Beginner Troubleshooting](Beginner-Troubleshooting) - Beginner help
|
|
|
|
---
|
|
[🏠 Back to Home](Home)
|
|
EOF
|
|
|
|
total_count=$((total_count + 1))
|
|
if create_wiki_page "Troubleshooting" "/tmp/troubleshooting.md" "Created troubleshooting category page"; then
|
|
success_count=$((success_count + 1))
|
|
fi
|
|
|
|
# Create Advanced category page
|
|
cat > /tmp/advanced.md << 'EOF'
|
|
# 🔬 Advanced Topics
|
|
|
|
*Advanced configuration, optimization, and scaling*
|
|
|
|
## 🚀 Growth & Optimization
|
|
- [Homelab Maturity Roadmap](Maturity-Roadmap) - Growth planning
|
|
- [Repository Optimization](Optimization-Guide) - Optimization strategies
|
|
- [Stack Comparison Report](Stack-Comparison) - Technology comparisons
|
|
- [Scaling Strategies](Scaling-Guide) - Growth and scaling
|
|
|
|
## 🏗️ Infrastructure as Code
|
|
- [Terraform Implementation](Terraform-Guide) - Infrastructure as code
|
|
- [Terraform Alternatives](Terraform-Alternatives) - Alternative approaches
|
|
- [Ansible Guide](Ansible-Guide) - Automation with Ansible
|
|
- [Customization Guide](Customization-Guide) - Advanced customization
|
|
|
|
## 🔗 Integration
|
|
- [Service Integrations](Service-Integrations) - Service integrations
|
|
|
|
---
|
|
[🏠 Back to Home](Home)
|
|
EOF
|
|
|
|
total_count=$((total_count + 1))
|
|
if create_wiki_page "Advanced" "/tmp/advanced.md" "Created advanced topics category page"; then
|
|
success_count=$((success_count + 1))
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${BLUE}📚 Creating key documentation pages...${NC}"
|
|
|
|
# Create key pages that exist in the docs
|
|
declare -A key_pages=(
|
|
# Core pages
|
|
["GitOps-Guide"]="docs/admin/GITOPS_DEPLOYMENT_GUIDE.md"
|
|
["Deployment-Guide"]="docs/admin/DEPLOYMENT_DOCUMENTATION.md"
|
|
["Operational-Status"]="docs/admin/OPERATIONAL_STATUS.md"
|
|
["Development-Guide"]="docs/admin/DEVELOPMENT.md"
|
|
["Agent-Memory"]="docs/admin/AGENTS.md"
|
|
|
|
# Infrastructure
|
|
["Infrastructure-Overview"]="docs/infrastructure/INFRASTRUCTURE_OVERVIEW.md"
|
|
["Infrastructure-Health"]="docs/infrastructure/INFRASTRUCTURE_HEALTH_REPORT.md"
|
|
["SSH-Guide"]="docs/infrastructure/SSH_ACCESS_GUIDE.md"
|
|
["User-Access-Guide"]="docs/infrastructure/USER_ACCESS_GUIDE.md"
|
|
|
|
# Security
|
|
["Security-Guide"]="docs/security/SECURITY_HARDENING_SUMMARY.md"
|
|
|
|
# Services
|
|
["Service-Index"]="docs/services/VERIFIED_SERVICE_INVENTORY.md"
|
|
["Dashboard-Setup"]="docs/services/DASHBOARD_SETUP.md"
|
|
["Homarr-Setup"]="docs/services/HOMARR_SETUP.md"
|
|
["ARR-Suite-Enhancements"]="docs/services/ARR_SUITE_ENHANCEMENTS_FEB2025.md"
|
|
|
|
# Getting Started
|
|
["Beginner-Quickstart"]="docs/getting-started/BEGINNER_QUICKSTART.md"
|
|
["What-Is-Homelab"]="docs/getting-started/what-is-homelab.md"
|
|
["Prerequisites"]="docs/getting-started/prerequisites.md"
|
|
["Architecture-Overview"]="docs/getting-started/architecture.md"
|
|
|
|
# Troubleshooting
|
|
["Emergency-Guide"]="docs/troubleshooting/EMERGENCY_ACCESS_GUIDE.md"
|
|
["Common-Issues"]="docs/troubleshooting/common-issues.md"
|
|
["Container-Diagnosis"]="docs/troubleshooting/CONTAINER_DIAGNOSIS_REPORT.md"
|
|
["Disaster-Recovery"]="docs/troubleshooting/disaster-recovery.md"
|
|
|
|
# Hardware
|
|
["Hardware-Inventory"]="docs/hardware/README.md"
|
|
)
|
|
|
|
for title in "${!key_pages[@]}"; do
|
|
file_path="${key_pages[$title]}"
|
|
if [[ -f "$file_path" ]]; then
|
|
total_count=$((total_count + 1))
|
|
if create_wiki_page "$title" "$file_path" "Created organized page: $title"; then
|
|
success_count=$((success_count + 1))
|
|
fi
|
|
sleep 0.1
|
|
else
|
|
echo -e "${YELLOW}⚠️ File not found: $file_path${NC}"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo -e "${BLUE}🎯 Clean Organized Wiki Creation Summary:${NC}"
|
|
echo -e "${GREEN}✅ Successful: $success_count/$total_count${NC}"
|
|
echo -e "${RED}❌ Failed: $((total_count - success_count))/$total_count${NC}"
|
|
|
|
echo ""
|
|
echo -e "${BLUE}🌐 Clean Organized Gitea Wiki available at:${NC}"
|
|
echo -e " ${BLUE}https://git.vish.gg/$REPO_OWNER/$REPO_NAME/wiki${NC}"
|
|
echo -e " ${BLUE}https://git.vish.gg/$REPO_OWNER/$REPO_NAME/wiki/Home${NC}"
|
|
|
|
# Get final page count
|
|
final_page_count=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$BASE_URL/pages?limit=500" | jq '. | length' 2>/dev/null || echo "unknown")
|
|
echo ""
|
|
echo -e "${GREEN}📊 Clean Organized Wiki Statistics:${NC}"
|
|
echo -e "${GREEN} Total Wiki Pages: $final_page_count${NC}"
|
|
echo -e "${GREEN} Organized Structure: ✅ Clean hierarchical navigation${NC}"
|
|
echo -e "${GREEN} Success Rate: $(( success_count * 100 / total_count ))%${NC}"
|
|
|
|
if [[ $success_count -eq $total_count ]]; then
|
|
echo ""
|
|
echo -e "${GREEN}✅ CLEAN Organized Gitea Wiki created successfully!${NC}"
|
|
echo -e "${GREEN}🎉 Wiki now has clean, navigable structure!${NC}"
|
|
exit 0
|
|
else
|
|
echo ""
|
|
echo -e "${YELLOW}⚠️ Clean Wiki creation completed with some issues.${NC}"
|
|
echo -e "${YELLOW}📊 $success_count out of $total_count pages created successfully.${NC}"
|
|
exit 1
|
|
fi
|