快轉到主要內容

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

· 民國114年乙巳年
· ·
分類   Linux系統 Self-hosting自架
標籤   Hydrus Network Docker Media Server Photo Gallery
目錄

Hydrus in a container (HiC),打個嗝先。

Hydrus Network是一款開源圖片管理軟體,適合想用標籤管理大量混雜的圖片、影片、文件的用戶。Hydrus Network桌面版支援Linux、Windows、macOS,並有許多輔助工具。

基礎用法請看此篇:Hydrus Network:以標籤分類的圖片管理軟體,數位囤積症救星

本文Ivon著重探討如何遠端存取Hydrus Network的圖庫。

Hydrus Network有提供「client api」讓第三方程式存取圖庫。

例如使用floogulinc開發的Hydrus Web網頁程式檢視,能夠遠端編輯Hydrus Network圖庫的標籤。它的界面會隨螢幕大小自動變化,適合電腦和手機使用。

還有NO-ob開發的「綁架小蘿莉」手機APP,能用來看booru系的圖站,同時也可以連線至Hydrus,用手機檢視Hydrus Network圖庫。

但有個問題要解決,Hydrus Network本體無法以headless模式執行,不能單純開著server端。這代表要用client api遠端存取,電腦必須啟動圖形界面,並開啟Hydrus Network主程式,之後client api服務才會跑起來。

萬一主機沒有螢幕呢?如何在伺服器headless執行Hydrus Network?開發者給出的解法:使用Docker跑Alpine Linux系統,在裡面啟動FVWM視窗管理器與Hydrus Network,使其24小時待在線上,這樣就可以透過網頁noVNC,遠端存取Hydrus Network主程式。電腦不用啟動X視窗系統也可以headless的跑client api服務。

如此一來,便能存取Hydrus Network主程式,也可以用Hydrus Web簡單管理圖庫內容了!

本文討論的就是以Docker設定Hydrus Network,與其相關服務的作法。後面會在討論如何遠端上傳圖片。

1. 遠端存取Hydrus Network的網路設定
#

解決外網連內網的問題。

請參考內網穿透軟體:開源內網穿透軟體比較

或是使用Port forwarding + DDNS,讓本機的容器服務能從外部存取。

別忘記在設定好下一節的服務後,開放對應的防火牆通訊埠。

2. 撰寫docker-compose
#

這一節,我們要讓Hydrus Network在Docker裡跑起來。

Docker版的Hydrus資料庫可以跟桌面版Hydrus Network共用,但注意容器裡面跑的Hydrus Network版本,請確認您先前安裝的Hydrus Network得是跟Docker一樣的版本。或是索性只用Docker版Hydrus Network,才不會發生資料庫毀損。

Hydrus Network官方的docker-compose範本太複雜了,我將其簡化到只跑三個服務,也就是Hydrus Client、Hydrus Server、Hydrus Web。

  1. 安裝Docker

  2. 從Github拉取等會要的映像檔

sudo docker pull ghcr.io/hydrusnetwork/hydrus

sudo docker pull ghcr.io/hydrusnetwork/hydrus:server

sudo docker pull ghcr.io/floogulinc/hydrus-web
  1. 新增docker-compose.yml
mkdir ~/hydrus-docker

cd ~/hydrus-docker

vim docker-compose.yml
  1. 新增以下內容。
services:
  hydrusclient:
    image: ghcr.io/hydrusnetwork/hydrus:latest
    container_name: hydrusclient
    restart: unless-stopped
    environment:
      - UID=1000 # 使用一般使用者執行
      - GID=1000
      - TZ=Asia/Taipei # 設定時區
    volumes:
      - /home/user/.local/share/hydrus/db:/opt/hydrus/db # 填入Hydrus Network資料庫所在路徑
      - /home/user/Downloads/:/mnt/inbox # (選擇性)把檔案放到宿主機/home/user/Download目錄,Hydrus Network容器才可以看到並匯入
    tmpfs: # 提昇快取速度
      - /tmp
    ports:
      - 5800:5800 # 網頁noVNC通訊埠
      - 45869:45869 # client api通訊埠

  hydrusserver:
    image: ghcr.io/hydrusnetwork/hydrus:server
    container_name: hydrusserver
    restart: unless-stopped
    volumes:
      - /home/user/.local/share/hydrus/db/:/opt/hydrus/db # 填入Hydrus Network資料庫所在路徑

  hydrus-web:
    image: ghcr.io/floogulinc/hydrus-web:latest
    container_name: hydrus-web
    restart: always
    ports:
      - 8080:80 # Hydrus Web的網頁界面通訊埠
  1. 啟動容器服務
sudo docker compose up -d
  1. 瀏覽器開啟http://localhost:5800即可進入Hydrus Network界面,用法跟一般Hydrus Network無異。

  2. 點選services → manage services,對client api點二下,按apply。

  3. 按services → review services,點選client api的頁籤,再點選add → manually。此頁面會產生一組金鑰(access key),將其保存下來。接著所有管理權限都打勾,按appy。

  4. 用瀏覽器開啟http://localhost:45869,應會看到Hydrus Network client api顯示正在運作的訊息。

3. 設定Hydrus Web網頁界面
#

Hydrus Web功能比Hydrus Network少,只能搜尋Hydrus圖庫標籤、檢視圖片、編輯圖片標籤,界面比較簡潔幹練。足夠遠端管理圖片了。

上一節的docker-compose已經包含Hydrus Web,自己跑的跟hydrus web官網的比較起來,差別在自己跑的允許HTTP連線。

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

  2. 在Settings裡面填入Hydrus Network的IP和client api金鑰。如果Hydrus Network是透過Docker跑,可能要填寫容器內部IP,這個可以用docker inspect hydrusclient | grep "IPAddress"指令查看。

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

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

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

  6. Hydrus Web的Pages頁面能檢視Hydrus Network上個工作階段所開啟的分頁,但是不能新增或關閉。

  7. Hydrus Web尚能管理收件匣的圖片(搜尋system:inbox標籤),決定是否要進入封存(system:archived標籤)。鑑於Hydrus Web無法手動進行選取匯入圖片的操作,所以有賴Hydrus Network的自動化匯入功能(import folder)發起。

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

綁架小蘿莉,原名叫做LoliSnatcher,指的是從網路下載各種圖片,不是犯罪喔。有趣的是明明沒露點,Github卻顯示該儲存庫含有敏感內容XDD 大概是APP名字取得很危險吧…

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還支援儲存搜尋紀錄、多重分頁、編輯圖片標籤。

5. 遠端上傳檔案到Hydrus Network的步驟
#

從手機或者其他客戶端,上傳圖片到Hydrus Network,並進行標籤管理。

覺得Hydrus Network在VNC裡面的界面不好操作,就用Hydrus Web吧。

  1. 上面的docker-compose.yml範例裡面,已經有一個收件匣的目錄範例,那麼,我只要從遠端,利用SFTP的方式將檔案丟到該目錄就行了。

  2. 開啟Hydrus Network,勾選file → import and export folders → manage import folders,設定監視inbox目錄。這樣只要偵測到圖片,就會自動進行匯入作業。

  3. 然後就可以用Hydrus Web頁面管理標籤為system:inbox的檔案了。

參考資料
#

相關文章

Hydrus Network:以標籤分類的圖片管理軟體,數位囤積症救星
分類   Linux系統 Self-hosting自架
標籤   Hydrus Network Photo Gallery Media Server Data Hoarding
Docker架設Joplin同步伺服器 (Joplin Server) ,雲端同步筆記,筆記發表為公開網頁
分類   Linux系統 Self-hosting自架
標籤   Joplin Note-Taking Docker
Immich相簿架設與使用,界面長得最像Google相簿的照片管理軟體
分類   Linux系統 Self-hosting自架
標籤   Photo Gallery Google Photo Media Server

留言板

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。