diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..423e55d6f618e461d165a9cf92b52925c0b645db
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+private-keys-v1.d
+openpgp-revocs.d
+pubring.kbx
+pubring.kbx~
+trustdb.gpg
+pass
diff --git a/create_gpg.sh b/create_gpg.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e8001ea80a27569db1506647c211c814211e7d6f
--- /dev/null
+++ b/create_gpg.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+[ ! -f "pass" ] && exit 0
+PASS=$(cat pass)
+NAME=gitlab
+
+export GNUPGHOME=$PWD
+mkdir -p private-keys-v1.d
+gpg --list-key
+
+gpg --yes --pinentry-mode=loopback --passphrase "$PASS" --quick-gen-key "$NAME"
+
+gpg --pinentry-mode=loopback --passphrase "$PASS" --armor --export-secret-keys "$NAME" > pgp-key.private
+gpg --armor --export "$NAME" > pgp-key.public
+
+echo "private-keys-v1.d
+openpgp-revocs.d
+pubring.kbx
+pubring.kbx~
+trustdb.gpg
+pass" > .gitignore
diff --git a/generate-release.sh b/generate-release.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6e6f7c6d52793ab3c9e9ccd29afde627b19d71f1
--- /dev/null
+++ b/generate-release.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+set -e
+
+do_hash() {
+    HASH_NAME=$1
+    HASH_CMD=$2
+    echo "${HASH_NAME}:"
+    for f in $(find -type f -name "*.deb" -o -name "Packages*"); do
+        f=$(echo $f | cut -c3-) # remove ./ prefix
+        if [ "$f" = "Release" ]; then
+            continue
+        fi
+        echo " $(${HASH_CMD} ${f}  | cut -d" " -f1) $(wc -c $f)"
+    done
+}
+
+cat << EOF
+Origin: gitlab.cesnet.cz
+Label: gitlab
+Suite: metatesting
+Codename: bullseye
+Architectures: amd64
+Components: main
+Description: Gitlab fasttrack repo
+Date: $(date -Ru)
+EOF
+do_hash "MD5Sum" "md5sum"
+do_hash "SHA1" "sha1sum"
+do_hash "SHA256" "sha256sum"
+
diff --git a/make.sh b/make.sh
index f18a8cff07c7979f750ad52713a2a173f31ca062..8c87785ac2f0725422e251a9a72882630510ac54 100755
--- a/make.sh
+++ b/make.sh
@@ -2,7 +2,16 @@
 
 set -x
 
-# Nastaveni promennych, pokud je SINVERSION zakomentovana, pokusime se odhadnout nejnovejsi
+# Otestujeme, ze je dostatek mista na extremni build (potrebuje cca. 60G tak tu mame 80, at je rezerva i pro ostatni)
+df -m
+while read _ _ _ SPACE _; do
+    if [ "$SPACE" -lt "80000" ]; then
+        echo "Malo mista, je potreba alespon 80GB, tady koncim!"
+        exit 1
+    fi
+done <<<$(df -m . | tail -n+2)
+
+# Nastaveni promennych
 export DEBIAN_FRONTEND=noninteractive
 export DEBEMAIL="Pavel Vondruska <vondruska@cesnet.cz>"
 
@@ -27,7 +36,7 @@ EOSOURCES
 
 # Instalace buildovacich veci a zavislosti
 apt update -qqq
-apt install -yqqq git devscripts build-essential
+apt install -yqqq git devscripts build-essential gpg
 
 apt source linux
 
@@ -58,6 +67,22 @@ mkdir build
 mv build.log build/
 mv *.deb build/
 
+cp -v pgp-key* build/
+cp -v generate-release.sh build/
+
 cd build
-dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
-dpkg-scanpackages . /dev/null > Release
+dpkg-scanpackages . /dev/null > Packages
+gzip -9k Packages
+./generate-release.sh > Release
+
+export GNUPGHOME=$PWD
+export GPG_TTY=$(tty)
+mkdir -p private-keys-v1.d
+gpg --list-keys
+cat pgp-key.private | gpg --import --pinentry-mode=loopback --passphrase "$PASS"
+gpg --list-keys
+
+cat Release | gpg --default-key gitlab --digest-algo SHA256 --cert-digest-algo SHA256 --pinentry-mode=loopback --passphrase "$PASS" -abs > Release.gpg
+cat Release | gpg --default-key gitlab --digest-algo SHA256 --cert-digest-algo SHA256 --pinentry-mode=loopback --passphrase "$PASS" -abs --clearsign > InRelease
+
+rm -vrf private-keys-v1.d pubring.kbx trustdb.gpg pgp-key.private pgp-key.public pubring.kbx~ generate-release.sh
diff --git a/pgp-key.private b/pgp-key.private
new file mode 100644
index 0000000000000000000000000000000000000000..6d7c6ef206e75acb9a18b4f52608f6bb2b4b389b
--- /dev/null
+++ b/pgp-key.private
@@ -0,0 +1,83 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+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
+5+XDAVfBDdmQbw==
+=ILG2
+-----END PGP PRIVATE KEY BLOCK-----
diff --git a/pgp-key.public b/pgp-key.public
new file mode 100644
index 0000000000000000000000000000000000000000..0142773ca181ba7d5fde97cba3aabe4920306c91
--- /dev/null
+++ b/pgp-key.public
@@ -0,0 +1,40 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBGMoYcYBDADAx9KgwpswwngvbcWwRFuWLPoef0jc71KfYfPJ+sWIl+58bggG
+zYAASDYiXT7DbaTEuZGHU4k9szdtNl9hG4L3RqO8bj76NNbarzFsTbDOasVSYLyW
+ZgmS00XorjMxypJx2Ge+3VcyD/NAt29+MdGL9s6YzjIdyJbNXgaAe65AAgPiWDWG
+j1n3G2u6lvoqPsmbFqG48wInZyCEnkyamqL2FLWTVm8ZegoW0Do4IKlw5Etr/hKV
+kG86AGaokveu0duzgiyYptEKx5/y70r0TJsYrCxIO4tTNQBXeBoG9v9D2GCSJVH1
+HYiBW36bHi7CEyH6AfC+C4u8ujAmUgmDFWG7HYSy8B0RTa7i6uXbw3A42R0GA/4N
+XrYqU76z1gJSRF9RW+1jvyobLW8Ql78zSAU1SWJX3jBJuKzNkGbYZ37O1yHNON29
+7HWkwBDNTSv8g3ynfjTn7K2lMnx0LsKAtY9FrDdy+U+iQJogpjSUR/SSwKeuqZuD
+SS53PjbVjxW8jU0AEQEAAbQGZ2l0bGFiiQHUBBMBCgA+FiEEDhP4ZgshvaFkw4pO
+gH4L2SVYtxwFAmMoYcYCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AA
+CgkQgH4L2SVYtxycnAv+PkJmXEwJnoRqrASU0ydTmrv7KFUECzGzr6mSnjEYBAr9
+v5pqTefDg4hyLye+8XZllTmPBFeAhBK0ELxLyZRLD3c2DtdN5C1s1wgOhP7sF8CR
+F0sT6fFlOxUqohMifHaiWRBOkF66SxQA6M45xUwMiBnwA6mJbHbWf97dzzN92QHL
+jND8Zyi55uI0kSqtN3Ig06qquPhThby4+YjqDTcPaKUpte+FvgstVpxAJURZFt/u
+7Hnw1XydMI9i8ZSN+hcIup9esizv461WtYbiPKgFyYg09uW7plDMtCkuXtRRwchY
+u+e1bw0QUXE4LI1TeEU6FpcwWq/I5yZIkhSh2gEDiSsc1UT+9EdH8aRKydXKdNIm
+8mZjO2xmlaB15+VAOoW2QNiEu8hVZloCezrOq61UhmA9ZTlUsfVFyltlgbeHDwjW
+Ywo3qBdA+3Y+67nUKa3zDZk2lryjBKHogGLFsQlYkNu8EIJpkwaYmvhrRzJojdvS
+eQ/grPYjCrNDldkzKBnnuQGNBGMoYcYBDADS9+wPB7GP0JyH+Ki3bhLjnsQE/lwu
+/M4CaubJ4dbYsUTIzATh3Etd7WG2q2SeRn4VWzg79ZtjCgcD8qhDYUWgyvqHvSPC
+uEzJz+YnZ183941UUBSgdxNJm3oJmqAaKx+GSBKHOS4waZgITDMOhLMZtRfsDobL
+3wmRbZyNnBh9xI3m8S9UBXGvXxBT5bBK+eJGm8rkgU8IrBdWX0IBFU4VvOjAe3dh
++oA7J0oUf/6jpelm5HnWqx2fjIRdMVEaiIL0cExmk6AAyFIpIqyGH07AVToe9JB0
+1MIcm/ITk2C/rim7ul6PDOhSQ4qDufzAtJk++DTmFXkKwOfVHNc+7trmzpTB6vlS
+xWFlSW0EWzaK9bNNlTWfDGvnBd0YcfJQbR0to7Rb1TLlk9L4tVKCGhbCzsgs9e86
+hDF+JDOOI2QSYo6gn9VVgZ69t2MUtswQ14G1VAfALQ5uwgfXO0QPVDlvS5mKgPHL
+eM/WKoz+LwB9r4iOmILV+LCAzubco31d5ncAEQEAAYkBtgQYAQoAIBYhBA4T+GYL
+Ib2hZMOKToB+C9klWLccBQJjKGHGAhsMAAoJEIB+C9klWLccDSIL/i/vlqNjhKVr
+mr/SE2vbZC1VMhDIsdtUCEfeAtVDlWBMBooGDFBJ5sMcyUy/oKKj0gIV9wA4C8q4
+nWg9dbeOy5HnDq91hcNdcR9V/Dgs9cWJkTB68Sw1JCBLXw901WLpQemZSL90T78k
+L1lPBvUYTaTacylEJ/hc7rUpsrTdrARxI+jJR4plxZ3oessGXMKbD+AWwQxND394
+p+HB1l8Lqx2gkK22FnwKBwUaM9/GkGYQy1RZ+Pw5/TGZr8HxI7vIOgAUOgWNkHD5
+Pl6kjEqoXNshzJ3UWYhUFPlSDaPvo28Eg9WFongPawV4unqf8WfuI8F5B0rTG0kU
+Z4VYl9G4TuGgqXTbmSeRzR4DtlUhW4gnU9AdFLAH6EZLpBvMAnld3oLy1SgU9kvA
+a5MGGsxHLqEep2mKGalx461DoCiXi++AJD5CJ6jPCCQyd6A6h6aGRKA0HhPJG33z
+rZonimqdOqe8RK8SnXpHn+hVvMQmUmqczZyqKcco5+XDAVfBDdmQbw==
+=KCDk
+-----END PGP PUBLIC KEY BLOCK-----