Hydrus Network是一款開源圖片管理軟體,適合想用標籤管理大量混雜的圖片、影片、文件的用戶。Hydrus Network支援Linux/Windows/macOS,並有許多輔助工具。
基礎用法請看此篇: Hydrus Network使用教學
本文著重探討如何從遠端存取Hydrus Network的圖庫。
目前Hydrus Network(版本534)有提供"client api"讓第三方程式存取圖庫,例如Hydrus Web網頁、手機APP「綁架小蘿莉」等。但Hydrus無法以headless模式執行。這代表要遠端存取,電腦必須開著登入桌面,並開啟Hydrus主程式,之後client api服務才會跑起來。
這對Linux系統很是不利,萬一我的主機沒有螢幕呢?
開發者給出的解法:使用Docker跑Alpine Linux系統,在裡面自動啟動Xvfb+Hydrus,使其24小時待在背景,這樣就可以透過網頁VNC遠端存取Hydrus主程式,電腦不用啟動X視窗系統也可以跑client api服務。
為此,本文討論的就是以Docker設定Hydrus Network,與其相關服務的作法。
1. 新增Client API金鑰#
參見 啟動Hydrus伺服器服務,新增一組client api金鑰,並將金鑰複製下來。
Hydrus主程式無法跟Docker版的一起跑,資料庫存取會衝突,為此設定完成後要將Hydrus關閉。
2. 遠端存取Hydrus的網路設定#
請參考內網穿透軟體: 開源內網穿透軟體比較
或是使用Port-forwarding+DDNS,讓本機的容器服務能從外部存取。
別忘記在設定好下一節的服務後,開放對應的防火牆通訊埠。
3. 撰寫Hydrus Network的Docker-compose#
這一節,我們要讓Hydrus在Docker裡跑起來。
Hydrus的資料庫可以共用,但注意容器裡面跑的Hydrus一律都是最新版,所以請確認您先前安裝的Hydrus也得是跟Docker一樣的版本,或是索性只用Docker版Hydrus,才不會發生資料庫毀損。
安裝 Docker
從Github拉取等會用到的映像檔
sudo docker pull ghcr.io/hydrusnetwork/hydrus:latest
sudo docker pull ghcr.io/hydrusnetwork/hydrus:server:latest
sudo docker pull ghcr.io/floogulinc/hydrus-web:latest
- 新增docker-compose.yml
mkdir ~/hydrus-docker
cd ~/hydrus-docker
vim docker-compose.yml
- 新增以下內容。此Docker-compose除了Hydrus本體外,還包含能用網頁存取圖庫的Hydrus Web服務。
version: '3.8'
services:
hydrusclient:
image: ghcr.io/hydrusnetwork/hydrus:latest
container_name: hydrusclient
restart: unless-stopped
environment:
- UID=1000
- GID=1000
volumes:
# 填入Hydrus Network資料庫所在路徑
- /home/user/.local/share/hydrus/db:/opt/hydrus/db
tmpfs:
- /tmp
ports:
# 網頁noVNC通訊埠
- 5800:5800
# client api通訊埠
- 45869:45869
hydrusserver:
image: ghcr.io/hydrusnetwork/hydrus:server
container_name: hydrusserver
restart: unless-stopped
volumes:
# 填入Hydrus Network資料庫所在路徑
- /home/user/.local/share/hydrus/db/:/opt/hydrus/db
hydrus-web:
image: ghcr.io/floogulinc/hydrus-web:latest
container_name: hydrus-web
restart: always
ports:
# Hydrus Web的網頁界面通訊埠
- 8080:80
- 啟動容器服務
sudo docker compose up -d
- 瀏覽器開啟
http://localhost:5800
即可進入Hydrus Network界面,用法跟一般Hydrus無異。
我自己測試的結果是Intel+Ubuntu 22.04正常顯示,但Nvidia+Arch Linux的容器一直出現swrast.so
缺失的問題,導致Hydrus畫面出不來。
不過沒有畫面也沒關係,容器一啟動,Hydrus就會跟著啟動client api的服務。
4. 設定Hydrus Web網頁存取#
Hydrus Web是floogulinc開發的網頁程式,界面會隨螢幕大小自動變化,適合電腦和手機使用。
原始碼: floogulinc/hydrus-web: Web client for Hydrus - GitHub
其支援搜尋Hydrus圖庫標籤、檢視圖片、編輯圖片標籤。
上一節的docker-compose有包含Hydrus Web,自己跑的跟 官網hydrus.app的比較起來,差別在自己跑的允許HTTP連線。
用網頁瀏覽器開啟Hydrus Web:
https://localhost:8080
在Settings裡面填入Hydrus的IP和client api金鑰
點選Test,確認下面顯示權限相關訊息才算連線成功
回到首頁,就可以用Hydrus的標籤語法搜尋圖片了
點選圖片可直接編輯標籤
5. 設定「綁架小蘿莉」手機APP#
NO-ob開發的手機APP “LoliSnatcher_Droid”,能用來看booru系的網站,同時也可以連線至Hydrus。
有趣的是明明沒露點,Github卻顯示該儲存庫含有敏感內容XDD 大概是APP名字取得很危險吧…LoliSnatcher直譯就是「綁架小蘿莉」。
LoliSnatcher只有Android版,iOS用戶請改用閉源的 Anime Boxes
從 Github下載APK
安裝後點選Add New Booru,Booru Type選取Hydrus,並填入Hydrus的IP、client API的金鑰
點選最上方Test Booru,確認能連線(綠燈)後才按Save Booru
在這裡就可以搜尋Hydrus圖庫的圖片了,LoliSnatcher還支援儲存搜尋紀錄、多重分頁、編輯圖片標籤。
6. 其他Hydrus遠端服務#
Hydrus官方文件提及的Docker服務還有以下幾個:
- funmaker/Hybooru:類似Hydrus Web,界面做得跟Danbooru一樣,但是開發者沒有提供預先建置的Docker映像檔。
- thatfuckingbird / hydownloader:基於gallery-dl的自動抓圖程式。
- Hydrus IPFS:使用IFPS協定傳輸檔案
- TOR:用加密網路分享檔案