Så håller du Hermes Agent igång på en server dygnet runt
MarkdownSå 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.
Anslut till servern över SSH
ssh root@your-server-addressKör alla följande kommandon i den här sessionen, på själva servern.
Kör installationsprogrammet utan webbläsaren
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browserSkriptet hämtar den nödvändiga miljön och installerar kommandot
hermes. Flaggan--skip-browserhoppar ö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.Starta om skalet och välj en modell
source ~/.bashrc hermes setup --portalDen första raden hämtar den nya
PATH-inställningen så att kommandothermeskan 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.Kontrollera installationen
hermes doctorKommandot 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.
Källor
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.