diff --git a/.pkgr.yml b/.pkgr.yml
new file mode 100644
index 0000000000..9988ad4d3a
--- /dev/null
+++ b/.pkgr.yml
@@ -0,0 +1,14 @@
+buildpack: "https://github.com/kr/heroku-buildpack-go.git"
+targets:
+  ubuntu-14.04:
+build_dependencies:
+  - mercurial
+  - bzr
+dependencies:
+  - git
+before:
+  - mv packager/Procfile .
+  - mv packager/.godir .
+after:
+  - mv bin/main gogs
+after_install: ./packager/debian/postinst
diff --git a/packager/.godir b/packager/.godir
new file mode 100644
index 0000000000..ba2906d066
--- /dev/null
+++ b/packager/.godir
@@ -0,0 +1 @@
+main
diff --git a/packager/Procfile b/packager/Procfile
new file mode 100644
index 0000000000..efa00d25a9
--- /dev/null
+++ b/packager/Procfile
@@ -0,0 +1 @@
+web: ./gogs web
diff --git a/packager/debian/postinst b/packager/debian/postinst
new file mode 100755
index 0000000000..90ff2b4618
--- /dev/null
+++ b/packager/debian/postinst
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+APP_NAME="gogs"
+CLI="${APP_NAME}"
+APP_USER=$(${CLI} config:get APP_USER)
+APP_GROUP=$(${CLI} config:get APP_GROUP)
+APP_CONFIG="/etc/${APP_NAME}/conf/app.ini"
+
+# source debconf library
+. /usr/share/debconf/confmodule
+
+case "$1" in
+
+  configure)
+    mkdir -p $(dirname ${APP_CONFIG})
+    chown ${APP_USER}.${APP_GROUP} $(dirname ${APP_CONFIG})
+    [ -f ${APP_CONFIG} ] || ${CLI} run cp conf/app.ini ${APP_CONFIG}
+    ${CLI} config:set USER=${APP_USER}
+    ${CLI} config:set GOGS_CUSTOM="/etc/${APP_NAME}"
+    PORT=$(${CLI} config:get PORT || echo "6000")
+    sed -i "s|HTTP_PORT = 3000|HTTP_PORT = ${PORT}|" ${APP_CONFIG}
+    sed -i "s|RUN_USER = git|RUN_USER = ${APP_USER}|" ${APP_CONFIG}
+    sed -i "s|RUN_MODE = dev|RUN_MODE = prod|" ${APP_CONFIG}
+
+    # scale
+    ${CLI} scale web=1 || true
+  ;;
+
+  abort-upgrade|abort-remove|abort-deconfigure)
+    exit 0
+  ;;
+
+  *)
+    echo "postinst called with unknown argument \`$1'" >&2
+    exit 1
+  ;;
+esac