Outline Wiki + Keycloak Docker 一鍵部署

使用 Docker Compose 快速部署 Outline Wiki 搭配 Keycloak 身份驗證,支援自訂用戶管理與自動 SSL 憑證

專案簡介

Outline Docker 提供一鍵部署 Outline Wiki v1.4 搭配 Keycloak 身份驗證的解決方案,讓你可以快速建立自己的團隊知識庫。

特色

  • Outline Wiki v1.4 - 現代化團隊知識庫
  • Keycloak - 自建身份驗證,支援任意 Email 登入
  • 自動 SSL - Let’s Encrypt 憑證
  • 一鍵部署 - 互動式安裝腳本

架構

1
2
3
4
5
Internet → Nginx (80/443)
              ├── wiki.example.com → Outline (3000)
              └── auth.example.com → Keycloak (8080)
                    PostgreSQL + Redis

前置需求

  • Docker 和 Docker Compose
  • 兩個網域(例如 wiki.example.comauth.example.com
  • 防火牆開放 port 80 和 443

快速開始

1. 下載專案

1
2
git clone https://github.com/astroicers/outline-docker.git
cd outline-docker

2. 執行安裝腳本

1
./setup.sh

腳本會請你輸入:

  • Wiki 網域(例如 wiki.example.com
  • Keycloak 網域(例如 auth.example.com
  • Email(用於 SSL 憑證)
  • 用戶資訊(Email 和名稱)

3. 設定 DNS

將你的兩個網域指向伺服器 IP:

  • wiki.example.com → 你的 IP
  • auth.example.com → 你的 IP

4. 取得 SSL 憑證

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 啟動基礎服務
docker compose up -d postgres redis nginx

# 建立 Keycloak 資料庫
docker compose exec postgres createdb -U outline keycloak

# 取得 SSL 憑證
docker run --rm \
  -v $(pwd)/nginx/certs:/etc/letsencrypt \
  -v $(pwd)/nginx/www:/var/www/certbot \
  certbot/certbot certonly --webroot \
  -w /var/www/certbot \
  -d wiki.example.com -d auth.example.com \
  --email your@email.com --agree-tos --non-interactive

5. 啟動所有服務

1
2
3
4
5
# 切換到 SSL 設定
cp nginx/conf.d/outline.conf.ssl nginx/conf.d/outline.conf

# 啟動所有服務
docker compose up -d

完成後訪問 https://wiki.example.com,使用 Keycloak 登入。

常用指令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 服務管理
docker compose up -d          # 啟動
docker compose down           # 停止
docker compose restart        # 重啟
docker compose ps             # 狀態

# 查看日誌
docker compose logs -f outline
docker compose logs -f keycloak
docker compose logs -f nginx

# 資料庫操作
docker compose exec postgres psql -U outline

備份與還原

備份

1
2
3
4
5
6
7
8
9
# PostgreSQL(包含 Outline 和 Keycloak 資料)
docker compose exec postgres pg_dump -U outline outline > outline-backup.sql
docker compose exec postgres pg_dump -U outline keycloak > keycloak-backup.sql

# 上傳的檔案
tar -czvf data-backup.tar.gz data/

# 環境變數
cp .env .env.backup

還原

1
2
3
cat outline-backup.sql | docker compose exec -T postgres psql -U outline outline
cat keycloak-backup.sql | docker compose exec -T postgres psql -U outline keycloak
tar -xzvf data-backup.tar.gz

用戶管理

Keycloak 管理後台

訪問 https://auth.example.com/admin,使用 setup.sh 產生的 admin 密碼登入。

新增用戶

  1. 登入 Keycloak 管理後台
  2. 選擇 Realm:outline
  3. 左側選單 → Users → Add user
  4. 填入 Email、名稱
  5. Credentials 標籤設定密碼

SSL 憑證更新

Let’s Encrypt 憑證 90 天到期,建議設定 crontab 自動更新:

1
2
3
4
5
6
0 0 1 * * cd /path/to/outline-docker && \
  docker run --rm \
    -v $(pwd)/nginx/certs:/etc/letsencrypt \
    -v $(pwd)/nginx/www:/var/www/certbot \
    certbot/certbot renew && \
  docker compose exec nginx nginx -s reload

目錄結構

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
outline-docker/
├── docker-compose.yml        # 服務定義
├── .env                      # 環境變數(敏感)
├── .env.example              # 環境變數範例
├── setup.sh                  # 安裝腳本
├── init-keycloak-db.sql      # Keycloak 資料庫初始化
├── data/                     # Outline 檔案儲存
├── keycloak/
│   └── outline-realm.json    # Keycloak Realm 設定
└── nginx/
    ├── certs/                # SSL 憑證
    ├── conf.d/
    │   ├── outline.conf      # Nginx 設定
    │   └── outline.conf.ssl  # SSL 設定範本
    └── www/                  # Let's Encrypt 驗證

故障排除

無法連接網站

  1. 確認 DNS 設定正確
  2. 確認 port 80/443 已開放
  3. 檢查 docker compose logs nginx

Keycloak 登入失敗

1
docker compose logs keycloak

確認 Realm outline 已建立。

權限問題

1
chmod 777 data/

相關連結

延伸閱讀

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy