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