dev 分支暂存

This commit is contained in:
2026-05-16 08:26:56 +08:00
parent 58c8caa570
commit eb4129176c
71 changed files with 8474 additions and 214 deletions
+188
View File
@@ -0,0 +1,188 @@
喵~ 当然可以!这是个很棒的方案!(兴奋地竖起尾巴) 通过 SSH 隧道将远程服务器的 Docker 服务映射到本地,这样你就能在 Termux 上愉快地使用这些服务啦!
## 🔧 配置步骤
### 1️⃣ 在服务器上部署 Docker
先把你的 `docker-compose.dev.yml` 上传到服务器并启动:
```bash
# 在服务器上
scp docker-compose.dev.yml user@your-server:~/
ssh user@your-server
docker compose -f docker-compose.dev.yml up -d
```
### 2️⃣ 创建 SSH 隧道脚本
在你的 Termux 本地,创建一个隧道脚本 `tunnel.sh`
```bash
#!/bin/bash
# SSH 隧道映射 - 开发基础设施
# 用法: bash tunnel.sh [start|stop|status]
SERVER="user@your-server.com" # 改成你的服务器地址
PORTS=(
"5432:5432" # PostgreSQL
"6379:6379" # Redis
"6333:6333" # Qdrant (gRPC)
"6334:6334" # Qdrant (HTTP)
"9000:9000" # MinIO API
"9001:9001" # MinIO Console
"4222:4222" # NATS
"8222:8222" # NATS HTTP
)
case "$1" in
start)
echo "🔌 启动 SSH 隧道..."
# 构建端口转发参数
ARGS=""
for port in "${PORTS[@]}"; do
ARGS="$ARGS -L $port"
done
# 后台运行 SSH 隧道
ssh -N $ARGS $SERVER &
echo $! > .tunnel_pid
echo "✅ 隧道已启动 (PID: $(cat .tunnel_pid))"
;;
stop)
if [ -f .tunnel_pid ]; then
kill $(cat .tunnel_pid) 2>/dev/null
rm .tunnel_pid
echo "🛑 隧道已停止"
else
echo "❌ 没有运行中的隧道"
fi
;;
status)
if [ -f .tunnel_pid ] && kill -0 $(cat .tunnel_pid) 2>/dev/null; then
echo "✅ 隧道运行中 (PID: $(cat .tunnel_pid))"
else
echo "❌ 隧道未运行"
fi
;;
*)
echo "用法: $0 [start|stop|status]"
;;
esac
```
### 3️⃣ 更专业的方案:使用 autossh 自动重连
```bash
# 安装 autossh
pkg install autossh
# 创建 autossh 隧道脚本
cat > auto-tunnel.sh << 'EOF'
#!/bin/bash
SERVER="user@your-server.com"
# 使用 autossh 自动重连
autossh -M 0 \
-o "ServerAliveInterval=30" \
-o "ServerAliveCountMax=3" \
-o "ExitOnForwardFailure=yes" \
-N \
-L 5432:localhost:5432 \
-L 6379:localhost:6379 \
-L 6333:localhost:6333 \
-L 6334:localhost:6334 \
-L 9000:localhost:9000 \
-L 9001:localhost:9001 \
-L 4222:localhost:4222 \
-L 8222:localhost:8222 \
$SERVER
EOF
chmod +x auto-tunnel.sh
```
### 4️⃣ 配置 SSH 免密登录
为了更方便,设置 SSH 密钥:
```bash
# 生成密钥
ssh-keygen -t ed25519
# 复制到服务器
ssh-copy-id user@your-server.com
# 或者手动复制
cat ~/.ssh/id_ed25519.pub | ssh user@your-server.com "cat >> ~/.ssh/authorized_keys"
```
### 5️⃣ 高级用法:配合 tmux 持久运行
```bash
# 安装 tmux
pkg install tmux
# 在 tmux 会话中运行隧道
tmux new -s docker-tunnel
./auto-tunnel.sh
# Ctrl+B, D 分离会话
# 重新连接
tmux attach -t docker-tunnel
```
### 6️⃣ 一键启动脚本
创建一个完整的 `start-dev.sh`
```bash
#!/bin/bash
echo "🐱 Cyrene AI 开发环境启动脚本"
# 检查 SSH 连接
echo "🔍 检查服务器连接..."
ssh -o ConnectTimeout=5 user@your-server.com "echo '✅ 服务器连接正常'" || {
echo "❌ 无法连接服务器"
exit 1
}
# 检查 Docker 服务
echo "🔍 检查 Docker 服务..."
ssh user@your-server.com "docker compose -f docker-compose.dev.yml ps" || {
echo "❌ Docker 服务未运行,正在启动..."
ssh user@your-server.com "cd ~ && docker compose -f docker-compose.dev.yml up -d"
}
# 启动隧道
echo "🔌 启动 SSH 隧道..."
screen -dmS docker-tunnel ./auto-tunnel.sh
echo "✅ 环境就绪!"
echo "📊 服务列表:"
echo " PostgreSQL: localhost:5432"
echo " Redis: localhost:6379"
echo " Qdrant: localhost:6333"
echo " MinIO API: localhost:9000"
echo " MinIO Web: localhost:9001"
echo " NATS: localhost:4222"
chmod +x start-dev.sh
```
## 🎯 使用方式
```bash
# 启动所有服务
./start-dev.sh
# 或者手动
./tunnel.sh start
```
这样就完美解决 Termux 权限问题了!而且服务器性能更好,还能随时随地从本地连接开发环境呢!(开心地转圈圈) 🌟🐱