Blogg

Så håller du Hermes Agent igång på en server dygnet runt

Markdown

Så håller du Hermes Agent igång på en server dygnet runt: installation på en VPS utan webbläsare, körning av gatewayen som en systemtjänst, automatisk start efter omstart, linger och Docker.

Läs hela artikeln

Efter att du installerat Hermes Agent på en bärbar dator dyker en fråga upp: vem ska svara på Telegram och sätta ihop morgonsammanställningarna när datorn är stängd? Vid skrivbordet finns agenten bara så länge datorn är på. För att hålla boten online hela tiden och låta schemalagda uppgifter köras av sig själva behöver du flytta agenten till en server.

Här går vi igenom hur du installerar Hermes på en vanlig Linux-server, gör gatewayen till en tjänst som körs kontinuerligt och startar automatiskt efter en omstart, samt begränsar åtkomsten så att främlingar inte kan komma åt terminalen. Guiden bygger på den officiella dokumentationen.

Om du inte har installerat Hermes ännu kan du börja med den separata översikten över vad den här agenten är och hur du installerar den. Den här guiden utgår från att du redan har den igång på din egen dator och handlar bara om att flytta den till en server.

Information om hur du arbetar med Ailoot finns i dokumentationen.

Varför flytta Hermes Agent från en bärbar dator till en server?

Viktiga punkter

En persondator fungerar så länge du är i närheten och den är på. För drift dygnet runt behöver du en server: Telegram-boten svarar när datorn är avstängd, och schemalagda uppgifter körs av sig själva. Det är bara för detta du behöver en server; en bärbar dator räcker för vanligt arbete med agenten.

På en bärbar dator fungerar Hermes bara medan locket är öppet och du är i närheten. Stäng den, så tystnar boten; morgonsammanställningen kommer aldrig. Det fungerar inte för en uppgift som ”svara människor i en meddelandetjänst och ta hand om saker enligt ett schema”.

Det är det som skiljer en server: den sover aldrig och är inte beroende av något annat. Du installerar samma Hermes på den, och den körs utan dig: svarar på Telegram klockan tre på natten, samlar nyheter om dina ämnen varje morgon och behåller sessioner mellan körningarna.

Det är meningsfullt att flytta den när du har en löpande uppgift åt agenten: en bot för dig själv eller ditt team, morgonsammanställningar, automatiska svar eller regelbundet dokumentarbete. Om du bara provar Hermes för ett visst projekt och är i närheten behöver du ingen server ännu; det är ett extra steg.

Vad bör du förbereda innan du installerar Hermes på en VPS?

Viktiga punkter

Du behöver en Linux-server med SSH-åtkomst (det officiella teamet testar på en ny Ubuntu-installation), en modell vald i förväg och förståelsen att agenten vanligtvis inte behöver en webbläsare på en server. För obevakad drift är det smidigast att komma åt en modell via Nous Portal: OAuth-inloggningen förnyas automatiskt, så en utgången token stänger inte ner allt under natten.

Samla ihop tre saker innan du installerar.

Servern. En vanlig Linux-VPS duger. Dokumentationens förstahandsstöd gäller Linux och WSL2, och testningen görs på den senaste Ubuntu-versionen. Om systemet har glibc, systemd och en välbekant katalogstruktur installeras Hermes utan problem. Det spelar roll på en server eftersom alla automatiska startsteg nedan bygger på systemd, som ingår från början i Ubuntu och Debian.

SSH-åtkomst. Du ansluter till servern via en terminal över SSH; du använder ingen mus där. Alla kommandon nedan körs i den här SSH-sessionen. Om du vibe-kodar och ännu inte känner dig bekväm med terminalen behöver du inte oroa dig: det är bara några få kommandon, och du kan kopiera vart och ett i sin helhet.

En vald modell. Agenten tänker inte på egen hand; den anropar en modell. För en server som arbetar utan dig är det viktigt att åtkomsten till modellen inte löper ut. Det enklaste alternativet är en Nous Portal-prenumeration via hermes setup --portal: inloggningen använder OAuth och token förnyas automatiskt. Dina egna API-nycklar fungerar också, men se då till att det finns pengar på kontot – en huvudlös agent med tomt saldo tystnar helt enkelt. Modellen måste ha ett kontextfönster på minst 64,000 tokens, annars vägrar Hermes att starta med den. Alla molnmodeller på listan uppfyller det här kravet.

Obs

Den officiella dokumentationen anger inga exakta siffror för val av VPS eller minimiresurser, så inga exakta siffror anges här. Utifrån den beskrivna erfarenheten räcker en enklare maskin för en gateway med en bot och ett schema, eftersom den tunga beräkningen sker på modellens sida. Själva servern belastas väldigt lite. Webbläsarautomatisering är den tyngsta delen, men den behövs vanligtvis inte på en server (mer om det strax).

Hur installerar du Hermes Agent på en server med ett enda kommando?

Viktiga punkter

Anslut till servern över SSH och kör installationsprogrammet med flaggan som hoppar över webbläsaren på en server: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browser. Starta sedan om terminalskalet och välj en modell med hermes setup --portal. Kontrollera installationen med hermes doctor.

Installation på en server är nästan samma sak som på en bärbar dator, med en skillnad: agenten behöver vanligtvis ingen webbläsare där. Webbläsarautomatisering drar dessutom in den resurskrävande Chromium. Därför använder du flaggan --skip-browser.

  1. Anslut till servern över SSH

    ssh root@your-server-address
    

    Kör alla följande kommandon i den här sessionen, på själva servern.

  2. Kör installationsprogrammet utan webbläsaren

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

    Skriptet hämtar den nödvändiga miljön och installerar kommandot hermes. Flaggan --skip-browser hoppar över installationen av webbläsarautomatisering; på en server utan grafiskt gränssnitt skulle den bara ta upp plats. Om du behöver en webbläsare senare kan du installera den separat.

  3. Starta om skalet och välj en modell

    source ~/.bashrc
    hermes setup --portal
    

    Den första raden hämtar den nya PATH-inställningen så att kommandot hermes kan hittas. Den andra öppnar Nous Portal-inloggningen: bekräfta inloggningen, så får agenten en modell och tjänster utan separata nycklar för var och en.

  4. Kontrollera installationen

    hermes doctor
    

    Kommandot visar vad som är installerat, vad som saknas och hur du åtgärdar det. Gröna markeringar betyder att allt är på plats.

Innan du lägger till en bot och ett schema bör du få en felfri konversation att fungera direkt på servern: kör hermes och ge den en enkel uppgift med ett verifierbart svar. Dokumentationen avråder uttryckligen från att stapla funktioner innan en vanlig konversation fungerar – en klok rekommendation.

Hur håller du Hermes igång dygnet runt?

Viktiga punkter

Konfigurera först gatewayen med hermes gateway setup och anslut Telegram. Gör sedan gatewayen till en tjänst med ett kommando: hermes gateway install installerar en användartjänst, medan sudo hermes gateway install --system installerar en systemtjänst som startar när servern startar. För användartjänsten använder du hermes gateway start, stop och status. Behåll uttrycklig --system-omfattning och nödvändiga privilegier vid varje statuskontroll och ändring av VPS-systemtjänsten.

Gatewayen är en enda Hermes-process i bakgrunden som upprätthåller anslutningar till alla meddelandetjänster, hanterar sessioner och kör schemalagda uppgifter. All drift dygnet runt kretsar kring den. Målet är att få processen att starta av sig själv och fortsätta köras.

Konfigurera först gatewayen och anslut en meddelandetjänst:

hermes gateway setup

Installationsguiden leder dig genom plattformarna och hjälper dig att ange botens token och åtkomstlista. Stegen för att ansluta Telegram (skapa en bot med BotFather, ta reda på ditt ID och ange token) finns i huvudguiden för installation; jag upprepar dem inte här.

Sedan kommer fallgropen som folk oftast glömmer. Om du bara kör hermes gateway lever processen bara så länge SSH-sessionen är öppen. Stäng terminalen, så stannar gatewayen. För att hålla den igång kontinuerligt behöver du låta systemet styra den. Det finns ett kommando för det:

hermes gateway install

Det installerar gatewayen som en tjänst: på Linux en användartjänst för systemd, på macOS via launchd. Systemet övervakar processen och startar den igen om den kraschar.

På en server behöver du oftare det andra alternativet: en systemtjänst som startar när maskinen startar, innan någon användare loggar in:

sudo hermes gateway install --system

Det är precis vad du behöver för en VPS: servern startar om, tjänsten startar av sig själv och boten är online igen. Hantera den med dessa enkla kommandon:

hermes gateway start     # starta
hermes gateway stop      # stoppa
hermes gateway status    # kontrollera status

För en systemtjänst lägger du till sudo och flaggan --system i de här kommandona. Annars riktas kommandona mot användartjänsten i stället för den som startar vid uppstart:

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

Varför behövs linger, och vad slutar fungera utan det?

Viktiga punkter

Om du installerade gatewayen som en användartjänst (utan --system) stoppar systemd den så snart du lämnar SSH och startar den inte vid uppstart. Åtgärda det med ett kommando: sudo loginctl enable-linger username. Därefter körs tjänsten oberoende av dina in- och utloggningar.

Det här är det vanligaste hindret: du installerade tjänsten, men boten tystnar ändå på natten. Orsaken ligger i hur Linux-användartjänster fungerar.

En användartjänst för systemd är som standard knuten till din session. Du ansluter över SSH och din användarhanterare startar; tjänsten körs. Du loggar ut, och systemet betraktar användaren som inaktiv, så det stänger ner användarens tjänster tillsammans med gatewayen. På en server som du loggar in på och ut från innebär det ett fel: boten är online bara medan du är ansluten via SSH.

Du kan åtgärda det med linger-läge, som låter systemet hålla användarhanteraren igång även när användaren inte är inloggad:

sudo loginctl enable-linger username

Efter det här kommandot körs användartjänsten på egen hand och startar när servern startar, utan att vänta på att du loggar in. Utan linger återgår allt till det ursprungliga beteendet: gatewayen stängs av när du lämnar SSH och startar inte vid uppstart. Dokumentationen säger detta uttryckligen.

Observera

Det här gäller inte systemtjänsten (installerad med sudo hermes gateway install --system): den körs redan på maskinnivå och startar vid uppstart. Linger behövs bara för en användartjänst. Välj ett av alternativen: antingen en systemtjänst eller en användartjänst plus linger.

Hur kör du Hermes på en server i Docker med automatiska omstarter?

Viktiga punkter

Om du föredrar Docker kan du hålla Hermes igång som en beständig gateway i en container: docker run -d --name hermes --restart unless-stopped -v ~/.hermes:/opt/data -p 8642:8642 nousresearch/hermes-agent gateway run. Flaggan --restart unless-stopped startar containern igen efter en omstart, och inuti avbildningen startas gatewayprocessen också om ifall den kraschar.

Docker är ett annat fungerande sätt att hålla agenten på en server, särskilt om du redan är van vid containrar eller vill isolera agenten från huvuds system. Konfigurera den en gång med docker run ... setup och starta sedan containern i bakgrunden:

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

Så här fungerar raderna som håller driften igång dygnet runt:

  • -d – containern körs i bakgrunden och håller inte terminalen öppen.
  • --restart unless-stopped – Docker startar containern igen efter en omstart av servern eller en krasch. Den startas inte om bara om du stoppade den manuellt.
  • -v ~/.hermes:/opt/data – inställningar, nycklar, sessioner och minne finns på servern utanför containern och bevaras när den återskapas.

Avbildningen lägger till ytterligare ett skydd: gatewayprocessen körs under s6-övervakaren. Om gatewayen kraschar startas den om inom ett par sekunder utan att själva containern förloras. Det är dubbelt skydd: Docker håller containern igång utifrån medan s6 övervakar processen inuti.

Kom ihåg en skillnad med Docker-metoden: de här installationerna uppdateras inte med kommandot hermes update. För att uppdatera i Docker byter du ut avbildningen mot en ny – hämta den senaste och återskapa containern.

Hur kontrollerar du att allt fungerar och klarar en omstart?

Viktiga punkter

Kontrollera tjänstens status med systemctl och följ den löpande loggen. Sedan kommer det viktigaste servertestet: starta om maskinen och se till att boten kommer online igen av sig själv. Hermes-sessioner och svar överlever en omstart; ett oavslutat svar levereras efter återhämtningen.

För en användartjänst kontrollerar du status och loggar så här:

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

För systemtjänsten som rekommenderas på en VPS använder du i stället systemomfattning:

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

Det första kommandot kontrollerar vald tjänst; det andra följer loggen för samma omfattning. Enhetsnamnen gäller standardinstallationen ~/.hermes. Andra Hermes-hemmappar kan ha ett suffix i enhetsnamnet: granska statusutdata och använd det exakta namnet. Övervaka inte en användarenhet medan du testar en systeminstallation. Hermes-loggar finns i ~/.hermes/logs/, och hemligheter maskeras automatiskt i dem, så det är säkert att skicka dem till supporten.

Starta nu om servern och kontrollera att agenten kommer tillbaka av sig själv. Det här är det viktigaste servertestet, och det är oftast det folk glömmer:

sudo reboot

Anslut igen via SSH när servern åter är tillgänglig. För systeminstallationen kontrollerar du sudo hermes gateway status --system och systemjournalen; för användarinstallationen med linger kontrollerar du hermes gateway status och användarjournalen. Skicka sedan ett meddelande till boten på Telegram. Om den svarar utan din inblandning är den automatiska starten rätt konfigurerad. Det var hela poängen.

Du behöver inte oroa dig för att förlora konversationen. Hermes skriver sessioner till disk, och de överlever en omstart av gatewayen. Dessutom levereras ett svar efter återhämtningen i stället för att uppgiften körs igen, om gatewayen kraschar precis när den skickar svaret. Det är viktigt för en bot som körs dygnet runt: en oväntad omstart bryter inte konversationen.

Hur skyddar du en agent med terminalåtkomst på en server?

Viktiga punkter

De tre viktigaste skyddsåtgärderna: botåtkomsten är stängd som standard (den svarar bara personer på listan), agenten frågar innan den kör farliga kommandon och för fullständig isolering kör du agenten på servern i en Docker-sandlåda. Det är bäst att inte aktivera läget utan bekräftelser (YOLO) på en server.

En agent på en server är ett program med terminalåtkomst som körs utan din tillsyn. Kontrollera först de här tre inställningarna.

Stängd åtkomst till boten. Som standard svarar gatewayen bara personer på åtkomstlistan eller personer som har slutfört kodbaserad länkning i ett direktmeddelande. Det är rätt beteende för en bot med terminalåtkomst: en slumpmässig person som skriver till boten kan inte göra något. Listan anges med numeriska ID:n, till exempel för Telegram:

TELEGRAM_ALLOWED_USERS=123456789,987654321

Bekräftelse för farliga kommandon. Innan den gör något destruktivt ber agenten om ditt tillstånd. Det finns ett YOLO-läge som stänger av bekräftelser; det är bäst att inte aktivera det på en server som körs utan dig. Bekräftelserna finns just för att förhindra att något oåterkalleligt sker utan din vetskap.

En sandlåda för fullständig isolering. Om du vill göra det fysiskt omöjligt för agenten att se serverns huvudsakliga system kör du dess kommandon i en Docker-container:

hermes config set terminal.backend docker

Då sker allt agenten gör i terminalen i en isolerad sandlåda och kan inte nå den aktiva servern. Det är ett rimligt skydd när du ger agenten frihet att agera på egen hand.

Vad ska du göra om boten är tyst eller gatewayen kraschar?

Viktiga punkter

Kontrollera först tjänstens status och loggar; orsaken är oftast botens token, åtkomstlistan eller modellen. Om hela processen fryser helt har en systemd-tjänst en watchdog-timer som startar om gatewayen om den slutar visa livstecken.

När boten slutar svara följer du den här ordningen. Kontrollera först den omfattning du installerade: sudo hermes gateway status --system och systemjournalen för en systemtjänst, eller hermes gateway status och användarjournalen för en användartjänst. Om gatewayen körs men meddelanden inte kommer fram är det nästan alltid ett konfigurationsproblem på plattformen: botens token är fel eller personen finns inte på åtkomstlistan. Kör hermes gateway setup igen i samma Hermes-hemmapp och granska sedan vald tjänst med hermes gateway status --system för system eller hermes gateway status för användare. En lyckad konfiguration bevisar inte att rätt gateway körs.

Om modellen ger tomma eller märkliga svar kontrollerar du den med hermes model och bekräftar leverantören och inloggningen. Den allmänna återställningssekvensen som tar dig från ”allt är trasigt” tillbaka till fungerande läge är: hermes doctor, hermes model, hermes setup, följt av hermes gateway status --system för en systeminstallation eller hermes gateway status för en användarinstallation.

En sak till om det sällsynta men obehagliga fallet när hela processen fryser utan att faktiskt krascha. En systemd-tjänst har en watchdog-timer: lägg till den här raden i ~/.hermes/config.yaml och installera om tjänsten.

gateway:
  systemd_watchdog_seconds: 120
# För VPS-systemtjänsten (samma Hermes-hemmapp som vid installationen):
sudo hermes gateway install --system --force
sudo hermes gateway status --system

För en användartjänst återskapar du i stället bara den omfattningen med hermes gateway install --force och kontrollerar hermes gateway status. Välj en omfattning; installera inte båda för att reparera en enda gateway.

Därefter signalerar gatewayen regelbundet till systemet: ”Jag lever”, och om signalerna upphör startar systemd automatiskt om processen. Detta fungerar bara på Linux med systemd, och endast vid frysningar av processen. Watchdog-timern påverkar inte ett vanligt nätverksavbrott mellan servern och meddelandetjänsten.

Vad mer brukar folk fråga om Hermes Agent på en server?

Viktiga punkter

Snabba svar på vanliga frågor: om en VPS är ett absolut krav, om du kan ha flera botar på en maskin, om servern behöver ett grafiskt gränssnitt och vad som händer med schemalagda uppgifter när agenten körs på en server.

Vanliga frågor

Måste jag skaffa en VPS, eller duger min egen dator?

För drift dygnet runt behöver du en maskin som alltid är på. Din egen dator fungerar bara om du är beredd att aldrig stänga av den. En VPS är bekvämare: den är alltid på och påverkas inte av om du arbetar eller sover. En vanlig Linux-server duger – dokumentationens förstahandsstöd gäller Linux och testningen görs på en ny Ubuntu-installation.

Kan jag köra flera botar på en server?

Ja. Hermes har profiler, och varje profil har sin egen tjänst. Ett kommando som <profile> gateway install skapar en separat tjänst med namnet hermes-gateway-<profile>, och de fungerar oberoende av varandra. Varje profil har egna inställningar, bottoken och minne.

Behöver servern en skärm och grafik?

Nej. Servern körs utan skärm, och du hanterar den via SSH från terminalen. Webbläsarautomatisering behövs vanligtvis inte för en agent på den här typen av server, så du kör installationsprogrammet med flaggan --skip-browser; därmed tas den enda resurskrävande komponenten som kräver grafik bort.

Körs schemalagda uppgifter när jag är borta?

Ja, det är poängen med att flytta till en server. Samma gateway kör schemalagda uppgifter: den kontrollerar schemat en gång i minuten och kör uppgifter när det är dags, och skickar sedan resultatet till samma chatt. Eftersom gatewayen körs dygnet runt som en tjänst följs schemat automatiskt utan din inblandning.

Överlever boten en uppdatering och en omstart av servern?

Ja. Inställningar, sessioner och minne lagras i mappen ~/.hermes och går inte förlorade. Efter en omstart startar systemtjänsten (eller Docker med --restart unless-stopped) gatewayen av sig själv. Ett oavslutat svar levereras efter en omstart och inget går förlorat – även om svaret redan hade skickats till hälften när kraschen inträffade kan det komma igen med en avisering om att det kan vara en dubblett.

Lär känna Ailoot.

Fler detaljer

Frågor om den här guiden: Så håller du Hermes Agent igång på en server dygnet runt

Varför kan gatewayen se stoppad ut efter installation som systemtjänst?

En kontroll utan angiven omfattning kan avse en annan tjänst. Använd hermes gateway status --system och systemjournalen för systeminstallationen; använd status utan omfattning och användarjournal bara för en användartjänst. Behåll samma Hermes-hemmapp genom hela arbetet.

Behöver en VPS-systemtjänst loginctl linger?

Nej. Linger används för en systemd-användartjänst som ska överleva utloggning och starta vid systemstart. En systemtjänst startar redan när maskinen startar; välj en installationsomfattning och upprepa dess status- och botsvarskontroll efter omstart.

Alla artiklar