User Tools

Site Tools


community:xmpp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
community:xmpp [2021/05/26 04:32]
nanodano
community:xmpp [2021/06/05 22:35] (current)
nanodano
Line 3: Line 3:
 [[https://xmpp.org|XMPP]], formerly Jabber, is a messaging protocol standard that is highly extensible. It is federated meaning there is not one central server but different servers can all communicate with each other, similar to how email works across multiple domains and email providers. [[https://xmpp.org|XMPP]], formerly Jabber, is a messaging protocol standard that is highly extensible. It is federated meaning there is not one central server but different servers can all communicate with each other, similar to how email works across multiple domains and email providers.
  
-===== Servers =====+===== DevDungeon XMPP Server =====
  
-==== Openfire ====+DevDungeon runs an XMPP server as part of [[https://my.devdungeon.com/services|the DevDungeon infrastructure]]. The ''general@conference.devdungeon.com'' chat room is open to the public and anyone can join.  
 +If you a member of the DevDungeon Virtual Hackerspace, you get your own account ''you@devdungeon.com''.
  
-[[https://www.igniterealtime.org/projects/openfire/|OpenFire]] is an XMPP written in Java. It has a feature-rich web interface. The project also has a Java library for XMPP named [[https://www.igniterealtime.org/projects/smack/|Smack]] and a Java desktop client for XMPP chat named [[https://www.igniterealtime.org/projects/spark/|Spark]]. Together, they provide a complete suite for XMPP. There are also a number of [[https://www.igniterealtime.org/projects/openfire/plugins.jsp|Openfire plugins]] that extend the server.+<code> 
 +general@conference.devdungeon.com 
 +</code>
  
-=== Setup ===+<html> 
 +<center> 
 +<iframe width="560" height="315" src="https://www.youtube.com/embed/O0psMtYnouc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> 
 +</center> 
 +</html>
  
-Openfire is not in the Debian repositories, but it is easy to install and configure because they provide an official ''.deb'' package. You can download the packages from [[https://www.igniterealtime.org/downloads/]]. 
  
-After downloading the ''.deb'' package, install it with ''apt''. Openfire doesn't come with a JRE, sothe installer will also install the ''default-jre-headless'' package to run openfire. 
  
-<code bash> 
-# Download 
-curl -L -o openfire_4.6.2_all.deb  \ 
- "https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.6.2_all.deb" 
-# Install 
-apt install ./openfire_4.6.2_all.deb 
  
-# Confirm it's running 
-systemctl status openfire 
-# Verify it's listening on port 9090 
-netstat -ntlp  # apt install net-tools 
-</code> 
  
-It will only be listening on port 9090 until you finish setting it up. Visit your host in a web-browser on port 9090. For example [[http://xmpp.devdungeon.com:9090]] and follow the setup wizard. If you want to use an external database like MySQL or [[databases:postgresql|PostgreSQL]], you'll have to set that up first.+===== Clients =====
  
-After you run setuprestart to enable HTTPS on 9091 by default. +For a longer list of available clientscheck out [[https://new.xmpp.org/software/clients.html]].
-To disable HTTP and force HTTPS only, edit ''/etc/openfire/openfire.xml'' and set the ''9090'' port to ''-1''The HTTPS port is ''9091'' by defaultRestart the server.+
  
-To enable the [[https://www.igniterealtime.org/projects/openfire/plugins/1.3.8/restAPI/readme.html|REST API]], go to the admin web portal and to ''Plugins | Available Plugins'' and enable ''REST API''. Then go to ''Server | Server Settings | REST API'' and set to ''Enabled''.+** Profanity **
  
-To enable web chat client ([[https://conversejs.org|Converse.js]]) enable the inVerse plugin. Then go to ''Web Clients'' in the main menu after enabling and it will give you the URL to use.+Profanity is terminal client that supports HTTP file uploads and OTR/PGP/OMEMO encryptionIt's a great clientI have a dedicated page: [[:terminal:profanity|Profanity - Terminal XMPP client]]
  
-If you need to re-run setup to redo how you setup user profiles, edit ''/etc/openfire/openfire.xml'' and set the value for ''<setup>true</setup>'' to false and restart server.+** Converse.js **
  
-If you need to recover access because you lost the admin password, edit ''/etc/openfire/openfire.xml'' and uncomment the line ''<oneTimeAccessToken>secretToken</oneTimeAccessToken>'' and restartProvide secret token, and then the web portal will have a special prompt waiting for that special tokenAfter logging in with the secret token, you can reset the admin passwordIt will automatically delete that one time token from the config once consumed, so leave in a commented version for reference.+[[https://conversejs.org|Converse.js]] is a web-based and cross-platform client for XMPP that supports OMEMO encryption and HTTP file uploadsYou can use their [[https://conversejs.org/fullscreen.html|hosted web client]] to login to any server (including the DevDungeon one). You can use their [[https://conversejs.org/fullscreen.html|hosted full-page version]] or the DevDungeon hosted web client at [[https://xmpp.devdungeon.com:7443/inverse/]] or you can download their [[https://github.com/conversejs/converse-desktop/releases|desktop version]]. If you're using the desktop version, the HTTP bind URL for DevDungeon server is ''https://xmpp.devdungeon.com:7443/http-bind/''.
  
-If you're setting up OpenLDAP, the user id might need to be changed from ''uid'' to ''cn'' and the group mapping might need to be changed from ''cn'' to ''ou''. When asked to provide an admin username, provide the simple username after LDAP mapping, e.g. ''nanodano''. There are some more docs at [[https://www.igniterealtime.org/projects/openfire/documentation.jsp]] including a [[https://download.igniterealtime.org/openfire/docs/latest/documentation/ldap-guide.html|dedicated LDAP]] guide there.+** Psi+ **
  
-After finishing the setup through the web interface, you can login to the web portal using the admin you setup, and the server is ready for use. You'll also see lot more stuff listening.+Psi+ is a desktop client that supports PGP encryption and direct file transfer.
  
-<code bash> +** Pidgin **
-# Openfire will open many ports +
-netstat -ntlp +
-</code>+
  
-The landing page of the admin web portal will have full list of all ports and what they are for.+Pidgin is desktop client that supports direct file transfer and OTR encryption (with a 3rd party plugin).
  
-Also refer to the section below about DNS Entries for more tips.+** Gajim **
  
-To turn on HTTP File uploads (PEP-0378) go to plugins and enable ''HTTP File Upload'' plugin.+Gajim is a desktop client that is cross-platform. It supports HTTP file uploads and OMEMO encryption.
  
-To setup custom SSL certs, follow instructions at [[https://meetrix.io/blog/xmpp/openfire_ssl.html]]: Go to plugins and enable ''Certificate Manager''. Then go to Server -> TLS/SSL Settings and click 'Manage Store Contents' and click on the text 'imported here'. Then paste in the contents of your key and certificate files. If using LetsEncrypt.org/certbot, they'll be in somewhere like ''/etc/letsencrypt/live/example.com/''. The private key file is ''privkey.pem'' and the certificate file is ''cert.pem''. Click save. You can remove the self-signed cert afterwards.+** Spark **
  
-===== Clients =====+[[https://www.igniterealtime.org/projects/spark/|Spark]] is a desktop client written in Java. It supports direct file transfer, has built-in translation features, and a screenshot feature.
  
-For a longer list of available clients, check out [[https://xmpp.org/software/clients.html]].+** Thunderbird **
  
-==== Converse.js ====+The Thunderbird email client also supports XMPP chat although not with a ton of features. It does support OTR encryption.
  
-[[https://conversejs.org|Converse.js]] is a web-based client for XMPP. You can use their [[https://conversejs.org/fullscreen.html|hosted web client]] to login to any server (including the DevDungeon one). 
  
-==== Pidgin ==== 
  
-This is a classic client that supports many protocols and has many plugins including OTR (off-the-record end-to-end encryption). It uses libpurple and GTK under the hood. 
  
-==== Gajim ====+===== Servers =====
  
-==== Spark ====+** Openfire **
  
-Spark is a Java client provided by IngiteRealtimethe creators of the Openfire server.+[[https://www.igniterealtime.org/projects/openfire/|OpenFire]] is an XMPP written in Java. It has a feature-rich web interface. The project also has a Java library for XMPP named [[https://www.igniterealtime.org/projects/smack/|Smack]] and a Java desktop client for XMPP chat named [[https://www.igniterealtime.org/projects/spark/|Spark]]. Togetherthey provide a complete suite for XMPP. There are also a number of [[https://www.igniterealtime.org/projects/openfire/plugins.jsp|Openfire plugins]] that extend the server.
  
-===== Libraries =====+For instructions on setting up Openfire XMPP server, see: [[:other:openfire_setup|Openfire XMPP Server Setup]].
  
-==== libpurple (C) ====+** Prosody IM **
  
-==== Smack (Java) ====+https://prosody.im/ "Prosody is a modern XMPP communication server. It aims to be easy to set up and configure, and efficient with system resources. Additionally, for developers it aims to be easy to extend and give a flexible system on which to rapidly develop added functionality, or prototype new protocols.
  
 +Prosody is open-source software under the permissive MIT/X11 license."
  
 +** ejabberd **
  
 +https://www.ejabberd.im/ "Robust, Scalable and Extensible Realtime Platform
 +XMPP Server + MQTT Broker + SIP Service"
  
 ===== DNS Entries ===== ===== DNS Entries =====
community/xmpp.1622003545.txt.gz · Last modified: 2021/05/26 04:32 by nanodano