You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.3 KiB
Bash
74 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# One-click deployment for test environments (WS mode, no forced WSS).
|
|
#
|
|
# Usage:
|
|
# bash deploy/deploy_test_ws.sh
|
|
#
|
|
# Optional overrides:
|
|
# CONTAINER_NAME=onlinemsgserver IMAGE_NAME=onlinemsgserver:latest HOST_PORT=13173 bash deploy/deploy_test_ws.sh
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
|
|
CONTAINER_NAME="${CONTAINER_NAME:-onlinemsgserver}"
|
|
IMAGE_NAME="${IMAGE_NAME:-onlinemsgserver:latest}"
|
|
HOST_PORT="${HOST_PORT:-13173}"
|
|
|
|
for cmd in openssl docker ipconfig route awk base64 tr; do
|
|
if ! command -v "${cmd}" >/dev/null 2>&1; then
|
|
echo "Missing required command: ${cmd}"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
DEFAULT_IFACE="$(route get default 2>/dev/null | awk '/interface:/{print $2; exit}')"
|
|
LAN_IP=""
|
|
if [ -n "${DEFAULT_IFACE}" ]; then
|
|
LAN_IP="$(ipconfig getifaddr "${DEFAULT_IFACE}" 2>/dev/null || true)"
|
|
fi
|
|
|
|
if [ -z "${LAN_IP}" ]; then
|
|
LAN_IP="$(ipconfig getifaddr en0 2>/dev/null || true)"
|
|
fi
|
|
if [ -z "${LAN_IP}" ]; then
|
|
LAN_IP="$(ipconfig getifaddr en1 2>/dev/null || true)"
|
|
fi
|
|
if [ -z "${LAN_IP}" ]; then
|
|
LAN_IP="127.0.0.1"
|
|
fi
|
|
|
|
mkdir -p "${ROOT_DIR}/deploy/keys"
|
|
|
|
# Generate service RSA key only if missing.
|
|
if [ ! -f "${ROOT_DIR}/deploy/keys/server_rsa_pkcs8.b64" ]; then
|
|
echo "Generating service RSA key..."
|
|
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out "${ROOT_DIR}/deploy/keys/server_rsa.pem"
|
|
openssl pkcs8 -topk8 -inform PEM \
|
|
-in "${ROOT_DIR}/deploy/keys/server_rsa.pem" \
|
|
-outform DER -nocrypt \
|
|
-out "${ROOT_DIR}/deploy/keys/server_rsa_pkcs8.der"
|
|
base64 < "${ROOT_DIR}/deploy/keys/server_rsa_pkcs8.der" | tr -d '\n' > "${ROOT_DIR}/deploy/keys/server_rsa_pkcs8.b64"
|
|
fi
|
|
|
|
echo "Building image: ${IMAGE_NAME}"
|
|
docker build -t "${IMAGE_NAME}" "${ROOT_DIR}"
|
|
|
|
echo "Restarting container: ${CONTAINER_NAME}"
|
|
docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1 || true
|
|
docker run -d --name "${CONTAINER_NAME}" --restart unless-stopped \
|
|
-p "${HOST_PORT}:13173" \
|
|
-v "${ROOT_DIR}/deploy/keys:/app/keys:ro" \
|
|
-e REQUIRE_WSS=false \
|
|
-e SERVER_PRIVATE_KEY_PATH=/app/keys/server_rsa_pkcs8.b64 \
|
|
"${IMAGE_NAME}"
|
|
|
|
echo "Container logs (tail 30):"
|
|
docker logs --tail 30 "${CONTAINER_NAME}"
|
|
|
|
echo
|
|
echo "Done."
|
|
echo "Frontend URL (LAN): ws://${LAN_IP}:${HOST_PORT}/"
|
|
echo "Frontend URL (local): ws://localhost:${HOST_PORT}/"
|