mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-06-10 08:37:02 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 77ddf66d3f | |||
| a02ef6fd19 |
@@ -30,6 +30,4 @@ labels: 0. Needs triage
|
|||||||
|
|
||||||
#### Docker run command or docker-compose file that you used
|
#### Docker run command or docker-compose file that you used
|
||||||
|
|
||||||
#### Output of `sudo docker logs nextcloud-aio-mastercontainer`
|
#### Other valuable info <!--- (like logs, screenshots & Co.) -->
|
||||||
|
|
||||||
#### Other valuable info <!--- (like additional logs, screenshots & Co.) -->
|
|
||||||
|
|||||||
@@ -55,6 +55,6 @@ updates:
|
|||||||
- dependency-name: "postgres"
|
- dependency-name: "postgres"
|
||||||
update-types: ["version-update:semver-major"]
|
update-types: ["version-update:semver-major"]
|
||||||
- dependency-name: "redis"
|
- dependency-name: "redis"
|
||||||
update-types: ["version-update:semver-major"]
|
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||||
- dependency-name: "elasticsearch"
|
- dependency-name: "elasticsearch"
|
||||||
update-types: ["version-update:semver-major"]
|
update-types: ["version-update:semver-major"]
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v6.0.0
|
uses: actions/checkout@v4
|
||||||
- name: Check spelling
|
- name: Check spelling
|
||||||
uses: codespell-project/actions-codespell@8f01853be192eb0f849a5c7d721450e7a467c579 # v2
|
uses: codespell-project/actions-codespell@406322ec52dd7b488e48c1c4b82e2a8b3a1bf630 # v2
|
||||||
with:
|
with:
|
||||||
check_filenames: true
|
check_filenames: true
|
||||||
check_hidden: true
|
check_hidden: true
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
name: collabora-update
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: '00 12 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
collabora-update:
|
|
||||||
name: update collabora
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6.0.0
|
|
||||||
- name: Run collabora-profile-update
|
|
||||||
run: |
|
|
||||||
rm -f php/cool-seccomp-profile.json
|
|
||||||
wget https://raw.githubusercontent.com/CollaboraOnline/online/refs/heads/master/docker/cool-seccomp-profile.json
|
|
||||||
mv cool-seccomp-profile.json php/
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
|
||||||
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7
|
|
||||||
with:
|
|
||||||
commit-message: collabora-seccomp-update automated change
|
|
||||||
signoff: true
|
|
||||||
title: collabora seccomp update
|
|
||||||
body: Automated collabora seccomp profile update
|
|
||||||
labels: dependencies, 3. to review
|
|
||||||
milestone: next
|
|
||||||
branch: collabora-seccomp-update
|
|
||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v6.0.0
|
uses: actions/checkout@v4
|
||||||
- name: Validate structure
|
- name: Validate structure
|
||||||
run: |
|
run: |
|
||||||
CONTAINERS="$(find ./community-containers -mindepth 1 -maxdepth 1 -type d)"
|
CONTAINERS="$(find ./community-containers -mindepth 1 -maxdepth 1 -type d)"
|
||||||
|
|||||||
@@ -9,9 +9,10 @@ jobs:
|
|||||||
dependency_updates:
|
dependency_updates:
|
||||||
name: Run dependency update script
|
name: Run dependency update script
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'nextcloud/all-in-one'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.0
|
- uses: actions/checkout@v4
|
||||||
- uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2
|
- uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
|
||||||
with:
|
with:
|
||||||
php-version: 8.4
|
php-version: 8.4
|
||||||
extensions: apcu
|
extensions: apcu
|
||||||
@@ -44,7 +45,7 @@ jobs:
|
|||||||
)"
|
)"
|
||||||
sed -i "s|pecl install APCu.*\;|pecl install APCu-$apcu_version\;|" ./Containers/mastercontainer/Dockerfile
|
sed -i "s|pecl install APCu.*\;|pecl install APCu-$apcu_version\;|" ./Containers/mastercontainer/Dockerfile
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
|
||||||
with:
|
with:
|
||||||
commit-message: php dependency updates
|
commit-message: php dependency updates
|
||||||
signoff: true
|
signoff: true
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6.0.0
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install hadolint
|
- name: Install hadolint
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6.0.0
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Turnstyle
|
- name: Turnstyle
|
||||||
uses: softprops/turnstyle@2e4451ef94c5969eee533c487092052d4d1a53af # v2
|
uses: softprops/turnstyle@807f6009e7cee5c2c9faa41ccef03a8bb24b06ab # v2
|
||||||
with:
|
with:
|
||||||
continue-after-seconds: 180
|
continue-after-seconds: 180
|
||||||
env:
|
env:
|
||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
|
|
||||||
# See https://github.com/helm/chart-releaser-action/issues/6
|
# See https://github.com/helm/chart-releaser-action/issues/6
|
||||||
- name: Set up Helm
|
- name: Set up Helm
|
||||||
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4
|
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4
|
||||||
with:
|
with:
|
||||||
version: v3.6.3
|
version: v3.6.3
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,9 @@ jobs:
|
|||||||
run_update:
|
run_update:
|
||||||
name: update to latest imaginary commit on master branch
|
name: update to latest imaginary commit on master branch
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'nextcloud/all-in-one'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.0
|
- uses: actions/checkout@v4
|
||||||
- name: Run imaginary-update
|
- name: Run imaginary-update
|
||||||
run: |
|
run: |
|
||||||
# Imaginary
|
# Imaginary
|
||||||
@@ -22,7 +23,7 @@ jobs:
|
|||||||
sed -i "s|^ENV IMAGINARY_HASH.*$|ENV IMAGINARY_HASH=$imaginary_version|" ./Containers/imaginary/Dockerfile
|
sed -i "s|^ENV IMAGINARY_HASH.*$|ENV IMAGINARY_HASH=$imaginary_version|" ./Containers/imaginary/Dockerfile
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
|
||||||
with:
|
with:
|
||||||
commit-message: imaginary-update automated change
|
commit-message: imaginary-update automated change
|
||||||
signoff: true
|
signoff: true
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v6.0.0
|
uses: actions/checkout@v4
|
||||||
- name: Validate Json
|
- name: Validate Json
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6.0.0
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Install Helm
|
- name: Install Helm
|
||||||
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4
|
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4
|
||||||
with:
|
with:
|
||||||
version: v3.11.1
|
version: v3.11.1
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,6 @@
|
|||||||
#
|
#
|
||||||
# https://github.com/nextcloud/.github
|
# https://github.com/nextcloud/.github
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||||
#
|
|
||||||
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
name: Lint php
|
name: Lint php
|
||||||
|
|
||||||
@@ -36,12 +33,10 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5 # v5.0.1
|
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
- name: Set up php ${{ matrix.php-versions }}
|
||||||
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
|
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
coverage: none
|
coverage: none
|
||||||
|
|||||||
@@ -10,8 +10,9 @@ jobs:
|
|||||||
run_update_sh:
|
run_update_sh:
|
||||||
name: Run nextcloud-update script
|
name: Run nextcloud-update script
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'nextcloud/all-in-one'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.0
|
- uses: actions/checkout@v4
|
||||||
- name: Run nextcloud-update script
|
- name: Run nextcloud-update script
|
||||||
run: |
|
run: |
|
||||||
# Inspired by https://github.com/nextcloud/docker/blob/master/update.sh
|
# Inspired by https://github.com/nextcloud/docker/blob/master/update.sh
|
||||||
@@ -79,7 +80,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
|
||||||
with:
|
with:
|
||||||
commit-message: nextcloud-update automated change
|
commit-message: nextcloud-update automated change
|
||||||
signoff: true
|
signoff: true
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ jobs:
|
|||||||
name: PHP Deprecation Detector
|
name: PHP Deprecation Detector
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.0
|
- uses: actions/checkout@v4
|
||||||
- name: Set up php
|
- name: Set up php
|
||||||
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2
|
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
|
||||||
with:
|
with:
|
||||||
php-version: 8.4
|
php-version: 8.4
|
||||||
extensions: apcu
|
extensions: apcu
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.0
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: lts/*
|
node-version: lts/*
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v5
|
- uses: actions/upload-artifact@v4
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
with:
|
with:
|
||||||
name: playwright-report
|
name: playwright-report
|
||||||
|
|||||||
@@ -8,12 +8,13 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
update-psalm-baseline:
|
update-psalm-baseline:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'nextcloud/all-in-one'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.0
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Set up php
|
- name: Set up php
|
||||||
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2
|
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
|
||||||
with:
|
with:
|
||||||
php-version: 8.4
|
php-version: 8.4
|
||||||
extensions: apcu
|
extensions: apcu
|
||||||
@@ -30,7 +31,7 @@ jobs:
|
|||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
commit-message: Update psalm baseline
|
commit-message: Update psalm baseline
|
||||||
|
|||||||
@@ -2,9 +2,6 @@
|
|||||||
#
|
#
|
||||||
# https://github.com/nextcloud/.github
|
# https://github.com/nextcloud/.github
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||||
#
|
|
||||||
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
name: Static analysis
|
name: Static analysis
|
||||||
|
|
||||||
@@ -22,9 +19,6 @@ concurrency:
|
|||||||
group: psalm-${{ github.head_ref || github.run_id }}
|
group: psalm-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
static-analysis:
|
static-analysis:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -32,19 +26,15 @@ jobs:
|
|||||||
name: static-psalm-analysis
|
name: static-psalm-analysis
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5 # v5.0.1
|
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Set up php
|
- name: Set up php
|
||||||
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
|
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
|
||||||
with:
|
with:
|
||||||
php-version: 8.4
|
php-version: 8.4
|
||||||
extensions: apcu
|
extensions: apcu
|
||||||
coverage: none
|
coverage: none
|
||||||
ini-file: development
|
ini-file: development
|
||||||
# Temporary workaround for missing pcntl_* in PHP 8.3
|
|
||||||
ini-values: disable_functions=
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
name: Check Shell
|
name: Check Shell
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.0
|
- uses: actions/checkout@v4
|
||||||
- name: Run Shellcheck
|
- name: Run Shellcheck
|
||||||
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # v2.0.0
|
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # v2.0.0
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -9,8 +9,9 @@ jobs:
|
|||||||
talk-update:
|
talk-update:
|
||||||
name: update talk
|
name: update talk
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'nextcloud/all-in-one'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.0
|
- uses: actions/checkout@v4
|
||||||
- name: Run talk-container-update
|
- name: Run talk-container-update
|
||||||
run: |
|
run: |
|
||||||
# Recording
|
# Recording
|
||||||
@@ -45,7 +46,7 @@ jobs:
|
|||||||
sed -i "s|^ARG JANUS_VERSION=.*$|ARG JANUS_VERSION=$janus_version|" ./Containers/talk/Dockerfile
|
sed -i "s|^ARG JANUS_VERSION=.*$|ARG JANUS_VERSION=$janus_version|" ./Containers/talk/Dockerfile
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
|
||||||
with:
|
with:
|
||||||
commit-message: talk-update automated change
|
commit-message: talk-update automated change
|
||||||
signoff: true
|
signoff: true
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6.0.0
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
- name: Set up php ${{ matrix.php-versions }}
|
||||||
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2
|
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
|
||||||
with:
|
with:
|
||||||
php-version: 8.4
|
php-version: 8.4
|
||||||
extensions: apcu
|
extensions: apcu
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ jobs:
|
|||||||
name: update copyright
|
name: update copyright
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.0
|
- uses: actions/checkout@v4
|
||||||
|
|||||||
@@ -9,9 +9,10 @@ jobs:
|
|||||||
update-helm:
|
update-helm:
|
||||||
name: update helm chart
|
name: update helm chart
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'nextcloud/all-in-one'
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v6.0.0
|
uses: actions/checkout@v4
|
||||||
- name: update helm chart
|
- name: update helm chart
|
||||||
run: |
|
run: |
|
||||||
set -x
|
set -x
|
||||||
@@ -23,7 +24,7 @@ jobs:
|
|||||||
sudo bash nextcloud-aio-helm-chart/update-helm.sh "$DOCKER_TAG"
|
sudo bash nextcloud-aio-helm-chart/update-helm.sh "$DOCKER_TAG"
|
||||||
fi
|
fi
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
|
||||||
with:
|
with:
|
||||||
commit-message: Helm Chart updates
|
commit-message: Helm Chart updates
|
||||||
signoff: true
|
signoff: true
|
||||||
|
|||||||
@@ -9,14 +9,15 @@ jobs:
|
|||||||
update-yaml:
|
update-yaml:
|
||||||
name: update yaml files
|
name: update yaml files
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'nextcloud/all-in-one'
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v6.0.0
|
uses: actions/checkout@v4
|
||||||
- name: update yaml files
|
- name: update yaml files
|
||||||
run: |
|
run: |
|
||||||
sudo bash manual-install/update-yaml.sh
|
sudo bash manual-install/update-yaml.sh
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
|
||||||
with:
|
with:
|
||||||
commit-message: Yaml updates
|
commit-message: Yaml updates
|
||||||
signoff: true
|
signoff: true
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
name: watchtower-update
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: '00 12 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
watchtower-update:
|
|
||||||
name: update watchtower
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6.0.0
|
|
||||||
- name: Run watchtower-container-update
|
|
||||||
run: |
|
|
||||||
# Watchtower
|
|
||||||
watchtower_version="$(
|
|
||||||
git ls-remote https://github.com/nicholas-fedor/watchtower v* \
|
|
||||||
| cut -d/ -f3 \
|
|
||||||
| sort -V \
|
|
||||||
| grep -E "^v[0-9\.]+$" \
|
|
||||||
| tail -1
|
|
||||||
)"
|
|
||||||
watchtower_commit_hash="$(git ls-remote https://github.com/nicholas-fedor/watchtower $watchtower_version | sed 's/refs.*//')"
|
|
||||||
sed -i "s|^ENV WATCHTOWER_COMMIT_HASH.*$|ENV WATCHTOWER_COMMIT_HASH=$watchtower_commit_hash|" ./Containers/watchtower/Dockerfile
|
|
||||||
sed -i "s|\$WATCHTOWER_COMMIT_HASH.*$|\$WATCHTOWER_COMMIT_HASH # $watchtower_version|" ./Containers/watchtower/Dockerfile
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
|
||||||
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7
|
|
||||||
with:
|
|
||||||
commit-message: watchtower-update automated change
|
|
||||||
signoff: true
|
|
||||||
title: watchtower container update
|
|
||||||
body: Automated watchtower container update
|
|
||||||
labels: dependencies, 3. to review
|
|
||||||
milestone: next
|
|
||||||
branch: watchtower-container-update
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM alpine:3.22.2
|
FROM alpine:3.22.1
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk upgrade --no-cache -a
|
apk upgrade --no-cache -a
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
https://{$ADDITIONAL_TRUSTED_DOMAIN}:443,
|
https://{$ADDITIONAL_TRUSTED_DOMAIN}:443,
|
||||||
http://{$APACHE_HOST}:23973, # For Collabora callback and WOPI requests, see containers.json
|
|
||||||
{$PROTOCOL}://{$NC_DOMAIN}:{$APACHE_PORT} {
|
{$PROTOCOL}://{$NC_DOMAIN}:{$APACHE_PORT} {
|
||||||
header -Server
|
header -Server
|
||||||
header -X-Powered-By
|
header -X-Powered-By
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM caddy:2.10.2-alpine AS caddy
|
FROM caddy:2.10.0-alpine AS caddy
|
||||||
|
|
||||||
# From https://github.com/docker-library/httpd/blob/master/2.4/alpine/Dockerfile
|
# From https://github.com/docker-library/httpd/blob/master/2.4/alpine/Dockerfile
|
||||||
FROM httpd:2.4.65-alpine3.22
|
FROM httpd:2.4.65-alpine3.22
|
||||||
|
|||||||
@@ -46,9 +46,7 @@ echo "$CADDYFILE" > /tmp/Caddyfile
|
|||||||
|
|
||||||
# Change the trusted_proxies in case of reverse proxies
|
# Change the trusted_proxies in case of reverse proxies
|
||||||
if [ "$APACHE_PORT" != '443' ]; then
|
if [ "$APACHE_PORT" != '443' ]; then
|
||||||
# Here the 100.64.0.0/10 range gets added which is the CGNAT range used by Tailscale nodes
|
CADDYFILE="$(sed 's|# trusted_proxies placeholder|trusted_proxies static private_ranges|' /tmp/Caddyfile)"
|
||||||
# See https://github.com/nextcloud/all-in-one/pull/6703 for reference
|
|
||||||
CADDYFILE="$(sed 's|# trusted_proxies placeholder|trusted_proxies static private_ranges 100.64.0.0/10|' /tmp/Caddyfile)"
|
|
||||||
else
|
else
|
||||||
CADDYFILE="$(sed "s|# trusted_proxies placeholder|trusted_proxies static $IPv4_ADDRESS|" /tmp/Caddyfile)"
|
CADDYFILE="$(sed "s|# trusted_proxies placeholder|trusted_proxies static $IPv4_ADDRESS|" /tmp/Caddyfile)"
|
||||||
fi
|
fi
|
||||||
@@ -66,11 +64,6 @@ caddy fmt --overwrite /tmp/Caddyfile
|
|||||||
# Add caddy path
|
# Add caddy path
|
||||||
mkdir -p /mnt/data/caddy/
|
mkdir -p /mnt/data/caddy/
|
||||||
|
|
||||||
# Fix caddy startup
|
|
||||||
if [ -d "/mnt/data/caddy/locks" ]; then
|
|
||||||
rm -rf /mnt/data/caddy/locks/*
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Fix apache startup
|
# Fix apache startup
|
||||||
rm -f /usr/local/apache2/logs/httpd.pid
|
rm -f /usr/local/apache2/logs/httpd.pid
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM alpine:3.22.2
|
FROM alpine:3.22.1
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
|
|||||||
@@ -138,6 +138,11 @@ if [ "$BORG_MODE" = backup ]; then
|
|||||||
NEW_REPOSITORY=1
|
NEW_REPOSITORY=1
|
||||||
if ! borg init --debug --encryption=repokey-blake2; then
|
if ! borg init --debug --encryption=repokey-blake2; then
|
||||||
echo "Could not initialize borg repository."
|
echo "Could not initialize borg repository."
|
||||||
|
if [ -z "$BORG_REMOTE_REPO" ]; then
|
||||||
|
# Originally we checked for presence of the config file instead of calling `borg info`. Likely `borg info`
|
||||||
|
# will error on a partially initialized repo, so this line is probably no longer necessary
|
||||||
|
rm -f "$BORG_BACKUP_DIRECTORY/config"
|
||||||
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -194,7 +199,7 @@ if [ "$BORG_MODE" = backup ]; then
|
|||||||
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.noaiobackup" ]; then
|
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.noaiobackup" ]; then
|
||||||
BORG_EXCLUDE+=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/")
|
BORG_EXCLUDE+=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/")
|
||||||
BORG_INCLUDE+=(--pattern="+/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.noaiobackup")
|
BORG_INCLUDE+=(--pattern="+/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.noaiobackup")
|
||||||
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextcloud's data directory. Excluding the data directory from backup!"
|
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextclouds data directory. Excluding the data directory from backup!"
|
||||||
# Exclude preview folder if .noaiobackup file was found
|
# Exclude preview folder if .noaiobackup file was found
|
||||||
elif [ -f /nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/.noaiobackup ]; then
|
elif [ -f /nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/.noaiobackup ]; then
|
||||||
BORG_EXCLUDE+=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/")
|
BORG_EXCLUDE+=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/")
|
||||||
@@ -339,7 +344,7 @@ if [ "$BORG_MODE" = restore ]; then
|
|||||||
ADDITIONAL_RSYNC_EXCLUDES=(--exclude "nextcloud_aio_nextcloud_data/**")
|
ADDITIONAL_RSYNC_EXCLUDES=(--exclude "nextcloud_aio_nextcloud_data/**")
|
||||||
ADDITIONAL_BORG_EXCLUDES=(--exclude "sh:nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/**")
|
ADDITIONAL_BORG_EXCLUDES=(--exclude "sh:nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/**")
|
||||||
ADDITIONAL_FIND_EXCLUDES=(-o -regex 'nextcloud_aio_volumes/nextcloud_aio_nextcloud_data\(/.*\)?')
|
ADDITIONAL_FIND_EXCLUDES=(-o -regex 'nextcloud_aio_volumes/nextcloud_aio_nextcloud_data\(/.*\)?')
|
||||||
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextcloud's data directory. Excluding the data directory from restore!"
|
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextclouds data directory. Excluding the data directory from restore!"
|
||||||
echo "You might run into problems due to this afterwards as potentially this makes the directory go out of sync with the database."
|
echo "You might run into problems due to this afterwards as potentially this makes the directory go out of sync with the database."
|
||||||
echo "You might be able to fix this by running 'occ files:scan --all' and 'occ maintenance:repair' and 'occ files:scan-app-data' after the restore."
|
echo "You might be able to fix this by running 'occ files:scan --all' and 'occ maintenance:repair' and 'occ files:scan-app-data' after the restore."
|
||||||
echo "See https://github.com/nextcloud/all-in-one#how-to-run-occ-commands"
|
echo "See https://github.com/nextcloud/all-in-one#how-to-run-occ-commands"
|
||||||
|
|||||||
@@ -1,34 +1,24 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM alpine:3.22.2
|
FROM alpine:3.22.1
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk upgrade --no-cache -a; \
|
apk upgrade --no-cache -a; \
|
||||||
apk add --no-cache tzdata clamav clamav-milter supervisor bash; \
|
apk add --no-cache tzdata clamav supervisor bash; \
|
||||||
mkdir -p /tmp /var/lib/clamav /run/clamav /var/log/supervisord /var/run/supervisord; \
|
mkdir -p /run/clamav /var/log/supervisord /var/run/supervisord; \
|
||||||
chmod 777 -R /tmp /run/clamav /var/log/clamav /var/log/supervisord /var/run/supervisord; \
|
chmod 777 -R /run/clamav /var/log/clamav /var/log/supervisord /var/run/supervisord; \
|
||||||
chown -R 100:100 /var/lib/clamav; \
|
|
||||||
sed -i "s|#\?MaxDirectoryRecursion.*|MaxDirectoryRecursion 30|g" /etc/clamav/clamd.conf; \
|
sed -i "s|#\?MaxDirectoryRecursion.*|MaxDirectoryRecursion 30|g" /etc/clamav/clamd.conf; \
|
||||||
sed -i "s|#\?MaxScanSize.*|MaxScanSize 2000M|g" /etc/clamav/clamd.conf; \
|
sed -i "s|#\?MaxFileSize.*|MaxFileSize 2G|g" /etc/clamav/clamd.conf; \
|
||||||
sed -i "s|#\?MaxFileSize.*|MaxFileSize 2000M|g" /etc/clamav/clamd.conf; \
|
sed -i "s|#\?PCREMaxFileSize.*|PCREMaxFileSize aio-placeholder|g" /etc/clamav/clamd.conf; \
|
||||||
sed -i "s|#\?PCREMaxFileSize.*|PCREMaxFileSize 2000M|g" /etc/clamav/clamd.conf; \
|
sed -i "s|#\?StreamMaxLength.*|StreamMaxLength aio-placeholder|g" /etc/clamav/clamd.conf; \
|
||||||
# StreamMaxLength must be synced with av_stream_max_length inside the Nextcloud files_antivirus plugin
|
|
||||||
sed -i "s|#\?StreamMaxLength.*|StreamMaxLength 2000M|g" /etc/clamav/clamd.conf; \
|
|
||||||
sed -i "s|#\?TCPSocket|TCPSocket|g" /etc/clamav/clamd.conf; \
|
sed -i "s|#\?TCPSocket|TCPSocket|g" /etc/clamav/clamd.conf; \
|
||||||
sed -i "s|^LocalSocket .*|LocalSocket /tmp/clamd.sock|g" /etc/clamav/clamd.conf; \
|
sed -i "s|^LocalSocket .*|LocalSocket /tmp/clamd.sock|g" /etc/clamav/clamd.conf; \
|
||||||
sed -i "s|Example| |g" /etc/clamav/clamav-milter.conf; \
|
freshclam --foreground --stdout
|
||||||
sed -i "s|#\?MilterSocket inet:7357|MilterSocket inet:7357|g" /etc/clamav/clamav-milter.conf; \
|
|
||||||
sed -i "s|#\?ClamdSocket unix:/run/clamav/clamd.sock|ClamdSocket unix:/tmp/clamd.sock|g" /etc/clamav/clamav-milter.conf; \
|
|
||||||
sed -i "s|#\?OnInfected Quarantine|OnInfected Reject|g" /etc/clamav/clamav-milter.conf; \
|
|
||||||
sed -i "s|#\?AddHeader Replace|AddHeader Add|g" /etc/clamav/clamav-milter.conf; \
|
|
||||||
sed -i "s|#\?Foreground yes|Foreground yes|g" /etc/clamav/clamav-milter.conf
|
|
||||||
|
|
||||||
COPY --chmod=775 start.sh /start.sh
|
COPY --chmod=775 start.sh /start.sh
|
||||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||||
COPY --chmod=664 supervisord.conf /supervisord.conf
|
COPY --chmod=664 supervisord.conf /supervisord.conf
|
||||||
|
|
||||||
USER 100
|
USER 100
|
||||||
RUN set -ex; \
|
|
||||||
freshclam --foreground --stdout
|
|
||||||
VOLUME /var/lib/clamav
|
VOLUME /var/lib/clamav
|
||||||
ENTRYPOINT ["/start.sh"]
|
ENTRYPOINT ["/start.sh"]
|
||||||
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
|
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
sed "s|aio-placeholder|$MAX_SIZE|" /etc/clamav/clamd.conf > /tmp/clamd.conf
|
||||||
|
|
||||||
# Print out clamav version for compliance reasons
|
# Print out clamav version for compliance reasons
|
||||||
clamscan --version
|
clamscan --version
|
||||||
|
|
||||||
|
|||||||
@@ -13,18 +13,11 @@ stdout_logfile=/dev/stdout
|
|||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
stderr_logfile=/dev/stderr
|
stderr_logfile=/dev/stderr
|
||||||
stderr_logfile_maxbytes=0
|
stderr_logfile_maxbytes=0
|
||||||
command=freshclam --foreground --stdout --daemon --daemon-notify=/etc/clamav/clamd.conf
|
command=freshclam --foreground --stdout --daemon --daemon-notify=/tmp/clamd.conf
|
||||||
|
|
||||||
[program:clamd]
|
[program:clamd]
|
||||||
stdout_logfile=/dev/stdout
|
stdout_logfile=/dev/stdout
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
stderr_logfile=/dev/stderr
|
stderr_logfile=/dev/stderr
|
||||||
stderr_logfile_maxbytes=0
|
stderr_logfile_maxbytes=0
|
||||||
command=clamd --foreground --config-file=/etc/clamav/clamd.conf
|
command=clamd --foreground --config-file=/tmp/clamd.conf
|
||||||
|
|
||||||
[program:milter]
|
|
||||||
stdout_logfile=/dev/stdout
|
|
||||||
stdout_logfile_maxbytes=0
|
|
||||||
stderr_logfile=/dev/stderr
|
|
||||||
stderr_logfile_maxbytes=0
|
|
||||||
command=clamav-milter --config-file=/etc/clamav/clamav-milter.conf
|
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
|
||||||
# From https://gitlab.collabora.com/collabora-online/docker
|
|
||||||
# hadolint ignore=DL3007
|
|
||||||
FROM registry.gitlab.collabora.com/collabora-online/docker:latest
|
|
||||||
|
|
||||||
USER root
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
|
||||||
|
|
||||||
USER 1001
|
|
||||||
|
|
||||||
HEALTHCHECK --start-period=60s --retries=9 CMD /healthcheck.sh
|
|
||||||
LABEL com.centurylinklabs.watchtower.enable="false" \
|
|
||||||
org.label-schema.vendor="Nextcloud"
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Unfortunately, no curl and no nc is installed in the container
|
|
||||||
# and packages can also not be added as the package list is broken.
|
|
||||||
# So always exiting 0 for now.
|
|
||||||
# nc http://127.0.0.1:9980 || exit 1
|
|
||||||
exit 0
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/blob/master/docker/from-packages/Dockerfile
|
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/blob/master/docker/from-packages/Dockerfile
|
||||||
FROM collabora/code:25.04.7.1.1
|
FROM collabora/code:25.04.4.2.1
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM haproxy:3.2.9-alpine
|
FROM haproxy:3.2.4-alpine
|
||||||
|
|
||||||
# hadolint ignore=DL3002
|
# hadolint ignore=DL3002
|
||||||
USER root
|
USER root
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM alpine:3.22.2
|
FROM alpine:3.22.1
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk upgrade --no-cache -a; \
|
apk upgrade --no-cache -a; \
|
||||||
apk add --no-cache bash lighttpd netcat-openbsd; \
|
apk add --no-cache bash lighttpd netcat-openbsd; \
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
|
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
|
||||||
FROM elasticsearch:8.19.7
|
FROM elasticsearch:8.19.2
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM golang:1.25.4-alpine3.22 AS go
|
FROM golang:1.25.0-alpine3.22 AS go
|
||||||
|
|
||||||
ENV IMAGINARY_HASH=6a274b488759a896aff02f52afee6e50b5e3a3ee
|
ENV IMAGINARY_HASH=1d4e251cfcd58ea66f8361f8721d7b8cc85002a3
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk upgrade --no-cache -a; \
|
apk upgrade --no-cache -a; \
|
||||||
@@ -14,7 +14,7 @@ RUN set -ex; \
|
|||||||
build-base; \
|
build-base; \
|
||||||
go install github.com/h2non/imaginary@"$IMAGINARY_HASH";
|
go install github.com/h2non/imaginary@"$IMAGINARY_HASH";
|
||||||
|
|
||||||
FROM alpine:3.22.2
|
FROM alpine:3.22.1
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk upgrade --no-cache -a; \
|
apk upgrade --no-cache -a; \
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
|
|||||||
@@ -1,30 +1,23 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
# Docker CLI is a requirement
|
# Docker CLI is a requirement
|
||||||
FROM docker:29.0.2-cli AS docker
|
FROM docker:28.3.3-cli AS docker
|
||||||
|
|
||||||
# Caddy is a requirement
|
# Caddy is a requirement
|
||||||
FROM caddy:2.10.2-alpine AS caddy
|
FROM caddy:2.10.0-alpine AS caddy
|
||||||
|
|
||||||
# From https://github.com/docker-library/php/blob/master/8.4/alpine3.22/fpm/Dockerfile
|
# From https://github.com/docker-library/php/blob/master/8.4/alpine3.22/fpm/Dockerfile
|
||||||
FROM php:8.4.15-fpm-alpine3.22
|
FROM php:8.4.11-fpm-alpine3.22
|
||||||
|
|
||||||
|
ARG AIO_GIT_URL="https://github.com/nextcloud-releases/all-in-one.git"
|
||||||
|
ARG AIO_GIT_BRANCH="main"
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
EXPOSE 8443
|
EXPOSE 8443
|
||||||
|
|
||||||
# Overwrite home variable for subservices
|
|
||||||
ENV HOME=/var/www
|
|
||||||
|
|
||||||
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
|
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
|
||||||
COPY --from=docker /usr/local/bin/docker /usr/local/bin/docker
|
COPY --from=docker /usr/local/bin/docker /usr/local/bin/docker
|
||||||
|
|
||||||
COPY community-containers /var/www/docker-aio/community-containers
|
|
||||||
COPY php /var/www/docker-aio/php
|
|
||||||
COPY --chmod=775 Containers/mastercontainer/*.sh /
|
|
||||||
COPY --chmod=664 Containers/mastercontainer/Caddyfile /Caddyfile
|
|
||||||
COPY --chmod=664 Containers/mastercontainer/supervisord.conf /supervisord.conf
|
|
||||||
COPY Containers/mastercontainer/mastercontainer.conf /etc/apache2/sites-available/mastercontainer.conf
|
|
||||||
|
|
||||||
WORKDIR /var/www/docker-aio
|
WORKDIR /var/www/docker-aio
|
||||||
|
|
||||||
# hadolint ignore=SC2086,DL3047,DL3003,DL3004
|
# hadolint ignore=SC2086,DL3047,DL3003,DL3004
|
||||||
@@ -52,7 +45,7 @@ RUN set -ex; \
|
|||||||
apk add --no-cache --virtual .build-deps \
|
apk add --no-cache --virtual .build-deps \
|
||||||
autoconf \
|
autoconf \
|
||||||
build-base; \
|
build-base; \
|
||||||
pecl install APCu-5.1.27; \
|
pecl install APCu-5.1.26; \
|
||||||
docker-php-ext-enable apcu; \
|
docker-php-ext-enable apcu; \
|
||||||
rm -r /tmp/pear; \
|
rm -r /tmp/pear; \
|
||||||
runDeps="$( \
|
runDeps="$( \
|
||||||
@@ -74,11 +67,13 @@ RUN set -ex; \
|
|||||||
wget https://getcomposer.org/installer -O - | php -- --install-dir=/usr/local/bin --filename=composer; \
|
wget https://getcomposer.org/installer -O - | php -- --install-dir=/usr/local/bin --filename=composer; \
|
||||||
chmod +x /usr/local/bin/composer; \
|
chmod +x /usr/local/bin/composer; \
|
||||||
cd /var/www/docker-aio; \
|
cd /var/www/docker-aio; \
|
||||||
|
git clone "$AIO_GIT_URL" --depth 1 --single-branch --branch "$AIO_GIT_BRANCH" .; \
|
||||||
|
find ./ -maxdepth 1 -mindepth 1 -not -path ./php -not -path ./community-containers -exec rm -r {} \; ; \
|
||||||
rm -r ./php/tests; \
|
rm -r ./php/tests; \
|
||||||
chown www-data:www-data -R /var/www/docker-aio; \
|
chown www-data:www-data -R /var/www/docker-aio; \
|
||||||
cd php; \
|
cd php; \
|
||||||
sudo -E -u www-data composer install --no-dev; \
|
sudo -u www-data composer install --no-dev; \
|
||||||
sudo -E -u www-data composer clear-cache; \
|
sudo -u www-data composer clear-cache; \
|
||||||
cd ..; \
|
cd ..; \
|
||||||
rm -f /usr/local/bin/composer; \
|
rm -f /usr/local/bin/composer; \
|
||||||
chmod -R 770 /var/www/docker-aio; \
|
chmod -R 770 /var/www/docker-aio; \
|
||||||
@@ -125,6 +120,11 @@ RUN set -ex; \
|
|||||||
mkdir /var/log/supervisord; \
|
mkdir /var/log/supervisord; \
|
||||||
mkdir /var/run/supervisord;
|
mkdir /var/run/supervisord;
|
||||||
|
|
||||||
|
COPY --chmod=775 *.sh /
|
||||||
|
COPY --chmod=664 Caddyfile /Caddyfile
|
||||||
|
COPY --chmod=664 supervisord.conf /supervisord.conf
|
||||||
|
COPY mastercontainer.conf /etc/apache2/sites-available/mastercontainer.conf
|
||||||
|
|
||||||
LABEL org.label-schema.vendor="Nextcloud"
|
LABEL org.label-schema.vendor="Nextcloud"
|
||||||
|
|
||||||
# hadolint ignore=DL3002
|
# hadolint ignore=DL3002
|
||||||
|
|||||||
@@ -1,69 +0,0 @@
|
|||||||
# Nextcloud All-in-One `mastercontainer`
|
|
||||||
|
|
||||||
This folder contains the OCI/Docker container definition, along with associated resources and
|
|
||||||
configuration files, for building the `mastercontainer` as part of the Nextcloud All-in-One
|
|
||||||
project. This container hosts [the Nextcloud AIO interface](
|
|
||||||
https://github.com/nextcloud/all-in-one/tree/main/php)[^app], and a dedicated PHP environment
|
|
||||||
for it (which is completely independent of the Nextcloud Server).
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
The mastercontainer acts as the central orchestration service for the deployment and management
|
|
||||||
of all other containers in the Nextcloud All-in-One stack. It hosts:
|
|
||||||
|
|
||||||
- A dedicated PHP SAPI/backend (php-fpm) for AIO itself (not Nextcloud Server)
|
|
||||||
- An Apache service for accessing the AIO interface via a self-signed HTTPS VirtualHost on 8080/tcp
|
|
||||||
- A Caddy reverse proxy service enabling HTTPS access to the AIO frontend on port 8443/tcp.
|
|
||||||
- Caddy will automatically issue a Let's Encrypt issued certificate if port 80 and 8443
|
|
||||||
is open/forwarded and a domain pointer is in place; then, simply open the Nextcloud AIO interface using the
|
|
||||||
domain (`https://your-domain-that-points-to-this-server.tld:8443`). The Let's Encrypt certificate request will
|
|
||||||
use an [ACME HTTP-01](https://letsencrypt.org/docs/challenge-types/#http-01-challenge) challenge.
|
|
||||||
- Miscellaneous support services specific to AIO (backup management, health checks, etc.)
|
|
||||||
|
|
||||||
## Key Responsibilities
|
|
||||||
|
|
||||||
- Orchestrates the deployment and lifecycle of all Nextcloud service containers
|
|
||||||
- Handles initial setup and container configuration
|
|
||||||
- Coordinates image updates
|
|
||||||
- Monitors general system health
|
|
||||||
|
|
||||||
It triggers the initial installation and ensures the smooth operation of the Nextcloud
|
|
||||||
All-in-One stack.
|
|
||||||
|
|
||||||
## Contents
|
|
||||||
|
|
||||||
- **Dockerfile**: Instructions for building the mastercontainer image.
|
|
||||||
- **Entrypoint script**: The `start.sh` script is used for container initialization and runtime
|
|
||||||
configuration before starting supervisord.
|
|
||||||
- [**Nextcloud All-in-One Controller App**](https://github.com/nextcloud/all-in-one/tree/main/php): The
|
|
||||||
core AIO orchestrator that handles configuration and settings for the containers.
|
|
||||||
- **Supervisor**: The `supervisord.conf` file defines the long-running services hosted within
|
|
||||||
the container (php-fpm, cron, etc.)
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
This container should be used as the trigger image when deploying the Nextcloud All-in-One
|
|
||||||
stack in a Docker or other OCI-compliant container environment. For detailed deployment
|
|
||||||
instructions, refer to the [project documentation](
|
|
||||||
https://github.com/nextcloud/all-in-one).
|
|
||||||
|
|
||||||
## Related Resources
|
|
||||||
|
|
||||||
- [Main Repository](https://github.com/nextcloud/all-in-one)
|
|
||||||
- [Documentation](https://github.com/nextcloud/all-in-one#readme)
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Contributions are welcome! Please follow the Nextcloud project's guidelines and submit pull
|
|
||||||
requests or issues via the main repository.
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
This folder and its contents are licensed under the
|
|
||||||
[GNU AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html), in line with the rest of Nextcloud
|
|
||||||
All-in-One.
|
|
||||||
|
|
||||||
[^app]: The Nextcloud All-in-One interface allows users to install, configure, and
|
|
||||||
manage their Nextcloud instance and related containers via a secure web interface and API.
|
|
||||||
It automates and simplifies complex tasks such as container orchestration, backups, updates,
|
|
||||||
and service management for users deploying Nextcloud in Docker environments.
|
|
||||||
@@ -45,29 +45,29 @@ while true; do
|
|||||||
|
|
||||||
# Check for updates and send notification if yes on saturdays
|
# Check for updates and send notification if yes on saturdays
|
||||||
if [ "$(date +%u)" = 6 ]; then
|
if [ "$(date +%u)" = 6 ]; then
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/UpdateNotification.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/UpdateNotification.php
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if AIO is outdated
|
# Check if AIO is outdated
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/OutdatedNotification.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/OutdatedNotification.php
|
||||||
|
|
||||||
# Remove sessions older than 24h
|
# Remove sessions older than 24h
|
||||||
find "/mnt/docker-aio-config/session/" -mindepth 1 -mmin +1440 -delete
|
find "/mnt/docker-aio-config/session/" -mindepth 1 -mmin +1440 -delete
|
||||||
|
|
||||||
# Remove nextcloud-aio-domaincheck container
|
# Remove nextcloud-aio-domaincheck container
|
||||||
if sudo -E -u www-data docker ps --format "{{.Names}}" --filter "status=exited" | grep -q "^nextcloud-aio-domaincheck$"; then
|
if sudo -u www-data docker ps --format "{{.Names}}" --filter "status=exited" | grep -q "^nextcloud-aio-domaincheck$"; then
|
||||||
sudo -E -u www-data docker container remove nextcloud-aio-domaincheck
|
sudo -u www-data docker container remove nextcloud-aio-domaincheck
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove dangling images
|
# Remove dangling images
|
||||||
sudo -E -u www-data docker image prune --filter "label=org.label-schema.vendor=Nextcloud" --force
|
sudo -u www-data docker image prune --force
|
||||||
|
|
||||||
# Check for available free space
|
# Check for available free space
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/CheckFreeDiskSpace.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CheckFreeDiskSpace.php
|
||||||
|
|
||||||
# Remove mastercontainer from default bridge network
|
# Remove mastercontainer from default bridge network
|
||||||
if sudo -E -u www-data docker inspect nextcloud-aio-mastercontainer --format "{{.NetworkSettings.Networks}}" | grep -q "bridge"; then
|
if sudo -u www-data docker inspect nextcloud-aio-mastercontainer --format "{{.NetworkSettings.Networks}}" | grep -q "bridge"; then
|
||||||
sudo -E -u www-data docker network disconnect bridge nextcloud-aio-mastercontainer
|
sudo -u www-data docker network disconnect bridge nextcloud-aio-mastercontainer
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Wait 60s so that the whole loop will not be executed again
|
# Wait 60s so that the whole loop will not be executed again
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ fi
|
|||||||
if [ "$LOCK_FILE_PRESENT" = 0 ] || ! [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
|
if [ "$LOCK_FILE_PRESENT" = 0 ] || ! [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
|
||||||
find "/mnt/docker-aio-config/session/" -mindepth 1 -delete
|
find "/mnt/docker-aio-config/session/" -mindepth 1 -delete
|
||||||
fi
|
fi
|
||||||
sudo -E -u www-data touch "/mnt/docker-aio-config/data/daily_backup_running"
|
sudo -u www-data touch "/mnt/docker-aio-config/data/daily_backup_running"
|
||||||
|
|
||||||
# Check if apache is running/stopped, watchtower is stopped and backupcontainer is stopped
|
# Check if apache is running/stopped, watchtower is stopped and backupcontainer is stopped
|
||||||
APACHE_PORT="$(docker inspect nextcloud-aio-apache --format "{{.Config.Env}}" | grep -o 'APACHE_PORT=[0-9]\+' | grep -o '[0-9]\+' | head -1)"
|
APACHE_PORT="$(docker inspect nextcloud-aio-apache --format "{{.Config.Env}}" | grep -o 'APACHE_PORT=[0-9]\+' | grep -o '[0-9]\+' | head -1)"
|
||||||
@@ -50,7 +50,7 @@ done
|
|||||||
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
|
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
|
||||||
echo "Starting mastercontainer update..."
|
echo "Starting mastercontainer update..."
|
||||||
echo "(The script might get exited due to that. In order to update all the other containers correctly, you need to run this script with the same settings a second time.)"
|
echo "(The script might get exited due to that. In order to update all the other containers correctly, you need to run this script with the same settings a second time.)"
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/UpdateMastercontainer.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/UpdateMastercontainer.php
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Wait for watchtower to stop
|
# Wait for watchtower to stop
|
||||||
@@ -67,20 +67,20 @@ fi
|
|||||||
# Update container images to reduce downtime later on
|
# Update container images to reduce downtime later on
|
||||||
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
|
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
|
||||||
echo "Updating container images..."
|
echo "Updating container images..."
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/PullContainerImages.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/PullContainerImages.php
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Stop containers if required
|
# Stop containers if required
|
||||||
# shellcheck disable=SC2235
|
# shellcheck disable=SC2235
|
||||||
if [ "$CHECK_BACKUP" != 1 ] && ([ "$DAILY_BACKUP" != 1 ] || [ "$STOP_CONTAINERS" = 1 ]); then
|
if [ "$CHECK_BACKUP" != 1 ] && ([ "$DAILY_BACKUP" != 1 ] || [ "$STOP_CONTAINERS" = 1 ]); then
|
||||||
echo "Stopping containers..."
|
echo "Stopping containers..."
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/StopContainers.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/StopContainers.php
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Execute the backup itself and some related tasks (also stops the containers)
|
# Execute the backup itself and some related tasks (also stops the containers)
|
||||||
if [ "$DAILY_BACKUP" = 1 ]; then
|
if [ "$DAILY_BACKUP" = 1 ]; then
|
||||||
echo "Creating daily backup..."
|
echo "Creating daily backup..."
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/CreateBackup.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CreateBackup.php
|
||||||
if ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-borgbackup$"; then
|
if ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-borgbackup$"; then
|
||||||
echo "Something seems to be wrong: the borg container should be started at this step."
|
echo "Something seems to be wrong: the borg container should be started at this step."
|
||||||
fi
|
fi
|
||||||
@@ -93,17 +93,17 @@ fi
|
|||||||
# Execute backup check
|
# Execute backup check
|
||||||
if [ "$CHECK_BACKUP" = 1 ]; then
|
if [ "$CHECK_BACKUP" = 1 ]; then
|
||||||
echo "Starting backup check..."
|
echo "Starting backup check..."
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/CheckBackup.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CheckBackup.php
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Start and/or update containers
|
# Start and/or update containers
|
||||||
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
|
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
|
||||||
echo "Starting and updating containers..."
|
echo "Starting and updating containers..."
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/StartAndUpdateContainers.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/StartAndUpdateContainers.php
|
||||||
else
|
else
|
||||||
if [ "$START_CONTAINERS" = 1 ]; then
|
if [ "$START_CONTAINERS" = 1 ]; then
|
||||||
echo "Starting containers without updating them..."
|
echo "Starting containers without updating them..."
|
||||||
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/StartContainers.php
|
sudo -u www-data php /var/www/docker-aio/php/src/Cron/StartContainers.php
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Listen 127.0.0.1:8000
|
Listen 8000
|
||||||
Listen 8080 https
|
Listen 8080
|
||||||
|
|
||||||
# Deny access to .ht files
|
# Deny access to .ht files
|
||||||
<Files ".ht*">
|
<Files ".ht*">
|
||||||
@@ -7,8 +7,8 @@ Listen 8080 https
|
|||||||
</Files>
|
</Files>
|
||||||
|
|
||||||
# Http host
|
# Http host
|
||||||
<VirtualHost 127.0.0.1:8000>
|
<VirtualHost *:8000>
|
||||||
ServerName 127.0.0.1
|
ServerName localhost
|
||||||
|
|
||||||
# Add error log
|
# Add error log
|
||||||
CustomLog /proc/self/fd/1 proxy
|
CustomLog /proc/self/fd/1 proxy
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ elif mountpoint -q /var/www/docker-aio/php/containers.json; then
|
|||||||
echo "If you need to customize things, feel free to use https://github.com/nextcloud/all-in-one/tree/main/manual-install"
|
echo "If you need to customize things, feel free to use https://github.com/nextcloud/all-in-one/tree/main/manual-install"
|
||||||
echo "See https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
|
echo "See https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
|
||||||
exit 1
|
exit 1
|
||||||
elif ! sudo -E -u www-data test -r /var/run/docker.sock; then
|
elif ! sudo -u www-data test -r /var/run/docker.sock; then
|
||||||
echo "Trying to fix docker.sock permissions internally..."
|
echo "Trying to fix docker.sock permissions internally..."
|
||||||
DOCKER_GROUP=$(stat -c '%G' /var/run/docker.sock)
|
DOCKER_GROUP=$(stat -c '%G' /var/run/docker.sock)
|
||||||
DOCKER_GROUP_ID=$(stat -c '%g' /var/run/docker.sock)
|
DOCKER_GROUP_ID=$(stat -c '%g' /var/run/docker.sock)
|
||||||
@@ -69,54 +69,37 @@ elif ! sudo -E -u www-data test -r /var/run/docker.sock; then
|
|||||||
groupadd -g "$DOCKER_GROUP_ID" docker
|
groupadd -g "$DOCKER_GROUP_ID" docker
|
||||||
usermod -aG docker www-data
|
usermod -aG docker www-data
|
||||||
fi
|
fi
|
||||||
if ! sudo -E -u www-data test -r /var/run/docker.sock; then
|
if ! sudo -u www-data test -r /var/run/docker.sock; then
|
||||||
print_red "Docker socket is not readable by the www-data user. Cannot continue."
|
print_red "Docker socket is not readable by the www-data user. Cannot continue."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if api version is supported
|
# Check if api version is supported
|
||||||
if ! sudo -E -u www-data docker info &>/dev/null; then
|
if ! sudo -u www-data docker info &>/dev/null; then
|
||||||
print_red "Cannot connect to the docker socket. Cannot proceed."
|
print_red "Cannot connect to the docker socket. Cannot proceed."
|
||||||
echo "Did you maybe remove group read permissions for the docker socket? AIO needs them in order to access the docker socket."
|
echo "Did you maybe remove group read permissions for the docker socket? AIO needs them in order to access the docker socket."
|
||||||
echo "If SELinux is enabled on your host, see https://github.com/nextcloud/all-in-one#are-there-known-problems-when-selinux-is-enabled"
|
echo "If SELinux is enabled on your host, see https://github.com/nextcloud/all-in-one#are-there-known-problems-when-selinux-is-enabled"
|
||||||
echo "If you are on TrueNas SCALE, see https://github.com/nextcloud/all-in-one#can-i-run-aio-on-truenas-scale"
|
echo "If you are on TrueNas SCALE, see https://github.com/nextcloud/all-in-one#can-i-run-aio-on-truenas-scale"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Docker api version check
|
|
||||||
API_VERSION_FILE="$(find ./ -name DockerActionManager.php | head -1)"
|
API_VERSION_FILE="$(find ./ -name DockerActionManager.php | head -1)"
|
||||||
API_VERSION="$(grep -oP 'const string API_VERSION.*\;' "$API_VERSION_FILE" | grep -oP '[0-9]+.[0-9]+' | head -1)"
|
API_VERSION="$(grep -oP 'const string API_VERSION.*\;' "$API_VERSION_FILE" | grep -oP '[0-9]+.[0-9]+' | head -1)"
|
||||||
if [ -n "$DOCKER_API_VERSION" ]; then
|
|
||||||
if ! echo "$DOCKER_API_VERSION" | grep -q '^[0-9].[0-9]\+$'; then
|
|
||||||
print_red "You've set DOCKER_API_VERSION but not to an allowed value.
|
|
||||||
The string must be a version number like e.g. '1.44'.
|
|
||||||
It is set to '$DOCKER_API_VERSION'."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
print_red "DOCKER_API_VERSION was found to be set to '$DOCKER_API_VERSION'."
|
|
||||||
print_red "Please note that only v$API_VERSION is officially supported and tested by the maintainers of Nextcloud AIO."
|
|
||||||
print_red "So you run on your own risk and things might break without warning."
|
|
||||||
else
|
|
||||||
# shellcheck disable=SC2001
|
# shellcheck disable=SC2001
|
||||||
API_VERSION_NUMB="$(echo "$API_VERSION" | sed 's/\.//')"
|
API_VERSION_NUMB="$(echo "$API_VERSION" | sed 's/\.//')"
|
||||||
LOCAL_API_VERSION_NUMB="$(sudo -E -u www-data docker version | grep -i "api version" | grep -oP '[0-9]+.[0-9]+' | head -1 | sed 's/\.//')"
|
LOCAL_API_VERSION_NUMB="$(sudo -u www-data docker version | grep -i "api version" | grep -oP '[0-9]+.[0-9]+' | head -1 | sed 's/\.//')"
|
||||||
if [ -n "$LOCAL_API_VERSION_NUMB" ] && [ -n "$API_VERSION_NUMB" ]; then
|
if [ -n "$LOCAL_API_VERSION_NUMB" ] && [ -n "$API_VERSION_NUMB" ]; then
|
||||||
if ! [ "$LOCAL_API_VERSION_NUMB" -ge "$API_VERSION_NUMB" ]; then
|
if ! [ "$LOCAL_API_VERSION_NUMB" -ge "$API_VERSION_NUMB" ]; then
|
||||||
print_red "Docker API v$API_VERSION is not supported by your docker engine. Cannot proceed. Please upgrade your docker engine if you want to run Nextcloud AIO!"
|
print_red "Docker API v$API_VERSION is not supported by your docker engine. Cannot proceed. Please upgrade your docker engine if you want to run Nextcloud AIO!"
|
||||||
echo "Alternatively, set the DOCKER_API_VERSION environmental variable to a compatible version."
|
|
||||||
echo "However please note that only v$API_VERSION is officially supported and tested by the maintainers of Nextcloud AIO."
|
|
||||||
echo "See https://github.com/nextcloud/all-in-one#how-to-adjust-the-internally-used-docker-api-version"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "LOCAL_API_VERSION_NUMB or API_VERSION_NUMB are not set correctly. Cannot check if the API version is supported."
|
echo "LOCAL_API_VERSION_NUMB or API_VERSION_NUMB are not set correctly. Cannot check if the API version is supported."
|
||||||
sleep 10
|
sleep 10
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
# Check Storage drivers
|
# Check Storage drivers
|
||||||
STORAGE_DRIVER="$(sudo -E -u www-data docker info | grep "Storage Driver")"
|
STORAGE_DRIVER="$(sudo -u www-data docker info | grep "Storage Driver")"
|
||||||
# Check if vfs is used: https://github.com/nextcloud/all-in-one/discussions/1467
|
# Check if vfs is used: https://github.com/nextcloud/all-in-one/discussions/1467
|
||||||
if echo "$STORAGE_DRIVER" | grep -q vfs; then
|
if echo "$STORAGE_DRIVER" | grep -q vfs; then
|
||||||
echo "$STORAGE_DRIVER"
|
echo "$STORAGE_DRIVER"
|
||||||
@@ -127,23 +110,23 @@ elif echo "$STORAGE_DRIVER" | grep -q fuse-overlayfs; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if snap install
|
# Check if snap install
|
||||||
if sudo -E -u www-data docker info | grep "Docker Root Dir" | grep "/var/snap/docker/"; then
|
if sudo -u www-data docker info | grep "Docker Root Dir" | grep "/var/snap/docker/"; then
|
||||||
print_red "Warning: It looks like your installation uses docker installed via snap."
|
print_red "Warning: It looks like your installation uses docker installed via snap."
|
||||||
print_red "This comes with some limitations and is disrecommended by the docker maintainers."
|
print_red "This comes with some limitations and is disrecommended by the docker maintainers."
|
||||||
print_red "See for example https://github.com/nextcloud/all-in-one/discussions/4890#discussioncomment-10386752"
|
print_red "See for example https://github.com/nextcloud/all-in-one/discussions/4890#discussioncomment-10386752"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if startup command was executed correctly
|
# Check if startup command was executed correctly
|
||||||
if ! sudo -E -u www-data docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-mastercontainer$"; then
|
if ! sudo -u www-data docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-mastercontainer$"; then
|
||||||
print_red "It seems like you did not give the mastercontainer the correct name? (The 'nextcloud-aio-mastercontainer' container was not found.)
|
print_red "It seems like you did not give the mastercontainer the correct name? (The 'nextcloud-aio-mastercontainer' container was not found.)
|
||||||
Using a different name is not supported since mastercontainer updates will not work in that case!
|
Using a different name is not supported since mastercontainer updates will not work in that case!
|
||||||
If you are on docker swarm and try to run AIO, see https://github.com/nextcloud/all-in-one#can-i-run-this-with-docker-swarm"
|
If you are on docker swarm and try to run AIO, see https://github.com/nextcloud/all-in-one#can-i-run-this-with-docker-swarm"
|
||||||
exit 1
|
exit 1
|
||||||
elif ! sudo -E -u www-data docker volume ls --format "{{.Name}}" | grep -q "^nextcloud_aio_mastercontainer$"; then
|
elif ! sudo -u www-data docker volume ls --format "{{.Name}}" | grep -q "^nextcloud_aio_mastercontainer$"; then
|
||||||
print_red "It seems like you did not give the mastercontainer volume the correct name? (The 'nextcloud_aio_mastercontainer' volume was not found.)
|
print_red "It seems like you did not give the mastercontainer volume the correct name? (The 'nextcloud_aio_mastercontainer' volume was not found.)
|
||||||
Using a different name is not supported since the built-in backup solution will not work in that case!"
|
Using a different name is not supported since the built-in backup solution will not work in that case!"
|
||||||
exit 1
|
exit 1
|
||||||
elif ! sudo -E -u www-data docker inspect nextcloud-aio-mastercontainer | grep -q "nextcloud_aio_mastercontainer"; then
|
elif ! sudo -u www-data docker inspect nextcloud-aio-mastercontainer | grep -q "nextcloud_aio_mastercontainer"; then
|
||||||
print_red "It seems like you did not attach the 'nextcloud_aio_mastercontainer' volume to the mastercontainer?
|
print_red "It seems like you did not attach the 'nextcloud_aio_mastercontainer' volume to the mastercontainer?
|
||||||
This is not supported since the built-in backup solution will not work in that case!"
|
This is not supported since the built-in backup solution will not work in that case!"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -392,11 +375,6 @@ export TZ=Etc/UTC
|
|||||||
# Fix apache startup
|
# Fix apache startup
|
||||||
rm -f /var/run/apache2/httpd.pid
|
rm -f /var/run/apache2/httpd.pid
|
||||||
|
|
||||||
# Fix caddy startup
|
|
||||||
if [ -d "/mnt/docker-aio-config/caddy/locks" ]; then
|
|
||||||
rm -rf /mnt/docker-aio-config/caddy/locks/*
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Fix the Caddyfile format
|
# Fix the Caddyfile format
|
||||||
caddy fmt --overwrite /Caddyfile
|
caddy fmt --overwrite /Caddyfile
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM php:8.3.28-fpm-alpine3.22
|
FROM php:8.3.24-fpm-alpine3.22
|
||||||
|
|
||||||
ENV PHP_MEMORY_LIMIT=512M
|
ENV PHP_MEMORY_LIMIT=512M
|
||||||
ENV PHP_UPLOAD_LIMIT=16G
|
ENV PHP_UPLOAD_LIMIT=16G
|
||||||
@@ -8,20 +8,16 @@ ENV SOURCE_LOCATION=/usr/src/nextcloud
|
|||||||
ENV REDIS_DB_INDEX=0
|
ENV REDIS_DB_INDEX=0
|
||||||
|
|
||||||
# AIO settings start # Do not remove or change this line!
|
# AIO settings start # Do not remove or change this line!
|
||||||
ENV NEXTCLOUD_VERSION=32.0.2
|
ENV NEXTCLOUD_VERSION=31.0.8
|
||||||
ENV AIO_TOKEN=123456
|
ENV AIO_TOKEN=123456
|
||||||
ENV AIO_URL=localhost
|
ENV AIO_URL=localhost
|
||||||
# AIO settings end # Do not remove or change this line!
|
# AIO settings end # Do not remove or change this line!
|
||||||
|
|
||||||
COPY --chmod=775 Containers/nextcloud/*.sh /
|
COPY --chmod=775 *.sh /
|
||||||
COPY --chmod=774 Containers/nextcloud/upgrade.exclude /upgrade.exclude
|
COPY --chmod=774 upgrade.exclude /upgrade.exclude
|
||||||
COPY Containers/nextcloud/config/*.php /
|
COPY config/*.php /
|
||||||
COPY Containers/nextcloud/supervisord.conf /supervisord.conf
|
COPY supervisord.conf /supervisord.conf
|
||||||
|
COPY root.motd /root.motd
|
||||||
# AIO cloning start # Do not remove or change this line!
|
|
||||||
COPY app /usr/src/nextcloud/apps/nextcloud-aio
|
|
||||||
COPY Containers/nextcloud/root.motd /root.motd
|
|
||||||
# AIO cloning end # Do not remove or change this line!
|
|
||||||
|
|
||||||
VOLUME /mnt/ncdata
|
VOLUME /mnt/ncdata
|
||||||
VOLUME /var/www/html
|
VOLUME /var/www/html
|
||||||
@@ -83,9 +79,9 @@ RUN set -ex; \
|
|||||||
\
|
\
|
||||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install -o igbinary-3.2.16; \
|
pecl install -o igbinary-3.2.16; \
|
||||||
pecl install APCu-5.1.27; \
|
pecl install APCu-5.1.26; \
|
||||||
pecl install -D 'enable-memcached-igbinary="yes"' memcached-3.4.0; \
|
pecl install -D 'enable-memcached-igbinary="yes"' memcached-3.3.0; \
|
||||||
pecl install -oD 'enable-redis-igbinary="yes" enable-redis-zstd="yes" enable-redis-lz4="yes"' redis-6.3.0; \
|
pecl install -oD 'enable-redis-igbinary="yes" enable-redis-zstd="yes" enable-redis-lz4="yes"' redis-6.2.0; \
|
||||||
pecl install -o imagick-3.8.0; \
|
pecl install -o imagick-3.8.0; \
|
||||||
\
|
\
|
||||||
docker-php-ext-enable \
|
docker-php-ext-enable \
|
||||||
@@ -132,7 +128,7 @@ RUN set -ex; \
|
|||||||
echo 'upload_max_filesize=${PHP_UPLOAD_LIMIT}'; \
|
echo 'upload_max_filesize=${PHP_UPLOAD_LIMIT}'; \
|
||||||
echo 'post_max_size=${PHP_UPLOAD_LIMIT}'; \
|
echo 'post_max_size=${PHP_UPLOAD_LIMIT}'; \
|
||||||
echo 'max_execution_time=${PHP_MAX_TIME}'; \
|
echo 'max_execution_time=${PHP_MAX_TIME}'; \
|
||||||
echo 'max_input_time=-1'; \
|
echo 'max_input_time=${PHP_MAX_TIME}'; \
|
||||||
echo 'default_socket_timeout=${PHP_MAX_TIME}'; \
|
echo 'default_socket_timeout=${PHP_MAX_TIME}'; \
|
||||||
} > /usr/local/etc/php/conf.d/nextcloud.ini; \
|
} > /usr/local/etc/php/conf.d/nextcloud.ini; \
|
||||||
\
|
\
|
||||||
@@ -156,7 +152,7 @@ RUN set -ex; \
|
|||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 \
|
curl -fsSL -o nextcloud.tar.bz2 \
|
||||||
"https://github.com/nextcloud-releases/server/releases/download/v${NEXTCLOUD_VERSION}/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
|
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc \
|
curl -fsSL -o nextcloud.tar.bz2.asc \
|
||||||
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
|
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
@@ -230,6 +226,7 @@ RUN set -ex; \
|
|||||||
sudo \
|
sudo \
|
||||||
grep \
|
grep \
|
||||||
nodejs \
|
nodejs \
|
||||||
|
libreoffice \
|
||||||
bind-tools \
|
bind-tools \
|
||||||
imagemagick \
|
imagemagick \
|
||||||
imagemagick-svg \
|
imagemagick-svg \
|
||||||
@@ -245,7 +242,15 @@ RUN set -ex; \
|
|||||||
sed -i 's/^pm.max_children =.*/pm.max_children = 5000/' /usr/local/etc/php-fpm.d/www.conf; \
|
sed -i 's/^pm.max_children =.*/pm.max_children = 5000/' /usr/local/etc/php-fpm.d/www.conf; \
|
||||||
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf; \
|
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf; \
|
||||||
\
|
\
|
||||||
echo "[ -n \"\$TERM\" ] && [ -f /root.motd ] && cat /root.motd" >> /root/.bashrc; \
|
# AIO cloning start # Do not remove or change this line!
|
||||||
|
rm -rf /tmp/nextcloud-aio && \
|
||||||
|
mkdir -p /tmp/nextcloud-aio && \
|
||||||
|
cd /tmp/nextcloud-aio && \
|
||||||
|
git clone https://github.com/nextcloud-releases/all-in-one.git --depth 1 .; \
|
||||||
|
mkdir -p /usr/src/nextcloud/apps/nextcloud-aio; \
|
||||||
|
cp -r ./app/* /usr/src/nextcloud/apps/nextcloud-aio/; \
|
||||||
|
echo "[ -n \"\$TERM\" ] && cat /root.motd" >> /root/.bashrc; \
|
||||||
|
# AIO cloning end # Do not remove or change this line!
|
||||||
\
|
\
|
||||||
chown www-data:root -R /usr/src && \
|
chown www-data:root -R /usr/src && \
|
||||||
chmod 777 -R /usr/local/etc/php/conf.d && \
|
chmod 777 -R /usr/local/etc/php/conf.d && \
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
# Nextcloud All-in-One ``nextcloud`` Container
|
|
||||||
|
|
||||||
This folder contains the OCI/Docker container definition, along with associated resources and configuration files, for building the `nextcloud` container as part of the [Nextcloud All-in-One](https://github.com/nextcloud/all-in-one) project. This container hosts PHP and the Nextcloud Server application.
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
The Nextcloud container provides the core Nextcloud application environment, including the necessary dependencies and configuration for seamless integration into the All-in-One stack. The container hosts:
|
|
||||||
|
|
||||||
- The PHP SAPI/backend (php-fpm)
|
|
||||||
- Nextcloud background jobs and scheduled tasks, which are handled via cron
|
|
||||||
- Miscellaneous minor support services specific to AIO's Nextcloud deployment (health and exec)
|
|
||||||
|
|
||||||
## Contents
|
|
||||||
|
|
||||||
- **Dockerfile**: Instructions for building the Nextcloud container image.
|
|
||||||
- **Entrypoint script**: The `start.sh` script is used for container initialization and runtime configuration before starting supervisord.
|
|
||||||
- **Nextcloud configuration files**: Specific to running in a containerized setting and/or within AIO.
|
|
||||||
- **Supervisor**: The `supervisord.conf` file defines the long-running services hosted within the container (php-fpm, cron, etc.).
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
This container is intended to be used as part of the All-in-One deployment and is not meant to be used on its own. Among other requirements, it needs a web server container (which AIO provides in a dedicated Apache container). It is designed to be orchestrated by the [All-in-One mastercontainer](https://github.com/nextcloud/all-in-one/tree/main/Containers/mastercontainer) or used within an [AIO Manual Installation](https://github.com/nextcloud/all-in-one/tree/main/manual-install) or [AIO Helm chart](https://github.com/nextcloud/all-in-one/tree/main/nextcloud-aio-helm-chart).
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
- [Nextcloud All-in-One Documentation](https://github.com/nextcloud/all-in-one#readme)
|
|
||||||
- [Nextcloud Documentation](https://docs.nextcloud.com/)
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Contributions are welcome! Please follow the Nextcloud project's guidelines and submit pull requests or issues via the main repository.
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
This folder and its contents are licensed under the [GNU AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html), in line with the rest of Nextcloud All-in-One.
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<?php
|
|
||||||
if (getenv('NEXTCLOUD_TRUSTED_CERTIFICATES_POSTGRES')) {
|
|
||||||
$CONFIG = array(
|
|
||||||
'pgsql_ssl' => array(
|
|
||||||
'mode' => 'verify-ca',
|
|
||||||
'rootcert' => '/var/www/html/data/certificates/POSTGRES',
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -4,9 +4,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) {
|
|||||||
$use_path = getenv('OBJECTSTORE_S3_USEPATH_STYLE');
|
$use_path = getenv('OBJECTSTORE_S3_USEPATH_STYLE');
|
||||||
$use_legacyauth = getenv('OBJECTSTORE_S3_LEGACYAUTH');
|
$use_legacyauth = getenv('OBJECTSTORE_S3_LEGACYAUTH');
|
||||||
$autocreate = getenv('OBJECTSTORE_S3_AUTOCREATE');
|
$autocreate = getenv('OBJECTSTORE_S3_AUTOCREATE');
|
||||||
$multibucket = getenv('OBJECTSTORE_S3_MULTIBUCKET');
|
|
||||||
$CONFIG = array(
|
$CONFIG = array(
|
||||||
$multibucket === 'true' ? 'objectstore_multibucket' : 'objectstore' => array(
|
'objectstore' => array(
|
||||||
'class' => '\OC\Files\ObjectStore\S3',
|
'class' => '\OC\Files\ObjectStore\S3',
|
||||||
'arguments' => array(
|
'arguments' => array(
|
||||||
'bucket' => getenv('OBJECTSTORE_S3_BUCKET'),
|
'bucket' => getenv('OBJECTSTORE_S3_BUCKET'),
|
||||||
@@ -17,13 +16,12 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) {
|
|||||||
'port' => getenv('OBJECTSTORE_S3_PORT') ?: '',
|
'port' => getenv('OBJECTSTORE_S3_PORT') ?: '',
|
||||||
'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '',
|
'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '',
|
||||||
'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:",
|
'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:",
|
||||||
'autocreate' => strtolower($autocreate) !== 'false',
|
'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true,
|
||||||
'use_ssl' => strtolower($use_ssl) !== 'false',
|
'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true,
|
||||||
// required for some non Amazon S3 implementations
|
// required for some non Amazon S3 implementations
|
||||||
'use_path_style' => strtolower($use_path) === 'true',
|
'use_path_style' => $use_path == true && strtolower($use_path) !== 'false',
|
||||||
// required for older protocol versions
|
// required for older protocol versions
|
||||||
'legacy_auth' => strtolower($use_legacyauth) === 'true',
|
'legacy_auth' => $use_legacyauth == true && strtolower($use_legacyauth) !== 'false'
|
||||||
'use_nextcloud_bundle' => 1,
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -25,34 +25,31 @@ if [ "$DATABASE_TYPE" = postgres ]; then
|
|||||||
export DATABASE_TYPE=pgsql
|
export DATABASE_TYPE=pgsql
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Only start container if Redis is accessible
|
# Only start container if redis is accessible
|
||||||
# shellcheck disable=SC2153
|
# shellcheck disable=SC2153
|
||||||
while ! nc -z "$REDIS_HOST" "6379"; do
|
while ! nc -z "$REDIS_HOST" "6379"; do
|
||||||
echo "Waiting for Redis to start..."
|
echo "Waiting for redis to start..."
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
|
|
||||||
# Check permissions in ncdata
|
# Check permissions in ncdata
|
||||||
test_file="$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
|
touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
|
||||||
touch "$test_file"
|
if ! [ -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" ]; then
|
||||||
if ! [ -f "$test_file" ]; then
|
echo "The www-data user doesn't seem to have access rights in the datadir.
|
||||||
echo "The www-data user does not appear to have access rights to the data directory."
|
Most likely are the files located on a drive that does not follow linux permissions.
|
||||||
echo "It is possible that the files are on a filesystem that does not support standard Linux permissions,"
|
Please adjust the permissions like mentioned below.
|
||||||
echo "or the permissions simply need to be adjusted. Please change the permissions as described below."
|
The found permissions are:
|
||||||
echo "Current permissions are:"
|
$(stat -c "%u:%g %a" "$NEXTCLOUD_DATA_DIR")
|
||||||
stat -c "%u:%g %a" "$NEXTCLOUD_DATA_DIR"
|
(userID:groupID permissions)
|
||||||
echo "(userID:groupID permissions)"
|
but they should be:
|
||||||
echo "They should be:"
|
33:0 750
|
||||||
echo "33:0 750"
|
(userID:groupID permissions)
|
||||||
echo "(userID:groupID permissions)"
|
Also make sure that the parent directories on the host of the directory that you've chosen as datadir are publicly readable with e.g. 'sudo chmod +r /mnt' (adjust the command accordingly to your case) and the same for all subdirectories.
|
||||||
echo "Also, ensure that all parent directories on the host of your chosen data directory are publicly readable."
|
Additionally, if you want to use a Fuse-mount as datadir, set 'allow_other' as additional mount option.
|
||||||
echo "For example: sudo chmod +r /mnt (adjust this command as needed)."
|
For SMB/CIFS mounts as datadir, see https://github.com/nextcloud/all-in-one#can-i-use-a-cifssmb-share-as-nextclouds-datadir"
|
||||||
echo "If you want to use a FUSE mount as the data directory, add 'allow_other' as an additional mount option."
|
|
||||||
echo "For SMB/CIFS mounts as the data directory, see:"
|
|
||||||
echo " https://github.com/nextcloud/all-in-one#can-i-use-a-cifssmb-share-as-nextclouds-datadir"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
rm -f "$test_file"
|
rm "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
|
||||||
|
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
@@ -74,31 +71,26 @@ fi
|
|||||||
|
|
||||||
# Don't start the container if Nextcloud is not compatible with the PHP version
|
# Don't start the container if Nextcloud is not compatible with the PHP version
|
||||||
if [ -f "/var/www/html/lib/versioncheck.php" ] && ! php /var/www/html/lib/versioncheck.php; then
|
if [ -f "/var/www/html/lib/versioncheck.php" ] && ! php /var/www/html/lib/versioncheck.php; then
|
||||||
echo "Your installed Nextcloud version is not compatible with the PHP version provided by this image."
|
echo "It seems like your installed Nextcloud is not compatible with the by the container provided PHP version."
|
||||||
echo "This typically occurs when you restore an older Nextcloud backup that does not support the"
|
echo "This most likely happened because you tried to restore an old Nextcloud version from backup that is not compatible with the PHP version that comes with the container."
|
||||||
echo "PHP version included in this image."
|
echo "Please try to restore a more recent backup which contains a Nextcloud version that is compatible with the PHP version that comes with the container."
|
||||||
echo "Please restore a more recent backup that includes a compatible Nextcloud version."
|
echo "If you do not have a more recent backup, feel free to have a look at this documentation: https://github.com/nextcloud/all-in-one/blob/main/manual-upgrade.md"
|
||||||
echo "If you do not have a more recent backup, refer to the manual upgrade documentation:"
|
|
||||||
echo " https://github.com/nextcloud/all-in-one/blob/main/manual-upgrade.md"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Do not start the container if the last update failed
|
# Do not start the container if the last update failed
|
||||||
if [ -f "$NEXTCLOUD_DATA_DIR/update.failed" ]; then
|
if [ -f "$NEXTCLOUD_DATA_DIR/update.failed" ]; then
|
||||||
echo "The last Nextcloud update failed."
|
echo "The last Nextcloud update failed."
|
||||||
echo "Please restore from a backup and try again."
|
echo "Please restore from backup and try again!"
|
||||||
echo "If you do not have a backup, you can delete the update.failed file in the data directory"
|
echo "If you do not have a backup in place, you can simply delete the update.failed file in the datadir which will allow the container to start again."
|
||||||
echo "to allow the container to start again."
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Do not start the container if the install failed
|
# Do not start the container if the install failed
|
||||||
if [ -f "$NEXTCLOUD_DATA_DIR/install.failed" ]; then
|
if [ -f "$NEXTCLOUD_DATA_DIR/install.failed" ]; then
|
||||||
echo "The initial Nextcloud installation failed."
|
echo "The initial Nextcloud installation failed."
|
||||||
echo "For more information about what went wrong, check the logs above."
|
echo "Please reset AIO properly and try again. For further clues what went wrong, check the logs above."
|
||||||
echo "Please reset AIO properly and try again."
|
echo "See https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance"
|
||||||
echo "See:"
|
|
||||||
echo " https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -151,7 +143,7 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
|||||||
if [ "$installed_version" != "0.0.0.0" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
# Check connection to appstore start # Do not remove or change this line!
|
# Check connection to appstore start # Do not remove or change this line!
|
||||||
while true; do
|
while true; do
|
||||||
echo -e "Checking connection to the app store..."
|
echo -e "Checking connection to appstore"
|
||||||
APPSTORE_URL="https://apps.nextcloud.com/api/v1"
|
APPSTORE_URL="https://apps.nextcloud.com/api/v1"
|
||||||
if grep -q appstoreurl /var/www/html/config/config.php; then
|
if grep -q appstoreurl /var/www/html/config/config.php; then
|
||||||
set -x
|
set -x
|
||||||
@@ -162,10 +154,10 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
|||||||
CURL_STATUS="$(curl -LI "$APPSTORE_URL"/apps.json -o /dev/null -w '%{http_code}\n' -s)"
|
CURL_STATUS="$(curl -LI "$APPSTORE_URL"/apps.json -o /dev/null -w '%{http_code}\n' -s)"
|
||||||
if [[ "$CURL_STATUS" = "200" ]]
|
if [[ "$CURL_STATUS" = "200" ]]
|
||||||
then
|
then
|
||||||
echo "App store is reachable."
|
echo "Appstore is reachable"
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
echo "Curl did not return a 200 status. Is the app store reachable?"
|
echo "Curl didn't produce a 200 status, is appstore reachable?"
|
||||||
sleep 5
|
sleep 5
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -175,21 +167,21 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
|||||||
|
|
||||||
php /var/www/html/occ maintenance:mode --off
|
php /var/www/html/occ maintenance:mode --off
|
||||||
|
|
||||||
echo "Getting and backing up the status of apps for later; this might take a while..."
|
echo "Getting and backing up the status of apps for later, this might take a while..."
|
||||||
NC_APPS="$(find /var/www/html/custom_apps/ -type d -maxdepth 1 -mindepth 1 | sed 's|/var/www/html/custom_apps/||g')"
|
NC_APPS="$(find /var/www/html/custom_apps/ -type d -maxdepth 1 -mindepth 1 | sed 's|/var/www/html/custom_apps/||g')"
|
||||||
if [ -z "$NC_APPS" ]; then
|
if [ -z "$NC_APPS" ]; then
|
||||||
echo "No apps detected. Aborting export of app status..."
|
echo "No apps detected, aborting export of app status..."
|
||||||
APPSTORAGE="no-export-done"
|
APPSTORAGE="no-export-done"
|
||||||
else
|
else
|
||||||
mapfile -t NC_APPS_ARRAY <<< "$NC_APPS"
|
mapfile -t NC_APPS_ARRAY <<< "$NC_APPS"
|
||||||
declare -Ag APPSTORAGE
|
declare -Ag APPSTORAGE
|
||||||
echo "Disabling apps before the update to make the update procedure safer. This can take a while..."
|
echo "Disabling apps before the update in order to make the update procedure more safe. This can take a while..."
|
||||||
for app in "${NC_APPS_ARRAY[@]}"; do
|
for app in "${NC_APPS_ARRAY[@]}"; do
|
||||||
if APPSTORAGE[$app]="$(php /var/www/html/occ config:app:get "$app" enabled)"; then
|
if APPSTORAGE[$app]="$(php /var/www/html/occ config:app:get "$app" enabled)"; then
|
||||||
php /var/www/html/occ app:disable "$app"
|
php /var/www/html/occ app:disable "$app"
|
||||||
else
|
else
|
||||||
APPSTORAGE[$app]=""
|
APPSTORAGE[$app]=""
|
||||||
echo "Not disabling $app because the occ command to get its enabled state failed."
|
echo "Not disabling $app because the occ command to get the enabled state was failing."
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
@@ -203,61 +195,19 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
|||||||
run_upgrade_if_needed_due_to_app_update
|
run_upgrade_if_needed_due_to_app_update
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Initializing Nextcloud $image_version ..."
|
echo "Initializing nextcloud $image_version ..."
|
||||||
|
rsync -rlD --delete --exclude-from=/upgrade.exclude "$SOURCE_LOCATION/" /var/www/html/
|
||||||
|
|
||||||
# Copy over initial data from Nextcloud archive
|
|
||||||
rsync -rlD --delete \
|
|
||||||
--exclude-from=/upgrade.exclude \
|
|
||||||
"$SOURCE_LOCATION/" \
|
|
||||||
/var/www/html/
|
|
||||||
|
|
||||||
# Copy custom_apps from Nextcloud archive
|
|
||||||
if ! directory_empty "$SOURCE_LOCATION/custom_apps"; then
|
|
||||||
set -x
|
|
||||||
for app in "$SOURCE_LOCATION/custom_apps"/*; do
|
|
||||||
app_id="$(basename "$app")"
|
|
||||||
mkdir -p "/var/www/html/custom_apps/$app_id"
|
|
||||||
rsync -rlD --delete \
|
|
||||||
--include "/$app_id/" \
|
|
||||||
--exclude '/*' \
|
|
||||||
"$SOURCE_LOCATION/custom_apps/" \
|
|
||||||
/var/www/html/custom_apps/
|
|
||||||
done
|
|
||||||
set +x
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Copy these from Nextcloud archive if they don't exist yet (i.e. new install)
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync -rlD \
|
rsync -rlD --include "/$dir/" --exclude '/*' "$SOURCE_LOCATION/" /var/www/html/
|
||||||
--include "/$dir/" \
|
|
||||||
--exclude '/*' \
|
|
||||||
"$SOURCE_LOCATION/" \
|
|
||||||
/var/www/html/
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
rsync -rlD --delete --include '/config/' --exclude '/*' --exclude '/config/CAN_INSTALL' --exclude '/config/config.sample.php' --exclude '/config/config.php' "$SOURCE_LOCATION/" /var/www/html/
|
||||||
rsync -rlD --delete \
|
rsync -rlD --include '/version.php' --exclude '/*' "$SOURCE_LOCATION/" /var/www/html/
|
||||||
--include '/config/' \
|
|
||||||
--exclude '/*' \
|
|
||||||
--exclude '/config/CAN_INSTALL' \
|
|
||||||
--exclude '/config/config.sample.php' \
|
|
||||||
--exclude '/config/config.php' \
|
|
||||||
"$SOURCE_LOCATION/" \
|
|
||||||
/var/www/html/
|
|
||||||
|
|
||||||
rsync -rlD \
|
|
||||||
--include '/version.php' \
|
|
||||||
--exclude '/*' \
|
|
||||||
"$SOURCE_LOCATION/" \
|
|
||||||
/var/www/html/
|
|
||||||
|
|
||||||
echo "Initializing finished"
|
echo "Initializing finished"
|
||||||
|
|
||||||
################
|
#install
|
||||||
# Fresh Install
|
|
||||||
################
|
|
||||||
|
|
||||||
if [ "$installed_version" = "0.0.0.0" ]; then
|
if [ "$installed_version" = "0.0.0.0" ]; then
|
||||||
echo "New Nextcloud instance."
|
echo "New Nextcloud instance."
|
||||||
|
|
||||||
@@ -271,36 +221,21 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
|||||||
INSTALL_OPTIONS+=(--data-dir "$NEXTCLOUD_DATA_DIR")
|
INSTALL_OPTIONS+=(--data-dir "$NEXTCLOUD_DATA_DIR")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Skip the default permission check (we do our own)
|
# We do our own permission check so the permission check is not needed
|
||||||
cat > /var/www/html/config/datadir.permission.config.php <<'EOF'
|
cat << DATADIR_PERMISSION_CONF > /var/www/html/config/datadir.permission.config.php
|
||||||
<?php
|
<?php
|
||||||
$CONFIG = array (
|
\$CONFIG = array (
|
||||||
'check_data_directory_permissions' => false
|
'check_data_directory_permissions' => false
|
||||||
);
|
);
|
||||||
EOF
|
DATADIR_PERMISSION_CONF
|
||||||
|
|
||||||
# Write out postgres root cert
|
|
||||||
if [ -n "$NEXTCLOUD_TRUSTED_CERTIFICATES_POSTGRES" ]; then
|
|
||||||
mkdir /var/www/html/data/certificates
|
|
||||||
echo "$NEXTCLOUD_TRUSTED_CERTIFICATES_POSTGRES" > "/var/www/html/data/certificates/POSTGRES"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Installing with $DATABASE_TYPE database"
|
echo "Installing with $DATABASE_TYPE database"
|
||||||
# Set a default value for POSTGRES_PORT
|
# Set a default value for POSTGRES_PORT
|
||||||
if [ -z "$POSTGRES_PORT" ]; then
|
if [ -z "$POSTGRES_PORT" ]; then
|
||||||
POSTGRES_PORT=5432
|
POSTGRES_PORT=5432
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add database options to INSTALL_OPTIONS
|
|
||||||
# shellcheck disable=SC2153
|
# shellcheck disable=SC2153
|
||||||
INSTALL_OPTIONS+=(
|
INSTALL_OPTIONS+=(--database "$DATABASE_TYPE" --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST" --database-port "$POSTGRES_PORT")
|
||||||
--database "$DATABASE_TYPE"
|
|
||||||
--database-name "$POSTGRES_DB"
|
|
||||||
--database-user "$POSTGRES_USER"
|
|
||||||
--database-pass "$POSTGRES_PASSWORD"
|
|
||||||
--database-host "$POSTGRES_HOST"
|
|
||||||
--database-port "$POSTGRES_PORT"
|
|
||||||
)
|
|
||||||
|
|
||||||
echo "Starting Nextcloud installation..."
|
echo "Starting Nextcloud installation..."
|
||||||
if ! php /var/www/html/occ maintenance:install "${INSTALL_OPTIONS[@]}"; then
|
if ! php /var/www/html/occ maintenance:install "${INSTALL_OPTIONS[@]}"; then
|
||||||
@@ -323,7 +258,7 @@ EOF
|
|||||||
|
|
||||||
if [ "$try" -ge "$max_retries" ]; then
|
if [ "$try" -ge "$max_retries" ]; then
|
||||||
echo "Installation of Nextcloud failed!"
|
echo "Installation of Nextcloud failed!"
|
||||||
echo "Installation errors: $(cat /var/www/html/data/nextcloud.log)"
|
echo "Install errors: $(cat /var/www/html/data/nextcloud.log)"
|
||||||
touch "$NEXTCLOUD_DATA_DIR/install.failed"
|
touch "$NEXTCLOUD_DATA_DIR/install.failed"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -359,12 +294,10 @@ EOF
|
|||||||
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
INSTALLED_MAJOR="${installed_version%%.*}"
|
INSTALLED_MAJOR="${installed_version%%.*}"
|
||||||
IMAGE_MAJOR="${image_version%%.*}"
|
IMAGE_MAJOR="${image_version%%.*}"
|
||||||
# If a valid upgrade path, trigger the Nextcloud built-in Updater
|
|
||||||
if ! [ "$INSTALLED_MAJOR" -gt "$IMAGE_MAJOR" ]; then
|
if ! [ "$INSTALLED_MAJOR" -gt "$IMAGE_MAJOR" ]; then
|
||||||
php /var/www/html/updater/updater.phar --no-interaction --no-backup
|
php /var/www/html/updater/updater.phar --no-interaction --no-backup
|
||||||
if ! php /var/www/html/occ -V || php /var/www/html/occ status | grep maintenance | grep -q 'true'; then
|
if ! php /var/www/html/occ -V || php /var/www/html/occ status | grep maintenance | grep -q 'true'; then
|
||||||
echo "Installation of Nextcloud failed!"
|
echo "Installation of Nextcloud failed!"
|
||||||
# TODO: Add a hint here about what to do / where to look / updater.log?
|
|
||||||
touch "$NEXTCLOUD_DATA_DIR/install.failed"
|
touch "$NEXTCLOUD_DATA_DIR/install.failed"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -423,7 +356,7 @@ EOF
|
|||||||
read -ra STARTUP_APPS_ARRAY <<< "$STARTUP_APPS"
|
read -ra STARTUP_APPS_ARRAY <<< "$STARTUP_APPS"
|
||||||
for app in "${STARTUP_APPS_ARRAY[@]}"; do
|
for app in "${STARTUP_APPS_ARRAY[@]}"; do
|
||||||
if ! echo "$app" | grep -q '^-'; then
|
if ! echo "$app" | grep -q '^-'; then
|
||||||
if [ -z "$(find /var/www/html/apps /var/www/html/custom_apps -type d -maxdepth 1 -mindepth 1 -name "$app" )" ]; then
|
if [ -z "$(find /var/www/html/apps -type d -maxdepth 1 -mindepth 1 -name "$app" )" ]; then
|
||||||
# If not shipped, install and enable the app
|
# If not shipped, install and enable the app
|
||||||
php /var/www/html/occ app:install "$app"
|
php /var/www/html/occ app:install "$app"
|
||||||
else
|
else
|
||||||
@@ -441,11 +374,11 @@ EOF
|
|||||||
#upgrade
|
#upgrade
|
||||||
else
|
else
|
||||||
touch "$NEXTCLOUD_DATA_DIR/update.failed"
|
touch "$NEXTCLOUD_DATA_DIR/update.failed"
|
||||||
echo "Upgrading Nextcloud from $installed_version to $image_version..."
|
echo "Upgrading nextcloud from $installed_version to $image_version..."
|
||||||
php /var/www/html/occ config:system:delete integrity.check.disabled
|
php /var/www/html/occ config:system:delete integrity.check.disabled
|
||||||
if ! php /var/www/html/occ upgrade || ! php /var/www/html/occ -V; then
|
if ! php /var/www/html/occ upgrade || ! php /var/www/html/occ -V; then
|
||||||
echo "Upgrade failed. Please restore from backup."
|
echo "Upgrade failed. Please restore from backup."
|
||||||
bash /notify.sh "Nextcloud update to $image_version failed!" "Please restore from backup."
|
bash /notify.sh "Nextcloud update to $image_version failed!" "Please restore from backup!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -453,7 +386,7 @@ EOF
|
|||||||
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
rm "$NEXTCLOUD_DATA_DIR/update.failed"
|
rm "$NEXTCLOUD_DATA_DIR/update.failed"
|
||||||
bash /notify.sh "Nextcloud update to $image_version successful!" "You may inspect the Nextcloud container logs for more information."
|
bash /notify.sh "Nextcloud update to $image_version successful!" "Feel free to inspect the Nextcloud container logs for more info."
|
||||||
|
|
||||||
php /var/www/html/occ app:update --all
|
php /var/www/html/occ app:update --all
|
||||||
|
|
||||||
@@ -461,7 +394,7 @@ EOF
|
|||||||
|
|
||||||
# Restore app status
|
# Restore app status
|
||||||
if [ "${APPSTORAGE[0]}" != "no-export-done" ]; then
|
if [ "${APPSTORAGE[0]}" != "no-export-done" ]; then
|
||||||
echo "Restoring app statuses. This may take a while..."
|
echo "Restoring the status of apps. This can take a while..."
|
||||||
for app in "${!APPSTORAGE[@]}"; do
|
for app in "${!APPSTORAGE[@]}"; do
|
||||||
if [ -n "${APPSTORAGE[$app]}" ]; then
|
if [ -n "${APPSTORAGE[$app]}" ]; then
|
||||||
if [ "${APPSTORAGE[$app]}" != "no" ]; then
|
if [ "${APPSTORAGE[$app]}" != "no" ]; then
|
||||||
@@ -473,13 +406,13 @@ EOF
|
|||||||
php /var/www/html/occ maintenance:mode --off
|
php /var/www/html/occ maintenance:mode --off
|
||||||
fi
|
fi
|
||||||
run_upgrade_if_needed_due_to_app_update
|
run_upgrade_if_needed_due_to_app_update
|
||||||
echo "The $app app could not be re-enabled, probably because it is not compatible with the new Nextcloud version."
|
echo "The $app app could not get enabled. Probably because it is not compatible with the new Nextcloud version."
|
||||||
if [ "$app" = apporder ]; then
|
if [ "$app" = apporder ]; then
|
||||||
CUSTOM_HINT="The apporder app was deprecated. A possible replacement is the side_menu app, aka 'Custom menu'."
|
CUSTOM_HINT="The apporder app was deprecated. A possible replacement is the side_menu app, aka 'Custom menu'."
|
||||||
else
|
else
|
||||||
CUSTOM_HINT="Most likely, it is not compatible with the new Nextcloud version."
|
CUSTOM_HINT="Most likely because it is not compatible with the new Nextcloud version."
|
||||||
fi
|
fi
|
||||||
bash /notify.sh "Could not re-enable the $app app after the Nextcloud update!" "$CUSTOM_HINT Feel free to review the Nextcloud update logs and force-enable the app again if you wish."
|
bash /notify.sh "Could not enable the $app app after the Nextcloud update!" "$CUSTOM_HINT Feel free to look at the Nextcloud update logs and force-enable the app again from the app-store UI."
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
# Only restore the group settings, if the app was enabled (and is thus compatible with the new NC version)
|
# Only restore the group settings, if the app was enabled (and is thus compatible with the new NC version)
|
||||||
@@ -501,7 +434,7 @@ EOF
|
|||||||
php /var/www/html/occ config:app:set updatenotification notify_groups --value="[]"
|
php /var/www/html/occ config:app:set updatenotification notify_groups --value="[]"
|
||||||
|
|
||||||
# Apply optimization
|
# Apply optimization
|
||||||
echo "Performing some optimizations..."
|
echo "Doing some optimizations..."
|
||||||
if [ "$NEXTCLOUD_SKIP_DATABASE_OPTIMIZATION" != yes ]; then
|
if [ "$NEXTCLOUD_SKIP_DATABASE_OPTIMIZATION" != yes ]; then
|
||||||
php /var/www/html/occ maintenance:repair --include-expensive
|
php /var/www/html/occ maintenance:repair --include-expensive
|
||||||
php /var/www/html/occ db:add-missing-indices
|
php /var/www/html/occ db:add-missing-indices
|
||||||
@@ -532,10 +465,10 @@ if [ -z "$OBJECTSTORE_S3_BUCKET" ] && [ -z "$OBJECTSTORE_SWIFT_URL" ]; then
|
|||||||
# Check if appdata is present
|
# Check if appdata is present
|
||||||
# If not, something broke (e.g. changing ncdatadir after aio was first started)
|
# If not, something broke (e.g. changing ncdatadir after aio was first started)
|
||||||
if [ -z "$(find "$NEXTCLOUD_DATA_DIR/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
|
if [ -z "$(find "$NEXTCLOUD_DATA_DIR/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
|
||||||
echo "Appdata is not present. Did you change the datadir after the initial Nextcloud installation? This is not supported!"
|
echo "Appdata is not present. Did you maybe change the datadir after the initial Nextcloud installation? This is not supported!"
|
||||||
echo "See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir"
|
echo "See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir"
|
||||||
echo "If you moved the datadir to an external drive, make sure that the drive is still mounted."
|
echo "If you adjusted the datadir to be located on an external drive, make sure that the drive is still mounted!"
|
||||||
echo "The following was found in the datadir:"
|
echo "In the datadir was found:"
|
||||||
ls -la "$NEXTCLOUD_DATA_DIR/"
|
ls -la "$NEXTCLOUD_DATA_DIR/"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -727,7 +660,7 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Warning: No IPv4 address found for $COLLABORA_HOST."
|
echo "Warning: No ipv4-address found for $COLLABORA_HOST."
|
||||||
fi
|
fi
|
||||||
if [ -n "$COLLABORA_IPv6_ADDRESS" ]; then
|
if [ -n "$COLLABORA_IPv6_ADDRESS" ]; then
|
||||||
if ! echo "$COLLABORA_ALLOW_LIST" | grep -q "$COLLABORA_IPv6_ADDRESS"; then
|
if ! echo "$COLLABORA_ALLOW_LIST" | grep -q "$COLLABORA_IPv6_ADDRESS"; then
|
||||||
@@ -738,7 +671,7 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "No IPv6 address found for $COLLABORA_HOST."
|
echo "No ipv6-address found for $COLLABORA_HOST."
|
||||||
fi
|
fi
|
||||||
if [ -n "$COLLABORA_ALLOW_LIST" ]; then
|
if [ -n "$COLLABORA_ALLOW_LIST" ]; then
|
||||||
PRIVATE_IP_RANGES='127.0.0.1/8,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8,fd00::/8,::1'
|
PRIVATE_IP_RANGES='127.0.0.1/8,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8,fd00::/8,::1'
|
||||||
@@ -752,7 +685,7 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
|
|||||||
fi
|
fi
|
||||||
php /var/www/html/occ config:app:set richdocuments wopi_allowlist --value="$COLLABORA_ALLOW_LIST"
|
php /var/www/html/occ config:app:set richdocuments wopi_allowlist --value="$COLLABORA_ALLOW_LIST"
|
||||||
else
|
else
|
||||||
echo "Warning: wopi_allowlist is empty; this should not be the case!"
|
echo "Warning: wopi_allowlist is empty which should not be the case!"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/richdocuments" ]; then
|
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/richdocuments" ]; then
|
||||||
@@ -762,24 +695,15 @@ fi
|
|||||||
|
|
||||||
# OnlyOffice
|
# OnlyOffice
|
||||||
if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
|
if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
|
||||||
# Determine OnlyOffice port based on host pattern
|
|
||||||
if echo "$ONLYOFFICE_HOST" | grep -q "nextcloud-.*-onlyoffice"; then
|
if echo "$ONLYOFFICE_HOST" | grep -q "nextcloud-.*-onlyoffice"; then
|
||||||
ONLYOFFICE_PORT=80
|
ONLYOFFICE_PORT=80
|
||||||
else
|
else
|
||||||
ONLYOFFICE_PORT=443
|
ONLYOFFICE_PORT=443
|
||||||
fi
|
fi
|
||||||
|
while ! nc -z "$ONLYOFFICE_HOST" "$ONLYOFFICE_PORT"; do
|
||||||
count=0
|
echo "waiting for OnlyOffice to become available..."
|
||||||
while ! nc -z "$ONLYOFFICE_HOST" "$ONLYOFFICE_PORT" && [ "$count" -lt 90 ]; do
|
|
||||||
echo "Waiting for OnlyOffice to become available..."
|
|
||||||
count=$((count+5))
|
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
if [ "$count" -ge 90 ]; then
|
|
||||||
bash /notify.sh "Onlyoffice did not start in time!" "Skipping initialization and disabling onlyoffice app."
|
|
||||||
php /var/www/html/occ app:disable onlyoffice
|
|
||||||
else
|
|
||||||
# Install or enable OnlyOffice app as needed
|
|
||||||
if ! [ -d "/var/www/html/custom_apps/onlyoffice" ]; then
|
if ! [ -d "/var/www/html/custom_apps/onlyoffice" ]; then
|
||||||
php /var/www/html/occ app:install onlyoffice
|
php /var/www/html/occ app:install onlyoffice
|
||||||
elif [ "$(php /var/www/html/occ config:app:get onlyoffice enabled)" != "yes" ]; then
|
elif [ "$(php /var/www/html/occ config:app:get onlyoffice enabled)" != "yes" ]; then
|
||||||
@@ -787,26 +711,16 @@ if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
|
|||||||
elif [ "$SKIP_UPDATE" != 1 ]; then
|
elif [ "$SKIP_UPDATE" != 1 ]; then
|
||||||
php /var/www/html/occ app:update onlyoffice
|
php /var/www/html/occ app:update onlyoffice
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set OnlyOffice configuration
|
|
||||||
php /var/www/html/occ config:system:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
|
php /var/www/html/occ config:system:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
|
||||||
php /var/www/html/occ config:app:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
|
php /var/www/html/occ config:app:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
|
||||||
php /var/www/html/occ config:system:set onlyoffice jwt_header --value="AuthorizationJwt"
|
php /var/www/html/occ config:system:set onlyoffice jwt_header --value="AuthorizationJwt"
|
||||||
|
|
||||||
# Adjust the OnlyOffice host if using internal pattern
|
|
||||||
if echo "$ONLYOFFICE_HOST" | grep -q "nextcloud-.*-onlyoffice"; then
|
if echo "$ONLYOFFICE_HOST" | grep -q "nextcloud-.*-onlyoffice"; then
|
||||||
ONLYOFFICE_HOST="$NC_DOMAIN/onlyoffice"
|
ONLYOFFICE_HOST="$NC_DOMAIN/onlyoffice"
|
||||||
export ONLYOFFICE_HOST
|
export ONLYOFFICE_HOST
|
||||||
fi
|
fi
|
||||||
|
|
||||||
php /var/www/html/occ config:app:set onlyoffice DocumentServerUrl --value="https://$ONLYOFFICE_HOST"
|
php /var/www/html/occ config:app:set onlyoffice DocumentServerUrl --value="https://$ONLYOFFICE_HOST"
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
# Remove OnlyOffice app if disabled and removal is requested
|
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/onlyoffice" ] && [ -n "$ONLYOFFICE_SECRET" ] && [ "$(php /var/www/html/occ config:system:get onlyoffice jwt_secret)" = "$ONLYOFFICE_SECRET" ]; then
|
||||||
if [ "$REMOVE_DISABLED_APPS" = yes ] && \
|
|
||||||
[ -d "/var/www/html/custom_apps/onlyoffice" ] && \
|
|
||||||
[ -n "$ONLYOFFICE_SECRET" ] && \
|
|
||||||
[ "$(php /var/www/html/occ config:system:get onlyoffice jwt_secret)" = "$ONLYOFFICE_SECRET" ]; then
|
|
||||||
php /var/www/html/occ app:remove onlyoffice
|
php /var/www/html/occ app:remove onlyoffice
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -852,7 +766,7 @@ fi
|
|||||||
if [ -d "/var/www/html/custom_apps/spreed" ]; then
|
if [ -d "/var/www/html/custom_apps/spreed" ]; then
|
||||||
if [ "$TALK_RECORDING_ENABLED" = 'yes' ]; then
|
if [ "$TALK_RECORDING_ENABLED" = 'yes' ]; then
|
||||||
while ! nc -z "$TALK_RECORDING_HOST" 1234; do
|
while ! nc -z "$TALK_RECORDING_HOST" 1234; do
|
||||||
echo "Waiting for Talk Recording to become available..."
|
echo "waiting for Talk Recording to become available..."
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
# TODO: migrate to occ command if that becomes available
|
# TODO: migrate to occ command if that becomes available
|
||||||
@@ -867,12 +781,12 @@ fi
|
|||||||
if [ "$CLAMAV_ENABLED" = 'yes' ]; then
|
if [ "$CLAMAV_ENABLED" = 'yes' ]; then
|
||||||
count=0
|
count=0
|
||||||
while ! nc -z "$CLAMAV_HOST" 3310 && [ "$count" -lt 90 ]; do
|
while ! nc -z "$CLAMAV_HOST" 3310 && [ "$count" -lt 90 ]; do
|
||||||
echo "Waiting for ClamAV to become available..."
|
echo "waiting for clamav to become available..."
|
||||||
count=$((count+5))
|
count=$((count+5))
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
if [ "$count" -ge 90 ]; then
|
if [ "$count" -ge 90 ]; then
|
||||||
bash /notify.sh "ClamAV did not start in time!" "Skipping initialization and disabling files_antivirus app."
|
echo "Clamav did not start in time. Skipping initialization and disabling files_antivirus app."
|
||||||
php /var/www/html/occ app:disable files_antivirus
|
php /var/www/html/occ app:disable files_antivirus
|
||||||
else
|
else
|
||||||
if ! [ -d "/var/www/html/custom_apps/files_antivirus" ]; then
|
if ! [ -d "/var/www/html/custom_apps/files_antivirus" ]; then
|
||||||
@@ -885,13 +799,9 @@ if [ "$CLAMAV_ENABLED" = 'yes' ]; then
|
|||||||
php /var/www/html/occ config:app:set files_antivirus av_mode --value="daemon"
|
php /var/www/html/occ config:app:set files_antivirus av_mode --value="daemon"
|
||||||
php /var/www/html/occ config:app:set files_antivirus av_port --value="3310"
|
php /var/www/html/occ config:app:set files_antivirus av_port --value="3310"
|
||||||
php /var/www/html/occ config:app:set files_antivirus av_host --value="$CLAMAV_HOST"
|
php /var/www/html/occ config:app:set files_antivirus av_host --value="$CLAMAV_HOST"
|
||||||
# av_stream_max_length must be synced with StreamMaxLength inside clamav
|
php /var/www/html/occ config:app:set files_antivirus av_stream_max_length --value="$CLAMAV_MAX_SIZE"
|
||||||
php /var/www/html/occ config:app:set files_antivirus av_stream_max_length --value="2147483648"
|
php /var/www/html/occ config:app:set files_antivirus av_max_file_size --value="$CLAMAV_MAX_SIZE"
|
||||||
php /var/www/html/occ config:app:set files_antivirus av_max_file_size --value="-1"
|
|
||||||
php /var/www/html/occ config:app:set files_antivirus av_infected_action --value="only_log"
|
php /var/www/html/occ config:app:set files_antivirus av_infected_action --value="only_log"
|
||||||
if [ -n "$CLAMAV_BLOCKLISTED_DIRECTORIES" ]; then
|
|
||||||
php /var/www/html/occ config:app:set files_antivirus av_blocklisted_directories --value="$CLAMAV_BLOCKLISTED_DIRECTORIES"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/files_antivirus" ]; then
|
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/files_antivirus" ]; then
|
||||||
@@ -920,7 +830,7 @@ fi
|
|||||||
if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
|
if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
|
||||||
count=0
|
count=0
|
||||||
while ! nc -z "$FULLTEXTSEARCH_HOST" "$FULLTEXTSEARCH_PORT" && [ "$count" -lt 90 ]; do
|
while ! nc -z "$FULLTEXTSEARCH_HOST" "$FULLTEXTSEARCH_PORT" && [ "$count" -lt 90 ]; do
|
||||||
echo "Waiting for Fulltextsearch to become available..."
|
echo "waiting for Fulltextsearch to become available..."
|
||||||
count=$((count+5))
|
count=$((count+5))
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
@@ -953,18 +863,18 @@ if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
|
|||||||
fi
|
fi
|
||||||
php /var/www/html/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
|
php /var/www/html/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
|
||||||
php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://$FULLTEXTSEARCH_USER:$FULLTEXTSEARCH_PASSWORD@$FULLTEXTSEARCH_HOST:$FULLTEXTSEARCH_PORT\",\"elastic_index\":\"$FULLTEXTSEARCH_INDEX\"}"
|
php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://$FULLTEXTSEARCH_USER:$FULLTEXTSEARCH_PASSWORD@$FULLTEXTSEARCH_HOST:$FULLTEXTSEARCH_PORT\",\"elastic_index\":\"$FULLTEXTSEARCH_INDEX\"}"
|
||||||
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":true,\"files_office\":true}"
|
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":\"1\",\"files_office\":\"1\"}"
|
||||||
|
|
||||||
# Do the index
|
# Do the index
|
||||||
if ! [ -f "$NEXTCLOUD_DATA_DIR/fts-index.done" ]; then
|
if ! [ -f "$NEXTCLOUD_DATA_DIR/fts-index.done" ]; then
|
||||||
echo "Waiting 10 seconds before activating fulltextsearch..."
|
echo "Waiting 10s before activating FTS..."
|
||||||
sleep 10
|
sleep 10
|
||||||
echo "Activating fulltextsearch..."
|
echo "Activating fulltextsearch..."
|
||||||
if php /var/www/html/occ fulltextsearch:test && php /var/www/html/occ fulltextsearch:index "{\"errors\": \"reset\"}" --no-readline; then
|
if php /var/www/html/occ fulltextsearch:test && php /var/www/html/occ fulltextsearch:index "{\"errors\": \"reset\"}" --no-readline; then
|
||||||
touch "$NEXTCLOUD_DATA_DIR/fts-index.done"
|
touch "$NEXTCLOUD_DATA_DIR/fts-index.done"
|
||||||
else
|
else
|
||||||
echo "Fulltextsearch failed. Could not index."
|
echo "Fulltextsearch failed. Could not index."
|
||||||
echo "If you want to skip indexing in the future, see https://github.com/nextcloud/all-in-one/discussions/1709"
|
echo "Feel free to follow https://github.com/nextcloud/all-in-one/discussions/1709 if you want to skip the indexing in the future."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ fi
|
|||||||
# Only start container if database is accessible
|
# Only start container if database is accessible
|
||||||
# POSTGRES_HOST must be set in the containers env vars and POSTGRES_PORT has a default above
|
# POSTGRES_HOST must be set in the containers env vars and POSTGRES_PORT has a default above
|
||||||
# shellcheck disable=SC2153
|
# shellcheck disable=SC2153
|
||||||
while ! sudo -E -u www-data nc -z "$POSTGRES_HOST" "$POSTGRES_PORT"; do
|
while ! sudo -u www-data nc -z "$POSTGRES_HOST" "$POSTGRES_PORT"; do
|
||||||
echo "Waiting for database to start..."
|
echo "Waiting for database to start..."
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
@@ -25,7 +25,7 @@ fi
|
|||||||
# Fix false database connection on old instances
|
# Fix false database connection on old instances
|
||||||
if [ -f "/var/www/html/config/config.php" ]; then
|
if [ -f "/var/www/html/config/config.php" ]; then
|
||||||
sleep 2
|
sleep 2
|
||||||
while ! sudo -E -u www-data psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB" -c "select now()"; do
|
while ! sudo -u www-data psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB" -c "select now()"; do
|
||||||
echo "Waiting for the database to start..."
|
echo "Waiting for the database to start..."
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
@@ -56,12 +56,12 @@ fi
|
|||||||
set +x
|
set +x
|
||||||
|
|
||||||
# Check datadir permissions
|
# Check datadir permissions
|
||||||
sudo -E -u www-data touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" &>/dev/null
|
sudo -u www-data touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" &>/dev/null
|
||||||
if ! [ -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" ]; then
|
if ! [ -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" ]; then
|
||||||
chown -R www-data:root "$NEXTCLOUD_DATA_DIR"
|
chown -R www-data:root "$NEXTCLOUD_DATA_DIR"
|
||||||
chmod 750 -R "$NEXTCLOUD_DATA_DIR"
|
chmod 750 -R "$NEXTCLOUD_DATA_DIR"
|
||||||
fi
|
fi
|
||||||
sudo -E -u www-data rm -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
|
sudo -u www-data rm -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
|
||||||
|
|
||||||
# Install additional dependencies
|
# Install additional dependencies
|
||||||
if [ -n "$ADDITIONAL_APKS" ]; then
|
if [ -n "$ADDITIONAL_APKS" ]; then
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM alpine:3.22.2
|
FROM alpine:3.22.1
|
||||||
|
|
||||||
COPY --chmod=775 start.sh /start.sh
|
COPY --chmod=775 start.sh /start.sh
|
||||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||||
|
|||||||
@@ -66,13 +66,8 @@ if [ "$POSTGRES_USER" = nextcloud ]; then
|
|||||||
export POSTGRES_USER
|
export POSTGRES_USER
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Postgres root cert
|
|
||||||
if [ -f "/nextcloud/data/certificates/POSTGRES" ]; then
|
|
||||||
POSTGRES_CERT="?sslmode=verify-ca&sslrootcert=/nextcloud/data/certificates/POSTGRES"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Set sensitive values as env
|
# Set sensitive values as env
|
||||||
export DATABASE_URL="$DATABASE_TYPE://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB$POSTGRES_CERT"
|
export DATABASE_URL="$DATABASE_TYPE://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB"
|
||||||
export REDIS_URL="redis://$REDIS_USER:$REDIS_HOST_PASSWORD@$REDIS_HOST/$REDIS_DB_INDEX"
|
export REDIS_URL="redis://$REDIS_USER:$REDIS_HOST_PASSWORD@$REDIS_HOST/$REDIS_DB_INDEX"
|
||||||
|
|
||||||
# Run it
|
# Run it
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
|
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
|
||||||
FROM onlyoffice/documentserver:9.1.0.1
|
FROM onlyoffice/documentserver:9.0.4.1
|
||||||
|
|
||||||
# USER root is probably used
|
# USER root is probably used
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
# From https://github.com/docker-library/postgres/blob/master/17/alpine3.22/Dockerfile
|
# From https://github.com/docker-library/postgres/blob/master/17/alpine3.22/Dockerfile
|
||||||
FROM postgres:17.7-alpine
|
FROM postgres:17.5-alpine
|
||||||
|
|
||||||
COPY --chmod=775 start.sh /start.sh
|
COPY --chmod=775 start.sh /start.sh
|
||||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
# From https://github.com/redis/docker-library-redis/blob/release/8.2/alpine/Dockerfile
|
# From https://github.com/docker-library/redis/blob/master/7.2/alpine/Dockerfile
|
||||||
FROM redis:8.2.3-alpine
|
FROM redis:7.2.10-alpine
|
||||||
|
|
||||||
COPY --chmod=775 start.sh /start.sh
|
COPY --chmod=775 start.sh /start.sh
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM python:3.14.0-alpine3.22
|
FROM python:3.13.6-alpine3.22
|
||||||
|
|
||||||
COPY --chmod=775 start.sh /start.sh
|
COPY --chmod=775 start.sh /start.sh
|
||||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||||
|
|
||||||
ENV RECORDING_VERSION=v0.2.1
|
ENV RECORDING_VERSION=v0.1
|
||||||
ENV ALLOW_ALL=false
|
ENV ALLOW_ALL=false
|
||||||
ENV HPB_PROTOCOL=https
|
ENV HPB_PROTOCOL=https
|
||||||
ENV NC_PROTOCOL=https
|
ENV NC_PROTOCOL=https
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
[logs]
|
[logs]
|
||||||
# Log level based on numeric values of Python logging levels:
|
# Log level based on numeric values of Python logging levels:
|
||||||
# - Critical: 50
|
# - Critical: 50
|
||||||
@@ -14,11 +12,6 @@
|
|||||||
# IP and port to listen on for HTTP requests.
|
# IP and port to listen on for HTTP requests.
|
||||||
#listen = 127.0.0.1:8000
|
#listen = 127.0.0.1:8000
|
||||||
|
|
||||||
[app]
|
|
||||||
# Comma separated list of trusted proxies (IPs or CIDR networks) that may set
|
|
||||||
# the "X-Forwarded-For" header.
|
|
||||||
#trustedproxies =
|
|
||||||
|
|
||||||
[backend]
|
[backend]
|
||||||
# Allow any hostname as backend endpoint. This is extremely insecure and should
|
# Allow any hostname as backend endpoint. This is extremely insecure and should
|
||||||
# only be used during development.
|
# only be used during development.
|
||||||
@@ -107,18 +100,6 @@
|
|||||||
# ffmpeg. The options given here fully override the default global options.
|
# ffmpeg. The options given here fully override the default global options.
|
||||||
#common = ffmpeg -loglevel level+warning -n
|
#common = ffmpeg -loglevel level+warning -n
|
||||||
|
|
||||||
# The (additional) options given to ffmpeg for the audio input. The options
|
|
||||||
# given here extend the default options for the audio input, although they do
|
|
||||||
# not override them.
|
|
||||||
# Default options: '-f pulse -i {AUDIO_SOURCE}'
|
|
||||||
#inputaudio =
|
|
||||||
|
|
||||||
# The (additional) options given to ffmpeg for the video input. The options
|
|
||||||
# given here extend the default options for the video input, although they do
|
|
||||||
# not override them.
|
|
||||||
# Default options: '-f x11grab -draw_mouse 0 -video_size {WIDTH}x{HEIGHT} -i {VIDEO_SOURCE}'
|
|
||||||
#inputvideo =
|
|
||||||
|
|
||||||
# The options given to ffmpeg to encode the audio output. The options given here
|
# The options given to ffmpeg to encode the audio output. The options given here
|
||||||
# fully override the default options for the audio output.
|
# fully override the default options for the audio output.
|
||||||
#outputaudio = -c:a libopus
|
#outputaudio = -c:a libopus
|
||||||
@@ -140,30 +121,3 @@
|
|||||||
# Allowed values: firefox, chrome
|
# Allowed values: firefox, chrome
|
||||||
# Defaults to firefox
|
# Defaults to firefox
|
||||||
# browser = firefox
|
# browser = firefox
|
||||||
|
|
||||||
# Path to the Selenium driver to use for recordings.
|
|
||||||
# If set the driver must match the browser being used (for example,
|
|
||||||
# "/usr/bin/geckodriver" for "firefox"). If no driver is explicitly set Selenium
|
|
||||||
# Manager will try to find the right one in $PATH, downloading it as a fallback.
|
|
||||||
# Note that Selenium Manager does not work in some architectures (for example,
|
|
||||||
# Linux on arm64/aarch64), so in those architectures the driver must be
|
|
||||||
# explicitly set.
|
|
||||||
#driverPath =
|
|
||||||
|
|
||||||
# Path to the browser executable to use for recordings.
|
|
||||||
# If set the executable must match the browser being used (for example,
|
|
||||||
# "/usr/bin/firefox-esr" for "firefox"). If no executable is explicitly set
|
|
||||||
# Selenium Manager will try to find the right one in $PATH. Depending on the
|
|
||||||
# installed Selenium version if the executable is not found Selenium Manager may
|
|
||||||
# also download the browser as a fallback.
|
|
||||||
# Note that Selenium Manager does not work in some architectures (for example,
|
|
||||||
# Linux on arm64/aarch64); in those architectures the Selenium driver will try
|
|
||||||
# to find the executable, but the executable may need to be explicitly set if
|
|
||||||
# not found by the driver.
|
|
||||||
#browserPath =
|
|
||||||
|
|
||||||
[stats]
|
|
||||||
# Comma-separated list of IP addresses (or CIDR networks) that are allowed to
|
|
||||||
# access the stats endpoint.
|
|
||||||
# Leave commented to only allow access from "127.0.0.1".
|
|
||||||
#allowed_ips =
|
|
||||||
|
|||||||
@@ -59,8 +59,6 @@ extensionvideo = .webm
|
|||||||
|
|
||||||
[recording]
|
[recording]
|
||||||
browser = firefox
|
browser = firefox
|
||||||
driverPath = /usr/bin/geckodriver
|
|
||||||
browserPath = /usr/bin/firefox
|
|
||||||
RECORDING_CONF
|
RECORDING_CONF
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM nats:2.12.2-scratch AS nats
|
FROM nats:2.11.7-scratch AS nats
|
||||||
FROM eturnal/eturnal:1.12.2-alpine AS eturnal
|
FROM eturnal/eturnal:1.12.1 AS eturnal
|
||||||
FROM strukturag/nextcloud-spreed-signaling:2.0.4 AS signaling
|
FROM strukturag/nextcloud-spreed-signaling:2.0.3 AS signaling
|
||||||
FROM alpine:3.22.2 AS janus
|
FROM alpine:3.22.1 AS janus
|
||||||
|
|
||||||
ARG JANUS_VERSION=v1.3.3
|
ARG JANUS_VERSION=v1.3.2
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk upgrade --no-cache -a; \
|
apk upgrade --no-cache -a; \
|
||||||
@@ -35,7 +35,7 @@ RUN set -ex; \
|
|||||||
make configs; \
|
make configs; \
|
||||||
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
|
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
|
||||||
|
|
||||||
FROM alpine:3.22.2
|
FROM alpine:3.22.1
|
||||||
ENV ETURNAL_ETC_DIR="/conf"
|
ENV ETURNAL_ETC_DIR="/conf"
|
||||||
ENV SKIP_CERT_VERIFY=false
|
ENV SKIP_CERT_VERIFY=false
|
||||||
COPY --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local
|
COPY --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local
|
||||||
|
|||||||
@@ -84,8 +84,7 @@ internalsecret = the-shared-secret-for-internal-clients
|
|||||||
# For backend type "etcd":
|
# For backend type "etcd":
|
||||||
# Key prefix of backend entries. All keys below will be watched and assumed to
|
# Key prefix of backend entries. All keys below will be watched and assumed to
|
||||||
# contain a JSON document with the following entries:
|
# contain a JSON document with the following entries:
|
||||||
# - "urls": List of urls of the Nextcloud instance.
|
# - "url": Url of the Nextcloud instance.
|
||||||
# - "url": Url of the Nextcloud instance (deprecated).
|
|
||||||
# - "secret": Shared secret for requests from and to the backend servers.
|
# - "secret": Shared secret for requests from and to the backend servers.
|
||||||
#
|
#
|
||||||
# Additional optional entries:
|
# Additional optional entries:
|
||||||
@@ -94,8 +93,8 @@ internalsecret = the-shared-secret-for-internal-clients
|
|||||||
# - "sessionlimit": Number of sessions that are allowed to connect.
|
# - "sessionlimit": Number of sessions that are allowed to connect.
|
||||||
#
|
#
|
||||||
# Example:
|
# Example:
|
||||||
# "/signaling/backend/one" -> {"urls": ["https://nextcloud.domain1.invalid"], ...}
|
# "/signaling/backend/one" -> {"url": "https://nextcloud.domain1.invalid", ...}
|
||||||
# "/signaling/backend/two" -> {"urls": ["https://domain2.invalid/nextcloud"], ...}
|
# "/signaling/backend/two" -> {"url": "https://domain2.invalid/nextcloud", ...}
|
||||||
#backendprefix = /signaling/backend
|
#backendprefix = /signaling/backend
|
||||||
|
|
||||||
# Allow any hostname as backend endpoint. This is extremely insecure and should
|
# Allow any hostname as backend endpoint. This is extremely insecure and should
|
||||||
@@ -123,8 +122,8 @@ connectionsperhost = 8
|
|||||||
# Backend configurations as defined in the "[backend]" section above. The
|
# Backend configurations as defined in the "[backend]" section above. The
|
||||||
# section names must match the ids used in "backends" above.
|
# section names must match the ids used in "backends" above.
|
||||||
#[backend-id]
|
#[backend-id]
|
||||||
# Comma-separated list of urls of the Nextcloud instance
|
# URL of the Nextcloud instance
|
||||||
#urls = https://cloud.domain.invalid
|
#url = https://cloud.domain.invalid
|
||||||
|
|
||||||
# Shared secret for requests from and to the backend servers. Leave empty to use
|
# Shared secret for requests from and to the backend servers. Leave empty to use
|
||||||
# the common shared secret from above.
|
# the common shared secret from above.
|
||||||
@@ -144,8 +143,8 @@ connectionsperhost = 8
|
|||||||
#maxscreenbitrate = 2097152
|
#maxscreenbitrate = 2097152
|
||||||
|
|
||||||
#[another-backend]
|
#[another-backend]
|
||||||
# Comma-separated list of urls of the Nextcloud instance
|
# URL of the Nextcloud instance
|
||||||
#urls = https://cloud.otherdomain.invalid
|
#url = https://cloud.otherdomain.invalid
|
||||||
|
|
||||||
# Shared secret for requests from and to the backend servers. Leave empty to use
|
# Shared secret for requests from and to the backend servers. Leave empty to use
|
||||||
# the common shared secret from above.
|
# the common shared secret from above.
|
||||||
@@ -180,13 +179,6 @@ connectionsperhost = 8
|
|||||||
# proxy server that is used.
|
# proxy server that is used.
|
||||||
#maxscreenbitrate = 2097152
|
#maxscreenbitrate = 2097152
|
||||||
|
|
||||||
# List of IP addresses / subnets that are allowed to be used by clients in
|
|
||||||
# candidates. The allowed list has preference over the blocked list below.
|
|
||||||
#allowedcandidates = 10.0.0.0/8
|
|
||||||
|
|
||||||
# List of IP addresses / subnets to filter from candidates received by clients.
|
|
||||||
#blockedcandidates = 1.2.3.0/24
|
|
||||||
|
|
||||||
# For type "proxy": timeout in seconds for requests to the proxy server.
|
# For type "proxy": timeout in seconds for requests to the proxy server.
|
||||||
#proxytimeout = 2
|
#proxytimeout = 2
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ connectionsperhost = 8
|
|||||||
skipverify = ${SKIP_CERT_VERIFY}
|
skipverify = ${SKIP_CERT_VERIFY}
|
||||||
|
|
||||||
[backend-1]
|
[backend-1]
|
||||||
urls = https://${NC_DOMAIN}
|
url = https://${NC_DOMAIN}
|
||||||
secret = ${SIGNALING_SECRET}
|
secret = ${SIGNALING_SECRET}
|
||||||
maxstreambitrate = ${TALK_MAX_STREAM_BITRATE}
|
maxstreambitrate = ${TALK_MAX_STREAM_BITRATE}
|
||||||
maxscreenbitrate = ${TALK_MAX_SCREEN_BITRATE}
|
maxscreenbitrate = ${TALK_MAX_SCREEN_BITRATE}
|
||||||
|
|||||||
@@ -1,21 +1,13 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
FROM golang:1.25.4-alpine3.22 AS go
|
FROM ghcr.io/nicholas-fedor/watchtower:v1.11.7 AS watchtower
|
||||||
|
|
||||||
ENV WATCHTOWER_COMMIT_HASH=6c5a1b0bea65cea1d4cc1de5196789a01617957a
|
FROM alpine:3.22.1
|
||||||
|
|
||||||
RUN set -ex; \
|
|
||||||
apk upgrade --no-cache -a; \
|
|
||||||
apk add --no-cache \
|
|
||||||
build-base; \
|
|
||||||
go install github.com/nicholas-fedor/watchtower@$WATCHTOWER_COMMIT_HASH # v1.12.3
|
|
||||||
|
|
||||||
FROM alpine:3.22.2
|
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk upgrade --no-cache -a; \
|
apk upgrade --no-cache -a; \
|
||||||
apk add --no-cache bash ca-certificates tzdata
|
apk add --no-cache bash ca-certificates tzdata
|
||||||
|
|
||||||
COPY --from=go /go/bin/watchtower /watchtower
|
COPY --from=watchtower /watchtower /watchtower
|
||||||
|
|
||||||
COPY --chmod=775 start.sh /start.sh
|
COPY --chmod=775 start.sh /start.sh
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,12 @@
|
|||||||
# syntax=docker/dockerfile:latest
|
# syntax=docker/dockerfile:latest
|
||||||
# Probably from this file: https://github.com/nextcloud/whiteboard/blob/main/Dockerfile
|
# Probably from this file: https://github.com/nextcloud/whiteboard/blob/main/Dockerfile
|
||||||
FROM ghcr.io/nextcloud-releases/whiteboard:v1.4.1
|
FROM ghcr.io/nextcloud-releases/whiteboard:v1.1.2
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
|
apk upgrade --no-cache -a; \
|
||||||
apk add --no-cache bash; \
|
apk add --no-cache bash; \
|
||||||
chmod 777 -R /tmp; \
|
chmod 777 -R /tmp
|
||||||
if [ -f /usr/lib/chromium/chrome_crashpad_handler ] && [ ! -f /usr/lib/chromium/chrome_crashpad_handler.real ]; then \
|
|
||||||
mv /usr/lib/chromium/chrome_crashpad_handler /usr/lib/chromium/chrome_crashpad_handler.real; \
|
|
||||||
printf '%s\n' '#!/bin/sh' "exec /usr/lib/chromium/chrome_crashpad_handler.real --no-periodic-tasks --database=\"\${CRASHPAD_DATABASE:-/tmp/chrome-crashpad}\" \"\$@\"" >/usr/lib/chromium/chrome_crashpad_handler; \
|
|
||||||
chmod +x /usr/lib/chromium/chrome_crashpad_handler; \
|
|
||||||
fi
|
|
||||||
USER 65534
|
USER 65534
|
||||||
|
|
||||||
COPY --chmod=775 start.sh /start.sh
|
COPY --chmod=775 start.sh /start.sh
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<category>monitoring</category>
|
<category>monitoring</category>
|
||||||
<bugs>https://github.com/nextcloud/all-in-one/issues</bugs>
|
<bugs>https://github.com/nextcloud/all-in-one/issues</bugs>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<nextcloud min-version="31" max-version="32"/>
|
<nextcloud min-version="30" max-version="31"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<settings>
|
<settings>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
"display_name": "Caddy with geoblocking",
|
"display_name": "Caddy with geoblocking",
|
||||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy",
|
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy",
|
||||||
"image": "ghcr.io/szaimen/aio-caddy",
|
"image": "ghcr.io/szaimen/aio-caddy",
|
||||||
"image_tag": "v3",
|
"image_tag": "v2",
|
||||||
"internal_port": "443",
|
"internal_port": "443",
|
||||||
"restart": "unless-stopped",
|
"restart": "unless-stopped",
|
||||||
"ports": [
|
"ports": [
|
||||||
@@ -13,13 +13,17 @@
|
|||||||
"ip_binding": "",
|
"ip_binding": "",
|
||||||
"port_number": "443",
|
"port_number": "443",
|
||||||
"protocol": "tcp"
|
"protocol": "tcp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ip_binding": "",
|
||||||
|
"port_number": "443",
|
||||||
|
"protocol": "udp"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"environment": [
|
"environment": [
|
||||||
"TZ=%TIMEZONE%",
|
"TZ=%TIMEZONE%",
|
||||||
"NC_DOMAIN=%NC_DOMAIN%",
|
"NC_DOMAIN=%NC_DOMAIN%",
|
||||||
"APACHE_PORT=%APACHE_PORT%",
|
"APACHE_PORT=%APACHE_PORT%"
|
||||||
"NEXTCLOUD_EXPORTER_CADDY_PASSWORD=%NEXTCLOUD_EXPORTER_CADDY_PASSWORD%"
|
|
||||||
],
|
],
|
||||||
"volumes": [
|
"volumes": [
|
||||||
{
|
{
|
||||||
@@ -33,14 +37,9 @@
|
|||||||
"writeable": false
|
"writeable": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"secrets": [
|
|
||||||
"NEXTCLOUD_EXPORTER_CADDY_PASSWORD"
|
|
||||||
],
|
|
||||||
"aio_variables": [
|
"aio_variables": [
|
||||||
"apache_ip_binding=@INTERNAL",
|
"apache_ip_binding=@INTERNAL",
|
||||||
"apache_port=11000",
|
"apache_port=11000"
|
||||||
"turn_domain=%NC_DOMAIN%",
|
|
||||||
"talk_port=443"
|
|
||||||
],
|
],
|
||||||
"nextcloud_exec_commands": [
|
"nextcloud_exec_commands": [
|
||||||
"mkdir '/mnt/ncdata/admin/files/nextcloud-aio-caddy'",
|
"mkdir '/mnt/ncdata/admin/files/nextcloud-aio-caddy'",
|
||||||
|
|||||||
@@ -1,18 +1,15 @@
|
|||||||
## Caddy with geoblocking
|
## Caddy with geoblocking
|
||||||
This container bundles caddy and auto-configures it for you. It also covers [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden) by listening on `bw.$NC_DOMAIN`, if installed. It also covers [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart) by listening on `mail.$NC_DOMAIN`, if installed. It also covers [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin) by listening on `media.$NC_DOMAIN`, if installed. It also covers [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap) by listening on `ldap.$NC_DOMAIN`, if installed. It also covers [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb) by listening on `tables.$NC_DOMAIN`, if installed. It also covers [jellyseerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr) by listening on `requests.$NC_DOMAIN`, if installed. It also covers [nextcloud-exporter](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter) by listening on `metrics.$NC_DOMAIN`, if installed.
|
This container bundles caddy and auto-configures it for you. It also covers [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden) by listening on `bw.$NC_DOMAIN`, if installed. It also covers [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart) by listening on `mail.$NC_DOMAIN`, if installed. It also covers [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin) by listening on `media.$NC_DOMAIN`, if installed. It also covers [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap) by listening on `ldap.$NC_DOMAIN`, if installed. It also covers [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb) by listening on `tables.$NC_DOMAIN`, if installed. It also covers [jellyseerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr) by listening on `requests.$NC_DOMAIN`, if installed.
|
||||||
|
|
||||||
### Notes
|
### Notes
|
||||||
- This container is incompatible with the [npmplus](https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus) community container. So make sure that you do not enable both at the same time!
|
- This container is incompatible with the [npmplus](https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus) community container. So make sure that you do not enable both at the same time!
|
||||||
- Make sure that no other service is using port 443 on your host as otherwise the containers will fail to start. You can check this with `sudo netstat -tulpn | grep 443` before installing AIO.
|
- Make sure that no other service is using port 443 on your host as otherwise the containers will fail to start. You can check this with `sudo netstat -tulpn | grep 443` before installing AIO.
|
||||||
- Starting with AIO v12, the Talk port that was usually exposed on port 3478 is now set to port 443 udp and tcp and reachable via `your-nc-domain.com`. For the changes to become activated, you need to go to `https://your-nc-domain.com/settings/admin/talk` and delete all turn and stun servers. Then restart the containers and the new config should become active.
|
|
||||||
- Starting with AIO v12, you can also limit vaultwarden, stalwart and lldap to certain ip-addresses. You can do so by creating a `allowed-IPs-vaultwarden.txt`, `allowed-IPs-stalwart.txt`, or `allowed-IPs-lldap.txt` file in the `nextcloud-aio-caddy` directory of your admin user and adding the ip-addresses in these files.
|
|
||||||
- If you want to use this with [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden), make sure that you point `bw.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for vaultwarden.
|
- If you want to use this with [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden), make sure that you point `bw.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for vaultwarden.
|
||||||
- If you want to use this with [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart), make sure that you point `mail.your-nc-domain.com` to your server using an A, AAAA or CNAME record so that caddy can get a certificate automatically for stalwart.
|
- If you want to use this with [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart), make sure that you point `mail.your-nc-domain.com` to your server using an A, AAAA or CNAME record so that caddy can get a certificate automatically for stalwart.
|
||||||
- If you want to use this with [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin), make sure that you point `media.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyfin.
|
- If you want to use this with [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin), make sure that you point `media.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyfin.
|
||||||
- If you want to use this with [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap), make sure that you point `ldap.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for lldap.
|
- If you want to use this with [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap), make sure that you point `ldap.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for lldap.
|
||||||
- If you want to use this with [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb), make sure that you point `tables.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nocodb.
|
- If you want to use this with [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb), make sure that you point `tables.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nocodb.
|
||||||
- If you want to use this with [jellyseerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr), make sure that you point `requests.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyseerr.
|
- If you want to use this with [jellyseerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr), make sure that you point `requests.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyseerr.
|
||||||
- If you want to use this with [nextcloud-exporter](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter), make sure that you point `metrics.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nextcloud-exporter.
|
|
||||||
- After the container was started the first time, you should see a new `nextcloud-aio-caddy` folder and inside there an `allowed-countries.txt` file when you open the files app with the default `admin` user. In there you can adjust the allowed country codes for caddy by adding them to the first line, e.g. `IT FR` would allow access from italy and france. Private ip-ranges are always allowed. Additionally, in order to activate this config, you need to get an account at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data and download the `GeoLite2-Country.mmdb` and upload it with this exact name into the `nextcloud-aio-caddy` folder. Afterwards restart all containers from the AIO interface and your new config should be active!
|
- After the container was started the first time, you should see a new `nextcloud-aio-caddy` folder and inside there an `allowed-countries.txt` file when you open the files app with the default `admin` user. In there you can adjust the allowed country codes for caddy by adding them to the first line, e.g. `IT FR` would allow access from italy and france. Private ip-ranges are always allowed. Additionally, in order to activate this config, you need to get an account at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data and download the `GeoLite2-Country.mmdb` and upload it with this exact name into the `nextcloud-aio-caddy` folder. Afterwards restart all containers from the AIO interface and your new config should be active!
|
||||||
- You can add your own Caddy configurations in `/data/caddy-imports/` inside the Caddy container (`sudo docker exec -it nextcloud-aio-caddy bash`). These will be imported on container startup. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
|
- You can add your own Caddy configurations in `/data/caddy-imports/` inside the Caddy container (`sudo docker exec -it nextcloud-aio-caddy bash`). These will be imported on container startup. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
|
||||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
This container packages calcardbackup which is a tool that exports calendars and addressbooks from Nextcloud to .ics and .vcf files and saves them to a compressed file.
|
This container packages calcardbackup which is a tool that exports calendars and addressbooks from Nextcloud to .ics and .vcf files and saves them to a compressed file.
|
||||||
|
|
||||||
### Notes
|
### Notes
|
||||||
- Backups will be created at 00:00 UTC every day. Make sure that this does not conflict with the configured daily backups inside AIO.
|
- Backups will be created at 00:00 CEST every day. Make sure that this does not conflict with the configured daily backups inside AIO.
|
||||||
- All the exports will be included in AIOs backup solution
|
- All the exports will be included in AIOs backup solution
|
||||||
- You can find the exports in the nextcloud_aio_calcardbackup volume
|
- You can find the exports in the nextcloud_aio_calcardbackup volume
|
||||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||||
|
|||||||
@@ -10,21 +10,18 @@
|
|||||||
"restart": "unless-stopped",
|
"restart": "unless-stopped",
|
||||||
"environment": [
|
"environment": [
|
||||||
"TZ=%TIMEZONE%",
|
"TZ=%TIMEZONE%",
|
||||||
"API_KEY=%FACERECOGNITION_API_KEY%",
|
"API_KEY=some-super-secret-api-key",
|
||||||
"FACE_MODEL=3"
|
"FACE_MODEL=3"
|
||||||
],
|
],
|
||||||
"aio_variables": [
|
"aio_variables": [
|
||||||
"nextcloud_memory_limit=2048M"
|
"nextcloud_memory_limit=2048M"
|
||||||
],
|
],
|
||||||
"secrets": [
|
|
||||||
"FACERECOGNITION_API_KEY"
|
|
||||||
],
|
|
||||||
"enable_nvidia_gpu": false,
|
"enable_nvidia_gpu": false,
|
||||||
"nextcloud_exec_commands": [
|
"nextcloud_exec_commands": [
|
||||||
"php /var/www/html/occ app:install facerecognition",
|
"php /var/www/html/occ app:install facerecognition",
|
||||||
"php /var/www/html/occ app:enable facerecognition",
|
"php /var/www/html/occ app:enable facerecognition",
|
||||||
"php /var/www/html/occ config:system:set facerecognition.external_model_url --value nextcloud-aio-facerecognition:5000",
|
"php /var/www/html/occ config:system:set facerecognition.external_model_url --value nextcloud-aio-facerecognition:5000",
|
||||||
"php /var/www/html/occ config:system:set facerecognition.external_model_api_key --value %FACERECOGNITION_API_KEY%",
|
"php /var/www/html/occ config:system:set facerecognition.external_model_api_key --value some-super-secret-api-key",
|
||||||
"php /var/www/html/occ face:setup -m 5",
|
"php /var/www/html/occ face:setup -m 5",
|
||||||
"php /var/www/html/occ face:setup -M 1G",
|
"php /var/www/html/occ face:setup -M 1G",
|
||||||
"php /var/www/html/occ config:app:set facerecognition analysis_image_area --value 4320000",
|
"php /var/www/html/occ config:app:set facerecognition analysis_image_area --value 4320000",
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"aio_services_v1": [
|
|
||||||
{
|
|
||||||
"container_name": "nextcloud-aio-languagetool",
|
|
||||||
"display_name": "LanguageTool for Collabora",
|
|
||||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/languagetool",
|
|
||||||
"image": "erikvl87/languagetool",
|
|
||||||
"image_tag": "latest",
|
|
||||||
"internal_port": "8010",
|
|
||||||
"restart": "unless-stopped",
|
|
||||||
"environment": [
|
|
||||||
"TZ=%TIMEZONE%"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
## LanguageTool for Collabora
|
|
||||||
This container bundles a LanguageTool for Collabora which adds spell checking functionality to Collabora.
|
|
||||||
|
|
||||||
### Notes
|
|
||||||
- Make sure to have collabora enabled via the AIO interface
|
|
||||||
- After adding this container via the AIO Interface, while all containers are still stopped, you need to scroll down to the `Additional Collabora options` section and enter `--o:languagetool.enabled=true --o:languagetool.base_url=http://nextcloud-aio-languagetool:8010/v2`.
|
|
||||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
|
||||||
|
|
||||||
### Repository
|
|
||||||
https://github.com/Erikvl87/docker-languagetool
|
|
||||||
|
|
||||||
### Maintainer
|
|
||||||
https://github.com/szaimen
|
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
"LLDAP_JWT_SECRET",
|
"LLDAP_JWT_SECRET",
|
||||||
"LLDAP_LDAP_USER_PASS"
|
"LLDAP_LDAP_USER_PASS"
|
||||||
],
|
],
|
||||||
"ui_secret": "LLDAP_LDAP_USER_PASS",
|
"ui_secret": "LLDAP_JWT_SECRET",
|
||||||
"volumes": [
|
"volumes": [
|
||||||
{
|
{
|
||||||
"source": "nextcloud_aio_lldap",
|
"source": "nextcloud_aio_lldap",
|
||||||
|
|||||||
@@ -18,7 +18,10 @@ Functionality with this configuration:
|
|||||||
|
|
||||||
> For simplicity, this configuration is done via the command line (don't worry, it's very simple).
|
> For simplicity, this configuration is done via the command line (don't worry, it's very simple).
|
||||||
|
|
||||||
First, you need to retrieve the LLDAP admin password that you can see next to the container in the AIO interface. There you can configure smtp first and then invite users via mail.
|
First, you need to retrieve the LLDAP admin password, this will be used later on. Which you need to type in or copy and paste:
|
||||||
|
```bash
|
||||||
|
sudo docker inspect nextcloud-aio-lldap | grep LLDAP_LDAP_USER_PASS
|
||||||
|
```
|
||||||
|
|
||||||
Now go into the Nextcloud container:<br>
|
Now go into the Nextcloud container:<br>
|
||||||
**Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management. This script below can be run from inside the container-management container via `bash /lldap.sh`.
|
**Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management. This script below can be run from inside the container-management container via `bash /lldap.sh`.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ This container bundles MakeMKV and auto-configures it for you.
|
|||||||
- This container should only be run in home networks
|
- This container should only be run in home networks
|
||||||
- ⚠️ This container mounts all devices from the host inside the container in order to be able to access the external DVD/Blu-ray drives which is a security issue. However no better solution was found for the time being.
|
- ⚠️ This container mounts all devices from the host inside the container in order to be able to access the external DVD/Blu-ray drives which is a security issue. However no better solution was found for the time being.
|
||||||
- This container only works on Linux and not on Docker-Desktop.
|
- This container only works on Linux and not on Docker-Desktop.
|
||||||
- This container requires the [`NEXTCLOUD_MOUNT` variable in AIO to be set](https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host). Otherwise the output will not be saved correctly..
|
- This container requires the [`NEXTCLOUD_MOUNT` variable in AIO to be set](https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host). Otherwise the output will not be saved correctly..
|
||||||
- After adding and starting the container, you need to visit `https://internal.ip.of.server:5802` in order to log in with the `makemkv` user and the password that you can see next to the container in the AIO interface. (The web page uses a self-signed certificate, so you need to accept the warning).
|
- After adding and starting the container, you need to visit `https://internal.ip.of.server:5802` in order to log in with the `makemkv` user and the password that you can see next to the container in the AIO interface. (The web page uses a self-signed certificate, so you need to accept the warning).
|
||||||
- After the first login, you can adjust the `/output` directory in the MakeMKV settings to a subdirectory of the root of your chosen `NEXTCLOUD_MOUNT`. (by default `NEXTCLOUD_MOUNT` is mounted to `/output` inside the container. Thus all data is written to the root of it)
|
- After the first login, you can adjust the `/output` directory in the MakeMKV settings to a subdirectory of the root of your chosen `NEXTCLOUD_MOUNT`. (by default `NEXTCLOUD_MOUNT` is mounted to `/output` inside the container. Thus all data is written to the root of it)
|
||||||
- The configured `NEXTCLOUD_DATADIR` is getting mounted to `/storage` inside the container.
|
- The configured `NEXTCLOUD_DATADIR` is getting mounted to `/storage` inside the container.
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
"aio_services_v1": [
|
|
||||||
{
|
|
||||||
"container_name": "nextcloud-aio-minio",
|
|
||||||
"image_tag": "v2",
|
|
||||||
"display_name": "Minio S3 Storage",
|
|
||||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/minio",
|
|
||||||
"image": "ghcr.io/szaimen/aio-minio",
|
|
||||||
"internal_port": "9000",
|
|
||||||
"environment": [
|
|
||||||
"MINIO_ROOT_USER=nextcloud",
|
|
||||||
"MINIO_ROOT_PASSWORD=%MINIO_ROOT_PASSWORD%"
|
|
||||||
],
|
|
||||||
"secrets": [
|
|
||||||
"MINIO_ROOT_PASSWORD"
|
|
||||||
],
|
|
||||||
"volumes": [
|
|
||||||
{
|
|
||||||
"source": "nextcloud_aio_minio",
|
|
||||||
"destination": "/data",
|
|
||||||
"writeable": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"backup_volumes": [
|
|
||||||
"nextcloud_aio_minio"
|
|
||||||
],
|
|
||||||
"nextcloud_exec_commands": [
|
|
||||||
"php /var/www/html/occ config:system:set objectstore class --value 'OC\\Files\\ObjectStore\\S3'",
|
|
||||||
"php /var/www/html/occ config:system:set objectstore arguments autocreate --value true --type bool",
|
|
||||||
"php /var/www/html/occ config:system:set objectstore arguments use_path_style --value true --type bool",
|
|
||||||
"php /var/www/html/occ config:system:set objectstore arguments use_ssl --value false --type bool",
|
|
||||||
"php /var/www/html/occ config:system:set objectstore arguments region --value ''",
|
|
||||||
"php /var/www/html/occ config:system:set objectstore arguments bucket --value nextcloud",
|
|
||||||
"php /var/www/html/occ config:system:set objectstore arguments key --value nextcloud",
|
|
||||||
"php /var/www/html/occ config:system:set objectstore arguments secret --value %MINIO_ROOT_PASSWORD%",
|
|
||||||
"php /var/www/html/occ config:system:set objectstore arguments port --value 9000",
|
|
||||||
"php /var/www/html/occ config:system:set objectstore arguments hostname --value nextcloud-aio-minio"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
## Minio
|
|
||||||
This container bundles minio s3 storage and auto-configures it for you.
|
|
||||||
|
|
||||||
>[!WARNING]
|
|
||||||
> Enabling this container will remove access to all the files formerly written to the data directory.
|
|
||||||
> So only enable this on a clean instance directly after installing AIO.
|
|
||||||
> All additional users that are added via Nextcloud afterwards are going to work correctly.
|
|
||||||
> Also, after enabling and using it, make sure to not disable the container as you cannot migrate from s3 to local storage anymore and s3 is a critical part of your infrastructure from then on.
|
|
||||||
|
|
||||||
### Notes
|
|
||||||
- The data of Minio will be automatically included in AIOs backup solution!
|
|
||||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
|
||||||
|
|
||||||
### Repository
|
|
||||||
https://github.com/szaimen/aio-minio
|
|
||||||
|
|
||||||
### Maintainer
|
|
||||||
https://github.com/szaimen
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
"aio_services_v1": [
|
|
||||||
{
|
|
||||||
"container_name": "nextcloud-aio-nextcloud-exporter",
|
|
||||||
"display_name": "Prometheus Nextcloud Exporter",
|
|
||||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter",
|
|
||||||
"image": "ghcr.io/xperimental/nextcloud-exporter",
|
|
||||||
"image_tag": "0.9.0",
|
|
||||||
"internal_port": "9205",
|
|
||||||
"restart": "unless-stopped",
|
|
||||||
"ports": [
|
|
||||||
{
|
|
||||||
"ip_binding": "127.0.0.1",
|
|
||||||
"port_number": "9205",
|
|
||||||
"protocol": "tcp"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"environment": [
|
|
||||||
"TZ=%TIMEZONE%",
|
|
||||||
"NEXTCLOUD_SERVER=https://%NC_DOMAIN%",
|
|
||||||
"NEXTCLOUD_AUTH_TOKEN=%NEXTCLOUD_EXPORTER_TOKEN%",
|
|
||||||
"NEXTCLOUD_LISTEN_ADDRESS=0.0.0.0:9205",
|
|
||||||
"NEXTCLOUD_TIMEOUT=5s"
|
|
||||||
],
|
|
||||||
"ui_secret": "NEXTCLOUD_EXPORTER_CADDY_PASSWORD",
|
|
||||||
"secrets": [
|
|
||||||
"NEXTCLOUD_EXPORTER_TOKEN",
|
|
||||||
"NEXTCLOUD_EXPORTER_CADDY_PASSWORD"
|
|
||||||
],
|
|
||||||
"nextcloud_exec_commands": [
|
|
||||||
"php /var/www/html/occ config:app:set serverinfo token --value %NEXTCLOUD_EXPORTER_TOKEN%"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
## Prometheus Nextcloud Exporter
|
|
||||||
|
|
||||||
A Prometheus exporter that collects metrics from your Nextcloud instance for monitoring and alerting.
|
|
||||||
|
|
||||||
### How to install
|
|
||||||
|
|
||||||
See the [Community Containers documentation](https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers) for instructions on how to install this in your Nextcloud All-in-One setup.
|
|
||||||
|
|
||||||
### Security & Access
|
|
||||||
|
|
||||||
**Important:** This container is configured to bind only to `127.0.0.1` (localhost) for security reasons. Prometheus exporters typically don't include authentication, so direct network exposure is not recommended.
|
|
||||||
|
|
||||||
#### Access Options
|
|
||||||
|
|
||||||
1. **With Caddy Container (Recommended)**: If you also install the [Caddy community container](https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy), it will automatically configure secure HTTPS access to your metrics with authentication at `metrics.your-domain.com`
|
|
||||||
|
|
||||||
**Getting Authentication Credentials**:
|
|
||||||
- **Username**: Always `metrics`
|
|
||||||
- **Password**: After deploying the nextcloud-exporter container, the automatically generated password will be displayed in the AIO interface. Look for it in the container section below the container name "Prometheus Nextcloud Exporter".
|
|
||||||
|
|
||||||
2. **Custom Reverse Proxy**: Set up your own reverse proxy (nginx, Apache, etc.) to provide HTTPS and authentication. See configuration guides:
|
|
||||||
- [NGINX Authentication](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html) + [Reverse Proxy](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/)
|
|
||||||
- [Apache Authentication](https://httpd.apache.org/docs/2.4/howto/auth.html) + [Reverse Proxy](https://httpd.apache.org/docs/2.4/mod/mod_proxy.html)
|
|
||||||
- [Traefik BasicAuth](https://doc.traefik.io/traefik/middlewares/http/basicauth/)
|
|
||||||
- [Prometheus Security Best Practices](https://prometheus.io/docs/operating/security/)
|
|
||||||
|
|
||||||
3. **Direct Local Access**: Access metrics directly from the server at `http://127.0.0.1:9205/metrics` (no authentication)
|
|
||||||
|
|
||||||
### What it monitors
|
|
||||||
- User activity (active users hourly, daily)
|
|
||||||
- File counts and storage usage
|
|
||||||
- System health and database size
|
|
||||||
- App statistics and update availability
|
|
||||||
- Nextcloud performance metrics
|
|
||||||
|
|
||||||
### Prometheus Configuration
|
|
||||||
|
|
||||||
For **local server access** (if Prometheus runs on the same server):
|
|
||||||
```yaml
|
|
||||||
scrape_configs:
|
|
||||||
- job_name: 'nextcloud'
|
|
||||||
scrape_interval: 90s
|
|
||||||
static_configs:
|
|
||||||
- targets: ['127.0.0.1:9205']
|
|
||||||
metrics_path: /metrics
|
|
||||||
scheme: http
|
|
||||||
```
|
|
||||||
|
|
||||||
For **Caddy integration** (secure external access):
|
|
||||||
```yaml
|
|
||||||
scrape_configs:
|
|
||||||
- job_name: 'nextcloud'
|
|
||||||
scrape_interval: 90s
|
|
||||||
static_configs:
|
|
||||||
- targets: ['metrics.your-domain.com']
|
|
||||||
metrics_path: /
|
|
||||||
scheme: https
|
|
||||||
basic_auth:
|
|
||||||
username: 'metrics'
|
|
||||||
password: 'your-generated-password'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Visualization
|
|
||||||
|
|
||||||
Compatible with Grafana for creating monitoring dashboards:
|
|
||||||
- Pre-built dashboard available: [Grafana Dashboard #20716](https://grafana.com/grafana/dashboards/20716-nextcloud/)
|
|
||||||
|
|
||||||
### Repository
|
|
||||||
https://github.com/xperimental/nextcloud-exporter
|
|
||||||
|
|
||||||
### Maintainer
|
|
||||||
https://github.com/grotax
|
|
||||||
@@ -48,8 +48,7 @@
|
|||||||
"environment": [
|
"environment": [
|
||||||
"TZ=%TIMEZONE%",
|
"TZ=%TIMEZONE%",
|
||||||
"NC_DOMAIN=%NC_DOMAIN%",
|
"NC_DOMAIN=%NC_DOMAIN%",
|
||||||
"STALWART_USER_PASS=%STALWART_USER_PASS%",
|
"STALWART_USER_PASS=%STALWART_USER_PASS%"
|
||||||
"CLAMAV_ENABLED=%CLAMAV_ENABLED%"
|
|
||||||
],
|
],
|
||||||
"secrets": [
|
"secrets": [
|
||||||
"STALWART_USER_PASS"
|
"STALWART_USER_PASS"
|
||||||
|
|||||||
+8
-17
@@ -1,19 +1,17 @@
|
|||||||
services:
|
services:
|
||||||
nextcloud-aio-mastercontainer:
|
nextcloud-aio-mastercontainer:
|
||||||
image: ghcr.io/nextcloud-releases/all-in-one:latest # This is the container image used. You can switch to ghcr.io/nextcloud-releases/all-in-one:beta if you want to help testing new releases. See https://github.com/nextcloud/all-in-one#how-to-switch-the-channel
|
image: ghcr.io/nextcloud-releases/all-in-one:latest
|
||||||
init: true # This setting makes sure that signals from main process inside the container are correctly forwarded to children. See https://docs.docker.com/reference/compose-file/services/#init
|
init: true
|
||||||
restart: always # This makes sure that the container starts always together with the host OS. See https://docs.docker.com/reference/compose-file/services/#restart
|
restart: always
|
||||||
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly
|
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly
|
||||||
volumes:
|
volumes:
|
||||||
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work
|
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!
|
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!
|
||||||
network_mode: bridge # This adds the container to the same network as docker run would do. Comment this line and uncomment the line below and the networks section at the end of the file if you want to define a custom MTU size for the docker network
|
network_mode: bridge # add to the same network as docker run would do
|
||||||
# networks: ["nextcloud-aio"]
|
|
||||||
ports:
|
ports:
|
||||||
- 80:80 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
- 80:80 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||||
- 8080:8080 # This is the AIO interface, served via https and self-signed certificate. See https://github.com/nextcloud/all-in-one#explanation-of-used-ports
|
- 8080:8080
|
||||||
- 8443:8443 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
- 8443:8443 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||||
# security_opt: ["label:disable"] # Is needed when using SELinux. See https://github.com/nextcloud/all-in-one#are-there-known-problems-when-selinux-is-enabled
|
|
||||||
# environment: # Is needed when using any of the options below
|
# environment: # Is needed when using any of the options below
|
||||||
# AIO_DISABLE_BACKUP_SECTION: false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section
|
# AIO_DISABLE_BACKUP_SECTION: false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section
|
||||||
# APACHE_PORT: 11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
# APACHE_PORT: 11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||||
@@ -21,7 +19,6 @@ services:
|
|||||||
# APACHE_ADDITIONAL_NETWORK: frontend_net # (Optional) Connect the apache container to an additional docker network. Needed when behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) running in a different docker network on same server. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
# APACHE_ADDITIONAL_NETWORK: frontend_net # (Optional) Connect the apache container to an additional docker network. Needed when behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) running in a different docker network on same server. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||||
# BORG_RETENTION_POLICY: --keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy
|
# BORG_RETENTION_POLICY: --keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy
|
||||||
# COLLABORA_SECCOMP_DISABLED: false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
|
# COLLABORA_SECCOMP_DISABLED: false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
|
||||||
# DOCKER_API_VERSION: 1.44 # You can adjust the internally used docker api version with this variable. ⚠️⚠️⚠️ Warning: please note that only the default api version (unset this variable) is supported and tested by the maintainers of Nextcloud AIO. So use this on your own risk and things might break without warning. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-internally-used-docker-api-version
|
|
||||||
# FULLTEXTSEARCH_JAVA_OPTIONS: "-Xms1024M -Xmx1024M" # Allows to adjust the fulltextsearch java options. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-fulltextsearch-java-options
|
# FULLTEXTSEARCH_JAVA_OPTIONS: "-Xms1024M -Xmx1024M" # Allows to adjust the fulltextsearch java options. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-fulltextsearch-java-options
|
||||||
# NEXTCLOUD_DATADIR: /mnt/ncdata # Allows to set the host directory for Nextcloud's datadir. ⚠️⚠️⚠️ Warning: do not set or adjust this value after the initial Nextcloud installation is done! See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
|
# NEXTCLOUD_DATADIR: /mnt/ncdata # Allows to set the host directory for Nextcloud's datadir. ⚠️⚠️⚠️ Warning: do not set or adjust this value after the initial Nextcloud installation is done! See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
|
||||||
# NEXTCLOUD_MOUNT: /mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
|
# NEXTCLOUD_MOUNT: /mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
|
||||||
@@ -35,12 +32,13 @@ services:
|
|||||||
# NEXTCLOUD_ENABLE_DRI_DEVICE: true # This allows to enable the /dev/dri device for containers that profit from it. ⚠️⚠️⚠️ Warning: this only works if the '/dev/dri' device is present on the host! If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud
|
# NEXTCLOUD_ENABLE_DRI_DEVICE: true # This allows to enable the /dev/dri device for containers that profit from it. ⚠️⚠️⚠️ Warning: this only works if the '/dev/dri' device is present on the host! If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud
|
||||||
# NEXTCLOUD_ENABLE_NVIDIA_GPU: true # This allows to enable the NVIDIA runtime and GPU access for containers that profit from it. ⚠️⚠️⚠️ Warning: this only works if an NVIDIA gpu is installed on the server. See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud.
|
# NEXTCLOUD_ENABLE_NVIDIA_GPU: true # This allows to enable the NVIDIA runtime and GPU access for containers that profit from it. ⚠️⚠️⚠️ Warning: this only works if an NVIDIA gpu is installed on the server. See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud.
|
||||||
# NEXTCLOUD_KEEP_DISABLED_APPS: false # Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. See https://github.com/nextcloud/all-in-one#how-to-keep-disabled-apps
|
# NEXTCLOUD_KEEP_DISABLED_APPS: false # Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. See https://github.com/nextcloud/all-in-one#how-to-keep-disabled-apps
|
||||||
# SKIP_DOMAIN_VALIDATION: false # This should only be set to true if things are correctly configured. See https://github.com/nextcloud/all-in-one#how-to-skip-the-domain-validation
|
# SKIP_DOMAIN_VALIDATION: false # This should only be set to true if things are correctly configured. See https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-skip-the-domain-validation
|
||||||
# TALK_PORT: 3478 # This allows to adjust the port that the talk container is using which is exposed on the host. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port
|
# TALK_PORT: 3478 # This allows to adjust the port that the talk container is using which is exposed on the host. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port
|
||||||
# WATCHTOWER_DOCKER_SOCKET_PATH: /var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
|
# WATCHTOWER_DOCKER_SOCKET_PATH: /var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
|
||||||
|
# security_opt: ["label:disable"] # Is needed when using SELinux
|
||||||
|
|
||||||
# # Optional: Caddy reverse proxy. See https://github.com/nextcloud/all-in-one/discussions/575
|
# # Optional: Caddy reverse proxy. See https://github.com/nextcloud/all-in-one/discussions/575
|
||||||
# # Alternatively, use Tailscale if you don't have a domain yet. See https://github.com/nextcloud/all-in-one/discussions/6817
|
# # Alternatively, use Tailscale if you don't have a domain yet. See https://github.com/nextcloud/all-in-one/discussions/5439
|
||||||
# # Hint: You need to uncomment APACHE_PORT: 11000 above, adjust cloud.example.com to your domain and uncomment the necessary docker volumes at the bottom of this file in order to make it work
|
# # Hint: You need to uncomment APACHE_PORT: 11000 above, adjust cloud.example.com to your domain and uncomment the necessary docker volumes at the bottom of this file in order to make it work
|
||||||
# # You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/588
|
# # You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/588
|
||||||
# caddy:
|
# caddy:
|
||||||
@@ -71,10 +69,3 @@ volumes: # If you want to store the data on a different drive, see https://githu
|
|||||||
# caddy_config:
|
# caddy_config:
|
||||||
# caddy_data:
|
# caddy_data:
|
||||||
# caddy_sites:
|
# caddy_sites:
|
||||||
|
|
||||||
# # Adjust the MTU size of the docker network. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-mtu-size-of-the-docker-network
|
|
||||||
# networks:
|
|
||||||
# nextcloud-aio:
|
|
||||||
# name: nextcloud-aio
|
|
||||||
# driver_opts:
|
|
||||||
# com.docker.network.driver.mtu: 1440
|
|
||||||
|
|||||||
+5
-18
@@ -48,25 +48,12 @@ This is documented here: https://github.com/nextcloud-releases/all-in-one/tree/m
|
|||||||
## How to connect to the database?
|
## How to connect to the database?
|
||||||
Simply run `sudo docker exec -it nextcloud-aio-database psql -U oc_nextcloud nextcloud_database` and you should be in.
|
Simply run `sudo docker exec -it nextcloud-aio-database psql -U oc_nextcloud nextcloud_database` and you should be in.
|
||||||
|
|
||||||
## How to locally build and test changes to mastercontainer
|
## How to locally build and test changes to mastercontainer?
|
||||||
1. Ensure you are on the developer channel per the instructions above.
|
1. Push changes to your own git fork and branch.
|
||||||
1. Use the commands below from the project root to build the mastercontainer image:
|
1. Use below commands to build mastercontainer image for a custom git url and branch:
|
||||||
```
|
```
|
||||||
docker buildx build --file Containers/mastercontainer/Dockerfile --tag ghcr.io/nextcloud-releases/all-in-one:develop --load .
|
cd Containers/mastercontainer
|
||||||
|
docker buildx build -t ghcr.io/nextcloud-releases/all-in-one:latest --build-arg AIO_GIT_URL="https://github.com/my-fork-repo/all-in-one.git" --build-arg AIO_GIT_BRANCH="my-feature-branch" --load .
|
||||||
```
|
```
|
||||||
1. Start a container with above built image.
|
1. Start a container with above built image.
|
||||||
1. Since the hash of a locally built image doesn't match the latest release mastercontainer, it prompts for a mandatory update. To temporarily bypass the update suffix `?bypass_mastercontainer_update` to the URL. Eg: `https://localhost:8080/containers?bypass_mastercontainer_update`
|
1. Since the hash of a locally built image doesn't match the latest release mastercontainer, it prompts for a mandatory update. To temporarily bypass the update suffix `?bypass_mastercontainer_update` to the URL. Eg: `https://localhost:8080/containers?bypass_mastercontainer_update`
|
||||||
|
|
||||||
## How to locally build and test changes to other containers using the bypass_container_update param
|
|
||||||
1. Ensure you are on the developer channel per the instructions above.
|
|
||||||
1. Use the commands below from the project root to build the container image:
|
|
||||||
```
|
|
||||||
# For the "nextcloud" container
|
|
||||||
docker buildx build --file Containers/nextcloud/Dockerfile --tag ghcr.io/nextcloud-releases/aio-nextcloud:develop --load .
|
|
||||||
|
|
||||||
# For all other containers
|
|
||||||
docker buildx build --file Containers/{container}/Dockerfile --tag ghcr.io/nextcloud-releases/aio-{container}:develop --load Containers/{container}
|
|
||||||
```
|
|
||||||
1. Stop the containers using the AIO interface.
|
|
||||||
1. Reload the AIO interface with the param `bypass_container_update` to avoid overwriting your local changes, e.g. `https://localhost:8080/containers?bypass_container_update`.
|
|
||||||
1. Click "Start and update containers" and test your changes. Containers will not be updated, despite the button text.
|
|
||||||
|
|||||||
+1
-1
@@ -9,7 +9,7 @@ It is possible due to several reasons that you do not want or cannot open Nextcl
|
|||||||
- [5. Buy a certificate and use that](#5-buy-a-certificate-and-use-that)
|
- [5. Buy a certificate and use that](#5-buy-a-certificate-and-use-that)
|
||||||
|
|
||||||
## 1. Tailscale
|
## 1. Tailscale
|
||||||
This is the recommended way. For a reverse proxy example guide for Tailscale, see this guide by [@Perseus333](https://github.com/Perseus333): https://github.com/nextcloud/all-in-one/discussions/6817
|
This is the recommended way. For a reverse proxy example guide for Tailscale, see this guide by @flll: https://github.com/nextcloud/all-in-one/discussions/5439
|
||||||
|
|
||||||
## 2. The normal way
|
## 2. The normal way
|
||||||
The normal way is the following:
|
The normal way is the following:
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ services:
|
|||||||
expose:
|
expose:
|
||||||
- "9980"
|
- "9980"
|
||||||
environment:
|
environment:
|
||||||
- aliasgroup1=https://${NC_DOMAIN}:443,http://nextcloud-aio-apache:23973
|
- aliasgroup1=https://${NC_DOMAIN}:443
|
||||||
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:logging.level_startup=warning --o:home_mode.enable=true --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
|
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:logging.level_startup=warning --o:home_mode.enable=true --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
|
||||||
- dictionaries=${COLLABORA_DICTIONARIES}
|
- dictionaries=${COLLABORA_DICTIONARIES}
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
@@ -267,8 +267,6 @@ services:
|
|||||||
cap_add:
|
cap_add:
|
||||||
- MKNOD
|
- MKNOD
|
||||||
- SYS_ADMIN
|
- SYS_ADMIN
|
||||||
- SYS_CHROOT
|
|
||||||
- FOWNER
|
|
||||||
- CHOWN
|
- CHOWN
|
||||||
cap_drop:
|
cap_drop:
|
||||||
- NET_RAW
|
- NET_RAW
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ sed -i '/AIO_TOKEN/d' containers.yml
|
|||||||
sed -i '/AIO_URL/d' containers.yml
|
sed -i '/AIO_URL/d' containers.yml
|
||||||
sed -i '/DOCKER_SOCKET_PROXY_ENABLED/d' containers.yml
|
sed -i '/DOCKER_SOCKET_PROXY_ENABLED/d' containers.yml
|
||||||
sed -i '/ADDITIONAL_TRUSTED_PROXY/d' containers.yml
|
sed -i '/ADDITIONAL_TRUSTED_PROXY/d' containers.yml
|
||||||
sed -i '/TURN_DOMAIN/d' containers.yml
|
|
||||||
|
|
||||||
TCP="$(grep -oP '[%A-Z0-9_]+/tcp' containers.yml | sort -u)"
|
TCP="$(grep -oP '[%A-Z0-9_]+/tcp' containers.yml | sort -u)"
|
||||||
mapfile -t TCP <<< "$TCP"
|
mapfile -t TCP <<< "$TCP"
|
||||||
|
|||||||
+1
-1
@@ -108,7 +108,7 @@ However, if you are unsure check the ghcr.io (https://github.com/nextcloud-relea
|
|||||||
|
|
||||||
Once you see no more activities in the logs or a message like ```NOTICE: ready to handle connections```, we've done it!
|
Once you see no more activities in the logs or a message like ```NOTICE: ready to handle connections```, we've done it!
|
||||||
|
|
||||||
#### Now you can handle everything through the AIO interface and stop and restart the containers normally.
|
#### Now you can handle everything through the AIO admin interface and stop and restart the containers normally.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
name: nextcloud-aio-helm-chart
|
name: nextcloud-aio-helm-chart
|
||||||
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
|
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
|
||||||
version: 11.11.0
|
version: 11.5.0
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
keywords:
|
keywords:
|
||||||
- latest
|
- latest
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Nextcloud AIO Helm-chart
|
# Nextcloud AIO Helm-chart
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> For an enterprise-ready and scalable deployment method based on Helm Charts (also available for Podman and OpenShift), please [contact Nextcloud GmbH](https://nextcloud.com/enterprise/).
|
> For an enterprise-ready and scalable deployment method based on Helm Charts (also available for Podman), please [contact Nextcloud GmbH](https://nextcloud.com/enterprise/).
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> This Helm-Chart is not intended to be used with Ingress as it handles TLS itself via the built-in apache container and exposes a Loadbalancer port itself on the Cluster. See the [apache service](https://github.com/nextcloud/all-in-one/blob/main/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-service.yaml). However if the Cluster is used behind NAT, you can adjust `APACHE_PORT` to a different one than 443 and do the TLS offloading on an external Reverse Proxy that forwards the traffic to the configured port via http. If you really need the Ingress feature, please [contact Nextcloud GmbH](https://nextcloud.com/enterprise/) as we offer an enterprise-ready and scalable deployment method based on Helm Charts that also allows Ingress to be used.
|
> This Helm-Chart is not intended to be used with Ingress as it handles TLS itself via the built-in apache container and exposes a Loadbalancer port itself on the Cluster. See the [apache service](https://github.com/nextcloud/all-in-one/blob/main/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-service.yaml). However if the Cluster is used behind NAT, you can adjust `APACHE_PORT` to a different one than 443 and do the TLS offloading on an external Reverse Proxy that forwards the traffic to the configured port via http. If you really need the Ingress feature, please [contact Nextcloud GmbH](https://nextcloud.com/enterprise/) as we offer an enterprise-ready and scalable deployment method based on Helm Charts that also allows Ingress to be used.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-apache
|
io.kompose.service: nextcloud-aio-apache
|
||||||
name: nextcloud-aio-apache
|
name: nextcloud-aio-apache
|
||||||
@@ -17,7 +17,7 @@ spec:
|
|||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-apache
|
io.kompose.service: nextcloud-aio-apache
|
||||||
spec:
|
spec:
|
||||||
@@ -61,7 +61,7 @@ spec:
|
|||||||
value: "{{ .Values.TIMEZONE }}"
|
value: "{{ .Values.TIMEZONE }}"
|
||||||
- name: WHITEBOARD_HOST
|
- name: WHITEBOARD_HOST
|
||||||
value: nextcloud-aio-whiteboard
|
value: nextcloud-aio-whiteboard
|
||||||
image: ghcr.io/nextcloud-releases/aio-apache:20251031_122139
|
image: ghcr.io/nextcloud-releases/aio-apache:20250811_115851
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-apache
|
io.kompose.service: nextcloud-aio-apache
|
||||||
name: nextcloud-aio-apache
|
name: nextcloud-aio-apache
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-clamav
|
io.kompose.service: nextcloud-aio-clamav
|
||||||
name: nextcloud-aio-clamav
|
name: nextcloud-aio-clamav
|
||||||
@@ -18,7 +18,7 @@ spec:
|
|||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-clamav
|
io.kompose.service: nextcloud-aio-clamav
|
||||||
spec:
|
spec:
|
||||||
@@ -36,7 +36,7 @@ spec:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: init-subpath
|
- name: init-subpath
|
||||||
image: ghcr.io/nextcloud-releases/aio-alpine:20251031_122139
|
image: ghcr.io/nextcloud-releases/aio-alpine:20250811_115851
|
||||||
command:
|
command:
|
||||||
- mkdir
|
- mkdir
|
||||||
- "-p"
|
- "-p"
|
||||||
@@ -59,7 +59,7 @@ spec:
|
|||||||
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
|
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: "{{ .Values.TIMEZONE }}"
|
value: "{{ .Values.TIMEZONE }}"
|
||||||
image: ghcr.io/nextcloud-releases/aio-clamav:20251031_122139
|
image: ghcr.io/nextcloud-releases/aio-clamav:20250811_115851
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-clamav
|
io.kompose.service: nextcloud-aio-clamav
|
||||||
name: nextcloud-aio-clamav
|
name: nextcloud-aio-clamav
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-collabora
|
io.kompose.service: nextcloud-aio-collabora
|
||||||
name: nextcloud-aio-collabora
|
name: nextcloud-aio-collabora
|
||||||
@@ -16,7 +16,7 @@ spec:
|
|||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-collabora
|
io.kompose.service: nextcloud-aio-collabora
|
||||||
spec:
|
spec:
|
||||||
@@ -28,14 +28,14 @@ spec:
|
|||||||
- name: TZ
|
- name: TZ
|
||||||
value: "{{ .Values.TIMEZONE }}"
|
value: "{{ .Values.TIMEZONE }}"
|
||||||
- name: aliasgroup1
|
- name: aliasgroup1
|
||||||
value: https://{{ .Values.NC_DOMAIN }}:443,http://nextcloud-aio-apache:23973
|
value: https://{{ .Values.NC_DOMAIN }}:443
|
||||||
- name: dictionaries
|
- name: dictionaries
|
||||||
value: "{{ .Values.COLLABORA_DICTIONARIES }}"
|
value: "{{ .Values.COLLABORA_DICTIONARIES }}"
|
||||||
- name: extra_params
|
- name: extra_params
|
||||||
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:logging.level_startup=warning --o:home_mode.enable=true --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
|
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:logging.level_startup=warning --o:home_mode.enable=true --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
|
||||||
- name: server_name
|
- name: server_name
|
||||||
value: "{{ .Values.NC_DOMAIN }}"
|
value: "{{ .Values.NC_DOMAIN }}"
|
||||||
image: ghcr.io/nextcloud-releases/aio-collabora:20251031_122139
|
image: ghcr.io/nextcloud-releases/aio-collabora:20250811_115851
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
@@ -61,7 +61,5 @@ spec:
|
|||||||
add:
|
add:
|
||||||
- MKNOD
|
- MKNOD
|
||||||
- CAP_SYS_ADMIN
|
- CAP_SYS_ADMIN
|
||||||
- SYS_CHROOT
|
|
||||||
- FOWNER
|
|
||||||
- CHOWN
|
- CHOWN
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-collabora
|
io.kompose.service: nextcloud-aio-collabora
|
||||||
name: nextcloud-aio-collabora
|
name: nextcloud-aio-collabora
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-database
|
io.kompose.service: nextcloud-aio-database
|
||||||
name: nextcloud-aio-database
|
name: nextcloud-aio-database
|
||||||
@@ -17,7 +17,7 @@ spec:
|
|||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-database
|
io.kompose.service: nextcloud-aio-database
|
||||||
spec:
|
spec:
|
||||||
@@ -35,7 +35,7 @@ spec:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: init-subpath
|
- name: init-subpath
|
||||||
image: ghcr.io/nextcloud-releases/aio-alpine:20251031_122139
|
image: ghcr.io/nextcloud-releases/aio-alpine:20250811_115851
|
||||||
command:
|
command:
|
||||||
- mkdir
|
- mkdir
|
||||||
- "-p"
|
- "-p"
|
||||||
@@ -64,7 +64,7 @@ spec:
|
|||||||
value: nextcloud
|
value: nextcloud
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: "{{ .Values.TIMEZONE }}"
|
value: "{{ .Values.TIMEZONE }}"
|
||||||
image: ghcr.io/nextcloud-releases/aio-postgresql:20251031_122139
|
image: ghcr.io/nextcloud-releases/aio-postgresql:20250811_115851
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-database
|
io.kompose.service: nextcloud-aio-database
|
||||||
name: nextcloud-aio-database
|
name: nextcloud-aio-database
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-fulltextsearch
|
io.kompose.service: nextcloud-aio-fulltextsearch
|
||||||
name: nextcloud-aio-fulltextsearch
|
name: nextcloud-aio-fulltextsearch
|
||||||
@@ -18,13 +18,13 @@ spec:
|
|||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-fulltextsearch
|
io.kompose.service: nextcloud-aio-fulltextsearch
|
||||||
spec:
|
spec:
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: init-volumes
|
- name: init-volumes
|
||||||
image: ghcr.io/nextcloud-releases/aio-alpine:20251031_122139
|
image: ghcr.io/nextcloud-releases/aio-alpine:20250811_115851
|
||||||
command:
|
command:
|
||||||
- chmod
|
- chmod
|
||||||
- "777"
|
- "777"
|
||||||
@@ -54,7 +54,7 @@ spec:
|
|||||||
value: basic
|
value: basic
|
||||||
- name: xpack.security.enabled
|
- name: xpack.security.enabled
|
||||||
value: "false"
|
value: "false"
|
||||||
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20251031_122139
|
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20250811_115851
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-fulltextsearch
|
io.kompose.service: nextcloud-aio-fulltextsearch
|
||||||
name: nextcloud-aio-fulltextsearch
|
name: nextcloud-aio-fulltextsearch
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-imaginary
|
io.kompose.service: nextcloud-aio-imaginary
|
||||||
name: nextcloud-aio-imaginary
|
name: nextcloud-aio-imaginary
|
||||||
@@ -16,7 +16,7 @@ spec:
|
|||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-imaginary
|
io.kompose.service: nextcloud-aio-imaginary
|
||||||
spec:
|
spec:
|
||||||
@@ -38,7 +38,7 @@ spec:
|
|||||||
value: "{{ .Values.IMAGINARY_SECRET }}"
|
value: "{{ .Values.IMAGINARY_SECRET }}"
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: "{{ .Values.TIMEZONE }}"
|
value: "{{ .Values.TIMEZONE }}"
|
||||||
image: ghcr.io/nextcloud-releases/aio-imaginary:20251031_122139
|
image: ghcr.io/nextcloud-releases/aio-imaginary:20250811_115851
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
kompose.version: 1.37.0 (fb0539e64)
|
kompose.version: 1.36.0 (ae2a39403)
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: nextcloud-aio-imaginary
|
io.kompose.service: nextcloud-aio-imaginary
|
||||||
name: nextcloud-aio-imaginary
|
name: nextcloud-aio-imaginary
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user