GuiderFöretag och övervakningLivechatt med Chatwoot

Kör Chatwoot, ett alternativ till Intercom, med Podman utan root

Chatwoot på Debian 13, supportinkorgen med öppen källkod för livechatt på din webbplats och e-post, i rootless Podman med PostgreSQL och Valkey under en egen användare bakom Caddy, med registreringen stängd och versionskollen och Gravatar avstängda.

Testad på Chatwoot 4.18.0 på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 14 oktober 2026

Rekommenderad server för guiden

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy · 2 vCPU · 8 GB Minne · 60 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

100 kr/mån

Beställ nu
På den här sidan

Det här sätter du upp

Chatwoot är en gemensam inkorg för kundsupport. Besökare skriver i en chattbubbla på din webbplats, kunder mejlar er supportadress, och teamet svarar på båda från ett ställe i webbläsaren, med tilldelning, team, färdiga svar, etiketter och interna anteckningar. Den har också ett hjälpcenter för publika artiklar, nöjdhetsenkäter, rapporter, ett API och webhooks. Den gör mycket av det som Intercoms Messenger och inkorg gör, på din egen server.

Chatwoot görs av Chatwoot Inc., ett bolag vars användarvillkor följer kalifornisk lag, och utvecklas öppet på GitHub. Kärnan är öppen källkod under MIT-licensen. Vissa funktioner ligger i en mapp som heter enterprise, under en egen licens som kräver ett betalt paket i produktion: steg 18 har listan. Den här guiden använder Chatwoots egen avbild av Community Edition, chatwoot/chatwoot med en -ce-tagg, som lämnar bort den mappen, så allt du kör är MIT. Som standard frågar Chatwoot Chatwoots server efter nya versioner en gång om dagen, skickar med statistik över användningen, och hämtar en bild från Gravatar för varje kontakt med en e-postadress. Steg 3 stänger av statistiken och Gravatar, och steg 15 visar hur du stoppar versionskollen också.

Här körs Chatwoot som en pod under en egen användare som heter chatwoot: webbappen, en worker för bakgrundsjobb, PostgreSQL med pgvector för data och Valkey för köer, bakom Caddy från Podman-guiden.

Varje steg nedan har körts på en nyinstallerad Melonslab VC-P Alloy (2 vCPU, 8 GB) med Debian 13:

  • Chatwoot 4.18.0 startade med PostgreSQL 16 och Valkey 8. Den första administratören skapades genom en SSH-tunnel innan webbplatsen var publik; efter det var installationssidan och registreringen stängda.
  • En webbplatsinkorg bäddades in på en vanlig HTML-sida. En webbläsare utan fönster öppnade chattbubblan och skrev; en agents svar, och ett färdigt svar som skrevs med /, syntes direkt i besökarens chatt. En intern anteckning syntes inte för besökaren.
  • En andra agent fick en inbjudan via e-post, satte ett lösenord och fick ett mejl när en konversation tilldelades honom. Ett team, etiketter och tilldelning fungerade, och Chatwoot såg varje besökares riktiga adress och struntade i en förfalskad X-Forwarded-For-header.
  • Utanför öppettiderna fick en ny chatt det automatiska frånvaromeddelandet. När en konversation var löst betygsatte besökaren den, och betyget syntes under Reports > CSAT.
  • En e-postinkorg hämtade mejl via IMAP, skickade svaret via SMTP med rätt svarshuvuden, och lade kundens svar i samma konversation. All e-post gick till en testserver för e-post på samma maskin, inte ut på internet.
  • En artikel i hjälpcentret publicerades och gick att läsa utan inloggning. Via API:t skapades en kontakt och en konversation, och en webhook tog emot händelserna, signerade.
  • Gränssnittet och chattbubblan visades på svenska. En besökares fil sparades i poddens volym. När en kontakt togs bort försvann deras konversationer och filen.
  • Med Gravatar avstängt och versionskollen blockerad som i steg 15 visade en avlyssning av serverns trafik ingetdera.
  • En uppdatering från Chatwoot 4.17.1 till 4.18.0 körde databasens migreringar av sig själv. Chatwoot återställdes från en säkerhetskopia till en ny instans, med nya lösenord för databasen och Valkey, och allt startade igen av sig självt efter en omstart av servern.

Podden använde omkring 800 MB minne: omkring 360 MB för webbappen, 400 till 450 MB för workern och resten för PostgreSQL och Valkey.

Innan du börjar

Du behöver:

  • en server uppsatt som i Podman-guiden, med Caddy igång;
  • en A-post och en AAAA-post för chat.example.com som pekar på din server;
  • ett e-postkonto hos din e-postleverantör som Chatwoot kan skicka från, med dess SMTP-uppgifter.

Exemplen använder chat.example.com för Chatwoot, www.example.com för din webbplats, support@example.com för er supportadress och 203.0.113.10 för serverns IPv4-adress. Byt ut dem genomgående.

1. Skapa användaren

Som root:

useradd -m -s /bin/bash chatwoot
loginctl enable-linger chatwoot
machinectl shell chatwoot@

Allt fram till steg 5 körs som chatwoot.

2. Skapa hemligheterna

for s in chatwoot-secret-key-base chatwoot-db-password chatwoot-redis-password \
         chatwoot-ar-primary-key chatwoot-ar-deterministic-key chatwoot-ar-salt; do
  openssl rand -hex 32 | tr -d '\n' | podman secret create $s -
done
printf %s 'the-smtp-password' | podman secret create chatwoot-smtp-password -

Loopen skapar sex slumpade värden, som Podman lagrar och som inte hamnar i filerna nedan:

  • chatwoot-secret-key-base signerar inloggningar och besökarnas chattsessioner.
  • chatwoot-db-password och chatwoot-redis-password är lösenorden till PostgreSQL och Valkey.
  • De tre chatwoot-ar--värdena är nycklarna som Chatwoot krypterar tvåfaktorshemligheter och webhookhemligheter med. Utan dem går tvåfaktorsinloggning inte att använda.

Steg 19 sparar en kopia av nyckeln och de tre krypteringsnycklarna, eftersom en återställd säkerhetskopia är till liten nytta utan dem. Den sista raden lagrar lösenordet till e-postkontot som Chatwoot skickar från. Skriv ditt eget mellan citattecknen.

3. Definiera podden

mkdir -p ~/.config/containers/systemd
cd ~/.config/containers/systemd

Skapa chatwoot.pod:

[Pod]
PodName=chatwoot
# Only Caddy, on this server, can reach Chatwoot: the port is not open to the internet.
PublishPort=127.0.0.1:8144:3000
# Give the pod addresses of its own, so Caddy's connections arrive from a private address that Chatwoot trusts.
Network=pasta:-a,10.0.2.0,-n,24,-g,10.0.2.2,--dns-forward,10.0.2.3,-a,fd00::2,-g,fd00::1

[Install]
WantedBy=default.target

Skapa chatwoot-db.container:

[Container]
ContainerName=chatwoot-db
Image=docker.io/pgvector/pgvector:pg16
Pod=chatwoot.pod
Volume=chatwoot-db:/var/lib/postgresql/data
Environment=POSTGRES_DB=chatwoot POSTGRES_USER=chatwoot
Secret=chatwoot-db-password,type=env,target=POSTGRES_PASSWORD
HealthCmd=pg_isready -U chatwoot -d chatwoot
HealthInterval=10s
Notify=healthy
AutoUpdate=registry

[Service]
Restart=always

Skapa chatwoot-redis.container:

[Container]
ContainerName=chatwoot-redis
Image=docker.io/valkey/valkey:8-alpine
Pod=chatwoot.pod
Volume=chatwoot-redis:/data
Secret=chatwoot-redis-password,type=env,target=REDIS_PASSWORD
Exec=sh -c 'exec valkey-server --requirepass "$REDIS_PASSWORD" --bind 127.0.0.1 --save 60 1'
AutoUpdate=registry

[Service]
Restart=always

Skapa chatwoot.env, inställningarna som webbappen och workern delar, med dina egna adresser och ditt avsändarnamn:

FRONTEND_URL=https://chat.example.com
ENABLE_ACCOUNT_SIGNUP=false
DISABLE_TELEMETRY=true
DISABLE_GRAVATAR=true
TZ=Europe/Stockholm
RAILS_ENV=production
NODE_ENV=production
INSTALLATION_ENV=docker
RAILS_LOG_TO_STDOUT=true
POSTGRES_HOST=127.0.0.1
POSTGRES_USERNAME=chatwoot
POSTGRES_DATABASE=chatwoot
REDIS_URL=redis://127.0.0.1:6379
ACTIVE_STORAGE_SERVICE=local
MAILER_SENDER_EMAIL=Example AB support <support@example.com>
SMTP_ADDRESS=smtp.example.com
SMTP_PORT=587
SMTP_DOMAIN=example.com
SMTP_USERNAME=support@example.com
SMTP_AUTHENTICATION=login
SMTP_ENABLE_STARTTLS_AUTO=true

Skapa chatwoot-web.container:

[Unit]
Requires=chatwoot-db.service chatwoot-redis.service
After=chatwoot-db.service chatwoot-redis.service

[Container]
ContainerName=chatwoot-web
Image=docker.io/chatwoot/chatwoot:v4.18.0-ce
Pod=chatwoot.pod
Volume=chatwoot-storage:/app/storage
EnvironmentFile=chatwoot.env
Secret=chatwoot-secret-key-base,type=env,target=SECRET_KEY_BASE
Secret=chatwoot-db-password,type=env,target=POSTGRES_PASSWORD
Secret=chatwoot-redis-password,type=env,target=REDIS_PASSWORD
Secret=chatwoot-ar-primary-key,type=env,target=ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY
Secret=chatwoot-ar-deterministic-key,type=env,target=ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY
Secret=chatwoot-ar-salt,type=env,target=ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT
Secret=chatwoot-smtp-password,type=env,target=SMTP_PASSWORD
# Set up or migrate the database, then start the web server.
Exec=sh -c 'bundle exec rails db:chatwoot_prepare && exec bundle exec rails s -p 3000 -b 0.0.0.0'

[Service]
Restart=always
TimeoutStartSec=900

Workern använder samma avbild, inställningar och hemligheter, men kör Sidekiq i stället. Skapa dess fil från webbappens:

sed -e 's/chatwoot-web/chatwoot-worker/' \
    -e 's/^Requires=.*/Requires=chatwoot-web.service/' -e 's/^After=.*/After=chatwoot-web.service/' \
    -e '/^# Set up/d' -e 's|^Exec=.*|Exec=bundle exec sidekiq -C config/sidekiq.yml|' \
    chatwoot-web.container > chatwoot-worker.container

Vad inställningarna gör:

  • Network= ger podden egna privata adresser. Caddys anslutningar kommer då in från poddens privata nät, som Chatwoot litar på när den får veta besökarens riktiga adress. Det spelar större roll än vanligt här: Chatwoot tillåter fem inloggningar per adress på fem minuter, och utan den här raden skulle alla besökare dela serverns adress, som Podman-guiden förklarar.
  • FRONTEND_URL är adressen som Chatwoot sätter i e-post, i chattbubblans kod och i hjälpcentret. Den måste vara den publika https://-adressen.
  • ENABLE_ACCOUNT_SIGNUP=false håller registreringssidan stängd. Du lägger till agenter själv (steg 8).
  • DISABLE_TELEMETRY och DISABLE_GRAVATAR förklaras i steg 15.
  • -ce i taggen är Community Edition, och v4.18.0 låser versionen. Du uppdaterar Chatwoot genom att byta tagg (steg 20), eftersom databasen behöver migreras, och det gör webbappen varje gång den startar. PostgreSQL ligger kvar på 16 och Valkey på 8, och AutoUpdate=registry uppdaterar dem inom de versionerna.
  • PostgreSQL kommer från pgvector-projektets avbild, eftersom Chatwoots databas behöver tillägget vector. Valkey, en fork av Redis med öppen källkod, håller bakgrundsjobben och en del kortlivad data.
  • Filer som besökare och agenter skickar hamnar i volymen chatwoot-storage. Steg 14 har mer.

Starta den:

systemctl --user daemon-reload
systemctl --user start chatwoot-pod
systemctl --user enable --now podman-auto-update.timer

Vid första starten laddas omkring 900 MB avbilder ner, och Chatwoot behöver en minut eller två för att sätta upp sin databas. Den är klar när det här skriver ut en rad med "version":"4.18.0":

curl -s http://127.0.0.1:8144/api; echo

4. Skapa den första administratören

Tills någon har skapat det första kontot visar Chatwoot en installationssida för vem som helst som öppnar den, och det kontot blir superadministratör för hela installationen. Skapa det innan webbplatsen är publik, genom en SSH-tunnel. Från din egen dator:

ssh -L 8144:127.0.0.1:8144 root@203.0.113.10

Medan anslutningen är öppen öppnar du http://localhost:8144 i webbläsaren. Fyll i Name, Company Name, Work Email och Password. Lösenordet måste ha minst ett specialtecken, till exempel !. Kryssa ur Subscribe to release notes, newsletters & product feedback surveys., som annars skickar ditt namn, ditt företag och din e-postadress till Chatwoot. Välj Finish Setup, logga in och fyll i det korta formuläret om företaget. Website måste vara ifyllt innan Continue fungerar. Sedan kan du stänga tunneln.

http://localhost:8144/installation/onboarding skickar dig nu tillbaka till startsidan. Den som öppnar den senare får inloggningssidan i stället.

5. Sätt Caddy framför

Gå tillbaka till root med exit, byt till Caddys användare med machinectl shell caddy@ och lägg till det här blocket sist i ~/Caddyfile:

chat.example.com {
    reverse_proxy 127.0.0.1:8144
}

Starta om Caddy med systemctl --user restart caddy och öppna https://chat.example.com. Logga in med kontot från steg 4. https://chat.example.com/app/auth/signup skickar besökare till inloggningssidan, eftersom registreringen är stängd.

Konsolen för superadministratören, med inställningar för hela installationen, finns på https://chat.example.com/super_admin, med samma inloggning.

6. E-post

Chatwoot skickar e-post för inbjudningar av agenter, återställning av lösenord, aviseringar till agenter, till exempel när en konversation tilldelas dem, och svaren i en e-postinkorg (steg 11, som har egna inställningar). Steg 3 pekar den mot din e-postleverantör på port 587 med STARTTLS, med lösenordet från steg 2. För en leverantör som använder port 465 med TLS från början sätter du SMTP_PORT=465 och SMTP_ENABLE_STARTTLS_AUTO=false och lägger till SMTP_SSL=true. Vi testade att skicka mot en testserver för e-post på själva servern, inte mot en riktig leverantör, och port 465 inte alls.

Utan fungerande e-post säger Chatwoot ingenting i webbläsaren: inbjudningar, återställningar och aviseringar rapporterar att allt gick bra, och workerns logg visar felet. Som chatwoot visar podman logs chatwoot-worker raden Error performing ActionMailer::MailDeliveryJob. En agent som du lägger till får då aldrig sin inbjudan. I superadministratörens konsol, under Users, kan du öppna agenten, välja Edit, sätta ett Password och ett datum i Confirmed At, och ge agenten lösenordet själv. Det har vi testat.

För att ändra e-postinställningarna senare redigerar du chatwoot.env som chatwoot och kör sedan:

systemctl --user daemon-reload
systemctl --user restart chatwoot-web chatwoot-worker

7. Livechatt på din webbplats

Under Settings > Inboxes väljer du Add Inbox > Website. Fyll i Website Name, till exempel företagets namn, Website Domain, till exempel www.example.com, och en Welcome Heading och en Welcome Tagline som chattfönstret visar. Välj Create inbox, välj agenterna som ska svara och välj Add agents. Som administratör lägger du till dig själv också: bara inkorgens agenter ser dess konversationer.

Den sista sidan visar ett skript som börjar så här:

<script>
  (function(d,t) {
    var BASE_URL="https://chat.example.com";

Klistra in det på varje sida på din webbplats där chattbubblan ska synas, precis före </body>. Bubblan laddas från din egen Chatwoot. Skriptet finns också under inkorgens flik Configuration.

När en besökare skriver dyker konversationen upp under Conversations för inkorgens agenter, och svaret syns direkt i besökarens chattfönster. Svarsrutan skickar med Ctrl + Enter. Besökaren visas först med ett påhittat namn, till exempel long-sunset-735, tills hen ger sin e-postadress i chatten. Lämnar besökaren sidan fortsätter nästa besök samma konversation, i samma webbläsare.

Inkorgens flik Settings har mer: bubblans färg och placering, svarstiden den utlovar, om besökare får skicka filer, och Enable email collect box, som ber besökare om deras e-postadress. Pre Chat Form frågar efter namn och e-post innan chatten börjar.

8. Agenter, team och tilldelning

Under Settings > Agents väljer du Add Agent, fyller i Agent Name och Email Address, väljer Agent eller Administrator som Role och väljer Add Agent. Agenten får ett mejl med länken Accept invitation, där hen sätter sitt lösenord. Agenter ser och svarar på konversationerna i sina inkorgar; administratörer kan också ändra inställningar.

Under Settings > Teams samlar Create new team agenter i grupper, till exempel Support och Sälj. Konversationer kan tilldelas ett team såväl som en agent.

För att tilldela en konversation öppnar du den, öppnar kontaktpanelen med personikonen uppe till höger och väljer agent och team under Conversation Actions. Agenten får ett mejl om det. Under Settings > Inboxes har inkorgens flik Collaborators inställningen Enable automatic conversation assignment, som fördelar nya konversationer i tur och ordning mellan agenterna som är online. Egna regler för tilldelning kräver ett betalt paket.

9. Färdiga svar, etiketter och interna anteckningar

  • Färdiga svar: under Settings > Canned Responses sparar Add canned response ett svar med en Short code, till exempel leverans. I en konversation skriver du / och en del av koden och väljer svaret i listan.
  • Etiketter: under Settings > Labels skapar Add label etiketter som order och retur. Du sätter dem på en konversation under Conversation Actions. De syns i sidomenyn, där var och en listar sina konversationer.
  • Interna anteckningar: Private Note ovanför svarsrutan skriver en anteckning som bara ditt team ser.

10. Öppettider, automatiskt svar och CSAT

Under Settings > Inboxes öppnar du webbplatsinkorgen:

  • Business Hours: slå på Enable business availability for this inbox, skriv meddelandet som besökare får utanför öppettiderna i Unavailable message for visitors, sätt Select timezone till Stockholm, som är Pacific time från början, ställ in dagar och tider och spara med Update business hours settings. Utanför öppettiderna skriver chattfönstret när ni är tillbaka, och en ny konversation får ditt meddelande som automatiskt svar.
  • CSAT: slå på Enable CSAT och välj Update. När en agent löser en konversation med Resolve får besökaren betygsätta den, från 😞 till 😍. Svaren finns under Reports > CSAT.

Under Reports finns också en översikt över öppna konversationer och agenter, och rapporter per konversation, agent, etikett, inkorg och team. SLA under Reports kräver ett betalt paket.

11. En e-postinkorg

En e-postinkorg hämtar e-posten som skickas till er supportadress och skickar era svar från den, så att e-post och chatt hamnar på samma ställe. Chatwoot behöver kontots IMAP- och SMTP-uppgifter, som din e-postleverantör anger.

  1. Under Settings > Inboxes väljer du Add Inbox > Email > Other Providers. Fyll i Channel Name, till exempel Support-mejl, och Email, er supportadress, och välj Create Email Channel. Lägg till agenterna som i steg 7.
  2. Öppna inkorgens flik Configuration. Under IMAP kryssar du i Enable IMAP configuration for this inbox och fyller i Address, till exempel imap.example.com, Port 993, Login och Password, med Enable SSL ikryssat. Välj Update IMAP settings. Chatwoot provar att logga in först och svarar "Please check the IMAP credentials and try again." om det misslyckas.
  3. Under SMTP kryssar du sedan i Enable SMTP configuration for this inbox, fyller i leverantörens SMTP-server, port 587 och samma inloggning, och väljer Update SMTP settings.

Chatwoot kollar brevlådan en gång i minuten, och varje nytt mejl startar en konversation, med avsändaren som kontakt. Svaren går ut från supportadressen med rätt svarshuvuden, så att kundens nästa svar hamnar i samma konversation. Vi testade det mot en testserver för e-post på samma maskin, med okrypterade anslutningar på dess egna portar; din leverantörs portar och SSL-inställningar står i dess dokumentation. För Gmail och Microsoft 365 loggar valen Google och Microsoft in med OAuth i stället, vilket kräver att du först registrerar en app hos dem. Det har vi inte testat.

12. Hjälpcenter

Help Center i sidomenyn låter dig publicera artiklar för era kunder, ordnade i kategorier, på ett eller flera språk. Skapa en portal, ge den ett namn och en slug, till exempel hjalp, lägg till svenska under Locales och skriv artiklar under Articles. Publicerade artiklar är publika, på https://chat.example.com/hc/hjalp/sv. Hjälpcentret laddade inga externa resurser i vårt test.

Under webbplatsinkorgens flik Settings kopplar Help Center portalen till chattfönstret, så att besökare kan läsa artiklar där.

13. API och webhooks

Allt i gränssnittet går att göra via Chatwoots API. Din personliga Access Token finns under din profil, nere till vänster, > Profile Settings. Kontots nummer finns under Settings > Account Settings > Account ID. Med dem skapar det här en kontakt i e-postinkorgen, från vilken dator som helst, med inkorgens nummer från adressfältet på dess inställningssida:

curl -s -X POST https://chat.example.com/api/v1/accounts/1/contacts \
  -H 'api-access-token: YOUR_TOKEN' -H 'Content-Type: application/json' \
  -d '{"inbox_id": 2, "name": "Erik Exempel", "email": "erik@example.net"}'

Svaret har kontaktens id, och source_id under contact_inbox. Det här startar en konversation med kontakten, som i en e-postinkorg skickar meddelandet som ett mejl:

curl -s -X POST https://chat.example.com/api/v1/accounts/1/conversations \
  -H 'api-access-token: YOUR_TOKEN' -H 'Content-Type: application/json' \
  -d '{"inbox_id": 2, "contact_id": 5, "source_id": "erik@example.net", "message": {"content": "Hej Erik, din reservdel har kommit in."}}'

Chatwoots dokumentation skriver headern som api_access_token, med understreck. Caddy tar bort headers med understreck i namnet sedan version 2.11.4, så genom Caddy använder du api-access-token, som Chatwoot läser på samma sätt. För ett verktyg som bara skickar varianten med understreck, till exempel en integration som du inte kan ändra, kan Caddy 2.11.6 och senare behålla den. Lägg till det här i det globala blocket överst i ~/Caddyfile, som caddy, och starta om Caddy:

{
    admin off
    servers {
        expected_underscore_headers api_access_token
    }
}

Caddy kallar inställningen experimentell. Vi testade båda sätten.

Webhooks skickar händelser till ett annat system när de inträffar. Under Settings > Integrations > Webhooks tar Add new webhook en URL och händelserna som ska skickas, till exempel Conversation Created och Message Created. Varje anrop har en header X-Chatwoot-Signature: sha256= och en HMAC-SHA256 av headern X-Chatwoot-Timestamp, en punkt och innehållet, gjord med webhookens hemlighet. Kontrollera den innan du litar på anropet. Chatwoot anropar bara publika adresser, inte adresser i privata nät eller på själva servern. Raden Network= från steg 3 är den andra lösningen i steg 8 i Podman-guiden, som låter en webhook nå en annan app på samma server, till exempel n8n, via dess publika namn. Vi har inte testat en sådan webhook.

14. Filer och bilagor

Filer som besökare och agenter skickar, profilbilder och bilder i hjälpcentret sparas i volymen chatwoot-storage, eftersom ACTIVE_STORAGE_SERVICE=local. Chatwoot ger varje fil en lång, slumpad adress, och den som har adressen kan ladda ner filen utan att logga in, även efter att konversationen är avslutad. Tänk på det innan du ber kunder skicka id-handlingar.

För att lagra filer i S3 i stället, till exempel på Garage, har Chatwoot ACTIVE_STORAGE_SERVICE=s3_compatible och tillhörande inställningar i sin dokumentation. Det har vi inte testat.

15. Externa tjänster

Med inställningarna från steg 3 gjorde Chatwoot två sorters externa anslutningar när vi avlyssnade serverns DNS-uppslagningar och utgående anslutningar:

  • Versionskollen: en gång om dagen skickar workern ett slumpat installations-id, versionen, installationens värdnamn och utgåvan till Chatwoots server, hub.2.chatwoot.com, och får tillbaka den senaste versionen, som superadministratörens konsol visar. Utan DISABLE_TELEMETRY=true skickar den också antalet konton, användare, inkorgar, konversationer och meddelanden. Det finns ingen inställning som stoppar själva kollen. För att stoppa den lägger du till den här raden under [Pod] i chatwoot.pod och startar om podden. Workerns logg visar då en nekad anslutning en gång om dagen:
    AddHost=hub.2.chatwoot.com:127.0.0.1
    
  • Gravatar: utan DISABLE_GRAVATAR=true slår Chatwoot upp varje kontakt och agent med en e-postadress hos www.gravatar.com, som drivs av Automattic i USA, genom att skicka en MD5-hash av adressen. I vår avlyssning gav kontakter från e-postinkorgen uppslagningar av www.gravatar.com. Med raden gav en ny kontakt med e-postadress ingen.

Resten följer av det du sätter upp: din e-postleverantör, adresserna till de webhooks du lägger till, och avbildsregistren när Podman uppdaterar. Chattbubblan på din webbplats laddas bara från din egen server. Chatwoots mobilappar får sina pushnotiser via Chatwoots server, vilket ENABLE_PUSH_RELAY_SERVER styr. Apparna har vi inte testat. Installationssidan i steg 4 registrerar din installation hos Chatwoot bara om rutan för nyhetsbrev får vara ikryssad.

16. Använd Chatwoot på svenska

Chatwoot har en svensk översättning, som inte är komplett: en del menyer och meddelanden stannar på engelska. Under Settings > Account Settings sätter du Site language till Svenska och väljer Update settings. Det byter språk i gränssnittet för alla som inte har valt något eget, och i chattbubblan på din webbplats, som då skriver Starta konversation och Vi är borta för tillfället. Varje agent kan välja sitt eget språk under Profile Settings > Preferred Language.

Texter du skriver själv, som välkomstrubriken, frånvaromeddelandet och färdiga svar, visas som du skrev dem, så skriv dem på svenska.

17. Personuppgifter

Chatwoot sparar de som skriver till er som kontakter, med deras konversationer, filer och betyg. För att ta bort någon, till exempel när hen begär det enligt GDPR, öppnar du Contacts, öppnar personen och väljer Delete contact, eller Ta bort kontakt på svenska, och bekräftar. Besökare som aldrig gav sin e-postadress listas inte under Contacts: öppna deras konversation, öppna kontaktpanelen med personikonen och länkikonen bredvid namnet. När en kontakt tas bort försvinner deras konversationer, meddelanden och filer också. I vårt test var konversationen och filen i volymen borta efteråt.

18. Gratis och betalt

Chatwoots prissida för egen drift listar tre utgåvor, den 14 oktober 2026: Community Edition, som är gratis, Premium Support för 19 dollar per agent och månad, och Enterprise Edition för 99 dollar per agent och månad. Allt i den här guiden fungerar i Community Edition. De betalda utgåvorna lägger till, enligt den sidan:

  • Premium: Captain, Chatwoots AI-assistent, röstsamtal, egen profilering, till exempel att ta bort Powered by Chatwoot från chattbubblan, agentkapacitet, egna roller och behörigheter, och prioriterad support.
  • Enterprise, dessutom: enkel inloggning med SAML och SLA-regler.

Superadministratörens konsol listar granskningsloggar som betalda också. Avbilden med -ce innehåller inte den koden; gränssnittet visar ändå en del av funktionerna, med en uppmaning att uppgradera.

Som jämförelse listar Intercoms prissida deras paket för 29, 85 och 132 dollar per användare och månad, plus från 0,99 dollar per utfall för deras AI-agent Fin, den 14 oktober 2026. Deras hjälpcenter skriver att datalagring i EU bara finns för nya arbetsytor på paketen Advanced och Expert, med avtal.

19. Säkerhetskopiera

Som chatwoot:

umask 077
mkdir -p ~/backup
podman exec chatwoot-db pg_dump -U chatwoot chatwoot > ~/backup/chatwoot-db.sql
podman volume export chatwoot-storage > ~/backup/chatwoot-storage.tar
for s in chatwoot-secret-key-base chatwoot-ar-primary-key chatwoot-ar-deterministic-key chatwoot-ar-salt; do
  podman secret inspect --showsecret --format '{{.SecretData}}' $s > ~/backup/$s.txt
done
cp ~/.config/containers/systemd/chatwoot.env ~/backup/

Databasen innehåller konversationer, kontakter, användare, inställningar och hjälpcentret; volymen innehåller filerna; och de fyra nycklarna håller inloggningar, tvåfaktorsinloggning och webhookhemligheter fungerande. Dumpen körs medan Chatwoot fortsätter att fungera. Valkey håller bara kortlivad data och behöver ingen säkerhetskopia. Kopiera ~/backup till en annan maskin, till exempel med restic, och förvara den säkert: den innehåller alla era kunders konversationer.

För att återställa till en ny instans sätter du upp den som i steg 1 till 3, men i steg 2 skapar du de fyra nycklarna från säkerhetskopian i stället för nya:

cd ~/backup
for s in chatwoot-secret-key-base chatwoot-ar-primary-key chatwoot-ar-deterministic-key chatwoot-ar-salt; do
  tr -d '\n' < $s.txt | podman secret create $s -
done

Skapa de andra hemligheterna som i steg 2. Läs in filerna före första starten, starta sedan podden och vänta tills den svarar, som i steg 3:

podman volume create chatwoot-storage
podman volume import chatwoot-storage ~/backup/chatwoot-storage.tar
systemctl --user daemon-reload
systemctl --user start chatwoot-pod

Chatwoot har nu satt upp en tom databas och öppnat installationssidan från steg 4. Byt ut databasen mot säkerhetskopian och töm Valkey, vilket stänger installationssidan igen:

systemctl --user stop chatwoot-web
podman exec chatwoot-db dropdb -U chatwoot chatwoot
podman exec chatwoot-db createdb -U chatwoot chatwoot
podman exec -i chatwoot-db psql -q -U chatwoot -d chatwoot < ~/backup/chatwoot-db.sql
podman exec chatwoot-redis sh -c 'valkey-cli -a "$REDIS_PASSWORD" --no-auth-warning FLUSHALL'
systemctl --user start chatwoot-web chatwoot-worker

Gör det innan du lägger till webbplatsen i Caddy, annars är installationssidan öppen för vem som helst under tiden. När webbappen stoppas, stoppas workern också. Efteråt ska curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8144/installation/onboarding skriva ut 302.

20. Uppdatera

Läs först versionsinformationen på Chatwoots sida på GitHub. Byt sedan, som chatwoot, version i båda filerna, här till en påhittad 4.19.0, och starta om:

cd ~/.config/containers/systemd
sed -i 's/chatwoot:v4.18.0-ce/chatwoot:v4.19.0-ce/' chatwoot-web.container chatwoot-worker.container
systemctl --user daemon-reload
systemctl --user restart chatwoot-web chatwoot-worker

Webbappen migrerar databasen när den startar; podman logs chatwoot-web visar varje migrering. Vår uppdatering från 4.17.1 till 4.18.0 tog ungefär en minut och körde tre migreringar. Ta en säkerhetskopia först. När allt fungerar tar podman image prune -a bort den gamla avbilden, som tar ungefär 1,8 GB.

podman auto-update håller PostgreSQL 16 och Valkey 8 uppdaterade av sig själv. För att flytta PostgreSQL till en ny huvudversion behöver du göra en dump och återställa den, som i steg 19.

Felsökning

"Retry later" när du loggar in. Chatwoot tillåter fem inloggningar per adress på fem minuter, även lyckade. Vänta fem minuter. Händer det många samtidigt saknas raden Network= från steg 3, så alla delar serverns adress: podman logs chatwoot-web visar då 203.0.113.10 efter Started POST "/auth/sign_in" for.

"You need to sign in or sign up before continuing." från API:t, med rätt token. Headern har understreck och Caddy tog bort den. Använd api-access-token, eller behåll headern som i steg 13.

Inbjudningar och återställningar av lösenord kommer aldrig fram. Leta efter fel från MailDeliveryJob i podman logs chatwoot-worker. Net::OpenTimeout betyder att SMTP-servern inte går att nå, och Broken pipe att SMTP_ADDRESS är tom.

"Please check the IMAP credentials and try again." podman logs chatwoot-web visar orsaken efter check_imap_connection failed with. "Unsupported authentication mechanism 'PLAIN'" betyder att servern vill ha en annan metod: välj login under Authentication.

Installationssidan från steg 4 visas efter en återställning. Valkey tömdes inte. Kör raden med FLUSHALL från steg 19.

Kör det på din egen server

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy

100 kr/mån

vCPU
2
Minne
8 GB
Lagring
60 GB
Trafik
10 TB
Performance
SSD · RAID 1
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider