diff --git a/.gitignore b/.gitignore
index c155004c6b33531a8759d4de8f379b50b009a5f2..d75f1ee2003ae15f7494e43a46509019693e6e55 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 miniflux-*
 miniflux
-*.rpm
\ No newline at end of file
+*.rpm
+*.deb
diff --git a/Makefile b/Makefile
index bac90089d7b2e23c96dba484b1562061f802b513..9ca469c96e718b7899b7c553db8a9dc43ec1056e 100644
--- a/Makefile
+++ b/Makefile
@@ -6,6 +6,7 @@ BUILD_DATE   := `date +%FT%T%z`
 LD_FLAGS     := "-s -w -X 'miniflux.app/version.Version=$(VERSION)' -X 'miniflux.app/version.Commit=$(COMMIT)' -X 'miniflux.app/version.BuildDate=$(BUILD_DATE)'"
 PKG_LIST     := $(shell go list ./... | grep -v /vendor/)
 DB_URL       := postgres://postgres:postgres@localhost/miniflux_test?sslmode=disable
+DEB_IMG_ARCH := amd64
 
 export PGPASSWORD := postgres
 
@@ -35,7 +36,9 @@ export PGPASSWORD := postgres
 	clean-integration-test \
 	docker-image \
 	docker-images \
-	rpm
+	rpm \
+	debian \
+	debian-packages
 
 generate:
 	@ go generate
@@ -95,7 +98,7 @@ run: generate
 	@ LOG_DATE_TIME=1 go run main.go -debug
 
 clean:
-	@ rm -f $(APP)-* $(APP) $(APP)*.rpm
+	@ rm -f $(APP)-* $(APP) $(APP)*.rpm $(APP)*.deb
 
 test:
 	go test -cover -race -count=1 ./...
@@ -135,5 +138,19 @@ rpm: clean
 		-f packaging/rpm/Dockerfile \
 		.
 	@ docker run --rm \
-		-v ${PWD}:/root/rpmbuild/RPMS/x86_64/ miniflux-rpm-builder \
+		-v ${PWD}:/root/rpmbuild/RPMS/x86_64 miniflux-rpm-builder \
 		rpmbuild -bb --define "_miniflux_version $(VERSION)" /root/rpmbuild/SPECS/miniflux.spec
+
+debian:
+	@ docker build \
+		--build-arg BASE_IMAGE_ARCH=$(DEB_IMG_ARCH) \
+		-t $(DEB_IMG_ARCH)/miniflux-deb-builder \
+		-f packaging/debian/Dockerfile \
+		.
+	@ docker run --rm \
+		-v ${PWD}:/pkg $(DEB_IMG_ARCH)/miniflux-deb-builder
+
+debian-packages: clean
+	$(MAKE) debian DEB_IMG_ARCH=amd64
+	$(MAKE) debian DEB_IMG_ARCH=arm64v8
+	$(MAKE) debian DEB_IMG_ARCH=arm32v7
diff --git a/packaging/debian/Dockerfile b/packaging/debian/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..6b42696bf721ef958bdc10faef857c589b18abfd
--- /dev/null
+++ b/packaging/debian/Dockerfile
@@ -0,0 +1,13 @@
+ARG BASE_IMAGE_ARCH="amd64"
+
+FROM ${BASE_IMAGE_ARCH}/golang:buster AS build
+
+ENV DEBIAN_FRONTEND noninteractive
+
+RUN apt-get update -q && \
+    apt-get install -y -qq build-essential devscripts dh-make dh-systemd && \
+    mkdir -p /build/debian
+
+ADD . /src
+
+CMD ["/src/packaging/debian/build.sh"]
diff --git a/packaging/debian/build.sh b/packaging/debian/build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..00940b5960744da100ab490feca926fb5aceab9f
--- /dev/null
+++ b/packaging/debian/build.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+PKG_ARCH=`dpkg --print-architecture`
+PKG_DATE=`date -R`
+PKG_VERSION=`cd /src && git describe --abbrev=0`
+
+echo "PKG_VERSION=$PKG_VERSION"
+echo "PKG_ARCH=$PKG_ARCH"
+echo "PKG_DATE=$PKG_DATE"
+
+cd /src && \
+    make miniflux && \
+    mkdir -p /build/debian && \
+    cd /build && \
+    cp /src/miniflux /build/ && \
+    cp /src/miniflux.1 /build/ && \
+    cp /src/LICENSE /build/ && \
+    cp /src/packaging/miniflux.conf /build/ && \
+    cp /src/packaging/systemd/miniflux.service /build/debian/ && \
+    cp /src/packaging/debian/compat /build/debian/compat && \
+    cp /src/packaging/debian/copyright /build/debian/copyright && \
+    cp /src/packaging/debian/miniflux.manpages /build/debian/miniflux.manpages && \
+    cp /src/packaging/debian/rules /build/debian/rules && \
+    echo "miniflux ($PKG_VERSION) experimental; urgency=low" > /build/debian/changelog && \
+    echo "  * Miniflux version $PKG_VERSION" >> /build/debian/changelog && \
+    echo " -- Frédéric Guillot <f@miniflux.net>  $PKG_DATE" >> /build/debian/changelog && \
+    sed "s/__PKG_ARCH__/${PKG_ARCH}/g" /src/packaging/debian/control > /build/debian/control && \
+    dpkg-buildpackage -us -uc -b && \
+    lintian --check --color always ../*.deb && \
+    cp ../*.deb /pkg/
diff --git a/packaging/debian/compat b/packaging/debian/compat
new file mode 100644
index 0000000000000000000000000000000000000000..ec635144f60048986bc560c5576355344005e6e7
--- /dev/null
+++ b/packaging/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/packaging/debian/control b/packaging/debian/control
new file mode 100644
index 0000000000000000000000000000000000000000..e4e9a651f3e2e0173c7d11a30b1962f1ccaed08e
--- /dev/null
+++ b/packaging/debian/control
@@ -0,0 +1,12 @@
+Source: miniflux
+Maintainer: Frédéric Guillot <f@miniflux.net>
+Build-Depends: debhelper (>= 9), dh-systemd
+
+Package: miniflux
+Architecture: __PKG_ARCH__
+Section: web
+Priority: optional
+Description: Minimalist Feed Reader
+ Miniflux is a minimalist and opinionated feed reader
+Homepage: https://miniflux.app
+Depends: ${misc:Depends}, ${shlibs:Depends}, adduser
diff --git a/packaging/debian/copyright b/packaging/debian/copyright
new file mode 100644
index 0000000000000000000000000000000000000000..7fa0168b550d67bc4cfa8aea422c26ff22dbf365
--- /dev/null
+++ b/packaging/debian/copyright
@@ -0,0 +1,3 @@
+Files: *
+Copyright: 2017-2020 Frédéric Guillot
+License: Apache
\ No newline at end of file
diff --git a/packaging/debian/miniflux.manpages b/packaging/debian/miniflux.manpages
new file mode 100644
index 0000000000000000000000000000000000000000..a202644b84fd63766aae847240ac450baa854040
--- /dev/null
+++ b/packaging/debian/miniflux.manpages
@@ -0,0 +1 @@
+miniflux.1
\ No newline at end of file
diff --git a/packaging/debian/miniflux.postinst b/packaging/debian/miniflux.postinst
new file mode 100755
index 0000000000000000000000000000000000000000..a0d1c3297b7af95b60468a868d636b7c016f391d
--- /dev/null
+++ b/packaging/debian/miniflux.postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+    configure)
+        adduser --system --disabled-password --disabled-login --home /var/empty \
+                --no-create-home --quiet --force-badname --group miniflux
+        ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/packaging/debian/rules b/packaging/debian/rules
new file mode 100755
index 0000000000000000000000000000000000000000..f0845039039d69316f4cc1da7ccdaeb11bd5b43a
--- /dev/null
+++ b/packaging/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+
+DESTDIR=debian/miniflux
+
+%:
+	dh $@ --with=systemd
+
+override_dh_auto_clean:
+override_dh_auto_test:
+override_dh_auto_build:
+override_dh_auto_install:
+	mkdir -p $(DESTDIR)/etc
+	mkdir -p $(DESTDIR)/usr/bin
+	cp miniflux.conf $(DESTDIR)/etc/miniflux.conf
+	cp miniflux $(DESTDIR)/usr/bin/miniflux
+
+override_dh_installinit:
+	dh_installinit --noscripts