BookStack Docker 安装指南

Docker 安装 BookStack 完整教程

简介

BookStack 是一个简单、自托管的、易于使用的平台,用于组织和存储信息。本教程将指导你使用 Docker Compose 安装 BookStack。

环境要求

  • Docker
  • Docker Compose
  • 可访问互联网的服务器
  • 至少 1GB 内存

安装步骤

1. 准备工作

首先创建必要的目录结构:

mkdir -p bookstack/data/{app,db}
cd bookstack

2. 创建 Docker Compose 配置文件

使用以下命令创建 docker-compose.yml 文件:

cat > docker-compose.yml << 'EOL'
---
services:
  bookstack:
    image: ghcr.io/linuxserver/bookstack
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=https://your-domain.com    # 替换为你的域名
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USERNAME=bookstack
      - DB_PASSWORD=bookstackpass
      - DB_DATABASE=bookstackapp
    volumes:
      - ./data/app:/config
    ports:
      - 6875:80
    restart: unless-stopped
    depends_on:
      - bookstack_db

  bookstack_db:
    image: ghcr.io/linuxserver/mariadb
    container_name: bookstack_db
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=bookstackpass
      - TZ=Asia/Shanghai
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=bookstackpass
    volumes:
      - ./data/db:/config
    restart: unless-stopped
EOL

3. 生成应用密钥

docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey

记下生成的密钥,它会像这样:base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=

4. 更新配置文件添加密钥

将生成的密钥添加到 BookStack 服务的环境变量中:

cat > docker-compose.yml << 'EOL'
---
services:
  bookstack:
    image: ghcr.io/linuxserver/bookstack
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=https://your-domain.com    # 替换为你的域名
      - APP_KEY=base64:YOUR_GENERATED_KEY   # 添加这行,使用上一步生成的密钥
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USERNAME=bookstack
      - DB_PASSWORD=bookstackpass
      - DB_DATABASE=bookstackapp
    volumes:
      - ./data/app:/config
    ports:
      - 6875:80
    restart: unless-stopped
    depends_on:
      - bookstack_db

  bookstack_db:
    image: ghcr.io/linuxserver/mariadb
    container_name: bookstack_db
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=bookstackpass
      - TZ=Asia/Shanghai
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=bookstackpass
    volumes:
      - ./data/db:/config
    restart: unless-stopped
EOL

5. 启动服务

# 启动服务
docker compose up -d

# 查看日志
docker compose logs -f

6. Nginx 反向代理配置

如果你使用 Nginx 作为反向代理,可以使用以下配置:

location / {
    proxy_pass http://127.0.0.1:6875;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_connect_timeout 300s;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;
}

7. 初始访问

  • 访问地址:https://your-domain.com
  • 默认登录信息:
  • 邮箱:admin@admin.com
  • 密码:password

⚠️ 请在首次登录后立即修改默认密码!

维护命令

查看日志

docker compose logs -f

重启服务

docker compose restart

停止服务

docker compose down

更新镜像

docker compose pull
docker compose up -d

备份数据

# 停止服务
docker compose down

# 备份数据目录
tar -czf bookstack-backup-$(date +%Y%m%d).tar.gz data/

# 重启服务
docker compose up -d

常见问题

1. 500 内部服务器错误

  • 检查 APP_URL 设置是否正确
  • 确认数据库连接信息
  • 检查 APP_KEY 是否正确设置

2. 数据库连接错误

  • 确认数据库服务是否正常运行
  • 验证数据库用户名和密码
  • 检查数据库主机名是否正确

3. 权限问题

# 修正数据目录权限
chown -R 1000:1000 data/
chmod -R 755 data/

安全建议

  1. 修改默认管理员密码
  2. 使用强密码保护数据库
  3. 启用 HTTPS
  4. 定期备份数据
  5. 及时更新系统

参考链接

许可

本教程采用 MIT 许可证。欢迎分享和改进!

By 行政