Shawn前走已經是正式移轉到Gitlab Pages上了😆
不知道大家有沒有發現呢
經過一週的實驗證實
Gitlab Pages可以輕鬆加上
自己的Domain和SSL的
請大家可以放心移轉…
今天就來教教大家如何設定自己的Domain及SSL吧~


首先是為自己加上domain
STEP1
必須先申請一個Domain name
(可以去GoDaddy or Google domains購買)
購買後進入你的域名商的設定頁面
設定Record
有幾種設定方法
一種是你希望設置在你的根domain下
這時你需要設A record & CNAME record
如下

TypeNameValue
Ayourdomain.com52.167.214.135
CNAMEwwwnamespace.gitlab.org

還有一種是直接設定CNAME即可
這就看個人設定了
(我個人是設定CNAME
再使用域名商提供的forwarding功能
將根domain指向我的www)

PS : 52.167.214.135 就是gitlab的IP

STEP2
這時就要到你的gitlab去驗證這個domain
進入Setting>Pages
點右上角有一個New Domain
先輸入Domain下面Certificate先不要輸入
回上一層,會看見你剛剛新增的domain
點Details
會看到一個Verification status
根據這個設定一個TXT record在你的域名商的控制台中
設定好後點Retry verification 若驗證成功會如下圖

等待dns生效就能擁有自己的domain摟

PS:這裡有一個小坑,就是在驗證domain時要注意域名商是否有Domain lock選項,記得要把他打開喔~


接下來介紹如何加入ssl
這邊使用Let’s Encrypt來做驗證中心
好處是他是free的
壞處是他只有三個月有效 (其實不算壞處只是麻煩)

SETP1 產生ssl憑證
這裡先用一個python寫的自動產生憑證的工具certbot
他可以很容易的在主機上產生或是更新憑證
所以必須安裝它
這裡以ubuntu為例

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot

SETP2
用一個文件來自動化產出憑證

# .cli.ini
text = True
domains = yourdomain.com
email = xxx@gmail.com
renew-by-default
agree-tos
rsa-key-size = 4096
logs-dir = /tmp/certbot/logs/
work-dir = /tmp/certbot/work/

執行

$ certbot certonly -a manual -c cli.ini

會問你Are you OK with your IP being logged? 回答Y
接下來會產生一個url以及一組亂碼
如下圖

這時它要你按Enter去challenges
切記不要按Enter!!

PS:簡單的說就是要新增一個靜態檔案讓Let’s encrypt去驗證主機是否存在

SETP3
新增一個靜態檔案

$ cd  acme-challenge
$ echo muaeLVaoNi-3SmYWgLECQ9tbm6ACPfjraoAdP45mjcE.ID43Q8Gi6b7bPbrNTz78YznIp-AdHpc9udzt3J0QpO4 > muaeLVaoNi-3SmYWgLECQ9tbm6ACPfjraoAdP45mjcE

SETP4
改一下.gitlab-ci.yml

# .gitlab-ci.yml
...
pages:
    script:
    hugo
    mkdir -p public/.well-known/acme-challenge/
    cp -R acme-challenge public/.well-known/
...

然後git commit & push
之後讓Pipelines去跑一下
跑完之後你可以測試這個連結是否正確
http://yourdomain.com/.well-known/acme-challenge/muaeLVaoNi-3SmYWgLECQ9tbm6ACPfjraoAdP45mjcE

SETP5
這時回到certbot
給他按下當初一直沒按下去的Enter
如果出現Congratulations!
恭喜你~成功擁有https摟


事實上certbot是可以renew憑證的
但是我們無法在gitlab上安裝certbot
所以必須走其他管道來完成auto renew
接下來會教大家如何作到auto renew憑證喔