mirror of
https://github.com/TrezOne/docker-mods-uptime-kuma-timeout-fix.git
synced 2026-06-30 03:53:18 -04:00
Merge pull request #852 from melonarc/nextcloud-notify-push
nextcloud-notify-push: initial commit
This commit is contained in:
@@ -5,9 +5,9 @@ on: [push, pull_request_target, workflow_dispatch]
|
||||
env:
|
||||
GITHUB_REPO: "linuxserver/docker-mods" #don't modify
|
||||
ENDPOINT: "linuxserver/mods" #don't modify
|
||||
BASEIMAGE: "replace_baseimage" #replace
|
||||
MODNAME: "replace_modname" #replace
|
||||
MULTI_ARCH: "false" #set to true if needed
|
||||
BASEIMAGE: "nextcloud"
|
||||
MODNAME: "notify-push"
|
||||
MULTI_ARCH: "false"
|
||||
|
||||
jobs:
|
||||
set-vars:
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
FROM scratch
|
||||
|
||||
LABEL maintainer="username"
|
||||
LABEL maintainer="melonarc"
|
||||
|
||||
# copy local files
|
||||
COPY root/ /
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
## Buildstage ##
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.19 as buildstage
|
||||
|
||||
RUN \
|
||||
echo "**** install packages ****" && \
|
||||
apk add --no-cache \
|
||||
curl && \
|
||||
echo "**** grab rclone ****" && \
|
||||
mkdir -p /root-layer && \
|
||||
if [ $(uname -m) = "x86_64" ]; then \
|
||||
echo "Downloading x86_64 tarball" && \
|
||||
curl -o \
|
||||
/root-layer/rclone.deb -L \
|
||||
"https://downloads.rclone.org/v1.47.0/rclone-v1.47.0-linux-amd64.deb"; \
|
||||
elif [ $(uname -m) = "aarch64" ]; then \
|
||||
echo "Downloading aarch64 tarball" && \
|
||||
curl -o \
|
||||
/root-layer/rclone.deb -L \
|
||||
"https://downloads.rclone.org/v1.47.0/rclone-v1.47.0-linux-arm64.deb"; \
|
||||
fi && \
|
||||
|
||||
# copy local files
|
||||
COPY root/ /root-layer/
|
||||
|
||||
## Single layer deployed image ##
|
||||
FROM scratch
|
||||
|
||||
LABEL maintainer="username"
|
||||
|
||||
# Add files from buildstage
|
||||
COPY --from=buildstage /root-layer/ /
|
||||
@@ -1,25 +1,39 @@
|
||||
# Rsync - Docker mod for openssh-server
|
||||
# nextcloud-notify-push - Docker mod for Nextcloud
|
||||
|
||||
This mod adds rsync to openssh-server, to be installed/updated during container start.
|
||||
This mod adds a service to start the [notify-push](https://github.com/nextcloud/notify_push) binary.
|
||||
|
||||
In openssh-server docker arguments, set an environment variable `DOCKER_MODS=linuxserver/mods:openssh-server-rsync`
|
||||
## Requirements
|
||||
|
||||
If adding multiple mods, enter them in an array separated by `|`, such as `DOCKER_MODS=linuxserver/mods:openssh-server-rsync|linuxserver/mods:openssh-server-mod2`
|
||||
- Redis configured in your config.php
|
||||
|
||||
# Mod creation instructions
|
||||
## Setup
|
||||
|
||||
* Fork the repo, create a new branch based on the branch `template`.
|
||||
* Edit the `Dockerfile` for the mod. `Dockerfile.complex` is only an example and included for reference; it should be deleted when done.
|
||||
* Inspect the `root` folder contents. Edit, add and remove as necessary.
|
||||
* After all init scripts and services are created, run `find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print -exec chmod +x {} +` to fix permissions.
|
||||
* Edit this readme with pertinent info, delete these instructions.
|
||||
* Finally edit the `.github/workflows/BuildImage.yml`. Customize the vars for `BASEIMAGE` and `MODNAME`. Set the versioning logic and `MULTI_ARCH` if needed.
|
||||
* Ask the team to create a new branch named `<baseimagename>-<modname>`. Baseimage should be the name of the image the mod will be applied to. The new branch will be based on the `template` branch.
|
||||
* Submit PR against the branch created by the team.
|
||||
1. Add ``DOCKER_MODS=linuxserver/mods:nextcloud-notify-push`` to your env.
|
||||
|
||||
2. Make sure that Redis is already configured with Nextcloud.
|
||||
|
||||
## Tips and tricks
|
||||
3. notify_push should be running and ``**** Starting notify-push ****`` appear in the log. Also check for errors.
|
||||
|
||||
* Some images have helpers built in, these images are currently:
|
||||
* [Openvscode-server](https://github.com/linuxserver/docker-openvscode-server/pull/10/files)
|
||||
* [Code-server](https://github.com/linuxserver/docker-code-server/pull/95)
|
||||
### Reverse Proxy
|
||||
|
||||
The reverse proxy of the `notify_push` service at subfolder `/push` is handled within the Nextcloud container's Nginx site conf. Make sure you are on the latest version. If not sure, make sure your Nextcloud container is up to date, then you can delete the existing site conf at `/config/nginx/site-confs/default.conf` and restart the container. A new conf with the reverse proxy support will be created.
|
||||
|
||||
## Validation
|
||||
|
||||
1. Read the section about the [Test client](https://github.com/nextcloud/notify_push#test-client). Create an app password and connect to your server
|
||||
|
||||
```sh
|
||||
test_client https://cloud.example.com username password
|
||||
```
|
||||
|
||||
2. Run ``occ notify_push:metrics``. Step 1 can be skipped if real clients are already connected.
|
||||
|
||||
```sh
|
||||
root@1d0f9bf7fff9:/# occ notify_push:metrics
|
||||
Active connection count: 2
|
||||
Active user count: 1
|
||||
Total connection count: 5
|
||||
Total database query count: 1
|
||||
Events received: 13
|
||||
Messages sent: 3
|
||||
```
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
# This is the init file used for adding os or pip packages to install lists.
|
||||
# It takes advantage of the built-in init-mods-package-install init script that comes with the baseimages.
|
||||
# If using this, we need to make sure we set this init as a dependency of init-mods-package-install so this one runs first
|
||||
|
||||
if ! command -v apprise; then
|
||||
echo "**** Adding apprise and its deps to package install lists ****"
|
||||
echo "apprise" >> /mod-pip-packages-to-install.list
|
||||
## Ubuntu
|
||||
if [ -f /usr/bin/apt ]; then
|
||||
echo "\
|
||||
python3 \
|
||||
python3-pip \
|
||||
runc" >> /mod-repo-packages-to-install.list
|
||||
fi
|
||||
# Alpine
|
||||
if [ -f /sbin/apk ]; then
|
||||
echo "\
|
||||
cargo \
|
||||
libffi-dev \
|
||||
openssl-dev \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3 \
|
||||
py3-pip" >> /mod-repo-packages-to-install.list
|
||||
fi
|
||||
else
|
||||
echo "**** apprise already installed, skipping ****"
|
||||
fi
|
||||
@@ -1 +0,0 @@
|
||||
oneshot
|
||||
@@ -1 +0,0 @@
|
||||
/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
# This is an install script that is designed to run after init-mods-package-install
|
||||
# so it can take advantage of packages installed
|
||||
# init-mods-end depends on this script so that later init and services wait until this script exits
|
||||
|
||||
echo "**** Setting up apprise ****"
|
||||
apprise blah blah
|
||||
@@ -1 +0,0 @@
|
||||
oneshot
|
||||
@@ -1 +0,0 @@
|
||||
/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
# This is an example service that would run for the mod
|
||||
# It depends on init-services, the baseimage hook for start of all longrun services
|
||||
|
||||
exec \
|
||||
s6-setuidgid abc run my app
|
||||
+1
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
# shellcheck shell=bash
|
||||
|
||||
NOTIFY_PUSH_URL=$(echo "$(occ config:system:get overwrite.cli.url)/push")
|
||||
echo "**** Setting notify_push server URL to ${NOTIFY_PUSH_URL} ****"
|
||||
if ! occ notify_push:setup "${NOTIFY_PUSH_URL}"; then
|
||||
echo "**** There was an error setting the notify_push server URL. Please double check your reverse proxy settings as well as the overwrite.cli.url entry in Nextcloud's config.php ****"
|
||||
fi
|
||||
@@ -0,0 +1 @@
|
||||
oneshot
|
||||
@@ -0,0 +1 @@
|
||||
/etc/s6-overlay/s6-rc.d/svc-mod-nextcloud-notify-push-set-url/run
|
||||
@@ -0,0 +1 @@
|
||||
7867
|
||||
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
export NEXTCLOUD_URL="https://localhost"
|
||||
export ALLOW_SELF_SIGNED=true
|
||||
export NEXTCLOUD_BASE="/config/www/nextcloud"
|
||||
export NOTIFY_PUSH_BIN="$NEXTCLOUD_BASE/apps/notify_push/bin/$(arch)/notify_push"
|
||||
|
||||
installed_version=$(php -r "require '/config/www/nextcloud/config/config.php'; echo \$CONFIG['version'];" 2>/dev/null)
|
||||
if [ "${installed_version}" = "" ]; then
|
||||
echo "**** Nextcloud not installed yet. Please go through the wizard and restart the container. Then notify_push will be enabled. ****"
|
||||
sleep infinity
|
||||
fi
|
||||
# Check redis
|
||||
if ! occ config:system:get redis >/dev/null; then
|
||||
echo "**** Redis does not seem to be configued. Notify_push will not start ****"
|
||||
sleep infinity
|
||||
fi
|
||||
|
||||
echo "**** Making sure the Nextcloud Client Push plugin is installed and enabled ****"
|
||||
occ app:install notify_push
|
||||
occ app:enable notify_push
|
||||
|
||||
# Check if notify-push is installed
|
||||
if [ ! -d "$NEXTCLOUD_BASE/apps/notify_push/" ]; then
|
||||
echo "**** Notify-push folder not found. Install the notify-push/client-push app and restart the container. ****"
|
||||
sleep infinity
|
||||
fi
|
||||
# Check cpu arch
|
||||
if [ ! -f "$NOTIFY_PUSH_BIN" ]; then
|
||||
echo "**** Did not find a matching notify-push binary for your cpu arch: $(arch) ****"
|
||||
sleep infinity
|
||||
fi
|
||||
|
||||
# add to trusted proxies
|
||||
if ! occ config:system:get trusted_proxies | grep -q "127.0.0.1"; then
|
||||
NO_OF_PROXIES=$(occ config:system:get trusted_proxies --output=json | jq 'length')
|
||||
if [[ -z "${NO_OF_PROXIES}" ]]; then
|
||||
NO_OF_PROXIES="0"
|
||||
fi
|
||||
echo "**** Adding notify_push to trusted proxies ****"
|
||||
occ config:system:set trusted_proxies "${NO_OF_PROXIES}" --value=127.0.0.1
|
||||
fi
|
||||
|
||||
# run notify-push binary
|
||||
echo "**** Starting notify-push ****"
|
||||
exec \
|
||||
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost 7867" \
|
||||
s6-setuidgid abc "$NOTIFY_PUSH_BIN" "$NEXTCLOUD_BASE/config/config.php"
|
||||
Reference in New Issue
Block a user