快轉到主要內容

標籤式圖片管理軟體,Hydrus Network的Docker遠端存取方案

Linux系統 Self-hosting自架 Hydrus Network Docker Media Server Photo Gallery
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

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,才不會發生資料庫毀損。

  1. 安裝 Docker

  2. 從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
  1. 新增docker-compose.yml
mkdir ~/hydrus-docker
cd ~/hydrus-docker
vim docker-compose.yml
  1. 新增以下內容。此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
  1. 啟動容器服務
sudo docker compose up -d
  1. 瀏覽器開啟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連線。

  1. 用網頁瀏覽器開啟Hydrus Web:https://localhost:8080

  2. 在Settings裡面填入Hydrus的IP和client api金鑰

  3. 點選Test,確認下面顯示權限相關訊息才算連線成功

  4. 回到首頁,就可以用Hydrus的標籤語法搜尋圖片了

  5. 點選圖片可直接編輯標籤

5. 設定「綁架小蘿莉」手機APP
#

NO-ob開發的手機APP “LoliSnatcher_Droid”,能用來看booru系的網站,同時也可以連線至Hydrus。

原始碼: NO-ob/LoliSnatcher_Droid

有趣的是明明沒露點,Github卻顯示該儲存庫含有敏感內容XDD 大概是APP名字取得很危險吧…LoliSnatcher直譯就是「綁架小蘿莉」。

LoliSnatcher只有Android版,iOS用戶請改用閉源的 Anime Boxes

  1. Github下載APK

  2. 安裝後點選Add New Booru,Booru Type選取Hydrus,並填入Hydrus的IP、client API的金鑰

  3. 點選最上方Test Booru,確認能連線(綠燈)後才按Save Booru

  4. 在這裡就可以搜尋Hydrus圖庫的圖片了,LoliSnatcher還支援儲存搜尋紀錄、多重分頁、編輯圖片標籤。

6. 其他Hydrus遠端服務
#

Hydrus官方文件提及的Docker服務還有以下幾個:

  • funmaker/Hybooru:類似Hydrus Web,界面做得跟Danbooru一樣,但是開發者沒有提供預先建置的Docker映像檔。
  • thatfuckingbird / hydownloader:基於gallery-dl的自動抓圖程式。
  • Hydrus IPFS:使用IFPS協定傳輸檔案
  • TOR:用加密網路分享檔案

相關文章

PhotoPrism,用Docker架設Google相簿替代品
Linux系統 Self-hosting自架 Photo Gallery Google Photo
Docker跑calibre-web,架設閱讀電子書伺服器
Linux系統 Self-hosting自架 Calibre Docker
你知道Docker會讓Linux的UFW防火牆失效嗎?用ufw-docker解決此問題
Linux系統 Self-hosting自架 Linux Docker

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。