Add post about E2EE using Emacs matrix-client.el
This commit is contained in:
parent
1249112ef2
commit
27196d3109
@ -0,0 +1,89 @@
|
||||
Chatting on Matrix/Riot with end to end encryption from within Emacs
|
||||
####################################################################
|
||||
|
||||
:date: 2020-03-09T11:48Z
|
||||
:category: blog
|
||||
:tags: emacs,matrix
|
||||
:url: 2020/03/09/chatting-on-matrix-with-e2ee-from-emacs/
|
||||
:save_as: 2020/03/09/chatting-on-matrix-with-e2ee-from-emacs/index.html
|
||||
:status: published
|
||||
:author: Gergely Polonkai
|
||||
|
||||
Iʼm a happy user and administrator of a `Matrix <https://matrix.org>`_ instance. Itʼs a pretty
|
||||
lonely one (iʼm the sole user of it) but i faced a lot of pros and cons of it in the last few
|
||||
years. In case you havenʼt heard about Matrix yet, itʼs a messaging framework which, for a few
|
||||
years now, supports end to end encryption (E2EE). It also serves as the base of a federated chat
|
||||
service you might know as `Riot <https://riot.im>`_.
|
||||
|
||||
Another thing iʼm also fond of is Emacs. Itʼs a great little UI for pretty much everything i do,
|
||||
from note taking through managing email and calendar to software development. It even has a
|
||||
Matrix client, `matrix-client.el <https://github.com/alphapapa/matrix-client.el>`_, written by
|
||||
well-known (in Emacs circles at least) `Ryan Rix <https://whatthefuck.computer/>`_ (rrix) and
|
||||
`alphapapa <https://github.com/alphapapa>`_. I tried it several times, but at the end i always
|
||||
came back to the official Riot client because we use Emacs E2EE both at my company and in private
|
||||
with some friends, and unfortunately ``matrix-client.el`` doesnʼt support it.
|
||||
|
||||
As this is the case with many other clients, like Fractal, some awesome folks of the Matrix
|
||||
community wrote `Pantalaimon <https://github.com/matrix-org/pantalaimon>`_ to solve this problem.
|
||||
It’s a Matrix proxy that can do E2EE for clients that donʼt support it natively.
|
||||
|
||||
Pantalaimon
|
||||
===========
|
||||
|
||||
Setting up Pantalaimon is really easy: you ``pip install`` it, write a 4 lines long config fire, and
|
||||
you are ready to go. Just make sure you have a valid certificate if you use HTTPS; Pantalaimon
|
||||
wonʼt connect if not, and will communicate this problem poorly.
|
||||
|
||||
.. code:: dosini
|
||||
|
||||
[example-matrix]
|
||||
Homeserver = https://example.org/
|
||||
ListenAddress = 127.0.0.1
|
||||
ListenPort = 8765
|
||||
|
||||
You simply start it with ``pantalaimon`` or, if you are a systemd fan user, you can use the
|
||||
`service file from their repository
|
||||
<https://github.com/matrix-org/pantalaimon/blob/master/contrib/pantalaimon.service>`_ with a
|
||||
slight change in the path.
|
||||
|
||||
matrix-client.el
|
||||
================
|
||||
|
||||
Coming up next, the Emacs Matrix client.
|
||||
|
||||
The fastest route for me was to add ``quelpa`` and ``quelpa-use-package`` to my config, and
|
||||
install matrix-client.el using those. The only tricky part is that iʼm lazy, so i have
|
||||
``use-package-always-ensure`` enabled which doesnʼt play nice with Quelpa installed packages that
|
||||
are not otherwise available on MELPA (or any other repository you might have enabled), hence the
|
||||
``:ensure nil`` clause.
|
||||
|
||||
.. code:: common-lisp
|
||||
|
||||
;; Don’t use it unless you are lazy enough to do extra work later
|
||||
(customize-set-variable 'use-package-always-ensure t)
|
||||
|
||||
(use-package quelpa)
|
||||
|
||||
(use-package quelpa-use-package
|
||||
:after quelpa)
|
||||
|
||||
(use-package matrix-client
|
||||
:after quelpa-use-package
|
||||
:ensure nil ;; you only need this if you have `use-package-always-ensure' set to non-nil
|
||||
:quelpa (matrix-client :fetcher github :repo "alphapapa/matrix-client.el"
|
||||
:files (:defaults "logo.png" "matrix-client-standalone.el.sh")))
|
||||
|
||||
Run it!
|
||||
=======
|
||||
|
||||
At this point you are ready to go. In Emacs, run :kbd:`M-x matrix-client-frame` or use the
|
||||
standalone script ``$HOME/.emacs.d/elpa/matrix-client-VERSION/matrix-client-standalone.sh`` to run
|
||||
it in a separate process (might be a better choice if your server is lagging a lot).
|
||||
|
||||
When ``matrix-client.el`` is asking for your credentials, you just enter them: your User ID (MXID,
|
||||
looks like ``@user:example.org``) and your password is as usual. Your server should be the one
|
||||
you specified in your Pantalaimon config as the listening IP and port, so in my example it would
|
||||
be ``http://localhost:8009``. If you donʼt need E2EE, then you can simply enter your homeserverʼs
|
||||
address here (and thus you donʼt need Pantalaimon).
|
||||
|
||||
You are all set! Happy (secretive) chatting, enjoy doing everything from your favourite OS, Emacs!
|
Loading…
Reference in New Issue
Block a user