Ctrl K
ComunidadGuías…

use-sqlite.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/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"