AI 人生第四篇:透過 NPM 達成外往連入

接著這部分就會稍微提升一點難度,而且對你的網路環境有一定的要求了!大概會有幾個要求:
1. 你對網路是否有主控權?能否設定 Router 的通訊埠轉發(Port Forwarding)。
2. 需要對自己的 Router 有理解並且會設定通訊埠轉發。
3. 需要申請 No-IP 的免費 DDNS。
主要是很多東西都是免費,既然是免費就有一定的使用限制!所以先檢視你自己目前能達成什麼條件再來進行後續的動作!基本上設定通訊埠轉發是勢在必行的,因為你要拿到 SSL 憑證取得較高的安全連線是必須要將 80 與 433 在 Router 上轉發到你的 AI 主機上,想要安全的連線這部份的條件就必須要達成。

但如果不在意裸奔的話,其實是只要 No-IP 有個 DDNS 就夠了,不過我還是會主要還是會使用有安裝 Nginx Proxy Manager 的環境來講解,以下就開始說明了!

第一步:讓網址認識你的 IP

其實目前中華電信是可以申請固定 IP 的,如果你是使用中華電信可以先申請一個浮動制固定 IP 來使用可以增加連線的穩定性。

接著,IP 直接曝露在網路上根本就是裸奔中的裸奔!所以我們要先申請一個 DDNS 來套在我們的 IP 上面當作衣服盡量掩蓋我們的 IP 位置!就到 No-IP 申請吧!點我進入申請頁面

申請完之後記得到這邊下載電腦端的 IP 更新軟體,如果你是浮動 IP 的話絕對會需要使用這個軟體!請下載後直接安裝他,安裝完畢後登入你剛剛申請的帳號選擇你申請好的 DDNS Name 就可以自動更新 IP 對應了。

第二步:Docker Desktop 安裝 Nginx Proxy Manager

其實我自己是使用了另一台電腦來進行 Nginx Proxy Manager 的網址分配與不同電腦的 SSL 憑證,我個人會比較推薦這樣做,安全性也比較高!不過前提還是在最前面說的那樣,你對你自家網路有足夠的控制權;這邊我就還是提供 Windows 下在與 AI 本機下的安裝操作方式吧。

首先要確認好你已經把通訊埠轉發設定到你要使用 Nginx Proxy Manager 的主機,這裡就假設你已經設定好轉發在同一台 AI 伺服器上了,接著我們就在剛剛安裝 Open WebUI 的主機利用一樣的 Docker Desktop 來進行安裝;首先建立安裝資料夾:

上一篇我們已經建立了 05.Ai-Studio 資料夾也建立了掛載用的資料夾,現在我們在 05.Ai-Studio 之下再建立一個 Ai Function 的資料夾,依照排序是 02 所以我們就取名為 02_Ai_Function;之後所有 Open WebUI 的擴充功能就會安裝在這個資料夾內。

由於第一個功能安裝的是 Nginx Proxy Manager 所以我們就設定一個 00_NPM 資料夾來保存資料,設定完之後進入資料夾用建立一個文字文件檔案,檔名為 docker-compose.yml。

然後右鍵展開選單使用 Notepad++ 或是記事本編輯都可以,複製以下的程式碼貼進去然後存檔。

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'      # HTTP 流量
      - '81:81'      # 管理介面
      - '443:443'    # HTTPS 流量
    volumes:
      # 使用相對路徑這會直接在你的 00_NPM 資料夾下建立 data  letsencrypt 資料夾
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    environment:
      - DISABLE_IPV6=true

貼完存檔後,關閉檔案一樣讓資料夾視窗停留在 00_NPM 內;然後再次右鍵展開選單選擇”在終端中開啟“這樣理論上我們開啟的終端機就會直接在 00_NPM 目錄內了。

然後執行以下指令:

#在確認你人還在 E:\05.Ai-Studio\02_Ai_Function\00_NPM 之後執行指令
docker compose up -d

跑完以後,http://127.0.0.1:81/ 進入 Nginx Proxy Manager,第一次會要你輸入管理帳號跟密碼,這邊就自行設定!設定完後進入設定頁後點選 Add Proxy Host。

展開設定頁後:
1. Domain Name:輸入你剛剛在 Np-IP 申請的網址(我的是 ai9987.ddns.net)。
2. Scheme:預設 http 即可
3. Forward Hostname / IP:輸入你的本機 IP 192.XXX.XXX.XXX 那個。
4. Forward Port:由於我們的 Open WebUI 前面是裝在 3000 Port,所以這裡輸入 3000
5. Access List:預設。
6. Block Commom Exploits:開啟。
7. Websockets Support:開啟。

上圖書入完後點擊 SSL 分頁,然後設定如下:
1. SSL Certificate:選擇 Request a new Certificate(第一次讓系統自動申請就可以了)
2. Force SSL:開啟。
3. HTTP/2 Supprot:開啟。
4. HSTS Enabled:開啟。
完成設定之後按下 Save,理論上 Nginx Proxy Manager 應該就跑起來了。

比如說我申請的 DDNS 是 ai9987.ddns.net,看到右邊 Online 後 SSL 就開始運作了!你就可以開始使用 https:// 了。

接著打開瀏覽器,在瀏覽器內輸入 https://ai9987.ddns.net 之後就能連回去你家裡的 AI 伺服器,在外網去到哪裡手機、iPad、筆電都能操作了!

最後的建議,如果手邊有點小錢的話其實也可以到 CloudFlare 買個網址轉回家裡而且不貴!因為使用 No-IP 的話你每 30 天要去登入按一下確認你有再繼續使用平常的 Loading 會增加一些,而且忘記去按的話還會被註銷;如過註銷了剛好又被別人搶注走那就……….

所以建議還是有個穩定的網址就是了,像是 CloudFlare 有些小眾冷門網址還挺便宜的!低至每年只需要 5.3 USD 的都有只在乎實用性的話是不錯的選擇!而且 CloudFlare 自代工能還蠻多的,個人低成本購買的話是很推這邊囉!