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/06/02 05:25]
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.
  
-===== DevDungeon XMPP Chat room =====+===== DevDungeon XMPP Server =====
  
-If you a member of the DevDungeon Virtual Hackerspace, you will have your own account ''you@devdungeon.com'' that you can login with to the DevDungeon serverIf you have your own account, you can join our public chat room:+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''.
  
 <code> <code>
Line 11: Line 12:
 </code> </code>
  
 +<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>
  
-===== Servers ===== 
  
-==== Openfire ==== 
  
-[[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. 
  
-=== Setup === 
  
-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/]].+===== Clients =====
  
-After downloading the ''.deb'' package, install it with ''apt''. Openfire doesn't come with JREsothe installer will also install the ''default-jre-headless'' package to run openfire.+For longer list of available clientscheck out [[https://new.xmpp.org/software/clients.html]].
  
-<code bash> +** Profanity **
-# 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'running +Profanity is a terminal client that supports HTTP file uploads and OTR/PGP/OMEMO encryption. It'a great client. I have a dedicated page: [[:terminal:profanity|Profanity Terminal XMPP client]]
-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.+** Converse.js **
  
-After you run setup, restart to enable HTTPS on 9091 by default. +[[https://conversejs.org|Converse.js]] is a web-based and cross-platform client for XMPP that supports OMEMO encryption and HTTP file uploads. You 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/''.
-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 default. Restart 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''.+** Psi+ **
  
-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.+Psi+ is desktop client that supports PGP encryption and direct file transfer.
  
-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.+** Pidgin **
  
-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 restart. Provide secret token, and then the web portal will have a special prompt waiting for that special token. After logging in with the secret token, you can reset the admin password. It will automatically delete that one time token from the config once consumed, so leave in commented version for reference.+Pidgin is desktop client that supports direct file transfer and OTR encryption (with a 3rd party plugin).
  
-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.+** Gajim **
  
-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.+Gajim is a desktop client that is cross-platform. It supports HTTP file uploads and OMEMO encryption.
  
-<code bash> +** Spark **
-# 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.+[[https://www.igniterealtime.org/projects/spark/|Spark]] is desktop client written in Java. It supports direct file transfer, has built-in translation features, and a screenshot feature.
  
-Also refer to the section below about DNS Entries for more tips.+** Thunderbird **
  
-To turn on HTTP File uploads (PEP-0378) go to plugins and enable ''HTTP File Upload'' plugin.+The Thunderbird email client also supports XMPP chat although not with a ton of features. It does support OTR 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'' (or wait, ''fullchain.pem'' is better?). Click save. You can remove the self-signed cert afterwards. 
  
-===== Clients ===== 
  
-For a longer list of available clients, check out [[https://new.xmpp.org/software/clients.html]]. 
  
-==== Profanity ====+===== Servers =====
  
-Profanity is a terminal client that supports HTTP file uploads and OTR/PGP/OMEMO encryption. It's a great client. I have a dedicated page: [[:terminal:profanity|Profanity - Terminal XMPP client]]+** Openfire **
  
-==== Converse.js ====+[[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.
  
-[[https://conversejs.org|Converse.js]] is a web-based and cross-platform client for XMPP that supports OMEMO encryption and HTTP file uploads. You 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/''.+For instructions on setting up Openfire XMPP server, see: [[:other:openfire_setup|Openfire XMPP Server Setup]].
  
-==== Psi+ =====+** Prosody IM **
  
-Psi+ is a desktop client that supports PGP encryption and direct file transfer.+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.
  
-==== Pidgin ====+Prosody is open-source software under the permissive MIT/X11 license."
  
-Pidgin is a desktop client that supports direct file transfer and OTR encryption (with a 3rd party plugin). +** ejabberd **
- +
-==== Gajim ==== +
- +
-Gajim is a desktop client that is cross-platform. It supports HTTP file uploads and OMEMO encryption. +
- +
-==== Spark ==== +
- +
-[[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. +
- +
-==== Thunderbird ==== +
- +
-The Thunderbird email client also supports XMPP chat although not with a ton of features. It does support OTR encryption.+
  
 +https://www.ejabberd.im/ "Robust, Scalable and Extensible Realtime Platform
 +XMPP Server + MQTT Broker + SIP Service"
  
 ===== DNS Entries ===== ===== DNS Entries =====
community/xmpp.1622611538.txt.gz · Last modified: 2021/06/02 05:25 by nanodano