use-sqlite.sh
Rama main · réplica de lectura del repositorio original.
#!/bin/bash
# 切换到 SQLite 数据库(避免 MySQL 问题)
INSTALL_DIR="/opt/dashgo"
echo "=========================================="
echo " 切换到 SQLite 数据库"
echo "=========================================="
echo ""
if [ ! -d "$INSTALL_DIR" ]; then
echo "❌ 安装目录不存在: $INSTALL_DIR"
exit 1
fi
cd "$INSTALL_DIR"
echo "1. 停止服务..."
docker compose down
echo ""
echo "2. 备份当前配置..."
cp configs/config.yaml configs/config.yaml.mysql.bak 2>/dev/null || true
cp docker-compose.yaml docker-compose.yaml.mysql.bak 2>/dev/null || true
echo ""
echo "3. 创建 SQLite 配置..."
# 生成随机密码
REDIS_PASS=$(openssl rand -base64 16 | tr -dc 'a-zA-Z0-9' | head -c 16)
JWT_SECRET=$(openssl rand -base64 32)
NODE_TOKEN=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32)
cat > configs/config.yaml << EOF
app:
name: "dashGO"
mode: "release"
listen: ":8080"
database:
driver: "sqlite"
dsn: "data/dashgo.db"
redis:
host: "redis"
port: 6379
password: "${REDIS_PASS}"
db: 0
jwt:
secret: "${JWT_SECRET}"
expire_hour: 24
node:
token: "${NODE_TOKEN}"
push_interval: 60
pull_interval: 60
enable_sync: false
mail:
host: "smtp.example.com"
port: 587
username: ""
password: ""
from_name: "dashGO"
from_addr: "noreply@example.com"
encryption: "tls"
telegram:
bot_token: ""
chat_id: ""
admin:
email: "admin@example.com"
password: "admin123456"
EOF
echo ""
echo "4. 创建简化的 Docker Compose..."
cat > docker-compose.yaml << 'EOF'
services:
dashgo:
build: .
container_name: dashgo
ports:
- "8080:8080"
volumes:
- ./configs/config.yaml:/app/configs/config.yaml
- ./data:/app/data
- ./web/dist:/app/web/dist
depends_on:
- redis
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
networks:
- dashgo-net
redis:
image: redis:7-alpine
container_name: dashgo-redis
command: redis-server --requirepass ${REDIS_PASSWORD:-}
volumes:
- redis_data:/data
ports:
- "6379:6379"
restart: unless-stopped
networks:
- dashgo-net
nginx:
image: nginx:alpine
container_name: dashgo-nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/nginx/ssl
depends_on:
- dashgo
restart: unless-stopped
networks:
- dashgo-net
volumes:
redis_data:
networks:
dashgo-net:
driver: bridge
EOF
# 更新 .env
cat > .env << EOF
REDIS_PASSWORD=${REDIS_PASS}
JWT_SECRET=${JWT_SECRET}
NODE_TOKEN=${NODE_TOKEN}
EOF
echo ""
echo "5. 创建数据目录..."
mkdir -p data
echo ""
echo "6. 启动服务..."
docker compose up -d --build
echo ""
echo "7. 等待服务启动..."
sleep 10
echo ""
echo "8. 检查状态..."
docker compose ps
echo ""
echo "=========================================="
echo " 切换完成!"
echo "=========================================="
echo ""
echo "✓ 现在使用 SQLite 数据库"
echo "✓ 数据库文件: $INSTALL_DIR/data/dashgo.db"
echo ""
echo "重要信息:"
echo " Redis 密码: ${REDIS_PASS}"
echo " 节点 Token: ${NODE_TOKEN}"
echo ""
echo "默认管理员:"
echo " 邮箱: admin@example.com"
echo " 密码: admin123456"
echo ""
echo "如果需要恢复 MySQL:"
echo " cp configs/config.yaml.mysql.bak configs/config.yaml"
echo " cp docker-compose.yaml.mysql.bak docker-compose.yaml"
echo " docker compose up -d --build"
echo ""
echo "查看日志:"
echo " docker compose logs -f"