• chevron_right

      Chat picture resolver and Telegram stickers

      Timothée Jaussoin · pubsub.movim.eu / Movim · Friday, 15 May, 2020 - 07:50 edit · 3 minutes

    Movim 0.18 is planned to be released soon.

    In the meantime, let's have a look at one specific feature that is really useful when you integrate Movim with the Spectrum2 - Telegram bridge.

    For those that are not aware, XMPP can connect to other chat networks using tools called "transport". One of the most used is called Spectrum2 and can connect to many other networks thanks to its libpurple support.

    Telegram transport setup

    What will we do here is:

    • Setup telegram-purple in Spectrum2 on Debian
    • Connect it to a XMPP server (here ejabberd)
    • Adapt the transport to integrate with Movim

    Setup Spectrum2 and telegram-purple

    Here I will not detail the basic installation, the official Spectrum2 documentation is pretty complete.

    Once the repository is setup, please install the base package and the libpurple module:

    apt install spectrum2 spectrum2-backend-libpurple

    For telegram-purple the README is also quite complete

    Create a Telegram transport

    Once all the packages are setup, we will create a transport configuration file. You can reuse the spectrum.cfg.example located in the /etc/spectrum2/transports/ as a base.

    # nano /etc/spectrum2/transports/spectrum_telegram.cfg

    This is basically the config file that I used for my own telegram.movim.eu transport:

    server_mode = 0
    jid = telegram.movim.eu
    password = spectrumpassword
    server =
    port = 5347
    backend_host =
    name=Telegram Transport
    config = /etc/spectrum2/logging.cfg
    backend_config = /etc/spectrum2/backend-logging.cfg
    type = sqlite3

    When Spectrum2 will connect to the Telegram network, the stickers will be downloaded as files on the server. By default an ugly path is simply sent to the XMPP clients. We will turn it to a proper URL and let Movim to its magic.

    To do that we need to configure the Web Storage module. You can also find more documentation about it there.


    It's pretty self explanatory. The downloaded stickers will be put in the web_directory directory. The second parameter, web_url, is basically telling Spectrum2 how to general its URL before sending them in the messages.

    Configure ejabberd

    Then we need to add a new service in our ejabberd.yml configuration file.

        port: 5347
        module: ejabberd_service
        access: all
        ip: ""
        global_routes: false
            password: "spectrumpassword"

    Once everything is setup, restart Spectrum2 and ejabberd. For Spectrum2 you can do it using spectrum2_manager or a dedicated systemd configuration file.

    Configure our web server

    We then need to expose those files to the web. A simple nginx configuration will handle it.

    server {
        server_name upload.movim.eu;
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        root /home/movim/upload;
        location /spectrum {
            alias /home/movim/movim/spectrum;

    Fix the nasty file rights with Incron

    If you start to use your Telegram transport at this point you'll notice that the stickers URLs are returning a 403 Forbidden error.

    Indeed, Spectrum2 is writting the files in the directory using it's own rights. And this can't be configured.

    We will then use another useful tool called Incron. This tool works like CRON but instead of working on time events, it works on file events.

    You can find a pretty complete documentation there.

    apt install incron 
    nano /etc/incron.allow # add your spectrum user there
    sudo -su spectrum
    incrontab -e

    In the incrontab file well then change dynamicaly the rights of the files once they are wrote in the directory (check the documentation for more details).

    /home/movim/upload/spectrum   IN_CLOSE_WRITE          chmod 664 $@/$#

    Enjoy your nice Telegram stickers in Movim

    In Movim, nothing more to do. With the version 0.18, Movim will try to resolve the incoming messages that contains a URL and see if it's a valid picture. Which is the case for Telegram stickers.

    Telegram stickers displayed in the Movim chat

    You can also note that it works for any other incoming picture URL, including those sent using Conversations or other XMPP clients.

    That's all folks!

    #telegram #xmpp #movim #transport #stickers #ejabberd #admin

    • chevron_right

      Some news about Movim

      Timothée Jaussoin · pubsub.movim.eu / Movim · Tuesday, 11 June, 2019 - 16:29 edit

    You may have noticed that there was less updates about Movim the past few weeks. I was indeed a bit busy with other things (jobs, other projects…) but don't worry I'm still working on the upcoming release and maintaining things up.

    Our #ejabberd instance (for movim.eu and jappix.com) was updated to ejabberd 19.05 a few days ago (we also found a little issue in the release related to the #Pubsub module, which was kindly fixed upstream by the ejabberd team).

    A new "share posts to chat contacts" feature was also introduced recently. This will need a bit of polishing but will be part of the upcoming release.

    Posts in the chat, Movim, first XMPP client to do that, it

    I am also renewing our call to help the #Movim project on #Patreon, we lost a few bakers and went again bellow the 50€/month that allows us to cover the servers + domains and few other expenses for the project.

    So if you want to help us, do not hesitate to join our Patreon as well as participating to our little community by doing translations, bug reports (or better, fixes!).


    • chevron_right

      Passage de Prosody à ejabberd

      Adrien Dorsaz · Wednesday, 27 July, 2016 - 13:45

    Hier soir j'ai finalisé ma transition de mon serveur XMPP de Prosody vers ejabberd (enfin, ce n'était pas une transition, je n'ai pas récupéré mes données).

    Je vais tester quelques temps ejabberd, car ils annoncent le support de pusbub, ce qui me sera très utile avec Movim (Prosody le supporte en partie aussi, mais il ne permet pas de commenter les articles et il ne les conserve que dans la mémoire vive, ce qui supprime mes articles à chaque redémarrage…).

    La configuration des dernières versions d'ejabberd avec YAML est très claire, ça m'a beaucoup plus. D'abord, ils commentent leur fichier de configuration, ensuite la syntaxe est simple et enfin, la relecture est compréhensible sans la documentation (les options et les valeurs sont intelligibles).