rvs-prxy server user login name & service container name
This commit is contained in:
parent
0660adfd04
commit
72c05996ca
@ -12,14 +12,18 @@ DOCKER_NETWORK=app-network # Docker network for connecting to i
|
||||
# FRP Server Configuration
|
||||
# Public IP address of the FRP server
|
||||
FRP_SERVER_ADDR=192.168.1.100
|
||||
FRP_SERVER_USER=myuser
|
||||
FRP_SERVER_PORT=16999 # Port for FRP communication (default 16999)
|
||||
|
||||
# Domain Configuration
|
||||
# Public domain for Traefik routing
|
||||
DOMAIN_NAME=myapp.example.com
|
||||
|
||||
# Common Proxy Configuration - Remote ports for external access
|
||||
PROXY_WEB_PORT=11077 # Remote port for web proxy - accessible via domain (default 13077)
|
||||
# Service -- docker container name
|
||||
SERVICE_DOCKER_CONTAINER_NAME=your-app-docker-container
|
||||
|
||||
# Remote ports Configuration for 1) external access, or 2) traefik connecting (convert to publish at port 80/443 usually)
|
||||
PROXY_WEB_PORT=11077 # Remote port for web proxy
|
||||
|
||||
# Dynamic Proxy Configuration - Use PROXY_*_PORT format for additional proxies
|
||||
# Examples:
|
||||
|
||||
@ -87,7 +87,11 @@
|
||||
- for localIP, it should not use IP, it should use docker container name, since we are use docker network. So the container should follow this rule as `${INSTANCE_NAME}-app` where `${INSTANCE_NAME}` from `.env*`. Modify the code to prepare a right `frpc.toml`.
|
||||
- From `.env*`, it has `${DOCKER_NETWORK}` variable, however, i do not fin it to apply into `docker run ...` cmd applying into the frpc container. Add it back.
|
||||
- From `auto-sys-deploy.sh`, it has "Proceed with deployment? (OK/Cancel) [Cancel]: OK", disable the part of code, do not remove it, only disable it, do not need to ask any more for operation smoothly;
|
||||
|
||||
- i find the content of "$temp_script" is duplicated, 1st item as "746 to 1126" and 2nd item as "1127 to 1507". Verify these two items, then merge the content, finally remove the last one.
|
||||
- i find seems duplicated function `restart_docker_compose()` exists twice, verify do we need to duplicate it?
|
||||
- ~~`update_ports_config()` function seems exist twice times inside the "$temp_script", verify it which one should be right, then remove the duplicated one.~~
|
||||
- From `.env*`, we have `FRP_SERVER_ADDR` variable, i aim to add a `FRP_SERVER_USER` to instead the currently hardcode of `teenfuture` user.
|
||||
- For `generate_frpc_config()` -> handle `frpc.toml` content -> `config_content+="localIP = \"${THIS_INSTANCE}-app\"\n"`, i aim to change from `${THIS_INSTANCE}-app` to ${SERVICE_DOCKER_CONTAINER_NAME} from `.env*`. I have already updated the `.env.development` and `.env.example`. You update the `auto-sys-deploy.sh` code.
|
||||
- From `.env*` -> `PROXY_*_PORT`, it creates this currently:
|
||||
```
|
||||
# XXXXX Self-hosting ports ====
|
||||
@ -96,6 +100,7 @@
|
||||
```
|
||||
- if it is `PROXY_WEB_PORT`, it mentions as `WEB`, we do not care the port number even other than 80 and 443, we still skip the section "# XXXXX Self-hosting ports ====", that means no this section present at `apps/zzthis/docker-compose.app.yml`, otherwise other `PROXY_XXXX_PORT` which is `XXXX` is not `WEB`, then keep this section.
|
||||
- I am in the case of `PROXY_WEB_PORT=12077` from `.env.development` now, but this section "# XXXXX Self-hosting ports ====" is still exist.
|
||||
- i review the `auto-sys-deploy.sh` code -> `update_ports_config()` -> handle `local INSTANCE_MARKER ...`, it does not add any logic matching the above i just mentioned. Modify the code.
|
||||
- ~~if it is `PROXY_WEB_PORT`, since it is web, so should be shared common pport 443 and 80, so, the above section "# XXXXX Self-hosting ports ====" can skip it. or other `PROXY_*_PORT` except `PROXY_WEB_PORT`, should still keep this section.~~
|
||||
- ~~Currently it shows this command `cd /data/ssd/rvs-prxy/frps/ && ./stop.sh && ./start.sh` for manually to execute.~~ For manually testing as better, since this is production proxy, cannot always restart.
|
||||
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
- From `.env*` -> `PROXY_*_PORT`, it creates this currently:
|
||||
```
|
||||
# XXXXX Self-hosting ports ====
|
||||
- "12077:12077/tcp"
|
||||
# =========================
|
||||
```
|
||||
- if it is `PROXY_WEB_PORT`, it mentions as `WEB`, we do not care the port number even other than 80 and 443, we still skip the section "# XXXXX Self-hosting ports ====", that means no this section present at `apps/zzthis/docker-compose.app.yml`, otherwise other `PROXY_XXXX_PORT` which is `XXXX` is not `WEB`, then keep this section.
|
||||
- I am in the case of `PROXY_WEB_PORT=12077` from `.env.development` now, but this section "# XXXXX Self-hosting ports ====" is still exist.
|
||||
@ -423,6 +423,16 @@ generate_frpc_config() {
|
||||
save_to_env "FRP_SERVER_ADDR" "$SERVER_ADDR"
|
||||
fi
|
||||
|
||||
# Use FRP server user from environment or default to 'teenfuture'
|
||||
if [ -n "$FRP_SERVER_USER" ]; then
|
||||
SERVER_USER="$FRP_SERVER_USER"
|
||||
log_info "Using environment variable for FRP server user: $SERVER_USER"
|
||||
else
|
||||
# Use default 'teenfuture' user if not specified
|
||||
SERVER_USER="teenfuture"
|
||||
log_info "Using default FRP server user: $SERVER_USER"
|
||||
fi
|
||||
|
||||
# Use default server port (16999) without prompting, but use existing if available
|
||||
if [ -n "$FRP_SERVER_PORT" ]; then
|
||||
SERVER_PORT="$FRP_SERVER_PORT"
|
||||
@ -520,7 +530,12 @@ generate_frpc_config() {
|
||||
config_content+="name = \"${proxy_name}-${THIS_INSTANCE}\"\n"
|
||||
config_content+="type = \"tcp\"\n"
|
||||
config_content+="localPort = ${local_port}\n"
|
||||
# Use SERVICE_DOCKER_CONTAINER_NAME from .env* files if available, otherwise fall back to ${THIS_INSTANCE}-app
|
||||
if [ -n "$SERVICE_DOCKER_CONTAINER_NAME" ]; then
|
||||
config_content+="localIP = \"${SERVICE_DOCKER_CONTAINER_NAME}\"\n"
|
||||
else
|
||||
config_content+="localIP = \"${THIS_INSTANCE}-app\"\n"
|
||||
fi
|
||||
config_content+="remotePort = ${remote_port}\n\n"
|
||||
done
|
||||
|
||||
@ -1071,386 +1086,6 @@ restart_docker_compose() {
|
||||
echo "You can view the logs with: docker logs --tail 50 frps_frps_1"
|
||||
}
|
||||
|
||||
# Function to update the docker-compose configuration
|
||||
update_compose_config() {
|
||||
local INSTANCE_NAME="$1"
|
||||
local HAS_WEB_PROXY="$2"
|
||||
shift 2 # Remove first two arguments, remaining are ports
|
||||
local PORTS=("$@") # Get all port arguments
|
||||
local LAST_ARG="${PORTS[-1]}" # Last argument should be domain name
|
||||
unset 'PORTS[-1]' # Remove domain from ports array
|
||||
|
||||
local DOMAIN_NAME="$LAST_ARG"
|
||||
local COMPOSE_FILE="/data/ssd/rvs-prxy/frps/apps/zzthis/docker-compose.app.yml"
|
||||
|
||||
# Use the first port as the web port for domain routing
|
||||
local WEB_PORT="${PORTS[0]}"
|
||||
|
||||
# Create a backup of the original file with timestamp
|
||||
if [ -f "${COMPOSE_FILE}" ]; then
|
||||
local TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
local BACKUP_FILE="${COMPOSE_FILE}.backup_${TIMESTAMP}"
|
||||
cp "${COMPOSE_FILE}" "${BACKUP_FILE}"
|
||||
echo "Created backup of docker-compose.app.yml as ${BACKUP_FILE}"
|
||||
else
|
||||
echo "NOTE: docker-compose.app.yml does not exist yet, will create it"
|
||||
fi
|
||||
|
||||
# Update ports section based on whether we have a web proxy
|
||||
if [ "$HAS_WEB_PROXY" = "true" ]; then
|
||||
echo "Skipping port mappings for configuration with web proxy (access via domain only)"
|
||||
else
|
||||
# Update ports section with all ports (don't pass domain name to ports config)
|
||||
update_ports_config "$INSTANCE_NAME" "${PORTS[@]}"
|
||||
fi
|
||||
|
||||
# Update labels section - only needs the web port for routing
|
||||
update_labels_config "$INSTANCE_NAME" "$WEB_PORT" "$DOMAIN_NAME"
|
||||
|
||||
# Ask user if they want to restart the service
|
||||
echo ""
|
||||
read -p "Do you want to restart the Docker Compose service now? (y/N): " -n 1 -r
|
||||
echo ""
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
restart_docker_compose
|
||||
else
|
||||
echo "You can restart the service later with:"
|
||||
echo " cd /data/ssd/rvs-prxy/frps/ && ./stop.sh && ./start.sh"
|
||||
echo "And view logs with:"
|
||||
echo " docker logs --tail 50 frps_frps_1"
|
||||
fi
|
||||
}
|
||||
|
||||
# Execute the configuration update with passed parameters
|
||||
# Pass all ports and domain name as arguments to update_compose_config
|
||||
update_compose_config "$@"
|
||||
#!/bin/bash
|
||||
|
||||
# Function to check if the instance configuration is complete and up-to-date in ports section
|
||||
# This function is a simplified version - in a real implementation, this would check dynamically
|
||||
check_ports_config_status() {
|
||||
local INSTANCE_NAME="$1"
|
||||
local PORTS_CONFIG=("${@:2}") # All remaining arguments are ports
|
||||
local COMPOSE_FILE="/data/ssd/rvs-prxy/frps/apps/zzthis/docker-compose.app.yml"
|
||||
|
||||
# Set the instance marker for ports section
|
||||
local INSTANCE_MARKER="# ${INSTANCE_NAME} Self-hosting ports ===="
|
||||
|
||||
# Check if the instance marker exists
|
||||
if [ ! -f "${COMPOSE_FILE}" ] || ! grep -q "${INSTANCE_MARKER}" "${COMPOSE_FILE}"; then
|
||||
echo "not_found"
|
||||
return
|
||||
fi
|
||||
|
||||
# Find the exact lines of the configuration block
|
||||
local start_line=$(grep -n "${INSTANCE_MARKER}" "${COMPOSE_FILE}" | head -1 | cut -d: -f1)
|
||||
local end_line=$(grep -n "# =========================" "${COMPOSE_FILE}" | awk -F: -v start="$start_line" '$1 > start {print $1; exit}')
|
||||
|
||||
# If we can't find the end marker, use a default range
|
||||
if [ -z "$end_line" ]; then
|
||||
end_line=$((start_line + ${#PORTS_CONFIG[@]} + 5))
|
||||
fi
|
||||
|
||||
# Extract the configuration block
|
||||
local config_block=$(sed -n "${start_line},${end_line}p" "${COMPOSE_FILE}")
|
||||
|
||||
# Count the port lines
|
||||
local port_lines=$(echo "$config_block" | grep -c '^ - "[0-9]*:[0-9]*/tcp"')
|
||||
|
||||
# For simplicity in this implementation, we'll mark as 'outdated' to update
|
||||
echo "outdated"
|
||||
}
|
||||
|
||||
# Function to check if the instance configuration is complete and up-to-date in labels section
|
||||
check_labels_config_status() {
|
||||
local INSTANCE_NAME="$1"
|
||||
local WEB_PORT="$2"
|
||||
local DOMAIN_NAME="$3"
|
||||
local COMPOSE_FILE="/data/ssd/rvs-prxy/frps/apps/zzthis/docker-compose.app.yml"
|
||||
|
||||
# Set the instance marker for labels section (different from ports)
|
||||
local INSTANCE_MARKER="# ${INSTANCE_NAME} Self-hosting labels ===="
|
||||
|
||||
# Check if the instance marker exists in labels section
|
||||
if [ ! -f "${COMPOSE_FILE}" ] || ! grep -q "${INSTANCE_MARKER}" "${COMPOSE_FILE}"; then
|
||||
echo "not_found"
|
||||
return
|
||||
fi
|
||||
|
||||
# Find the exact lines of the configuration block
|
||||
local start_line=$(grep -n "${INSTANCE_MARKER}" "${COMPOSE_FILE}" | head -1 | cut -d: -f1)
|
||||
local end_line=$(grep -n "# =========================" "${COMPOSE_FILE}" | awk -F: -v start="$start_line" '$1 > start {print $1; exit}')
|
||||
|
||||
# If we can't find the end marker, use a default range
|
||||
if [ -z "$end_line" ]; then
|
||||
end_line=$((start_line + 15))
|
||||
fi
|
||||
|
||||
# Extract the configuration block
|
||||
local config_block=$(sed -n "${start_line},${end_line}p" "${COMPOSE_FILE}")
|
||||
|
||||
# Count the label lines (should be 11 lines plus markers)
|
||||
local label_lines=$(echo "$config_block" | grep -c '^ - "traefik\.')
|
||||
|
||||
if [ "$label_lines" -ge 11 ]; then
|
||||
# Check if the domain and port match our current configuration
|
||||
local current_domain=$(echo "$config_block" | grep 'rule=Host(' | head -1 | sed 's/.*Host(`\([^)]*\)`).*/\1/')
|
||||
local current_port=$(echo "$config_block" | grep 'loadbalancer.server.port' | sed 's/.*port=\([0-9]*\).*/\1/')
|
||||
|
||||
if [ -n "$current_domain" ] && [ -n "$current_port" ] && \
|
||||
[ "$current_domain" = "$DOMAIN_NAME" ] && [ "$current_port" = "$WEB_PORT" ]; then
|
||||
echo "up_to_date"
|
||||
else
|
||||
echo "outdated"
|
||||
fi
|
||||
else
|
||||
echo "incomplete"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to find the correct insertion point in a specific section
|
||||
find_section_insertion_point() {
|
||||
local section_name="$1"
|
||||
local COMPOSE_FILE="/data/ssd/rvs-prxy/frps/apps/zzthis/docker-compose.app.yml"
|
||||
|
||||
# Find the section start line
|
||||
local section_start=$(grep -n "${section_name}:" "${COMPOSE_FILE}" | head -1 | cut -d: -f1)
|
||||
if [ -z "$section_start" ]; then
|
||||
echo "0"
|
||||
return
|
||||
fi
|
||||
|
||||
# Look for the next section after this one or end of section
|
||||
local current_line=$((section_start + 1))
|
||||
local total_lines=$(wc -l < "${COMPOSE_FILE}")
|
||||
|
||||
while [ "$current_line" -le "$total_lines" ]; do
|
||||
local line_content=$(sed -n "${current_line}p" "${COMPOSE_FILE}")
|
||||
|
||||
# If we hit a line that starts a new section (not indented or comment)
|
||||
if [[ "$line_content" =~ ^[[:space:]]*[a-zA-Z] ]] && [[ ! "$line_content" =~ ^[[:space:]]*# ]] && [[ ! "$line_content" =~ ^[[:space:]]*- ]]; then
|
||||
echo "$current_line"
|
||||
return
|
||||
fi
|
||||
|
||||
current_line=$((current_line + 1))
|
||||
done
|
||||
|
||||
# If we didn't find the end, insert at the end of the file
|
||||
echo $((total_lines + 1))
|
||||
}
|
||||
|
||||
# Function to update ports section with dynamic ports
|
||||
update_ports_config() {
|
||||
local INSTANCE_NAME="$1"
|
||||
shift # Remove first argument, remaining are ports
|
||||
local PORTS=("$@") # All remaining arguments are ports
|
||||
local COMPOSE_FILE="/data/ssd/rvs-prxy/frps/apps/zzthis/docker-compose.app.yml"
|
||||
|
||||
local INSTANCE_MARKER="# ${INSTANCE_NAME} Self-hosting ports ===="
|
||||
local INSTANCE_END_MARKER="# ========================="
|
||||
|
||||
local config_status=$(check_ports_config_status "$INSTANCE_NAME" "${PORTS[@]}")
|
||||
echo "Ports configuration status: $config_status"
|
||||
|
||||
case "$config_status" in
|
||||
"not_found")
|
||||
echo "Adding new instance to ports section"
|
||||
local insertion_line=$(find_section_insertion_point "ports")
|
||||
|
||||
# Build the port configuration dynamically, excluding standard web ports (80, 443)
|
||||
local port_config=""
|
||||
local non_standard_ports=()
|
||||
for port in "${PORTS[@]}"; do
|
||||
# Skip standard web ports since they may be managed by the system
|
||||
if [ "$port" != "80" ] && [ "$port" != "443" ]; then
|
||||
port_config+=" - \"${port}:${port}/tcp\"\\n"
|
||||
non_standard_ports+=("$port")
|
||||
fi
|
||||
done
|
||||
|
||||
# Only add ports section if there are non-standard ports to map
|
||||
if [ -n "$port_config" ]; then
|
||||
# Insert the configuration at the correct location
|
||||
sed -i "${insertion_line}i\\
|
||||
\\
|
||||
${INSTANCE_MARKER}\\
|
||||
${port_config} ${INSTANCE_END_MARKER}\\
|
||||
" "${COMPOSE_FILE}"
|
||||
echo "Ports configuration added successfully for ${#non_standard_ports[@]} non-standard port(s): ${non_standard_ports[*]}"
|
||||
else
|
||||
echo "No non-standard ports to add to ports section (ports 80 and 443 are standard)"
|
||||
fi
|
||||
;;
|
||||
"up_to_date")
|
||||
echo "Ports configuration is already up to date"
|
||||
;;
|
||||
"outdated"|"incomplete")
|
||||
echo "Updating existing ports configuration"
|
||||
# Find the exact lines of the existing configuration
|
||||
local start_line=$(grep -n "${INSTANCE_MARKER}" "${COMPOSE_FILE}" | head -1 | cut -d: -f1)
|
||||
local end_line=$(grep -n "${INSTANCE_END_MARKER}" "${COMPOSE_FILE}" | awk -F: -v start="$start_line" '$1 > start {print $1; exit}')
|
||||
|
||||
# If we can't find the end marker, use a default range
|
||||
if [ -n "$start_line" ] && [ -z "$end_line" ]; then
|
||||
end_line=$((start_line + ${#PORTS[@]} + 5))
|
||||
fi
|
||||
|
||||
# Remove only the specific configuration block (from start marker to end marker)
|
||||
if [ -n "$start_line" ] && [ -n "$end_line" ] && [ "$start_line" -gt 0 ] && [ "$end_line" -gt "$start_line" ]; then
|
||||
sed -i "${start_line},${end_line}d" "${COMPOSE_FILE}"
|
||||
|
||||
# Build the updated port configuration dynamically, excluding standard web ports (80, 443)
|
||||
local port_config=""
|
||||
local non_standard_ports=()
|
||||
for port in "${PORTS[@]}"; do
|
||||
# Skip standard web ports since they may be managed by the system
|
||||
if [ "$port" != "80" ] && [ "$port" != "443" ]; then
|
||||
port_config+=" - \"${port}:${port}/tcp\"\\n"
|
||||
non_standard_ports+=("$port")
|
||||
fi
|
||||
done
|
||||
|
||||
# Only update ports section if there are non-standard ports to map
|
||||
if [ -n "$port_config" ]; then
|
||||
# Insert the updated configuration at the same location
|
||||
sed -i "${start_line}i\\
|
||||
${INSTANCE_MARKER}\\
|
||||
${port_config} ${INSTANCE_END_MARKER}" "${COMPOSE_FILE}"
|
||||
echo "Ports configuration updated successfully for ${#non_standard_ports[@]} non-standard port(s): ${non_standard_ports[*]}"
|
||||
else
|
||||
echo "No non-standard ports to update in ports section (ports 80 and 443 are standard)"
|
||||
fi
|
||||
else
|
||||
echo "Warning: Could not determine valid line range for ports update"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to update labels section
|
||||
update_labels_config() {
|
||||
local INSTANCE_NAME="$1"
|
||||
local WEB_PORT="$2"
|
||||
local DOMAIN_NAME="$3"
|
||||
local COMPOSE_FILE="/data/ssd/rvs-prxy/frps/apps/zzthis/docker-compose.app.yml"
|
||||
|
||||
local INSTANCE_MARKER="# ${INSTANCE_NAME} Self-hosting labels ===="
|
||||
local INSTANCE_END_MARKER="# ========================="
|
||||
|
||||
local config_status=$(check_labels_config_status "$INSTANCE_NAME" "$WEB_PORT" "$DOMAIN_NAME")
|
||||
echo "Labels configuration status: $config_status"
|
||||
|
||||
case "$config_status" in
|
||||
"not_found")
|
||||
echo "Adding new instance to labels section"
|
||||
local insertion_line=$(find_section_insertion_point "labels")
|
||||
|
||||
# Insert the configuration at the correct location
|
||||
sed -i "${insertion_line}i\\
|
||||
\\
|
||||
${INSTANCE_MARKER}\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-http.entrypoints=web\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-http.rule=Host(\`${DOMAIN_NAME}\`)\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-http.service=frps-${INSTANCE_NAME}\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-http.middlewares=http2https@file\"\\
|
||||
\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.entrypoints=websecure\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.rule=Host(\`${DOMAIN_NAME}\`)\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.service=frps-${INSTANCE_NAME}\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.tls=true\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.tls.certresolver=letsencrypt\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.tls.domains[0].main=${DOMAIN_NAME}\"\\
|
||||
\\
|
||||
- \"traefik.http.services.frps-${INSTANCE_NAME}.loadbalancer.server.port=${WEB_PORT}\"\\
|
||||
${INSTANCE_END_MARKER}\\
|
||||
" "${COMPOSE_FILE}"
|
||||
echo "Labels configuration added successfully"
|
||||
;;
|
||||
"up_to_date")
|
||||
echo "Labels configuration is already up to date"
|
||||
;;
|
||||
"outdated"|"incomplete")
|
||||
echo "Updating existing labels configuration"
|
||||
# Find the exact lines of the existing configuration
|
||||
local start_line=$(grep -n "${INSTANCE_MARKER}" "${COMPOSE_FILE}" | head -1 | cut -d: -f1)
|
||||
local end_line=$(grep -n "${INSTANCE_END_MARKER}" "${COMPOSE_FILE}" | awk -F: -v start="$start_line" '$1 > start {print $1; exit}')
|
||||
|
||||
# If we can't find the end marker, use a default range
|
||||
if [ -z "$end_line" ]; then
|
||||
end_line=$((start_line + 15))
|
||||
fi
|
||||
|
||||
# Remove only the specific configuration block (from start marker to end marker)
|
||||
if [ -n "$start_line" ] && [ -n "$end_line" ] && [ "$start_line" -gt 0 ] && [ "$end_line" -gt "$start_line" ]; then
|
||||
sed -i "${start_line},${end_line}d" "${COMPOSE_FILE}"
|
||||
|
||||
# Insert the updated configuration at the same location
|
||||
sed -i "${start_line}i\\
|
||||
${INSTANCE_MARKER}\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-http.entrypoints=web\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-http.rule=Host(\`${DOMAIN_NAME}\`)\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-http.service=frps-${INSTANCE_NAME}\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-http.middlewares=http2https@file\"\\
|
||||
\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.entrypoints=websecure\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.rule=Host(\`${DOMAIN_NAME}\`)\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.service=frps-${INSTANCE_NAME}\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.tls=true\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.tls.certresolver=letsencrypt\"\\
|
||||
- \"traefik.http.routers.frps-${INSTANCE_NAME}-https.tls.domains[0].main=${DOMAIN_NAME}\"\\
|
||||
\\
|
||||
- \"traefik.http.services.frps-${INSTANCE_NAME}.loadbalancer.server.port=${WEB_PORT}\"\\
|
||||
${INSTANCE_END_MARKER}" "${COMPOSE_FILE}"
|
||||
echo "Labels configuration updated successfully"
|
||||
else
|
||||
echo "Warning: Could not determine valid line range for labels update"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to restart Docker Compose service
|
||||
restart_docker_compose() {
|
||||
local COMPOSE_DIR="/data/ssd/rvs-prxy/frps/"
|
||||
echo "Restarting Docker Compose service..."
|
||||
|
||||
# Change to the compose directory
|
||||
cd "${COMPOSE_DIR}" || {
|
||||
echo "Error: Could not change to directory ${COMPOSE_DIR}"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Stop the service
|
||||
echo "Stopping the service..."
|
||||
if [ -f "./stop.sh" ]; then
|
||||
./stop.sh
|
||||
else
|
||||
docker-compose -f docker-compose.app.yml down
|
||||
fi
|
||||
|
||||
# Start the service
|
||||
echo "Starting the service..."
|
||||
if [ -f "./start.sh" ]; then
|
||||
./start.sh
|
||||
else
|
||||
docker-compose -f docker-compose.app.yml up -d
|
||||
fi
|
||||
|
||||
# Wait a moment for the service to start
|
||||
sleep 3
|
||||
|
||||
# Show the logs
|
||||
echo "Showing the last 50 lines of logs:"
|
||||
docker logs --tail 50 frps_frps_1 2>/dev/null || docker logs --tail 50 "${COMPOSE_DIR##*/}_frps_1" 2>/dev/null || {
|
||||
echo "Warning: Could not retrieve logs for frps_frps_1. Trying alternative container names..."
|
||||
docker ps -a | grep frps
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo "Docker Compose service has been restarted."
|
||||
echo "You can view the logs with: docker logs --tail 50 frps_frps_1"
|
||||
}
|
||||
|
||||
# Function to update the docker-compose configuration
|
||||
update_compose_config() {
|
||||
@ -1513,22 +1148,22 @@ EOF
|
||||
|
||||
# Copy script to proxy server and execute it with all ports and domain
|
||||
log_info "Connecting to proxy server at $proxy_server_addr"
|
||||
if scp -i ~/.ssh/itl-devs1 "$temp_script" teenfuture@$proxy_server_addr:/tmp/; then
|
||||
if scp -i ~/.ssh/itl-devs1 "$temp_script" ${SERVER_USER}@$proxy_server_addr:/tmp/; then
|
||||
# Construct command with instance name, web proxy flag, all ports and domain name
|
||||
local cmd_args=("$THIS_INSTANCE" "$has_web_proxy")
|
||||
local cmd_args=("$THIS_INSTANCE" "$has_web")
|
||||
for port in "${all_ports[@]}"; do
|
||||
cmd_args+=("$port")
|
||||
done
|
||||
cmd_args+=("$DOMAIN_NAME") # Add domain name as last argument
|
||||
|
||||
if ssh -i ~/.ssh/itl-devs1 teenfuture@$proxy_server_addr "bash /tmp/$(basename $temp_script) ${cmd_args[*]}"; then
|
||||
if ssh -i ~/.ssh/itl-devs1 ${SERVER_USER}@$proxy_server_addr "bash /tmp/$(basename $temp_script) ${cmd_args[*]}"; then
|
||||
log_info "Proxy server configuration updated successfully"
|
||||
# Clean up remote script
|
||||
ssh -i ~/.ssh/itl-devs1 teenfuture@$proxy_server_addr "rm /tmp/$(basename $temp_script)" >/dev/null 2>&1 || true
|
||||
ssh -i ~/.ssh/itl-devs1 ${SERVER_USER}@$proxy_server_addr "rm /tmp/$(basename $temp_script)" >/dev/null 2>&1 || true
|
||||
else
|
||||
log_error "Failed to execute script on proxy server"
|
||||
# Clean up remote script
|
||||
ssh -i ~/.ssh/itl-devs1 teenfuture@$proxy_server_addr "rm /tmp/$(basename $temp_script)" >/dev/null 2>&1 || true
|
||||
ssh -i ~/.ssh/itl-devs1 ${SERVER_USER}@$proxy_server_addr "rm /tmp/$(basename $temp_script)" >/dev/null 2>&1 || true
|
||||
rm -f "$temp_script"
|
||||
return 1
|
||||
fi
|
||||
@ -1548,47 +1183,6 @@ EOF
|
||||
|
||||
|
||||
|
||||
# Function to restart Docker Compose service
|
||||
restart_docker_compose() {
|
||||
local COMPOSE_DIR="/data/ssd/rvs-prxy/frps/"
|
||||
echo "Restarting Docker Compose service..."
|
||||
|
||||
# Change to the compose directory
|
||||
cd "${COMPOSE_DIR}" || {
|
||||
echo "Error: Could not change to directory ${COMPOSE_DIR}"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Stop the service
|
||||
echo "Stopping the service..."
|
||||
if [ -f "./stop.sh" ]; then
|
||||
./stop.sh
|
||||
else
|
||||
docker-compose -f docker-compose.app.yml down
|
||||
fi
|
||||
|
||||
# Start the service
|
||||
echo "Starting the service..."
|
||||
if [ -f "./start.sh" ]; then
|
||||
./start.sh
|
||||
else
|
||||
docker-compose -f docker-compose.app.yml up -d
|
||||
fi
|
||||
|
||||
# Wait a moment for the service to start
|
||||
sleep 3
|
||||
|
||||
# Show the logs
|
||||
echo "Showing the last 50 lines of logs:"
|
||||
docker logs --tail 50 frps_frps_1 2>/dev/null || docker logs --tail 50 "${COMPOSE_DIR##*/}_frps_1" 2>/dev/null || {
|
||||
echo "Warning: Could not retrieve logs for frps_frps_1. Trying alternative container names..."
|
||||
docker ps -a | grep frps
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo "Docker Compose service has been restarted."
|
||||
echo "You can view the logs with: docker logs --tail 50 frps_frps_1"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user