一個從Zima Board誕生的網站

這個網站怎麼來的

一個從Zima Board誕生的網站

這是一個分享技術、開發踩坑與充滿奇葩語錄的網站

當然得介紹這個網站是怎麼架設起來的!

本篇介紹硬體、Debain環境架設(原廠)、域名購買踩坑等等。

原本想自己架,想想還是算了,功能太多會過勞死~哈

這個好聽,新歌!!!

網站框架使用免費開源的部落格-Ghost

Ghost提供不同版型的Theme,不用煩惱怎麼調整UI或者樣式

挑一個喜歡的直接套上去!!

而且後臺支援非常多的自訂功能與網頁排版,很足夠一般的使用者來使用!!

如果覺得樣式不夠,也可以使用HTML,手刻排版,哈哈

作者也沒什麼時間重寫...懶人模式開啟!

整體架構請查看官方文件介紹


架構版本

Zima Board 832
系統OS: Debian GNU/Linux 11 (bullseye),原廠自帶
Ghost: 5.45.1-alpine
Docker: 20.10.12, build e91ed57

1.準備硬體

首先當然得購買Zima Board這塊伺服器用的開發版,這個有三個版本,建議買記憶體RAM 8G的版本,和樹梅派一樣,選RAM最大就對了,不然真的不夠用,哈哈

價格含海運大概6千5左右台幣,等了大概2周

  • 這邊有被坑到! 快遞有加收海關關稅,還要多付2百多給宅急便
  • 然後只能刷VISA和MasterCard,我的JCB卡直接88...*

基本上不買配件,只提供一塊板子和電源供應器(原生支援PCIE x4很猛!)

2.啟動系統

因為zima board自帶casaos,所以插電後,只要在chrome輸入http://casaos.local 就可以遠端登入頁面,很方便!

預設帳密都是 casaos,包含SSH也是!

也可以遠端登入Terminal,因為自帶SSH,看個人喜好,作者直接使用SSH登入

Windows SSH指令:


      ssh [email protected]
    

3.購買網域域名-Godaddy

直接搜尋買你想要的網域,一年大約6百多左右!!

如果沒什麼需求,只要買網域就好! 架站功能都不需要啟動或購買!

4.代理SSL公網-Cloudflare

因為SSL需要固定IP,要跟中華電信設定有的沒的,直接掛代理,而且是免費的~~

4-1. 網站->新增網站

e.g. GoDaddy買得網域(不用打https)

4-2 點擊剛剛新增的網站,可以看到DNS還沒變更,先到GoDaddy設定

基本上GoDaddy提供的DNC是不能使用的,要改成Cloudflare提供的名稱

4-3 在GoDaddy的DNS先將名稱伺服器改成Cloudflare提供的名稱伺服器

4-4 Cloudflare 通道開通

Zero Trust-> Access -> Tunnels 創建新的turnnel

這段docker的token很重要!!! 等等的docker file會用到

4.5 Cloudflare DNS 先刪除

執行docker compose up前,先把所有DNS全部移除!

很重要! 不然DNS網域會衝突!!

4-6 Cloudflare 設定Public Hostname

  • 這邊要注意,Service是本地的Ghost Service IP,預設:ghost:2368
    (如果有改,請查官方文件XD)

  • Domain就輸入GoDaddy買的網域即可

  • 到這邊可以看到設定完Hostname Page後,DNS會自動註冊

4.7 Cloudflare DNS 踩坑

如果DNS沒有自動註冊或不小心弄丟

回去步驟: 4-6 Cloudflare 設定Public Hostname

先把舊的HostName砍掉,重新新增即可!!!!

5. 萬事俱備-只欠設定系統

以下都在Zima Board的Terminal輸入(作者用Windows的SSH)

當然還是建議升級一下包

#更新包包包
sudo apt update
sudo apt upgrade -y

Zima Board自帶Docker,但並不完全(缺少docker-compose-plugin)
這邊建議直接在Terminal安裝,防止之後忘記沒裝踩坑

#安裝docker-compose-plugin
sudo apt-get install docker-compose-plugin

5.1 Docker設定

#先到目錄
cd /etc/docker
#看一下有什麼鬼
ls
#創建一個檔案
nano daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

貼上後直接ctrl+O保存,再ctrl+X退出,打cat daemon.json確認存檔OK

然後重啟 Docker

#重啟Docker
sudo systemctl restart docker
#檢查狀態
sudo systemctl status docker 

5.2 Docker-Ghost設定

#回到根目錄,並創建docker-compose.yaml
sudo nano docker-compose.yaml

#這邊要改的有三個
1.url ->你註冊的網域
2.image ->如果怪怪的,請用最新版
3.--toke ->去Cloudflared Tunnel拿token

創建docker-compose.yaml,並貼上下列設定(官方文件)

version: "3.9"

services:
  ghost:
    image: ghost:5.45.1-alpine
    restart: always
    environment:
      url:  #你的URL,例如:https://ivanlu.dev
      database__client: sqlite3
      database__connection__filename: content/data/ghost.db
    volumes:
    - ./ghost_content:/var/lib/ghost/content

  cloudflared:
    image: cloudflare/cloudflared
    restart: always
    command:
    - tunnel
    - --no-autoupdate
    - run
    - --token=  #你在 Cloudflared Tunnel 上的 token
    depends_on:
    - ghost
  • 如果ghost想更新
    ghost:5.45.1-alpine這段要改成新版的(連結)
  • 將Cloudflared Tunnel 上的 token加進 docker-compose.yaml
#確認Cloudflare DNS OK且保存完docker-compose.yaml後,直接啟動
docker compose up -d
#再確認docker有活著
docker ps -a

基本上做完後會有docker-compose.yaml和ghost_content

如果ghost_content沒了,那你的網站也會沒了,就像破片一樣,ㄆ一ㄤˋ幾咧就沒了

因為裡面包含mysql的資料庫和各種設定!!!

做完全部流程,根目錄會增加docker-compose.yaml和ghost_content

基本上這個網站就是這樣生出來的~~