星期一, 6月 25, 2018

Enable Https by Nginx in docker

對於那些提供 Web Service 的 docker image(如圖左側),要如何賦予 https 的連線能力?當然依各種服務都有不同的做法可行,例如 GitLab 要改 gitlab.rb,Jenkins 是個 war 等等,不過有沒有更簡單一致的做法?那就是隔壁也開一個 Nginx docker container,配置如圖:
假設申請簽署的網站名為 nginx.acme.com,pem 格式的金鑰對紀錄在 nginx.acme.com.key 檔案內,nginx.acme.com.crt 是 pem 格式的憑證檔, Nginx 設定當有以下段落:
  • server {
    • listen 443 ssl;
    • server_name nginx.acme.com;
    • ssl_certificate /etc/ssl/certs/nginx.acme.com.crt;
    • ssl_certificate_key /etc/ssl/certs/nginx.acme.com.key;
    • ...
    • location / {
      • proxy_pass http://172.17.0.2:80;
      • proxy_set_header Host $host;
      • proxy_set_header X-Real-IP $remote_addr;
      • proxy_set_header X-Forwarded-Proto https;
    • }
    • ...
  • }
東拼西湊來的有些不踏實,這裡有比較完整的說明。

[2018/06/27]
這件事似乎有個常見的名詞 SSL Termination,用 HAProxy 也可以,請參考這篇

[2018/08/17]
由於 Nginx 官方 docker image 只聽著 port 80,在不想改官方產出的前提下,可以:

  • 由外面的 443 對應到裡面的 80,-p 443:80
  • Nginx 設定檔 listen 80 ssl;
  • 在某些虛擬機環境,因為防火牆的規則比較亂,可能讓這個 image 開不起來,在這篇有人提到解法:
    • iptables -t filter -F
    • iptables -t filter -X
    • systemctl restart docker

星期四, 6月 21, 2018

Change your microsoft account password carefully

這次被迫修改密碼原不以為意,想說立刻改回來就好,結果糟了!原來五年前微軟已限制我們自己挑的密碼一生只能用一次。
看來我只好再找一張紙把這次的密碼抄起來。

星期三, 6月 20, 2018

Azure VM note

在 Azure 上的 VM 還不是隨便開開就好:
  • 開任何虛擬機之前,可以先備好共用的 Resource Group、Storage 與 Virtual Network。
  • Linux 必須開 port 22 讓 SSH 能進去控制。
  • Windows 必須開 port 3389 讓遠端桌面能進去控制。
  • 不論從地端或雲端,公開或私有位址,都無法用 Ping 確認虛擬機的狀況(天生不懂 ICMP),只能用 Port Ping,例如 telnet 之類的。
  • 即使取得公開位址,防火牆設定正確,虛擬機還必須佔有所在子網段 Subnet 的第一個位址,否則外界仍然連不進去(是 Bug 嗎?)。
因為防火牆被拉到外面,稱為 Network Security Group,所以要多玩玩才能適應。

星期五, 6月 15, 2018

GitLab Jenkins Integrated Authentication

這兩個服務除了各自有許多驗證方式之外,若要輕量化地使用者單一帳號管理,只要在 GitLab 自建帳號,再搭配 Jenkins 上有個 GitLab Authentication Plugin,即可達到通用的目的。首先來開兩部機器:
  • docker run -d --name gitlab -p 80:80 gitlab/gitlab-ce
  • docker run -d --name jenkins -p 8080:8080 jenkins/jenkins:lts
在 GitLab 除了要建帳號給使用者之外,還有設定的工作,註冊一個應用程式,如圖:
完成後,有些東西要抄起來:
在 Jenkins 外掛 GitLab Authentication Plugin 後的設定用得上:
以上其實還算單純的整合,在 Mac 硬是搞了好久,重點是那些位址究竟是要讓 Client 能找到 Server,還是 Server 要找到另一部 Server?因為 Mac 上的 Host (Client) 網路上無法看到 Container (Servers),但 Linux 沒這問題,Windows 則依這篇小加一條繞送規則即可。

星期四, 6月 07, 2018

tw.archive.ubuntu.com unreachable

為了讓 Ubuntu 認得 exfat 隨身碟,在安裝套件時遇到 tw.archive.ubuntu.com 連不上的問題。因為並不清楚這是否僅是暫時性的,捨棄了幾篇教人修改 /etc/apt/sources.list 的做法,換成:
  • ping archive.ubuntu.com 查出一個 IP 位址
  • 在 /etc/hosts 加一條,將上述位址定名為 tw.archive.ubuntu.com
如此便可暫時改道取套件。

星期一, 6月 04, 2018

Bootcamp stuck while Win10 setup

在 MBP Sierra 利用 Bootcamp 製作雙開機系統已算是非常方便了,騰出磁碟空間、重新分割、抓驅動程式、製作開機 USB Disk 幾乎都是自動的,不過還是卡了一整個週末:
  • 官方文件強調 USB 2.0 才可以,事實上我的 MBP 2013 early 兩個 USB port 都是 3.0 的,Disk 要有 16GB 的空間大概也不可能太舊,如今應該是很難找得到符合的硬體。別擔心,USB 3.0 沒問題。
  • 從微軟下載的 iso 並不會被懷疑有問題,事實上如果像我一樣在另一部電腦下載,再透過 USB 移到 Mac 上讓 Bootcamp 準備過程中用到,可能就會破壞了內容,即使看起來還是 4.69GB 大小。驗證的方法就是開個虛擬機,看能否用這 iso 裝機完成?
  • 需要的驅動程式也都由 Bootcamp 代勞了,舊文很多提到要自己準備第二個 USB Disk 或第二個磁碟分割等等很多麻煩的事,其實都不需要。
  • 也有看過一篇舊文寫到,給 Win10 的分割區要有 55GB,我這小得可憐的 SSD 可很難擠得出來,幸好這也不是真的。