mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-05-22 11:20:13 +00:00
Compare commits
14 Commits
copilot/im
...
v13.0.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15ae285d9f | ||
|
|
1fa4f3b6a3 | ||
|
|
654c39ff1e | ||
|
|
91d59af4dc | ||
|
|
5091f27e87 | ||
|
|
c74d08902e | ||
|
|
216c73d3aa | ||
|
|
6c1c33e069 | ||
|
|
f0949a8746 | ||
|
|
79eccd576d | ||
|
|
323a34a437 | ||
|
|
f2076fa56b | ||
|
|
1e064fed8a | ||
|
|
bc2105d668 |
@@ -51,15 +51,6 @@ http://{$APACHE_HOST}.nextcloud-aio:23973, # For Collabora callback and WOPI req
|
||||
}
|
||||
}
|
||||
|
||||
# EuroOffice
|
||||
route /eurooffice/* {
|
||||
uri strip_prefix /eurooffice
|
||||
reverse_proxy {$EUROOFFICE_HOST}:80 {
|
||||
header_up X-Forwarded-Host {http.request.hostport}/eurooffice
|
||||
header_up X-Forwarded-Proto https
|
||||
}
|
||||
}
|
||||
|
||||
# Talk
|
||||
route /standalone-signaling/* {
|
||||
uri strip_prefix /standalone-signaling
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
FROM caddy:2.11.2-alpine AS caddy
|
||||
|
||||
# From https://github.com/docker-library/httpd/blob/master/2.4/alpine/Dockerfile
|
||||
FROM httpd:2.4.66-alpine3.23
|
||||
FROM httpd:2.4.67-alpine3.23
|
||||
|
||||
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM haproxy:3.3.7-alpine
|
||||
FROM haproxy:3.3.8-alpine
|
||||
|
||||
# hadolint ignore=DL3002
|
||||
USER root
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM eurooffice/documentserver:latest
|
||||
|
||||
# USER root is probably used
|
||||
|
||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
|
||||
HEALTHCHECK --start-period=60s --retries=9 CMD /healthcheck.sh
|
||||
LABEL com.centurylinklabs.watchtower.enable="false" \
|
||||
wud.watch="false" \
|
||||
org.opencontainers.image.title="EuroOffice for Nextcloud AIO" \
|
||||
org.opencontainers.image.description="EuroOffice Document Server for Nextcloud All-in-One" \
|
||||
org.opencontainers.image.url="https://github.com/nextcloud/all-in-one" \
|
||||
org.opencontainers.image.source="https://github.com/nextcloud/all-in-one" \
|
||||
org.opencontainers.image.vendor="Nextcloud" \
|
||||
org.opencontainers.image.documentation="https://github.com/nextcloud/all-in-one/blob/main/readme.md"
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
nc -z 127.0.0.1 80 || exit 1
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Probably from here https://github.com/elastic/dockerfiles/blob/9.3/elasticsearch/Dockerfile
|
||||
FROM elasticsearch:9.3.3
|
||||
FROM elasticsearch:9.4.0
|
||||
|
||||
USER root
|
||||
|
||||
|
||||
@@ -896,58 +896,6 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
# EuroOffice
|
||||
if [ "$EUROOFFICE_ENABLED" = 'yes' ]; then
|
||||
# Determine EuroOffice port based on host pattern
|
||||
if echo "$EUROOFFICE_HOST" | grep -q "nextcloud-.*-eurooffice"; then
|
||||
EUROOFFICE_PORT=80
|
||||
else
|
||||
EUROOFFICE_PORT=443
|
||||
fi
|
||||
|
||||
count=0
|
||||
while ! nc -z "$EUROOFFICE_HOST" "$EUROOFFICE_PORT" && [ "$count" -lt 90 ]; do
|
||||
echo "Waiting for EuroOffice to become available..."
|
||||
count=$((count+5))
|
||||
sleep 5
|
||||
done
|
||||
if [ "$count" -ge 90 ]; then
|
||||
bash /notify.sh "EuroOffice did not start in time!" "Skipping initialization and disabling eurooffice app."
|
||||
php /var/www/html/occ app:disable eurooffice
|
||||
else
|
||||
# Install or enable EuroOffice app as needed
|
||||
if ! [ -d "/var/www/html/custom_apps/eurooffice" ]; then
|
||||
php /var/www/html/occ app:install eurooffice
|
||||
elif [ "$(php /var/www/html/occ config:app:get eurooffice enabled)" != "yes" ]; then
|
||||
php /var/www/html/occ app:enable eurooffice
|
||||
elif [ "$SKIP_UPDATE" != 1 ]; then
|
||||
php /var/www/html/occ app:update eurooffice
|
||||
fi
|
||||
|
||||
# Set EuroOffice configuration
|
||||
php /var/www/html/occ config:system:set eurooffice editors_check_interval --value="0" --type=integer
|
||||
php /var/www/html/occ config:system:set eurooffice jwt_secret --value="$EUROOFFICE_SECRET"
|
||||
php /var/www/html/occ config:app:set eurooffice jwt_secret --value="$EUROOFFICE_SECRET"
|
||||
php /var/www/html/occ config:system:set eurooffice jwt_header --value="AuthorizationJwt"
|
||||
|
||||
# Adjust the EuroOffice host if using internal pattern
|
||||
if echo "$EUROOFFICE_HOST" | grep -q "nextcloud-.*-eurooffice"; then
|
||||
EUROOFFICE_HOST="$NC_DOMAIN/eurooffice"
|
||||
export EUROOFFICE_HOST
|
||||
fi
|
||||
|
||||
php /var/www/html/occ config:app:set eurooffice DocumentServerUrl --value="https://$EUROOFFICE_HOST"
|
||||
fi
|
||||
else
|
||||
# Remove EuroOffice app if disabled and removal is requested
|
||||
if [ "$REMOVE_DISABLED_APPS" = yes ] && \
|
||||
[ -d "/var/www/html/custom_apps/eurooffice" ] && \
|
||||
[ -n "$EUROOFFICE_SECRET" ] && \
|
||||
[ "$(php /var/www/html/occ config:system:get eurooffice jwt_secret)" = "$EUROOFFICE_SECRET" ]; then
|
||||
php /var/www/html/occ app:remove eurooffice
|
||||
fi
|
||||
fi
|
||||
|
||||
# Talk
|
||||
if [ "$TALK_ENABLED" = 'yes' ]; then
|
||||
set -x
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/redis/docker-library-redis/blob/release/8.2/alpine/Dockerfile
|
||||
FROM redis:8.6.2-alpine
|
||||
FROM redis:8.6.3-alpine
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM nats:2.12.8-scratch AS nats
|
||||
FROM nats:2.14.0-scratch AS nats
|
||||
FROM eturnal/eturnal:1.12.2-alpine AS eturnal
|
||||
FROM strukturag/nextcloud-spreed-signaling:2.1.1 AS signaling
|
||||
FROM alpine:3.23.4 AS janus
|
||||
|
||||
@@ -4,9 +4,6 @@ services:
|
||||
nextcloud-aio-onlyoffice:
|
||||
condition: service_started
|
||||
required: false
|
||||
nextcloud-aio-eurooffice:
|
||||
condition: service_started
|
||||
required: false
|
||||
nextcloud-aio-collabora:
|
||||
condition: service_started
|
||||
required: false
|
||||
@@ -43,7 +40,6 @@ services:
|
||||
- TALK_HOST=nextcloud-aio-talk
|
||||
- APACHE_PORT
|
||||
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
|
||||
- EUROOFFICE_HOST=nextcloud-aio-eurooffice
|
||||
- TZ=${TIMEZONE}
|
||||
- APACHE_MAX_SIZE
|
||||
- APACHE_MAX_TIME=${NEXTCLOUD_MAX_TIME}
|
||||
@@ -153,17 +149,14 @@ services:
|
||||
- TURN_SECRET
|
||||
- SIGNALING_SECRET
|
||||
- ONLYOFFICE_SECRET
|
||||
- EUROOFFICE_SECRET
|
||||
- NEXTCLOUD_MOUNT
|
||||
- CLAMAV_ENABLED
|
||||
- CLAMAV_HOST=nextcloud-aio-clamav
|
||||
- ONLYOFFICE_ENABLED
|
||||
- EUROOFFICE_ENABLED
|
||||
- COLLABORA_ENABLED
|
||||
- COLLABORA_HOST=nextcloud-aio-collabora
|
||||
- TALK_ENABLED
|
||||
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
|
||||
- EUROOFFICE_HOST=nextcloud-aio-eurooffice
|
||||
- UPDATE_NEXTCLOUD_APPS
|
||||
- TZ=${TIMEZONE}
|
||||
- TALK_PORT
|
||||
@@ -403,31 +396,6 @@ services:
|
||||
cap_drop:
|
||||
- NET_RAW
|
||||
|
||||
nextcloud-aio-eurooffice:
|
||||
image: ghcr.io/nextcloud-releases/aio-eurooffice:latest
|
||||
init: true
|
||||
healthcheck:
|
||||
start_period: 60s
|
||||
test: /healthcheck.sh
|
||||
interval: 30s
|
||||
timeout: 30s
|
||||
start_interval: 5s
|
||||
retries: 9
|
||||
expose:
|
||||
- "80"
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- JWT_ENABLED=true
|
||||
- JWT_HEADER=AuthorizationJwt
|
||||
- JWT_SECRET=${EUROOFFICE_SECRET}
|
||||
volumes:
|
||||
- nextcloud_aio_eurooffice:/var/lib/eurooffice:rw
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- eurooffice
|
||||
cap_drop:
|
||||
- NET_RAW
|
||||
|
||||
nextcloud-aio-imaginary:
|
||||
image: ghcr.io/nextcloud-releases/aio-imaginary:latest
|
||||
user: "65534"
|
||||
@@ -535,8 +503,6 @@ volumes:
|
||||
name: nextcloud_aio_nextcloud
|
||||
nextcloud_aio_onlyoffice:
|
||||
name: nextcloud_aio_onlyoffice
|
||||
nextcloud_aio_eurooffice:
|
||||
name: nextcloud_aio_eurooffice
|
||||
nextcloud_aio_redis:
|
||||
name: nextcloud_aio_redis
|
||||
nextcloud_aio_talk_recording:
|
||||
|
||||
@@ -4,7 +4,6 @@ IMAGINARY_SECRET= # TODO! This needs to be a unique and good password!
|
||||
NC_DOMAIN=yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.
|
||||
NEXTCLOUD_PASSWORD= # TODO! This is the password of the initially created Nextcloud admin with username "admin".
|
||||
ONLYOFFICE_SECRET= # TODO! This needs to be a unique and good password!
|
||||
EUROOFFICE_SECRET= # TODO! This needs to be a unique and good password!
|
||||
RECORDING_SECRET= # TODO! This needs to be a unique and good password!
|
||||
REDIS_PASSWORD= # TODO! This needs to be a unique and good password!
|
||||
SIGNALING_SECRET= # TODO! This needs to be a unique and good password!
|
||||
@@ -18,7 +17,6 @@ COLLABORA_ENABLED="no" # Setting this to "yes" (with quotes) enables th
|
||||
FULLTEXTSEARCH_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
IMAGINARY_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
ONLYOFFICE_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
EUROOFFICE_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_RECORDING_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
WHITEBOARD_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
|
||||
@@ -57,8 +57,6 @@ spec:
|
||||
value: nextcloud-aio-notify-push
|
||||
- name: ONLYOFFICE_HOST
|
||||
value: nextcloud-aio-onlyoffice
|
||||
- name: EUROOFFICE_HOST
|
||||
value: nextcloud-aio-eurooffice
|
||||
- name: TALK_HOST
|
||||
value: nextcloud-aio-talk
|
||||
- name: TZ
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
{{- if eq .Values.EUROOFFICE_ENABLED "yes" }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.version: 1.38.0 (a8f5d1cbd)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-eurooffice
|
||||
name: nextcloud-aio-eurooffice
|
||||
namespace: "{{ .Values.NAMESPACE }}"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
io.kompose.service: nextcloud-aio-eurooffice
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.version: 1.38.0 (a8f5d1cbd)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-eurooffice
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init-volumes
|
||||
image: ghcr.io/nextcloud-releases/aio-alpine:20260409_094910
|
||||
command:
|
||||
- chmod
|
||||
- "777"
|
||||
- /nextcloud-aio-eurooffice
|
||||
volumeMounts:
|
||||
- name: nextcloud-aio-eurooffice
|
||||
mountPath: /nextcloud-aio-eurooffice
|
||||
containers:
|
||||
- env:
|
||||
- name: JWT_ENABLED
|
||||
value: "true"
|
||||
- name: JWT_HEADER
|
||||
value: AuthorizationJwt
|
||||
- name: JWT_SECRET
|
||||
value: "{{ .Values.EUROOFFICE_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: ghcr.io/nextcloud-releases/aio-eurooffice:20260409_094910
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /healthcheck.sh
|
||||
failureThreshold: 9
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 30
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /healthcheck.sh
|
||||
failureThreshold: 9
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 30
|
||||
name: nextcloud-aio-eurooffice
|
||||
ports:
|
||||
- containerPort: 80
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/eurooffice
|
||||
name: nextcloud-aio-eurooffice
|
||||
volumes:
|
||||
- name: nextcloud-aio-eurooffice
|
||||
persistentVolumeClaim:
|
||||
claimName: nextcloud-aio-eurooffice
|
||||
{{- end }}
|
||||
@@ -1,18 +0,0 @@
|
||||
{{- if eq .Values.EUROOFFICE_ENABLED "yes" }}
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-eurooffice
|
||||
name: nextcloud-aio-eurooffice
|
||||
namespace: "{{ .Values.NAMESPACE }}"
|
||||
spec:
|
||||
{{- if .Values.STORAGE_CLASS }}
|
||||
storageClassName: {{ .Values.STORAGE_CLASS }}
|
||||
{{- end }}
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.EUROOFFICE_STORAGE_SIZE }}
|
||||
{{- end }}
|
||||
@@ -1,19 +0,0 @@
|
||||
{{- if eq .Values.EUROOFFICE_ENABLED "yes" }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.version: 1.38.0 (a8f5d1cbd)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-eurooffice
|
||||
name: nextcloud-aio-eurooffice
|
||||
namespace: "{{ .Values.NAMESPACE }}"
|
||||
spec:
|
||||
ipFamilyPolicy: PreferDualStack
|
||||
ports:
|
||||
- name: "80"
|
||||
port: 80
|
||||
targetPort: 80
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-eurooffice
|
||||
{{- end }}
|
||||
@@ -138,12 +138,6 @@ spec:
|
||||
value: nextcloud-aio-onlyoffice
|
||||
- name: ONLYOFFICE_SECRET
|
||||
value: "{{ .Values.ONLYOFFICE_SECRET }}"
|
||||
- name: EUROOFFICE_ENABLED
|
||||
value: "{{ .Values.EUROOFFICE_ENABLED }}"
|
||||
- name: EUROOFFICE_HOST
|
||||
value: nextcloud-aio-eurooffice
|
||||
- name: EUROOFFICE_SECRET
|
||||
value: "{{ .Values.EUROOFFICE_SECRET }}"
|
||||
- name: OVERWRITEPROTOCOL
|
||||
value: https
|
||||
- name: PHP_MAX_TIME
|
||||
|
||||
@@ -4,7 +4,6 @@ IMAGINARY_SECRET: # TODO! This needs to be a unique and good password!
|
||||
NC_DOMAIN: yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.
|
||||
NEXTCLOUD_PASSWORD: # TODO! This is the password of the initially created Nextcloud admin with username admin.
|
||||
ONLYOFFICE_SECRET: # TODO! This needs to be a unique and good password!
|
||||
EUROOFFICE_SECRET: # TODO! This needs to be a unique and good password!
|
||||
RECORDING_SECRET: # TODO! This needs to be a unique and good password!
|
||||
REDIS_PASSWORD: # TODO! This needs to be a unique and good password!
|
||||
SIGNALING_SECRET: # TODO! This needs to be a unique and good password!
|
||||
@@ -18,7 +17,6 @@ COLLABORA_ENABLED: "no" # Setting this to "yes" (with quotes) enables t
|
||||
FULLTEXTSEARCH_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
IMAGINARY_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
ONLYOFFICE_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
EUROOFFICE_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_RECORDING_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
WHITEBOARD_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
@@ -51,7 +49,6 @@ NEXTCLOUD_STORAGE_SIZE: 5Gi # You can change the size of the nextcloud vol
|
||||
NEXTCLOUD_DATA_STORAGE_SIZE: 5Gi # You can change the size of the nextcloud-data volume that default to 1Gi with this value
|
||||
NEXTCLOUD_TRUSTED_CACERTS_STORAGE_SIZE: 1Gi # You can change the size of the nextcloud-trusted-cacerts volume that default to 1Gi with this value
|
||||
ONLYOFFICE_STORAGE_SIZE: 1Gi # You can change the size of the onlyoffice volume that default to 1Gi with this value
|
||||
EUROOFFICE_STORAGE_SIZE: 1Gi # You can change the size of the eurooffice volume that default to 1Gi with this value
|
||||
REDIS_STORAGE_SIZE: 1Gi # You can change the size of the redis volume that default to 1Gi with this value
|
||||
TALK_RECORDING_STORAGE_SIZE: 1Gi # You can change the size of the talk-recording volume that default to 1Gi with this value
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
"documentation": "https://github.com/nextcloud/all-in-one/discussions/2105",
|
||||
"depends_on": [
|
||||
"nextcloud-aio-onlyoffice",
|
||||
"nextcloud-aio-eurooffice",
|
||||
"nextcloud-aio-collabora",
|
||||
"nextcloud-aio-talk",
|
||||
"nextcloud-aio-notify-push",
|
||||
@@ -48,7 +47,6 @@
|
||||
"APACHE_PORT=%APACHE_PORT%",
|
||||
"AIO_LOG_LEVEL=%AIO_LOG_LEVEL%",
|
||||
"ONLYOFFICE_HOST=nextcloud-aio-onlyoffice",
|
||||
"EUROOFFICE_HOST=nextcloud-aio-eurooffice",
|
||||
"TZ=%TIMEZONE%",
|
||||
"APACHE_MAX_SIZE=%APACHE_MAX_SIZE%",
|
||||
"APACHE_MAX_TIME=%NEXTCLOUD_MAX_TIME%",
|
||||
@@ -225,7 +223,6 @@
|
||||
"TURN_SECRET=%TURN_SECRET%",
|
||||
"SIGNALING_SECRET=%SIGNALING_SECRET%",
|
||||
"ONLYOFFICE_SECRET=%ONLYOFFICE_SECRET%",
|
||||
"EUROOFFICE_SECRET=%EUROOFFICE_SECRET%",
|
||||
"AIO_URL=%AIO_URL%",
|
||||
"AIO_LOG_LEVEL=%AIO_LOG_LEVEL%",
|
||||
"NC_AIO_VERSION=v%AIO_VERSION%",
|
||||
@@ -233,12 +230,10 @@
|
||||
"CLAMAV_ENABLED=%CLAMAV_ENABLED%",
|
||||
"CLAMAV_HOST=nextcloud-aio-clamav",
|
||||
"ONLYOFFICE_ENABLED=%ONLYOFFICE_ENABLED%",
|
||||
"EUROOFFICE_ENABLED=%EUROOFFICE_ENABLED%",
|
||||
"COLLABORA_ENABLED=%COLLABORA_ENABLED%",
|
||||
"COLLABORA_HOST=nextcloud-aio-collabora",
|
||||
"TALK_ENABLED=%TALK_ENABLED%",
|
||||
"ONLYOFFICE_HOST=nextcloud-aio-onlyoffice",
|
||||
"EUROOFFICE_HOST=nextcloud-aio-eurooffice",
|
||||
"UPDATE_NEXTCLOUD_APPS=%UPDATE_NEXTCLOUD_APPS%",
|
||||
"TZ=%TIMEZONE%",
|
||||
"TALK_PORT=%TALK_PORT%",
|
||||
@@ -362,7 +357,6 @@
|
||||
"secrets": [
|
||||
"REDIS_PASSWORD",
|
||||
"ONLYOFFICE_SECRET",
|
||||
"EUROOFFICE_SECRET",
|
||||
"RECORDING_SECRET"
|
||||
],
|
||||
"restart": "unless-stopped",
|
||||
@@ -764,50 +758,6 @@
|
||||
"NET_RAW"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-eurooffice",
|
||||
"image_tag": "%AIO_CHANNEL%",
|
||||
"display_name": "EuroOffice",
|
||||
"image": "ghcr.io/nextcloud-releases/aio-eurooffice",
|
||||
"init": true,
|
||||
"healthcheck": {
|
||||
"start_period": "60s",
|
||||
"test": "/healthcheck.sh",
|
||||
"interval": "30s",
|
||||
"timeout": "30s",
|
||||
"start_interval": "5s",
|
||||
"retries": 9
|
||||
},
|
||||
"expose": [
|
||||
"80"
|
||||
],
|
||||
"internal_port": "80",
|
||||
"environment": [
|
||||
"AIO_LOG_LEVEL=%AIO_LOG_LEVEL%",
|
||||
"LOG_LEVEL=%AIO_LOG_LEVEL%",
|
||||
"TZ=%TIMEZONE%",
|
||||
"JWT_ENABLED=true",
|
||||
"JWT_HEADER=AuthorizationJwt",
|
||||
"JWT_SECRET=%EUROOFFICE_SECRET%"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_eurooffice",
|
||||
"destination": "/var/lib/eurooffice",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"secrets": [
|
||||
"EUROOFFICE_SECRET"
|
||||
],
|
||||
"restart": "unless-stopped",
|
||||
"profiles": [
|
||||
"eurooffice"
|
||||
],
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-imaginary",
|
||||
"image_tag": "%AIO_CHANNEL%",
|
||||
|
||||
@@ -22,11 +22,9 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||
// Office suite radio buttons
|
||||
const collaboraRadio = document.getElementById('office-collabora');
|
||||
const onlyofficeRadio = document.getElementById('office-onlyoffice');
|
||||
const euroofficeRadio = document.getElementById('office-eurooffice');
|
||||
const noneRadio = document.getElementById('office-none');
|
||||
const collaboraHidden = document.getElementById('collabora');
|
||||
const onlyofficeHidden = document.getElementById('onlyoffice');
|
||||
const euroofficeHidden = document.getElementById('eurooffice');
|
||||
let initialOfficeSelection = null;
|
||||
|
||||
optionsContainersCheckboxes.forEach(checkbox => {
|
||||
@@ -38,13 +36,11 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||
});
|
||||
|
||||
// Store initial office suite selection
|
||||
if (collaboraRadio && onlyofficeRadio && euroofficeRadio && noneRadio) {
|
||||
if (collaboraRadio && onlyofficeRadio && noneRadio) {
|
||||
if (collaboraRadio.checked) {
|
||||
initialOfficeSelection = 'collabora';
|
||||
} else if (onlyofficeRadio.checked) {
|
||||
initialOfficeSelection = 'onlyoffice';
|
||||
} else if (euroofficeRadio.checked) {
|
||||
initialOfficeSelection = 'eurooffice';
|
||||
} else {
|
||||
initialOfficeSelection = 'none';
|
||||
}
|
||||
@@ -61,28 +57,20 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||
});
|
||||
|
||||
// Check office suite changes and sync to hidden inputs
|
||||
if (collaboraRadio && onlyofficeRadio && euroofficeRadio && noneRadio && collaboraHidden && onlyofficeHidden && euroofficeHidden) {
|
||||
if (collaboraRadio && onlyofficeRadio && noneRadio && collaboraHidden && onlyofficeHidden) {
|
||||
let currentOfficeSelection = null;
|
||||
if (collaboraRadio.checked) {
|
||||
currentOfficeSelection = 'collabora';
|
||||
collaboraHidden.value = 'on';
|
||||
onlyofficeHidden.value = '';
|
||||
euroofficeHidden.value = '';
|
||||
} else if (onlyofficeRadio.checked) {
|
||||
currentOfficeSelection = 'onlyoffice';
|
||||
collaboraHidden.value = '';
|
||||
onlyofficeHidden.value = 'on';
|
||||
euroofficeHidden.value = '';
|
||||
} else if (euroofficeRadio.checked) {
|
||||
currentOfficeSelection = 'eurooffice';
|
||||
collaboraHidden.value = '';
|
||||
onlyofficeHidden.value = '';
|
||||
euroofficeHidden.value = 'on';
|
||||
} else {
|
||||
currentOfficeSelection = 'none';
|
||||
collaboraHidden.value = '';
|
||||
onlyofficeHidden.value = '';
|
||||
euroofficeHidden.value = '';
|
||||
}
|
||||
|
||||
if (currentOfficeSelection !== initialOfficeSelection) {
|
||||
@@ -156,10 +144,9 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||
handleTalkVisibility(); // Ensure talk-recording is correctly initialized
|
||||
|
||||
// Add event listeners for office suite radio buttons
|
||||
if (collaboraRadio && onlyofficeRadio && euroofficeRadio && noneRadio) {
|
||||
if (collaboraRadio && onlyofficeRadio && noneRadio) {
|
||||
collaboraRadio.addEventListener('change', checkForOptionContainerChanges);
|
||||
onlyofficeRadio.addEventListener('change', checkForOptionContainerChanges);
|
||||
euroofficeRadio.addEventListener('change', checkForOptionContainerChanges);
|
||||
noneRadio.addEventListener('change', checkForOptionContainerChanges);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,12 +27,6 @@ document.addEventListener("DOMContentLoaded", function(event) {
|
||||
const onlyoffice = document.getElementById("office-onlyoffice");
|
||||
onlyoffice.disabled = true;
|
||||
|
||||
// EuroOffice
|
||||
const eurooffice = document.getElementById("office-eurooffice");
|
||||
if (eurooffice) {
|
||||
eurooffice.disabled = true;
|
||||
}
|
||||
|
||||
// Imaginary
|
||||
let imaginary = document.getElementById("imaginary");
|
||||
imaginary.disabled = true;
|
||||
|
||||
@@ -68,7 +68,7 @@ session_start([
|
||||
"use_strict_mode" => true, // Only allow initialized session IDs. See https://www.php.net/manual/en/session.configuration.php#ini.session.use-strict-mode
|
||||
"cookie_secure" => true, // Only send cookies over https (not http). See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie#secure
|
||||
"cookie_httponly" => true, // Block the cookie from being read with js in the browser, will still be send for fetch request triggered by js. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie#httponly
|
||||
"cookie_samesite" => "Strict", // Only send the cookie with requests triggered by AIO itself. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie#samesitesamesite-value
|
||||
"cookie_samesite" => "Lax", // Send the cookie with same-site requests and top-level cross-site navigations (e.g. redirect after token-based getlogin). "Strict" would block the session cookie on the redirect that follows a cross-site navigation, breaking the getlogin flow from Nextcloud's admin panel. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie#samesitesamesite-value
|
||||
]);
|
||||
|
||||
if ($wasAuthenticated) {
|
||||
@@ -152,7 +152,6 @@ $app->get('/containers', function (Request $request, Response $response, array $
|
||||
'current_channel' => $dockerActionManager->GetCurrentChannel(),
|
||||
'is_clamav_enabled' => $configurationManager->isClamavEnabled,
|
||||
'is_onlyoffice_enabled' => $configurationManager->isOnlyofficeEnabled,
|
||||
'is_eurooffice_enabled' => $configurationManager->isEuroofficeEnabled,
|
||||
'is_collabora_enabled' => $configurationManager->isCollaboraEnabled,
|
||||
'is_talk_enabled' => $configurationManager->isTalkEnabled,
|
||||
'borg_restore_password' => $configurationManager->borgRestorePassword,
|
||||
|
||||
@@ -74,10 +74,6 @@ readonly class ContainerDefinitionFetcher {
|
||||
if (!$this->configurationManager->isOnlyofficeEnabled) {
|
||||
continue;
|
||||
}
|
||||
} elseif ($entry['container_name'] === 'nextcloud-aio-eurooffice') {
|
||||
if (!$this->configurationManager->isEuroofficeEnabled) {
|
||||
continue;
|
||||
}
|
||||
} elseif ($entry['container_name'] === 'nextcloud-aio-collabora') {
|
||||
if (!$this->configurationManager->isCollaboraEnabled) {
|
||||
continue;
|
||||
@@ -194,10 +190,6 @@ readonly class ContainerDefinitionFetcher {
|
||||
if (!$this->configurationManager->isOnlyofficeEnabled) {
|
||||
continue;
|
||||
}
|
||||
} elseif ($value === 'nextcloud-aio-eurooffice') {
|
||||
if (!$this->configurationManager->isEuroofficeEnabled) {
|
||||
continue;
|
||||
}
|
||||
} elseif ($value === 'nextcloud-aio-collabora') {
|
||||
if (!$this->configurationManager->isCollaboraEnabled) {
|
||||
continue;
|
||||
|
||||
@@ -81,19 +81,12 @@ readonly class ConfigurationController {
|
||||
if ($officeSuiteChoice === 'collabora') {
|
||||
$this->configurationManager->isCollaboraEnabled = true;
|
||||
$this->configurationManager->isOnlyofficeEnabled = false;
|
||||
$this->configurationManager->isEuroofficeEnabled = false;
|
||||
} elseif ($officeSuiteChoice === 'onlyoffice') {
|
||||
$this->configurationManager->isCollaboraEnabled = false;
|
||||
$this->configurationManager->isOnlyofficeEnabled = true;
|
||||
$this->configurationManager->isEuroofficeEnabled = false;
|
||||
} elseif ($officeSuiteChoice === 'eurooffice') {
|
||||
$this->configurationManager->isCollaboraEnabled = false;
|
||||
$this->configurationManager->isOnlyofficeEnabled = false;
|
||||
$this->configurationManager->isEuroofficeEnabled = true;
|
||||
} else {
|
||||
$this->configurationManager->isCollaboraEnabled = false;
|
||||
$this->configurationManager->isOnlyofficeEnabled = false;
|
||||
$this->configurationManager->isEuroofficeEnabled = false;
|
||||
}
|
||||
$this->configurationManager->isClamavEnabled = isset($request->getParsedBody()['clamav']);
|
||||
$this->configurationManager->isTalkEnabled = isset($request->getParsedBody()['talk']);
|
||||
|
||||
@@ -98,12 +98,6 @@ class ConfigurationManager
|
||||
set { $this->set('isOnlyofficeEnabled', $value); }
|
||||
}
|
||||
|
||||
public bool $isEuroofficeEnabled {
|
||||
// Type-cast because old configs could have 1/0 for this key.
|
||||
get => (bool) $this->get('isEuroofficeEnabled', false);
|
||||
set { $this->set('isEuroofficeEnabled', $value); }
|
||||
}
|
||||
|
||||
public bool $isCollaboraEnabled {
|
||||
// Type-cast because old configs could have 1/0 for this key.
|
||||
get => (bool) $this->get('isCollaboraEnabled', true);
|
||||
@@ -1092,7 +1086,6 @@ class ConfigurationManager
|
||||
'CLAMAV_ENABLED' => $this->isClamavEnabled ? 'yes' : '',
|
||||
'TALK_RECORDING_ENABLED' => $this->isTalkRecordingEnabled ? 'yes' : '',
|
||||
'ONLYOFFICE_ENABLED' => $this->isOnlyofficeEnabled ? 'yes' : '',
|
||||
'EUROOFFICE_ENABLED' => $this->isEuroofficeEnabled ? 'yes' : '',
|
||||
'COLLABORA_ENABLED' => $this->isCollaboraEnabled ? 'yes' : '',
|
||||
'TALK_ENABLED' => $this->isTalkEnabled ? 'yes' : '',
|
||||
'UPDATE_NEXTCLOUD_APPS' => ($this->isDailyBackupRunning() && $this->areAutomaticUpdatesEnabled()) ? 'yes' : '',
|
||||
|
||||
@@ -1 +1 @@
|
||||
13.0.1
|
||||
13.0.3
|
||||
|
||||
@@ -81,37 +81,6 @@
|
||||
{% endif %}
|
||||
</label>
|
||||
<input type="hidden" id="onlyoffice" name="onlyoffice" value="" data-initial-state="{% if is_onlyoffice_enabled == true %}true{% else %}false{% endif %}">
|
||||
<input
|
||||
type="radio"
|
||||
id="office-eurooffice"
|
||||
name="office_suite_choice"
|
||||
value="eurooffice"
|
||||
class="office-radio"
|
||||
{% if is_eurooffice_enabled == true %}
|
||||
checked="checked"
|
||||
{% endif %}
|
||||
>
|
||||
<label class="office-card{{ isAnyRunning ? ' office-card-disabled' : '' }}" for="office-eurooffice">
|
||||
<div class="office-card-header">
|
||||
<h4>EuroOffice</h4>
|
||||
<svg class="office-checkmark" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="var(--color-nextcloud-blue)"/>
|
||||
<path d="M7 12L10.5 15.5L17 9" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
<ul class="office-features">
|
||||
<li>Good Nextcloud integration</li>
|
||||
<li>European alternative</li>
|
||||
<li>Good performance</li>
|
||||
<li>Good Microsoft compatibility</li>
|
||||
</ul>
|
||||
{% if isAnyRunning == false %}
|
||||
<a href="https://www.eurooffice.org/" target="_blank" class="office-learn-more" data-stop-event-propagation="true">
|
||||
Learn more
|
||||
</a>
|
||||
{% endif %}
|
||||
</label>
|
||||
<input type="hidden" id="eurooffice" name="eurooffice" value="" data-initial-state="{% if is_eurooffice_enabled == true %}true{% else %}false{% endif %}">
|
||||
</div>
|
||||
{% if isAnyRunning == false %}
|
||||
<div class="office-none-card">
|
||||
@@ -121,7 +90,7 @@
|
||||
name="office_suite_choice"
|
||||
value=""
|
||||
class="office-radio"
|
||||
{% if is_collabora_enabled == false and is_onlyoffice_enabled == false and is_eurooffice_enabled == false %}
|
||||
{% if is_collabora_enabled == false and is_onlyoffice_enabled == false %}
|
||||
checked="checked"
|
||||
{% endif %}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user