0%

day12-Synology Docker 內架設 Linebot

這幾天有 Synology 上面架設Linebot後端程式需求.
但 Linebot 只接受 Https 的 Webhook
剛好可以透過 synology.me 來申請 Let’s Encrypt憑證
以下是設定步驟紀錄:

架構圖如下

         ┌──────────────────────────────────────┐
POST │ https:// │
────────►│ dockerservice.{NAS名稱}.synology.me │
443 │ /callback │
└──┬───────────────────────────────────┘


┌────────────┐
│ DNS server │
└─┬──────────┘
│169.254.10.xxx:443

┌──┬───────────────────────────────────┐
│ │ │
│ ┌┴──────┐ ┌─────────────────┐ │
│ │Reverse│ │Docker │ │
│ │Proxy │ │ ┌─────────────┐ │ │
│ └┬──────┘ │ │Ubuntu │ │ │
│ │localhost:9001 │ │ │ │ │
│ └──────────────►│ │node │ │ │
│ │ │index.js │ │ │
│ │ │ │ │ │
│ │ │listen 9001 │ │ │
│ │ └─────────────┘ │ │
│ │ │ │
│ └─────────────────┘ │
│ NAS │
└──────────────────────────────────────┘
  1. router -> 網路中心 -> 連接埠轉送 -> 新增 ->
    內部IP位址: NAS
    外部連接埠: 80 & 443 都要開
    內部連接埠: 80 & 443 都要開
    通訊協定: TCP/UDP

  2. 控制台->安全性->憑證->新增->
    新增憑證->從Let’s Encrypt取得憑證->
    網域名稱: xxx.{NAS名稱}.synology.me
    電子郵件: 隨意

  3. 登入入口 -> 進階 -> 反向代理伺服器 -> 新增 ->
    來源
    通訊協定: HTTPS
    主機名稱: xxx.{NAS名稱}.synology.me
    連接埠: 443
    目的地
    通訊協定: HTTP
    主機名稱: localhost
    連接埠: 9001 (看 docker 開哪一個 port)

  4. docker 中 ubuntu
    $ cd linebot所在資料夾/
    $ node index.js

  5. 若show出
    listening on 9001
    代表成功執行

  6. https://developers.line.biz/console/channel/{channelID}/messaging-api
    修改Webhook URL 為: https://dockerservice.{NAS名稱}.synology.me/callback