按我返回上一章 Link to heading

返回主目錄 Link to heading

(本文最後更新時間:2024年8月11日)

Docker係咩黎?有咩咁勁? Link to heading

Docker可以將有用程式及佢所需既野一次過打包做一舊,只需行一條Script就可以用佢,非常方便。

冇Docker時同一部機想行唔同程式可能遇到相容性問題(例如兩個程式要用同一款但唔同版本既Library,又或者Synology DSM個Library版本太舊)。Docker完美解決咗呢個問題,成件打包用就得。

其實Docker做到既野虛擬機都做到,不過虛擬機比Docker用更多CPU及RAM。

要玩Docker的話強烈建議加RAM

咩機支持Docker? Link to heading

Synology既話Plus系列或較新既非Plus機種都有支持。呢到可以睇適用機種。

注意非Plus機種用ARM架構既CPU,可能行唔到某啲Docker映像(Image)。

其他牌子請自己Google😛

用Docker要注意啲咩? Link to heading

只用軟件官方或知名團體提供既既Docker映像 Link to heading

用網上既Docker映像本質上同用陌生人既EXE檔冇咩分別,所以要用官方或其他可信團體整既版本。

例如Linuxserver.ioHotio既Docker映像都多人用,軟件官方冇出Docker版既話可以先睇佢地。

更好既做法係自己去Github撈原始碼落黎砌個Docker映像,但可惜唔係人人都識或想自己做。

Docker本身會提供一定保護,例如你冇Mount volume既話容器(Container)係存取唔到個宿主機既檔案,但有惡意既容器仲可以用其他方法攻擊你,例如行掘礦程式,又或者嘗試破解屋企網絡入面既其他Service。

Docker名詞解釋

映像(Image) 係容器既藍圖,入面有齊曬個軟件運行需要既東西。Docker會根據呢個藍圖去複製及產出容器。

容器(Container) 係實際行緊既程式,由映像產生出黎。一個映像可以生成多個同一樣既容器。

可以類比:Docker係印鈔機,映像係鈔票模板,容器係實際印出黎比你用既鈔票。

Docker既安全貼士 Link to heading

Docker預設係以Root身份行。咁既話出現容器逃逸 時隻容器就可以對你部機為所欲為。

雖然咁講,但只要唔用--privileged行既話,Docker本身既保護都強,容器逃逸 唔係咁易發生。

但為咗減低風險,最好起一個User專用黎行Docker野,並起個文件夾比呢個User專用,其他檔案有需要先比權限佢掂。

然後Docker加兩個Flag行:--user <新User UID>:<新User GID> --security-opt=no-new-privileges

Synology用家可以睇呢個教學,有整Docker專用User及整Docker版家庭影院既步驟。

注意

有啲Docker映像只支持用Root行。

我建議任何Docker映像都試下用以上兩個Flag行下先(可能要搞好多野先用到),實在搞唔掂再用Root行。

呢到有個Docker安全性貼士清單,可以按自己需要再加入面講既Flag行Docker。

唔想打Command,有冇比較容易操作既Docker管理介面? Link to heading

Synology DSM最新既Container Manager比以前個版本改善咗好多,加咗Docker Compose支持,基本上已足夠絕大部分情況使用。

如果用緊較舊版本既DSM,或用緊其他牌子NAS又想要好啲既介面,可以睇下Portainer

呢到簡單講下點樣安裝Portainer:

(以下用Synology DSM 7做例,但只要有Docker及Docker Compose既機都適用)

  1. 以管理員帳號身份登入DSM,係其他User存取唔到既地方(例如管理員帳號既home文件夾)到開個文件夾,名稱隨意(例如Portainer

  2. 搵部電腦整個compose.yaml檔案,內容如下:

# compose.yaml
services:
  portainer-ce:
    container_name: portainer-ce
    image: portainer/portainer-ce:latest
    ports:
       - "9443:9443"
       ## Portainer支持Port 9000行HTTP。如有需要用HTTP,可將下一行既#號刪除
       #- "9000:9000" 
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/data
    restart: unless-stopped

networks:
  default:
     name: portainer-ce-network
  1. compose.yaml上傳至NAS頭先新開既文件夾

  2. 係新開文件夾入面開個data文件夾

做曬以上後應該睇到係咁樣:

然後要行Command。有幾種方法(例如網上有人用DSM個任務排程表行),我呢到只講SSH:

  1. 係NAS介面開啟SSH服務,並用管理員帳號SSH入去(Synology教學/QNAP教學

  2. 係SSH入面用cd指令走入去上部分第一步開既文件夾

提示:

  • ls -al指令睇當下文件夾有咩野
  • pwd指令睇而家係邊個文件夾
  • cd <文件夾名稱>指令入去另一個文件夾
    • cd ..指令去上一層文件夾
    • cd /指令返去最上層文件夾
    • cd指令(後面唔加野)可返回當前SSH帳號既home文件夾
入到有齊data文件夾同compose.yaml既文件夾

入到有齊data文件夾同compose.yaml既文件夾

  1. 打以下指令其中一個以啟動Portainer(如果佢問你密碼,你照入返就得)
  • sudo docker compose up -d
  • sudo docker-compose up -d(Synology要用呢個)
  1. 用電腦瀏覽器打https://<NAS IP>:9443去到Portainer介面,入去跟佢指引做就得
設定密碼後入去按Get Started即可

設定密碼後入去按Get Started即可

以後如果想停止Portainer,同樣SSH入去並cdcompose.yaml所在文件夾打以下指令其一:

  • sudo docker compose down
  • sudo docker-compose down(Synology要用呢個)

最後,如果將來唔再需要用SSH,可以去NAS介面將SSH服務停咗佢。

Synocommunity(第三方管理工具)

如果你熟Linux指令行既話,SSH入Synology DSM時會發現好多常用既工具都冇,例如iperf3tmuxnanoless全部冇 😂

呢個時候可以用Synocommunity既套件:呢個軟件庫係一眾熱心人士整既,已經有至少10年歷史;入面除咗指令行工具外亦有其他如Jellyfin、Borg、Cloudflared等套件,可以睇下。

如果你信唔過第三方軟件庫既話,可以自己直接撈原始碼落黎做Static build,再上載去部NAS到用。

Docker有咩好玩? Link to heading

自製Netflix 👍 Link to heading

Jellyfin介面

Jellyfin介面

軟件:

Selfhost圈子入面最熱門既內容。

用家先係Sonarr/Radarr指定想睇咩劇集/電影,然後Sonarr/Radarr去唔同網站撈種(Prowlarr做種子整合),再叫qBittorrent去下載,下載完就可以係Plex/Jellyfin到睇。

延伸閱讀:Sonarr/Radarr官方文檔

Private tracker

最新既電影/劇集等比較容易係公海撈到種,而較舊或冷門既資源可能好難搵。

有興趣既玩家可以研究下Private tracker(PT)。大既PT站資源較齊,較易搵到冷門或較舊既資源。

PT唔係直接就入到會,可能要你課金(中國大陸/台灣個啲),又或者要現有會員出邀請比你。

另外PT通常禁止會員只下載不上傳,上傳得太少可能會被踢走。有玩家甚至會整Seedbox專做PT。

全家過濾廣告 👍 Link to heading

AdguardHome介面

AdguardHome介面

軟件:AdGuardHome/PiHole

DNS層過濾廣告,同時亦可做家長監控(即是封鎖你指定既網頁)。

安裝後再係路由器到設定個DNS伺服器做佢,咁成個屋企網絡既機器都會過濾到廣告。

有興趣既話可以研究埋Unbound(Recursive DNS)或者DNS-over-HTTPS/DNS-over-TLS(Encrypted DNS)。前者可以增強私隱,後者可保證你寬頻供應商無法篡改你既DNS請求。

檢查寬頻供應商有冇篡改你 DNS 請求

先去路由器設定DNS伺服器做1.1.1.1,再去呢到做測試。

如顯示既ISP唔係Cloudflare,即可斷定你既DNS請求比你個寬頻供應商攔截及篡改咗。

注意:Encrypted DNS只能保證你既DNS請求不被第三方偷窺及篡改。

寬頻供應商仍然可以用其他方法干預你既網絡,例如直接封鎖你要去既網站既IP。

伺服器儀表板 👍 Link to heading

Dashy介面

Dashy介面

軟件:Homepage/Dashy/Heimdall/Homer

行一堆Service時好難記得曬每個Service既IP:Port係咩。

用呢啲儀表板可以將唔同Service既IP:Port標記曬係同一個地方,以後忘記既話入去㩒就得。

非常適合諗住將啲Service分享比屋企人/朋友用既人。

自製筆記軟件 Link to heading

Joplin介面

Joplin介面

軟件:Joplin/Trilium/Logseq/Memos

各類筆記軟件,可以逐個逐個裝黎試下,睇下邊款岩用。

Synology自己都有Note Station

如果你用Obsidian既話,可以用remotely-saveobsidian-livesync(後者要自己起個CouchDB)。

將得USB連接既打印機/掃描器變成屋企網絡可用 Link to heading

Scanservjs介面

Scanservjs介面

軟件:(打印)CUPS/(掃描)Scanservjs

如果你同我一樣有部得USB既陳年多合一打印機,又或者係一定要裝垃圾軟件先用到既打印機,咁呢兩個軟件可以幫到你。

只要連接打印機同裝住呢兩個軟件既伺服器,成個屋企網絡既機就可以透過呢兩個軟件用隻打印機/掃描器,唔洗裝任何其他軟件。

不過視乎你部打印機既型號,有可能要你自己搵部打印機既Linux版驅動程式並安裝後先行到呢兩個軟件。

ChatGPT/Midjourney翻版 Link to heading

Text-generation-webui介面

Text-generation-webui介面

軟件:(Gen圖)ComfyUI/(Gen字)text-generation-webui

行AI你先要下載個Model,再係對應既軟件到載入就可以用。

呢兩個軟件都有API,識寫程式既話可以睇下。

自己行AI既最大賣點係冇Censorship,你問佢幾邪惡既野都會答你。此外亦可保障私隱

你部品牌NAS行AI應該有困難。如果有興趣既話,可以考慮下自組伺服器玩。

延伸閱讀:CivitAI(Gen圖Model下載)

延伸閱讀:r/LocalLLaMA

其他有趣軟件 Link to heading

👍 一個介面控制屋企既智能家具(HomeAssistant

👍 電子書下載及管理(LazyLibrarianCalibreCalibre-web

自製Onedrive(Nextcloud/Syncthing

Google Photo翻版(Immich/Photoprism/Photoview

RSS訂閱聚合(FreshRSS/Tiny Tiny RSS

翻牆工具(V2Ray/XRay/sing-box

各類Discord/Telegram bot(例如Discord播歌Bot/Telegram加密貨幣交易Bot

自製記帳App(Firefly III/Actual Budget

偵測特定網頁更新(Changedetection.io

多人遊戲伺服器(ARK/Barotrauma/CS2/Factorio/Minecraft/Palworld/Terraria/TF2等等,太多不能盡錄)

自製Cloud Gaming Server(Wolf

自動Steam掛卡(Archisteamfarm

Grammarly翻版(Languagetool

有用網站 Link to heading

Reddit:r/Selfhosted

Github:Awesome Selfhosted

This Week in Self-Hosted(Self host軟件新聞)

按我進入下一章 Link to heading

返回主目錄 Link to heading