164 lines
4.2 KiB
Bash
164 lines
4.2 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# ---
|
|
# Nextcloud High Performance Backend für Dateien (notify_push) einrichten
|
|
# ---
|
|
|
|
|
|
# see:
|
|
# https://github.com/nextcloud/notify_push
|
|
# https://apfelcast.com/nextcloud-high-performance-backend-fuer-dateien-einrichten-schritt-fuer-schritt-anleitung/
|
|
# https://www.youtube.com/watch?v=jMCI7hFAU1Y
|
|
|
|
HTTP_USER="www-data"
|
|
|
|
PHP_BIN="/usr/local/php/bin/php"
|
|
|
|
PHP_VERSION=8.3
|
|
|
|
# 0 Requirements
|
|
# ================
|
|
#
|
|
# - Nextcloud auf LAMP/LEMP Stack
|
|
# LAMP - (Linux Apache MySQL PHP)
|
|
# LEMP - (Linux Nginx MySQL PHP)
|
|
#
|
|
# - Redis Memory Caching Service
|
|
|
|
WEBSITE="cloud-test.oopen.de"
|
|
WEBSITE="cloud-02-test.oopen.de"
|
|
WEBSITE="cloud-01.oopen.de"
|
|
WEBSITE="cloud-test-01.oopen.de"
|
|
|
|
WEB_BASE_DIR="/var/www/${WEBSITE}"
|
|
NC_INSTALL_DIR="${WEB_BASE_DIR}/nextcloud"
|
|
|
|
IPv4="$(dig +short "${WEBSITE}" A)"
|
|
IPv6="$(dig +short "${WEBSITE}" AAAA)"
|
|
|
|
# 1 Install NC App 'Client Push"
|
|
# ================================
|
|
#
|
|
# Instead of using the 'occ' command, the 'Client Push' APP
|
|
# can also be installed via the Nextcloud web interface (Nextcloud Appstore).
|
|
#
|
|
sudo -u ${HTTP_USER} ${PHP_BIN} ${WEB_BASE_DIR}/htdocs/occ app:install notify_push
|
|
|
|
|
|
# 2 Configure ReversProxy
|
|
# =========================
|
|
#
|
|
|
|
# 2a Apache
|
|
#
|
|
a2enmod proxy
|
|
a2enmod proxy_http
|
|
a2enmod proxy_wstunnel
|
|
|
|
|
|
# Add to your apache2 vhost configuration
|
|
#
|
|
# ProxyPass /push/ws ws://127.0.0.1:7867/ws
|
|
# ProxyPass /push/ http://127.0.0.1:7867/
|
|
# ProxyPassReverse /push/ http://127.0.0.1:7867/
|
|
|
|
|
|
# restart apache2
|
|
#
|
|
systemctl restart apache2
|
|
|
|
|
|
# 2b Nginx
|
|
|
|
# Add to your nginx vhost configuration
|
|
#
|
|
# location ^~ /push/ {
|
|
# proxy_pass http://127.0.0.1:7867/;
|
|
# proxy_http_version 1.1;
|
|
# proxy_set_header Upgrade $http_upgrade;
|
|
# proxy_set_header Connection "Upgrade";
|
|
# proxy_set_header Host $host;
|
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
}
|
|
|
|
# reload nginx
|
|
#
|
|
nginx -s reload
|
|
|
|
|
|
# 3 Configure NC - add truzsted proxy (IPv4 AND if exists IPv6 address to trusted proxies)
|
|
# ==========================================================================================
|
|
#
|
|
# 'trusted_proxies' =>
|
|
# array (
|
|
# 0 => '${IPv4}',
|
|
# 1 => '${IPv6}',
|
|
# )
|
|
_parameter="trusted_proxies"
|
|
_type="string"
|
|
_value="${IPv4}"
|
|
sudo -u ${HTTP_USER} ${PHP_BIN} ${WEB_BASE_DIR}/htdocs/occ config:system:set ${_parameter} 0 \
|
|
--value="${_value}" --type="${_type}"
|
|
|
|
_value="${IPv6}"
|
|
sudo -u ${HTTP_USER} ${PHP_BIN} ${WEB_BASE_DIR}/htdocs/occ config:system:set ${_parameter} 1 \
|
|
--value="${_value}" --type="${_type}"
|
|
|
|
systemctl restart php-${PHP_VERSION}-fpm
|
|
|
|
|
|
# 4 Create Service 'notify_push'
|
|
# ================================
|
|
#
|
|
# Metrics
|
|
#
|
|
# The push server can expose some basic metrics about the number of connected clients and
|
|
# the traffic flowing through the server by setting the METRICS_PORT environment variable.
|
|
#
|
|
# Once set the metrics are available in a prometheus compatible format at /metrics on the
|
|
# configured port. Inside the service file set:
|
|
#
|
|
# Environment=METRICS_PORT=7868
|
|
#
|
|
# Run 'curl http://localhost:7868/metrics
|
|
#
|
|
# Additionally you can manually check the metrics by running the occ notify_push:metrics
|
|
# command, this will function even if you haven't setup METRICS_PORT.
|
|
#
|
|
cat <<EOF > /etc/systemd/system/notify_push.service
|
|
[Unit]
|
|
Description = Push daemon for Nextcloud clients
|
|
Documentation=https://github.com/nextcloud/notify_push
|
|
|
|
[Service]
|
|
# Change if you already have something running on this port
|
|
Environment=PORT=7867A
|
|
# Run 'curl http://localhost:7868/metrics' to eee some metrivcs
|
|
Environment=METRICS_PORT=7868
|
|
Environment=NEXTCLOUD_URL=https://${WEBSITE}
|
|
ExecStart=${NC_INSTALL_DIR}/apps/notify_push/bin/x86_64/notify_push ${NC_INSTALL_DIR}/config/config.php
|
|
# requires the push server to have been build with the systemd feature (enabled by default)
|
|
Type=notify
|
|
User=${HTTP_USER}
|
|
Restart=always
|
|
RestartSec=60
|
|
|
|
[Install]
|
|
WantedBy = multi-user.target
|
|
EOF
|
|
|
|
# enable service at boot time
|
|
#
|
|
systemctl daemon-reload
|
|
systemctl enable --now notify_push
|
|
systemctl start notify_push
|
|
|
|
|
|
# 5. Testing and final Nextcloud configuration
|
|
# =============================================
|
|
#
|
|
sudo -u ${HTTP_USER} ${PHP_BIN} ${WEB_BASE_DIR}/htdocs/occ notify_push:setup
|
|
|
|
|
|
systemctl restart php-8.3-fpm.service
|