feat(setup): enhance setup script for rootless Docker support and network configuration

This commit is contained in:
yusing
2025-09-09 23:13:38 +08:00
parent 82a4a61df0
commit 4ebd1dbf32

View File

@@ -180,7 +180,24 @@ for dir in "${REQUIRED_DIRECTORIES[@]}"; do
mkdir_if_not_exists "$dir" mkdir_if_not_exists "$dir"
done done
# 2. .env file # 2. check if rootless docker is used, verify again with user input
if docker info -f "{{println .SecurityOptions}}" | grep rootless >/dev/null 2>&1; then
ask_while_empty "Rootless docker detected, is this correct? (y/n): " USE_ROOTLESS_DOCKER
if [ "$USE_ROOTLESS_DOCKER" == "n" ]; then
USE_ROOTLESS_DOCKER="false"
else
USE_ROOTLESS_DOCKER="true"
fi
fi
# 3. if rootless docker is used, switch to rootless docker compose and .env
if [ "$USE_ROOTLESS_DOCKER" == "true" ]; then
COMPOSE_EXAMPLE_FILE_NAME="rootless-compose.example.yml"
DOT_ENV_EXAMPLE_PATH="rootless.env.example"
fi
# 4. .env file
fetch_file "$DOT_ENV_EXAMPLE_PATH" "$DOT_ENV_PATH" fetch_file "$DOT_ENV_EXAMPLE_PATH" "$DOT_ENV_PATH"
# set random JWT secret # set random JWT secret
@@ -192,13 +209,13 @@ if [ -n "$TIMEZONE" ]; then
setenv "TZ" "$TIMEZONE" setenv "TZ" "$TIMEZONE"
fi fi
# 3. docker-compose.yml # 5. docker-compose.yml
fetch_file "$COMPOSE_EXAMPLE_FILE_NAME" "$COMPOSE_FILE_NAME" fetch_file "$COMPOSE_EXAMPLE_FILE_NAME" "$COMPOSE_FILE_NAME"
# 4. config.yml # 6. config.yml
fetch_file "$CONFIG_EXAMPLE_FILE_NAME" "$CONFIG_FILE_PATH" fetch_file "$CONFIG_EXAMPLE_FILE_NAME" "$CONFIG_FILE_PATH"
# 5. setup authentication # 7. setup authentication
# ask for user and password # ask for user and password
echo "Setting up login user" echo "Setting up login user"
@@ -208,7 +225,7 @@ echo "Setting up login user \"$LOGIN_USERNAME\" with password \"$LOGIN_PASSWORD\
setenv "GODOXY_API_USER" "$LOGIN_USERNAME" setenv "GODOXY_API_USER" "$LOGIN_USERNAME"
setenv "GODOXY_API_PASSWORD" "$LOGIN_PASSWORD" setenv "GODOXY_API_PASSWORD" "$LOGIN_PASSWORD"
# 6. setup autocert # 8. setup autocert
ask_while_empty "Configure autocert? (y/n): " ENABLE_AUTOCERT ask_while_empty "Configure autocert? (y/n): " ENABLE_AUTOCERT
# quit if not using autocert # quit if not using autocert
@@ -269,8 +286,34 @@ autocert:
fi fi
fi fi
# 7. set uid and gid # 9. set uid and gid
setenv "GODOXY_UID" "$(id -u)" if [ "$USE_ROOTLESS_DOCKER" == "false" ]; then
setenv "GODOXY_GID" "$(id -g)" setenv "GODOXY_UID" "$(id -u)"
setenv "GODOXY_GID" "$(id -g)"
else
setenv "DOCKER_SOCKET" "/var/run/user/$(id -u)/docker.sock"
fi
# 10. proxy network (rootless docker only)
if [ "$USE_ROOTLESS_DOCKER" == "true" ]; then
echo "Setting up proxy network"
echo "Available networks:"
docker network ls
echo
ask_while_empty "Which network to use for proxy? (default: proxy): " PROXY_NETWORK
# check if network exists
if ! docker network ls | grep -q "$PROXY_NETWORK"; then
ask_while_empty "Network \"$PROXY_NETWORK\" does not exist, do you want to create it? (y/n): " CREATE_NETWORK
if [ "$CREATE_NETWORK" == "y" ]; then
docker network create "$PROXY_NETWORK"
echo "Network \"$PROXY_NETWORK\" created"
else
echo "Error: network \"$PROXY_NETWORK\" does not exist, please create it first"
exit 1
fi
fi
sed -i "s|proxy: #|\"$PROXY_NETWORK\": #|" "$COMPOSE_FILE_NAME"
sed -i "s|- proxy|- \"$PROXY_NETWORK\"|" "$COMPOSE_FILE_NAME"
fi
echo "Setup finished" echo "Setup finished"