# 如何讓 Hermes Agent 在伺服器上全天候運作

> 如何讓 Hermes Agent 在伺服器上 24/7 持續運作：在沒有瀏覽器的 VPS 上安裝、將閘道作為系統服務執行、重新開機後自動啟動、linger，以及 Docker。

Source: https://ailoot.ai/blog/zh-hant-tw/hermes-agent-vps-24-7/
Canonical: https://ailoot.ai/blog/zh-hant-tw/hermes-agent-vps-24-7/
Language: zh-Hant-TW
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-116
Revision: sha256-3487d72ec172fb79c25ed2a7b16b840808f5043f30e9fcd02cf74eb63b589dc2


在筆記型電腦上安裝 Hermes Agent 後，可能會冒出一個問題：筆電闔上時，誰會在 Telegram 上回覆訊息、整理早晨摘要？在你的桌邊，只有電腦開著時，代理才會運作。若要讓機器人一直保持上線，並讓排程工作自行執行，就必須把代理移到伺服器上。

以下說明如何在一般 Linux 伺服器上安裝 Hermes、將閘道設為持續執行並在重新開機後自動啟動的服務，以及如何限制存取，避免陌生人進入終端機。本指南參考官方文件。

如果你還沒安裝 Hermes，請先閱讀另一篇概覽，了解[這個代理是什麼，以及如何安裝](https://ailoot.ai/blog/zh-hant-tw/hermes-agent-install-setup/)。本指南假設你已經在自己的機器上啟動它，只說明如何將它移到伺服器上。

Ailoot 的使用資訊請參閱[文件](https://ailoot.ai/docs/)。



## 為什麼要把 Hermes Agent 從筆記型電腦移到伺服器？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

個人電腦只有在你待在附近且保持開機時才能運作。若要全天候運作，就需要伺服器：即使你的電腦關機，Telegram 機器人仍會回覆，排程工作也會自行執行。只有在這種情況下才需要伺服器；平常使用代理時，筆記型電腦就足夠了。

</div>

在筆記型電腦上，只有螢幕掀開、你也在附近時，Hermes 才會運作。闔上螢幕，機器人就安靜下來；早晨摘要也不會送達。對於「在通訊軟體上回覆他人，並按照排程處理事情」這種任務來說，這可不理想。

伺服器的不同之處就在這裡：它不會休眠，也不依賴其他設備。你在伺服器上安裝同一個 Hermes，之後它就能自行運作：凌晨三點在 Telegram 上回覆訊息、每天早晨整理你關注主題的新聞，並在每次執行之間保留工作階段。

如果你有要交給代理持續處理的工作，就適合把它移到伺服器上：為自己或團隊打造的機器人、早晨摘要、自動回覆，或定期處理文件。如果你只是在特定專案中試用 Hermes，而且會待在附近，就暫時不需要伺服器；那只會多一道步驟。

## 在 VPS 上安裝 Hermes 前要準備什麼？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

你需要一台可透過 SSH 存取的 Linux 伺服器（官方團隊會在全新安裝的 Ubuntu 上測試）、事先選好的模型，並了解代理在伺服器上通常不需要瀏覽器。若要無人值守地運作，透過 Nous Portal 存取模型最方便：OAuth 登入會自動更新，因此權杖過期不會讓服務在夜間中斷。

</div>

安裝前先準備好三樣東西。

**伺服器。** 一般的 Linux VPS 就可以。文件列出的第一級支援平台是 Linux 和 WSL2，測試則使用最新版本的 Ubuntu。只要系統具備 glibc、systemd 和常見的目錄配置，Hermes 就能正確安裝。這在伺服器上很重要，因為以下所有自動啟動步驟都依賴 systemd，而 Ubuntu 和 Debian 都內建了 systemd。

**SSH 存取權。** 你會透過 SSH 從終端機連線到伺服器，不會在那裡使用滑鼠。以下所有命令都會在這個 SSH 工作階段中執行。如果你會 vibe coding，但還不太熟悉終端機，別擔心：命令只有幾個，而且可以逐行完整複製。

**選好的模型。** 代理不會自行思考，而是呼叫模型。對於不需你看顧的伺服器，模型存取權不會過期非常重要。最簡單的選項是透過 `hermes setup --portal` 使用 Nous Portal 訂閱：登入採用 OAuth，權杖會自動更新。你也可以使用自己的 API 金鑰，但要確認帳戶裡有餘額；沒有餘額的無頭代理只會停止回應。模型的上下文視窗至少必須有 64,000 個權杖，否則 Hermes 會拒絕使用該模型啟動。清單中的所有雲端模型都符合這項要求。

<div class="aside" data-semantic="callout" role="note" aria-label="注意">

注意

官方文件沒有提供選擇 VPS 或最低資源需求的確切數字，因此這裡也不提供確切數字。根據所描述的經驗，搭載機器人與排程的閘道只需要一台規格普通的機器，因為繁重的運算是在模型端進行。伺服器本身的負載很低。瀏覽器自動化是最耗資源的部分，但在伺服器上通常用不到（稍後會再說明）。

</div>

## 如何用一個命令在伺服器上安裝 Hermes Agent？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

透過 SSH 連線到伺服器，執行略過伺服器上瀏覽器的安裝程式旗標：curl -fsSL <https://hermes-agent.nousresearch.com/install.sh> \| bash -s -- --skip-browser。接著重新啟動終端機 shell，並使用 hermes setup --portal 選擇模型。使用 hermes doctor 檢查安裝狀態。

</div>

在伺服器上安裝的方式幾乎和筆記型電腦相同，只有一個差異：代理通常不需要瀏覽器。瀏覽器自動化還會帶入體積龐大的 Chromium，因此要使用 `--skip-browser` 旗標。

1.  ### 透過 SSH 連線到伺服器

    ```bash
    ssh root@your-server-address
    ```

    接下來所有命令都要在這個工作階段中，直接於伺服器上執行。

2.  ### 執行不安裝瀏覽器的安裝程式

    ```bash
    curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browser
    ```

    指令碼會下載所需環境並安裝 `hermes` 命令。`--skip-browser` 旗標會略過瀏覽器自動化的安裝；在沒有圖形介面的伺服器上，安裝它只會佔用空間。之後若需要瀏覽器，可以另外安裝。

3.  ### 重新啟動 shell 並選擇模型

    ```bash
    source ~/.bashrc
    hermes setup --portal
    ```

    第一行會載入新的 `PATH`，讓系統找得到 `hermes` 命令。第二行會開啟 Nous Portal 登入流程：確認登入後，代理就能使用模型與服務，不必為每項服務另外準備金鑰。

4.  ### 檢查安裝狀態

    ```bash
    hermes doctor
    ```

    此命令會顯示已安裝的項目、缺少的項目，以及修正方法。綠色標記代表一切就緒。

新增機器人和排程之前，先在伺服器上直接完成一次正常對話：執行 `hermes`，並交給它一個答案可以驗證的簡單任務。文件明確建議，在一般對話正常運作前，不要一股腦加入各種功能；這是很好的建議。





## 如何讓 Hermes 全天候運作？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

先用 `hermes gateway setup` 設定閘道並連接 Telegram。接著用一個命令將閘道設為服務：`hermes gateway install` 會安裝使用者服務，`sudo hermes gateway install --system` 則會安裝在伺服器開機時啟動的系統服務。使用者服務用 `hermes gateway start`、`stop` 和 `status`；VPS 系統服務的每次檢查與變更，都要保留明確的 `--system` 範圍及必要權限。

</div>

閘道是單一的 Hermes 背景程序，負責維持與所有通訊軟體的連線、管理工作階段，以及執行排程工作。所有全天候運作都圍繞著它進行。目標是讓這個程序自動啟動並持續運作。

先設定閘道並連接通訊軟體：

```bash
hermes gateway setup
```

設定精靈會引導你設定平台，並協助輸入機器人權杖和存取清單。Telegram 的連線步驟（使用 BotFather 建立機器人、查出你的 ID，並輸入權杖）已在[主要安裝指南](https://ailoot.ai/blog/zh-hant-tw/hermes-agent-install-setup/)中說明，這裡就不再重複。

接下來是最常被忘記的陷阱。如果你只執行 `hermes gateway`，程序就只會在 SSH 工作階段開啟時運作。關閉終端機，閘道就會停止。若要讓它持續運作，就必須交由系統管理。只需要一個命令：

```bash
hermes gateway install
```

這會將閘道安裝為服務：Linux 使用者 systemd 服務，macOS 則透過 launchd。系統會監控程序，若程序當掉就會重新啟動。

在伺服器上，通常需要使用另一種選項：在任何使用者登入前，於機器開機時啟動的系統服務：

```bash
sudo hermes gateway install --system
```

這正是 VPS 所需的設定：伺服器重新開機後，服務會自行啟動，機器人也會重新上線。你可以使用以下簡單命令管理服務：

```bash
hermes gateway start     # start
hermes gateway stop      # stop
hermes gateway status    # check status
```

若要操作系統服務，請在這些命令前加上 `sudo`，並加上 `--system` 旗標。若沒有這些參數，命令操作的會是使用者服務，而不是開機時啟動的服務：

```bash
sudo hermes gateway start --system
sudo hermes gateway stop --system
sudo hermes gateway status --system
```

## 為什麼需要 linger？不設定會有什麼問題？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

如果你把閘道安裝為使用者服務（未加上 `--system`），systemd 會在你離開 SSH 後停止服務，開機時也不會啟動。執行一個命令即可修正：`sudo loginctl enable-linger username`。之後服務就能獨立於你的登入與登出持續運作。

</div>

這是最常見的絆腳石：你安裝了服務，但機器人到了晚上仍然停止回應。原因在於 Linux 使用者服務的運作方式。

使用者 systemd 服務預設會綁定你的工作階段。你透過 SSH 連線時，使用者管理器就會啟動，服務也隨之運作。你登出後，系統會認定該使用者已停用，因此也會一起關閉該使用者的服務，包括閘道。若你會反覆登入和登出伺服器，這就會造成問題：只有在 SSH 連線期間，機器人才會上線。

你可以啟用 linger 模式來解決這個問題。它能讓系統在使用者未登入時，仍持續執行使用者管理器：

```bash
sudo loginctl enable-linger username
```

執行此命令後，使用者服務就會自行運作，並在伺服器開機時啟動，不必等你登入。若未啟用 linger，系統就會恢復原本的行為：你離開 SSH 後閘道就會停止，開機時也不會啟動。文件明確指出了這一點。

<div class="aside" data-semantic="callout" role="note" aria-label="注意">

注意

這不適用於系統服務（使用 `sudo hermes gateway install --system` 安裝）：系統服務已在整台機器的層級執行，並會在開機時啟動。只有使用者服務需要 linger。請擇一使用：系統服務，或啟用 linger 的使用者服務。

</div>

## 如何透過 Docker 在伺服器上執行 Hermes，並自動重新啟動？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

如果你偏好 Docker，可以在容器中讓 Hermes 以持續運作的閘道形式執行：docker run -d --name hermes --restart unless-stopped -v ~/.hermes:/opt/data -p 8642:8642 nousresearch/hermes-agent gateway run。--restart unless-stopped 旗標會在重新開機後重新啟動容器，而映像檔中的閘道程序若當掉，也會重新啟動。

</div>

Docker 也是讓代理持續在伺服器上運作的有效方法，尤其適合已熟悉容器，或想將代理與主系統隔離的情況。先使用 `docker run ... setup` 設定一次，再於背景啟動容器：

```bash
docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -p 8642:8642 \
  nousresearch/hermes-agent gateway run
```

以下是負責全天候運作的各行命令的作用：

- `-d` — 容器會在背景執行，不會讓終端機保持開啟。
- `--restart unless-stopped` — 伺服器重新開機或發生當機後，Docker 會重新啟動容器。只有在你手動停止容器時才不會重新啟動。
- `-v ~/.hermes:/opt/data` — 設定、金鑰、工作階段和記憶會保存在伺服器上、容器外部，即使重新建立容器也會保留。

映像檔還有另一層保護：閘道程序由 s6 監督程式管理。若閘道當掉，程序會在幾秒內重新啟動，容器本身則不受影響。這是雙重保護：Docker 從外部讓容器保持運作，s6 則監控容器內的程序。

使用 Docker 有一點差異要記住：這類安裝方式無法透過 `hermes update` 命令更新。要在 Docker 中更新，就必須換成新的映像檔：下載最新版並重新建立容器。

## 如何確認一切正常，並且重新開機後仍會運作？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

使用 systemctl 檢查服務狀態，並查看即時記錄。接著進行最重要的伺服器測試：重新啟動機器，確認機器人會自行恢復上線。Hermes 的工作階段和回覆在重新啟動後會保留；未完成的回覆會在恢復後送出。

</div>

使用者服務的狀態與記錄可用以下方式檢查：

```bash
hermes gateway status
journalctl --user -u hermes-gateway -f
```

VPS 建議的系統服務應改查系統範圍：

```bash
sudo hermes gateway status --system
sudo journalctl -u hermes-gateway -f
```

第一個指令檢查所選服務，第二個追蹤相同範圍日誌。這些 unit 名稱適用預設 `~/.hermes`；其他 Hermes home 的 unit 可能帶後綴，請依 status 輸出使用確切名稱。不要測系統安裝卻監看使用者 unit。Hermes 記錄檔位於 `~/.hermes/logs/`，秘密資訊會自動遮蔽，因此可以安全地傳給支援人員。

現在重新啟動伺服器，確認代理會自行恢復。這是最重要的伺服器測試，卻也是人們最容易忘記的步驟：

```bash
sudo reboot
```

等伺服器重新可連線後，透過 SSH 登入。系統安裝檢查 `sudo hermes gateway status --system` 與系統 journal；啟用 linger 的使用者安裝，則查 `hermes gateway status` 與使用者 journal，再透過 Telegram 傳訊息給機器人。如果它能在你不做任何操作的情況下回覆，就代表自動啟動設定正確。這就是整套設定的目的。

不用擔心對話會遺失。Hermes 會將工作階段寫入磁碟，即使閘道重新啟動也會保留。此外，如果閘道剛好在送出回覆時當掉，系統會在恢復後送出該回覆，而不是再次執行任務。這對全天候運作的機器人很重要：意外重新啟動不會中斷對話。

## 如何保護在伺服器上擁有終端機存取權的代理？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

三項主要防護措施：機器人預設不開放存取（只回覆存取清單上的人）、代理在執行危險命令前會先詢問，以及若要完全隔離，可在伺服器上的 Docker 沙箱中執行代理。最好不要在伺服器上啟用免確認模式（YOLO）。

</div>

在伺服器上執行的代理，是一個能存取終端機、且無人監督時仍會持續運作的程式。請先檢查以下三項設定。

**限制機器人的存取。** 預設情況下，閘道只會回覆存取清單上的人，或是在私人訊息中完成代碼連結的人。對於能存取終端機的機器人來說，這是正確的行為：陌生人傳訊息給機器人也無法做任何事。存取清單使用數字 ID 設定，例如 Telegram：

```bash
TELEGRAM_ALLOWED_USERS=123456789,987654321
```

**危險命令的執行確認。** 執行破壞性操作前，代理會先徵求你的許可。YOLO 模式可以停用確認；最好不要在無人看管的伺服器上啟用。確認機制正是為了避免在你不知情的情況下發生無法復原的操作。

**完全隔離用的沙箱。** 若要讓代理無法接觸伺服器的主系統，請在 Docker 容器中執行它的命令：

```bash
hermes config set terminal.backend docker
```

之後，代理在終端機中進行的所有操作都會在隔離的沙箱內執行，無法存取正在運作的伺服器。讓代理自主執行任務時，這是合理的防護措施。

## 如果機器人沒有回應，或閘道當掉，該怎麼辦？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

先檢查服務狀態和記錄；問題通常出在機器人權杖、存取清單或模型。如果整個程序完全凍結，systemd 服務有看門狗計時器；當閘道停止回報運作狀態時，計時器會重新啟動閘道。

</div>

機器人停止回應時，依照以下順序處理。先檢查安裝的範圍：系統服務查 `sudo hermes gateway status --system` 與系統 journal；使用者服務查 `hermes gateway status` 與使用者 journal。如果閘道正在執行，但訊息沒有送達，幾乎總是平台設定出了問題：機器人權杖錯誤，或對方不在存取清單上。在同一 Hermes home 重新執行 `hermes gateway setup`，再以 `hermes gateway status --system` 檢查系統服務，或以 `hermes gateway status` 檢查使用者服務。設定成功不能證明正確 gateway 已執行。

如果模型傳回空白或奇怪的回覆，請使用 `hermes model` 檢查，並確認供應商與登入狀態。從「一切都壞了」恢復到正常運作的一般步驟是：`hermes doctor`、`hermes model`、`hermes setup`，之後系統安裝查 `hermes gateway status --system`，使用者安裝查 `hermes gateway status`。

另外還有一種罕見但令人困擾的情況：整個程序凍結，卻沒有真正當掉。systemd 服務有看門狗計時器：在 `~/.hermes/config.yaml` 加上以下一行，然後重新安裝服務。

```yaml
gateway:
  systemd_watchdog_seconds: 120
```

```bash
# VPS 系統服務；使用原先安裝時的同一 Hermes home：
sudo hermes gateway install --system --force
sudo hermes gateway status --system
```

若是使用者服務，只以 `hermes gateway install --force` 重新產生該範圍，並查 `hermes gateway status`。選一個範圍，不要為修復單一 gateway 而同時安裝兩種。

之後閘道會定期向系統發出「我還在運作」的訊號；如果訊號停止，systemd 就會自動重新啟動程序。這項功能只適用於使用 systemd 的 Linux，而且只處理程序凍結。伺服器和通訊軟體之間發生一般網路中斷時，看門狗計時器不會造成影響。

## 關於在伺服器上使用 Hermes Agent，還有哪些常見問題？

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="本節重點">

重點

快速回答常見問題：是否一定需要 VPS、能否在一台機器上執行多個機器人、伺服器是否需要圖形介面，以及代理移到伺服器上後排程工作會如何運作。

</div>

<div class="section">

### 常見問題

我一定要租 VPS 嗎？自己的電腦可以嗎？

若要全天候運作，就需要一台永遠開著的機器。只要你願意永遠不關機，自己的電腦也能用。VPS 比較方便：它會一直開著，不受你正在工作或睡覺影響。一般 Linux 伺服器就可以；文件列出的第一級支援平台是 Linux，測試則使用全新安裝的 Ubuntu。

我可以在一台伺服器上執行多個機器人嗎？

可以。Hermes 支援設定檔，每個設定檔都有自己的服務。執行像是 \<profile\> gateway install 這樣的命令會建立名為 hermes-gateway-\<profile\> 的獨立服務，各自獨立運作。每個設定檔都有自己的設定、機器人權杖和記憶。

伺服器需要螢幕和圖形功能嗎？

不需要。伺服器可以在沒有螢幕的情況下運作，你可以透過終端機使用 SSH 管理它。這類伺服器上的代理通常不需要瀏覽器自動化，因此安裝程式要加上 --skip-browser 旗標；這會移除唯一需要圖形功能、且體積龐大的元件。

我不在時，排程工作還會執行嗎？

會，這正是移到伺服器的目的。同一個閘道會執行排程工作：每分鐘檢查一次排程，到時間就執行工作，再把結果傳送到同一個聊天室。由於閘道以服務形式全天候運作，排程會自行執行，不需要你介入。

更新後和伺服器重新開機後，機器人還會正常運作嗎？

會。設定、工作階段和記憶都儲存在 ~/.hermes 資料夾中，不會遺失。重新開機後，系統服務（或使用 --restart unless-stopped 的 Docker）會自行啟動閘道。未完成的回覆會在重新啟動後送出，不會遺失——不過，如果當機時回覆已經送出一半，它可能會再次送達，並附上可能重複的通知。

</div>

<div class="section" role="doc-bibliography" aria-label="來源">

### 來源

- [Hermes Agent，安裝](https://hermes-agent.nousresearch.com/docs/getting-started/installation)
- [Hermes Agent，快速入門](https://hermes-agent.nousresearch.com/docs/getting-started/quickstart)
- [Hermes Agent，支援的平台](https://hermes-agent.nousresearch.com/docs/getting-started/platform-support)
- [Hermes Agent，訊息閘道](https://hermes-agent.nousresearch.com/docs/user-guide/messaging)
- [Hermes Agent，在 Docker 中執行](https://hermes-agent.nousresearch.com/docs/user-guide/docker)
- [Hermes Agent，排程工作](https://hermes-agent.nousresearch.com/docs/user-guide/features/cron)
- [Hermes Agent，Nous Portal](https://hermes-agent.nousresearch.com/docs/integrations/nous-portal)
- [Hermes Agent，文件](https://hermes-agent.nousresearch.com/docs/)

</div>







認識一下 [Ailoot](https://ailoot.ai/)。

## 常見問題：如何讓 Hermes Agent 在伺服器上全天候運作

### 安裝系統服務後，為什麼 gateway 看起來仍像停止？

沒有指定範圍的檢查，可能查到另一個服務。系統安裝應用 `hermes gateway status --system` 與系統 journal；只有使用者服務才用未指定範圍的狀態指令與使用者 journal。全程保持同一 Hermes home。

### VPS 系統服務需要 loginctl linger 嗎？

不需要。Linger 用於登出後仍要執行、開機就啟動的使用者 systemd 服務。系統服務原本就隨機器開機啟動；選定一種安裝範圍，重新開機後再檢查該服務及機器人回覆。


## Ailoot · 公司及其專案組合

Ailoot以累積的營運經驗、廣大的客戶群、穩定的服務及持續的KPI管理為基礎。

公司及其專案組合：數百萬客戶，每月銷售額達數十億。

Ailoot將這些營運經驗用於API存取，讓客戶的產品、代理、應用程式及自動化流程使用AI功能。
