diff --git a/.forgejo/workflows/package.yml b/.forgejo/workflows/package.yml
index 9a0fea1..8966ea5 100644
--- a/.forgejo/workflows/package.yml
+++ b/.forgejo/workflows/package.yml
@@ -55,3 +55,25 @@ jobs:
nextcloud-27-app-twofactor-webauthn: *job
nextcloud-27-app-user-oidc: *job
+ nextcloud-28: *job
+ nextcloud-28-app-calendar: *job
+ nextcloud-28-app-contacts: *job
+ nextcloud-28-app-deck: *job
+ nextcloud-28-app-forms: *job
+ nextcloud-28-app-gpoddersync: *job
+ nextcloud-28-app-gpxpod: *job
+ nextcloud-28-app-groupfolders: *job
+ nextcloud-28-app-polls: *job
+ nextcloud-28-app-previewgenerator: *job
+ nextcloud-28-app-mail: *job
+ nextcloud-28-app-news: *job
+ nextcloud-28-app-nextpod: *job
+ nextcloud-28-app-notes: *job
+ nextcloud-28-app-notify-push: *job
+ nextcloud-28-app-richdocuments: *job
+ nextcloud-28-app-richdocumentscode: *job
+ nextcloud-28-app-talk: *job
+ nextcloud-28-app-tasks: *job
+ nextcloud-28-app-twofactor-webauthn: *job
+ nextcloud-28-app-user-oidc: *job
+
diff --git a/README.md b/README.md
index ea03181..2588ca9 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
This project automatically builds Debian packages for Nextcloud and
some of its apps for my personal use (and sometimes adapted to my
-needs) .
+needs).
There is a daily Gitlab-CI run which builds the latest stable version
of each package and pushes them to my private repository. For more
@@ -30,3 +30,23 @@ information, please see [https://repo.s3lph.me/](https://repo.s3lph.me/).
- [nextcloud-27-app-tasks](https://apps.nextcloud.com/apps/tasks)
- [nextcloud-27-app-twofactor-webauthn](https://apps.nextcloud.com/apps/twofactor_webauthn)
- [nextcloud-27-app-user-oidc](https://apps.nextcloud.com/apps/user_oidc)
+- [nextcloud-28](https://github.com/nextcloud/server) (Code integrity check fails due to patches applied during build process!)
+- [nextcloud-28-app-calendar](https://apps.nextcloud.com/apps/calendar)
+- [nextcloud-28-app-contacts](https://apps.nextcloud.com/apps/contacts)
+- [nextcloud-28-app-deck](https://apps.nextcloud.com/apps/deck)
+- [nextcloud-28-app-forms](https://apps.nextcloud.com/apps/forms)
+- [nextcloud-28-app-gpoddersync](https://apps.nextcloud.com/apps/gpoddersync)
+- [nextcloud-28-app-gpxpod](https://apps.nextcloud.com/apps/gpxpod)
+- [nextcloud-28-app-groupfolders](https://apps.nextcloud.com/apps/groupfolders)
+- [nextcloud-28-app-polls](https://apps.nextcloud.com/apps/polls)
+- [nextcloud-28-app-previewgenerator](https://apps.nextcloud.com/apps/previewgenerator)
+- [nextcloud-28-app-mail](https://apps.nextcloud.com/apps/mail)
+- [nextcloud-28-app-news](https://apps.nextcloud.com/apps/news)
+- [nextcloud-28-app-nextpod](https://apps.nextcloud.com/apps/nextpod)
+- [nextcloud-28-app-notes](https://apps.nextcloud.com/apps/notes)
+- [nextcloud-28-app-notify-push](https://apps.nextcloud.com/apps/notify_push)
+- [nextcloud-28-app-richdocuments](https://apps.nextcloud.com/apps/richdocuments)
+- [nextcloud-28-app-richdocumentscode](https://apps.nextcloud.com/apps/richdocumentscode)
+- [nextcloud-28-app-tasks](https://apps.nextcloud.com/apps/tasks)
+- [nextcloud-28-app-twofactor-webauthn](https://apps.nextcloud.com/apps/twofactor_webauthn)
+- [nextcloud-28-app-user-oidc](https://apps.nextcloud.com/apps/user_oidc)
diff --git a/nextcloud-28-app-calendar/package.sh b/nextcloud-28-app-calendar/package.sh
new file mode 100755
index 0000000..f4dc865
--- /dev/null
+++ b/nextcloud-28-app-calendar/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/calendar
+}
+
+build_nextcloud_app calendar 28
+
diff --git a/nextcloud-28-app-contacts/package.sh b/nextcloud-28-app-contacts/package.sh
new file mode 100755
index 0000000..305ae24
--- /dev/null
+++ b/nextcloud-28-app-contacts/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/contacts
+}
+
+build_nextcloud_app contacts 28
+
diff --git a/nextcloud-28-app-deck/package.sh b/nextcloud-28-app-deck/package.sh
new file mode 100755
index 0000000..2e79e79
--- /dev/null
+++ b/nextcloud-28-app-deck/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/deck
+}
+
+build_nextcloud_app deck 28
+
diff --git a/nextcloud-28-app-forms/package.sh b/nextcloud-28-app-forms/package.sh
new file mode 100755
index 0000000..e4a507e
--- /dev/null
+++ b/nextcloud-28-app-forms/package.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/forms
+}
+
+build_nextcloud_app forms 28
diff --git a/nextcloud-28-app-gpoddersync/package.sh b/nextcloud-28-app-gpoddersync/package.sh
new file mode 100755
index 0000000..e456dad
--- /dev/null
+++ b/nextcloud-28-app-gpoddersync/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ cat "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/${APP}/CHANGELOG.md" | gzip -9n > "${PKGDIR}/usr/share/doc/${PKGNAME}/changelog.gz"
+}
+
+build_nextcloud_app gpoddersync 28
+
diff --git a/nextcloud-28-app-gpxpod/package.sh b/nextcloud-28-app-gpxpod/package.sh
new file mode 100755
index 0000000..75d8f64
--- /dev/null
+++ b/nextcloud-28-app-gpxpod/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog julien-nc/gpxpod
+}
+
+build_nextcloud_app gpxpod 28
+
diff --git a/nextcloud-28-app-groupfolders/package.sh b/nextcloud-28-app-groupfolders/package.sh
new file mode 100755
index 0000000..7441e65
--- /dev/null
+++ b/nextcloud-28-app-groupfolders/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/groupfolders
+}
+
+build_nextcloud_app groupfolders 28
+
diff --git a/nextcloud-28-app-mail/package.sh b/nextcloud-28-app-mail/package.sh
new file mode 100755
index 0000000..10cd748
--- /dev/null
+++ b/nextcloud-28-app-mail/package.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/mail
+}
+
+build_nextcloud_app mail 28
diff --git a/nextcloud-28-app-news/package.sh b/nextcloud-28-app-news/package.sh
new file mode 100755
index 0000000..e0289b8
--- /dev/null
+++ b/nextcloud-28-app-news/package.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/news
+}
+
+build_nextcloud_app news 28
diff --git a/nextcloud-28-app-nextpod/package.sh b/nextcloud-28-app-nextpod/package.sh
new file mode 100755
index 0000000..54dbf45
--- /dev/null
+++ b/nextcloud-28-app-nextpod/package.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+export ADDITIONAL_DEPS=", nextcloud-28-app-gpoddersync"
+
+build_nextcloud_app nextpod 28
+
diff --git a/nextcloud-28-app-notes/package.sh b/nextcloud-28-app-notes/package.sh
new file mode 100755
index 0000000..002fe05
--- /dev/null
+++ b/nextcloud-28-app-notes/package.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/notes
+}
+
+build_nextcloud_app notes 28
diff --git a/nextcloud-28-app-notify-push/nextcloud-notify-push.default b/nextcloud-28-app-notify-push/nextcloud-notify-push.default
new file mode 100644
index 0000000..f22165e
--- /dev/null
+++ b/nextcloud-28-app-notify-push/nextcloud-notify-push.default
@@ -0,0 +1,25 @@
+# Mandatory: TCP port to listen on
+PORT=7867
+
+# The push server can be configured either by loading the config from
+# the nextcloud config.php or by setting all options through
+# environment variables.
+#
+# Re-using the configuration from nextcloud is the recommended way, as
+# it ensures that the configuration remains in sync.
+CONFIG=/var/lib/nextcloud/webroot/config/config.php
+
+# If using the config.php isn't possible, you can configure the push
+# server by setting the following environment variables:
+
+# connection url for the Nextcloud database
+#DATABASE_URL=postgres://user:password@db_host/db_name
+
+# database prefix configured in Nextcloud
+#DATABASE_PREFIX=oc_
+
+# connection url for redis
+#REDIS_URL=redis://localhost
+
+# url for the nextcloud instance
+#NEXTCLOUD_URL=https://cloud.example.com
\ No newline at end of file
diff --git a/nextcloud-28-app-notify-push/nextcloud-notify-push.service b/nextcloud-28-app-notify-push/nextcloud-notify-push.service
new file mode 100644
index 0000000..df4c955
--- /dev/null
+++ b/nextcloud-28-app-notify-push/nextcloud-notify-push.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Push daemon for Nextcloud clients
+
+[Service]
+EnvironmentFile=-/etc/default/nextcloud-notify-push
+ExecStart=/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/notify_push $CONFIG
+User=www-data
+Group=www-data
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/nextcloud-28-app-notify-push/package.sh b/nextcloud-28-app-notify-push/package.sh
new file mode 100755
index 0000000..b2d4643
--- /dev/null
+++ b/nextcloud-28-app-notify-push/package.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+export ARCHS=(amd64 arm64 armhf)
+
+function _ncarch() {
+ case "$1" in
+ amd64)
+ echo x86_64
+ ;;
+ arm64)
+ echo aarch64
+ ;;
+ armhf)
+ echo armv7
+ ;;
+ *)
+ echo no such architecture
+ exit 1
+ esac
+}
+
+function post_prepare() {
+ NCARCH=$(_ncarch $ARCH)
+ mkdir -p \
+ "${PKGDIR}/lib/systemd/system" \
+ "${PKGDIR}/etc/default"
+ mv "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/${NCARCH}/notify_push" \
+ "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/notify_push"
+ find "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/" -type d -mindepth 1 -maxdepth 1 -exec rm -rf {} \;
+ cp "${ROOT}/nextcloud-notify-push.service" "${PKGDIR}/lib/systemd/system/nextcloud-notify-push.service"
+ cp "${ROOT}/nextcloud-notify-push.default" "${PKGDIR}/etc/default/nextcloud-notify-push"
+ cp "${SRCDIR}/notify_push/LICENSE" "${PKGDIR}/usr/share/doc/nextcloud-${NCMAJOR}-app-${APP//_/-}/copyright"
+ echo '/etc/default/nextcloud-notify-push' > "${PKGDIR}/DEBIAN/conffiles"
+ github_changelog nextcloud/notify_push
+}
+
+function post_chown() {
+ chmod 0600 "${PKGDIR}/etc/default/nextcloud-notify-push"
+ chmod 0755 "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/notify_push"
+}
+
+function postinst_configure_post() {
+ deb-systemd-helper enable nextcloud-notify-push.service
+ deb-systemd-invoke restart nextcloud-notify-push.service
+}
+
+build_nextcloud_app notify_push 28
diff --git a/nextcloud-28-app-polls/package.sh b/nextcloud-28-app-polls/package.sh
new file mode 100755
index 0000000..7095544
--- /dev/null
+++ b/nextcloud-28-app-polls/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/polls
+}
+
+build_nextcloud_app polls 28
+
diff --git a/nextcloud-28-app-previewgenerator/nextcloud-preview-generator.service b/nextcloud-28-app-previewgenerator/nextcloud-preview-generator.service
new file mode 100644
index 0000000..e9f36bc
--- /dev/null
+++ b/nextcloud-28-app-previewgenerator/nextcloud-preview-generator.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Pre-Generate Nextcloud preview thumbnails
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/php /var/lib/nextcloud/webroot/occ preview:pre-generate
+User=www-data
+Group=www-data
diff --git a/nextcloud-28-app-previewgenerator/nextcloud-preview-generator.timer b/nextcloud-28-app-previewgenerator/nextcloud-preview-generator.timer
new file mode 100644
index 0000000..b718e19
--- /dev/null
+++ b/nextcloud-28-app-previewgenerator/nextcloud-preview-generator.timer
@@ -0,0 +1,9 @@
+[Unit]
+Description=Pre-Generate Nextcloud preview thumbnails
+
+[Timer]
+OnCalendar=*:0/15
+Persistent=true
+
+[Install]
+WantedBy=timers.target
diff --git a/nextcloud-28-app-previewgenerator/package.sh b/nextcloud-28-app-previewgenerator/package.sh
new file mode 100755
index 0000000..d0ab898
--- /dev/null
+++ b/nextcloud-28-app-previewgenerator/package.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ mkdir -p "${PKGDIR}/lib/systemd/system/"
+ cp "${ROOT}/nextcloud-preview-generator.service" "${PKGDIR}/lib/systemd/system/nextcloud-preview-generator.service"
+ cp "${ROOT}/nextcloud-preview-generator.timer" "${PKGDIR}/lib/systemd/system/nextcloud-preview-generator.timer"
+ github_changelog nextcloud/previewgenerator
+}
+
+postinst_configure_post() {
+ deb-systemd-helper enable nextcloud-preview-generator.timer
+}
+
+build_nextcloud_app previewgenerator 28
+
diff --git a/nextcloud-28-app-richdocuments/package.sh b/nextcloud-28-app-richdocuments/package.sh
new file mode 100755
index 0000000..5a6344c
--- /dev/null
+++ b/nextcloud-28-app-richdocuments/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/richdocuments
+}
+
+build_nextcloud_app richdocuments 28
+
diff --git a/nextcloud-28-app-richdocumentscode/package.sh b/nextcloud-28-app-richdocumentscode/package.sh
new file mode 100755
index 0000000..22ee6eb
--- /dev/null
+++ b/nextcloud-28-app-richdocumentscode/package.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+export ARCHS=(amd64)
+
+post_prepare() {
+ github_changelog CollaboraOnline/richdocumentscode
+}
+
+post_chown() {
+ chmod 0755 "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/${APP}/collabora/Collabora_Online.AppImage"
+}
+
+build_nextcloud_app richdocumentscode 28
diff --git a/nextcloud-28-app-talk/package.sh b/nextcloud-28-app-talk/package.sh
new file mode 100755
index 0000000..25bc1c2
--- /dev/null
+++ b/nextcloud-28-app-talk/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/spreed
+}
+
+build_nextcloud_app spreed 28
+
diff --git a/nextcloud-28-app-tasks/package.sh b/nextcloud-28-app-tasks/package.sh
new file mode 100755
index 0000000..e50ce50
--- /dev/null
+++ b/nextcloud-28-app-tasks/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ github_changelog nextcloud/tasks
+}
+
+build_nextcloud_app tasks 28
+
diff --git a/nextcloud-28-app-twofactor-webauthn/package.sh b/nextcloud-28-app-twofactor-webauthn/package.sh
new file mode 100755
index 0000000..80f0745
--- /dev/null
+++ b/nextcloud-28-app-twofactor-webauthn/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ cat "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/${APP}/CHANGELOG.md" | gzip -9n > "${PKGDIR}/usr/share/doc/${PKGNAME}/changelog.gz"
+}
+
+build_nextcloud_app twofactor_webauthn 28
+
diff --git a/nextcloud-28-app-user-oidc/package.sh b/nextcloud-28-app-user-oidc/package.sh
new file mode 100755
index 0000000..2a8a84e
--- /dev/null
+++ b/nextcloud-28-app-user-oidc/package.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+. ../.skel/nextcloud-app/build-nextcloud-app
+
+post_prepare() {
+ cat "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/${APP}/CHANGELOG.md" | gzip -9n > "${PKGDIR}/usr/share/doc/${PKGNAME}/changelog.gz"
+}
+
+build_nextcloud_app user_oidc 28
+
diff --git a/nextcloud-28/config.php b/nextcloud-28/config.php
new file mode 100644
index 0000000..863fdba
--- /dev/null
+++ b/nextcloud-28/config.php
@@ -0,0 +1,26 @@
+ false,
+
+ 'trusted_domains' => [
+ 'nextcloud.example.com'
+ ],
+ 'overwrite.cli.url' => 'http://nextcloud.example.com',
+ 'datadirectory' => '/var/lib/nextcloud/data',
+ 'logfile' => '/var/log/nextcloud/nextcloud.log',
+
+ 'mysql.utf8mb4' => true,
+
+ 'connectivity_check_domains' => ['localhost'],
+
+ 'appstoreenabled' => false,
+ 'apps_paths' => [
+ [
+ 'path'=> '/usr/lib/nextcloud/nextcloud-apps',
+ 'url' => '/dist-apps',
+ 'writable' => false,
+ ]
+ ],
+
+);
diff --git a/nextcloud-28/debian.conffiles b/nextcloud-28/debian.conffiles
new file mode 100644
index 0000000..167e38d
--- /dev/null
+++ b/nextcloud-28/debian.conffiles
@@ -0,0 +1,2 @@
+/var/lib/nextcloud/webroot/config/config.php
+/etc/apache2/sites-available/nextcloud.site.conf
diff --git a/nextcloud-28/debian.control b/nextcloud-28/debian.control
new file mode 100644
index 0000000..4c133af
--- /dev/null
+++ b/nextcloud-28/debian.control
@@ -0,0 +1,16 @@
+Package: nextcloud-28
+Version: __VERSION__
+Maintainer: __MAINTAINER__
+Section: web
+Priority: optional
+Architecture: all
+Depends: php-cli (>=8.0), php-curl, php-gd, php-mbstring, php-xml, php-zip, php-bz2, php-intl
+Suggests: apache2, mariadb-server, php-mysql, php-redis
+Provides: nextcloud, nextcloud-app-twofactor-totp
+Conflicts: nextcloud, nextcloud-app-twofactor-totp
+Replaces: nextcloud-app-twofactor-totp
+Description: A safe home for all your data.
+ Nextcloud Hub is the first completely integrated on-premises content
+ collaboration platform on the market, ready for a new generation of
+ users who expect seamless online collaboration capabilities out of
+ the box.
diff --git a/nextcloud-28/debian.postinst b/nextcloud-28/debian.postinst
new file mode 100755
index 0000000..b4c6f07
--- /dev/null
+++ b/nextcloud-28/debian.postinst
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+set -e
+
+if [[ "$1" == "configure" ]]; then
+
+ deb-systemd-helper enable nextcloud-cron.timer
+
+ # Only run occ upgrade if nextcloud has been configured
+ if [[ -z "$(grep installed /var/lib/nextcloud/webroot/config/config.php | grep false)" ]]; then
+ sudo -u www-data php /var/lib/nextcloud/webroot/occ upgrade
+ sudo -u www-data php /var/lib/nextcloud/webroot/occ maintenance:mode --off
+ fi
+
+fi
diff --git a/nextcloud-28/nextcloud-cron.service b/nextcloud-28/nextcloud-cron.service
new file mode 100644
index 0000000..0b689ca
--- /dev/null
+++ b/nextcloud-28/nextcloud-cron.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Nextcloud Cronjob
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/php /var/lib/nextcloud/webroot/cron.php
+User=www-data
+Group=www-data
diff --git a/nextcloud-28/nextcloud-cron.timer b/nextcloud-28/nextcloud-cron.timer
new file mode 100644
index 0000000..9295c86
--- /dev/null
+++ b/nextcloud-28/nextcloud-cron.timer
@@ -0,0 +1,9 @@
+[Unit]
+Description=Nextcloud Cronjob
+
+[Timer]
+OnCalendar=*:0/5
+Persistent=true
+
+[Install]
+WantedBy=timers.target
diff --git a/nextcloud-28/nextcloud.site.conf b/nextcloud-28/nextcloud.site.conf
new file mode 100644
index 0000000..0aa033d
--- /dev/null
+++ b/nextcloud-28/nextcloud.site.conf
@@ -0,0 +1,33 @@
+