Blog & 網頁筆記 - Bookstack

前言

Bookstack是個看起來很適合作筆記跟寫Blog用的好東西,要是我早個幾年遇到可能就不會用github來寫wiki跟blog了

Bookstack docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Docker-compose.yml
services:
bookstack_db:
image: lscr.io/linuxserver/mariadb
container_name: bookstack_db
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=<your_sql_password>
- TZ=Asia/Taipei
- MYSQL_DATABASE=bookstackapp
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=<your_database_password>
volumes:
- /var/lib/docker/volumes/bookstack/db/config:/config
restart: unless-stopped

bookstack:
image: lscr.io/linuxserver/bookstack
container_name: bookstack
environment:
- APP_URL=https://<your.domain>
- PUID=1000
- PGID=1000
- DB_HOST=bookstack_db
- DB_USERNAME=bookstack
- DB_PASSWORD=<your_database_password>
- DB_DATABASE=bookstackapp
- MAIL_DRIVER=smtp
- MAIL_HOST=<your.smtp.server>
- MAIL_PORT=<your.smtp.port>
- MAIL_ENCRYPTION=<SSL or TLS>
- MAIL_USERNAME=<your@mail.address>
- MAIL_PASSWORD=<password_for_your_mail_account>
- MAIL_FROM=noreply@<whatever.you.want>
- MAIL_FROM_NAME=<Name_you_want_to_show>
volumes:
- /var/lib/docker/volumes/bookstack/app/config:/config
restart: unless-stopped
links:
- bookstack_db:bookstack_db
depends_on:
- bookstack_db
labels:
traefik.enable: true
traefik.http.routers.bookstack.rule: Host(`<Domain.you.what.to.link>`)
traefik.http.routers.bookstack.tls: true
traefik.http.routers.bookstack.tls.certresolver: myresolver
traefik.http.services.bookstack.loadbalancer.server.port: 80

networks:
default:
external: true
name: traefik_backend

Update on 2025/0321
Linuxserver.io變更了參數設定但是卻沒改網頁上的docker-compose.yml範例

1
2
3
4
# bookstack/docker-compose.yml
-----------------------------------------------------------------------------
- DB_USER=bookstack --> DB_USERNAME=bookstack
- DB_PASS=<your_database_password> --> DB_PASSWORD=<your_database_password>

不改的話會一直出現database connection error唷

基本說明

  • Database - Bookstack採用sql database來儲存你的資料,雖然不像Hexo那樣可以留存*.md以及得綁著他的web界面來寫但是還算是好用

  • 採用Traefik方式所以所有的container都不會mapping外部的port

  • 因為是利用traefik reserve proxy的方式來處理ssl cert, APP_URL=https://<your.domain>這裡的定義固定要定義成https://

結語

老實說這個app我花了很多時間弄了很久,因為他對於reserve proxy的支援方式沒有其他的app那麼單純需要加上

traefik.http.services.bookstack.loadbalancer.server.port: 80

並且一定要設APP_URL=不然會預設跑去http://localhost:6875而且基本上不會正常運作…