3x-ui/DockerInit.sh

55 lines
1.8 KiB
Bash
Executable file

#!/bin/sh
# POSIX-compatible script to download Xray binary and GeoIP/GeoSite databases
set -eu
XRAY_VERSION="v25.6.8"
BASE_URL="https://github.com/XTLS/Xray-core/releases/download/${XRAY_VERSION}"
DAT_DIR="build/bin"
ARCH="${1:-amd64}" # Default to amd64 if not provided
# Map architecture
case "$ARCH" in
amd64) ARCH_SUFFIX="64"; FNAME="amd64" ;;
i386) ARCH_SUFFIX="32"; FNAME="i386" ;;
armv8|arm64|aarch64) ARCH_SUFFIX="arm64-v8a"; FNAME="arm64" ;;
armv7|arm|arm32) ARCH_SUFFIX="arm32-v7a"; FNAME="arm32" ;;
armv6) ARCH_SUFFIX="arm32-v6"; FNAME="armv6" ;;
*) ARCH_SUFFIX="64"; FNAME="amd64" ;;
esac
echo "Selected architecture: $ARCH$ARCH_SUFFIX$FNAME"
# Create directory
mkdir -p "$DAT_DIR"
cd "$DAT_DIR"
# Download and unpack Xray
XRAY_ZIP="Xray-linux-${ARCH_SUFFIX}.zip"
echo "Downloading Xray: $XRAY_ZIP"
wget -q "${BASE_URL}/${XRAY_ZIP}"
unzip -q "$XRAY_ZIP"
rm -f "$XRAY_ZIP" geoip.dat geosite.dat
mv xray "xray-linux-${FNAME}"
chmod +x "xray-linux-${FNAME}"
echo "Xray extracted and renamed"
# Download primary databases
echo "Downloading official geoip/geosite..."
wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
# Download region-specific datasets
download_variant() {
REGION="$1"
BASE_URL="$2"
echo "Downloading $REGION GeoIP/GeoSite..."
wget -q -O "geoip_${REGION}.dat" "${BASE_URL}/geoip.dat"
wget -q -O "geosite_${REGION}.dat" "${BASE_URL}/geosite.dat"
}
download_variant "IR" "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download"
download_variant "RU" "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download"
echo "All files downloaded successfully."
cd ../../