Skip to content

🚀 快速开始 (使用 Docker Compose)

推荐使用 Docker 和 Docker Compose 进行一键部署。

步骤 1: 准备 docker-compose.yaml

  1. 在一个合适的目录(例如 ~/danmuku)下,创建 docker-compose.yaml 文件和所需的文件夹 config,db-data
bash
mkdir -p ~/danmuku
cd ~/danmuku
mkdir -p db-data config
touch docker-compose.yaml
  1. 根据您选择的数据库,将以下内容之一复制到 docker-compose.yaml 文件中。

方案 A: 使用 MySQL (推荐)

yaml
version: "3.8"
services:
  mysql:
    image: mysql:8.1.0-oracle
    container_name: danmu-mysql
    restart: unless-stopped
    environment:
      # !!! 重要:请务必替换为您的强密码 !!!
      MYSQL_ROOT_PASSWORD: "your_strong_root_password"                  #数据库root密码
      MYSQL_DATABASE: "danmuapi"                                        #数据库名称
      MYSQL_USER: "danmuapi"                                            #数据库用户名
      MYSQL_PASSWORD: "your_strong_user_password"                       #数据库密码
      TZ: "Asia/Shanghai"
    volumes:
      - ./db-data:/var/lib/mysql
    command:
      - '--character-set-server=utf8mb4'
      - '--collation-server=utf8mb4_unicode_ci'
      - '--binlog_expire_logs_seconds=259200' # 自动清理超过3天的binlog日志
      - '--default-authentication-plugin=mysql_native_password' # 使用传统密码认证方式
    healthcheck:
      # 使用mysqladmin ping命令进行健康检查,通过环境变量引用密码
      test: ["CMD-SHELL", "mysqladmin ping -u$${MYSQL_USER} -p$${MYSQL_PASSWORD}"]
      interval: 5s
      timeout: 3s
      retries: 5
      start_period: 30s

    networks:
      - misaka-net

  danmu-app:
    image: l429609201/misaka_danmu_server:latest
    container_name: misaka-danmu-server
    restart: unless-stopped
    depends_on:
      mysql:
        condition: service_healthy
    environment:
      # 设置运行容器的用户和组ID,以匹配您宿主机的用户,避免挂载卷的权限问题。
      - PUID=1000
      - PGID=1000
      - UMASK=0022
      - TZ=Asia/Shanghai
      # --- 数据库连接配置 ---
      - DANMUAPI_DATABASE__TYPE=mysql                         # 数据库类型
      - DANMUAPI_DATABASE__HOST=mysql                         # 使用服务名
      - DANMUAPI_DATABASE__PORT=3306                          # 端口号
      - DANMUAPI_DATABASE__NAME=danmuapi                      # 数据库名称
      # !!! 重要:请使用上面mysql容器相同的用户名和密码 !!!
      - DANMUAPI_DATABASE__USER=danmuapi                      #数据库用户名
      - DANMUAPI_DATABASE__PASSWORD=your_strong_user_password #数据库密码
      # --- 初始管理员配置 ---
      - DANMUAPI_ADMIN__INITIAL_USER=admin
    volumes:
      - ./config:/app/config
    ports:
      - "7768:7768"
    networks:
      - misaka-net

networks:
  misaka-net:
    driver: bridge

方案 A-2: 使用 MySQL (小内存模式)

💡 适用场景: 适合内存有限的 VPS (如 512MB-1GB),通过优化 MySQL 配置减少内存占用。

yaml
version: "3.8"
services:
  mysql:
    image: mysql:8.1.0-oracle
    container_name: danmu-mysql
    restart: unless-stopped
    environment:
      # !!! 重要:请务必替换为您的强密码 !!!
      MYSQL_ROOT_PASSWORD: "your_strong_root_password"                  #数据库root密码
      MYSQL_DATABASE: "danmuapi"                                        #数据库名称
      MYSQL_USER: "danmuapi"                                            #数据库用户名
      MYSQL_PASSWORD: "your_strong_user_password"                       #数据库密码
      TZ: "Asia/Shanghai"
    volumes:
      - ./db-data:/var/lib/mysql
    command:
      - '--character-set-server=utf8mb4'
      - '--collation-server=utf8mb4_unicode_ci'
      - '--binlog_expire_logs_seconds=259200'
      - '--default-authentication-plugin=mysql_native_password'
      # --- 小内存优化配置 ---
      - '--innodb_buffer_pool_size=128M'           # InnoDB缓冲池大小 (默认128M,可根据内存调整)
      - '--innodb_log_file_size=32M'               # 日志文件大小
      - '--innodb_log_buffer_size=8M'              # 日志缓冲区大小
      - '--max_connections=50'                     # 最大连接数 (默认151,减少到50)
      - '--table_open_cache=64'                    # 表缓存 (默认4000,减少到64)
      - '--performance_schema=OFF'                 # 关闭性能监控 (节省内存)
      - '--innodb_flush_log_at_trx_commit=2'       # 日志刷新策略 (提升性能,略降安全性)
      - '--innodb_flush_method=O_DIRECT'           # 绕过操作系统缓存
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -u$${MYSQL_USER} -p$${MYSQL_PASSWORD}"]
      interval: 5s
      timeout: 3s
      retries: 5
      start_period: 30s
    networks:
      - misaka-net

  danmu-app:
    image: l429609201/misaka_danmu_server:latest
    container_name: misaka-danmu-server
    restart: unless-stopped
    depends_on:
      mysql:
        condition: service_healthy
    environment:
      - PUID=1000
      - PGID=1000
      - UMASK=0022
      - TZ=Asia/Shanghai
      # --- 数据库连接配置 ---
      - DANMUAPI_DATABASE__TYPE=mysql
      - DANMUAPI_DATABASE__HOST=mysql
      - DANMUAPI_DATABASE__PORT=3306
      - DANMUAPI_DATABASE__NAME=danmuapi
      # !!! 重要:请使用上面mysql容器相同的用户名和密码 !!!
      - DANMUAPI_DATABASE__USER=danmuapi
      - DANMUAPI_DATABASE__PASSWORD=your_strong_user_password
      # --- 初始管理员配置 ---
      - DANMUAPI_ADMIN__INITIAL_USER=admin
    volumes:
      - ./config:/app/config
    ports:
      - "7768:7768"
    networks:
      - misaka-net

networks:
  misaka-net:
    driver: bridge

方案 B: 使用 PostgreSQL 18 (可选)

yaml
version: "3.8"
services:
  postgres:
    image: postgres:18
    container_name: danmu-postgres
    restart: unless-stopped
    user: "1000:1000"
    environment:
      # !!! 重要:请务必替换为您的强密码 !!!
      POSTGRES_PASSWORD: "your_strong_postgres_password"               #数据库密码
      POSTGRES_USER: "danmuapi"                                        #数据库用户名
      POSTGRES_DB: "danmuapi"                                          #数据库名称
      TZ: "Asia/Shanghai"
    volumes:
      - ./db-data:/var/lib/postgresql                                  # PostgreSQL 18 挂载路径变更
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U danmuapi -d danmuapi"]
      interval: 5s
      timeout: 3s
      retries: 5
      start_period: 30s
    networks:
      - misaka-net

  danmu-app:
    image: l429609201/misaka_danmu_server:latest
    container_name: misaka-danmu-server
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      # 设置运行容器的用户和组ID,以匹配您宿主机的用户,避免挂载卷的权限问题。
      - PUID=1000
      - PGID=1000
      - UMASK=0022
      - TZ=Asia/Shanghai
      # --- 数据库连接配置 ---
      - DANMUAPI_DATABASE__TYPE=postgresql                              # 数据库类型
      - DANMUAPI_DATABASE__HOST=postgres                                # 使用服务名
      - DANMUAPI_DATABASE__PORT=5432                                    # 数据库端口
      - DANMUAPI_DATABASE__NAME=danmuapi                                # 数据库名称
      # !!! 重要:请使用上面postgres容器相同的用户名和密码 !!!
      - DANMUAPI_DATABASE__USER=danmuapi                                # 数据库用户名
      - DANMUAPI_DATABASE__PASSWORD=your_strong_postgres_password       # 数据库密码
      # --- 初始管理员配置 ---
      - DANMUAPI_ADMIN__INITIAL_USER=admin
    volumes:
      - ./config:/app/config
    ports:
      - "7768:7768"
    networks:
      - misaka-net

networks:
  misaka-net:
    driver: bridge

步骤 1-1: 拆分部署(可选)

💡 如果您希望分别管理数据库和应用容器,或者已有独立运行的数据库,可以选择拆分部署。

1-1-A:MySQL 数据库 compose 文件

创建 docker-compose-db.yaml

yaml
version: "3.8"
services:
  mysql:
    image: mysql:8.1.0-oracle
    container_name: danmu-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "your_strong_root_password"
      MYSQL_DATABASE: "danmuapi"
      MYSQL_USER: "danmuapi"
      MYSQL_PASSWORD: "your_strong_user_password"
      TZ: "Asia/Shanghai"
    volumes:
      - ./db-data:/var/lib/mysql
    command:
      - '--character-set-server=utf8mb4'
      - '--collation-server=utf8mb4_unicode_ci'
      - '--binlog_expire_logs_seconds=259200'
      - '--default-authentication-plugin=mysql_native_password'
    ports:
      - "3306:3306"  # 如需外部访问
    networks:
      - misaka-net

networks:
  misaka-net:
    driver: bridge

1-1-B:PostgreSQL 18 数据库 compose 文件

创建 docker-compose-db.yaml

yaml
version: "3.8"
services:
  postgres:
    image: postgres:18
    container_name: danmu-postgres
    restart: unless-stopped
    user: "1000:1000"
    environment:
      POSTGRES_PASSWORD: "your_strong_postgres_password"
      POSTGRES_USER: "danmuapi"
      POSTGRES_DB: "danmuapi"
      TZ: "Asia/Shanghai"
    volumes:
      - ./db-data:/var/lib/postgresql                # PostgreSQL 18 挂载路径变更
    ports:
      - "5432:5432"  # 如需外部访问
    networks:
      - misaka-net

networks:
  misaka-net:
    driver: bridge

1-1-C:连接已有数据库

如果您已有独立运行的数据库,可跳过上面的数据库 compose,直接使用下方的弹幕库 compose 并修改数据库连接信息。

� 详细的数据库配置操作请参考:连接已有数据库


弹幕库应用 compose 文件

创建 docker-compose-app.yaml

yaml
version: "3.8"
services:
  danmu-app:
    image: l429609201/misaka_danmu_server:latest
    container_name: misaka-danmu-server
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - UMASK=0022
      - TZ=Asia/Shanghai
      # ============ 数据库连接配置 ============
      # --- 如果使用 MySQL (1-1-A),使用以下配置 ---
      - DANMUAPI_DATABASE__TYPE=mysql
      - DANMUAPI_DATABASE__HOST=danmu-mysql          # MySQL 容器名
      - DANMUAPI_DATABASE__PORT=3306
      # --- 如果使用 PostgreSQL 18 (1-1-B),改用以下配置 ---
      # - DANMUAPI_DATABASE__TYPE=postgresql
      # - DANMUAPI_DATABASE__HOST=danmu-postgres     # PostgreSQL 容器名
      # - DANMUAPI_DATABASE__PORT=5432
      # --- 如果使用已有数据库 (1-1-C),填写实际的数据库地址 ---
      # - DANMUAPI_DATABASE__HOST=192.168.1.100      # 数据库服务器IP
      # ==========================================
      - DANMUAPI_DATABASE__NAME=danmuapi
      - DANMUAPI_DATABASE__USER=danmuapi
      - DANMUAPI_DATABASE__PASSWORD=your_strong_user_password  # 与数据库密码一致
      - DANMUAPI_ADMIN__INITIAL_USER=admin
    volumes:
      - ./config:/app/config
    ports:
      - "7768:7768"
    networks:
      - misaka-net

networks:
  misaka-net:
    external: true
    name: danmuku_misaka-net   # 需与数据库的网络名一致

启动步骤

bash
# 1. 先启动数据库(选择 1-1-A 或 1-1-B 其中一个)
docker-compose -f docker-compose-db.yaml up -d

# 2. 等待数据库启动完成后(约30秒),再启动应用
docker-compose -f docker-compose-app.yaml up -d

步骤 2: 修改配置并启动

  1. 重要: 打开 docker-compose.yaml 文件,将所有密码替换为您自己的安全密码。

  2. (可选) 使用 GitHub 镜像源: 如果拉取 Docker Hub 镜像时遇到网络问题,可将镜像地址替换为:

    yaml
    image: ghcr.io/l429609201/misaka_danmu_server:latest
  3. 启动应用:

bash
docker-compose up -d

步骤 3: 访问和配置

  • 访问Web UI: 打开浏览器,访问 http://<您的服务器IP>:7768
  • 初始登录:
    • 用户名: admin
    • 密码: 首次启动时会在容器日志中生成,使用 docker logs misaka-danmu-server 查看
  • 开始使用: 登录后请先修改密码,然后配置:

步骤 4: 环境变量说明

数据库配置

环境变量说明默认值
DANMUAPI_DATABASE__TYPE数据库类型 (mysqlpostgresql)-
DANMUAPI_DATABASE__HOST数据库主机地址-
DANMUAPI_DATABASE__PORT数据库端口3306 / 5432
DANMUAPI_DATABASE__NAME数据库名称-
DANMUAPI_DATABASE__USER数据库用户名-
DANMUAPI_DATABASE__PASSWORD数据库密码-

其他配置

环境变量说明默认值
DANMUAPI_ADMIN__INITIAL_USER初始管理员用户名admin
PUID运行容器的用户 ID1000
PGID运行容器的组 ID1000
TZ时区Asia/Shanghai

📚 下一步

基于 AGPL-3.0 许可发布