🚀 快速开始 (使用 Docker Compose)
推荐使用 Docker 和 Docker Compose 进行一键部署。
步骤 1: 准备 docker-compose.yaml
- 在一个合适的目录(例如
~/danmuku)下,创建docker-compose.yaml文件和所需的文件夹config,db-data。
bash
mkdir -p ~/danmuku
cd ~/danmuku
mkdir -p db-data config
touch docker-compose.yaml- 根据您选择的数据库,将以下内容之一复制到
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: bridge1-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: bridge1-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: 修改配置并启动
重要: 打开
docker-compose.yaml文件,将所有密码替换为您自己的安全密码。(可选) 使用 GitHub 镜像源: 如果拉取 Docker Hub 镜像时遇到网络问题,可将镜像地址替换为:
yamlimage: ghcr.io/l429609201/misaka_danmu_server:latest启动应用:
bash
docker-compose up -d步骤 3: 访问和配置
- 访问Web UI: 打开浏览器,访问
http://<您的服务器IP>:7768 - 初始登录:
- 用户名:
admin - 密码: 首次启动时会在容器日志中生成,使用
docker logs misaka-danmu-server查看
- 用户名:
- 开始使用: 登录后请先修改密码,然后配置:
步骤 4: 环境变量说明
数据库配置
| 环境变量 | 说明 | 默认值 |
|---|---|---|
DANMUAPI_DATABASE__TYPE | 数据库类型 (mysql 或 postgresql) | - |
DANMUAPI_DATABASE__HOST | 数据库主机地址 | - |
DANMUAPI_DATABASE__PORT | 数据库端口 | 3306 / 5432 |
DANMUAPI_DATABASE__NAME | 数据库名称 | - |
DANMUAPI_DATABASE__USER | 数据库用户名 | - |
DANMUAPI_DATABASE__PASSWORD | 数据库密码 | - |
其他配置
| 环境变量 | 说明 | 默认值 |
|---|---|---|
DANMUAPI_ADMIN__INITIAL_USER | 初始管理员用户名 | admin |
PUID | 运行容器的用户 ID | 1000 |
PGID | 运行容器的组 ID | 1000 |
TZ | 时区 | Asia/Shanghai |
📚 下一步
- 📱 客户端配置 - 配置播放器弹幕接口
- 🎬 元数据源配置 - 配置 TMDB, TVDB 等 API 密钥
- 🤖 AI 功能配置 - 配置 AI 智能匹配功能
- 🔗 Webhook 配置 - 配置 Emby/Jellyfin/Plex 自动化
