fix: streamline Docker network verification and enhance error handling in Unraid setup

This commit is contained in:
S
2026-03-02 10:38:48 -05:00
parent 6882a6cd7a
commit 59e3e8e06a

View File

@@ -11,8 +11,7 @@ source "${SCRIPT_DIR}/lib/common.sh"
load_env
require_vars UNRAID_IP UNRAID_SSH_USER UNRAID_SSH_PORT UNRAID_GITEA_DATA_PATH \
UNRAID_MACVLAN_PARENT UNRAID_MACVLAN_SUBNET UNRAID_MACVLAN_GATEWAY \
UNRAID_MACVLAN_IP_RANGE UNRAID_GITEA_IP \
UNRAID_GITEA_IP \
GITEA_ADMIN_USER GITEA_ADMIN_PASSWORD GITEA_ADMIN_EMAIL \
GITEA_ORG_NAME GITEA_INSTANCE_NAME \
GITEA_DB_TYPE GITEA_VERSION \
@@ -29,6 +28,8 @@ phase_header 1 "Gitea on Unraid"
# Templates use $DATA_PATH as a generic variable name so the same template
# works for both Unraid (Phase 1) and Fedora (Phase 2).
DATA_PATH="$UNRAID_GITEA_DATA_PATH"
# Reuse Unraid's existing custom network.
UNRAID_DOCKER_NETWORK_NAME="br0"
# DB helpers and strip_template_block are in lib/common.sh
@@ -44,21 +45,16 @@ fi
log_success "Data directories ensured"
# ---------------------------------------------------------------------------
# Step 2: Create macvlan Docker network (idempotent)
# Each container gets its own LAN IP — no host port mapping needed.
# Step 2: Verify required Docker network exists on Unraid
# We intentionally reuse Unraid's existing network (br0) and never create/remove it.
# ---------------------------------------------------------------------------
log_step 2 "Creating macvlan Docker network on Unraid..."
if ssh_exec UNRAID "docker network inspect gitea_net" &>/dev/null; then
log_info "gitea_net network already exists — skipping"
log_step 2 "Verifying Docker network '${UNRAID_DOCKER_NETWORK_NAME}' on Unraid..."
if ssh_exec UNRAID "docker network inspect '${UNRAID_DOCKER_NETWORK_NAME}'" &>/dev/null; then
log_success "Docker network '${UNRAID_DOCKER_NETWORK_NAME}' exists"
else
ssh_exec UNRAID "docker network create \
--driver macvlan \
--subnet='${UNRAID_MACVLAN_SUBNET}' \
--gateway='${UNRAID_MACVLAN_GATEWAY}' \
--ip-range='${UNRAID_MACVLAN_IP_RANGE}' \
-o parent='${UNRAID_MACVLAN_PARENT}' \
gitea_net"
log_success "macvlan network gitea_net created"
log_error "Required Docker network '${UNRAID_DOCKER_NETWORK_NAME}' not found on Unraid."
log_error "Create it in Unraid first or update phase1_gitea_unraid.sh to match your network name."
exit 1
fi
# ---------------------------------------------------------------------------
@@ -71,12 +67,13 @@ else
TMPFILE=$(mktemp)
# Set variables for template — containers get dedicated LAN IPs via macvlan
GITEA_CONTAINER_IP="${UNRAID_GITEA_IP}"
export DATA_PATH GITEA_CONTAINER_IP
GITEA_NETWORK_NAME="${UNRAID_DOCKER_NETWORK_NAME}"
export DATA_PATH GITEA_CONTAINER_IP GITEA_NETWORK_NAME
if [[ "$GITEA_DB_TYPE" == "sqlite3" ]]; then
# No DB service needed — render template then strip DB blocks
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
"\${GITEA_VERSION} \${DATA_PATH} \${GITEA_CONTAINER_IP}"
"\${GITEA_VERSION} \${DATA_PATH} \${GITEA_CONTAINER_IP} \${GITEA_NETWORK_NAME}"
strip_template_block "$TMPFILE" "DB_SERVICE_START" "DB_SERVICE_END"
strip_template_block "$TMPFILE" "DB_DEPENDS_START" "DB_DEPENDS_END"
else
@@ -85,7 +82,7 @@ else
DB_CONTAINER_IP="${UNRAID_DB_IP}"
export DB_CONTAINER_IP
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
"\${GITEA_VERSION} \${DATA_PATH} \${GITEA_CONTAINER_IP} \${DB_DOCKER_IMAGE} \${DB_ENV_VARS} \${DB_DATA_DIR} \${DB_HEALTHCHECK} \${DB_CONTAINER_IP}"
"\${GITEA_VERSION} \${DATA_PATH} \${GITEA_CONTAINER_IP} \${GITEA_NETWORK_NAME} \${DB_DOCKER_IMAGE} \${DB_ENV_VARS} \${DB_DATA_DIR} \${DB_HEALTHCHECK} \${DB_CONTAINER_IP}"
fi
scp_to UNRAID "$TMPFILE" "${DATA_PATH}/docker-compose.yml"