addedd a install script and a redme file
This commit is contained in:
@@ -0,0 +1,62 @@
|
|||||||
|
============================================================ MILES' HOME SERVER STACK README
|
||||||
|
This repository contains a fully automated, containerized home server stack. It uses Docker for containerization, Caddy for reverse proxying, and is optimized for access via Tailscale.
|
||||||
|
|
||||||
|
QUICK START (NEW SYSTEM)
|
||||||
|
|
||||||
|
If you are setting this up on a fresh install, follow these three steps:
|
||||||
|
|
||||||
|
Step 1: Prepare the Script Run: chmod +x setup.sh
|
||||||
|
|
||||||
|
Step 2: Run the Setup Run: ./setup.sh (This will install Docker if missing, create all required folders in /home/miles/, and set correct permissions.)
|
||||||
|
|
||||||
|
Step 3: Launch Choose "Option 1" from the script menu to pull the images and start the services.
|
||||||
|
|
||||||
|
SERVICE MAP & NAVIGATION
|
||||||
|
|
||||||
|
All services are accessible via: http://raspberrypi.tail46eacb.ts.net:4533 (or your local IP)
|
||||||
|
|
||||||
|
SERVICE | PATH | FUNCTION ---------------|---------|---------------------------------- Homarr | / | Central Dashboard (Landing Page) Code-Server | /edit | VS Code Web IDE Gitea | /git | Private Git Server Navidrome | /music | Music Streaming RomM | /roms | Retro Game Manager Trilium | /notes | Knowledge Base / Notes Excalidraw | /draw | Digital Whiteboard qBittorrent | /tr | Download Manager ntfy | /ntfy | Push Notifications
|
||||||
|
|
||||||
|
DIRECTORY STRUCTURE
|
||||||
|
|
||||||
|
The setup.sh script automatically manages these paths:
|
||||||
|
|
||||||
|
CONFIGS: /home/miles/code-config, /home/miles/qbittorrent-config
|
||||||
|
|
||||||
|
DATA: /home/miles/gitea-data, /home/miles/trilium-data, /home/miles/homarr-data
|
||||||
|
|
||||||
|
MEDIA: /home/miles/navidrome-music, /home/miles/roms, /home/miles/downloads
|
||||||
|
|
||||||
|
MAINTENANCE VIA SETUP.SH
|
||||||
|
|
||||||
|
Run ./setup.sh at any time to access the management menu:
|
||||||
|
|
||||||
|
Update Apps: Option 4 pulls the latest versions and restarts.
|
||||||
|
|
||||||
|
Check Status: Option 5 shows which containers are running.
|
||||||
|
|
||||||
|
Logs: Option 3 is vital for debugging startup issues.
|
||||||
|
|
||||||
|
TROUBLESHOOTING GUIDE
|
||||||
|
|
||||||
|
[A] Permissions Issues If a container won't start or says "Access Denied": Fix: sudo chown -R 1000:1000 /home/miles/
|
||||||
|
|
||||||
|
[B] Caddy Routing Problems If you see a "404" or "Blank Page" on a sub-path:
|
||||||
|
|
||||||
|
Ensure container names in Caddyfile match docker-compose.yml.
|
||||||
|
|
||||||
|
Run: docker exec -it caddy caddy validate --config /etc/caddy/Caddyfile
|
||||||
|
|
||||||
|
[C] Database Locks If an app hangs (Gitea/Trilium), it may have a database lock. Fix: docker compose restart [service-name]
|
||||||
|
|
||||||
|
[D] Networking Conflicts If port 4533 is in use, Caddy will fail. Check: sudo netstat -tulpn | grep 4533
|
||||||
|
|
||||||
|
IMPORTANT NOTES
|
||||||
|
|
||||||
|
WATCHTOWER: Runs in the background to auto-update apps.
|
||||||
|
|
||||||
|
SECURITY: Change the code-server password in docker-compose.yml.
|
||||||
|
|
||||||
|
TAILSCALE: Must be "Connected" for the Gitea URL to work.
|
||||||
|
|
||||||
|
============================================================
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# --- CONFIGURATION ---
|
||||||
|
BASE_DIR="/home/miles"
|
||||||
|
# List of folders to create based on your docker-compose
|
||||||
|
FOLDERS=(
|
||||||
|
"code-config" "projects" "homarr-data" "navidrome-data"
|
||||||
|
"navidrome-music" "trilium-data" "gitea-data" "roms"
|
||||||
|
"romm-data" "ntfy-cache" "qbittorrent-config" "downloads"
|
||||||
|
)
|
||||||
|
|
||||||
|
# --- 1. INSTALL DOCKER ---
|
||||||
|
if ! [ -x "$(command -v docker)" ]; then
|
||||||
|
echo "🚀 Docker not found. Installing..."
|
||||||
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||||
|
sudo sh get-docker.sh
|
||||||
|
sudo usermod -aG docker $USER
|
||||||
|
echo "✅ Docker installed. (Note: You may need to logout and back in for group changes to take effect)"
|
||||||
|
else
|
||||||
|
echo "✅ Docker is already installed."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- 2. CREATE FOLDERS ---
|
||||||
|
echo "📂 Creating directory structure..."
|
||||||
|
for folder in "${FOLDERS[@]}"; do
|
||||||
|
mkdir -p "$BASE_DIR/$folder"
|
||||||
|
done
|
||||||
|
# Set permissions to PUID 1000
|
||||||
|
sudo chown -R $USER:$USER $BASE_DIR/
|
||||||
|
echo "✅ Folders created and permissions set to user $USER."
|
||||||
|
|
||||||
|
# --- 3. MANAGEMENT MENU ---
|
||||||
|
show_menu() {
|
||||||
|
echo "------------------------------------------"
|
||||||
|
echo " HOME SERVER MANAGEMENT MENU"
|
||||||
|
echo "------------------------------------------"
|
||||||
|
echo "1) Start/Update Stack (Up -d)"
|
||||||
|
echo "2) Stop Stack (Down)"
|
||||||
|
echo "3) View Logs (Follow)"
|
||||||
|
echo "4) Update Images (Pull)"
|
||||||
|
echo "5) Check Container Status"
|
||||||
|
echo "6) Exit"
|
||||||
|
echo "------------------------------------------"
|
||||||
|
}
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
show_menu
|
||||||
|
read -p "Choose an option [1-6]: " choice
|
||||||
|
case $choice in
|
||||||
|
1) docker compose up -d ;;
|
||||||
|
2) docker compose down ;;
|
||||||
|
3) docker compose logs -f --tail=50 ;;
|
||||||
|
4) docker compose pull && docker compose up -d ;;
|
||||||
|
5) docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" ;;
|
||||||
|
6) exit 0 ;;
|
||||||
|
*) echo "Invalid option. Try again." ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
Reference in New Issue
Block a user