diff --git a/Makefile b/Makefile
index 5e8cee2a09554c23a64a12892f66d1d1e8898e5e..bd7fe50874bb0f3c7bd415a6b5a161d7fb6816cb 100644
--- a/Makefile
+++ b/Makefile
@@ -165,6 +165,7 @@ DISTRIBUTIONS := \
 	ubuntu_18.04 \
 	ubuntu_20.04 \
 	ubuntu_21.04 \
+	ubuntu_21.10 \
 	fedora_33 \
 	fedora_34 \
 	opensuse-leap_15.2 \
diff --git a/docker/Dockerfile_ubuntu_21.10 b/docker/Dockerfile_ubuntu_21.10
new file mode 100644
index 0000000000000000000000000000000000000000..cb072b0b60dbfba018757070b176c67a51bf1122
--- /dev/null
+++ b/docker/Dockerfile_ubuntu_21.10
@@ -0,0 +1,21 @@
+FROM ubuntu:21.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 scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
+
+COPY packaging/rules/debian-qt/control /tmp/builddeps/debian/control
+RUN /opt/prebuild-package-debian.sh qt-deps
+
+COPY packaging/rules/debian/control /tmp/builddeps/debian/control
+RUN /opt/prebuild-package-debian.sh jami-deps
+
+ADD scripts/build-package-debian.sh /opt/build-package-debian.sh
+CMD ["/opt/build-package-debian.sh"]
diff --git a/packaging/rules/debian-qt/rules b/packaging/rules/debian-qt/rules
index e4a325860ab322b0e745822281cc7a784db9a292..99c1dd0286c1df17473790d611bf27fa789b8bf0 100755
--- a/packaging/rules/debian-qt/rules
+++ b/packaging/rules/debian-qt/rules
@@ -30,12 +30,24 @@ JOB_COUNT = $(call min,$(NO_CPUS),$(COMPUTED_JOB_COUNT))
 	dh $@
 
 override_dh_auto_configure:
+	# https://bugs.gentoo.org/768261 (Qt 5.15)
+	sed -i 's,#include "absl/base/internal/spinlock.h"1,#include "absl/base/internal/spinlock.h"1\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc
+	sed -i 's,#include <stdint.h>,#include <stdint.h>\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h
+	# else, break build for ubuntu 21.10
+	sed -i 's/static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);/static const size_t kSigStackSize = std::max(size_t(16384), size_t(SIGSTKSZ));/g' qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
+	# https://bugreports.qt.io/browse/QTBUG-93452 (Qt 5.15)
+	sed -i 's,#  include <utility>,#  include <utility>\n#  include <limits>,g' qtbase/src/corelib/global/qglobal.h
+	sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qendian.h
+	cat qtbase/src/corelib/global/qendian.h
+	sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qfloat16.h
+	sed -i 's,#include <QtCore/qbytearray.h>,#include <QtCore/qbytearray.h>\n#include <limits>,g' qtbase/src/corelib/text/qbytearraymatcher.h
 	./configure \
 	  -opensource \
 	  -confirm-license \
 	  -nomake examples \
 	  -nomake tests \
 	  -prefix "${QT_JAMI_PREFIX}"
+	sed -i 's,bin/python,bin/env python3,g' qtbase/mkspecs/features/uikit/devices.py
 
 override_dh_auto_build:
 	@echo Building Qt using $(JOB_COUNT) parallel jobs
diff --git a/packaging/rules/debian/jami-all.postinst b/packaging/rules/debian/jami-all.postinst
index 31ad8b6ecf96b4b34121abbb71b7f4f47cd4be84..572889d794edadc598c2e3660e5636839884ea36 100755
--- a/packaging/rules/debian/jami-all.postinst
+++ b/packaging/rules/debian/jami-all.postinst
@@ -106,6 +106,8 @@ if [ -f /etc/os-release ]; then
         ENDTAG="ubuntu_20.04"
     elif [ "${UBUNTU_CODENAME}" = "hirsute" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_21.04" ]; then
         ENDTAG="ubuntu_21.04"
+    elif [ "${UBUNTU_CODENAME}" = "impish" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_21.10" ]; then
+        ENDTAG="ubuntu_21.10"
     elif [ "${ID}" = "debian" ] && \
              [ "$(command -v lsb_release)" ] && \
              [ "$(lsb_release -rs)" = "testing" ]; then