用 Navidrome 建立自己的私人音樂收藏

因為今年又去了一趟大港開唱,也聽了很多樂團的專場,所以瘋狂的收了不少的 CD。畢竟就算把 Spotify 的音質調到最高,整個聽感還是比不上 CD 啊。所以我說那個 Spotify Hi-Fi 還是什麼的講了好幾年了到底要不要推出?(我用不太懂現在有提供無損音檔服務的 KKBOX 和 Apple Music,這是我的問題)

2026-10 Update: 我已經又跳來用 Apple Musc 一陣子了

那,為了整理這些新加入的和原本的 CD,我原本的做法是都會把他們轉成 FLAC 檔案,然後放在 NAS 上用播放軟體開來聽。這樣的操作體驗還滿麻煩的,如果能有一個系統可以幫我管理、又可以讓我在外面隨時可以聽到自己的無損音檔就好了。

於是發現了 Navidrome 這個專案,而且很簡單的用 docker compose 就可以跑起來。然後可以搭配 CloudFlare 的 Zero Trust Application 對外開放,不用開放本機的 port。這不但直接處理掉 HTTPS 憑證的問題、把基本的保護做起來、還可以設定 WAF Rule。

以下是我的 docker-compose.yaml

services:
  navidrome:
    image: deluan/navidrome:latest
    user: 1000:1003 # should be owner of volumes
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 1h
      ND_DEFAULTTHEME: "Spotify-ish"
      ND_IMAGECACHESIZE: "2048MB"
      ND_ENABLEEXTERNALSERVICES: true
      ND_LOGLEVEL: info
      ND_ENABLEDOWNLOADS: true
      ND_SPOTIFY_ID: "xxx"
      ND_SPOTIFY_SECRET: "xxx"
      ND_LASTFM_ENABLED: true
      ND_LASTFM_APIKEY: "xxx"
      ND_LASTFM_SECRET: "xxx"
      ND_ENABLEGRAVATAR: true
      ND_ENABLECOVERANIMATION: false
    volumes:
      - "./data:/data"
      - "./music:/music:ro"
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    command: tunnel run music
    environment:
      - TUNNEL_TOKEN=${TUNNEL_TOKEN}
    restart: unless-stopped
  • 我有另外串接 Spotify 取得專輯插圖、以及串接 Last.fm 的 API 來做聆聽音樂的記錄。如果你不需要的話這些在 environment 裡面的設定可以拿掉。Navidrome 的各項設定可以參考這裡
  • 我的 volume 是透過 autofs 用 NFS mount NAS 上的資料夾,然後再建立個. symbolic link 到 ./music。你也可以不這麼做

中華電信光世代奇怪的斷線問題

我家裡一直都用中華電信 100M/40M 的光世代,搭配 ASUS AC-68U 刷 Asuswrt-Merlin,以及申請非固定制光世代的固定 IP。

但是不知道是哪邊的問題,每次遇到

  1. 中華電信機房維修斷線
  2. 家裡停電斷線

網路就會爛掉,用「用戶編號@ip.hinet.net」再也連不上 PPPoE。一定得要改用「用戶編號@hinet.net」拿動態 IP 連線後,去上面的申請固定 IP 網頁,把原本的「1固定IP及7動態IP」改申請成「八個動態IP」,然後再重新申請一次「1固定IP及7動態IP」,再改成用「用戶編號@ip.hinet.net」拿到的固定 IP 上網。然後我的固定 IP 就換一組新的了,domain name 也得去設定到新的 IP 上…

實在是有夠煩人。

2026-10 Update:前年換成 UniFi 的 Cloud Gateway Ultra 之後,再也沒遇到同樣的問題了。

玉山銀行 App 無法連線的解決方式

我幾乎每次打開玉山銀行 App 都會遇到大大小小的問題。今天在公司想要打開看看信用卡賬單,卻一直跳出「簡易密碼驗證失敗」的訊息。好,那我就用完整的身分證字號+使用者代號+密碼來登入後,再重設簡易密碼吧。結果一樣一直跳出「簡易密碼驗證失敗」,App 首頁也顯示「連線異常」。

在 Twitter 上抱怨之後,有朋友跟我說他現在用起來正常,我要不要切到 4G 試試看?一試之下還真的就可以了。

那這樣看起來就是網路問題了,經過一番 debug,發現公司的 DHCP 發出來的 DNS 是 8.8.8.8 (Google DNS),只要把它換成 168.95.1.1 (Hinet DNS) 就可以了。換了之後記得重開機把 DNS cache 清掉。

記錄下來給後面遇到這個問題的人參考。

附註:在這邊、這邊、這邊都看到有人遇到類似的問題

中華電信 hicloud CVPC 的 IPsec VPN

先說結論,如果照中華電信 hicloud 的文件設定,是絕對不會通的。

我一開始參考的是這邊的

  • 16.5 如何新增 IPSEC Tunnel 至客戶端 IPSEC 設備
  • 16.6 客戶端 IPSSEC VPN 設備 Tunnel 設定範例

這兩份文件。

16.5 這份文件提供了 hicloud 端的 IPsec 設定,基本上沒有太大的問題,要注意的是加密演算法要和本地端設備設定相同

主要的問題會在 16.6 這份文件讓人很困惑。以 phase 1 來說,文件中的設定用了

set security ike proposal ike-proposal authentication-algorithm md5

set security ike proposal ike-proposal encryption-algorithm 3des-cbc

這樣的加密和認證方式,但是 hicloud 的後台並沒有這個組合可以選,所以我改用 sha1/3des 這個組合。

同樣的問題也發生在 phase 2,文件中用了

set security ipsec proposal ike-proposal authentication-algorithm hmac-sha1-96

set security ipsec proposal ike-proposal encryption-algorithm aes-128-cbc

這樣的組合,但是一樣後台並沒有這樣的組合,所以我一樣用 sha1/3des

如果只有這樣,你的 IPSec tunnel 肯定還是不會起來,花了很長時間找原因之後,忽然發現在

run show log kmd-logs

的時候,會噴類似下面的 log

Jun 5 15:03:52 sr-hq-srx240-1 kmd[22276]: IKE negotiation failed with error: Authentication failed. IKE Version: 1, VPN: ike-vpn-hicloud-10-0-0-0 Gateway: gw-hicloud-10-0-0-0, Local: xxx.xxx.xxx.xxx/500, Remote: 210.65.122.28/500, Local IKE-ID: xxx.xxx.xxx.xxx, Remote IKE-ID: 127.0.0.1, VR-ID: 0

可以看到 IKE 在 negotiation 的時候,認證失敗了。而失敗的原因並不是設定中的 pre-shared-key 打錯,而是因為 hicloud 的 Remote IKE-ID 是 127.0.0.1。

所以我們必須要在設定中加上這樣的設定

set security ike gateway ${YOUR_GATEWAY_NAME} remote-identity inet 127.0.0.1

這樣就會通了,而這一點是完全沒有在文件上提到的。

中華電信 hicloud 後台並不支援 Firefox

UPDATE:2018-08-22 使用 Firefox 61.0.2 應該已經可以了

在官方的 Q&A 裡面提到

Q. 虛擬私雲 (hicloud VPC) 虛擬資料中心 管理介面 (vDC ) 有支援那些瀏覽器 ?

A. hicloud VPC 雲伺服器 Console 管理介面相容於部分瀏覽器與作業系統,建議您參考『hicloudVPC 操作說明手冊』(https://userportal.hicloud.hinet.net/vpc/document/files/hicloudVPC_Manual.pdf) 系統需求清單內瀏覽器與作業系統支援列表,並建議您使用 Firefox 瀏覽器得到最佳的相容性。

『建議您使用 Firefox 瀏覽器得到最佳的相容性』

但是用 Firefox 60.0.1 打開後台,只會看到這樣的空白頁

Screenshot-2018-6-4 中華電信hicloud雲端服務.png

而用 Chrome 打開同樣的頁面則可以正常顯示

螢幕快照 2018-06-04 上午10.01.55.png

甚至用 Safari 11.1.1 也可以正常顯示

螢幕快照 2018-06-04 上午10.08.54.png

中華電信你是不是在開我玩笑?