diff --git a/Makefile b/Makefile
index a35bc6fa6292bfac268e435ad9a334a2624c4ea8..ac0e3873d482fc86294684c178cf8823f5a9eb18 100644
--- a/Makefile
+++ b/Makefile
@@ -41,6 +41,15 @@ DEBIAN_OCI_VERSION:=$(RELEASE_VERSION)~dfsg1-0
 DEBIAN_OCI_DSC_FILENAME:=jami_$(DEBIAN_OCI_VERSION).dsc
 DEBIAN_OCI_PKG_DIR:="packaging/rules/debian-one-click-install"
 
+# Qt versions
+QT_MAJOR:=5
+QT_MINOR:=15
+QT_PATCH:=2
+QT_TARBALL_CHECKSUM:="3a530d1b243b5dec00bc54937455471aaa3e56849d2593edb8ded07228202240"
+DEBIAN_QT_VERSION:=$(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-1
+DEBIAN_QT_DSC_FILENAME:=libqt-jami_$(DEBIAN_QT_VERSION).dsc
+QT_JAMI_PREFIX:="/usr/lib/libqt-jami"
+
 #####################
 ## Other variables ##
 #####################
diff --git a/docker/Dockerfile_debian_10_qt b/docker/Dockerfile_debian_10_qt
new file mode 100644
index 0000000000000000000000000000000000000000..32459806d5baa8a914916857d623bf0dda4b42a9
--- /dev/null
+++ b/docker/Dockerfile_debian_10_qt
@@ -0,0 +1,31 @@
+FROM debian:buster
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get clean
+RUN apt-get update && \
+    apt-get install -y -o Acquire::Retries=10 \
+        devscripts \
+        wget
+
+# add/enable src repos (needed for next step)
+RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list
+
+RUN apt-get clean && apt-get update
+COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/
+RUN cd /tmp/builddeps/debian; \
+    if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \
+        mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \
+        rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \
+    fi; \
+    cd ..; \
+    apt-get update; \
+    mk-build-deps \
+        --remove --install \
+        --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \
+        "debian/control"; \
+    cd / && rm -rf /tmp/builddeps
+
+ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh
+
+CMD /opt/build-package-debian-qt.sh
diff --git a/docker/Dockerfile_ubuntu_18.04_qt b/docker/Dockerfile_ubuntu_18.04_qt
new file mode 100644
index 0000000000000000000000000000000000000000..222be506c1b40deadec434c73648f92003539514
--- /dev/null
+++ b/docker/Dockerfile_ubuntu_18.04_qt
@@ -0,0 +1,32 @@
+FROM ubuntu:18.04
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get clean
+RUN apt-get update && \
+    apt-get install -y -o Acquire::Retries=10 \
+        devscripts \
+        equivs \
+        wget
+
+# add/enable src repos (needed for next step)
+RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list
+
+RUN apt-get clean && apt-get update
+COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/
+RUN cd /tmp/builddeps/debian; \
+    if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \
+        mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \
+        rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \
+    fi; \
+    cd ..; \
+    apt-get update; \
+    mk-build-deps \
+        --remove --install \
+        --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \
+        "debian/control"; \
+    cd / && rm -rf /tmp/builddeps
+
+ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh
+
+CMD /opt/build-package-debian-qt.sh
diff --git a/docker/Dockerfile_ubuntu_18.04_qt_i386 b/docker/Dockerfile_ubuntu_18.04_qt_i386
new file mode 100644
index 0000000000000000000000000000000000000000..271b8afda4cf8fe14e779f45974347af098159f7
--- /dev/null
+++ b/docker/Dockerfile_ubuntu_18.04_qt_i386
@@ -0,0 +1,32 @@
+FROM i386/ubuntu:18.04
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get clean
+RUN apt-get update && \
+    apt-get install -y -o Acquire::Retries=10 \
+        devscripts \
+        equivs \
+        wget
+
+# add/enable src repos (needed for next step)
+RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list
+
+RUN apt-get clean && apt-get update
+COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/
+RUN cd /tmp/builddeps/debian; \
+    if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \
+        mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \
+        rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \
+    fi; \
+    cd ..; \
+    apt-get update; \
+    mk-build-deps \
+        --remove --install \
+        --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \
+        "debian/control"; \
+    cd / && rm -rf /tmp/builddeps
+
+ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh
+
+CMD /opt/build-package-debian-qt.sh
diff --git a/docker/Dockerfile_ubuntu_20.04_qt b/docker/Dockerfile_ubuntu_20.04_qt
new file mode 100644
index 0000000000000000000000000000000000000000..053bf6d20cad69e55d9d5d7afe3d50e2d34be092
--- /dev/null
+++ b/docker/Dockerfile_ubuntu_20.04_qt
@@ -0,0 +1,32 @@
+FROM ubuntu:20.04
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get clean
+RUN apt-get update && \
+    apt-get install -y -o Acquire::Retries=10 \
+        devscripts \
+        equivs \
+        wget
+
+# add/enable src repos (needed for next step)
+RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list
+
+RUN apt-get clean && apt-get update
+COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/
+RUN cd /tmp/builddeps/debian; \
+    if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \
+        mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \
+        rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \
+    fi; \
+    cd ..; \
+    apt-get update; \
+    mk-build-deps \
+        --remove --install \
+        --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \
+        "debian/control"; \
+    cd / && rm -rf /tmp/builddeps
+
+ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh
+
+CMD /opt/build-package-debian-qt.sh
diff --git a/docker/Dockerfile_ubuntu_20.10_qt b/docker/Dockerfile_ubuntu_20.10_qt
new file mode 100644
index 0000000000000000000000000000000000000000..6b1ed4cb241efbb5768f71f2348a7641769cea90
--- /dev/null
+++ b/docker/Dockerfile_ubuntu_20.10_qt
@@ -0,0 +1,32 @@
+FROM ubuntu:20.10
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get clean
+RUN apt-get update && \
+    apt-get install -y -o Acquire::Retries=10 \
+        devscripts \
+        equivs \
+        wget
+
+# add/enable src repos (needed for next step)
+RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list
+
+RUN apt-get clean && apt-get update
+COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/
+RUN cd /tmp/builddeps/debian; \
+    if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \
+        mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \
+        rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \
+    fi; \
+    cd ..; \
+    apt-get update; \
+    mk-build-deps \
+        --remove --install \
+        --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \
+        "debian/control"; \
+    cd / && rm -rf /tmp/builddeps
+
+ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh
+
+CMD /opt/build-package-debian-qt.sh
diff --git a/packaging/rules/debian-qt/compat b/packaging/rules/debian-qt/compat
new file mode 100644
index 0000000000000000000000000000000000000000..9a037142aa3c1b4c490e1a38251620f113465330
--- /dev/null
+++ b/packaging/rules/debian-qt/compat
@@ -0,0 +1 @@
+10
\ No newline at end of file
diff --git a/packaging/rules/debian-qt/control b/packaging/rules/debian-qt/control
new file mode 100644
index 0000000000000000000000000000000000000000..3e0f5f53695d208e1ae42fc142ad55b56e06bb53
--- /dev/null
+++ b/packaging/rules/debian-qt/control
@@ -0,0 +1,384 @@
+Source: libqt-jami
+Section: libs
+Priority: optional
+Maintainer: The Jami project <jami@gnu.org>
+Rules-Requires-Root: no
+Standards-Version: 4.5.1
+Build-Depends: debhelper (>= 9),
+# =====================================================
+# the following list of deps was gathered with help
+# from https://salsa.debian.org/qt-kde-team/qt repos
+# =====================================================
+#
+# ======
+# qtbase
+# ======
+# debhelper-compat (= 13),
+# debhelper,
+               default-libmysqlclient-dev,
+               dh-exec,
+# dpkg-dev (>= 1.17.14),
+               dpkg-dev,
+               firebird-dev [kfreebsd-any linux-any],
+               freetds-dev,
+               libasound2-dev [linux-any],
+               libatspi2.0-dev,
+               libcups2-dev,
+               libdbus-1-dev,
+               libdouble-conversion-dev,
+               libdrm-dev [linux-any],
+               libfontconfig1-dev,
+               libfreetype6-dev,
+               libgbm-dev [linux-any kfreebsd-any],
+               libgl-dev,
+# libgles-dev, (not available in buster)
+               libglib2.0-dev,
+# libglu1-mesa-dev | libglu-dev,
+               libgtk-3-dev,
+               libharfbuzz-dev (>= 1.6.0~),
+               libicu-dev,
+               libinput-dev [linux-any],
+               libjpeg-dev,
+               libkrb5-dev,
+# libmd4c-dev, (not in buster)
+               libmtdev-dev [linux-any],
+               libpcre2-dev,
+               libpng-dev,
+               libpq-dev,
+               libproxy-dev,
+               libpulse-dev,
+               libsqlite3-dev,
+               libssl-dev,
+               libudev-dev [linux-any],
+               libvulkan-dev [linux-any],
+               libx11-dev,
+               libx11-xcb-dev,
+               libxcb-glx0-dev,
+               libxcb-icccm4-dev,
+               libxcb-image0-dev,
+               libxcb-keysyms1-dev,
+               libxcb-randr0-dev,
+               libxcb-render-util0-dev,
+               libxcb-render0-dev,
+               libxcb-shape0-dev,
+               libxcb-shm0-dev,
+               libxcb-sync-dev,
+               libxcb-util0-dev,
+               libxcb-xfixes0-dev,
+               libxcb-xinerama0-dev,
+               libxcb-xinput-dev,
+               libxcb-xkb-dev,
+               libxcb1-dev,
+               libxext-dev,
+               libxi-dev,
+               libxkbcommon-dev,
+               libxkbcommon-x11-dev,
+               libxrender-dev,
+               libzstd-dev,
+               pkg-config,
+# pkg-kde-tools (>= 0.15.17~),
+               publicsuffix,
+# qt5-qmake-bin <cross>,
+               unixodbc-dev,
+               zlib1g-dev,
+# =============
+# qtdeclarative
+# =============
+# debhelper-compat (= 13),
+# dpkg-dev (>= 1.20.0),
+               libgl1-mesa-dri,
+# pkg-kde-tools (>= 0.15.17~),
+               python3:any,
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+               xauth <!nocheck>,
+               xvfb <!nocheck>,
+# ==================
+# qtgraphicaleffects
+# ==================
+# debhelper-compat (= 13),
+# dpkg-dev (>= 1.16.1),
+# pkg-kde-tools (>= 0.15.26~),
+# qml-module-qtquick-window2 (>= 5.15.2+dfsg~),
+# qml-module-qtquick2 (>= 5.15.2+dfsg~),
+# qtbase5-dev (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-dev-tools (>= 5.15.2+dfsg~),
+# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
+# ============
+# qtmultimedia
+# ============
+# debhelper-compat (= 13),
+# libasound2-dev [linux-any],
+               libgstreamer-plugins-base1.0-dev,
+               libgstreamer1.0-dev,
+               libopenal-dev,
+# libpulse-dev,
+# libqt5opengl5-dev (>= 5.15.2+dfsg~),
+# pkg-kde-tools,
+# qml-module-qtquick2,
+# qml-module-qttest,
+# qtbase5-dev (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-dev (>= 5.15.2+dfsg~),
+# xauth <!nocheck>,
+# xvfb <!nocheck>,
+# zlib1g-dev,
+# =========================
+# qtlocation (for qtwebkit)
+# =========================
+# debhelper-compat (= 13),
+               libboost-dev,
+# libicu-dev,
+               libprotozero-dev (>= 1.5.2),
+# libqt5opengl5-dev (>= 5.15.2+dfsg~),
+# pkg-kde-tools,
+# qml-module-qttest (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
+               rapidjson-dev (>= 1.1.0),
+# xauth <!nocheck>,
+# xvfb <!nocheck>,
+# zlib1g-dev,
+# ===============
+# qtquickcontrols
+# ===============
+# debhelper-compat (= 13),
+# dpkg-dev (>= 1.17.14),
+# pkg-kde-tools (>= 0.15.26~),
+# qml-module-qt-labs-folderlistmodel (>= 5.15.2+dfsg~),
+# qml-module-qt-labs-settings (>= 5.15.2+dfsg~),
+# qml-module-qtgraphicaleffects (>= 5.15.2~),
+# qml-module-qtqml (>= 5.15.2+dfsg~),
+# qml-module-qtqml-models2 (>= 5.15.2+dfsg~),
+# qml-module-qtquick-layouts (>= 5.15.2+dfsg~),
+# qml-module-qtquick-window2 (>= 5.15.2+dfsg~),
+# qml-module-qttest (>= 5.15.2+dfsg~),
+# qtbase5-dev (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-dev-tools (>= 5.15.2+dfsg~),
+# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
+# xauth <!nocheck>,
+# xvfb <!nocheck>,
+# ========================
+# qtsensors (for qtwebkit)
+# ========================
+# debhelper-compat (= 13),
+# pkg-kde-tools,
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-dev (>= 5.15.2+dfsg~),
+# xauth <!nocheck>,
+# xvfb <!nocheck>,
+# ================
+# qtquickcontrols2
+# ================
+# debhelper-compat (= 13),
+# dpkg-dev (>= 1.16.1),
+# pkg-kde-tools (>= 0.15.29~),
+# qml-module-qtgraphicaleffects (>= 5.15.2~),
+# qml-module-qtquick-layouts (>= 5.15.2+dfsg~),
+# qml-module-qtquick-window2 (>= 5.15.2+dfsg~),
+# qml-module-qttest (>= 5.15.2+dfsg~),
+# qtbase5-dev (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-dev-tools (>= 5.15.2+dfsg~),
+# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
+# xauth <!nocheck>,
+# xvfb <!nocheck>,
+# =====
+# qtsvg
+# =====
+               dbus,
+# debhelper-compat (= 13),
+# dpkg-dev (>= 1.17.14),
+# libqt5opengl5-dev (>= 5.15.2+dfsg~),
+# pkg-kde-tools (>= 0.15.17),
+# qtbase5-dev (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# zlib1g-dev,
+# =======
+# qttools
+# =======
+# debhelper-compat (= 13),
+               libclang-dev (>= 1:3.9~) [amd64 arm64 armel armhf hurd-i386 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64],
+# libqt5opengl5-dev (>= 5.15.2+dfsg~),
+# libqt5sql5-sqlite (>= 5.15.2+dfsg~),
+# libqt5webkit5-dev (>= 5.212.0~alpha4-8~) [alpha amd64 arm64 armel armhf i386 mips64el mipsel ppc64 ppc64el riscv64 s390x sh4 x32],
+               llvm-dev (>= 1:3.9~) [amd64 arm64 armel armhf hurd-i386 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64],
+# pkg-kde-tools,
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
+# zlib1g-dev,
+# =========
+# qtwayland
+# =========
+# dbus <!nocheck>,
+# debhelper-compat (= 13),
+# dpkg-dev (>= 1.17.14),
+               libegl1-mesa-dev,
+               libfontconfig1-dev,
+# libglib2.0-dev,
+# libinput-dev,
+# libmtdev-dev [linux-any],
+# libudev-dev [linux-any],
+               libwayland-dev (>= 1.8.0),
+               libwayland-egl1-mesa | libwayland-egl1,
+               libxcomposite-dev,
+# libxkbcommon-dev (>= 0.2.0),
+# libxrender-dev,
+# pkg-config,
+# pkg-kde-tools,
+# qtbase5-dev (>= 5.15.2+dfsg~),
+# qtbase5-dev:native (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
+# xauth <!nocheck>,
+# xvfb <!nocheck>,
+# ============
+# qtwebchannel
+# ============
+# debhelper-compat (= 13),
+# libqt5websockets5-dev (>= 5.15.2~),
+# pkg-kde-tools,
+# qml-module-qttest (>= 5.15.2+dfsg~),
+# qtbase5-dev (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-dev (>= 5.15.2+dfsg~),
+# ===========
+# qtwebengine
+# ===========
+# binutils (>= 2.32-8~),
+               binutils,
+               bison,
+               chrpath,
+               closure-compiler,
+# debhelper-compat (= 13),
+               flex,
+               gperf,
+               khronos-api,
+# libasound2-dev [linux-any],
+               libavcodec-dev (>= 7:3.4.8~),
+               libavformat-dev (>= 7:3.4.8~),
+               libavutil-dev (>= 7:3.4.8~),
+               libcap-dev [linux-any],
+# libdbus-1-dev,
+# libegl1-mesa-dev,
+               libevent-dev,
+               libflac-dev,
+# libfontconfig1-dev,
+# libgl-dev (>= 1.3) [!armel !armhf],
+# libgl1-mesa-dri,
+# libgles-dev [armel armhf],
+# libglib2.0-dev,
+               libglu1-mesa-dev [!armel !armhf] | libglu-dev [!armel !armhf],
+# libgstreamer-plugins-base1.0-dev,
+# libgstreamer1.0-dev,
+# libharfbuzz-dev,
+# libicu-dev (>= 64~),
+# libjpeg-dev,
+               libjsoncpp-dev,
+               liblcms2-dev,
+               libminizip-dev,
+               libnss3-dev,
+# libopus-dev (>= 1.3.1),
+               libopus-dev,
+               libpci-dev,
+# libpng-dev,
+               libprotobuf-dev,
+# libpulse-dev,
+# libqt5opengl5-dev (>= 5.15.2+dfsg~),
+# libqt5svg5-dev (>= 5.15.2~),
+# libqt5webchannel5-dev (>= 5.15.2~),
+               libre2-dev,
+               libsnappy-dev,
+# libsqlite3-dev,
+               libusb-1.0-0-dev,
+# libvpx-dev (>= 1.8),
+               libvpx-dev,
+               libwebp-dev,
+# libx11-xcb-dev,
+               libxcb-dri3-dev,
+# libxcomposite-dev,
+               libxcursor-dev,
+               libxdamage-dev,
+               libxml2-dev,
+               libxnvctrl-dev,
+               libxrandr-dev,
+# libxrender-dev,
+               libxslt1-dev,
+               libxss-dev,
+               libxtst-dev,
+               mesa-common-dev,
+               ninja-build,
+# pkg-config,
+# pkg-kde-tools,
+               protobuf-compiler,
+               python2 | python,
+# qtbase5-dev (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
+# qtpositioning5-dev (>= 5.15.2+dfsg~),
+# qtquickcontrols2-5-dev (>= 5.15.2+dfsg~),
+# qttools5-dev (>= 5.15.2~),
+               re2c,
+               ruby,
+# xauth,
+# xvfb,
+               yasm [amd64 i386],
+               yui-compressor,
+# =======================================
+# qtwebkit (currently mainly for qttools)
+# =======================================
+# bison,
+               cmake (>= 2.8.12),
+# debhelper-compat (= 13),
+# flex,
+# gperf,
+# libfontconfig1-dev,
+               libgl1-mesa-dev [!armel !armhf] | libgl-dev [!armel !armhf],
+               libgles2-mesa-dev [armel armhf] | libgles2-dev [armel armhf],
+# libglib2.0-dev,
+# libglu1-mesa-dev [!armel !armhf] | libglu-dev [!armel !armhf],
+# libgstreamer-plugins-base1.0-dev,
+# libgstreamer1.0-dev,
+               libhyphen-dev,
+# libicu-dev,
+# libjpeg-dev,
+# libpng-dev,
+# libqt5opengl5-dev (>= 5.15.2+dfsg~),
+# libqt5sensors5-dev (>= 5.15.2~),
+# libqt5webchannel5-dev (>= 5.15.2~),
+# libsqlite3-dev,
+# libwebp-dev,
+               libwoff-dev,
+# libxcomposite-dev,
+# libxml2-dev,
+# libxrender-dev,
+# libxslt1-dev,
+# ninja-build,
+# pkg-config,
+# pkg-kde-tools (>= 0.6.4),
+# python3:native,
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
+# qtpositioning5-dev (>= 5.15.2+dfsg~),
+# ruby:native,
+# xauth <!nocheck>,
+# xvfb <!nocheck>,
+# ===============================
+# qtwebsockets (for qtwebchannel)
+# ===============================
+# debhelper-compat (= 13),
+# pkg-kde-tools,
+# qml-module-qtquick2 (>= 5.15.2+dfsg~),
+# qml-module-qttest (>= 5.15.2+dfsg~),
+# qtbase5-private-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-dev (>= 5.15.2+dfsg~),
+# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
+# xauth,
+# xvfb,
+
+
+Package: libqt-jami
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Custom build of Qt framework used by the Jami Qt client.
diff --git a/packaging/rules/debian-qt/libqt-jami-env.sh b/packaging/rules/debian-qt/libqt-jami-env.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6324f0fed16062061a00196d81bebedaf292b47f
--- /dev/null
+++ b/packaging/rules/debian-qt/libqt-jami-env.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+QT_JAMI_PREFIX=/usr/lib/libqt-jami
+
+export PATH="${QT_JAMI_PREFIX}/bin:${PATH}"
+export LD_LIBRARY_PATH="${QT_JAMI_PREFIX}/lib:${LD_LIBRARY_PATH}"
+export PKG_CONFIG_PATH="${QT_JAMI_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}"
+export CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}"
diff --git a/packaging/rules/debian-qt/libqt-jami.install b/packaging/rules/debian-qt/libqt-jami.install
new file mode 100644
index 0000000000000000000000000000000000000000..39543c60b630cc3244a0363d6f39f273e333abf6
--- /dev/null
+++ b/packaging/rules/debian-qt/libqt-jami.install
@@ -0,0 +1,2 @@
+usr/lib/libqt-jami
+debian/libqt-jami-env.sh usr/lib/libqt-jami/bin/
diff --git a/packaging/rules/debian-qt/rules b/packaging/rules/debian-qt/rules
new file mode 100755
index 0000000000000000000000000000000000000000..a84739102d4e85d6ddad5cee43490e0906257f87
--- /dev/null
+++ b/packaging/rules/debian-qt/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+# export DH_VERBOSE = 1
+
+%:
+	dh $@
+
+override_dh_auto_configure:
+	./configure \
+		-opensource \
+		-confirm-license \
+		-nomake examples \
+		-nomake tests \
+		-prefix "${QT_JAMI_PREFIX}"
+
+override_dh_auto_install:
+	dh_auto_install -Smakefile -- INSTALL_ROOT=$(CURDIR)/debian/tmp/
diff --git a/packaging/rules/debian-qt/source/format b/packaging/rules/debian-qt/source/format
new file mode 100644
index 0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
--- /dev/null
+++ b/packaging/rules/debian-qt/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/scripts/build-package-debian-qt.sh b/scripts/build-package-debian-qt.sh
new file mode 100755
index 0000000000000000000000000000000000000000..bfbf46a5d18c2f759199042b931ce66859f88327
--- /dev/null
+++ b/scripts/build-package-debian-qt.sh
@@ -0,0 +1,86 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2021 Savoir-faire Linux Inc.
+#
+# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# This script is used in the packaging containers to build a snap
+# package on an ubuntu base distro.
+
+
+set -e
+
+PKG_DIR="packaging/rules/debian-qt"
+if [ -n "${OVERRIDE_PACKAGING_DIR}" ]; then
+    echo "Using OVERRIDE_PACKAGING_DIR: $OVERRIDE_PACKAGING_DIR"
+    PKG_DIR="${OVERRIDE_PACKAGING_DIR}"
+fi
+
+cache_dir=/opt/ring-contrib
+temp_dir=$(mktemp -d)
+
+mkdir /opt/libqt-jami-build
+cd /opt/libqt-jami-build
+
+qt_version=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
+tarball_name=qt-everywhere-src-${qt_version}.tar.xz
+cached_tarball=$cache_dir/$tarball_name
+qt_base_url=https://download.qt.io/archive/qt/${QT_MAJOR}.${QT_MINOR}/${qt_version}/single
+
+if ! [[ -d $cache_dir && -w $cache_dir ]]; then
+    echo "error: $cache_dir does not exist or is not writable"
+    exit 1
+fi
+
+if ! [ -f "$cached_tarball" ]; then
+    (
+        cd "$temp_dir"
+        wget "$qt_base_url/$tarball_name"
+        echo -n "${QT_TARBALL_CHECKSUM}  $tarball_name" | sha256sum -c - || \
+            (echo "Qt tarball checksum mismatch; quitting" && exit 1)
+        flock "${cached_tarball}.lock" mv "$tarball_name" "$cached_tarball"
+    )
+    rm -rf "$temp_dir"
+fi
+
+cp "$cached_tarball" libqt-jami_${qt_version}.orig.tar.xz
+tar xvf libqt-jami_${qt_version}.orig.tar.xz
+mv qt-everywhere-src-${qt_version} libqt-jami-${qt_version}
+cd libqt-jami-${qt_version}
+
+# import the debian folder
+cp --verbose -r /opt/ring-project-ro/${PKG_DIR} debian
+
+# create changelog file
+DEBEMAIL="The Jami project <jami@gnu.org>" dch --create --package libqt-jami --newversion ${DEBIAN_VERSION} "New libqt-jami release"
+DEBEMAIL="The Jami project <jami@gnu.org>" dch --release --distribution "unstable" debian/changelog
+
+DPKG_BUILD_OPTIONS=""
+# Set the host architecture as armhf and add some specific architecture
+# options to the package builder.
+if grep -q "raspbian_10_qt_armhf" <<< "${DISTRIBUTION}"; then
+    echo "Adding armhf as the host architecture."
+    export HOST_ARCH=arm-linux-gnueabihf
+    DPKG_BUILD_OPTIONS="${DPKG_BUILD_OPTIONS} -a armhf"
+fi
+
+# build and package qt
+dpkg-buildpackage -uc -us ${DPKG_BUILD_OPTIONS}
+
+# move the artifacts to output
+cd ..
+mv *.orig.tar* *.debian.tar* *deb *changes *dsc /opt/output
+chown -R ${CURRENT_UID}:${CURRENT_GID} /opt/output/
diff --git a/scripts/deploy-packages.sh b/scripts/deploy-packages.sh
index 98d0581fd0cb9a0352edecf4c7aaea22d3d19bbe..6262dda56c8041cba33e25dd3fde3ff3237897f0 100755
--- a/scripts/deploy-packages.sh
+++ b/scripts/deploy-packages.sh
@@ -31,8 +31,38 @@ set -e
 ## Debian / Ubuntu packaging ##
 ###############################
 
+function fetch_qt_deb()
+{
+    if [ -f "${SSH_IDENTIY_FILE}" ];
+    then
+        RSYNC_RSH="ssh -i ${SSH_IDENTIY_FILE}"
+    fi
+
+    echo "#####################"
+    echo "## fetching qt deb ##"
+    echo "#####################"
+    echo "Using RSYNC_RSH='${RSYNC_RSH}'"
+    rsync --archive --verbose \
+          ${REMOTE_REPOSITORY_LOCATION}/${DISTRIBUTION}_qt/pool/main/libq/libqt-jami/*.deb \
+          ${DISTRIBUTION_REPOSITOIRY_FOLDER}_qt/
+}
+
 function package_deb()
 {
+    DISTRIBUTION_REPOSITOIRY_FOLDER=$(realpath repositories)/${DISTRIBUTION}
+    mkdir -p ${DISTRIBUTION_REPOSITOIRY_FOLDER}
+    mkdir -p ${DISTRIBUTION_REPOSITOIRY_FOLDER}_qt
+
+    ###########################################################
+    ## fetch qt deb (if not currently building a qt package) ##
+    ###########################################################
+    case "${DISTRIBUTION}" in
+        *_qt) ;;
+        *)
+            fetch_qt_deb
+            ;;
+    esac
+
     ##################################################
     ## Create local repository for the given distro ##
     ##################################################
@@ -40,8 +70,7 @@ function package_deb()
     echo "## Creating repository ##"
     echo "#########################"
 
-    DISTRIBUTION_REPOSITOIRY_FOLDER=$(realpath repositories)/${DISTRIBUTION}
-    mkdir -p ${DISTRIBUTION_REPOSITOIRY_FOLDER}/conf
+    mkdir ${DISTRIBUTION_REPOSITOIRY_FOLDER}/conf
 
     # Distributions file
     cat << EOF > ${DISTRIBUTION_REPOSITOIRY_FOLDER}/conf/distributions
@@ -66,7 +95,14 @@ EOF
     ####################################
     ## Add packages to the repository ##
     ####################################
-    for package in packages/${DISTRIBUTION}*/*.deb; do
+    packages="packages/${DISTRIBUTION}*/*.deb"
+    case "${DISTRIBUTION}" in
+        *_qt) ;;
+        *)
+            packages="${packages} ${DISTRIBUTION_REPOSITOIRY_FOLDER}_qt/*.deb"
+            ;;
+    esac
+    for package in ${packages}; do
         # Sign the deb
         echo "## signing: ${package} ##"
         dpkg-sig -k ${KEYID} --sign builder ${package}
diff --git a/scripts/make-packaging-target.py b/scripts/make-packaging-target.py
index ef4021b6fc6342b8f89516527fa40ed88e2c1322..95743807b6e9062b184169e76d9546cb262057aa 100755
--- a/scripts/make-packaging-target.py
+++ b/scripts/make-packaging-target.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2016-2017 Savoir-faire Linux Inc.
+# Copyright (C) 2016-2021 Savoir-faire Linux Inc.
 #
 # Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
 #
@@ -91,7 +91,18 @@ RPM_BASED_SYSTEMS_DOCKER_RUN_OPTIONS = (
     '--privileged')
 
 
-def generate_target(distribution, debian_packaging_override, output_file, options='', docker_image='', version='', docker_build_args = ''):
+DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT = (
+    '-e QT_JAMI_PREFIX=$(QT_JAMI_PREFIX) '
+    '-e QT_MAJOR=$(QT_MAJOR) '
+    '-e QT_MINOR=$(QT_MINOR) '
+    '-e QT_PATCH=$(QT_PATCH) '
+    '-e QT_TARBALL_CHECKSUM=$(QT_TARBALL_CHECKSUM) '
+    '-v /opt/ring-contrib:/opt/ring-contrib '
+    '--privileged --security-opt apparmor=docker-default')
+
+
+def generate_target(distribution, output_file, options='', docker_image='',
+                    version='', docker_build_args=''):
     if (docker_image == ''):
         docker_image = distribution
     if (version == ''):
@@ -143,6 +154,13 @@ def run_generate_all(parsed_args):
             "output_file": "$(DEBIAN_DSC_FILENAME)",
             "options": "--privileged --security-opt apparmor=docker-default"
         },
+        {
+            "distribution": "debian_10_qt",
+            "debian_packaging_override": "",
+            "output_file": "$(DEBIAN_QT_DSC_FILENAME)",
+            "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT,
+            "version": "$(DEBIAN_QT_VERSION)",
+        },
         {
             "distribution": "debian_10_oci",
             "docker_image": "debian_10",
@@ -201,6 +219,18 @@ def run_generate_all(parsed_args):
             "debian_packaging_override": "",
             "output_file": "$(DEBIAN_DSC_FILENAME)",
         },
+        {
+            "distribution": "ubuntu_18.04_qt",
+            "output_file": "$(DEBIAN_QT_DSC_FILENAME)",
+            "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT,
+            "version": "$(DEBIAN_QT_VERSION)",
+        },
+        {
+            "distribution": "ubuntu_18.04_qt_i386",
+            "output_file": "$(DEBIAN_QT_DSC_FILENAME)",
+            "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT,
+            "version": "$(DEBIAN_QT_VERSION)",
+        },
         {
             "distribution": "ubuntu_18.04_oci",
             "docker_image": "ubuntu_18.04",
@@ -223,6 +253,12 @@ def run_generate_all(parsed_args):
             "output_file": "$(DEBIAN_DSC_FILENAME)",
             "options": "--privileged --security-opt apparmor=docker-default",
         },
+        {
+            "distribution": "ubuntu_20.04_qt",
+            "output_file": "$(DEBIAN_QT_DSC_FILENAME)",
+            "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT,
+            "version": "$(DEBIAN_QT_VERSION)",
+        },
         {
             "distribution": "ubuntu_20.04_oci",
             "docker_image": "ubuntu_20.04",
@@ -237,6 +273,12 @@ def run_generate_all(parsed_args):
             "output_file": "$(DEBIAN_DSC_FILENAME)",
             "options": "--privileged --security-opt apparmor=docker-default",
         },
+        {
+            "distribution": "ubuntu_20.10_qt",
+            "output_file": "$(DEBIAN_QT_DSC_FILENAME)",
+            "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT,
+            "version": "$(DEBIAN_QT_VERSION)",
+        },
         {
             "distribution": "ubuntu_20.10_oci",
             "docker_image": "ubuntu_20.10",