[{"content":"","date":"3 April 2026","externalUrl":null,"permalink":"/","section":"Blowfish","summary":"","title":"Blowfish","type":"page"},{"content":"","date":"3 April 2026","externalUrl":null,"permalink":"/about/","section":"Blowfish","summary":"","title":"測試用","type":"page"},{"content":"","date":"3 April 2026","externalUrl":null,"permalink":"/tags/docker/","section":"Tags","summary":"","title":"Docker","type":"tags"},{"content":" Synology Docker NavidRome 音樂串流安裝紀錄 # docker``nas``synology 由於萬惡的Youtube Premium家庭方案無預警漲價，搞得每個月要上繳的錢越來越多了。退訂後，發現最有差的是地方是關螢幕撥放。心想反正自己有AIO主機，不如就自己搞個音樂串流服務吧\nNavidRome # NavidRome 是一款以Subsonic(另一款自架音樂串流服務) API 打造的開源音樂串流服務，擁有多平台的客戶端、Dockerfile。\n前置條件 # Synology Docker套件 安裝 # NavidRome Docker官方安裝教學\n原本都於其他LXC內以使用Podman Compose管理服務，官方是給出以下兩種方式安裝，不過這次把音樂放在NAS，就直接以Nas裡Docker安裝，手指動一動就好了。 Docker Command\n$ docker run -d \\ --name navidrome \\ --restart=unless-stopped \\ --user $(id -u):$(id -g) \\ -v /path/to/music:/music \\ -v /path/to/data:/data \\ -p 4533:4533 \\ -e ND_LOGLEVEL=info \\ deluan/navidrome:latest Docker-Compose.yml\nservices: navidrome: image: deluan/navidrome:latest user: 1000:1000 # should be owner of volumes ports: - \u0026#34;4533:4533\u0026#34; restart: unless-stopped environment: # Optional: put your config options customization here. Examples: # ND_LOGLEVEL: debug volumes: - \u0026#34;/path/to/data:/data\u0026#34; - \u0026#34;/path/to/your/music/folder:/music:ro\u0026#34; 首先位於Docker資料夾內新增給NavidRome掛載的資料夾 首先下載NavidRome映像 新增容器 掛載位置 左側的/music可以更改為自己存放音樂的位置 最後Container設定長這樣 本機連接埠選自己要的 接下來把自己的音樂上傳至/music資料夾匯入音樂就完成了 搭配YT-dlp 下載自己要的音樂 可參考下列文章。 {%preview https://ivonblog.com/posts/yt-dlp-usage/ %} 下面列出自己會用得指令，也出自上述文章\n影片 ./yt-dlp --output \u0026#34;%(title)s.%(ext)s\u0026#34; --embed-thumbnail --add-metadata --merge-output-format mp4 \u0026#34;https://www.youtube.com/watch?v=duZDsG3tvoA\u0026#34; 音樂 ./yt-dlp --output \u0026#34;%(title)s.%(ext)s\u0026#34; --embed-thumbnail --add-metadata --extract-audio --audio-format mp3 --audio-quality 0 \u0026#34;https://www.youtube.com/watch?v=duZDsG3tvoA\u0026#34; 影片播放清單 ./yt-dlp --output \u0026#34;%(playlist)s/%(title)s.%(ext)s\u0026#34; --embed-thumbnail --add-metadata --merge-output-format mp4 \u0026#34;https://www.youtube.com/playlist?list=PLgFC_SXvt6Lmkks32yM_6l-Eb6KMdgBom\u0026#34; 音樂播放清單 yt-dlp --output \u0026#34;%(playlist)s/%(title)s.%(ext)s\u0026#34; --embed-thumbnail --add-metadata --extract-audio --audio-format mp3 --audio-quality 0 \u0026#34;https://www.youtube.com/playlist?list=PLu6L9FuV-VP21jo9bHgVRNV4TQBG66mpo\u0026#34; ","date":"3 April 2026","externalUrl":null,"permalink":"/posts/navidome-install/navidome-install/","section":"Posts","summary":"","title":"NavidRome 音樂串流安裝紀錄","type":"posts"},{"content":"","date":"3 April 2026","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"","date":"3 April 2026","externalUrl":null,"permalink":"/tags/selfhost/","section":"Tags","summary":"","title":"Selfhost","type":"tags"},{"content":"","date":"3 April 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"3 April 2026","externalUrl":null,"permalink":"/tags/cloudflare/","section":"Tags","summary":"","title":"Cloudflare","type":"tags"},{"content":" Cloud Flare Tunnel # 提供一便捷方式 讓你可以不用在路由器防火牆開洞，\n即可實現內網穿透。\n網域 # 若需使用cloudflare服務 必須先有cloudflare網域\n不管是直接在cloudflare上購買或是 在其他地方購買給cloudflare託管\n安裝Cloudflared # 像是DDNS，cloudflared是裝在你內網主機上的客戶端。\n會與cloudflare tunnel服務保持連線。\n當外網連入時，根據需求將內網服務穿透出來\ncloudflared提供市面上大部分作業系統的發行版，照著指令照裝即可。\n這邊的作業系統是CentOS 8，則使用yum安裝。\nCreate Tunnel #將cloudflare repo 加入 yum curl -fsSl https://pkg.cloudflare.com/cloudflared-ascii.repo \\ | sudo tee /etc/yum.repos.d/cloudflared.repo # 更新 repo sudo yum update # 安裝 cloudflared sudo yum install cloudflared #連線創立的tunnel並在systemd註冊為服務 sudo cloudflared service install \u0026lt;your_token\u0026gt; 設定路由 # 提供兩種方式，一種是在dashboard上設定。 另一種則是使用commandline，在內網主機上設定。\nDashboard 上設定 # 內網主機設定 # ","date":"3 April 2026","externalUrl":null,"permalink":"/posts/cloudflare-tunnel-setup/","section":"Posts","summary":"","title":"CloudFlare Tunnel Setup","type":"posts"},{"content":"","date":"3 April 2026","externalUrl":null,"permalink":"/tags/network/","section":"Tags","summary":"","title":"Network","type":"tags"},{"content":" 讓command在背景跑 # 在要跑的指令結尾加上 \u0026amp;\njupyterlab \u0026amp; 指令和 \u0026amp; 中間通常會空一格 同時又不會output\n/path/to/your/script.sh \u0026gt; /dev/null 2\u0026gt;\u0026amp;1 \u0026amp; 1 代表螢幕輸出，2 代表錯誤輸出\n檢視背景執行的process # jobs Kill掉特定背景程式 # kill %1 最後面的數字是取決於jobs給的number (會從1開始)\n[1]- Running sleep 100 \u0026amp; [2]+ Running sleep 200 \u0026amp; 讓ssh連線detach後程序能繼續跑 # 接在已經背景執行的程序後\ndisown -h %1 或是可以在下背景時同時搭配nohup\nnohup jupyterlab \u0026amp; nohup會把原本output到terminal的東西給寫到nohup.out\n如果你的指令會一直輸出內容，就有可能讓nohup.out 這個檔案異常巨大\n可以搭配上面的\u0026gt; /dev/null 2\u0026gt;\u0026amp;1 會將所有輸出直接丟掉\nnohup /path/to/your/script.sh \u0026gt; /dev/null 2\u0026gt;\u0026amp;1 \u0026amp; 其他套件 # 還能用像是screen/ tmux來假裝連線一直都在\n把命令放到背景執行 # Linux 允許把命令放到背景中執行，僅僅需要在命令的最後加上一個 \u0026amp;，就可以利用 Linux 的多工特性執行多個背景程式，如以下：\nbang@linuxdiary:~$ sleep 300 \u0026amp; [1] 代表指定給該工作的序號 8521 代表 PID (process ID) 若想查詢當前的背景工作可使用 jobs\n指令，\nbang@linuxdiary:~$ jobs 但如果後悔把命令放入背景時怎麼辦？你可以利用 fg 命令把工作帶回前景 (foreground)；如果背景中堆積了好幾個命令，可用行程識別碼或工作序號來挑選他們。\nbang@linuxdiary:~$ fg %1 或\nbang@linuxdiary:~$ fg 8521 正在前景中執行的 sleep 300 是否困擾著你，可以不要等待嗎？ 是的~ 可以\n此時你可以點擊鍵盤上的組合鍵 Ctrl + Z ( 暫停程序，並將程序放置背景 )\nbang@linuxdiary:~$ fg %1 但此時的工作是暫停的，若希望它能繼續在背景中執行，可利用 bg 命令恢復在背景(background) 中暫停的工作。\nbang@linuxdiary:~$ bg %1 如果想要刪除在背景的工作可用 kill 來完成\nbang@linuxdiary:~$ kill %2 最後介紹的指令，將對常用 ssh 遠端登入的使用者很有幫助，nohup\n(no hang up，不要掛斷)。當使用者利用 ssh 等指令或軟體登入主機後，想要執行某個指令，但一旦登出或關掉 ssh 軟體，那個在背景執行的工作會跟著消失，主要原因是它的父行程被關閉了，也就是使用者剛剛關閉的 bash，那怎麼辦？nohup 可以為您強制保存背景工作，即便父行程被關閉，以下為示範\nbang@linuxdiary:~$ nohup sleep 500 \u0026amp; 此時關閉 shell，重新登入\nbang@linuxdiary:~$ ps -fC sleep ","date":"3 April 2025","externalUrl":null,"permalink":"/posts/linux-background-exec/linux-test/","section":"Posts","summary":"","title":"Linux application running in backhround","type":"posts"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","externalUrl":null,"permalink":"/topics/","section":"Topics","summary":"","title":"Topics","type":"topics"}]