mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-05-21 19:00:33 +00:00
Compare commits
281 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a647d10bf0 | ||
|
|
ce29c17ca4 | ||
|
|
1050095d89 | ||
|
|
0250098a71 | ||
|
|
1ea728bd2a | ||
|
|
bf8395c62e | ||
|
|
531104db66 | ||
|
|
32f8c6587c | ||
|
|
b375f61a70 | ||
|
|
519b5114d7 | ||
|
|
bd9070ec6a | ||
|
|
966e0175ab | ||
|
|
433a7c81fe | ||
|
|
386bab0958 | ||
|
|
dc209adb84 | ||
|
|
edeb5ca40a | ||
|
|
a0ec043c49 | ||
|
|
a54cfed53d | ||
|
|
a5e8c82e59 | ||
|
|
43e60cb76f | ||
|
|
496ec9ba17 | ||
|
|
505e2dc2ab | ||
|
|
4aaf8e9067 | ||
|
|
69d9c925d0 | ||
|
|
55e5ff0bd5 | ||
|
|
d9bf933937 | ||
|
|
09a3212b6b | ||
|
|
6e7f547ccd | ||
|
|
eb7921c9f9 | ||
|
|
63bb1d86c1 | ||
|
|
d7428f0424 | ||
|
|
593dfe731a | ||
|
|
72a15055b9 | ||
|
|
4a7e6ba6e0 | ||
|
|
0e99adeb94 | ||
|
|
4b10d77f6a | ||
|
|
7c61a2d346 | ||
|
|
d8d15b3d8b | ||
|
|
303c777123 | ||
|
|
c0eeb64a53 | ||
|
|
0ecbf79cf2 | ||
|
|
bb07424ae6 | ||
|
|
5b35c443e7 | ||
|
|
b5f579d0f9 | ||
|
|
df89a24077 | ||
|
|
e72163e731 | ||
|
|
c7634883af | ||
|
|
0495efcbbb | ||
|
|
804f58bd2f | ||
|
|
a901c08702 | ||
|
|
6365b86107 | ||
|
|
c993a66eaf | ||
|
|
af2cbb5a88 | ||
|
|
94b01818c3 | ||
|
|
9ecfe60b3b | ||
|
|
5021fba8a4 | ||
|
|
43a2aadad2 | ||
|
|
1bb4817671 | ||
|
|
378e0cdb96 | ||
|
|
35011bf58b | ||
|
|
bd43ed3b82 | ||
|
|
40436549e7 | ||
|
|
728f5eac3a | ||
|
|
0be33a9973 | ||
|
|
460791c516 | ||
|
|
a740c10edd | ||
|
|
8e5612977e | ||
|
|
26f76e95b1 | ||
|
|
7c0caaef82 | ||
|
|
6756330ec7 | ||
|
|
0544abbced | ||
|
|
6ddf0fb077 | ||
|
|
4351034143 | ||
|
|
d6887a3184 | ||
|
|
94c280566e | ||
|
|
24a1fefc03 | ||
|
|
c55eece802 | ||
|
|
2eb917f30b | ||
|
|
c4d4aad415 | ||
|
|
f8dd3abd20 | ||
|
|
848195c8fa | ||
|
|
d56730254b | ||
|
|
b4a12dad39 | ||
|
|
8b19e456fe | ||
|
|
ff19098f48 | ||
|
|
af72da74f0 | ||
|
|
42ab59dfe2 | ||
|
|
70d166fc03 | ||
|
|
a319a67134 | ||
|
|
c46b6b13a7 | ||
|
|
cded2dbb86 | ||
|
|
8e24b06d06 | ||
|
|
cd4c294799 | ||
|
|
88026afab3 | ||
|
|
56f6934263 | ||
|
|
3a8db48322 | ||
|
|
24357e34b2 | ||
|
|
4ce04eba4a | ||
|
|
eacca1ad5e | ||
|
|
973774a401 | ||
|
|
abcf8bfeb9 | ||
|
|
bf2f0fd65e | ||
|
|
89984e6c92 | ||
|
|
e09aacd29e | ||
|
|
2faf4f2452 | ||
|
|
6d6f50c966 | ||
|
|
2aa8aa7dda | ||
|
|
f529714a07 | ||
|
|
a2f7a221d7 | ||
|
|
b3f63e5f74 | ||
|
|
8d062f7461 | ||
|
|
5d3afccb71 | ||
|
|
f803cea6f1 | ||
|
|
3218e429ec | ||
|
|
2ed94446d7 | ||
|
|
546f11a654 | ||
|
|
9a4f132998 | ||
|
|
5d4cbeccd4 | ||
|
|
72b892088a | ||
|
|
78431692ee | ||
|
|
959f067598 | ||
|
|
1911b573d4 | ||
|
|
d84c7bf704 | ||
|
|
9e72a29726 | ||
|
|
5a910a33f0 | ||
|
|
649ac3d226 | ||
|
|
c29911f006 | ||
|
|
8b564a74c5 | ||
|
|
e6119332ee | ||
|
|
8261ce0ad9 | ||
|
|
e94525eb5f | ||
|
|
af1483a4d4 | ||
|
|
eb26e68b0c | ||
|
|
3c8a262fd7 | ||
|
|
50b56ed363 | ||
|
|
8761289d06 | ||
|
|
343db3de13 | ||
|
|
9982bb2156 | ||
|
|
8a575e96fb | ||
|
|
ab1fc6bcbc | ||
|
|
e8215a112b | ||
|
|
7a39ec46c6 | ||
|
|
281c276df0 | ||
|
|
ad93ccd476 | ||
|
|
23aa99dc8f | ||
|
|
4e11ae3d22 | ||
|
|
5204ea633f | ||
|
|
147e81c503 | ||
|
|
0800fd4458 | ||
|
|
d1125142cc | ||
|
|
a8ced69ab4 | ||
|
|
9d0b52296d | ||
|
|
06b1116402 | ||
|
|
473007f4cd | ||
|
|
142d3e8997 | ||
|
|
e2946faf02 | ||
|
|
3474801116 | ||
|
|
cf70d53c5b | ||
|
|
73ef6db4cf | ||
|
|
9f92af0259 | ||
|
|
d2e330a78f | ||
|
|
939e5fec8a | ||
|
|
26695effa2 | ||
|
|
f17a27b80c | ||
|
|
d6dd6140c3 | ||
|
|
e92cbc211b | ||
|
|
c701ae38f8 | ||
|
|
ed857db3c1 | ||
|
|
1321f875e9 | ||
|
|
2af1eaf207 | ||
|
|
4c162237bf | ||
|
|
0445b4c5f1 | ||
|
|
ba4446f565 | ||
|
|
3c74ebf347 | ||
|
|
0db3f95219 | ||
|
|
7a3bcc73c6 | ||
|
|
8e55a6f35f | ||
|
|
992608a2b0 | ||
|
|
0be1f9827b | ||
|
|
3389af0bdf | ||
|
|
fb815dd5b4 | ||
|
|
c7cd473c99 | ||
|
|
dbe3fb4472 | ||
|
|
84bbc6d936 | ||
|
|
6737c188a3 | ||
|
|
e53ffb85a4 | ||
|
|
d791161357 | ||
|
|
2251a218dd | ||
|
|
52fd6d63c7 | ||
|
|
fd1d21c364 | ||
|
|
b252bc7730 | ||
|
|
4d3d8b9158 | ||
|
|
3ba0995dd7 | ||
|
|
91faf2bd34 | ||
|
|
d62e3b70ff | ||
|
|
25ca271055 | ||
|
|
2d8b8ab542 | ||
|
|
da3d20d648 | ||
|
|
01f3813308 | ||
|
|
7e8402aeb0 | ||
|
|
7c1d337d47 | ||
|
|
43e1dbb107 | ||
|
|
3d9c51baee | ||
|
|
c2744fb788 | ||
|
|
5d6fc71a61 | ||
|
|
2f70096a52 | ||
|
|
03c900ca09 | ||
|
|
95e8a461ce | ||
|
|
841e80e3b2 | ||
|
|
b413877c6f | ||
|
|
8712b3fa17 | ||
|
|
7e9a39a074 | ||
|
|
b9c30adab4 | ||
|
|
a86c92a94a | ||
|
|
32fac05807 | ||
|
|
d7caa2a7b4 | ||
|
|
f67015732f | ||
|
|
50acbb62d8 | ||
|
|
3ccdd332a9 | ||
|
|
6587f9ff68 | ||
|
|
22aa12d875 | ||
|
|
108035c720 | ||
|
|
1792d4c2fc | ||
|
|
12e4b0d561 | ||
|
|
a67fe51bbc | ||
|
|
f37b474708 | ||
|
|
5318d66d6d | ||
|
|
b892917671 | ||
|
|
ef66df0f08 | ||
|
|
8e8f5f1a04 | ||
|
|
a41dc9f2c0 | ||
|
|
e74f52aaeb | ||
|
|
6a383ef27a | ||
|
|
52305ce9e9 | ||
|
|
db55a1c282 | ||
|
|
c63440f2ee | ||
|
|
a27a255d3d | ||
|
|
8c4eda9d75 | ||
|
|
4e24200301 | ||
|
|
2cd955a7f2 | ||
|
|
6986eccad4 | ||
|
|
c369b1f4ae | ||
|
|
bbcbf71e6b | ||
|
|
8c1f6ac4f6 | ||
|
|
151b05ec01 | ||
|
|
164d4fb997 | ||
|
|
a23026889f | ||
|
|
9cd2d7eb7b | ||
|
|
0315d4c10f | ||
|
|
30981b9afa | ||
|
|
c990d03b91 | ||
|
|
35c641265c | ||
|
|
69a3087359 | ||
|
|
bc6dfe8711 | ||
|
|
2603941d35 | ||
|
|
e058ab96ea | ||
|
|
c5cc5d1521 | ||
|
|
41e6d7cf6d | ||
|
|
c8447f2713 | ||
|
|
f1114a2b23 | ||
|
|
f9cc25bb59 | ||
|
|
63d05b6065 | ||
|
|
4cacd38be2 | ||
|
|
b31286ae11 | ||
|
|
ab1cfee353 | ||
|
|
d91c58ea28 | ||
|
|
149688803c | ||
|
|
9ad7ea1456 | ||
|
|
83fc108d9c | ||
|
|
bc084eca93 | ||
|
|
eb3a133a0c | ||
|
|
0020bb45b2 | ||
|
|
8bf7a4d57f | ||
|
|
ca8c474cea | ||
|
|
f6fd960ba0 | ||
|
|
c4e1ab64fc | ||
|
|
7879b9ea0d | ||
|
|
c9b97220d0 | ||
|
|
ed8794522d | ||
|
|
a9710944f0 | ||
|
|
b84611a5ac |
10
.github/ISSUE_TEMPLATE/Bug_report.md
vendored
10
.github/ISSUE_TEMPLATE/Bug_report.md
vendored
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
about: Help us improving by reporting a bug
|
||||
labels: bug, 0. Needs triage
|
||||
labels: 0. Needs triage
|
||||
---
|
||||
|
||||
<!---
|
||||
@@ -20,11 +20,11 @@ labels: bug, 0. Needs triage
|
||||
### Actual behavior <!--- Tell us what happens instead -->
|
||||
|
||||
|
||||
### Host OS <!--- (the host OS on which you are trying to install AIO on) -->
|
||||
### Other information
|
||||
#### Host OS <!--- (the host OS on which you are trying to install AIO on) -->
|
||||
|
||||
#### Output of `sudo docker info`
|
||||
|
||||
#### Nextcloud AIO version <!--- (see Nextcloud AIO interface) -->
|
||||
|
||||
#### Current channel <!--- (see the channel name in the AIO interface) -->
|
||||
#### Docker run command or docker-compose file that you used
|
||||
|
||||
#### Other valuable info <!--- (like logs, screenshots & Co.) -->
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/Feature_request.md
vendored
2
.github/ISSUE_TEMPLATE/Feature_request.md
vendored
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: 📖 Existing feature/documentation enhancement
|
||||
about: Suggest an enhancement of an existing feature/documentation - for other types, please use the feature request option below
|
||||
labels: enhancement, 0. Needs triage
|
||||
labels: 0. Needs triage
|
||||
---
|
||||
|
||||
<!--- Please fill out the whole template below -->
|
||||
|
||||
174
.github/dependabot.yml
vendored
174
.github/dependabot.yml
vendored
@@ -16,170 +16,38 @@ updates:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/apache"
|
||||
directories:
|
||||
- "/Containers/apache"
|
||||
- "/Containers/borgbackup"
|
||||
- "/Containers/clamav"
|
||||
- "/Containers/collabora"
|
||||
- "/Containers/docker-socket-proxy"
|
||||
- "/Containers/domaincheck"
|
||||
- "/Containers/fulltextsearch"
|
||||
- "/Containers/imaginary"
|
||||
- "/Containers/mastercontainer"
|
||||
- "/Containers/nextcloud"
|
||||
- "/Containers/notify-push"
|
||||
- "/Containers/onlyoffice"
|
||||
- "/Containers/postgresql"
|
||||
- "/Containers/redis"
|
||||
- "/Containers/talk"
|
||||
- "/Containers/talk-recording"
|
||||
- "/Containers/watchtower"
|
||||
- "/Containers/whiteboard"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
time: "04:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/borgbackup"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/collabora"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/domaincheck"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/mastercontainer"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
ignore:
|
||||
- dependency-name: "php"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/nextcloud"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
ignore:
|
||||
- dependency-name: "php"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/postgresql"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
ignore:
|
||||
- dependency-name: "postgres"
|
||||
update-types: ["version-update:semver-major"]
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/redis"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
ignore:
|
||||
- dependency-name: "redis"
|
||||
update-types: ["version-update:semver-major"]
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/talk"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/talk-recording"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/watchtower"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/clamav"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/onlyoffice"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/imaginary"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/fulltextsearch"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
ignore:
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
- dependency-name: "elasticsearch"
|
||||
update-types: ["version-update:semver-major"]
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/notify-push"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/Containers/docker-socket-proxy"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
|
||||
51
.github/workflows/command-rebase.yml
vendored
51
.github/workflows/command-rebase.yml
vendored
@@ -1,51 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Rebase command
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: created
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
# On pull requests and if the comment starts with `/rebase`
|
||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "+1"
|
||||
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "-1"
|
||||
2
.github/workflows/dependency-updates.yml
vendored
2
.github/workflows/dependency-updates.yml
vendored
@@ -44,7 +44,7 @@ jobs:
|
||||
)"
|
||||
sed -i "s|pecl install APCu.*\;|pecl install APCu-$apcu_version\;|" ./Containers/mastercontainer/Dockerfile
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
commit-message: php dependency updates
|
||||
signoff: true
|
||||
|
||||
2
.github/workflows/imaginary-update.yml
vendored
2
.github/workflows/imaginary-update.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
sed -i "s|^ENV IMAGINARY_HASH.*$|ENV IMAGINARY_HASH=$imaginary_version|" ./Containers/imaginary/Dockerfile
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
commit-message: imaginary-update automated change
|
||||
signoff: true
|
||||
|
||||
14
.github/workflows/nextcloud-update.yml
vendored
14
.github/workflows/nextcloud-update.yml
vendored
@@ -25,7 +25,7 @@ jobs:
|
||||
| sort -V \
|
||||
| tail -1
|
||||
)"
|
||||
sed -i "s|pecl install APCu.*\;|pecl install APCu-$apcu_version\;|" ./Containers/nextcloud/Dockerfile
|
||||
sed -i "s|\(pecl install[^;]*APCu-\)[0-9.]*|\1$apcu_version|" ./Containers/nextcloud/Dockerfile
|
||||
|
||||
# Memcached
|
||||
memcached_version="$(
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
| sort -V \
|
||||
| tail -1
|
||||
)"
|
||||
sed -i "s|pecl install memcached.* |pecl install memcached-$memcached_version |" ./Containers/nextcloud/Dockerfile
|
||||
sed -i "s|\(pecl install[^;]*memcached-\)[0-9.]*|\1$memcached_version|" ./Containers/nextcloud/Dockerfile
|
||||
|
||||
# Redis
|
||||
redis_version="$(
|
||||
@@ -47,18 +47,18 @@ jobs:
|
||||
| sort -V \
|
||||
| tail -1
|
||||
)"
|
||||
sed -i "s|pecl install redis.* |pecl install redis-$redis_version |" ./Containers/nextcloud/Dockerfile
|
||||
sed -i "s|\(pecl install[^;]*redis-\)[0-9.]*|\1$redis_version|" ./Containers/nextcloud/Dockerfile
|
||||
|
||||
# Imagick
|
||||
imagick_version="$(
|
||||
git ls-remote --tags https://github.com/mkoppanen/imagick.git \
|
||||
git ls-remote --tags https://github.com/Imagick/imagick.git \
|
||||
| cut -d/ -f3 \
|
||||
| grep -viE '[a-z]' \
|
||||
| tr -d '^{}' \
|
||||
| sort -V \
|
||||
| tail -1
|
||||
)"
|
||||
sed -i "s|pecl install imagick.*\;|pecl install imagick-$imagick_version\;|" ./Containers/nextcloud/Dockerfile
|
||||
sed -i "s|\(pecl install[^;]*imagick-\)[0-9.]*|\1$imagick_version|" ./Containers/nextcloud/Dockerfile
|
||||
|
||||
# Igbinary
|
||||
igbinary_version="$(
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
| sort -V \
|
||||
| tail -1
|
||||
)"
|
||||
sed -i "s|pecl install igbinary.*\;|pecl install igbinary-$igbinary_version\;|" ./Containers/nextcloud/Dockerfile
|
||||
sed -i "s|\(pecl install[^;]*igbinary-\)[0-9.]*|\1$igbinary_version|" ./Containers/nextcloud/Dockerfile
|
||||
|
||||
# Nextcloud
|
||||
NC_MAJOR="$(grep "ENV NEXTCLOUD_VERSION" ./Containers/nextcloud/Dockerfile | grep -oP '[23][0-9]')"
|
||||
@@ -79,7 +79,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
commit-message: nextcloud-update automated change
|
||||
signoff: true
|
||||
|
||||
2
.github/workflows/psalm-update-baseline.yml
vendored
2
.github/workflows/psalm-update-baseline.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
||||
continue-on-error: true
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: Update psalm baseline
|
||||
|
||||
2
.github/workflows/talk.yml
vendored
2
.github/workflows/talk.yml
vendored
@@ -45,7 +45,7 @@ jobs:
|
||||
sed -i "s|^ARG JANUS_VERSION=.*$|ARG JANUS_VERSION=$janus_version|" ./Containers/talk/Dockerfile
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
commit-message: talk-update automated change
|
||||
signoff: true
|
||||
|
||||
2
.github/workflows/update-helm.yml
vendored
2
.github/workflows/update-helm.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
sudo bash nextcloud-aio-helm-chart/update-helm.sh "$DOCKER_TAG"
|
||||
fi
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
commit-message: Helm Chart updates
|
||||
signoff: true
|
||||
|
||||
2
.github/workflows/update-yaml.yml
vendored
2
.github/workflows/update-yaml.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
run: |
|
||||
sudo bash manual-install/update-yaml.sh
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
commit-message: Yaml updates
|
||||
signoff: true
|
||||
|
||||
@@ -51,6 +51,12 @@ https://{$ADDITIONAL_TRUSTED_DOMAIN}:443,
|
||||
reverse_proxy {$TALK_HOST}:8081
|
||||
}
|
||||
|
||||
# Whiteboard
|
||||
route /whiteboard/* {
|
||||
uri strip_prefix /whiteboard
|
||||
reverse_proxy {$WHITEBOARD_HOST}:3002
|
||||
}
|
||||
|
||||
# Nextcloud
|
||||
route {
|
||||
header Strict-Transport-Security max-age=31536000;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM alpine:3.20.2
|
||||
FROM alpine:3.20.3
|
||||
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
||||
@@ -71,8 +71,8 @@ if [ "$BORG_MODE" = backup ]; then
|
||||
echo "database-dump is missing. Cannot perform backup!"
|
||||
echo "Please check the database container logs!"
|
||||
exit 1
|
||||
elif ! [ -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.ocdata" ]; then
|
||||
echo "The .ocdata file is missing in Nextcloud datadir which means it is invalid!"
|
||||
elif ! [ -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.ocdata" ] && ! [ -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.ncdata" ]; then
|
||||
echo "The .ncdata or .ocdata file is missing in Nextcloud datadir which means it is invalid!"
|
||||
echo "Is the drive where the datadir is located on still mounted?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/1.3/alpine/Dockerfile
|
||||
FROM clamav/clamav:1.3.1-61
|
||||
FROM clamav/clamav:1.4.1-7
|
||||
|
||||
COPY clamav.conf /clamav.conf
|
||||
COPY --chmod=775 start.script /start.script
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
|
||||
FROM collabora/code:24.04.5.2.1
|
||||
FROM collabora/code:24.04.8.1.1
|
||||
|
||||
USER root
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM haproxy:3.0.3-alpine
|
||||
FROM haproxy:3.0.5-alpine
|
||||
|
||||
# hadolint ignore=DL3002
|
||||
USER root
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM alpine:3.20.2
|
||||
FROM alpine:3.20.3
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache bash lighttpd netcat-openbsd; \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
|
||||
FROM elasticsearch:8.14.3
|
||||
FROM elasticsearch:8.15.2
|
||||
|
||||
USER root
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM golang:1.22.5-alpine3.20 AS go
|
||||
FROM golang:1.23.2-alpine3.20 AS go
|
||||
|
||||
ENV IMAGINARY_HASH=6cd9edd1d3fb151eb773c14552886e4fc8e50138
|
||||
ENV IMAGINARY_HASH=8f36a26c448be8c151a3878404b75fcd1cd3cf0c
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache \
|
||||
@@ -13,7 +13,7 @@ RUN set -ex; \
|
||||
build-base; \
|
||||
go install github.com/h2non/imaginary@"$IMAGINARY_HASH";
|
||||
|
||||
FROM alpine:3.20.2
|
||||
FROM alpine:3.20.3
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache \
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Docker CLI is a requirement
|
||||
FROM docker:27.1.1-cli AS docker
|
||||
FROM docker:27.3.1-cli AS docker
|
||||
|
||||
# Caddy is a requirement
|
||||
FROM caddy:2.8.4-alpine AS caddy
|
||||
|
||||
# From https://github.com/docker-library/php/blob/master/8.3/alpine3.20/fpm/Dockerfile
|
||||
FROM php:8.3.9-fpm-alpine3.20
|
||||
FROM php:8.3.12-fpm-alpine3.20
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 8080
|
||||
@@ -42,7 +42,7 @@ RUN set -ex; \
|
||||
apk add --no-cache --virtual .build-deps \
|
||||
autoconf \
|
||||
build-base; \
|
||||
pecl install APCu-5.1.23; \
|
||||
pecl install APCu-5.1.24; \
|
||||
docker-php-ext-enable apcu; \
|
||||
rm -r /tmp/pear; \
|
||||
runDeps="$( \
|
||||
|
||||
@@ -91,14 +91,21 @@ else
|
||||
fi
|
||||
|
||||
# Check Storage drivers
|
||||
STORAGE_DRIVER="$(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
|
||||
if echo "$STORAGE_DRIVER" | grep -q vfs; then
|
||||
echo "$STORAGE_DRIVER"
|
||||
echo "Warning: It seems like the storage driver vfs is used. This will lead to problems with disk space and performance and is disrecommended!"
|
||||
print_red "Warning: It seems like the storage driver vfs is used. This will lead to problems with disk space and performance and is disrecommended!"
|
||||
elif echo "$STORAGE_DRIVER" | grep -q fuse-overlayfs; then
|
||||
echo "$STORAGE_DRIVER"
|
||||
echo "Warning: It seems like the storage driver fuse-overlayfs is used. Please check if you can switch to overlay2 instead."
|
||||
print_red "Warning: It seems like the storage driver fuse-overlayfs is used. Please check if you can switch to overlay2 instead."
|
||||
fi
|
||||
|
||||
# Check if snap install
|
||||
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 "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"
|
||||
fi
|
||||
|
||||
# Check if startup command was executed correctly
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM php:8.2.21-fpm-alpine3.20
|
||||
FROM php:8.2.24-fpm-alpine3.20
|
||||
|
||||
ENV PHP_MEMORY_LIMIT=512M
|
||||
ENV PHP_UPLOAD_LIMIT=10G
|
||||
ENV PHP_MAX_TIME=3600
|
||||
ENV SOURCE_LOCATION=/usr/src/nextcloud
|
||||
ENV REDIS_DB_INDEX=0
|
||||
|
||||
# AIO settings start # Do not remove or change this line!
|
||||
ENV NEXTCLOUD_VERSION=29.0.4
|
||||
ENV NEXTCLOUD_VERSION=29.0.8
|
||||
ENV AIO_TOKEN=123456
|
||||
ENV AIO_URL=localhost
|
||||
# AIO settings end # Do not remove or change this line!
|
||||
@@ -77,12 +78,10 @@ RUN set -ex; \
|
||||
; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install igbinary-3.2.15; \
|
||||
pecl install APCu-5.1.23; \
|
||||
pecl install memcached-3.2.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.0.2 \
|
||||
--configureoptions 'enable-redis-igbinary="yes" enable-redis-zstd="yes" enable-redis-lz4="yes"'; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install -D 'enable-memcached-igbinary="yes"' memcached-3.2.0; \
|
||||
pecl install -D 'enable-redis-igbinary="yes" enable-redis-zstd="yes" enable-redis-lz4="yes"' redis-6.1.0; \
|
||||
pecl install imagick-3.7.0; \
|
||||
\
|
||||
docker-php-ext-enable \
|
||||
@@ -131,7 +130,7 @@ RUN set -ex; \
|
||||
\
|
||||
{ \
|
||||
echo 'session.save_handler = redis'; \
|
||||
echo 'session.save_path = "tcp://${REDIS_HOST}:6379?auth=${REDIS_HOST_PASSWORD}"'; \
|
||||
echo 'session.save_path = "tcp://${REDIS_HOST}:6379/${REDIS_DB_INDEX}?auth=${REDIS_HOST_PASSWORD}"'; \
|
||||
echo 'redis.session.locking_enabled = 1'; \
|
||||
echo 'redis.session.lock_retries = -1'; \
|
||||
echo 'redis.session.lock_wait_time = 10000'; \
|
||||
|
||||
@@ -13,6 +13,6 @@ $CONFIG = array (
|
||||
),
|
||||
),
|
||||
);
|
||||
if (getenv('APPS_ALLOWLIST') !== false) {
|
||||
if (getenv('APPS_ALLOWLIST')) {
|
||||
$CONFIG['appsallowlist'] = explode(" ", getenv('APPS_ALLOWLIST'));
|
||||
}
|
||||
|
||||
13
Containers/nextcloud/config/proxy.config.php
Normal file
13
Containers/nextcloud/config/proxy.config.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
if (getenv('HTTP_PROXY')) {
|
||||
$CONFIG['proxy'] = getenv('HTTP_PROXY');
|
||||
}
|
||||
if (getenv('HTTPS_PROXY')) {
|
||||
$CONFIG['proxy'] = getenv('HTTPS_PROXY');
|
||||
}
|
||||
if (getenv('PROXY_USER_PASSWORD')) {
|
||||
$CONFIG['proxyuserpwd'] = getenv('PROXY_USER_PASSWORD');
|
||||
}
|
||||
if (getenv('NO_PROXY')) {
|
||||
$CONFIG['proxyexclude'] = explode(',', getenv('NO_PROXY'));
|
||||
}
|
||||
@@ -9,13 +9,13 @@ if (getenv('REDIS_HOST')) {
|
||||
),
|
||||
);
|
||||
|
||||
if (getenv('REDIS_HOST_PORT') !== false) {
|
||||
if (getenv('REDIS_HOST_PORT')) {
|
||||
$CONFIG['redis']['port'] = (int) getenv('REDIS_HOST_PORT');
|
||||
} elseif (getenv('REDIS_HOST')[0] != '/') {
|
||||
$CONFIG['redis']['port'] = 6379;
|
||||
}
|
||||
|
||||
if (getenv('REDIS_DB_INDEX') !== false) {
|
||||
if (getenv('REDIS_DB_INDEX')) {
|
||||
$CONFIG['redis']['dbindex'] = (int) getenv('REDIS_DB_INDEX');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,10 @@ directory_empty() {
|
||||
}
|
||||
|
||||
run_upgrade_if_needed_due_to_app_update() {
|
||||
if php /var/www/html/occ status | grep maintenance | grep -q true; then
|
||||
php /var/www/html/occ maintenance:mode --off
|
||||
fi
|
||||
if php /var/www/html/occ status | grep needsDbUpgrade | grep -q true; then
|
||||
# Disable integrity check temporarily until next update
|
||||
php /var/www/html/occ config:system:set integrity.check.disabled --type bool --value true
|
||||
php /var/www/html/occ upgrade
|
||||
php /var/www/html/occ app:enable nextcloud-aio --force
|
||||
fi
|
||||
@@ -99,6 +100,20 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
||||
# Write output to logfile.
|
||||
exec > >(tee -i "/var/www/html/data/update.log")
|
||||
exec 2>&1
|
||||
# Run built-in upgrader if version is below 28.0.2 to upgrade to 28.0.x first
|
||||
touch "$NEXTCLOUD_DATA_DIR/update.failed"
|
||||
if ! version_greater "$installed_version" "28.0.1.20"; then
|
||||
php /var/www/html/updater/updater.phar --no-interaction --no-backup
|
||||
if ! php /var/www/html/occ upgrade || php /var/www/html/occ status | grep maintenance | grep -q 'true'; then
|
||||
echo "Upgrade failed. Please restore from backup."
|
||||
bash /notify.sh "Nextcloud update to $image_version failed!" "Please restore from backup!"
|
||||
exit 1
|
||||
fi
|
||||
rm "$NEXTCLOUD_DATA_DIR/update.failed"
|
||||
# shellcheck disable=SC2016
|
||||
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||
INSTALLED_MAJOR="${installed_version%%.*}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$installed_version" != "0.0.0.0" ] && [ "$((IMAGE_MAJOR - INSTALLED_MAJOR))" -gt 1 ]; then
|
||||
@@ -421,12 +436,14 @@ DATADIR_PERMISSION_CONF
|
||||
|
||||
# Apply optimization
|
||||
echo "Doing some optimizations..."
|
||||
php /var/www/html/occ maintenance:repair
|
||||
if [ "$NEXTCLOUD_SKIP_DATABASE_OPTIMIZATION" != yes ]; then
|
||||
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-columns
|
||||
php /var/www/html/occ db:add-missing-primary-keys
|
||||
yes | php /var/www/html/occ db:convert-filecache-bigint
|
||||
else
|
||||
php /var/www/html/occ maintenance:repair
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -582,6 +599,10 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
|
||||
COLLABORA_HOST="$NC_DOMAIN"
|
||||
fi
|
||||
set +x
|
||||
# Remove richdcoumentscode if it should be incorrectly installed
|
||||
if [ -d "/var/www/html/custom_apps/richdocumentscode" ]; then
|
||||
php /var/www/html/occ app:remove richdocumentscode
|
||||
fi
|
||||
if ! [ -d "/var/www/html/custom_apps/richdocuments" ]; then
|
||||
php /var/www/html/occ app:install richdocuments
|
||||
elif [ "$(php /var/www/html/occ config:app:get richdocuments enabled)" != "yes" ]; then
|
||||
@@ -816,19 +837,34 @@ else
|
||||
fi
|
||||
|
||||
# Docker socket proxy
|
||||
if version_greater "$installed_version" "27.1.2.0"; then
|
||||
if [ "$DOCKER_SOCKET_PROXY_ENABLED" = 'yes' ]; then
|
||||
if ! [ -d "/var/www/html/custom_apps/app_api" ]; then
|
||||
php /var/www/html/occ app:install app_api
|
||||
elif [ "$(php /var/www/html/occ config:app:get app_api enabled)" != "yes" ]; then
|
||||
php /var/www/html/occ app:enable app_api
|
||||
elif [ "$SKIP_UPDATE" != 1 ]; then
|
||||
php /var/www/html/occ app:update app_api
|
||||
fi
|
||||
else
|
||||
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/app_api" ]; then
|
||||
php /var/www/html/occ app:remove app_api
|
||||
fi
|
||||
if [ "$DOCKER_SOCKET_PROXY_ENABLED" = 'yes' ]; then
|
||||
if ! [ -d "/var/www/html/custom_apps/app_api" ]; then
|
||||
php /var/www/html/occ app:install app_api
|
||||
elif [ "$(php /var/www/html/occ config:app:get app_api enabled)" != "yes" ]; then
|
||||
php /var/www/html/occ app:enable app_api
|
||||
elif [ "$SKIP_UPDATE" != 1 ]; then
|
||||
php /var/www/html/occ app:update app_api
|
||||
fi
|
||||
else
|
||||
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/app_api" ]; then
|
||||
php /var/www/html/occ app:remove app_api
|
||||
fi
|
||||
fi
|
||||
|
||||
# Whiteboard app
|
||||
if [ "$WHITEBOARD_ENABLED" = 'yes' ]; then
|
||||
if ! [ -d "/var/www/html/custom_apps/whiteboard" ]; then
|
||||
php /var/www/html/occ app:install whiteboard
|
||||
elif [ "$(php /var/www/html/occ config:app:get whiteboard enabled)" != "yes" ]; then
|
||||
php /var/www/html/occ app:enable whiteboard
|
||||
elif [ "$SKIP_UPDATE" != 1 ]; then
|
||||
php /var/www/html/occ app:update whiteboard
|
||||
fi
|
||||
php /var/www/html/occ config:app:set whiteboard collabBackendUrl --value="https://$NC_DOMAIN/whiteboard"
|
||||
php /var/www/html/occ config:app:set whiteboard jwt_secret_key --value="$WHITEBOARD_SECRET"
|
||||
else
|
||||
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/whiteboard" ]; then
|
||||
php /var/www/html/occ app:remove whiteboard
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM alpine:3.20.2
|
||||
FROM alpine:3.20.3
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
|
||||
@@ -48,9 +48,14 @@ echo "notify-push was started"
|
||||
if [ -z "$POSTGRES_PORT" ]; then
|
||||
POSTGRES_PORT=5432
|
||||
fi
|
||||
# Set a default for redis db index
|
||||
if [ -z "$REDIS_DB_INDEX" ]; then
|
||||
REDIS_DB_INDEX=0
|
||||
fi
|
||||
|
||||
# Set sensitive values as env
|
||||
export DATABASE_URL="postgres://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB"
|
||||
export REDIS_URL="redis://:$REDIS_HOST_PASSWORD@$REDIS_HOST"
|
||||
export REDIS_URL="redis://:$REDIS_HOST_PASSWORD@$REDIS_HOST/$REDIS_DB_INDEX"
|
||||
|
||||
# Run it
|
||||
/nextcloud/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
|
||||
FROM onlyoffice/documentserver:8.1.1.1
|
||||
FROM onlyoffice/documentserver:8.1.3.2
|
||||
|
||||
# USER root is probably used
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/docker-library/postgres/blob/master/16/alpine3.20/Dockerfile
|
||||
FROM postgres:16.3-alpine
|
||||
FROM postgres:16.4-alpine
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/docker-library/redis/blob/master/7.2/alpine/Dockerfile
|
||||
FROM redis:7.2.5-alpine
|
||||
FROM redis:7.2.6-alpine
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM python:3.12.4-alpine3.20
|
||||
FROM python:3.13.0-alpine3.20
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM nats:2.10.18-scratch AS nats
|
||||
FROM nats:2.10.21-scratch AS nats
|
||||
FROM eturnal/eturnal:1.12.0 AS eturnal
|
||||
FROM strukturag/nextcloud-spreed-signaling:1.3.2 AS signaling
|
||||
FROM alpine:3.20.2 AS janus
|
||||
FROM strukturag/nextcloud-spreed-signaling:2.0.0 AS signaling
|
||||
FROM alpine:3.20.3 AS janus
|
||||
|
||||
ARG JANUS_VERSION=v0.14.3
|
||||
ARG JANUS_VERSION=v0.14.4
|
||||
WORKDIR /src
|
||||
RUN set -ex; \
|
||||
apk add --no-cache \
|
||||
@@ -34,7 +34,7 @@ RUN set -ex; \
|
||||
make configs; \
|
||||
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
|
||||
|
||||
FROM alpine:3.20.2
|
||||
FROM alpine:3.20.3
|
||||
ENV ETURNAL_ETC_DIR="/conf"
|
||||
COPY --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local
|
||||
COPY --from=eturnal --chmod=777 --chown=1000:1000 /opt/eturnal /opt/eturnal
|
||||
|
||||
@@ -55,6 +55,15 @@ blockkey = -encryption-key-
|
||||
# value as configured in the respective internal services.
|
||||
internalsecret = the-shared-secret-for-internal-clients
|
||||
|
||||
[federation]
|
||||
# If set to "true", certificate validation of federation targets will be skipped.
|
||||
# This should only be enabled during development, e.g. to work with self-signed
|
||||
# certificates.
|
||||
#skipverify = false
|
||||
|
||||
# Timeout in seconds for requests to federation targets.
|
||||
#timeout = 10
|
||||
|
||||
[backend]
|
||||
# Type of backend configuration.
|
||||
# Defaults to "static".
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
# From https://github.com/containrrr/watchtower/blob/main/dockerfiles/Dockerfile.self-contained
|
||||
FROM containrrr/watchtower:1.7.1 AS watchtower
|
||||
|
||||
FROM alpine:3.20.2
|
||||
FROM alpine:3.20.3
|
||||
|
||||
RUN apk upgrade --no-cache -a; \
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache bash
|
||||
|
||||
COPY --from=watchtower /watchtower /watchtower
|
||||
|
||||
14
Containers/whiteboard/Dockerfile
Normal file
14
Containers/whiteboard/Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM ghcr.io/nextcloud-releases/whiteboard:v1.0.3
|
||||
|
||||
USER root
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache bash
|
||||
USER nobody
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
|
||||
LABEL com.centurylinklabs.watchtower.enable="false"
|
||||
17
Containers/whiteboard/start.sh
Normal file
17
Containers/whiteboard/start.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Only start container if nextcloud is accessible
|
||||
while ! nc -z "$REDIS_HOST" 6379; do
|
||||
echo "Waiting for redis to start..."
|
||||
sleep 5
|
||||
done
|
||||
|
||||
# Set a default for redis db index
|
||||
if [ -z "$REDIS_DB_INDEX" ]; then
|
||||
REDIS_DB_INDEX=0
|
||||
fi
|
||||
|
||||
export REDIS_URL="redis://:$REDIS_HOST_PASSWORD@$REDIS_HOST/$REDIS_DB_INDEX"
|
||||
|
||||
# Run it
|
||||
exec npm run server:start
|
||||
@@ -3,7 +3,6 @@ This container bundles DLNA server for your Nextcloud files to be accessible by
|
||||
|
||||
### Notes
|
||||
- This container will work only if the Nextcloud installation is in your home network, it is not suitable for installations on remote servers.
|
||||
- This is not working with Docker Desktop since it requires the `host` networking mode in docker, and it doesn't really share the host's network interfaces in this system
|
||||
- If you have a firewall like ufw configured, you might need to open at least port 9999 TCP and 1900 UDP first in order to make it work.
|
||||
- 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,6 @@
|
||||
This container bundles fail2ban and auto-configures it for you in order to block ip-addresses automatically. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden, if installed.
|
||||
|
||||
### Notes
|
||||
- This is not working on Docker Desktop since it needs `network_mode: host` in order to work correctly.
|
||||
- If you get an error like `"ip6tables v1.8.9 (legacy): can't initialize ip6tables table filter': Table does not exist (do you need to insmod?)"`, you need to enable ip6tables on your host via `sudo modprobe ip6table_filter`.
|
||||
- If you get an error like `stderr: 'iptables: No chain/target/match by that name.'` and `stderr: 'ip6tables: No chain/target/match by that name.'`, you need to follow https://github.com/szaimen/aio-fail2ban/issues/9#issuecomment-2026898790 in order to resolve this.
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
@@ -3,7 +3,6 @@ This container bundles Jellyfin and auto-configures it for you.
|
||||
|
||||
### Notes
|
||||
- This container is incompatible with the [Plex](https://github.com/nextcloud/all-in-one/tree/main/community-containers/plex) community container. So make sure that you do not enable both at the same time!
|
||||
- This container does not work on Docker Desktop since it needs `network_mode: host` in order to work correctly.
|
||||
- After adding and starting the container, you can directly visit http://ip.address.of.server:8096/ and access your new Jellyfin instance!
|
||||
- This container should usually only be run in home networks as it exposes unencrypted services like DLNA by default which can be disabld via the web interface though.
|
||||
- In order to access your Jellyfin outside the local network, you have to set up your own reverse proxy. You can set up a reverse proxy following [these instructions](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md) and [Jellyfin's networking documentation](https://jellyfin.org/docs/general/networking/#running-jellyfin-behind-a-reverse-proxy), OR use the [Caddy](https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy) community container that will automatically configure `media.$NC_DOMAIN` to redirect to your Jellyfin.
|
||||
|
||||
@@ -18,8 +18,7 @@ This container bundles Local AI and auto-configures it for you.
|
||||
- url: github:go-skynet/model-gallery/gpt4all-j.yaml
|
||||
name: gpt4all-j
|
||||
```
|
||||
- You need to add gpt4all-j under Text Generation (Default completion model to use) in Connected Accounts in the Administration Settings in Nextcloud, the default does not work.
|
||||
- Additionally after doing so, you might want to enable or disable specific features for your models in the integration_openai settings: `https://your-nc-domain.com/settings/admin/connected-accounts`
|
||||
- To make it work, you first need to browse `https://your-nc-domain.com/settings/admin/ai` and enable or disable specific features for your models in the openAI settings. Afterwards using the Nextcloud Assistant should work.
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
### Repository
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
"source": "%NEXTCLOUD_DATADIR%",
|
||||
"destination": "/mnt/ncdata",
|
||||
"writeable": false
|
||||
},
|
||||
{
|
||||
"source": "%NEXTCLOUD_MOUNT%",
|
||||
"destination": "%NEXTCLOUD_MOUNT%",
|
||||
"writeable": false
|
||||
}
|
||||
],
|
||||
"devices": [
|
||||
|
||||
@@ -3,7 +3,6 @@ This container contains a fork of the Nginx Proxy Manager, which is a WebUI for
|
||||
|
||||
### Notes
|
||||
- This container is incompatible with the [caddy](https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy) community container. So make sure that you do not enable both at the same time!
|
||||
- Only works on linux since it uses network mode host
|
||||
- You can ignore the NPM configuration of the reverse-proxy.md. The NPMplus fork already contains the changes of the advanced tab.
|
||||
- Make sure that no other service is using port `443 (tcp/upd)` or `81 (tcp)` on your host as otherwise the containers will fail to start. You can check this with `sudo netstat -tulpn | grep "443\|81"` before installing AIO.
|
||||
- Please change the default login data first, after you can read inside the logs that the default config for AIO is created and there are no errors.
|
||||
|
||||
@@ -4,7 +4,6 @@ This container bundles Plex and auto-configures it for you.
|
||||
### Notes
|
||||
- This container is incompatible with the [Jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin) community container. So make sure that you do not enable both at the same time!
|
||||
- This is not working on arm64 since Plex does only provide x64 docker images.
|
||||
- This is not working on Docker Desktop since it needs `network_mode: host` in order to work correctly.
|
||||
- This container should usually only be run in home networks as it exposes unencrypted services like DLNA by default which can be disabld via the web interface though.
|
||||
- If you have a firewall like ufw configured, you might need to open all Plex ports in there first in order to make it work. Especially port 32400 is important!
|
||||
- After adding and starting the container, you need to visit http://ip.address.of.server:32400/manage in order to claim your server with a plex account
|
||||
|
||||
@@ -13,7 +13,7 @@ Afterwards, you might want to add additional community containers to the default
|
||||
Simply submit a PR by creating a new folder in this directory: https://github.com/nextcloud/all-in-one/tree/main/community-containers with the name of your container. It must include a json file with the same name and with correct syntax and a readme.md with additional information. You might get inspired by caddy, fail2ban, local-ai, libretranslate, plex, pi-hole or vaultwarden (subfolders in this directory). For a full-blown example of the json file, see https://github.com/nextcloud/all-in-one/blob/main/php/containers.json. The json-schema that it validates against can be found here: https://github.com/nextcloud/all-in-one/blob/main/php/containers-schema.json.
|
||||
|
||||
### Is there a list of ideas for new community containers?
|
||||
Yes, see [this list](https://github.com/nextcloud/all-in-one/discussions/categories/ideas?discussions_q=is%3Aopen+category%3AIdeas+label%3A%22help+wanted%22+sort%3Atop) for already existing ideas for new community containers. Feel free to pick one up and add it to this folder by following the instructions above.
|
||||
Yes, see [this list](https://github.com/nextcloud/all-in-one/issues/5251) for already existing ideas for new community containers. Feel free to pick one up and add it to this folder by following the instructions above.
|
||||
|
||||
## How to remove containers from AIOs stack?
|
||||
In some cases, you might want to remove some community containers from the AIO stack again. Here is how to do this.
|
||||
|
||||
@@ -1,23 +1,17 @@
|
||||
> [!WARNING]
|
||||
> The Stalwart server is under development.
|
||||
> [!CAUTION]
|
||||
> Be aware that the mail server is the most difficult service to deploy.
|
||||
>
|
||||
> The stability of Stalwart services is not guaranteed.
|
||||
> Do not use this feature as a main mail server without a redundancy system and without knowledge.
|
||||
>
|
||||
> To learn or use as a secondary server enjoy it and please report bugs at [docjyj/aio-stalwart](https://github.com/docjyj/aio-stalwart/issues).
|
||||
> Do not use this feature as a main mail server or without a redundancy system and without knowledge.
|
||||
|
||||
## Stalwart mail server
|
||||
This container bundles stalwart mail server and auto-configures it for you.
|
||||
|
||||
### Notes
|
||||
- This is only intended to run on a VPS with static ip-address.
|
||||
- Check with `sudo netstat -tulpn` that no other service is using port 25, 143, 465, 587, 993 nor 4190 yet as otherwise the container will fail to start.
|
||||
- You need to configure a reverse proxy in order to run this container since stalwart needs a dedicated (sub)domain! For that, you might have a look at https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy.
|
||||
- Currently, only `mail.$NC_DOMAIN` is supported as subdomain! So if Nextcloud is using `your-domain.com`, Stalwart will use `mail.your-domain.com`.
|
||||
- The data of Stalwart will be automatically included in AIOs backup solution!
|
||||
- After adding and starting the container, you need to run `docker inspect nextcloud-aio-stalwart | grep STALWART_USER_PASS` to obtain the system administrator password (username: `admin`). With this information, you can log in to the web interface at `https://mail.your-domain.com/login`
|
||||
- See https://stalw.art/docs/install/docker/ for next steps.
|
||||
- Additionally, you might want to install and configure [snappymail](https://apps.nextcloud.com/apps/snappymail) or [mail](https://apps.nextcloud.com/apps/mail) inside Nextcloud in order to use your mail accounts for sending and retrieving mails.
|
||||
Documentation is available on the container repository.
|
||||
This documentation is regularly updated and is intended to be as simple and detailed as possible.
|
||||
Thanks for all your feedback!
|
||||
|
||||
- See https://github.com/docjyJ/aio-stalwart#getting-started for getting start with this container.
|
||||
- See https://stalw.art/docs/faq for further faq and docs on the project
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
> [!NOTE]
|
||||
> Unless the starting script tells you, you have no action to do to update.
|
||||
|
||||
# UPGRADING
|
||||
|
||||
During a major server update, this message will be displayed:
|
||||
|
||||
> Your data is in an old format.
|
||||
>
|
||||
> Make a backup and see https://github.com/nextcloud/all-in-one/blob/main/community-containers/stalwart/upgrading.md
|
||||
>
|
||||
> To avoid any loss of data, Stalwart will not launch.
|
||||
|
||||
If there is no update, delete the `/opt/stalwart-mail/aio.lock` file from the container. Beware of data loss.
|
||||
|
||||
See https://github.com/stalwartlabs/mail-server/blob/main/UPGRADING.md
|
||||
|
||||
> [!CAUTION]
|
||||
> Before each update don't forget to make a backup.
|
||||
|
||||
## Upgrading from 0.7.x to 0.8.x
|
||||
|
||||
Before upgrading, do a backup of your data !
|
||||
|
||||
```bash
|
||||
sudo docker run --rm -v nextcloud_aio_stalwart:/opt/stalwart-mail -it --entrypoint /usr/local/bin/stalwart-mail stalwartlabs/mail-server:v0.7.3 --config /opt/stalwart-mail/etc/config.toml --export /opt/stalwart-mail/export
|
||||
sudo docker run --rm -v nextcloud_aio_stalwart:/opt/stalwart-mail -it --entrypoint /usr/local/bin/stalwart-mail stalwartlabs/mail-server:v0.8.0 --config /opt/stalwart-mail/etc/config.toml --import /opt/stalwart-mail/export
|
||||
sudo docker run --rm -v nextcloud_aio_stalwart:/opt/stalwart-mail -it --entrypoint /bin/rm alpine /opt/stalwart-mail/aio.lock
|
||||
```
|
||||
@@ -16,6 +16,9 @@ services:
|
||||
nextcloud-aio-notify-push:
|
||||
condition: service_started
|
||||
required: false
|
||||
nextcloud-aio-whiteboard:
|
||||
condition: service_started
|
||||
required: false
|
||||
image: nextcloud/aio-apache:latest
|
||||
init: true
|
||||
ports:
|
||||
@@ -33,6 +36,7 @@ services:
|
||||
- APACHE_MAX_SIZE=${APACHE_MAX_SIZE}
|
||||
- APACHE_MAX_TIME=${NEXTCLOUD_MAX_TIME}
|
||||
- NOTIFY_PUSH_HOST=nextcloud-aio-notify-push
|
||||
- WHITEBOARD_HOST=nextcloud-aio-whiteboard
|
||||
volumes:
|
||||
- nextcloud_aio_nextcloud:/var/www/html:ro
|
||||
- nextcloud_aio_apache:/mnt/data:rw
|
||||
@@ -152,6 +156,8 @@ services:
|
||||
- REMOVE_DISABLED_APPS=${REMOVE_DISABLED_APPS}
|
||||
- APACHE_PORT=${APACHE_PORT}
|
||||
- IMAGINARY_SECRET=${IMAGINARY_SECRET}
|
||||
- WHITEBOARD_SECRET=${WHITEBOARD_SECRET}
|
||||
- WHITEBOARD_ENABLED=${WHITEBOARD_ENABLED}
|
||||
stop_grace_period: 600s
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
@@ -369,6 +375,27 @@ services:
|
||||
cap_drop:
|
||||
- NET_RAW
|
||||
|
||||
nextcloud-aio-whiteboard:
|
||||
image: nextcloud/aio-whiteboard:latest
|
||||
init: true
|
||||
expose:
|
||||
- "3002"
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- NEXTCLOUD_URL=https://${NC_DOMAIN}
|
||||
- JWT_SECRET_KEY=${WHITEBOARD_SECRET}
|
||||
- STORAGE_STRATEGY=redis
|
||||
- REDIS_HOST=nextcloud-aio-redis
|
||||
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- whiteboard
|
||||
read_only: true
|
||||
networks:
|
||||
- nextcloud-aio
|
||||
cap_drop:
|
||||
- NET_RAW
|
||||
|
||||
volumes:
|
||||
nextcloud_aio_apache:
|
||||
name: nextcloud_aio_apache
|
||||
|
||||
@@ -27,23 +27,23 @@ Then copy the sample.conf to default environment file, e.g. `cp sample.conf .env
|
||||
|
||||
Now copy the provided yaml file to a compose.yaml file by running `cp latest.yml compose.yaml`.
|
||||
|
||||
Now you should be ready to go with `sudo docker-compose up`.
|
||||
Now you should be ready to go with `sudo docker compose up`.
|
||||
|
||||
## Docker profiles
|
||||
The default profile of `latest.yml` only provide the minimum necessary services: nextcloud, database, redis and apache. To get optional services collabora, talk, talk-recording, clamav, imaginary or fulltextsearch use additional arguments for each of them, for example `--profile collabora`. (Note: there is no clamav image for arm64).
|
||||
The default profile of `latest.yml` only provide the minimum necessary services: nextcloud, database, redis and apache. To get optional services collabora, talk, whiteboard, talk-recording, clamav, imaginary or fulltextsearch use additional arguments for each of them, for example `--profile collabora`. (Note: there is no clamav image for arm64).
|
||||
|
||||
For a complete all-in-one with collabora use `sudo docker-compose --profile collabora --profile talk --profile talk-recording --profile clamav --profile imaginary --profile fulltextsearch up`. (Note: there is no clamav image for arm64).
|
||||
For a complete all-in-one with collabora use `sudo docker compose --profile collabora --profile talk --profile talk-recording --profile clamav --profile imaginary --profile fulltextsearch --profile whiteboard up`. (Note: there is no clamav image for arm64).
|
||||
|
||||
## How to update?
|
||||
Since the AIO containers may change in the future, it is highly recommended to strictly follow the following procedure whenever you want to upgrade your containers.
|
||||
1. If your previous copy of `sample.conf` is named `my.conf`, run `mv -vn my.conf .env` in order to rename the file to `.env`.
|
||||
1. Run `sudo docker-compose down` to stop all running containers
|
||||
1. Run `sudo docker compose down` to stop all running containers
|
||||
1. Back up all important files and folders
|
||||
1. If your compose file is still named `docker-compose.yml` rename it to `compose.yaml` by running `mv -vn docker-compose.yml compose.yaml`
|
||||
1. Run `git pull` in order to get the updated yaml files from the repository. Now bring your `compose.yaml` file up-to-date with the updated one from the repository. You can use `diff compose.yaml latest.yml` for comparing. ⚠️ **Please note**: Starting with AIO v5.1.0, ipv6 networking will be enabled by default, so make sure to either enable it first by following steps 1 and 2 of https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md and then proceed with the steps below or disable ipv6 networking by editing the compose.yaml file and removing ipv6 from the network.
|
||||
1. Also have a look at the `sample.conf` if any variable was added or renamed and add that to your conf file as well. Here may help the diff command as well.
|
||||
1. After the file update was successful, simply run `sudo docker-compose pull` to pull the new images.
|
||||
1. At the end run `sudo docker-compose up` in order to start and update the containers with the new configuration.
|
||||
1. After the file update was successful, simply run `sudo docker compose pull` to pull the new images.
|
||||
1. At the end run `sudo docker compose up` in order to start and update the containers with the new configuration.
|
||||
|
||||
## FAQ
|
||||
### Backup and restore?
|
||||
|
||||
@@ -10,6 +10,7 @@ SIGNALING_SECRET= # TODO! This needs to be a unique and good password!
|
||||
TALK_INTERNAL_SECRET= # TODO! This needs to be a unique and good password!
|
||||
TIMEZONE=Europe/Berlin # TODO! This is the timezone that your containers will use.
|
||||
TURN_SECRET= # TODO! This needs to be a unique and good password!
|
||||
WHITEBOARD_SECRET= # TODO! This needs to be a unique and good password!
|
||||
|
||||
CLAMAV_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
COLLABORA_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
@@ -18,6 +19,7 @@ IMAGINARY_ENABLED="no" # Setting this to "yes" (with quotes) enables th
|
||||
ONLYOFFICE_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_RECORDING_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
WHITEBOARD_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
|
||||
APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) and if that is running on the same host and using localhost to connect
|
||||
APACHE_MAX_SIZE=10737418240 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
There are basically three ways how to migrate from an already existing Nextcloud installation to Nextcloud AIO:
|
||||
|
||||
1. Migrate only the files which is the easiest way
|
||||
1. Migrate only the files which is the easiest way (this excludes all calendar data for example)
|
||||
1. Migrate the files and the database which is much more complicated (and doesn't work on former snap installations)
|
||||
1. Use the user_migration app that allows to migrate some of the user's data from a former instance to a new instance but needs to be done manually for each user
|
||||
|
||||
## Migrate only the files
|
||||
**Please note**: If you used groupfolders or encrypted your files before, you will need to restore the database, as well!
|
||||
**Please note**: If you used groupfolders or encrypted your files before, you will need to restore the database, as well! (This will also exclude all calendar data for example).
|
||||
|
||||
The procedure for migrating only the files works like this:
|
||||
1. Take a backup of your former instance (especially from your datadirectory, see `'datadirectory'` in your `config.php`)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: nextcloud-aio-helm-chart
|
||||
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
|
||||
version: 9.3.0
|
||||
version: 9.6.0
|
||||
apiVersion: v2
|
||||
keywords:
|
||||
- latest
|
||||
|
||||
@@ -25,11 +25,7 @@ spec:
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chmod
|
||||
- "777"
|
||||
@@ -66,7 +62,9 @@ spec:
|
||||
value: nextcloud-aio-talk
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-apache:20240725_074330"
|
||||
- name: WHITEBOARD_HOST
|
||||
value: nextcloud-aio-whiteboard
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-apache:20240925_080419"
|
||||
name: nextcloud-aio-apache
|
||||
ports:
|
||||
- containerPort: {{ .Values.APACHE_PORT }}
|
||||
|
||||
@@ -26,11 +26,7 @@ spec:
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init-subpath
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- mkdir
|
||||
- "-p"
|
||||
@@ -40,11 +36,7 @@ spec:
|
||||
- name: nextcloud-aio-clamav
|
||||
mountPath: /nextcloud-aio-clamav
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chown
|
||||
- 100:100
|
||||
@@ -61,7 +53,7 @@ spec:
|
||||
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-clamav:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-clamav:20240925_080419"
|
||||
name: nextcloud-aio-clamav
|
||||
ports:
|
||||
- containerPort: 3310
|
||||
|
||||
@@ -36,7 +36,7 @@ spec:
|
||||
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true {{ .Values.COLLABORA_SECCOMP_POLICY }} --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json
|
||||
- name: server_name
|
||||
value: "{{ .Values.NC_DOMAIN }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-collabora:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-collabora:20240925_080419"
|
||||
name: nextcloud-aio-collabora
|
||||
ports:
|
||||
- containerPort: 9980
|
||||
|
||||
@@ -25,11 +25,7 @@ spec:
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init-subpath
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- mkdir
|
||||
- "-p"
|
||||
@@ -42,11 +38,7 @@ spec:
|
||||
- name: nextcloud-aio-database
|
||||
mountPath: /nextcloud-aio-database
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chown
|
||||
- 999:999
|
||||
@@ -70,7 +62,7 @@ spec:
|
||||
value: nextcloud
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-postgresql:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-postgresql:20240925_080419"
|
||||
name: nextcloud-aio-database
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
|
||||
@@ -26,11 +26,7 @@ spec:
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chmod
|
||||
- "777"
|
||||
@@ -60,7 +56,7 @@ spec:
|
||||
value: basic
|
||||
- name: xpack.security.enabled
|
||||
value: "false"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-fulltextsearch:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-fulltextsearch:20240925_080419"
|
||||
name: nextcloud-aio-fulltextsearch
|
||||
ports:
|
||||
- containerPort: 9200
|
||||
|
||||
@@ -28,7 +28,7 @@ spec:
|
||||
value: "{{ .Values.IMAGINARY_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-imaginary:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-imaginary:20240925_080419"
|
||||
name: nextcloud-aio-imaginary
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
|
||||
@@ -25,11 +25,7 @@ spec:
|
||||
spec:
|
||||
initContainers:
|
||||
- name: "delete-lost-found"
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- rm
|
||||
- "-rf"
|
||||
@@ -40,11 +36,7 @@ spec:
|
||||
- name: nextcloud-aio-nextcloud
|
||||
mountPath: /nextcloud-aio-nextcloud
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chmod
|
||||
- "777"
|
||||
@@ -85,6 +77,8 @@ spec:
|
||||
value: "{{ .Values.SERVERINFO_TOKEN }}"
|
||||
- name: NEXTCLOUD_DEFAULT_QUOTA
|
||||
value: "{{ .Values.NEXTCLOUD_DEFAULT_QUOTA }}"
|
||||
- name: NEXTCLOUD_MAINTENANCE_WINDOW
|
||||
value: "{{ .Values.NEXTCLOUD_MAINTENANCE_WINDOW }}"
|
||||
- name: ADDITIONAL_APKS
|
||||
value: "{{ .Values.NEXTCLOUD_ADDITIONAL_APKS }}"
|
||||
- name: ADDITIONAL_PHP_EXTENSIONS
|
||||
@@ -175,7 +169,11 @@ spec:
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
- name: UPDATE_NEXTCLOUD_APPS
|
||||
value: "{{ .Values.UPDATE_NEXTCLOUD_APPS }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-nextcloud:20240725_074330"
|
||||
- name: WHITEBOARD_ENABLED
|
||||
value: "{{ .Values.WHITEBOARD_ENABLED }}"
|
||||
- name: WHITEBOARD_SECRET
|
||||
value: "{{ .Values.WHITEBOARD_SECRET }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-nextcloud:20240925_080419"
|
||||
name: nextcloud-aio-nextcloud
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
|
||||
@@ -25,11 +25,7 @@ spec:
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chmod
|
||||
- "777"
|
||||
@@ -57,7 +53,7 @@ spec:
|
||||
value: nextcloud-aio-redis
|
||||
- name: REDIS_HOST_PASSWORD
|
||||
value: "{{ .Values.REDIS_PASSWORD }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-notify-push:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-notify-push:20240925_080419"
|
||||
name: nextcloud-aio-notify-push
|
||||
ports:
|
||||
- containerPort: 7867
|
||||
|
||||
@@ -26,11 +26,7 @@ spec:
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chmod
|
||||
- "777"
|
||||
@@ -48,7 +44,7 @@ spec:
|
||||
value: "{{ .Values.ONLYOFFICE_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-onlyoffice:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-onlyoffice:20240925_080419"
|
||||
name: nextcloud-aio-onlyoffice
|
||||
ports:
|
||||
- containerPort: 80
|
||||
|
||||
@@ -25,11 +25,7 @@ spec:
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chmod
|
||||
- "777"
|
||||
@@ -43,7 +39,7 @@ spec:
|
||||
value: "{{ .Values.REDIS_PASSWORD }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-redis:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-redis:20240925_080419"
|
||||
name: nextcloud-aio-redis
|
||||
ports:
|
||||
- containerPort: 6379
|
||||
|
||||
@@ -42,7 +42,7 @@ spec:
|
||||
value: "{{ .Values.TURN_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk:20240925_080419"
|
||||
name: nextcloud-aio-talk
|
||||
ports:
|
||||
- containerPort: {{ .Values.TALK_PORT }}
|
||||
|
||||
@@ -32,7 +32,7 @@ spec:
|
||||
value: "{{ .Values.RECORDING_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk-recording:20240725_074330"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk-recording:20240925_080419"
|
||||
name: nextcloud-aio-talk-recording
|
||||
ports:
|
||||
- containerPort: 1234
|
||||
|
||||
48
nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml
Executable file
48
nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml
Executable file
@@ -0,0 +1,48 @@
|
||||
{{- if eq .Values.WHITEBOARD_ENABLED "yes" }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.34.0 (cbf2835db)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-whiteboard
|
||||
name: nextcloud-aio-whiteboard
|
||||
namespace: "{{ .Values.NAMESPACE }}"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
io.kompose.service: nextcloud-aio-whiteboard
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.34.0 (cbf2835db)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-whiteboard
|
||||
spec:
|
||||
containers:
|
||||
- env:
|
||||
- name: JWT_SECRET_KEY
|
||||
value: "{{ .Values.WHITEBOARD_SECRET }}"
|
||||
- name: NEXTCLOUD_URL
|
||||
value: https://{{ .Values.NC_DOMAIN }}
|
||||
- name: REDIS_HOST
|
||||
value: nextcloud-aio-redis
|
||||
- name: REDIS_HOST_PASSWORD
|
||||
value: "{{ .Values.REDIS_PASSWORD }}"
|
||||
- name: STORAGE_STRATEGY
|
||||
value: redis
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-whiteboard:20240925_080419"
|
||||
name: nextcloud-aio-whiteboard
|
||||
ports:
|
||||
- containerPort: 3002
|
||||
protocol: TCP
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- NET_RAW
|
||||
{{- end }}
|
||||
20
nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-service.yaml
Executable file
20
nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-service.yaml
Executable file
@@ -0,0 +1,20 @@
|
||||
{{- if eq .Values.WHITEBOARD_ENABLED "yes" }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.34.0 (cbf2835db)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-whiteboard
|
||||
name: nextcloud-aio-whiteboard
|
||||
namespace: "{{ .Values.NAMESPACE }}"
|
||||
spec:
|
||||
ipFamilyPolicy: PreferDualStack
|
||||
ports:
|
||||
- name: "3002"
|
||||
port: 3002
|
||||
targetPort: 3002
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-whiteboard
|
||||
{{- end }}
|
||||
@@ -59,11 +59,7 @@ find ./ -name '*networkpolicy.yaml' -exec sed -i "s|manual-install-nextcloud-aio
|
||||
cat << EOL > /tmp/initcontainers
|
||||
initContainers:
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chmod
|
||||
- "777"
|
||||
@@ -72,22 +68,14 @@ EOL
|
||||
cat << EOL > /tmp/initcontainers.database
|
||||
initContainers:
|
||||
- name: init-subpath
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- mkdir
|
||||
- "-p"
|
||||
- /nextcloud-aio-database/data
|
||||
volumeMountsInitContainer:
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chown
|
||||
- 999:999
|
||||
@@ -97,22 +85,14 @@ EOL
|
||||
cat << EOL > /tmp/initcontainers.clamav
|
||||
initContainers:
|
||||
- name: init-subpath
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- mkdir
|
||||
- "-p"
|
||||
- /nextcloud-aio-clamav/data
|
||||
volumeMountsInitContainer:
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chown
|
||||
- 100:100
|
||||
@@ -122,22 +102,14 @@ EOL
|
||||
cat << EOL > /tmp/initcontainers.nextcloud
|
||||
initContainers:
|
||||
- name: "delete-lost-found"
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- rm
|
||||
- "-rf"
|
||||
- "/nextcloud-aio-nextcloud/lost+found"
|
||||
volumeMountsInitRmLostFound:
|
||||
- name: init-volumes
|
||||
{{- if or .Values.IMAGE_MIRROR_PREFIX .Values.ALPINE_IMAGE_ORG }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG}}/alpine"
|
||||
{{- else }}
|
||||
image: alpine
|
||||
{{- end }}
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.ALPINE_IMAGE_ORG }}alpine"
|
||||
command:
|
||||
- chmod
|
||||
- "777"
|
||||
@@ -399,9 +371,9 @@ MAIL_DOMAIN: # (not set by default): Set a different domain for the emai
|
||||
TALK_MAX_STREAM_BITRATE: "1048576" # This allows to adjust the max stream bitrate of the talk hpb
|
||||
TALK_MAX_SCREEN_BITRATE: "2097152" # This allows to adjust the max stream bitrate of the talk hpb
|
||||
|
||||
IMAGE_MIRROR_PREFIX: # Setting this allows you to pull Nextcloud images through a mirror registry.
|
||||
IMAGE_MIRROR_PREFIX: # Setting this allows you to pull Nextcloud images through a mirror registry. It needs a trailing slash!
|
||||
NEXTCLOUD_IMAGE_ORG: nextcloud # Setting this allows you to change the image's org name in case a different image needs to be used e.g. for compliance reasons.
|
||||
ALPINE_IMAGE_ORG: # Setting this allows you to change the image's org name in case a different image needs to be used e.g. for compliance reasons.
|
||||
ALPINE_IMAGE_ORG: # Setting this allows you to change the image's org name in case a different image needs to be used e.g. for compliance reasons. It needs a trailing slash!
|
||||
ADDITIONAL_CONFIG
|
||||
|
||||
mv /tmp/sample.conf ../helm-chart/values.yaml
|
||||
|
||||
@@ -10,6 +10,7 @@ SIGNALING_SECRET: # TODO! This needs to be a unique and good password!
|
||||
TALK_INTERNAL_SECRET: # TODO! This needs to be a unique and good password!
|
||||
TIMEZONE: Europe/Berlin # TODO! This is the timezone that your containers will use.
|
||||
TURN_SECRET: # TODO! This needs to be a unique and good password!
|
||||
WHITEBOARD_SECRET: # TODO! This needs to be a unique and good password!
|
||||
|
||||
CLAMAV_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
COLLABORA_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
@@ -18,6 +19,7 @@ IMAGINARY_ENABLED: "no" # Setting this to "yes" (with quotes) enables t
|
||||
ONLYOFFICE_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_RECORDING_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
WHITEBOARD_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
|
||||
APACHE_MAX_SIZE: "10737418240" # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
|
||||
APACHE_PORT: 443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else).
|
||||
@@ -56,6 +58,7 @@ APPS_ALLOWLIST: # This allows to configure allowed apps that will be show
|
||||
ADDITIONAL_TRUSTED_PROXY: # Allows to add one additional ip-address to Nextcloud's trusted proxies and to the Office WOPI-allowlist automatically. Set it e.g. like this: 'your.public.ip-address'. You can also use an ip-range here.
|
||||
ADDITIONAL_TRUSTED_DOMAIN: # Allows to add one domain to Nextcloud's trusted domains and also generates a certificate automatically for it
|
||||
NEXTCLOUD_DEFAULT_QUOTA: "10 GB" # Allows to adjust the default quota that will be taken into account in Nextcloud for new users. Setting it to "unlimited" will set it to unlimited
|
||||
NEXTCLOUD_MAINTENANCE_WINDOW: # Allows to define the maintenance window for Nextcloud. See https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/background_jobs_configuration.html#parameters for possible values
|
||||
SMTP_HOST: # (empty by default): The hostname of the SMTP server.
|
||||
SMTP_SECURE: # (empty by default): Set to 'ssl' to use SSL, or 'tls' to use STARTTLS.
|
||||
SMTP_PORT: # (default: '465' for SSL and '25' for non-secure connections): Optional port for the SMTP connection. Use '587' for an alternative port for STARTTLS.
|
||||
@@ -67,6 +70,6 @@ MAIL_DOMAIN: # (not set by default): Set a different domain for the emai
|
||||
TALK_MAX_STREAM_BITRATE: "1048576" # This allows to adjust the max stream bitrate of the talk hpb
|
||||
TALK_MAX_SCREEN_BITRATE: "2097152" # This allows to adjust the max stream bitrate of the talk hpb
|
||||
|
||||
IMAGE_MIRROR_PREFIX: # Setting this allows you to pull Nextcloud images through a mirror registry.
|
||||
IMAGE_MIRROR_PREFIX: # Setting this allows you to pull Nextcloud images through a mirror registry. It needs a trailing slash!
|
||||
NEXTCLOUD_IMAGE_ORG: nextcloud # Setting this allows you to change the image's org name in case a different image needs to be used e.g. for compliance reasons.
|
||||
ALPINE_IMAGE_ORG: # Setting this allows you to change the image's org name in case a different image needs to be used e.g. for compliance reasons.
|
||||
ALPINE_IMAGE_ORG: # Setting this allows you to change the image's org name in case a different image needs to be used e.g. for compliance reasons. It needs a trailing slash!
|
||||
|
||||
@@ -33,6 +33,7 @@ docker run \
|
||||
--rm \
|
||||
--name nextcloud-aio-mastercontainer \
|
||||
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
nextcloud/all-in-one:latest
|
||||
```
|
||||
|
||||
@@ -55,6 +56,7 @@ Note: You can restart the server by preceding the command with other environment
|
||||
|-----------------------------------------|----------------------------------------|
|
||||
| `composer run dev` | Starts the development server |
|
||||
| `composer run psalm` | Run Psalm static analysis |
|
||||
| `composer run psalm:strict` | Run Psalm static analysis strict |
|
||||
| `composer run psalm:update-baseline` | Run Psalm with `--update-baseline` arg |
|
||||
| `composer run lint` | Run PHP Syntax check |
|
||||
| `composer run lint:twig` | Run Twig Syntax check |
|
||||
|
||||
@@ -1,35 +1,36 @@
|
||||
{
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"AIO\\": ["src/"]
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"php": "8.3.*",
|
||||
"ext-json": "*",
|
||||
"ext-sodium": "*",
|
||||
"ext-curl": "*",
|
||||
"slim/slim": "^4.11",
|
||||
"php-di/slim-bridge": "^3.3",
|
||||
"guzzlehttp/guzzle": "^7.5",
|
||||
"guzzlehttp/psr7": "^2.4",
|
||||
"http-interop/http-factory-guzzle": "^1.2",
|
||||
"slim/twig-view": "^3.3",
|
||||
"slim/csrf": "^1.3",
|
||||
"ext-apcu": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"sserbin/twig-linter": "@dev",
|
||||
"vimeo/psalm": "^5.25",
|
||||
"wapmorgan/php-deprecation-detector": "dev-master"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": [
|
||||
"Composer\\Config::disableProcessTimeout",
|
||||
"php -S localhost:8080 -t public"
|
||||
],
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"AIO\\": ["src/"]
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"php": "8.3.*",
|
||||
"ext-json": "*",
|
||||
"ext-sodium": "*",
|
||||
"ext-curl": "*",
|
||||
"slim/slim": "^4.11",
|
||||
"php-di/slim-bridge": "^3.3",
|
||||
"guzzlehttp/guzzle": "^7.5",
|
||||
"guzzlehttp/psr7": "^2.4",
|
||||
"http-interop/http-factory-guzzle": "^1.2",
|
||||
"slim/twig-view": "^3.3",
|
||||
"slim/csrf": "^1.3",
|
||||
"ext-apcu": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"sserbin/twig-linter": "@dev",
|
||||
"vimeo/psalm": "^5.25",
|
||||
"wapmorgan/php-deprecation-detector": "dev-master"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": [
|
||||
"Composer\\Config::disableProcessTimeout",
|
||||
"php -S localhost:8080 -t public"
|
||||
],
|
||||
"psalm": "psalm --threads=1",
|
||||
"psalm:update-baseline": "psalm --threads=1 --monochrome --no-progress --output-format=text --update-baseline",
|
||||
"psalm:strict": "psalm --threads=1 --show-info=true",
|
||||
"lint": "php -l src/*.php src/**/*.php public/index.php",
|
||||
"lint:twig": "twig-linter lint ./templates",
|
||||
"php-deprecation-detector": "phpdd scan -n -t 8.3 src/*.php src/**/*.php public/index.php"
|
||||
|
||||
377
php/composer.lock
generated
377
php/composer.lock
generated
@@ -391,26 +391,27 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/serializable-closure",
|
||||
"version": "v1.3.3",
|
||||
"version": "v1.3.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/serializable-closure.git",
|
||||
"reference": "3dbf8a8e914634c48d389c1234552666b3d43754"
|
||||
"reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754",
|
||||
"reference": "3dbf8a8e914634c48d389c1234552666b3d43754",
|
||||
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c",
|
||||
"reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.3|^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"nesbot/carbon": "^2.61",
|
||||
"illuminate/support": "^8.0|^9.0|^10.0|^11.0",
|
||||
"nesbot/carbon": "^2.61|^3.0",
|
||||
"pestphp/pest": "^1.21.3",
|
||||
"phpstan/phpstan": "^1.8.2",
|
||||
"symfony/var-dumper": "^5.4.11"
|
||||
"symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@@ -447,7 +448,7 @@
|
||||
"issues": "https://github.com/laravel/serializable-closure/issues",
|
||||
"source": "https://github.com/laravel/serializable-closure"
|
||||
},
|
||||
"time": "2023-11-08T14:08:06+00:00"
|
||||
"time": "2024-09-23T13:33:08+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nikic/fast-route",
|
||||
@@ -996,16 +997,16 @@
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
"version": "3.0.0",
|
||||
"version": "3.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/log.git",
|
||||
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
|
||||
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
|
||||
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
|
||||
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1040,9 +1041,9 @@
|
||||
"psr-3"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/log/tree/3.0.0"
|
||||
"source": "https://github.com/php-fig/log/tree/3.0.2"
|
||||
},
|
||||
"time": "2021-07-14T16:46:02+00:00"
|
||||
"time": "2024-09-11T13:17:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ralouphie/getallheaders",
|
||||
@@ -1264,16 +1265,16 @@
|
||||
},
|
||||
{
|
||||
"name": "slim/twig-view",
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/slimphp/Twig-View.git",
|
||||
"reference": "1b351536b9a07ed90a3563ee9d71a987c5d74610"
|
||||
"reference": "b4268d87d0e327feba5f88d32031e9123655b909"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/slimphp/Twig-View/zipball/1b351536b9a07ed90a3563ee9d71a987c5d74610",
|
||||
"reference": "1b351536b9a07ed90a3563ee9d71a987c5d74610",
|
||||
"url": "https://api.github.com/repos/slimphp/Twig-View/zipball/b4268d87d0e327feba5f88d32031e9123655b909",
|
||||
"reference": "b4268d87d0e327feba5f88d32031e9123655b909",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1281,12 +1282,12 @@
|
||||
"psr/http-message": "^1.1 || ^2.0",
|
||||
"slim/slim": "^4.12",
|
||||
"symfony/polyfill-php81": "^1.29",
|
||||
"twig/twig": "^3.8"
|
||||
"twig/twig": "^3.11"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpspec/prophecy-phpunit": "^2.0",
|
||||
"phpstan/phpstan": "^1.10.59",
|
||||
"phpunit/phpunit": "^9.6",
|
||||
"phpunit/phpunit": "^9.6 || ^10",
|
||||
"psr/http-factory": "^1.0",
|
||||
"squizlabs/php_codesniffer": "^3.9"
|
||||
},
|
||||
@@ -1323,9 +1324,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/slimphp/Twig-View/issues",
|
||||
"source": "https://github.com/slimphp/Twig-View/tree/3.4.0"
|
||||
"source": "https://github.com/slimphp/Twig-View/tree/3.4.1"
|
||||
},
|
||||
"time": "2024-04-28T20:36:39+00:00"
|
||||
"time": "2024-09-26T05:42:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
@@ -1396,20 +1397,20 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
"version": "v1.30.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||
"reference": "0424dff1c58f028c451efff2045f5d92410bd540"
|
||||
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540",
|
||||
"reference": "0424dff1c58f028c451efff2045f5d92410bd540",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
|
||||
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"provide": {
|
||||
"ext-ctype": "*"
|
||||
@@ -1455,7 +1456,7 @@
|
||||
"portable"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0"
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1471,24 +1472,24 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-31T15:07:36+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.30.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c"
|
||||
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c",
|
||||
"reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
|
||||
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"provide": {
|
||||
"ext-mbstring": "*"
|
||||
@@ -1535,7 +1536,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0"
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1551,104 +1552,24 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-06-19T12:30:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php80",
|
||||
"version": "v1.30.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||
"reference": "77fa7995ac1b21ab60769b7323d600a991a90433"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433",
|
||||
"reference": "77fa7995ac1b21ab60769b7323d600a991a90433",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Php80\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Resources/stubs"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ion Bazan",
|
||||
"email": "ion.bazan@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-31T15:07:36+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php81",
|
||||
"version": "v1.30.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php81.git",
|
||||
"reference": "3fb075789fb91f9ad9af537c4012d523085bd5af"
|
||||
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af",
|
||||
"reference": "3fb075789fb91f9ad9af537c4012d523085bd5af",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
|
||||
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@@ -1691,7 +1612,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0"
|
||||
"source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1707,28 +1628,28 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-06-19T12:30:46+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v3.10.3",
|
||||
"version": "v3.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "67f29781ffafa520b0bbfbd8384674b42db04572"
|
||||
"reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572",
|
||||
"reference": "67f29781ffafa520b0bbfbd8384674b42db04572",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72",
|
||||
"reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"php": ">=8.0.2",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-ctype": "^1.8",
|
||||
"symfony/polyfill-mbstring": "^1.3",
|
||||
"symfony/polyfill-php80": "^1.22"
|
||||
"symfony/polyfill-php81": "^1.29"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/container": "^1.0|^2.0",
|
||||
@@ -1774,7 +1695,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/twigphp/Twig/issues",
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.10.3"
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.14.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1786,7 +1707,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-16T10:04:27+00:00"
|
||||
"time": "2024-09-09T17:55:12+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
@@ -2025,26 +1946,26 @@
|
||||
},
|
||||
{
|
||||
"name": "composer/pcre",
|
||||
"version": "3.2.0",
|
||||
"version": "3.3.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/pcre.git",
|
||||
"reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90"
|
||||
"reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/pcre/zipball/ea4ab6f9580a4fd221e0418f2c357cdd39102a90",
|
||||
"reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90",
|
||||
"url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4",
|
||||
"reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4 || ^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan": "<1.11.8"
|
||||
"phpstan/phpstan": "<1.11.10"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.11.8",
|
||||
"phpstan/phpstan": "^1.11.10",
|
||||
"phpstan/phpstan-strict-rules": "^1.1",
|
||||
"phpunit/phpunit": "^8 || ^9"
|
||||
},
|
||||
@@ -2084,7 +2005,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/composer/pcre/issues",
|
||||
"source": "https://github.com/composer/pcre/tree/3.2.0"
|
||||
"source": "https://github.com/composer/pcre/tree/3.3.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2100,28 +2021,28 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-07-25T09:36:02+00:00"
|
||||
"time": "2024-08-27T18:44:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/semver",
|
||||
"version": "3.4.2",
|
||||
"version": "3.4.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/semver.git",
|
||||
"reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6"
|
||||
"reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6",
|
||||
"reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6",
|
||||
"url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
|
||||
"reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.3.2 || ^7.0 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.4",
|
||||
"symfony/phpunit-bridge": "^4.2 || ^5"
|
||||
"phpstan/phpstan": "^1.11",
|
||||
"symfony/phpunit-bridge": "^3 || ^7"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@@ -2165,7 +2086,7 @@
|
||||
"support": {
|
||||
"irc": "ircs://irc.libera.chat:6697/composer",
|
||||
"issues": "https://github.com/composer/semver/issues",
|
||||
"source": "https://github.com/composer/semver/tree/3.4.2"
|
||||
"source": "https://github.com/composer/semver/tree/3.4.3"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2181,7 +2102,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-07-12T11:35:52+00:00"
|
||||
"time": "2024-09-19T14:15:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/xdebug-handler",
|
||||
@@ -2380,16 +2301,16 @@
|
||||
},
|
||||
{
|
||||
"name": "felixfbecker/language-server-protocol",
|
||||
"version": "v1.5.2",
|
||||
"version": "v1.5.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/felixfbecker/php-language-server-protocol.git",
|
||||
"reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842"
|
||||
"reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842",
|
||||
"reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842",
|
||||
"url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/a9e113dbc7d849e35b8776da39edaf4313b7b6c9",
|
||||
"reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2430,22 +2351,22 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
|
||||
"source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2"
|
||||
"source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.3"
|
||||
},
|
||||
"time": "2022-03-02T22:36:06+00:00"
|
||||
"time": "2024-04-30T00:40:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fidry/cpu-core-counter",
|
||||
"version": "1.1.0",
|
||||
"version": "1.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/theofidry/cpu-core-counter.git",
|
||||
"reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42"
|
||||
"reference": "8520451a140d3f46ac33042715115e290cf5785f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42",
|
||||
"reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42",
|
||||
"url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f",
|
||||
"reference": "8520451a140d3f46ac33042715115e290cf5785f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2485,7 +2406,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
|
||||
"source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0"
|
||||
"source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2493,20 +2414,20 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-07T09:43:46+00:00"
|
||||
"time": "2024-08-06T10:04:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "netresearch/jsonmapper",
|
||||
"version": "v4.4.1",
|
||||
"version": "v4.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/cweiske/jsonmapper.git",
|
||||
"reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0"
|
||||
"reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0",
|
||||
"reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0",
|
||||
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
|
||||
"reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2542,22 +2463,22 @@
|
||||
"support": {
|
||||
"email": "cweiske@cweiske.de",
|
||||
"issues": "https://github.com/cweiske/jsonmapper/issues",
|
||||
"source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1"
|
||||
"source": "https://github.com/cweiske/jsonmapper/tree/v4.5.0"
|
||||
},
|
||||
"time": "2024-01-31T06:18:54+00:00"
|
||||
"time": "2024-09-08T10:13:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v4.19.1",
|
||||
"version": "v4.19.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||
"reference": "4e1b88d21c69391150ace211e9eaf05810858d0b"
|
||||
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b",
|
||||
"reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2",
|
||||
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2566,7 +2487,7 @@
|
||||
},
|
||||
"require-dev": {
|
||||
"ircmaxell/php-yacc": "^0.0.7",
|
||||
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
|
||||
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
|
||||
},
|
||||
"bin": [
|
||||
"bin/php-parse"
|
||||
@@ -2598,9 +2519,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1"
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4"
|
||||
},
|
||||
"time": "2024-03-17T08:10:35+00:00"
|
||||
"time": "2024-09-29T15:01:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-common",
|
||||
@@ -2779,16 +2700,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpdoc-parser",
|
||||
"version": "1.29.1",
|
||||
"version": "1.32.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||
"reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4"
|
||||
"reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4",
|
||||
"reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6ca22b154efdd9e3c68c56f5d94670920a1c19a4",
|
||||
"reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2820,9 +2741,9 @@
|
||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1"
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.32.0"
|
||||
},
|
||||
"time": "2024-05-31T08:52:43+00:00"
|
||||
"time": "2024-09-26T07:23:32+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/diff",
|
||||
@@ -2965,12 +2886,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sserbin/twig-linter.git",
|
||||
"reference": "0b7cc4d61b6cf423ec837a0969ea5e0c8f017ddb"
|
||||
"reference": "c4cb0d08c8290d8fed541eb027bd85dba90a5914"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sserbin/twig-linter/zipball/0b7cc4d61b6cf423ec837a0969ea5e0c8f017ddb",
|
||||
"reference": "0b7cc4d61b6cf423ec837a0969ea5e0c8f017ddb",
|
||||
"url": "https://api.github.com/repos/sserbin/twig-linter/zipball/c4cb0d08c8290d8fed541eb027bd85dba90a5914",
|
||||
"reference": "c4cb0d08c8290d8fed541eb027bd85dba90a5914",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2983,7 +2904,7 @@
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^7.3||^8.2|^9.5",
|
||||
"squizlabs/php_codesniffer": "^3.3",
|
||||
"vimeo/psalm": "^4.7"
|
||||
"vimeo/psalm": "^4.7 || ^5.8"
|
||||
},
|
||||
"default-branch": true,
|
||||
"bin": [
|
||||
@@ -3013,22 +2934,22 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/sserbin/twig-linter/issues",
|
||||
"source": "https://github.com/sserbin/twig-linter/tree/3.1.0"
|
||||
"source": "https://github.com/sserbin/twig-linter/tree/3.1.1"
|
||||
},
|
||||
"time": "2022-06-29T11:06:19+00:00"
|
||||
"time": "2024-09-09T16:51:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v6.4.10",
|
||||
"version": "v6.4.12",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc"
|
||||
"reference": "72d080eb9edf80e36c19be61f72c98ed8273b765"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc",
|
||||
"reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/72d080eb9edf80e36c19be61f72c98ed8273b765",
|
||||
"reference": "72d080eb9edf80e36c19be61f72c98ed8273b765",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3093,7 +3014,7 @@
|
||||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v6.4.10"
|
||||
"source": "https://github.com/symfony/console/tree/v6.4.12"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -3109,20 +3030,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-07-26T12:30:32+00:00"
|
||||
"time": "2024-09-20T08:15:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v7.1.2",
|
||||
"version": "v7.1.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "92a91985250c251de9b947a14bb2c9390b1a562c"
|
||||
"reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/92a91985250c251de9b947a14bb2c9390b1a562c",
|
||||
"reference": "92a91985250c251de9b947a14bb2c9390b1a562c",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/61fe0566189bf32e8cfee78335d8776f64a66f5a",
|
||||
"reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3159,7 +3080,7 @@
|
||||
"description": "Provides basic utilities for the filesystem",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/filesystem/tree/v7.1.2"
|
||||
"source": "https://github.com/symfony/filesystem/tree/v7.1.5"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -3175,20 +3096,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-06-28T10:03:55+00:00"
|
||||
"time": "2024-09-17T09:16:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v6.4.10",
|
||||
"version": "v6.4.11",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/finder.git",
|
||||
"reference": "af29198d87112bebdd397bd7735fbd115997824c"
|
||||
"reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/af29198d87112bebdd397bd7735fbd115997824c",
|
||||
"reference": "af29198d87112bebdd397bd7735fbd115997824c",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/d7eb6daf8cd7e9ac4976e9576b32042ef7253453",
|
||||
"reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3223,7 +3144,7 @@
|
||||
"description": "Finds files and directories via an intuitive fluent interface",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/finder/tree/v6.4.10"
|
||||
"source": "https://github.com/symfony/finder/tree/v6.4.11"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -3239,24 +3160,24 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-07-24T07:06:38+00:00"
|
||||
"time": "2024-08-13T14:27:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-grapheme",
|
||||
"version": "v1.30.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
|
||||
"reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a"
|
||||
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a",
|
||||
"reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
|
||||
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-intl": "For best performance"
|
||||
@@ -3301,7 +3222,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -3317,24 +3238,24 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-31T15:07:36+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-normalizer",
|
||||
"version": "v1.30.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
||||
"reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb"
|
||||
"reference": "3833d7255cc303546435cb650316bff708a1c75c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb",
|
||||
"reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
|
||||
"reference": "3833d7255cc303546435cb650316bff708a1c75c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-intl": "For best performance"
|
||||
@@ -3382,7 +3303,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -3398,7 +3319,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-31T15:07:36+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
@@ -3485,16 +3406,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v7.1.3",
|
||||
"version": "v7.1.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/string.git",
|
||||
"reference": "ea272a882be7f20cad58d5d78c215001617b7f07"
|
||||
"reference": "d66f9c343fa894ec2037cc928381df90a7ad4306"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07",
|
||||
"reference": "ea272a882be7f20cad58d5d78c215001617b7f07",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/d66f9c343fa894ec2037cc928381df90a7ad4306",
|
||||
"reference": "d66f9c343fa894ec2037cc928381df90a7ad4306",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3552,7 +3473,7 @@
|
||||
"utf8"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/string/tree/v7.1.3"
|
||||
"source": "https://github.com/symfony/string/tree/v7.1.5"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -3568,20 +3489,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-07-22T10:25:37+00:00"
|
||||
"time": "2024-09-20T08:28:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "vimeo/psalm",
|
||||
"version": "5.25.0",
|
||||
"version": "5.26.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/vimeo/psalm.git",
|
||||
"reference": "01a8eb06b9e9cc6cfb6a320bf9fb14331919d505"
|
||||
"reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/vimeo/psalm/zipball/01a8eb06b9e9cc6cfb6a320bf9fb14331919d505",
|
||||
"reference": "01a8eb06b9e9cc6cfb6a320bf9fb14331919d505",
|
||||
"url": "https://api.github.com/repos/vimeo/psalm/zipball/d747f6500b38ac4f7dfc5edbcae6e4b637d7add0",
|
||||
"reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3602,7 +3523,7 @@
|
||||
"felixfbecker/language-server-protocol": "^1.5.2",
|
||||
"fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
|
||||
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
|
||||
"nikic/php-parser": "^4.16",
|
||||
"nikic/php-parser": "^4.17",
|
||||
"php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
|
||||
"sebastian/diff": "^4.0 || ^5.0 || ^6.0",
|
||||
"spatie/array-to-xml": "^2.17.0 || ^3.0",
|
||||
@@ -3678,7 +3599,7 @@
|
||||
"issues": "https://github.com/vimeo/psalm/issues",
|
||||
"source": "https://github.com/vimeo/psalm"
|
||||
},
|
||||
"time": "2024-06-16T15:08:35+00:00"
|
||||
"time": "2024-09-08T18:53:08+00:00"
|
||||
},
|
||||
{
|
||||
"name": "wapmorgan/php-deprecation-detector",
|
||||
@@ -3821,6 +3742,6 @@
|
||||
"ext-curl": "*",
|
||||
"ext-apcu": "*"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
}
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
"nextcloud-aio-collabora",
|
||||
"nextcloud-aio-talk",
|
||||
"nextcloud-aio-nextcloud",
|
||||
"nextcloud-aio-notify-push"
|
||||
"nextcloud-aio-notify-push",
|
||||
"nextcloud-aio-whiteboard"
|
||||
],
|
||||
"display_name": "Apache",
|
||||
"image": "nextcloud/aio-apache",
|
||||
@@ -37,7 +38,8 @@
|
||||
"TZ=%TIMEZONE%",
|
||||
"APACHE_MAX_SIZE=%APACHE_MAX_SIZE%",
|
||||
"APACHE_MAX_TIME=%NEXTCLOUD_MAX_TIME%",
|
||||
"NOTIFY_PUSH_HOST=nextcloud-aio-notify-push"
|
||||
"NOTIFY_PUSH_HOST=nextcloud-aio-notify-push",
|
||||
"WHITEBOARD_HOST=nextcloud-aio-whiteboard"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
@@ -148,7 +150,8 @@
|
||||
"TURN_SECRET",
|
||||
"SIGNALING_SECRET",
|
||||
"FULLTEXTSEARCH_PASSWORD",
|
||||
"IMAGINARY_SECRET"
|
||||
"IMAGINARY_SECRET",
|
||||
"WHITEBOARD_SECRET"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
@@ -224,7 +227,9 @@
|
||||
"APACHE_PORT=%APACHE_PORT%",
|
||||
"ADDITIONAL_TRUSTED_PROXY=%CADDY_IP_ADDRESS%",
|
||||
"THIS_IS_AIO=true",
|
||||
"IMAGINARY_SECRET=%IMAGINARY_SECRET%"
|
||||
"IMAGINARY_SECRET=%IMAGINARY_SECRET%",
|
||||
"WHITEBOARD_SECRET=%WHITEBOARD_SECRET%",
|
||||
"WHITEBOARD_ENABLED=%WHITEBOARD_ENABLED%"
|
||||
],
|
||||
"stop_grace_period": 600,
|
||||
"restart": "unless-stopped",
|
||||
@@ -746,6 +751,40 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-whiteboard",
|
||||
"image_tag": "%AIO_CHANNEL%",
|
||||
"display_name": "Whiteboard",
|
||||
"image": "nextcloud/aio-whiteboard",
|
||||
"init": true,
|
||||
"expose": [
|
||||
"3002"
|
||||
],
|
||||
"internal_port": "3002",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"NEXTCLOUD_URL=https://%NC_DOMAIN%",
|
||||
"JWT_SECRET_KEY=%WHITEBOARD_SECRET%",
|
||||
"STORAGE_STRATEGY=redis",
|
||||
"REDIS_HOST=nextcloud-aio-redis",
|
||||
"REDIS_HOST_PASSWORD=%REDIS_PASSWORD%"
|
||||
],
|
||||
"secrets": [
|
||||
"WHITEBOARD_SECRET",
|
||||
"REDIS_PASSWORD"
|
||||
],
|
||||
"restart": "unless-stopped",
|
||||
"profiles": [
|
||||
"whiteboard"
|
||||
],
|
||||
"read_only": true,
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<files psalm-version="5.25.0@01a8eb06b9e9cc6cfb6a320bf9fb14331919d505"/>
|
||||
<files psalm-version="5.26.1@d747f6500b38ac4f7dfc5edbcae6e4b637d7add0"/>
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
<?xml version="1.0"?>
|
||||
<psalm
|
||||
errorLevel="2"
|
||||
resolveFromConfigFile="true"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="https://getpsalm.org/schema/config"
|
||||
xsi:schemaLocation="https://getpsalm.org/schema/config"
|
||||
errorBaseline="psalm-baseline.xml"
|
||||
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
|
||||
errorBaseline="psalm-baseline.xml"
|
||||
findUnusedBaselineEntry="true"
|
||||
findUnusedCode="false"
|
||||
>
|
||||
<projectFiles>
|
||||
<directory name="templates"/>
|
||||
<directory name="src"/>
|
||||
<file name="public/index.php"/>
|
||||
<ignoreFiles>
|
||||
<directory name="vendor" />
|
||||
</ignoreFiles>
|
||||
</projectFiles>
|
||||
<extraFiles>
|
||||
<directory name="vendor" />
|
||||
</extraFiles>
|
||||
<issueHandlers>
|
||||
</issueHandlers>
|
||||
</psalm>
|
||||
|
||||
5
php/public/disable-whiteboard.js
Normal file
5
php/public/disable-whiteboard.js
Normal file
@@ -0,0 +1,5 @@
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
// Whiteboard
|
||||
let whiteboard = document.getElementById("whiteboard");
|
||||
whiteboard.disabled = true;
|
||||
});
|
||||
BIN
php/public/img/Background_Light.jpg
Normal file
BIN
php/public/img/Background_Light.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 661 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 9.4 KiB |
@@ -125,6 +125,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
|
||||
'is_dri_device_enabled' => $configurationManager->isDriDeviceEnabled(),
|
||||
'is_talk_recording_enabled' => $configurationManager->isTalkRecordingEnabled(),
|
||||
'is_docker_socket_proxy_enabled' => $configurationManager->isDockerSocketProxyEnabled(),
|
||||
'is_whiteboard_enabled' => $configurationManager->isWhiteboardEnabled(),
|
||||
]);
|
||||
})->setName('profile');
|
||||
$app->get('/login', function (Request $request, Response $response, array $args) use ($container) {
|
||||
|
||||
@@ -66,4 +66,8 @@ document.addEventListener("DOMContentLoaded", function(event) {
|
||||
dockerSocketProxy.addEventListener('change', makeOptionsFormSubmitVisible);
|
||||
// dockerSocketProxy.addEventListener('change', handleDockerSocketProxyWarning);
|
||||
}
|
||||
|
||||
// Whiteboard
|
||||
let whiteboard = document.getElementById("whiteboard");
|
||||
whiteboard.addEventListener('change', makeOptionsFormSubmitVisible);
|
||||
});
|
||||
|
||||
@@ -9,28 +9,25 @@ a {
|
||||
color: #0082c9;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 6px 16px;
|
||||
a.button,
|
||||
input[type="submit"] {
|
||||
padding: 8px 16px;
|
||||
width: auto;
|
||||
min-height: 34px;
|
||||
height: 34px;
|
||||
cursor: pointer;
|
||||
background-color:#0082c9;
|
||||
background-color: #0082c9;
|
||||
font-weight: bold;
|
||||
border-radius: 100px;
|
||||
border-radius: 8px;
|
||||
margin: 3px 3px 3px 0;
|
||||
font-size: 13px;
|
||||
font-size: 14px;
|
||||
color: white;
|
||||
border: 1px solid black;
|
||||
border: .5px solid black;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.button:focus {
|
||||
color:black;
|
||||
border: 2px solid black;
|
||||
}
|
||||
|
||||
#logout {
|
||||
margin-top: 7px;
|
||||
a.button:focus,
|
||||
input[type="submit"]:focus {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
summary {
|
||||
@@ -88,8 +85,7 @@ div.toast {
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
border-radius: 3px;
|
||||
background: none;
|
||||
background-color: white;
|
||||
background: white none;
|
||||
}
|
||||
|
||||
.login {
|
||||
@@ -100,7 +96,7 @@ div.toast {
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
border-radius: 16px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.login > .monospace {
|
||||
@@ -108,12 +104,36 @@ div.toast {
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
input {
|
||||
padding: 10px;
|
||||
margin-bottom: 15px;
|
||||
form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.login > form > input {
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
select {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
height: 34px;
|
||||
margin-bottom: 15px;
|
||||
border-radius: 8px;
|
||||
border: .5px solid black;
|
||||
}
|
||||
|
||||
textarea {
|
||||
border-radius: 8px;
|
||||
border: .5px solid black;
|
||||
}
|
||||
|
||||
input[type="text"]:focus,
|
||||
input[type="password"]:focus,
|
||||
textarea:focus,
|
||||
select:focus {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
.login > form > input[type="password"],
|
||||
.login > form > input[type="text"],
|
||||
.login > form > input[type="submit"] {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -123,30 +143,30 @@ input {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.login > .button {
|
||||
.login a.button,
|
||||
.login input[type="submit"] {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
text-align: center;
|
||||
line-height: 33px;
|
||||
margin-top: 20px;
|
||||
padding: 0px;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
.login-wrapper {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background-color: #0082c9;
|
||||
background-image: linear-gradient(
|
||||
40deg
|
||||
, #0082c9 0%, #30b6ff 100%);
|
||||
background-size: contain;
|
||||
background-image: url('/img/background.png'), linear-gradient(
|
||||
40deg
|
||||
, #0082c9 0%, #30b6ff 100%);
|
||||
position: relative;
|
||||
min-height: 100dvh;
|
||||
min-width: 100vw;
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: auto;
|
||||
background-image: url("img/Background_Light.jpg");
|
||||
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.content {
|
||||
main {
|
||||
padding: 20px;
|
||||
max-width: 100%;
|
||||
word-break: break-word;
|
||||
@@ -173,26 +193,31 @@ header {
|
||||
background-image: linear-gradient(40deg, #0082c9 0%, #30b6ff 100%);
|
||||
height: 50px;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
header > form {
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
.loading {
|
||||
color: grey;
|
||||
}
|
||||
|
||||
#overlay {
|
||||
position: fixed; /* Sit on top of the page content */
|
||||
display: none; /* Hidden by default */
|
||||
width: 100%; /* Full width (cover the whole page) */
|
||||
height: 100%; /* Full height (cover the whole page) */
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: rgba(0,0,0,0.5); /* Black background with opacity */
|
||||
z-index: 2;
|
||||
position: fixed; /* Sit on top of the page content */
|
||||
display: none; /* Hidden by default */
|
||||
width: 100%; /* Full width (cover the whole page) */
|
||||
height: 100%; /* Full height (cover the whole page) */
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: rgba(0, 0, 0, 0.5); /* Black background with opacity */
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
#overlay.loading {
|
||||
display: block;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.loader {
|
||||
@@ -206,15 +231,15 @@ header {
|
||||
position: absolute;
|
||||
top: calc(50% - 60px);
|
||||
left: calc(50% - 60px);
|
||||
}
|
||||
|
||||
/* Safari */
|
||||
@-webkit-keyframes spin {
|
||||
}
|
||||
|
||||
/* Safari */
|
||||
@-webkit-keyframes spin {
|
||||
0% { -webkit-transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,12 @@ use AIO\Data\ConfigurationManager;
|
||||
use AIO\Data\DataConst;
|
||||
use \DateTime;
|
||||
|
||||
class AuthManager {
|
||||
readonly class AuthManager {
|
||||
private const string SESSION_KEY = 'aio_authenticated';
|
||||
private ConfigurationManager $configurationManager;
|
||||
|
||||
public function __construct(ConfigurationManager $configurationManager) {
|
||||
$this->configurationManager = $configurationManager;
|
||||
public function __construct(
|
||||
private ConfigurationManager $configurationManager
|
||||
) {
|
||||
}
|
||||
|
||||
public function CheckCredentials(string $password) : bool {
|
||||
|
||||
@@ -2,92 +2,42 @@
|
||||
|
||||
namespace AIO\Container;
|
||||
|
||||
use AIO\Container\State\IContainerState;
|
||||
use AIO\Data\ConfigurationManager;
|
||||
use AIO\Docker\DockerActionManager;
|
||||
use AIO\ContainerDefinitionFetcher;
|
||||
|
||||
class Container {
|
||||
private string $identifier;
|
||||
private string $displayName;
|
||||
private string $containerName;
|
||||
private string $restartPolicy;
|
||||
private int $maxShutdownTime;
|
||||
private ContainerPorts $ports;
|
||||
private string $internalPorts;
|
||||
private ContainerVolumes $volumes;
|
||||
private ContainerEnvironmentVariables $containerEnvironmentVariables;
|
||||
/** @var string[] */
|
||||
private array $dependsOn;
|
||||
/** @var string[] */
|
||||
private array $secrets;
|
||||
/** @var string[] */
|
||||
private array $devices;
|
||||
/** @var string[] */
|
||||
private array $capAdd;
|
||||
private int $shmSize;
|
||||
private bool $apparmorUnconfined;
|
||||
/** @var string[] */
|
||||
private array $backupVolumes;
|
||||
private array $nextcloudExecCommands;
|
||||
private bool $readOnlyRootFs;
|
||||
private array $tmpfs;
|
||||
private bool $init;
|
||||
private string $imageTag;
|
||||
private AioVariables $aioVariables;
|
||||
private string $documentation;
|
||||
private DockerActionManager $dockerActionManager;
|
||||
|
||||
readonly class Container {
|
||||
public function __construct(
|
||||
string $identifier,
|
||||
string $displayName,
|
||||
string $containerName,
|
||||
string $restartPolicy,
|
||||
int $maxShutdownTime,
|
||||
ContainerPorts $ports,
|
||||
string $internalPorts,
|
||||
ContainerVolumes $volumes,
|
||||
ContainerEnvironmentVariables $containerEnvironmentVariables,
|
||||
array $dependsOn,
|
||||
array $secrets,
|
||||
array $devices,
|
||||
array $capAdd,
|
||||
int $shmSize,
|
||||
bool $apparmorUnconfined,
|
||||
array $backupVolumes,
|
||||
array $nextcloudExecCommands,
|
||||
bool $readOnlyRootFs,
|
||||
array $tmpfs,
|
||||
bool $init,
|
||||
string $imageTag,
|
||||
AioVariables $aioVariables,
|
||||
string $documentation,
|
||||
DockerActionManager $dockerActionManager
|
||||
private string $identifier,
|
||||
private string $displayName,
|
||||
private string $containerName,
|
||||
private string $restartPolicy,
|
||||
private int $maxShutdownTime,
|
||||
private ContainerPorts $ports,
|
||||
private string $internalPorts,
|
||||
private ContainerVolumes $volumes,
|
||||
private ContainerEnvironmentVariables $containerEnvironmentVariables,
|
||||
/** @var string[] */
|
||||
private array $dependsOn,
|
||||
/** @var string[] */
|
||||
private array $secrets,
|
||||
/** @var string[] */
|
||||
private array $devices,
|
||||
/** @var string[] */
|
||||
private array $capAdd,
|
||||
private int $shmSize,
|
||||
private bool $apparmorUnconfined,
|
||||
/** @var string[] */
|
||||
private array $backupVolumes,
|
||||
private array $nextcloudExecCommands,
|
||||
private bool $readOnlyRootFs,
|
||||
private array $tmpfs,
|
||||
private bool $init,
|
||||
private string $imageTag,
|
||||
private AioVariables $aioVariables,
|
||||
private string $documentation,
|
||||
private DockerActionManager $dockerActionManager
|
||||
) {
|
||||
$this->identifier = $identifier;
|
||||
$this->displayName = $displayName;
|
||||
$this->containerName = $containerName;
|
||||
$this->restartPolicy = $restartPolicy;
|
||||
$this->maxShutdownTime = $maxShutdownTime;
|
||||
$this->ports = $ports;
|
||||
$this->internalPorts = $internalPorts;
|
||||
$this->volumes = $volumes;
|
||||
$this->containerEnvironmentVariables = $containerEnvironmentVariables;
|
||||
$this->dependsOn = $dependsOn;
|
||||
$this->secrets = $secrets;
|
||||
$this->devices = $devices;
|
||||
$this->capAdd = $capAdd;
|
||||
$this->shmSize = $shmSize;
|
||||
$this->apparmorUnconfined = $apparmorUnconfined;
|
||||
$this->backupVolumes = $backupVolumes;
|
||||
$this->nextcloudExecCommands = $nextcloudExecCommands;
|
||||
$this->readOnlyRootFs = $readOnlyRootFs;
|
||||
$this->tmpfs = $tmpfs;
|
||||
$this->init = $init;
|
||||
$this->imageTag = $imageTag;
|
||||
$this->aioVariables = $aioVariables;
|
||||
$this->documentation = $documentation;
|
||||
$this->dockerActionManager = $dockerActionManager;
|
||||
}
|
||||
|
||||
public function GetIdentifier() : string {
|
||||
@@ -162,19 +112,19 @@ class Container {
|
||||
return $this->volumes;
|
||||
}
|
||||
|
||||
public function GetRunningState() : IContainerState {
|
||||
public function GetRunningState() : ContainerState {
|
||||
return $this->dockerActionManager->GetContainerRunningState($this);
|
||||
}
|
||||
|
||||
public function GetRestartingState() : IContainerState {
|
||||
public function GetRestartingState() : ContainerState {
|
||||
return $this->dockerActionManager->GetContainerRestartingState($this);
|
||||
}
|
||||
|
||||
public function GetUpdateState() : IContainerState {
|
||||
public function GetUpdateState() : VersionState {
|
||||
return $this->dockerActionManager->GetContainerUpdateState($this);
|
||||
}
|
||||
|
||||
public function GetStartingState() : IContainerState {
|
||||
public function GetStartingState() : ContainerState {
|
||||
return $this->dockerActionManager->GetContainerStartingState($this);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,17 +3,10 @@
|
||||
namespace AIO\Container;
|
||||
|
||||
class ContainerPort {
|
||||
public string $port;
|
||||
public string $ipBinding;
|
||||
public string $protocol;
|
||||
|
||||
public function __construct(
|
||||
string $port,
|
||||
string $ipBinding,
|
||||
string $protocol
|
||||
public string $port,
|
||||
public string $ipBinding,
|
||||
public string $protocol
|
||||
) {
|
||||
$this->port = $port;
|
||||
$this->ipBinding = $ipBinding;
|
||||
$this->protocol = $protocol;
|
||||
}
|
||||
}
|
||||
|
||||
12
php/src/Container/ContainerState.php
Normal file
12
php/src/Container/ContainerState.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container;
|
||||
|
||||
enum ContainerState: string {
|
||||
case ImageDoesNotExist = 'image_does_not_exist';
|
||||
case NotRestarting = 'not_restarting';
|
||||
case Restarting = 'restarting';
|
||||
case Running = 'running';
|
||||
case Starting = 'starting';
|
||||
case Stopped = 'stopped';
|
||||
}
|
||||
@@ -3,17 +3,10 @@
|
||||
namespace AIO\Container;
|
||||
|
||||
class ContainerVolume {
|
||||
public string $name;
|
||||
public string $mountPoint;
|
||||
public bool $isWritable;
|
||||
|
||||
public function __construct(
|
||||
string $name,
|
||||
string $mountPoint,
|
||||
bool $isWritable
|
||||
public string $name,
|
||||
public string $mountPoint,
|
||||
public bool $isWritable
|
||||
) {
|
||||
$this->name = $name;
|
||||
$this->mountPoint = $mountPoint;
|
||||
$this->isWritable = $isWritable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container\State;
|
||||
|
||||
interface IContainerState {}
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container\State;
|
||||
|
||||
class ImageDoesNotExistState implements IContainerState
|
||||
{}
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container\State;
|
||||
|
||||
class NotRestartingState implements IContainerState
|
||||
{}
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container\State;
|
||||
|
||||
class RestartingState implements IContainerState
|
||||
{}
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container\State;
|
||||
|
||||
class RunningState implements IContainerState
|
||||
{}
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container\State;
|
||||
|
||||
class StartingState implements IContainerState
|
||||
{}
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container\State;
|
||||
|
||||
class StoppedState implements IContainerState
|
||||
{}
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container\State;
|
||||
|
||||
class VersionDifferentState implements IContainerState
|
||||
{}
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container\State;
|
||||
|
||||
class VersionEqualState implements IContainerState
|
||||
{}
|
||||
8
php/src/Container/VersionState.php
Normal file
8
php/src/Container/VersionState.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace AIO\Container;
|
||||
|
||||
enum VersionState: string {
|
||||
case Different = 'different';
|
||||
case Equal = 'equal';
|
||||
}
|
||||
@@ -9,23 +9,15 @@ use AIO\Container\ContainerPort;
|
||||
use AIO\Container\ContainerPorts;
|
||||
use AIO\Container\ContainerVolume;
|
||||
use AIO\Container\ContainerVolumes;
|
||||
use AIO\Container\State\RunningState;
|
||||
use AIO\Data\ConfigurationManager;
|
||||
use AIO\Data\DataConst;
|
||||
use AIO\Docker\DockerActionManager;
|
||||
|
||||
class ContainerDefinitionFetcher
|
||||
{
|
||||
private ConfigurationManager $configurationManager;
|
||||
private \DI\Container $container;
|
||||
|
||||
readonly class ContainerDefinitionFetcher {
|
||||
public function __construct(
|
||||
ConfigurationManager $configurationManager,
|
||||
\DI\Container $container
|
||||
)
|
||||
{
|
||||
$this->configurationManager = $configurationManager;
|
||||
$this->container = $container;
|
||||
private ConfigurationManager $configurationManager,
|
||||
private \DI\Container $container
|
||||
) {
|
||||
}
|
||||
|
||||
public function GetContainerById(string $id): Container
|
||||
@@ -95,11 +87,15 @@ class ContainerDefinitionFetcher
|
||||
if (!$this->configurationManager->isDockerSocketProxyEnabled()) {
|
||||
continue;
|
||||
}
|
||||
} elseif ($entry['container_name'] === 'nextcloud-aio-whiteboard') {
|
||||
if (!$this->configurationManager->isWhiteboardEnabled()) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$ports = new ContainerPorts();
|
||||
if (isset($entry['ports'])) {
|
||||
foreach ($entry['ports'] as $value) {
|
||||
foreach ($entry['ports'] as $value) {
|
||||
$ports->AddPort(
|
||||
new ContainerPort(
|
||||
$value['port_number'],
|
||||
@@ -200,11 +196,15 @@ class ContainerDefinitionFetcher
|
||||
if (!$this->configurationManager->isDockerSocketProxyEnabled()) {
|
||||
continue;
|
||||
}
|
||||
} elseif ($value === 'nextcloud-aio-whiteboard') {
|
||||
if (!$this->configurationManager->isWhiteboardEnabled()) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$dependsOn[] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$variables = new ContainerEnvironmentVariables();
|
||||
if (isset($entry['environment'])) {
|
||||
foreach ($entry['environment'] as $value) {
|
||||
|
||||
@@ -9,14 +9,10 @@ use AIO\Docker\DockerActionManager;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
|
||||
class ConfigurationController
|
||||
{
|
||||
private ConfigurationManager $configurationManager;
|
||||
|
||||
readonly class ConfigurationController {
|
||||
public function __construct(
|
||||
ConfigurationManager $configurationManager
|
||||
private ConfigurationManager $configurationManager
|
||||
) {
|
||||
$this->configurationManager = $configurationManager;
|
||||
}
|
||||
|
||||
public function SetConfig(Request $request, Response $response, array $args) : Response {
|
||||
@@ -120,6 +116,11 @@ class ConfigurationController
|
||||
} else {
|
||||
$this->configurationManager->SetDockerSocketProxyEnabledState(0);
|
||||
}
|
||||
if (isset($request->getParsedBody()['whiteboard'])) {
|
||||
$this->configurationManager->SetWhiteboardEnabledState(1);
|
||||
} else {
|
||||
$this->configurationManager->SetWhiteboardEnabledState(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($request->getParsedBody()['delete_collabora_dictionaries'])) {
|
||||
|
||||
@@ -2,28 +2,21 @@
|
||||
|
||||
namespace AIO\Controller;
|
||||
|
||||
use AIO\Container\State\RunningState;
|
||||
use AIO\Container\ContainerState;
|
||||
use AIO\ContainerDefinitionFetcher;
|
||||
use AIO\Docker\DockerActionManager;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use AIO\Data\ConfigurationManager;
|
||||
|
||||
class DockerController
|
||||
{
|
||||
private DockerActionManager $dockerActionManager;
|
||||
private ContainerDefinitionFetcher $containerDefinitionFetcher;
|
||||
readonly class DockerController {
|
||||
private const string TOP_CONTAINER = 'nextcloud-aio-apache';
|
||||
private ConfigurationManager $configurationManager;
|
||||
|
||||
public function __construct(
|
||||
DockerActionManager $dockerActionManager,
|
||||
ContainerDefinitionFetcher $containerDefinitionFetcher,
|
||||
ConfigurationManager $configurationManager
|
||||
private DockerActionManager $dockerActionManager,
|
||||
private ContainerDefinitionFetcher $containerDefinitionFetcher,
|
||||
private ConfigurationManager $configurationManager
|
||||
) {
|
||||
$this->dockerActionManager = $dockerActionManager;
|
||||
$this->containerDefinitionFetcher = $containerDefinitionFetcher;
|
||||
$this->configurationManager = $configurationManager;
|
||||
}
|
||||
|
||||
private function PerformRecursiveContainerStart(string $id, bool $pullImage = true) : void {
|
||||
@@ -35,7 +28,7 @@ class DockerController
|
||||
|
||||
// Don't start if container is already running
|
||||
// This is expected to happen if a container is defined in depends_on of multiple containers
|
||||
if ($container->GetRunningState() instanceof RunningState) {
|
||||
if ($container->GetRunningState() === ContainerState::Running) {
|
||||
error_log('Not starting ' . $id . ' because it was already started.');
|
||||
return;
|
||||
}
|
||||
@@ -48,7 +41,7 @@ class DockerController
|
||||
}
|
||||
}
|
||||
|
||||
// Check if docker hub is reachable in order to make sure that we do not try to pull an image if it is down
|
||||
// Check if docker hub is reachable in order to make sure that we do not try to pull an image if it is down
|
||||
// and try to mitigate issues that are arising due to that
|
||||
if ($pullImage) {
|
||||
if (!$this->dockerActionManager->isDockerHubReachable($container)) {
|
||||
@@ -173,7 +166,7 @@ class DockerController
|
||||
}
|
||||
|
||||
if (isset($request->getParsedBody()['install_latest_major'])) {
|
||||
$installLatestMajor = 29;
|
||||
$installLatestMajor = 30;
|
||||
} else {
|
||||
$installLatestMajor = "";
|
||||
}
|
||||
@@ -261,10 +254,10 @@ class DockerController
|
||||
$domaincheckContainer = $this->containerDefinitionFetcher->GetContainerById($id);
|
||||
$apacheContainer = $this->containerDefinitionFetcher->GetContainerById(self::TOP_CONTAINER);
|
||||
// Don't start if apache is already running
|
||||
if ($apacheContainer->GetRunningState() instanceof RunningState) {
|
||||
if ($apacheContainer->GetRunningState() === ContainerState::Running) {
|
||||
return;
|
||||
// Don't start if domaincheck is already running
|
||||
} elseif ($domaincheckContainer->GetRunningState() instanceof RunningState) {
|
||||
} elseif ($domaincheckContainer->GetRunningState() === ContainerState::Running) {
|
||||
$domaincheckWasStarted = apcu_fetch($cacheKey);
|
||||
// Start domaincheck again when 10 minutes are over by not returning here
|
||||
if($domaincheckWasStarted !== false && is_string($domaincheckWasStarted)) {
|
||||
|
||||
@@ -9,14 +9,11 @@ use AIO\Docker\DockerActionManager;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
|
||||
class LoginController
|
||||
{
|
||||
private AuthManager $authManager;
|
||||
private DockerActionManager $dockerActionManager;
|
||||
|
||||
public function __construct(AuthManager $authManager, DockerActionManager $dockerActionManager) {
|
||||
$this->authManager = $authManager;
|
||||
$this->dockerActionManager = $dockerActionManager;
|
||||
readonly class LoginController {
|
||||
public function __construct(
|
||||
private AuthManager $authManager,
|
||||
private DockerActionManager $dockerActionManager,
|
||||
) {
|
||||
}
|
||||
|
||||
public function TryLogin(Request $request, Response $response, array $args) : Response {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user