Compare commits
	
		
			66 Commits
		
	
	
		
			authentik_
			...
			update-ngi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1ac43b6be6 | |||
| eb3e2486ce | |||
| 2b4e63ef31 | |||
| c056687849 | |||
| 180c269337 | |||
| 7eea2e0785 | |||
| be915272b4 | |||
| 9be859db25 | |||
| 97e1d72604 | |||
| 8a1fae2bac | |||
| ce817e3928 | |||
| 7a64d3c6a7 | |||
| bb781e654b | |||
| cb5cd5f7b2 | |||
| 0a3e943b26 | |||
| 4f1aaf5d1d | |||
| 019b71fde1 | |||
| 7527399da0 | |||
| 94e84122ed | |||
| 0d9ab936a0 | |||
| 09ec6f842c | |||
| b5d40aa428 | |||
| eead80b60a | |||
| 24670cdb6b | |||
| 7e4ab9288c | |||
| 199bf61300 | |||
| 99514b5991 | |||
| eefb14e150 | |||
| a34e100bd7 | |||
| 24ca6b22bc | |||
| c4ea5e053e | |||
| 9d2e5cc05b | |||
| 72bb75a49f | |||
| 5014bcb276 | |||
| 88fc62bcd0 | |||
| c54b975654 | |||
| e9a602cc78 | |||
| 90c7b87655 | |||
| 3a8c203b51 | |||
| 634a3553b9 | |||
| 24e9571ba1 | |||
| 6546a05cf9 | |||
| ad3059d518 | |||
| 92af4b9c01 | |||
| 92dca3fab7 | |||
| 201585bea8 | |||
| a0e8fdad40 | |||
| 6427ce181f | |||
| 37f575038b | |||
| 7e4c87346a | |||
| 944230afe0 | |||
| 63a1787ad6 | |||
| 1deee41205 | |||
| b8d209e531 | |||
| f48d314699 | |||
| a6ea635fd4 | |||
| c9b8aec108 | |||
| db39e8dee6 | |||
| ed68b3e57c | |||
| 78ea500d5e | |||
| 6f219781e5 | |||
| 162c056f07 | |||
| 5d537d5173 | |||
| 7a25bd4835 | |||
| eac7431b13 | |||
| fce0b9f7cb | 
							
								
								
									
										16
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								.drone.yml
									
									
									
									
									
								
							| @ -31,3 +31,19 @@ steps: | |||||||
| trigger: | trigger: | ||||||
|   branch: |   branch: | ||||||
|     - main |     - main | ||||||
|  | --- | ||||||
|  | kind: pipeline | ||||||
|  | name: generate recipe catalogue | ||||||
|  | steps: | ||||||
|  |   - name: release a new version | ||||||
|  |     image: plugins/downstream | ||||||
|  |     settings: | ||||||
|  |       server: https://build.coopcloud.tech | ||||||
|  |       token: | ||||||
|  |         from_secret: drone_abra-bot_token | ||||||
|  |       fork: true | ||||||
|  |       repositories: | ||||||
|  |         - coop-cloud/auto-recipes-catalogue-json | ||||||
|  |  | ||||||
|  | trigger: | ||||||
|  |   event: tag | ||||||
|  | |||||||
							
								
								
									
										40
									
								
								.env.sample
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								.env.sample
									
									
									
									
									
								
							| @ -1,4 +1,6 @@ | |||||||
| TYPE=nextcloud | TYPE=nextcloud | ||||||
|  | TIMEOUT=900 | ||||||
|  | ENABLE_AUTO_UPDATE=true | ||||||
|  |  | ||||||
| DOMAIN=nextcloud.example.com | DOMAIN=nextcloud.example.com | ||||||
| ## Domain aliases | ## Domain aliases | ||||||
| @ -9,6 +11,8 @@ COMPOSE_FILE="compose.yml" | |||||||
| COMPOSE_FILE="$COMPOSE_FILE:compose.mariadb.yml" | COMPOSE_FILE="$COMPOSE_FILE:compose.mariadb.yml" | ||||||
| #COMPOSE_FILE="$COMPOSE_FILE:compose.postgres.yml" | #COMPOSE_FILE="$COMPOSE_FILE:compose.postgres.yml" | ||||||
|  |  | ||||||
|  | #MAX_DB_CONNECTIONS=500 | ||||||
|  |  | ||||||
| ADMIN_USER=admin | ADMIN_USER=admin | ||||||
|  |  | ||||||
| SECRET_DB_ROOT_PASSWORD_VERSION=v1 | SECRET_DB_ROOT_PASSWORD_VERSION=v1 | ||||||
| @ -17,11 +21,12 @@ SECRET_ADMIN_PASSWORD_VERSION=v1 | |||||||
|  |  | ||||||
| EXTRA_VOLUME=/dev/null:/tmp/.dummy | EXTRA_VOLUME=/dev/null:/tmp/.dummy | ||||||
|  |  | ||||||
|  | PHP_MEMORY_LIMIT=1G | ||||||
| # fpm-tune, see: https://spot13.com/pmcalculator/ | # fpm-tune, see: https://spot13.com/pmcalculator/ | ||||||
| FPM_MAX_CHILDREN=131 | FPM_MAX_CHILDREN=16 | ||||||
| FPM_START_SERVERS=32 | FPM_START_SERVERS=4 | ||||||
| FPM_MIN_SPARE_SERVERS=32 | FPM_MIN_SPARE_SERVERS=4 | ||||||
| FPM_MAX_SPARE_SERVERS=98 | FPM_MAX_SPARE_SERVERS=12 | ||||||
|  |  | ||||||
| DEFAULT_QUOTA="10 GB" | DEFAULT_QUOTA="10 GB" | ||||||
|  |  | ||||||
| @ -39,21 +44,28 @@ DEFAULT_QUOTA="10 GB" | |||||||
| # MAIL_DOMAIN= | # MAIL_DOMAIN= | ||||||
| # SECRET_SMTP_PASSWORD_VERSION=v1 | # SECRET_SMTP_PASSWORD_VERSION=v1 | ||||||
|  |  | ||||||
| # COMPOSE_FILE="$COMPOSE_FILE:compose.apps.yml" | # APPS="calendar" | ||||||
| # APPS="calendar sociallogin onlyoffice" |  | ||||||
| # | # COLLABORA_URL=https://collabora.example.com | ||||||
|  |  | ||||||
|  | # COMPOSE_FILE="$COMPOSE_FILE:compose.onlyoffice.yml" | ||||||
| # ONLYOFFICE_URL=https://onlyoffice.example.com | # ONLYOFFICE_URL=https://onlyoffice.example.com | ||||||
|  | # APPS="$APPS onlyoffice" | ||||||
| # SECRET_ONLYOFFICE_JWT_VERSION=v1 | # SECRET_ONLYOFFICE_JWT_VERSION=v1 | ||||||
| # |  | ||||||
|  | # COMPOSE_FILE="$COMPOSE_FILE:compose.bbb.yml" | ||||||
| # BBB_URL=https://talk.example.org/bigbluebutton/ # trailing slash! | # BBB_URL=https://talk.example.org/bigbluebutton/ # trailing slash! | ||||||
| # SECRET_BBB_SECRET_VERSION=v1 | # SECRET_BBB_SECRET_VERSION=v1 | ||||||
| # |  | ||||||
|  | # COMPOSE_FILE="$COMPOSE_FILE:compose.authentik.yml" | ||||||
|  | # APPS="$APPS sociallogin" | ||||||
|  | # AUTHENTIK_USER_PREFIX=authentik | ||||||
|  | # AUTHENTIK_DOMAIN=authentik.example.com | ||||||
|  | # SECRET_AUTHENTIK_SECRET_VERSION=v1 | ||||||
|  | # SECRET_AUTHENTIK_ID_VERSION=v1 | ||||||
| # OCC_CMDS="app:disable dashboard" | # OCC_CMDS="app:disable dashboard" | ||||||
| # OCC_CMDS="$OCC_CMDS|config:app:set sociallogin auto_create_groups --value 1" | # OCC_CMDS="$OCC_CMDS|config:app:set sociallogin auto_create_groups --value 1" | ||||||
| # OCC_CMDS="$OCC_CMDS|config:app:set sociallogin hide_default_login --value 1" | # OCC_CMDS="$OCC_CMDS|config:app:set sociallogin hide_default_login --value 1" | ||||||
|  |  | ||||||
| # COMPOSE_FILE="$COMPOSE_FILE:compose.authentik.yml" | #COMPOSE_FILE="$COMPOSE_FILE:compose.fulltextsearch.yml" | ||||||
| # AUTHENTIK_USER_PREFIX=authentik | #SECRET_ELASTICSEARCH_PASSWORD_VERSION=v1 | ||||||
| # AUTHENTIK_DOMAIN=authentik.example.com |  | ||||||
| # AUTHENTIK_SECRET_NAME=authentik_example_com_nextcloud_secret_v1  # the same as in authentik |  | ||||||
| # AUTHENTIK_ID_NAME=authentik_example_com_nextcloud_id_v1  # the same as in authentik |  | ||||||
|  | |||||||
							
								
								
									
										45
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								README.md
									
									
									
									
									
								
							| @ -6,10 +6,10 @@ Fully automated luxury Nextcloud via docker-swarm. | |||||||
|  |  | ||||||
| <!-- metadata --> | <!-- metadata --> | ||||||
| * **Category**: Apps | * **Category**: Apps | ||||||
| * **Status**: 2, beta | * **Status**: 5 | ||||||
| * **Image**: [`nextcloud`](https://hub.docker.com/_/nextcloud), 4, upstream | * **Image**: [`nextcloud`](https://hub.docker.com/_/nextcloud), 4, upstream | ||||||
| * **Healthcheck**: Yes | * **Healthcheck**: Yes | ||||||
| * **Backups**: No | * **Backups**: Yes | ||||||
| * **Email**: 3 | * **Email**: 3 | ||||||
| * **Tests**: 2 | * **Tests**: 2 | ||||||
| * **SSO**: 1 (OAuth) | * **SSO**: 1 (OAuth) | ||||||
| @ -17,7 +17,6 @@ Fully automated luxury Nextcloud via docker-swarm. | |||||||
|  |  | ||||||
| ## Quick start | ## Quick start | ||||||
|  |  | ||||||
|  |  | ||||||
| * `abra app new nextcloud` | * `abra app new nextcloud` | ||||||
| * `abra app config <app-name>` | * `abra app config <app-name>` | ||||||
| * `abra app secret insert <app-name> smtp_password v1 <SMTP_PASSWORD>` | * `abra app secret insert <app-name> smtp_password v1 <SMTP_PASSWORD>` | ||||||
| @ -120,7 +119,7 @@ Use [this plugin](https://github.com/pulsejet/nextcloud-oidc-login). Unlike the | |||||||
| ``` | ``` | ||||||
|   'oidc_login_client_id' => 'nextcloud', |   'oidc_login_client_id' => 'nextcloud', | ||||||
|   'oidc_login_client_secret' => 'mysecret', |   'oidc_login_client_secret' => 'mysecret', | ||||||
|   'oidc_login_provider_url' => 'https://example.com/auth/realms/myrealm', |   'oidc_login_provider_url' => 'https://example.com/realms/myrealm', | ||||||
|   'oidc_login_disable_registration' => false, |   'oidc_login_disable_registration' => false, | ||||||
|   'oidc_login_hide_password_form' => true, |   'oidc_login_hide_password_form' => true, | ||||||
|   'oidc_login_button_text' => 'Log in with your myssodomain', |   'oidc_login_button_text' => 'Log in with your myssodomain', | ||||||
| @ -244,3 +243,41 @@ docker exec -u www-data $(docker ps -f name=foo_com_app -q) ./occ preview:pre-ge | |||||||
| ``` | ``` | ||||||
|  |  | ||||||
| This app will improve performance of image browsing at the cost of storage space. | This app will improve performance of image browsing at the cost of storage space. | ||||||
|  |  | ||||||
|  | ## Fulltextsearch using elasticsearch | ||||||
|  |  | ||||||
|  | 1. Uncomment the following lines in your env file: | ||||||
|  | ``` | ||||||
|  | #COMPOSE_FILE="$COMPOSE_FILE:compose.fulltextsearch.yml" | ||||||
|  | #SECRET_ELASTICSEARCH_PASSWORD_VERSION=v1 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 2. Generate the secret for elasticsearch: | ||||||
|  | ```bash | ||||||
|  | abra app secret generate <domain> elasticsearch_password v1 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 3. Deploy your app: | ||||||
|  | ```bash | ||||||
|  | abra app deploy <domain> | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 4. Install the apps and configure them: | ||||||
|  | ``` | ||||||
|  | abra app cmd <domain> app install_fulltextsearch | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 5. You might need to configure the files_fulltextsearch app. run this command to check its settings: | ||||||
|  | ``` | ||||||
|  | abra app cmd <domain> app run_occ '"config:list files_fulltextsearch" | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 6. You can check if the nextcloud can connect to elasticsearch: | ||||||
|  | ``` | ||||||
|  | abra app cmd <domain> app run_occ '"fulltextsearch:test"' | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | And you can populate the index manually and check if any errors occur: | ||||||
|  | ``` | ||||||
|  | abra app cmd <domain> app run_occ '"fulltextsearch:index"' | ||||||
|  | ``` | ||||||
|  | |||||||
							
								
								
									
										89
									
								
								abra.sh
									
									
									
									
									
								
							
							
						
						
									
										89
									
								
								abra.sh
									
									
									
									
									
								
							| @ -1,63 +1,95 @@ | |||||||
| #!/bin/bash | #!/bin/bash | ||||||
|  |  | ||||||
| export FPM_TUNE_VERSION=v5 | export FPM_TUNE_VERSION=v5 | ||||||
| export NGINX_CONF_VERSION=v4 | export NGINX_CONF_VERSION=v7 | ||||||
| export MY_CNF_VERSION=v4 | export MY_CNF_VERSION=v5 | ||||||
| export ENTRYPOINT_VERSION=v3 | export ENTRYPOINT_VERSION=v3 | ||||||
|  | export CRONTAB_VERSION=v1 | ||||||
|  |  | ||||||
| run_occ(){ | run_occ() { | ||||||
|     su -p www-data -s /bin/sh -c "/var/www/html/occ $@" |     su -p www-data -s /bin/sh -c "/var/www/html/occ $@" | ||||||
| } | } | ||||||
|  |  | ||||||
| post_install_occ(){ | post_install_occ() { | ||||||
|     IFS='|' read -ra CMD <<< "$OCC_CMDS" |     IFS='|' read -ra CMD <<<"$OCC_CMDS" | ||||||
|     for cmd in "${CMD[@]}"; do |     for cmd in "${CMD[@]}"; do | ||||||
|       run_occ "$cmd" |         run_occ "$cmd" | ||||||
|     done |     done | ||||||
| } | } | ||||||
|  |  | ||||||
| install_apps(){ | install_apps() { | ||||||
|     install_apps="$@" |     install_apps="$@" | ||||||
|     if [ -z "$install_apps" ] |     if [ -z "$install_apps" ]; then | ||||||
|     then |  | ||||||
|         install_apps=$APPS |         install_apps=$APPS | ||||||
|     fi |     fi | ||||||
|     for app in $install_apps |     for app in $install_apps; do | ||||||
|     do |  | ||||||
|         run_occ "app:install $app" |         run_occ "app:install $app" | ||||||
|     done |     done | ||||||
| } | } | ||||||
|  |  | ||||||
| set_app_config(){ | set_app_config() { | ||||||
|     APP=$1 |     APP=$1 | ||||||
|     KEY=$2 |     KEY=$2 | ||||||
|     VALUE=$3 |     VALUE=$3 | ||||||
|     run_occ "config:app:set $APP $KEY --value '$VALUE'" |     run_occ "config:app:set $APP $KEY --value '$VALUE'" | ||||||
| } | } | ||||||
|  |  | ||||||
| install_bbb(){ | set_system_config() { | ||||||
|  |     KEY=$1 | ||||||
|  |     VALUE=$2 | ||||||
|  |     run_occ "config:system:set $KEY --value '$VALUE'" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | set_trusted_proxies() { | ||||||
|  |     trusted_proxies="$@" | ||||||
|  |     if [ -z "$1" ]; then | ||||||
|  |         trusted_proxies="$TRUSTED_PROXIES" | ||||||
|  |     fi | ||||||
|  |     set_system_config trusted_proxies "$trusted_proxies" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | set_logfile_stdout() { | ||||||
|  |     set_system_config logfile '/dev/stdout' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | install_bbb() { | ||||||
|     install_apps bbb |     install_apps bbb | ||||||
|     set_app_config bbb app.navigation true |     set_app_config bbb app.navigation true | ||||||
|     set_app_config bbb api.url "$BBB_URL" |     set_app_config bbb api.url "$BBB_URL" | ||||||
|     set_app_config bbb api.secret "$(cat /run/secrets/bbb_secret)" |     set_app_config bbb api.secret "$(cat /run/secrets/bbb_secret)" | ||||||
| } | } | ||||||
|  |  | ||||||
| install_onlyoffice(){ | install_onlyoffice() { | ||||||
|     install_apps onlyoffice |     install_apps onlyoffice | ||||||
|     set_app_config onlyoffice DocumentServerUrl "$ONLYOFFICE_URL" |     set_app_config onlyoffice DocumentServerUrl "$ONLYOFFICE_URL" | ||||||
|     set_app_config onlyoffice jwt_secret "$(cat /run/secrets/onlyoffice_jwt)" |     set_app_config onlyoffice jwt_secret "$(cat /run/secrets/onlyoffice_jwt)" | ||||||
|     set_app_config onlyoffice customizationForcesave true |     set_app_config onlyoffice customizationForcesave true | ||||||
| } | } | ||||||
|  |  | ||||||
| set_default_quota(){ | install_collabora() { | ||||||
|     set_app_config files default_quota '"$DEFAULT_QUOTA"' |     install_apps richdocuments | ||||||
|  |     set_app_config richdocuments wopi_url "$COLLABORA_URL" | ||||||
| } | } | ||||||
|  |  | ||||||
| set_authentik(){ | install_fulltextsearch() { | ||||||
| install_apps sociallogin |     install_apps fulltextsearch | ||||||
| AUTHENTIK_SECRET=$(cat /run/secrets/authentik_secret) |     install_apps fulltextsearch_elasticsearch | ||||||
| AUTHENTIK_ID=$(cat /run/secrets/authentik_id) |     install_apps files_fulltextsearch | ||||||
| set_app_config sociallogin custom_providers " |     set_app_config fulltextsearch search_platform "OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform" | ||||||
|  |     set_app_config fulltextsearch_elasticsearch elastic_host "http://elastic:$(cat /run/secrets/elasticsearch_password)@elasticsearch:9200/" | ||||||
|  |     set_app_config fulltextsearch_elasticsearch elastic_index "nextcloud" | ||||||
|  |     set_app_config files_fulltextsearch files_local "1" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | set_default_quota() { | ||||||
|  |     set_app_config files default_quota "$DEFAULT_QUOTA" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | set_authentik() { | ||||||
|  |     install_apps sociallogin | ||||||
|  |     AUTHENTIK_SECRET=$(cat /run/secrets/authentik_secret) | ||||||
|  |     AUTHENTIK_ID=$(cat /run/secrets/authentik_id) | ||||||
|  |     set_app_config sociallogin custom_providers " | ||||||
| { | { | ||||||
|     \"custom_oidc\":[ |     \"custom_oidc\":[ | ||||||
|     { |     { | ||||||
| @ -75,16 +107,17 @@ set_app_config sociallogin custom_providers " | |||||||
|         \"style\":\"openid\", |         \"style\":\"openid\", | ||||||
|         \"defaultGroup\":\"\", |         \"defaultGroup\":\"\", | ||||||
|         \"groupMapping\": { |         \"groupMapping\": { | ||||||
|           \"admin\": \"admin\" |           \"admin\": \"admin\", | ||||||
|  |           \"authentik Admins\": \"admin\" | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| ] | ] | ||||||
| }" | }" | ||||||
|  |  | ||||||
| set_app_config sociallogin update_profile_on_login 1 |     set_app_config sociallogin update_profile_on_login 1 | ||||||
| set_app_config sociallogin auto_create_groups 1 |     set_app_config sociallogin auto_create_groups 1 | ||||||
| set_app_config sociallogin hide_default_login 1 |     set_app_config sociallogin hide_default_login 1 | ||||||
| run_occ 'config:system:set social_login_auto_redirect --value true' |     run_occ 'config:system:set social_login_auto_redirect --value true' | ||||||
| run_occ 'config:system:set allow_user_to_change_display_name --value=false' |     run_occ 'config:system:set allow_user_to_change_display_name --value=false' | ||||||
| run_occ 'config:system:set lost_password_link --value=disabled' |     run_occ 'config:system:set lost_password_link --value=disabled' | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								alaconnect.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								alaconnect.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | authentik: | ||||||
|  |     uncomment: | ||||||
|  |         - compose.authentik.yml | ||||||
|  |         - AUTHENTIK_USER_PREFIX | ||||||
|  |         - AUTHENTIK_DOMAIN | ||||||
|  |         - SECRET_AUTHENTIK_SECRET_VERSION | ||||||
|  |         - SECRET_AUTHENTIK_ID_VERSION | ||||||
|  |     execute: | ||||||
|  |         - app set_authentik | ||||||
|  |     shared_secrets: | ||||||
|  |         nextcloud_secret: authentik_secret | ||||||
|  |         nextcloud_id: authentik_id | ||||||
|  | onlyoffice: | ||||||
|  |     uncomment: | ||||||
|  |         - compose.onlyoffice.yml | ||||||
|  |         - ONLYOFFICE_URL | ||||||
|  |         - SECRET_ONLYOFFICE_JWT_VERSION | ||||||
|  |     execute: | ||||||
|  |         - app install_onlyoffice | ||||||
|  | collabora: | ||||||
|  |     uncomment: | ||||||
|  |         - COLLABORA_URL | ||||||
|  |     execute: | ||||||
|  |         - app install_collabora | ||||||
| @ -8,7 +8,7 @@ services: | |||||||
| secrets: | secrets: | ||||||
|   authentik_secret: |   authentik_secret: | ||||||
|     external: true |     external: true | ||||||
|     name: ${AUTHENTIK_SECRET_NAME} |     name: ${STACK_NAME}_authentik_secret_${SECRET_AUTHENTIK_SECRET_VERSION} | ||||||
|   authentik_id: |   authentik_id: | ||||||
|     external: true |     external: true | ||||||
|     name: ${AUTHENTIK_ID_NAME} |     name: ${STACK_NAME}_authentik_id_${SECRET_AUTHENTIK_ID_VERSION} | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								compose.bbb.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								compose.bbb.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | version: "3.8" | ||||||
|  | services: | ||||||
|  |   app: | ||||||
|  |     secrets: | ||||||
|  |       - bbb_secret | ||||||
|  |     environment: | ||||||
|  |       - BBB_URL | ||||||
|  |  | ||||||
|  | secrets: | ||||||
|  |   bbb_secret: | ||||||
|  |     external: true | ||||||
|  |     name: ${STACK_NAME}_bbb_secret_${SECRET_BBB_SECRET_VERSION} | ||||||
							
								
								
									
										55
									
								
								compose.fulltextsearch.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								compose.fulltextsearch.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,55 @@ | |||||||
|  | version: "3.8" | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   elasticsearch: | ||||||
|  |     image: "docker.elastic.co/elasticsearch/elasticsearch:8.11.4" | ||||||
|  |     environment: | ||||||
|  |       - cluster.name=docker-cluster | ||||||
|  |       - bootstrap.memory_lock=true | ||||||
|  |       - "ES_JAVA_OPTS=-Xms512m -Xmx512m" | ||||||
|  |       - discovery.type=single-node | ||||||
|  |       # Disable authentication and ssl completely | ||||||
|  |       # - xpack.security.enabled=false | ||||||
|  |       # Use this to enable Basic Authentication: | ||||||
|  |       - xpack.security.enabled=true | ||||||
|  |       - xpack.security.http.ssl.enabled=false | ||||||
|  |       - ELASTIC_PASSWORD_FILE=/var/run/secrets/elasticsearch_password | ||||||
|  |     ulimits: | ||||||
|  |       memlock: | ||||||
|  |         soft: -1 | ||||||
|  |         hard: -1 | ||||||
|  |     volumes: | ||||||
|  |       - elasticsearch:/usr/share/elasticsearch/data | ||||||
|  |     networks: | ||||||
|  |       - internal | ||||||
|  |     secrets: | ||||||
|  |       - source: elasticsearch_password | ||||||
|  |         uid: "1000" | ||||||
|  |         gid: "1000" | ||||||
|  |         mode: 0600 | ||||||
|  |  | ||||||
|  |   searchindexer: | ||||||
|  |     image: nextcloud:29.0.1-fpm | ||||||
|  |     volumes: | ||||||
|  |       - nextcloud:/var/www/html/ | ||||||
|  |       - nextapps:/var/www/html/custom_apps:cached | ||||||
|  |       - nextdata:/var/www/html/data:cached | ||||||
|  |       - nextconfig:/var/www/html/config:cached | ||||||
|  |       - ${EXTRA_VOLUME} | ||||||
|  |     networks: | ||||||
|  |       - internal | ||||||
|  |     entrypoint: su -p www-data -s /bin/sh -c '/var/www/html/occ fulltextsearch:live' | ||||||
|  |  | ||||||
|  |   # Add the secret to the app service so it is avaiable in the | ||||||
|  |   # install_fulltextsearch command | ||||||
|  |   app: | ||||||
|  |     secrets: | ||||||
|  |       - elasticsearch_password | ||||||
|  |  | ||||||
|  | secrets: | ||||||
|  |   elasticsearch_password: | ||||||
|  |     external: true | ||||||
|  |     name: ${STACK_NAME}_elasticsearch_password_${SECRET_ELASTICSEARCH_PASSWORD_VERSION} | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   elasticsearch: | ||||||
| @ -15,6 +15,7 @@ services: | |||||||
|       - MYSQL_USER=nextcloud |       - MYSQL_USER=nextcloud | ||||||
|       - MYSQL_PASSWORD_FILE=/run/secrets/db_password |       - MYSQL_PASSWORD_FILE=/run/secrets/db_password | ||||||
|       - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password |       - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password | ||||||
|  |       - MAX_DB_CONNECTIONS=${MAX_DB_CONNECTIONS:-100} | ||||||
|     configs: |     configs: | ||||||
|       - source: my_tune |       - source: my_tune | ||||||
|         target: /etc/mysql/conf.d/my-tune.cnf |         target: /etc/mysql/conf.d/my-tune.cnf | ||||||
| @ -28,9 +29,9 @@ services: | |||||||
|     deploy: |     deploy: | ||||||
|       labels: |       labels: | ||||||
|           backupbot.backup: "true" |           backupbot.backup: "true" | ||||||
|           backupbot.backup.pre-hook: 'mkdir -p /tmp/backup/ && mysqldump --single-transaction -u root -p"$$(cat /run/secrets/db_root_password)" nextcloud > /tmp/backup/backup.sql' |           backupbot.backup.pre-hook: 'mysqldump --single-transaction -u root -p"$$(cat /run/secrets/db_root_password)" nextcloud > /var/lib/mysql/backup.sql' | ||||||
|           backupbot.backup.post-hook: "rm -rf /tmp/backup" |           backupbot.backup.post-hook: "rm -rf /var/lib/mysql/backup.sql" | ||||||
|           backupbot.backup.path: "/tmp/backup/" |           backupbot.backup.path: "/var/lib/mysql/backup.sql" | ||||||
|     healthcheck: |     healthcheck: | ||||||
|       test: ["CMD-SHELL", 'mysqladmin -p"$$(cat /run/secrets/db_root_password)"  ping'] |       test: ["CMD-SHELL", 'mysqladmin -p"$$(cat /run/secrets/db_root_password)"  ping'] | ||||||
|       interval: 30s |       interval: 30s | ||||||
| @ -41,6 +42,12 @@ configs: | |||||||
|   my_tune: |   my_tune: | ||||||
|     name: ${STACK_NAME}_my_cnf_${MY_CNF_VERSION} |     name: ${STACK_NAME}_my_cnf_${MY_CNF_VERSION} | ||||||
|     file: my-tune.cnf |     file: my-tune.cnf | ||||||
|  |     template_driver: golang | ||||||
|  |  | ||||||
|  | secrets: | ||||||
|  |   db_root_password: | ||||||
|  |     external: true | ||||||
|  |     name: ${STACK_NAME}_db_root_password_${SECRET_DB_ROOT_PASSWORD_VERSION} | ||||||
|  |  | ||||||
| volumes: | volumes: | ||||||
|   mariadb: |   mariadb: | ||||||
|  | |||||||
| @ -3,16 +3,10 @@ services: | |||||||
|   app: |   app: | ||||||
|     secrets: |     secrets: | ||||||
|       - onlyoffice_jwt |       - onlyoffice_jwt | ||||||
|       - bbb_secret |  | ||||||
|     environment: |     environment: | ||||||
|       - APPS |  | ||||||
|       - ONLYOFFICE_URL |       - ONLYOFFICE_URL | ||||||
|       - BBB_URL |  | ||||||
| 
 | 
 | ||||||
| secrets: | secrets: | ||||||
|   onlyoffice_jwt: |   onlyoffice_jwt: | ||||||
|     external: true |     external: true | ||||||
|     name: ${STACK_NAME}_onlyoffice_jwt_${SECRET_ONLYOFFICE_JWT_VERSION} |     name: ${STACK_NAME}_onlyoffice_jwt_${SECRET_ONLYOFFICE_JWT_VERSION} | ||||||
|   bbb_secret: |  | ||||||
|     external: true |  | ||||||
|     name: ${STACK_NAME}_bbb_secret_${SECRET_BBB_SECRET_VERSION} |  | ||||||
| @ -11,27 +11,28 @@ services: | |||||||
|  |  | ||||||
|   db: |   db: | ||||||
|     image: "postgres:12" |     image: "postgres:12" | ||||||
|  |     command: -c "max_connections=${MAX_DB_CONNECTIONS:-100}" | ||||||
|     volumes: |     volumes: | ||||||
|       - "postgres:/var/lib/postgresql/data" |       - "postgres:/var/lib/postgresql/data" | ||||||
|     networks: |     networks: | ||||||
|       - internal |       - internal | ||||||
|     environment: |     environment: | ||||||
|       POSTGRES_USER: nextcloud  |       POSTGRES_USER: nextcloud | ||||||
|       POSTGRES_PASSWORD_FILE: /run/secrets/db_password |       POSTGRES_PASSWORD_FILE: /run/secrets/db_password | ||||||
|       POSTGRES_DB: nextcloud  |       POSTGRES_DB: nextcloud | ||||||
|     secrets: |     secrets: | ||||||
|       - db_password |       - db_password | ||||||
|     healthcheck: |     healthcheck: | ||||||
|       test: ["CMD-SHELL", "pg_isready"] |       test: ["CMD-SHELL", "pg_isready", "-U", "nextcloud"] | ||||||
|       interval: 10s |       interval: 10s | ||||||
|       timeout: 5s |       timeout: 5s | ||||||
|       retries: 5 |       retries: 5 | ||||||
|     deploy: |     deploy: | ||||||
|       labels: |       labels: | ||||||
|             backupbot.backup: "true" |             backupbot.backup: "true" | ||||||
|             backupbot.backup.pre-hook: "mkdir -p /tmp/backup/ && PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /tmp/backup/backup.sql" |             backupbot.backup.pre-hook: "PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /var/lib/postgresql/data/backup.sql" | ||||||
|             backupbot.backup.post-hook: "rm -rf /tmp/backup" |             backupbot.backup.post-hook: "rm -rf /var/lib/postgresql/data/backup.sql" | ||||||
|             backupbot.backup.path: "/tmp/backup/" |             backupbot.backup.path: "/var/lib/postgresql/data/" | ||||||
|  |  | ||||||
| volumes: | volumes: | ||||||
|   postgres: |   postgres: | ||||||
|  | |||||||
							
								
								
									
										42
									
								
								compose.yml
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								compose.yml
									
									
									
									
									
								
							| @ -1,7 +1,9 @@ | |||||||
| version: "3.8" | version: "3.8" | ||||||
| services: | services: | ||||||
|   web: |   web: | ||||||
|     image: nginx:1.23.3 |     image: nginx:1.26.1 | ||||||
|  |     depends_on: | ||||||
|  |       - app | ||||||
|     configs: |     configs: | ||||||
|       - source: nginx_conf |       - source: nginx_conf | ||||||
|         target: /etc/nginx/nginx.conf |         target: /etc/nginx/nginx.conf | ||||||
| @ -33,6 +35,9 @@ services: | |||||||
|         - "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect" |         - "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect" | ||||||
|         - "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true" |         - "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true" | ||||||
|         - "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" |         - "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" | ||||||
|  |         - "caddy=${DOMAIN}" | ||||||
|  |         - "caddy.reverse_proxy={{upstreams 80}}" | ||||||
|  |         - "caddy.tls.on_demand=" | ||||||
|     healthcheck: |     healthcheck: | ||||||
|       test: ["CMD-SHELL", 'curl -s -N curl -Ns localhost/status.php |  grep "installed\":true"'] |       test: ["CMD-SHELL", 'curl -s -N curl -Ns localhost/status.php |  grep "installed\":true"'] | ||||||
|       interval: 30s |       interval: 30s | ||||||
| @ -41,12 +46,12 @@ services: | |||||||
|       start_period: 5m |       start_period: 5m | ||||||
|  |  | ||||||
|   app: |   app: | ||||||
|     image: nextcloud:25.0.4-fpm |     image: nextcloud:29.0.1-fpm | ||||||
|     depends_on: |     depends_on: | ||||||
|       - db |       - db | ||||||
|     configs: |     configs: | ||||||
|       - source: fpm_tune |       - source: fpm_tune | ||||||
|         target: /usr/local/etc/php-fpm.d/fpm-tune.conf |         target: /usr/local/etc/php-fpm.d/zzz-fpm-tune.conf | ||||||
|       - source: entrypoint |       - source: entrypoint | ||||||
|         target: /custom-entrypoint.sh |         target: /custom-entrypoint.sh | ||||||
|         mode: 555 |         mode: 555 | ||||||
| @ -64,14 +69,14 @@ services: | |||||||
|       - NEXTCLOUD_ADMIN_USER=${ADMIN_USER} |       - NEXTCLOUD_ADMIN_USER=${ADMIN_USER} | ||||||
|       - NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/admin_password |       - NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/admin_password | ||||||
|       - NEXTCLOUD_TRUSTED_DOMAINS=${DOMAIN} |       - NEXTCLOUD_TRUSTED_DOMAINS=${DOMAIN} | ||||||
|       - TRUSTED_PROXIES=traefik |       - TRUSTED_PROXIES=10.0.0.0/8 | ||||||
|       - REDIS_HOST=cache |       - REDIS_HOST=cache | ||||||
|       - OVERWRITEPROTOCOL=https |       - OVERWRITEPROTOCOL=https | ||||||
|       - PHP_MEMORY_LIMIT=1G |       - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT:-1G} | ||||||
|       - FPM_MAX_CHILDREN=131 |       - FPM_MAX_CHILDREN=${FPM_MAX_CHILDREN:-131} | ||||||
|       - FPM_START_SERVERS=32 |       - FPM_START_SERVERS=${FPM_START_SERVERS:-32} | ||||||
|       - FPM_MIN_SPARE_SERVERS=32 |       - FPM_MIN_SPARE_SERVERS=${FPM_MIN_SPARE_SERVERS:-32} | ||||||
|       - FPM_MAX_SPARE_SERVERS=98 |       - FPM_MAX_SPARE_SERVERS=${FPM_MAX_SPARE_SERVERS:-98} | ||||||
|       - DEFAULT_QUOTA |       - DEFAULT_QUOTA | ||||||
|     volumes: |     volumes: | ||||||
|       - nextcloud:/var/www/html/ |       - nextcloud:/var/www/html/ | ||||||
| @ -86,7 +91,8 @@ services: | |||||||
|         failure_action: rollback |         failure_action: rollback | ||||||
|         order: start-first |         order: start-first | ||||||
|       labels: |       labels: | ||||||
|         - "coop-cloud.${STACK_NAME}.version=3.1.2+25.0.4-fpm" |         - "coop-cloud.${STACK_NAME}.version=8.0.0+29.0.1-fpm" | ||||||
|  |         - "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}" | ||||||
|         - "backupbot.backup=true" |         - "backupbot.backup=true" | ||||||
|         - "backupbot.backup.path=/var/www/html/config/,/var/www/html/data/,/var/www/html/custom_apps/" |         - "backupbot.backup.path=/var/www/html/config/,/var/www/html/data/,/var/www/html/custom_apps/" | ||||||
|     healthcheck: |     healthcheck: | ||||||
| @ -94,10 +100,10 @@ services: | |||||||
|       interval: 30s |       interval: 30s | ||||||
|       timeout: 10s |       timeout: 10s | ||||||
|       retries: 10 |       retries: 10 | ||||||
|       start_period: 5m |       start_period: 15m | ||||||
|  |  | ||||||
|   cron: |   cron: | ||||||
|     image: nextcloud:25.0.4-fpm |     image: nextcloud:29.0.1-fpm | ||||||
|     volumes: |     volumes: | ||||||
|       - nextcloud:/var/www/html/ |       - nextcloud:/var/www/html/ | ||||||
|       - nextapps:/var/www/html/custom_apps:cached |       - nextapps:/var/www/html/custom_apps:cached | ||||||
| @ -107,9 +113,13 @@ services: | |||||||
|     networks: |     networks: | ||||||
|       - internal |       - internal | ||||||
|     entrypoint: /cron.sh |     entrypoint: /cron.sh | ||||||
|  |     configs: | ||||||
|  |       - source: crontab | ||||||
|  |         target: /var/spool/cron/crontabs/www-data | ||||||
|  |  | ||||||
|  |  | ||||||
|   cache: |   cache: | ||||||
|     image: redis:7.0.9-alpine |     image: redis:7.2.5-alpine | ||||||
|     networks: |     networks: | ||||||
|       - internal |       - internal | ||||||
|     volumes: |     volumes: | ||||||
| @ -121,9 +131,6 @@ services: | |||||||
|       retries: 20 |       retries: 20 | ||||||
|  |  | ||||||
| secrets: | secrets: | ||||||
|   db_root_password: |  | ||||||
|     external: true |  | ||||||
|     name: ${STACK_NAME}_db_root_password_${SECRET_DB_ROOT_PASSWORD_VERSION} |  | ||||||
|   db_password: |   db_password: | ||||||
|     external: true |     external: true | ||||||
|     name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION} |     name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION} | ||||||
| @ -152,6 +159,9 @@ configs: | |||||||
|     name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION} |     name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION} | ||||||
|     file: entrypoint.sh.tmpl |     file: entrypoint.sh.tmpl | ||||||
|     template_driver: golang |     template_driver: golang | ||||||
|  |   crontab: | ||||||
|  |     name: ${STACK_NAME}_crontab_${CRONTAB_VERSION} | ||||||
|  |     file: crontab | ||||||
|  |  | ||||||
| networks: | networks: | ||||||
|   proxy: |   proxy: | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								crontab
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								crontab
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | */5 * * * * php -d memory_limit=1G -f /var/www/html/cron.php | ||||||
| @ -13,7 +13,7 @@ key_buffer_size                = 16M | |||||||
| innodb_log_file_size           = 256M | innodb_log_file_size           = 256M | ||||||
| long_query_time                = 1 | long_query_time                = 1 | ||||||
| max_allowed_packet             = 256M | max_allowed_packet             = 256M | ||||||
| max_connections                = 100 | max_connections                = {{ env "MAX_DB_CONNECTIONS" }} | ||||||
| max_heap_table_size            = 64M | max_heap_table_size            = 64M | ||||||
| max_user_connections           = 0 | max_user_connections           = 0 | ||||||
| myisam_recover_options         = BACKUP | myisam_recover_options         = BACKUP | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ events { | |||||||
|  |  | ||||||
|  |  | ||||||
| http { | http { | ||||||
|     include       /etc/nginx/mime.types; |     include mime.types; | ||||||
|     default_type  application/octet-stream; |     default_type  application/octet-stream; | ||||||
|  |  | ||||||
|     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' |     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' | ||||||
| @ -22,8 +22,17 @@ http { | |||||||
|     sendfile        on; |     sendfile        on; | ||||||
|     #tcp_nopush     on; |     #tcp_nopush     on; | ||||||
|  |  | ||||||
|  |     # Prevent nginx HTTP Server Detection | ||||||
|  |     server_tokens   off; | ||||||
|  |  | ||||||
|     keepalive_timeout  65; |     keepalive_timeout  65; | ||||||
|  |  | ||||||
|  |     # Set the `immutable` cache control options only for assets with a cache busting `v` argument | ||||||
|  |     map $arg_v $asset_immutable { | ||||||
|  |         "" ""; | ||||||
|  |     default "immutable"; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     #gzip  on; |     #gzip  on; | ||||||
|  |  | ||||||
|     upstream php-handler { |     upstream php-handler { | ||||||
| @ -41,30 +50,34 @@ http { | |||||||
|         # could take several months. |         # could take several months. | ||||||
|         #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; |         #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; | ||||||
|  |  | ||||||
|  |         # set max upload size and increase upload timeout: | ||||||
|         # set max upload size |  | ||||||
|         client_max_body_size 512M; |         client_max_body_size 512M; | ||||||
|  |         client_body_timeout 300s; | ||||||
|         fastcgi_buffers 64 4K; |         fastcgi_buffers 64 4K; | ||||||
|  |  | ||||||
|  |         # The settings allows you to optimize the HTTP2 bandwidth. | ||||||
|  |         # See https://blog.cloudflare.com/delivering-http-2-upload-speed-improvements/ | ||||||
|  |         # for tuning hints | ||||||
|  |         client_body_buffer_size 512k; | ||||||
|  |  | ||||||
|         # Enable gzip but do not remove ETag headers |         # Enable gzip but do not remove ETag headers | ||||||
|         gzip on; |         gzip on; | ||||||
|         gzip_vary on; |         gzip_vary on; | ||||||
|         gzip_comp_level 4; |         gzip_comp_level 4; | ||||||
|         gzip_min_length 256; |         gzip_min_length 256; | ||||||
|         gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; |         gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; | ||||||
|         gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; |         gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; | ||||||
|  |  | ||||||
|         # Pagespeed is not supported by Nextcloud, so if your server is built |         # Pagespeed is not supported by Nextcloud, so if your server is built | ||||||
|         # with the `ngx_pagespeed` module, uncomment this line to disable it. |         # with the `ngx_pagespeed` module, uncomment this line to disable it. | ||||||
|         #pagespeed off; |         #pagespeed off; | ||||||
|  |  | ||||||
|         # HTTP response headers borrowed from Nextcloud `.htaccess` |         # HTTP response headers borrowed from Nextcloud `.htaccess` | ||||||
|         add_header Referrer-Policy                      "no-referrer"   always; |         add_header Referrer-Policy                      "no-referrer"       always; | ||||||
|         add_header X-Content-Type-Options               "nosniff"       always; |         add_header X-Content-Type-Options               "nosniff"           always; | ||||||
|         add_header X-Download-Options                   "noopen"        always; |         add_header X-Permitted-Cross-Domain-Policies    "none"              always; | ||||||
|         add_header X-Permitted-Cross-Domain-Policies    "none"          always; |         add_header X-Robots-Tag                         "noindex, nofollow" always; | ||||||
|         add_header X-Robots-Tag                         "none"          always; |         add_header X-XSS-Protection                     "1; mode=block"     always; | ||||||
|         add_header X-XSS-Protection                     "1; mode=block" always; |  | ||||||
|  |  | ||||||
|         {{ if eq (env "X_FRAME_OPTIONS_ENABLED") "1" }} |         {{ if eq (env "X_FRAME_OPTIONS_ENABLED") "1" }} | ||||||
|         add_header Content-Security-Policy              "frame-ancestors {{ env "X_FRAME_OPTIONS_ALLOW_FROM" }} {{ env "DOMAIN" }}"; |         add_header Content-Security-Policy              "frame-ancestors {{ env "X_FRAME_OPTIONS_ALLOW_FROM" }} {{ env "DOMAIN" }}"; | ||||||
| @ -132,6 +145,9 @@ http { | |||||||
|         # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` |         # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` | ||||||
|         # to the URI, resulting in a HTTP 500 error response. |         # to the URI, resulting in a HTTP 500 error response. | ||||||
|         location ~ \.php(?:$|/) { |         location ~ \.php(?:$|/) { | ||||||
|  |             # Required for legacy support | ||||||
|  |             rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode(_arm64)?\/proxy) /index.php$request_uri; | ||||||
|  |  | ||||||
|             fastcgi_split_path_info ^(.+?\.php)(/.*)$; |             fastcgi_split_path_info ^(.+?\.php)(/.*)$; | ||||||
|             set $path_info $fastcgi_path_info; |             set $path_info $fastcgi_path_info; | ||||||
|  |  | ||||||
| @ -148,12 +164,32 @@ http { | |||||||
|  |  | ||||||
|             fastcgi_intercept_errors on; |             fastcgi_intercept_errors on; | ||||||
|             fastcgi_request_buffering off; |             fastcgi_request_buffering off; | ||||||
|  |  | ||||||
|  |             fastcgi_max_temp_file_size 0; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         location ~ \.(?:css|js|svg|gif)$ { |         # Javascript mimetype fixes for nginx | ||||||
|  |         # Note: The block below should be removed, and the js|mjs section should be | ||||||
|  |         # added to the block below this one. This is a temporary fix until Nginx  | ||||||
|  |         # upstream fixes the js mime-type | ||||||
|  |         location ~* \.(?:js|mjs)$ { | ||||||
|  |             types {  | ||||||
|  |                 text/javascript js mjs; | ||||||
|  |             }  | ||||||
|             try_files $uri /index.php$request_uri; |             try_files $uri /index.php$request_uri; | ||||||
|             expires 6M;         # Cache-Control policy borrowed from `.htaccess` |             add_header Cache-Control "public, max-age=15778463, $asset_immutable"; | ||||||
|  |             access_log off; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # Serve static files | ||||||
|  |         location ~ \.(?:css|svg|gif|png|jpg|ico|wasm|tflite|map|ogg|flac)$ { | ||||||
|  |             try_files $uri /index.php$request_uri; | ||||||
|  |             add_header Cache-Control "public, max-age=15778463, $asset_immutable"; | ||||||
|             access_log off;     # Optional: Don't log access to assets |             access_log off;     # Optional: Don't log access to assets | ||||||
|  |  | ||||||
|  |             location ~ \.wasm$ { | ||||||
|  |                 default_type application/wasm; | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         location ~ \.woff2?$ { |         location ~ \.woff2?$ { | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								release/3.2.0+25.0.4-fpm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								release/3.2.0+25.0.4-fpm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | If the authentik configuration should be handled by abra add the following to the env: | ||||||
|  |  | ||||||
|  |     COMPOSE_FILE="$COMPOSE_FILE:compose.authentik.yml" | ||||||
|  |     AUTHENTIK_USER_PREFIX=authentik | ||||||
|  |     AUTHENTIK_DOMAIN=authentik.example.com | ||||||
|  |     AUTHENTIK_SECRET_NAME=authentik_example_com_nextcloud_secret_v1  # the same as in authentik | ||||||
|  |     AUTHENTIK_ID_NAME=authentik_example_com_nextcloud_id_v1  # the same as in authentik | ||||||
|  |  | ||||||
|  | And run: | ||||||
|  |  | ||||||
|  |     abra app cmd <app-name> app set_authentik | ||||||
							
								
								
									
										1
									
								
								release/5.0.1+27.0.1-fpm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								release/5.0.1+27.0.1-fpm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | The authentik secrets need to be inserted again, as nextcloud is not sharing the secret with authentik any more. | ||||||
							
								
								
									
										1
									
								
								release/8.0.0+29.0.1-fpm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								release/8.0.0+29.0.1-fpm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | BREAKING CHANGE: compose.apps.yml is now split for bbb and onlyoffice, configs must be updated | ||||||
		Reference in New Issue
	
	Block a user