From 6761c8903df45e4db1cd4e47754b10cf591d2b15 Mon Sep 17 00:00:00 2001 From: Arpad Krejczinger Date: Mon, 6 Oct 2025 20:40:11 +0200 Subject: [PATCH] Add Docker configuration symlink setup script - Automates symlinking of docker-compose.yml files from repo to /opt/docker - Includes Gitea, Jellyfin, qBittorrent, Portainer - Symlinks daemon.json to /etc/docker - Creates timestamped backups before replacing files - Eliminates need for manual config copying --- scripts/setup-docker-symlinks.sh | 100 +++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100755 scripts/setup-docker-symlinks.sh diff --git a/scripts/setup-docker-symlinks.sh b/scripts/setup-docker-symlinks.sh new file mode 100755 index 0000000..b593ccd --- /dev/null +++ b/scripts/setup-docker-symlinks.sh @@ -0,0 +1,100 @@ +#!/bin/bash +# Set up symlinks for Docker configurations to avoid manual copying + +set -e # Exit on error + +echo "===================================================================" +echo "Docker Configuration Symlink Setup" +echo "===================================================================" +echo "" + +REPO_ROOT="/home/hoborg/homelab" + +# Function to create symlink with backup +create_symlink() { + local service=$1 + local target=$2 + local link=$3 + + echo "-------------------------------------------------------------------" + echo "Setting up: $service" + echo "-------------------------------------------------------------------" + echo "Target: $target" + echo "Link: $link" + echo "" + + # Check if target exists + if [ ! -f "$target" ]; then + echo "ERROR: Target file does not exist: $target" + return 1 + fi + + # Backup existing file if it's not already a symlink + if [ -f "$link" ] && [ ! -L "$link" ]; then + backup="${link}.backup.$(date +%Y%m%d_%H%M%S)" + echo "Backing up existing file to: $backup" + cp "$link" "$backup" + rm "$link" + elif [ -L "$link" ]; then + echo "Removing existing symlink" + rm "$link" + fi + + # Create symlink + ln -s "$target" "$link" + + if [ -L "$link" ]; then + echo "✓ Symlink created successfully" + else + echo "✗ Failed to create symlink" + return 1 + fi + + echo "" +} + +# Gitea docker-compose.yml +create_symlink "Gitea docker-compose" \ + "$REPO_ROOT/config/docker/gitea/docker-compose.yml" \ + "/opt/docker/gitea/docker-compose.yml" + +# Jellyfin docker-compose.yml +create_symlink "Jellyfin docker-compose" \ + "$REPO_ROOT/config/docker/jellyfin/docker-compose.yml" \ + "/opt/docker/jellyfin/docker-compose.yml" + +# qBittorrent docker-compose.yml +create_symlink "qBittorrent docker-compose" \ + "$REPO_ROOT/config/docker/qbittorrent/docker-compose.yml" \ + "/opt/docker/qbittorrent/docker-compose.yml" + +# Portainer docker-compose.yml +create_symlink "Portainer docker-compose" \ + "$REPO_ROOT/config/docker/portainer/docker-compose.yml" \ + "/opt/docker/portainer/docker-compose.yml" + +# Docker daemon config +create_symlink "Docker daemon config" \ + "$REPO_ROOT/config/docker/daemon.json" \ + "/etc/docker/daemon.json" + +echo "===================================================================" +echo "Summary" +echo "===================================================================" +echo "" +echo "✓ All symlinks created successfully!" +echo "" +echo "Notes:" +echo " - Original files backed up with timestamp" +echo " - Edit files in $REPO_ROOT/config/docker/" +echo " - Changes take effect immediately (no copying needed)" +echo " - For daemon.json: restart docker after changes" +echo " - For docker-compose: restart containers after changes" +echo "" +echo "Verify symlinks:" +echo " ls -l /opt/docker/gitea/docker-compose.yml" +echo " ls -l /opt/docker/jellyfin/docker-compose.yml" +echo " ls -l /opt/docker/qbittorrent/docker-compose.yml" +echo " ls -l /opt/docker/portainer/docker-compose.yml" +echo " ls -l /etc/docker/daemon.json" +echo ""