| set -euo pipefail | |
| # On a cloud Ubuntu/Debian VM with Docker: | |
| # git clone https://huggingface.co/manus4oHER/metin2-private-server | |
| # cd metin2-private-server/cloud && bash deploy.sh | |
| # Or: bash deploy.sh <PUBLIC_IP> <DB_PASSWORD> | |
| PUBLIC_IP="${1:-$(curl -4 -s ifconfig.me || hostname -I | awk '{print $1}')}" | |
| DB_PASS="${2:-$(openssl rand -hex 12)}" | |
| ROOT_DIR="$(cd "$(dirname "$0")" && pwd)" | |
| cd "$ROOT_DIR" | |
| if ! command -v docker >/dev/null 2>&1; then | |
| echo "Install Docker first: https://docs.docker.com/engine/install/" | |
| exit 1 | |
| fi | |
| cat > .env <<EOF | |
| AUTH_SERVER_PORT=11002 | |
| AUTH_SERVER_ADDRESS=0.0.0.0 | |
| GAME_SERVER_PORT=13001 | |
| GAME_SERVER_ADDRESS=0.0.0.0 | |
| PUBLIC_IP=${PUBLIC_IP} | |
| LOG_LEVEL=info | |
| DB_PORT=3306 | |
| DB_HOST=database | |
| DB_ROOT_PASSWORD=${DB_PASS} | |
| AUTH_DB_DATABASE_NAME=auth | |
| GAME_DB_DATABASE_NAME=game | |
| DB_USER=root | |
| CACHE_PORT=6379 | |
| CACHE_HOST=cache | |
| EOF | |
| echo "PUBLIC_IP=${PUBLIC_IP}" | |
| echo "DB password stored in .env" | |
| docker compose up -d --build | |
| docker compose ps | |
| echo "Auth: ${PUBLIC_IP}:11002 Game: ${PUBLIC_IP}:13001 login admin/admin" | |