ejabberd

Invalid value of option modules->mod_http_upload->thumbnail: ejabberd is built without image converter support


I built ejabberd 24.07 in Ubuntu 22.04.4 LTS successfully with rebar and those dependencies installed successfully :

sudo apt-get install build-essential automake autoconf libssl-dev libyaml-dev libz-dev libexpat1-dev imagemagick libgd-dev libwebp-dev libpng-dev libjpeg-dev

sudo ./autogen.sh

./configure --prefix=/home/ipple/ejabberd --enable-user=ipple  --enable-pgsql --disable-debug --with-rebar=rebar

make clean;make;make install

BUT failed to start ejabberd:

@ejabberd_app:start/2:72 Failed to start ejabberd application: Invalid value of option modules->mod_http_upload->thumbnail: ejabberd is built without image converter support


Solution

  • --with-rebar=rebar

    If possible, use rebar3 instead of rebar: --with-rebar=rebar3, or quite simply don't set that option and let configure decide if it uses mix, rebar3 or rebar.

    imagemagick

    That is for generating CAPTCHAs, not related to image conversions.

    I would say that you added the required dependencies and enabled the proper options, so I don't understand why it fails in your case.

    I've written a Dockerfile that uses Ubuntu 22.04, installs the dependencies, downloads ejabberd, compiles it, enables the thumbnail option and starts ejabberd. It works correctly!

    You can see what dependencies and options I used in this Dockerfile, and compare with your installation:

    FROM ubuntu:22.04
    
    RUN apt-get -qq update
    RUN apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \
                            libsqlite3-dev libwebp-dev libyaml-dev
    RUN apt-get -qq install git build-essential automake autoconf
    RUN apt-get -qq install erlang erlang-dev
    RUN apt-get -qq install openssl libssl-dev
    
    RUN git clone https://github.com/processone/ejabberd.git
    WORKDIR /ejabberd
    
    RUN addgroup ejabberd --gid 9000
    RUN adduser --shell /bin/sh --disabled-login --gid 9000 ejabberd -u 9000
    RUN mkdir -p /home/ejabberd/conf /home/ejabberd/database /home/ejabberd/logs /home/ejabberd/upload
    RUN chown -R ejabberd:ejabberd /home/ejabberd
    
    RUN ./autogen.sh
    RUN ./configure --prefix=/home/ejabberd --enable-user=ejabberd --enable-pgsql --disable-debug
    RUN sed -i 's|mod_http_upload:|mod_http_upload:\n    thumbnail: true|' ejabberd.yml.example
    RUN make
    RUN make install-rel
    
    ENV HOME=/home/ejabberd
    USER ejabberd
    VOLUME ["$HOME/var/lib/ejabberd","$HOME/etc/ejabberd","$HOME/var/log/ejabberd"]
    EXPOSE 1883 4369-4399 5222 5269 5280 5443
    
    ENTRYPOINT ["/home/ejabberd/sbin/ejabberdctl"]
    CMD ["foreground"]
    
    

    Then I create the container image:

    podman build -t ejaubuntu .
    

    Then start the image with ejabberd:

    podman run -it -p 5222:5222 localhost/ejaubuntu live
    

    ejabberd starts with an interactive erlang shell where I can view the start logs, no error with the option. In fact, I run this erlang function to verify that image conversion is supported:

    ...
    2024-07-23 10:44:30.194644+00:00 [info] ejabberd 24.07.4 is started in the node ejabberd@localhost in 1.16s
    
    (ejabberd@localhost)1> eimp:supported_formats().
    [webp,jpeg,png,gif]
    (ejabberd@localhost)2>