WANcatServer 網貓伺服器

Nginx 設定 SNI Routing 讓 Reverse Proxy Upstream 自己管理 SSL 憑證

我自己家中的 home lab 是用 Proxmox 安裝的 VM 環境,Proxmox 非常好用,然而有一點非常困擾我:由於我只有一個固定 IP,因此我的不同 domain 都要由同一台 VM 做 reverse proxy。平常這樣用起來沒什麼問題,然而在安裝某些服務,好比 Jitsi、Matrix 時,它會需要存取到 SSL 憑證,因此我得將它放在跟 reverse proxy 同一台 VM 上,否則 Jisti 會讀不到 certbot 產生的憑證。這一直造成我非常大的困擾,直到最近向朋友請教,認識到了 SNI Routing 這項技術。 SNI 全稱 Server Name Indication,是 TLS 的一個擴充協定,會在客戶端進行連線請求時,附帶 domain name 資訊,用途在於多個 domain name 都指向同一個 IP 地址時,讓伺服器得以判斷要使用哪一個憑證進行連線。Nginx 平常的 Virtual Host 就已經有利用 SNI 的技術了,我們接著還要結合 Nginx 的 stream 功能,來轉發 HTTPS 的 TCP 封包。 Nginx 的 stream 模組能重新導向 TCP 或 UDP 封包,類似 port forwarding 但還是有些不一樣,Nginx 的 stream 會改變封包的來源位址,因此還需要一些設定來還原。 註:本文目前還沒有處理好轉發 client IP 的問題。...

September 5, 2022 · 2 分鐘 · wancat

學校該學些沒有用的東西

學習最重要的是契機,這個契機可以是任何趨使你學習新事物的機會,可能是學校課程,可能是工作需求。當今天有個契機去學習,就把握機會把它學到好,學到回本。雖然這個契機不一定是你喜歡的,但也是個改變自己的機會,既來之,則好好利用之。

March 27, 2022 · 1 分鐘 · wancat

雫教你用婚姻理解比特幣閃電網路

吉田春(Yoshita Haru)和水谷雫(Mizutani Shizuku)在經歷多年的風風雨雨後,兩人終成眷屬,準備要結婚了。然而雫想起她那廢物老爸敗家的歷史,又考量春過去突然消失的不良紀錄,希望把兩人的財產算清楚,誰也不吃虧。想要阻止這一切的春就主張:「每次我們之間的轉帳都要經過銀行,手續費太貴了」。誰也想不到精明的雫竟然想到一個方法,可以讓兩人在不需信任彼此(又不用現金)的情況下,利用離婚協議書,完成無須手續費的離線轉帳。 雫:首先,我們在結婚的時候,要在結婚協議書上載明兩人「帶入多少資產進入婚姻」。 結婚同意書: 兩人於婚姻中財產: 吉田春:500000 水谷雫:300000 簽名:吉田春、水谷雫 2022.02.10 雫:接著將這張結婚證書提交到了戶政事務所,我們就會正式結婚了。 春:那要怎麼轉帳呢? 雫:當我們要轉帳時,就要簽一張離婚協議書,寫上新的財產分配。例如當我要轉給你 10000 元時,我們就簽一張離婚協議書: 離婚協議書: 兩人協議分配財產如下: 吉田春:510000 水谷雫:290000 簽名:吉田春、水谷雫 (尚無時間戳) 雫:當你要再給我 2000 時,我們再用上張協議書的金額,算出新的餘額。 離婚協議書: 兩人協議分配財產如下: 吉田春:508000 水谷雫:292000 簽名:吉田春、水谷雫 (尚無時間戳) 雫:透過這種方式,我們就可以用 0 手續費完成無限多筆交易。因為兩人都已經簽了名,兩人又各自有一份,因此只要任何一方想要,隨時都可以將離婚協議書交到戶政事務所,將財產結算。 春聽了之後毛骨悚然,知道自己随時有可能會被離婚,想要力挽狂瀾。 春:那我跟妳結婚之後,一次都不要簽離婚協議書,妳就拿我沒轍了吧!妳就得一輩子當我老婆! 雫:那可不行,所以你得先簽好第一份離婚協議書,我才會簽下結婚同意書。 春嚇了一跳,翻開雫剛才給他的結婚同意書下面,果真就附了一張離婚協議書。 離婚協議書: 兩人協議分配財產如下: 吉田春:500000 水谷雫:300000 簽名:吉田春、水谷雫 (尚無時間戳) 春:不行不行,妳這個作法有個 bug,如果結婚後都是妳給我錢,財產變成例如我 600000、妳 200000,但最後妳卻交了我們一開始的離婚協議書,妳不就淨賺 100000 嗎? 雫聽了後覺得有道理,低頭開始深思。正當春覺得應該可以安心的時候,雫抬起了頭。 雫:你說的有道理,所以我們要加入另外一個保險措施。 雫拿出兩張新的離婚協議書,拿出筆在上方加字。 離婚協議書(吉田春持有): 兩人協議分配財產如下: 水谷雫:300000 帳戶 1:500000 過了一個月後,將帳戶 1 的所有錢轉給吉田春 簽名:水谷雫 (尚無時間戳) 離婚協議書(水谷雫持有): 兩人協議分配財產如下: 吉田春:500000 帳戶 2:300000 過了一個月後,將帳戶 2 的所有錢轉給水谷雫...

February 11, 2022 · 2 分鐘 · wancat

元宇宙的重點不是 VR,而是區塊鏈

理想元宇宙三要素: 1. 元宇宙必須基於自由軟體與開放標準 2. 元宇宙中的身分與財產必須由個人所擁有 3. 元宇宙的治理必須是民主的。當我們今天面對一個新的元宇宙項目,我們應仔細檢查其是否滿足了這些要求,若任何一項沒有達到,我們都應該拒絕它。

November 29, 2021 · 1 分鐘 · wancat

如何用對數算指數為實數的值

音量單位分貝,定義是聲音的震幅每增加 10 倍,就增加 10 分貝,公式可寫成: $$ P = 10^{\frac{dB}{10}}P_0 $$ 在我們調整音量的時候,不可能每次都調大 10 倍吧?那在中間就會出現指數是小數的情況。例如我們今天若要算 $$ x = 10^{6.3} $$ 要怎麼在紙上求得近似值呢? 首先,我們改寫一下式子 $$ x = 10^{0.3} \times 10^6 $$ $$ y = 10^{0.3} $$ $$ x = y \times 10^6 $$ 這樣我們就可以先求 y,再回去求 x 了,這麼做是因為對數表上只會有 1 到 10 的值。 根據 log 定義 $$ 0.3 = \log_{10} y $$ 透過查表,找到最接近的值是 $$ \log_{10} 2.0 = 0.301 $$ $$ \rightarrow y \approx 2.0 $$ 因此 x 的值就會是...

August 21, 2021 · 1 分鐘 · wancat

如何推導 Log 換底公式

假設今天我們要算一個 2 的對數,如 $$ x = \log_2 16 $$ $$ \rightarrow 2^x = 16 $$ 我們定義 $$ 10^y=2 $$ 把第二式帶入第一式 $$ (10^y)^x = 16 $$ $$ 10^{xy} = 16 $$ 根據 log 定義,可以得到 $$ xy = \log_{10} 16 $$ $$ x = \frac{\log_{10} 16}{y} $$ 又 $$ y = \log_{10} 2 $$ 則 $$ x = \frac{\log_{10} 16}{\log_{10} 2} $$ 我們就得到了換底公式: $$ \log_a b = \frac{\log_c b}{\log_c a} $$

August 21, 2021 · 1 分鐘 · wancat

自由的伺服器測速工具 LibreSpeed 安裝教學

自己架站有時候需要了解伺服器的網速實際上有多快,這時可以在伺服器上安裝 LibreSpeed 這套軟體,打開網頁就能測連線到伺服器的速度。LibreSpeed 有 PHP 和 Go 實作,身為 Gopher 當然要用 Go 實作!本篇將以 Go 實作為範例。 Go 安裝 首先要安裝 Go,到 Golang 官網 下載你平台的壓縮檔,Raspberry Pi 選 armv6l,一般電腦要選 amd64,然後將其解壓縮: wget https://golang.org/dl/go1.16.7.linux-armv6l.tar.gz sudo tar -zxvf go1.16.7.linux-armv6l.tar.gz -C /usr/local 將 Go 加到 PATH 中,打開你的 Shell 設定檔(Bash 是 ~/.bashrc,Zsh 是 ~/.zshrc),在最後加入: export PATH=$PATH:/usr/local/go/bin 儲存後重開一個 shell,看有沒有成功安裝: $ go version go version go1.16.7 linux/arm LibreSpeed 安裝 下載並編繹 LibreSpeed git clone https://github.com/librespeed/speedtest-go.git cd speedtest-go go build -ldflags "-w -s" -trimpath -o speedtest main....

August 10, 2021 · 2 分鐘 · wancat

從零開始的 Nextcloud 完整安裝教學

用兩顆外接硬碟組 RAID 1,設定 DDNS、Nginx,並安裝 Nextcloud,以及後續的 PHP 調校與 Redis 快取。

August 7, 2021 · 8 分鐘 · wancat