Indholdsfortegnelse
Setup og formål
Jeg benytter ejabberd gennem Apache proxy med mysql. Det giver serveren lidt ekstra arbejde at Apache er mellemmand men til gengæld skal jeg ikke bekymre mig om CORS eller at den port jeg bruger til ejabberd måske ikke er åben i brugerens netværk.
Det projekt jeg arbejder på, er en privat chat, og jeg benytter således ikke chat-rum eller konference funktionalitet. Brugerne sender blot beskeder direkte til hinanden. Klienten som vi selv har lavet, kommunikerer med ejabberd via Strophe.js.
Installation ejabberd
Efter opgradering af Ubuntu fra 16.04 til 18.04 fik jeg aldrig ejabberd til at fungere igen. Den fejl har jeg beskrevet på stackoverflow. Jeg endte derfor med at reinstallere den. Da jeg benytter mysql til data, er det ikke det store problem. Bruger du mnesia, skal du først eksportere og derefter importere dine data vha ejabberdctl.
Fjern tidligere installation:
1 |
# apt-get --purge autoremove ejabberd |
Tjek at /etc/ejabberd er helt tom, ellers fjern hvad der måtte ligge.
Derefter kør en generel opdatering og installér igen:
1 2 3 |
# apt-get update # apt-get upgrade # apt-get install ejabberd |
MySQL database
Opret en database og en bruger til den. Hent ejabberd’s database schema fra deres hjemmeside. Indlæs det i din database.
1 2 |
CREATE DATABASE ejabberd; GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'password'; |
1 |
$ mysql -h localhost -D ejabberd -u ejabberd -p < mysql.sql |
Da jeg allerede havde en database, opdaterede jeg den med de ændringer der er sket siden version 16.01. Se ejabberd release notes.
ejabberd konfiguration
Registrer en admin bruger:
1 |
# ejabberdclt register admin chat3.myserver.com adgangskode |
Hvis dit database setup er korrekt, vil denne bruger nu befinde sig i users
tabellen.
Her er de relevante dele af /etc/ejabberd/ejabberd.yml
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
hosts: - "localhost" - "chat3.myserver.com" <- chattens offentlige domæne listen: - port: 5222 ... - port: 5269 ... - ##port: 5280 port: 8088 <- valgfrit portnummer ip: "127.0.0.1" <- lyt kun på localhost module: ejabberd_http request_handlers: "/ws": ejabberd_http_ws "/bosh": mod_bosh "/api": mod_http_api ## "/pub/archive": mod_http_fileserver web_admin: true ## register: true ## captcha: true tls: false <- ingen grund til tls på localhost protocol_options: 'TLS_OPTIONS' auth_method: sql sql_type: mysql sql_server: "server" sql_database: "ejabberd_live" sql_username: "ejabberd" sql_password: "secret" acl: admin: user: - "": "localhost" - "admin": "chat3.myserver.com" |
Stop og start ejabberd efter ændringer i ejapperd.yml:
1 2 |
# ejabberdctl stop # ejabberdctl start |
Apache Proxy
I den virtuelle host for chat3.myserver.com har jeg følgende linier:
1 2 3 4 |
ProxyPass /http-bind/ http://127.0.0.1:8088/bosh ProxyPassReverse /http-bind/ http://127.0.0.1:8088/bosh ProxyPass /admin/ http://127.0.0.1:8088/admin/ ProxyPassReverse /admin/ http://127.0.0.1:8088/admin/ |
Derefter genstart Apache. Besøg https://dit.domæne.com/http-bind/
. Du skulle gerne se en velkomst side der indikerer at dit bosh link virker. Besøg også https://dit.domæne.com/admin/
og log ind med din admin bruger.