Initial commit: WordLoop 单词学习应用
Vue 前端 + FastAPI 后端,含部署脚本与词典数据。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Executable
+46
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
# 交互式辅助:创建 Cloudflare Tunnel 并绑定 w.tkmind.cn
|
||||
# 需已安装 cloudflared 且可访问 Cloudflare 账号
|
||||
set -e
|
||||
|
||||
HOSTNAME="${WORDLOOP_HOSTNAME:-w.tkmind.cn}"
|
||||
TUNNEL_NAME="${WORDLOOP_TUNNEL_NAME:-wordloop}"
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
CF_DIR="$ROOT/deploy/cloudflared"
|
||||
|
||||
if ! command -v cloudflared >/dev/null 2>&1; then
|
||||
echo "请先安装 cloudflared: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$CF_DIR"
|
||||
|
||||
echo ">>> 1/4 登录 Cloudflare(将打开浏览器)..."
|
||||
cloudflared tunnel login
|
||||
|
||||
echo ">>> 2/4 创建隧道: $TUNNEL_NAME"
|
||||
cloudflared tunnel create "$TUNNEL_NAME" || true
|
||||
|
||||
CRED=$(ls -1 "$HOME/.cloudflared"/*.json 2>/dev/null | head -1)
|
||||
if [ -z "$CRED" ]; then
|
||||
echo "未找到 credentials JSON,请检查 ~/.cloudflared/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CONFIG="$CF_DIR/config.yml"
|
||||
if [ ! -f "$CONFIG" ]; then
|
||||
sed -e "s|/path/to/.cloudflared/<TUNNEL-UUID>.json|$CRED|" \
|
||||
-e "s|hostname: w.tkmind.cn|hostname: $HOSTNAME|" \
|
||||
"$CF_DIR/config.yml.example" > "$CONFIG"
|
||||
echo "已生成 $CONFIG"
|
||||
else
|
||||
echo "保留已有 $CONFIG"
|
||||
fi
|
||||
|
||||
echo ">>> 3/4 DNS: $HOSTNAME -> 隧道 $TUNNEL_NAME"
|
||||
cloudflared tunnel route dns "$TUNNEL_NAME" "$HOSTNAME"
|
||||
|
||||
echo ">>> 4/4 请先确保 Nginx 在 127.0.0.1:8080 提供 WordLoop,然后运行:"
|
||||
echo " cloudflared tunnel --config $CONFIG run"
|
||||
echo ""
|
||||
echo "生产环境可复制 systemd 单元:deploy/systemd/cloudflared-wordloop.service"
|
||||
Reference in New Issue
Block a user