Compare commits

..

129 Commits

Author SHA1 Message Date
szaimen
6063db801c Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-05-16 07:26:45 +00:00
szaimen
22da7408a5 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-05-13 14:10:42 +00:00
Simon L.
8423dc785a Revert "Update index.yaml"
This reverts commit 4dd278bab9.
2026-05-13 16:07:06 +02:00
Simon L.
cbf558f01c Revert "Update index.yaml"
This reverts commit a28409c858.
2026-05-13 16:07:00 +02:00
szaimen
a28409c858 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-05-13 09:19:47 +00:00
szaimen
4dd278bab9 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-05-13 09:18:29 +00:00
szaimen
4c47dddc2e Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-04-09 09:59:15 +00:00
szaimen
9d754ec537 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-03-06 08:18:33 +00:00
szaimen
0ba0ace5e1 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-02-18 12:44:05 +00:00
szaimen
30fffcba07 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-02-11 14:28:44 +00:00
szaimen
ae86b688f6 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-01-22 14:27:34 +00:00
szaimen
7460e78e98 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2026-01-14 11:56:43 +00:00
szaimen
ad2d53180b Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-12-18 10:02:56 +00:00
szaimen
b7730b46a6 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-12-10 13:41:10 +00:00
szaimen
4fb6b0d57b Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-11-28 09:00:14 +00:00
szaimen
c7afd4f90e Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-10-31 12:29:07 +00:00
szaimen
b470a6051a Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-10-15 08:44:28 +00:00
szaimen
3a298076ba Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-09-27 08:19:20 +00:00
szaimen
0662e57d9b Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-09-18 09:33:41 +00:00
szaimen
3defa4967f Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-09-05 10:15:50 +00:00
szaimen
4b19f4c0a3 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-08-22 11:38:12 +00:00
szaimen
c2ba3481a6 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-08-11 12:03:26 +00:00
szaimen
6aafc753d4 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-07-17 09:31:27 +00:00
szaimen
206fbf8422 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-07-10 08:55:03 +00:00
szaimen
ac966412cf Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-07-01 11:54:02 +00:00
szaimen
e64121a977 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-06-19 08:34:22 +00:00
szaimen
ff22ab211f Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-06-10 12:35:00 +00:00
szaimen
33a917c163 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-05-26 13:29:23 +00:00
Simon L.
f4dd1cf5d0 Revert "Update index.yaml"
This reverts commit 0b5e8110c1.
2025-05-26 15:28:04 +02:00
szaimen
0b5e8110c1 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-05-26 12:47:42 +00:00
szaimen
2d00da6012 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-05-12 08:47:50 +00:00
szaimen
3692457b00 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-04-24 09:59:17 +00:00
szaimen
0bd1512549 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-04-17 08:58:40 +00:00
szaimen
136f1c884e Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-04-08 08:22:21 +00:00
szaimen
72b6e60400 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-03-31 08:47:04 +00:00
szaimen
be6c5d3714 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-03-25 09:47:09 +00:00
szaimen
cb07f18cc8 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-03-06 09:46:09 +00:00
szaimen
fdaf675dd1 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-02-25 13:01:03 +00:00
szaimen
4e1c8dd95e Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-02-04 11:04:54 +00:00
szaimen
a4915339ad Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-01-22 10:12:10 +00:00
szaimen
52a19f75f7 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-01-14 10:47:51 +00:00
szaimen
8cc9d73d93 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2025-01-06 11:07:45 +00:00
szaimen
ad61683b8d Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-12-16 14:06:57 +00:00
szaimen
8a8b0721ef Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-12-16 12:48:12 +00:00
szaimen
1ee210b481 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-12-16 10:50:19 +00:00
szaimen
1274ebd000 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-12-03 14:16:27 +00:00
szaimen
b1c38e03c9 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-11-26 10:17:01 +00:00
szaimen
fdf4e5dc4a Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-11-06 15:32:42 +00:00
szaimen
0d6cabc3ba Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-10-17 09:57:05 +00:00
szaimen
cc0923c84d Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-09-25 08:27:20 +00:00
szaimen
cb2a69f32f Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-09-14 06:46:11 +00:00
Simon L.
614a9b97be Revert "Update index.yaml"
This reverts commit e235a9dd46.
2024-08-19 15:08:12 +02:00
szaimen
e235a9dd46 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-08-19 13:03:18 +00:00
szaimen
b8b0ad99c8 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-08-08 09:10:12 +00:00
szaimen
2e28033838 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-07-25 07:48:24 +00:00
szaimen
cd08be3551 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-07-18 06:49:41 +00:00
szaimen
57e3e5c66f Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-07-01 09:24:12 +00:00
szaimen
9e309e97e8 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-06-17 09:03:01 +00:00
szaimen
2b2d1ce764 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-06-06 08:02:39 +00:00
Simon L.
e6dadecd15 Revert "Update index.yaml"
This reverts commit 19a221205d.
2024-05-21 15:05:09 +02:00
szaimen
19a221205d Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-05-21 12:11:59 +00:00
szaimen
5ecb856959 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-05-02 10:52:50 +00:00
szaimen
c2761f24f5 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-04-24 10:17:55 +00:00
szaimen
1adf679e18 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-04-11 12:10:05 +00:00
szaimen
73563b69b6 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-04-04 09:38:02 +00:00
szaimen
e4034ac013 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-04-04 09:26:34 +00:00
szaimen
060f6aeb1f Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-03-26 13:20:18 +00:00
szaimen
9326394386 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-03-21 08:11:15 +00:00
szaimen
88da974922 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-03-08 09:36:30 +00:00
szaimen
a41ca6c341 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-02-28 19:30:19 +00:00
szaimen
cc5129c6b3 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-02-28 11:31:05 +00:00
szaimen
7cf0b6437c Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-02-23 18:58:07 +00:00
szaimen
a2cc883d9a Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-02-01 14:53:58 +00:00
szaimen
365a4dab8a Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-02-01 12:57:41 +00:00
Simon L
39b9765f52 Revert "Update index.yaml"
This reverts commit 63165d1910.
2024-02-01 13:40:09 +01:00
szaimen
63165d1910 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-02-01 12:37:03 +00:00
szaimen
c722eae2b1 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-01-24 12:26:17 +00:00
szaimen
5761af59f8 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-01-17 09:01:07 +00:00
szaimen
542277a615 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2024-01-09 12:32:52 +00:00
szaimen
dec906e92b Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-12-20 15:40:32 +00:00
szaimen
9021b608b4 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-12-12 12:02:53 +00:00
szaimen
8697e39be0 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-12-07 12:22:35 +00:00
szaimen
873aba9cf7 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-12-07 11:35:38 +00:00
szaimen
5990aaa8d8 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-12-07 08:23:56 +00:00
szaimen
b01a999081 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-30 08:20:39 +00:00
szaimen
bb4c1954a0 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-23 18:37:06 +00:00
szaimen
cf83598dc5 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-23 14:29:04 +00:00
szaimen
b2d35138ea Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-23 11:08:33 +00:00
szaimen
378ddfffa4 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-23 09:57:20 +00:00
szaimen
c73a6d77e7 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-23 08:48:20 +00:00
szaimen
3f56b3b710 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-21 18:10:38 +00:00
szaimen
a6108e394b Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-21 15:41:33 +00:00
szaimen
d03d413060 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-21 10:46:03 +00:00
szaimen
98bcc39683 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-17 10:03:32 +00:00
szaimen
8861c16685 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-16 20:38:57 +00:00
szaimen
47f81a40f9 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-13 13:26:34 +00:00
szaimen
ea6383f4d9 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-13 13:11:06 +00:00
szaimen
47dc35a60c Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-13 13:05:29 +00:00
szaimen
a04d40db8a Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-08 10:30:24 +00:00
szaimen
17ee039b6a Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-06 20:47:57 +00:00
szaimen
8ef2ca3064 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-06 15:09:33 +00:00
szaimen
6264490965 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-06 15:09:08 +00:00
szaimen
6de6549f18 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-06 15:08:12 +00:00
szaimen
2733056d0d Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-06 15:07:48 +00:00
szaimen
da012b4c21 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-11-06 13:28:53 +00:00
szaimen
2d0dfe5ef0 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-10-30 13:08:41 +00:00
szaimen
8e01eb665a Publishing chart package for helm-chart-7.5.1
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-10-30 13:08:39 +00:00
szaimen
f8c0737350 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-10-27 11:27:53 +00:00
szaimen
8260b7f745 Publishing chart package for helm-chart-7.5.0
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-10-27 11:27:52 +00:00
szaimen
41ba7cc1c6 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-10-16 08:27:09 +00:00
szaimen
be4e99f61c Publishing chart package for helm-chart-7.4.1
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-10-16 08:27:07 +00:00
szaimen
adbebb4a4c Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-09-16 12:40:49 +00:00
szaimen
f12e5b244e Publishing chart package for helm-chart-7.2.1
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-09-16 12:40:48 +00:00
szaimen
fd31fc0a32 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-09-12 08:55:15 +00:00
szaimen
1a6a7acce6 Publishing chart package for helm-chart-7.1.1
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-09-12 08:55:13 +00:00
szaimen
30778fcc07 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-08-17 07:28:19 +00:00
szaimen
17f71a128c Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-07-28 09:41:57 +00:00
szaimen
e72bfd6c34 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-07-20 14:07:23 +00:00
szaimen
b32a8230cb Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-06-26 10:34:47 +00:00
szaimen
564a0366b2 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-06-13 12:14:24 +00:00
szaimen
efa350e2d0 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-06-13 08:12:10 +00:00
szaimen
0a1aa673a7 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-06-06 07:20:26 +00:00
szaimen
f047678b43 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-05-30 10:38:18 +00:00
szaimen
d17bb88086 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-05-11 09:49:06 +00:00
szaimen
d83a996d0d Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-05-01 12:16:52 +00:00
Simon L
f4f36e8a52 adjust the readme
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 11:51:39 +02:00
szaimen
55ac1c4fa4 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-04-22 09:46:22 +00:00
szaimen
180e0246b8 Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-04-14 13:50:10 +00:00
szaimen
c7fa53b02f Update index.yaml
Signed-off-by: szaimen <szaimen@users.noreply.github.com>
2023-03-30 09:28:19 +00:00
114 changed files with 2585 additions and 1992 deletions

View File

@@ -23,7 +23,7 @@ jobs:
steps:
- name: Add reaction on start
uses: peter-evans/create-or-update-comment@v3
uses: peter-evans/create-or-update-comment@v2
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
@@ -42,7 +42,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
- name: Add reaction on failure
uses: peter-evans/create-or-update-comment@v3
uses: peter-evans/create-or-update-comment@v2
if: failure()
with:
token: ${{ secrets.COMMAND_BOT_PAT }}

View File

@@ -23,7 +23,7 @@ jobs:
- name: Modify the Dockerfile
run: |
set -x
sed -i 's|FROM php:7.4-alpine|FROM php:8.2-alpine|' "psalm-github-actions/Dockerfile"
sed -i 's|FROM php:7.4-alpine|FROM php:8.1-alpine|' "psalm-github-actions/Dockerfile"
cat << APCU >> "psalm-github-actions/Dockerfile"
RUN mkdir -p /usr/src/php/ext/apcu && \
curl -fsSL https://pecl.php.net/get/apcu | tar xvz -C "/usr/src/php/ext/apcu" --strip 1 && \

View File

@@ -13,24 +13,23 @@ jobs:
- uses: actions/checkout@v3
- uses: shivammathur/setup-php@v2
with:
php-version: 8.2
php-version: 8.1
extensions: apcu
- name: Run dependency update script
run: |
set -x
cd ./php
composer update --with-all-dependencies
# Disable dependency updates for now
# set +e
# ALL_LINES="$(composer outdated | grep -v "^$\|Direct dependencies\|Everything up to date\|Transitive dependencies")"
# set -e
# while [ -n "$ALL_LINES" ]; do
# CURRENT_LINE="$(echo "$ALL_LINES" | head -1)"
# composer require "$(echo "$CURRENT_LINE" | awk '{print $1}')" "^$(echo "$CURRENT_LINE" | awk '{print $4}')" --with-all-dependencies
# ALL_LINES="$(echo "$ALL_LINES" | sed '1d')"
# done
# echo "outdated dependencies:
# $(composer outdated)"
composer update
set +e
ALL_LINES="$(composer outdated | grep -v "^$\|Direct dependencies\|Everything up to date\|Transitive dependencies")"
set -e
while [ -n "$ALL_LINES" ]; do
CURRENT_LINE="$(echo "$ALL_LINES" | head -1)"
composer require "$(echo "$CURRENT_LINE" | awk '{print $1}')" "^$(echo "$CURRENT_LINE" | awk '{print $4}')" --with-all-dependencies
ALL_LINES="$(echo "$ALL_LINES" | sed '1d')"
done
echo "outdated dependencies:
$(composer outdated)"
- name: Update apcu
run: |
# APCU
@@ -44,12 +43,12 @@ 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@v5
uses: peter-evans/create-pull-request@v4
with:
commit-message: dependency updates
signoff: true
title: Dependency updates
body: Automated dependency updates since dependabot does not support grouped updates
labels: dependencies, 3. to review
labels: dependencies, enhancement
milestone: next
branch: aio-dependency-update

View File

@@ -6,7 +6,7 @@ on:
branches:
- main
paths:
- 'nextcloud-aio-helm-chart/**'
- 'helm-chart/**'
jobs:
release:
@@ -40,8 +40,9 @@ jobs:
# TODO: switch back @main to a specific version like @v1.5.1 or higher
uses: helm/chart-releaser-action@main
with:
charts_repo_url: https://nextcloud.github.io/all-in-one
charts_dir: helm-chart
mark_as_latest: false
charts_dir: .
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
CR_RELEASE_NAME_TEMPLATE: "helm-chart-{{ .Version }}"

View File

@@ -1,33 +0,0 @@
name: imaginary-update
on:
workflow_dispatch:
schedule:
- cron: '00 12 * * *'
jobs:
run_update:
name: update to latest imaginary commit on master branch
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run imaginary-update
run: |
# Imaginary
imaginary_version="$(
git ls-remote https://github.com/h2non/imaginary master \
| cut -f1 \
| tail -1
)"
sed -i "s|go install github.com/h2non/imaginary.*;|go install github.com/h2non/imaginary@$imaginary_version;|" ./Containers/imaginary/Dockerfile
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
commit-message: imaginary-update automated change
signoff: true
title: Imaginary update
body: Automated Imaginary container update
labels: dependencies, 3. to review
milestone: next
branch: imaginary-container-update

View File

@@ -15,6 +15,6 @@ jobs:
uses: actions/checkout@v3
- name: Validate Json
run: |
sudo apt-get install python3-pip --no-install-recommends
sudo apt install python3-pip --no-install-recommends
sudo pip3 install json-spec
json validate --schema-file=php/containers-schema.json --document-file=php/containers.json

View File

@@ -3,7 +3,7 @@
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: PHP Lint
name: Lint
on:
pull_request:
@@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ["8.2"]
php-versions: ["8.1"]
name: php-lint

View File

@@ -66,12 +66,12 @@ jobs:
sed -i "s|^ENV NEXTCLOUD_VERSION.*|ENV NEXTCLOUD_VERSION $NCVERSION|" ./Containers/nextcloud/Dockerfile
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
uses: peter-evans/create-pull-request@v4
with:
commit-message: nextcloud-update automated change
signoff: true
title: Nextcloud update
body: Automated Nextcloud container update
labels: dependencies, 3. to review
labels: dependencies, enhancement
milestone: next
branch: nextcloud-container-update

View File

@@ -13,10 +13,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up php8.2
- name: Set up php8.1
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
php-version: 8.1
extensions: apcu
coverage: none

View File

@@ -12,10 +12,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up php8.2
- name: Set up php8.1
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
php-version: 8.1
extensions: apcu
coverage: none

View File

@@ -12,10 +12,10 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Set up php8.2
- name: Set up php8.1
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
php-version: 8.1
extensions: apcu
coverage: none
@@ -31,7 +31,7 @@ jobs:
continue-on-error: true
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
uses: peter-evans/create-pull-request@v4
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: Update psalm baseline
@@ -42,8 +42,7 @@ jobs:
# Make sure we can open multiple PRs
branch-suffix: timestamp
title: '[Automated] Update psalm-baseline.xml'
milestone: next
body: |
Auto-generated update psalm-baseline.xml with fixed psalm warnings
labels: |
3. to review, dependencies
3. to review

View File

@@ -1,55 +0,0 @@
name: Twig Lint
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
concurrency:
group: lint-twig-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
twig-lint:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ["8.2"]
name: twig-lint
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
- name: twig lint
run: |
cd php
composer require sserbin/twig-linter:@dev --no-progress --dev
composer install
chmod +x ./vendor/bin/twig-linter
./vendor/bin/twig-linter lint ./templates
summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: twig-lint
if: always()
name: twig-lint-summary
steps:
- name: Summary status
run: if ${{ needs.twig-lint.result != 'success' && needs.twig-lint.result != 'skipped' }}; then exit 1; fi

View File

@@ -17,17 +17,17 @@ jobs:
DOCKER_TAG="$(curl -L -s 'https://registry.hub.docker.com/v2/repositories/nextcloud/all-in-one/tags?page_size=1024' | jq '."results"[]["name"]' | sed 's|"||g' | grep '^20' | sort -r | head -1)"
DOCKER_TAG="${DOCKER_TAG%%-latest*}"
export DOCKER_TAG
if [ -n "$DOCKER_TAG" ] && ! grep -q "$DOCKER_TAG" ./nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml; then
sudo bash nextcloud-aio-helm-chart/update-helm.sh "$DOCKER_TAG"
if [ -n "$DOCKER_TAG" ] && ! grep -q "$DOCKER_TAG" ./helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml; then
sudo bash helm-chart/update-helm.sh "$DOCKER_TAG"
fi
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
uses: peter-evans/create-pull-request@v4
with:
commit-message: Helm Chart updates
signoff: true
title: Helm Chart updates
body: Automated Helm Chart updates for the yaml files. It can be merged if it looks good at any time which will automatically trigger a new release of the helm chart.
labels: dependencies, 3. to review
labels: dependencies
milestone: next
branch: aio-helm-update
token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -16,13 +16,13 @@ jobs:
run: |
sudo bash manual-install/update-yaml.sh
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
uses: peter-evans/create-pull-request@v4
with:
commit-message: Yaml updates
signoff: true
title: Yaml updates
body: Automated yaml updates for the docker-compose files. Should only be merged shortly before the next latest release.
labels: dependencies, 3. to review
labels: dependencies
milestone: next
branch: aio-yaml-update
token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -5,10 +5,6 @@
root /mnt/data/caddy
}
servers {
# trusted_proxies placeholder
}
log {
level ERROR
}
@@ -16,21 +12,37 @@
{$PROTOCOL}://{$NC_DOMAIN}:{$APACHE_PORT} {
# Collabora
route /browser/* {
reverse_proxy {$COLLABORA_HOST}:9980
}
route /hosting/* {
reverse_proxy {$COLLABORA_HOST}:9980
}
route /cool/* {
reverse_proxy {$COLLABORA_HOST}:9980
}
# Notify Push
route /push/* {
uri strip_prefix /push
reverse_proxy {$NEXTCLOUD_HOST}:7867
reverse_proxy {$NEXTCLOUD_HOST}:7867 {
# trusted_proxies placeholder
}
}
# Talk
route /standalone-signaling/* {
uri strip_prefix /standalone-signaling
reverse_proxy {$TALK_HOST}:8081 {
# trusted_proxies placeholder
}
}
# Collabora
route /browser/* {
reverse_proxy {$COLLABORA_HOST}:9980 {
# trusted_proxies placeholder
}
}
route /hosting/* {
reverse_proxy {$COLLABORA_HOST}:9980 {
# trusted_proxies placeholder
}
}
route /cool/* {
reverse_proxy {$COLLABORA_HOST}:9980 {
# trusted_proxies placeholder
}
}
# Onlyoffice
@@ -39,24 +51,19 @@
reverse_proxy {$ONLYOFFICE_HOST}:80 {
header_up X-Forwarded-Host {http.request.host}/onlyoffice
header_up X-Forwarded-Proto https
# trusted_proxies placeholder
}
}
# Talk
route /standalone-signaling/* {
uri strip_prefix /standalone-signaling
reverse_proxy {$TALK_HOST}:8081
}
# Others
import /mnt/data/caddy-imports/*
# Nextcloud
route {
rewrite /.well-known/carddav /remote.php/dav
rewrite /.well-known/caldav /remote.php/dav
header Strict-Transport-Security max-age=31536000;
reverse_proxy localhost:8000
reverse_proxy localhost:8000 {
# See https://github.com/nextcloud/all-in-one/issues/828
# trusted_proxies placeholder
}
}
# TLS options

View File

@@ -1,17 +1,7 @@
# Caddy is a requirement
FROM caddy:2.6.4-alpine as caddy
FROM httpd:2.4.57-alpine3.17
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
COPY --chown=33:33 Caddyfile /Caddyfile
COPY --chmod=664 nextcloud.conf /usr/local/apache2/conf/nextcloud.conf
COPY --chmod=664 supervisord.conf /supervisord.conf
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
VOLUME /mnt/data
FROM httpd:2.4.56-alpine3.17
RUN set -ex; \
apk add --no-cache shadow; \
@@ -19,56 +9,77 @@ RUN set -ex; \
usermod -u 333 -g 333 xfs; \
groupmod -g 33 www-data; \
usermod -u 33 -g 33 www-data; \
apk del --no-cache shadow; \
\
mkdir -p /mnt/data; \
chown -R www-data:www-data /mnt/data; \
\
apk del --no-cache shadow
RUN mkdir -p /mnt/data; \
chown www-data:www-data /mnt/data;
VOLUME /mnt/data
RUN set -ex; \
apk add --no-cache \
bash \
supervisor \
wget \
tzdata \
ca-certificates \
openssl \
netcat-openbsd; \
\
sed -i \
-e '/^Listen /d' \
-e 's/^#\(LoadModule .*mod_rewrite.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_headers.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy_fcgi.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_setenvif.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_env.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_mime.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_dir.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_authz_core.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_alias.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_mpm_event.so\)/\1/' \
-e 's/\(LoadModule .*mod_mpm_worker.so\)/#\1/' \
-e 's/\(LoadModule .*mod_mpm_prefork.so\)/#\1/' \
/usr/local/apache2/conf/httpd.conf; \
echo "Include conf/nextcloud.conf" | tee -a /usr/local/apache2/conf/httpd.conf; \
echo "ServerName localhost" | tee -a /usr/local/apache2/conf/httpd.conf; \
\
rm -rf /usr/local/apache2/conf/original /var/www; \
mkdir -p /var/www; \
chown -R www-data:www-data /var/www; \
\
mkdir /var/log/supervisord; \
netcat-openbsd
COPY --from=caddy /usr/bin/caddy /usr/bin/
RUN chmod +x /usr/bin/caddy
RUN sed -i \
-e '/^Listen /d' \
-e 's/^#\(LoadModule .*mod_rewrite.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_headers.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy_fcgi.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_setenvif.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_env.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_mime.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_dir.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_authz_core.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_alias.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_mpm_event.so\)/\1/' \
-e 's/\(LoadModule .*mod_mpm_worker.so\)/#\1/' \
-e 's/\(LoadModule .*mod_mpm_prefork.so\)/#\1/' \
conf/httpd.conf; \
echo "Include conf/nextcloud.conf" | tee -a conf/httpd.conf; \
echo "ServerName localhost" | tee -a conf/httpd.conf
COPY nextcloud.conf conf
RUN set -ex; \
rm -rf conf/original conf/original && \
rm -rf /var/www/html/* && \
mkdir /var/www && \
chown -R www-data:www-data /var/www;
RUN mkdir /var/log/supervisord; \
mkdir /var/run/supervisord; \
chown www-data:www-data /var/run/supervisord; \
chown www-data:www-data /var/log/supervisord; \
\
chown www-data:www-data /var/log/supervisord;
COPY Caddyfile /
COPY start.sh /usr/bin/
COPY healthcheck.sh /usr/bin/
COPY supervisord.conf /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /usr/bin/healthcheck.sh; \
chmod +r /supervisord.conf; \
chown www-data:www-data /Caddyfile; \
chown -R www-data:www-data /usr/local/apache2; \
chmod +r -R /usr/local/apache2; \
\
echo "root:$(openssl rand -base64 12)" | chpasswd
chmod +r -R /usr/local/apache2
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER www-data
ENTRYPOINT ["/start.sh"]
ENTRYPOINT ["start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD /healthcheck.sh
HEALTHCHECK CMD healthcheck.sh
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -2,5 +2,8 @@
nc -z "$NEXTCLOUD_HOST" 9000 || exit 0
nc -z localhost 8000 || exit 1
nc -z localhost "$APACHE_PORT" || exit 1
nc -z "$NC_DOMAIN" 443 || exit 1
if [ "$APACHE_PORT" != '443' ]; then
nc -z localhost "$APACHE_PORT" || exit 1
else
nc -z "$NC_DOMAIN" "$APACHE_PORT" || exit 1
fi

View File

@@ -39,9 +39,9 @@ echo "$CADDYFILE" > /Caddyfile
# Change the trusted_proxies in case of reverse proxies
if [ "$APACHE_PORT" != '443' ]; then
CADDYFILE="$(sed 's|# trusted_proxies placeholder|trusted_proxies static private_ranges|' /Caddyfile)"
CADDYFILE="$(sed 's|# trusted_proxies placeholder|trusted_proxies private_ranges|' /Caddyfile)"
else
CADDYFILE="$(sed 's|trusted_proxies.*private_ranges|# trusted_proxies placeholder|' /Caddyfile)"
CADDYFILE="$(sed 's|trusted_proxies private_ranges|# trusted_proxies placeholder|' /Caddyfile)"
fi
echo "$CADDYFILE" > /Caddyfile
@@ -51,15 +51,6 @@ caddy fmt --overwrite /Caddyfile
# Add caddy path
mkdir -p /mnt/data/caddy/
# Add caddy import path
mkdir -p /mnt/data/caddy-imports
# Remove falsely added Nextcloud conf
rm -f /mnt/data/caddy-imports/nextcloud
# Makre sure that the caddy-imports dir is not empty
echo "# empty file so that caddy does not print a warning" > /mnt/data/caddy-imports/empty
# Fix apache startup
rm -f /usr/local/apache2/logs/httpd.pid

View File

@@ -1,4 +1,4 @@
FROM alpine:3.17.3
FROM alpine:3.17.2
RUN set -ex; \
\
@@ -13,8 +13,11 @@ RUN set -ex; \
VOLUME /root
COPY --chmod=770 *.sh /
ENTRYPOINT ["/start.sh"]
COPY start.sh /usr/bin/
COPY backupscript.sh /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /backupscript.sh
USER root
ENTRYPOINT ["start.sh"]
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -24,14 +24,6 @@ for directory in "${VOLUME_DIRS[@]}"; do
exit 1
fi
done
# Test if default volumes are there
DEFAULT_VOLUMES=(nextcloud_aio_apache nextcloud_aio_nextcloud nextcloud_aio_database nextcloud_aio_database_dump nextcloud_aio_elasticsearch nextcloud_aio_nextcloud_data nextcloud_aio_mastercontainer)
for volume in "${DEFAULT_VOLUMES[@]}"; do
if ! mountpoint -q "/nextcloud_aio_volumes/$volume"; then
echo "$volume is missing which is not intended."
exit 1
fi
done
# Check if target is mountpoint
if ! mountpoint -q /mnt/borgbackup; then
@@ -94,9 +86,8 @@ if [ "$BORG_MODE" = backup ]; then
if ! [ -f "$BORG_BACKUP_DIRECTORY/config" ]; then
# Don't initialize if already initialized
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config" ]; then
echo "No borg config file was found in the targeted directory."
echo "This might happen if the targeted directory is located on an external drive and the drive not connected anymore. You should check this."
echo "If you instead want to initialize a new backup repository, you may delete the 'borg.config' file that is stored in the mastercontainer volume manually, which will allow you to initialize a new borg repository in the chosen directory:"
echo "Cannot initialize a new repository as that was already done at least one time."
echo "If you still want to do so, you may delete the 'borg.config' file that is stored in the mastercontainer volume manually, which will allow you to initialize a new borg repository in the chosen directory:"
echo "sudo docker exec nextcloud-aio-mastercontainer rm /mnt/docker-aio-config/data/borg.config"
exit 1
fi
@@ -136,18 +127,11 @@ if [ "$BORG_MODE" = backup ]; then
# Borg options
# auto,zstd compression seems to has the best ratio based on:
# https://forum.level1techs.com/t/optimal-compression-for-borg-backups/145870/6
BORG_OPTS=(-v --stats --compression "auto,zstd" --exclude-caches)
BORG_OPTS=(-v --stats --compression "auto,zstd" --exclude-caches --checkpoint-interval 86400)
# Exclude the nextcloud log and audit log for GDPR reasons
BORG_EXCLUDE=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/nextcloud.log*" --exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/audit.log")
# Make sure that there is always a borg.config file before creating a new backup
if ! [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config" ]; then
echo "Did not find borg.config file in the mastercontainer volume."
echo "Cannot create a backup as this is wrong."
exit 1
fi
# Create the backup
echo "Starting the backup..."
get_start_time
@@ -155,7 +139,6 @@ if [ "$BORG_MODE" = backup ]; then
echo "Deleting the failed backup archive..."
borg delete --stats "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio"
echo "Backup failed!"
echo "You might want to check the backup integrity via the AIO interface."
if [ "$NEW_REPOSITORY" = 1 ]; then
echo "Deleting borg.config file so that you can choose a different location for the backup."
rm "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config"
@@ -379,7 +362,6 @@ if [ "$BORG_MODE" = check ]; then
# Perform the check
if ! borg check -v --verify-data "$BORG_BACKUP_DIRECTORY"; then
echo "Some errors were found while checking the backup integrity!"
echo "Check the AIO interface for advices on how to proceed now!"
exit 1
fi

View File

@@ -1,10 +1,7 @@
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/1.1/alpine/Dockerfile
FROM clamav/clamav:1.1.0-1
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/0.105/alpine/Dockerfile
FROM clamav/clamav:1.0.1-1
COPY clamav.conf /tmp/clamav.conf
RUN set -ex; \
apk add --no-cache tzdata; \
cat /tmp/clamav.conf | tee -a /etc/clamav/clamd.conf; \
rm /tmp/clamav.conf
RUN apk add --no-cache tzdata
COPY clamav.conf /tmp/
RUN cat /tmp/clamav.conf >> /etc/clamav/clamd.conf
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,5 +1,5 @@
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
FROM collabora/code:22.05.14.3.1
FROM collabora/code:22.05.12.2.1
USER root

View File

@@ -1,16 +1,18 @@
FROM alpine:3.17.3
RUN set -ex; \
apk add --no-cache bash lighttpd netcat-openbsd; \
adduser -S www-data -G www-data; \
rm -rf /etc/lighttpd/lighttpd.conf; \
chmod +r -R /etc/lighttpd; \
mkdir -p /var/www/domaincheck; \
chown www-data:www-data -R /var/www
COPY --chown=www-data:www-data lighttpd.conf /etc/lighttpd/lighttpd.conf
FROM alpine:3.17.2
RUN apk add --no-cache lighttpd bash netcat-openbsd
COPY --chmod=775 start.sh /start.sh
RUN adduser -S www-data -G www-data
RUN rm -rf /etc/lighttpd/lighttpd.conf
COPY lighttpd.conf /etc/lighttpd/lighttpd.conf
RUN chmod +r -R /etc/lighttpd && \
chown www-data:www-data -R /var/www && \
chown www-data:www-data /etc/lighttpd/lighttpd.conf
COPY start.sh /
RUN chmod +x /start.sh
USER www-data
RUN mkdir -p /var/www/domaincheck/
ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD nc -z localhost $APACHE_PORT || exit 1

View File

@@ -1,15 +1,15 @@
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
FROM elasticsearch:7.17.10
FROM elasticsearch:7.17.9
RUN elasticsearch-plugin install --batch ingest-attachment
RUN set -ex; \
\
export DEBIAN_FRONTEND=noninteractive; \
apt-get update; \
apt-get install -y --no-install-recommends \
tzdata \
; \
rm -rf /var/lib/apt/lists/*; \
elasticsearch-plugin install --batch ingest-attachment
rm -rf /var/lib/apt/lists/*
HEALTHCHECK CMD nc -z localhost 9200 || exit 1
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,35 +1,29 @@
FROM golang:1.20.4-alpine3.17 as go
# From https://github.com/h2non/imaginary/blob/master/Dockerfile
FROM nextcloud/imaginary:20230301
USER root
RUN set -ex; \
apk add --no-cache \
vips-dev \
vips-magick \
vips-heif \
vips-jxl \
vips-poppler \
build-base; \
go install github.com/h2non/imaginary@b632dae8cc321452c3f85bcae79c580b1ae1ed84;
FROM alpine:3.17.3
RUN set -ex; \
apk add --no-cache \
tzdata \
ca-certificates \
netcat-openbsd \
vips \
vips-magick \
vips-heif \
vips-jxl \
vips-poppler
COPY --from=go /go/bin/imaginary /usr/local/bin/imaginary
ENV PORT 9000
\
apt-get update; \
apt-get install -y --no-install-recommends \
netcat \
; \
echo "deb http://deb.debian.org/debian bookworm main" > /etc/apt/sources.list.d/bookworm.list; \
apt-get update; \
apt-get install -t bookworm -y --no-install-recommends \
libheif1 \
libde265-0 \
libx265-199 \
libvips \
; \
rm /etc/apt/sources.list.d/bookworm.list; \
rm -rf /var/lib/apt/lists/*
USER nobody
ENTRYPOINT ["/usr/local/bin/imaginary", "-return-size", "-max-allowed-resolution", "222.2"]
HEALTHCHECK CMD nc -z localhost 9000 || exit 1
LABEL com.centurylinklabs.watchtower.monitor-only="true"
# https://github.com/h2non/imaginary#memory-issues
ENV MALLOC_ARENA_MAX=2
ENTRYPOINT ["imaginary", "-return-size", "-max-allowed-resolution", "222.2"]
HEALTHCHECK CMD nc -z localhost "$PORT" || exit 1
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,28 +1,28 @@
# Docker CLI is a requirement
FROM docker:23.0.6-cli as docker
FROM docker:23.0.1-dind as dind
# Caddy is a requirement
FROM caddy:2.6.4-alpine as caddy
# From https://github.com/docker-library/php/blob/master/8.2/alpine3.17/fpm/Dockerfile
FROM php:8.2.6-fpm-alpine3.17
EXPOSE 80
EXPOSE 8080
EXPOSE 8443
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
COPY --from=docker /usr/local/bin/docker /usr/local/bin/docker
WORKDIR /var/www/docker-aio
# From https://github.com/docker-library/php/blob/master/8.1/alpine3.17/fpm/Dockerfile
FROM php:8.1.17-fpm-alpine3.17
RUN set -ex; \
apk add --no-cache shadow; \
groupmod -g 333 xfs; \
usermod -u 333 -g 333 xfs; \
groupmod -g 33 www-data; \
usermod -u 33 -g 33 www-data; \
\
usermod -u 33 -g 33 www-data
EXPOSE 80
EXPOSE 8080
EXPOSE 8443
RUN mkdir -p /var/www/docker-aio;
WORKDIR /var/www/docker-aio
RUN set -ex; \
apk add --no-cache \
util-linux-misc \
ca-certificates \
@@ -36,14 +36,16 @@ RUN set -ex; \
sudo \
netcat-openbsd \
curl \
grep; \
\
grep
RUN set -ex; \
apk add --no-cache --virtual .build-deps \
autoconf \
build-base; \
pecl install APCu-5.1.22; \
docker-php-ext-enable apcu; \
rm -r /tmp/pear; \
\
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
| tr ',' '\n' \
@@ -55,30 +57,38 @@ RUN set -ex; \
grep -q '^pm = dynamic' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm = dynamic/pm = ondemand/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.max_children =.*/pm.max_children = 80/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf; \
\
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf
COPY --from=caddy /usr/bin/caddy /usr/bin/
RUN chmod +x /usr/bin/caddy
COPY --from=dind /usr/local/bin/docker /usr/local/bin/
RUN chmod +x /usr/local/bin/docker
RUN set -e && \
apk add --no-cache git; \
wget https://getcomposer.org/installer -O - | php -- --install-dir=/usr/local/bin --filename=composer; \
chmod +x /usr/local/bin/composer; \
cd /var/www/docker-aio; \
git clone https://github.com/nextcloud-releases/all-in-one.git --depth 1 .; \
find ./ -not -path ./php -maxdepth 1 -mindepth 1 -delete; \
chown www-data:www-data -R /var/www/docker-aio; \
cd php; \
sudo -u www-data composer install --no-dev; \
sudo -u www-data composer clear-cache; \
composer install --no-dev; \
composer clearcache; \
cd ..; \
rm -f /usr/local/bin/composer; \
chmod -R 770 /var/www/docker-aio; \
chown -R www-data:www-data /var/www; \
rm -r php/data; \
rm -r php/session; \
\
mkdir -p /etc/apache2/certs; \
cd /etc/apache2/certs; \
openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "/C=DE/ST=BE/L=Local/O=Dev/CN=nextcloud.local" -keyout /etc/apache2/certs/ssl.key -out /etc/apache2/certs/ssl.crt; \
\
sed -i \
chmod 770 -R ./; \
chown www-data:www-data -R /var/www; \
rm -r ./php/data; \
rm -r ./php/session; \
apk del --no-cache git
RUN mkdir -p /etc/apache2/certs && \
cd /etc/apache2/certs && \
openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "/C=DE/ST=BE/L=Local/O=Dev/CN=nextcloud.local" -keyout ./ssl.key -out ./ssl.crt;
COPY mastercontainer.conf /etc/apache2/sites-available/
RUN sed -i \
-e '/^Listen /d' \
-e 's/User apache/User www-data/g' \
-e 's/Group apache/Group www-data/g' \
@@ -97,23 +107,35 @@ RUN set -ex; \
echo "ServerName localhost" | tee -a /etc/apache2/httpd.conf; \
echo "LoadModule ssl_module modules/mod_ssl.so" | tee -a /etc/apache2/httpd.conf; \
echo "LoadModule socache_shmcb_module modules/mod_socache_shmcb.so" | tee -a /etc/apache2/httpd.conf; \
echo "Include /etc/apache2/sites-available/mastercontainer.conf" | tee -a /etc/apache2/httpd.conf; \
\
echo "Include /etc/apache2/sites-available/mastercontainer.conf" | tee -a /etc/apache2/httpd.conf
RUN set -ex; \
rm -f /etc/apache2/conf.d/default.conf \
/etc/apache2/conf.d/userdir.conf \
/etc/apache2/conf.d/info.conf; \
\
mkdir /var/log/supervisord; \
/etc/apache2/conf.d/info.conf
RUN mkdir /var/log/supervisord; \
mkdir /var/run/supervisord;
COPY --chmod=775 *.sh /
COPY --chmod=664 Caddyfile /Caddyfile
COPY --chmod=664 supervisord.conf /supervisord.conf
COPY mastercontainer.conf /etc/apache2/sites-available/mastercontainer.conf
COPY Caddyfile /
COPY start.sh /usr/bin/
COPY backup-time-file-watcher.sh /
COPY session-deduplicator.sh /
COPY cron.sh /
COPY daily-backup.sh /
COPY supervisord.conf /
COPY healthcheck.sh /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /cron.sh; \
chmod +x /session-deduplicator.sh; \
chmod +x /backup-time-file-watcher.sh; \
chmod +x /daily-backup.sh; \
chmod a+r /Caddyfile; \
chmod +x /healthcheck.sh
USER root
ENTRYPOINT ["/start.sh"]
ENTRYPOINT ["start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD /healthcheck.sh

View File

@@ -6,12 +6,6 @@ print_green() {
printf "%b%s%b\n" "\e[0;92m" "$TEXT" "\e[0m"
}
# Function to show text in red
print_red() {
local TEXT="$1"
printf "%b%s%b\n" "\e[0;31m" "$TEXT" "\e[0m"
}
# Function to check if number was provided
check_if_number() {
case "${1}" in
@@ -20,19 +14,12 @@ case "${1}" in
esac
}
# Check if running as root user
if [ "$EUID" != "0" ]; then
print_red "Container does not run as root user. This is not supported."
exit 1
fi
# Check if socket is available and readable
if ! [ -a "/var/run/docker.sock" ]; then
print_red "Docker socket is not available. Cannot continue."
echo "If you did this by purpose because you don't want the container to have access to the docker socket, see https://github.com/nextcloud/all-in-one/tree/main/manual-install."
echo "Docker socket is not available. Cannot continue."
exit 1
elif ! mountpoint -q "/mnt/docker-aio-config"; then
print_red "/mnt/docker-aio-config is not a mountpoint. Cannot proceed!"
echo "/mnt/docker-aio-config is not a mountpoint. Cannot proceed!"
exit 1
elif ! sudo -u www-data test -r /var/run/docker.sock; then
echo "Trying to fix docker.sock permissions internally..."
@@ -53,14 +40,14 @@ elif ! sudo -u www-data test -r /var/run/docker.sock; then
usermod -aG docker www-data
fi
if ! sudo -u www-data test -r /var/run/docker.sock; then
print_red "Docker socket is not readable by the www-data user. Cannot continue."
echo "Docker socket is not readable by the www-data user. Cannot continue."
exit 1
fi
fi
# Check if api version is supported
if ! sudo -u www-data docker info &>/dev/null; then
print_red "Cannot connect to the docker socket. Cannot proceed."
echo "Cannot connect to the docker socket. Cannot proceed."
exit 1
fi
API_VERSION_FILE="$(find ./ -name DockerActionManager.php | head -1)"
@@ -70,7 +57,7 @@ API_VERSION_NUMB="$(echo "$API_VERSION" | sed 's/\.//')"
LOCAL_API_VERSION_NUMB="$(sudo -u www-data docker version | grep -i "api version" | grep -oP '[0-9]+.[0-9]+' | head -1 | sed 's/\.//')"
if [ -n "$LOCAL_API_VERSION_NUMB" ] && [ -n "$API_VERSION_NUMB" ]; then
if ! [ "$LOCAL_API_VERSION_NUMB" -ge "$API_VERSION_NUMB" ]; then
print_red "Docker API v$API_VERSION is not supported by your docker engine. Cannot proceed. Please upgrade your docker engine if you want to run Nextcloud AIO!"
echo "Docker API v$API_VERSION is not supported by your docker engine. Cannot proceed. Please upgrade your docker engine if you want to run Nextcloud AIO!"
exit 1
fi
else
@@ -91,16 +78,16 @@ fi
# Check if startup command was executed correctly
if ! sudo -u www-data docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-mastercontainer$"; then
print_red "It seems like you did not give the mastercontainer the correct name? (The 'nextcloud-aio-mastercontainer' container was not found.)
echo "It seems like you did not give the mastercontainer the correct name? (The 'nextcloud-aio-mastercontainer' container was not found.)
Using a different name is not supported since mastercontainer updates will not work in that case!
If you are on docker swarm and try to run AIO, see https://github.com/nextcloud/all-in-one#can-i-run-this-with-docker-swarm"
exit 1
elif ! sudo -u www-data docker volume ls --format "{{.Name}}" | grep -q "^nextcloud_aio_mastercontainer$"; then
print_red "It seems like you did not give the mastercontainer volume the correct name? (The 'nextcloud_aio_mastercontainer' volume was not found.)
echo "It seems like you did not give the mastercontainer volume the correct name? (The 'nextcloud_aio_mastercontainer' volume was not found.)
Using a different name is not supported since the built-in backup solution will not work in that case!"
exit 1
elif ! sudo -u www-data docker inspect nextcloud-aio-mastercontainer | grep -q "nextcloud_aio_mastercontainer"; then
print_red "It seems like you did not attach the 'nextcloud_aio_mastercontainer' volume to the mastercontainer?
echo "It seems like you did not attach the 'nextcloud_aio_mastercontainer' volume to the mastercontainer?
This is not supported since the built-in backup solution will not work in that case!"
exit 1
fi
@@ -108,34 +95,34 @@ fi
# Check for other options
if [ -n "$NEXTCLOUD_DATADIR" ]; then
if [ "$NEXTCLOUD_DATADIR" = "nextcloud_aio_nextcloud_datadir" ]; then
sleep 1
echo "NEXTCLOUD_DATADIR is set to $NEXTCLOUD_DATADIR"
elif ! echo "$NEXTCLOUD_DATADIR" | grep -q "^/" || [ "$NEXTCLOUD_DATADIR" = "/" ]; then
print_red "You've set NEXTCLOUD_DATADIR but not to an allowed value.
The string must start with '/' and must not be equal to '/'. Also allowed is 'nextcloud_aio_nextcloud_datadir'.
echo "You've set NEXTCLOUD_DATADIR but not to an allowed value.
The string must start with '/' and must not be equal to '/'.
It is set to '$NEXTCLOUD_DATADIR'."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_MOUNT" ]; then
if ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/" || [ "$NEXTCLOUD_MOUNT" = "/" ]; then
print_red "You've set NEXCLOUD_MOUNT but not to an allowed value.
echo "You've set NEXCLOUD_MOUNT but not to an allowed value.
The string must start with '/' and must not be equal to '/'.
It is set to '$NEXTCLOUD_MOUNT'."
exit 1
elif [ "$NEXTCLOUD_MOUNT" = "/mnt/ncdata" ] || echo "$NEXTCLOUD_MOUNT" | grep -q "^/mnt/ncdata/"; then
print_red "'/mnt/ncdata' and '/mnt/ncdata/' are not allowed as values for NEXTCLOUD_MOUNT."
echo "'/mnt/ncdata' and '/mnt/ncdata/' are not allowed as values for NEXTCLOUD_MOUNT."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_DATADIR" ] && [ -n "$NEXTCLOUD_MOUNT" ]; then
if [ "$NEXTCLOUD_DATADIR" = "$NEXTCLOUD_MOUNT" ]; then
print_red "NEXTCLOUD_DATADIR and NEXTCLOUD_MOUNT are not allowed to be equal."
echo "NEXTCLOUD_DATADIR and NEXTCLOUD_MOUNT are not allowed to be equal."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_UPLOAD_LIMIT" ]; then
if ! echo "$NEXTCLOUD_UPLOAD_LIMIT" | grep -q '^[0-9]\+G$'; then
print_red "You've set NEXTCLOUD_UPLOAD_LIMIT but not to an allowed value.
echo "You've set NEXTCLOUD_UPLOAD_LIMIT but not to an allowed value.
The string must start with a number and end with 'G'.
It is set to '$NEXTCLOUD_UPLOAD_LIMIT'."
exit 1
@@ -143,7 +130,7 @@ It is set to '$NEXTCLOUD_UPLOAD_LIMIT'."
fi
if [ -n "$NEXTCLOUD_MAX_TIME" ]; then
if ! echo "$NEXTCLOUD_MAX_TIME" | grep -q '^[0-9]\+$'; then
print_red "You've set NEXTCLOUD_MAX_TIME but not to an allowed value.
echo "You've set NEXTCLOUD_MAX_TIME but not to an allowed value.
The string must be a number. E.g. '3600'.
It is set to '$NEXTCLOUD_MAX_TIME'."
exit 1
@@ -151,7 +138,7 @@ It is set to '$NEXTCLOUD_MAX_TIME'."
fi
if [ -n "$NEXTCLOUD_MEMORY_LIMIT" ]; then
if ! echo "$NEXTCLOUD_MEMORY_LIMIT" | grep -q '^[0-9]\+M$'; then
print_red "You've set NEXTCLOUD_MEMORY_LIMIT but not to an allowed value.
echo "You've set NEXTCLOUD_MEMORY_LIMIT but not to an allowed value.
The string must start with a number and end with 'M'.
It is set to '$NEXTCLOUD_MEMORY_LIMIT'."
exit 1
@@ -159,64 +146,64 @@ It is set to '$NEXTCLOUD_MEMORY_LIMIT'."
fi
if [ -n "$APACHE_PORT" ]; then
if ! check_if_number "$APACHE_PORT"; then
print_red "You provided an Apache port but did not only use numbers.
echo "You provided an Apache port but did not only use numbers.
It is set to '$APACHE_PORT'."
exit 1
elif ! [ "$APACHE_PORT" -le 65535 ] || ! [ "$APACHE_PORT" -ge 1 ]; then
print_red "The provided Apache port is invalid. It must be between 1 and 65535"
echo "The provided Apache port is invalid. It must be between 1 and 65535"
exit 1
fi
fi
if [ -n "$APACHE_IP_BINDING" ]; then
if ! echo "$APACHE_IP_BINDING" | grep -q '^[0-9.]\+$'; then
print_red "You provided an ip-address for the apache container's ip-binding but it was not a valid ip-address.
echo "You provided an ip-address for the apache container's ip-binding but it was not a valid ip-address.
It is set to '$APACHE_IP_BINDING'."
exit 1
fi
fi
if [ -n "$TALK_PORT" ]; then
if ! check_if_number "$TALK_PORT"; then
print_red "You provided an Talk port but did not only use numbers.
echo "You provided an Talk port but did not only use numbers.
It is set to '$TALK_PORT'."
exit 1
elif ! [ "$TALK_PORT" -le 65535 ] || ! [ "$TALK_PORT" -ge 1 ]; then
print_red "The provided Talk port is invalid. It must be between 1 and 65535"
echo "The provided Talk port is invalid. It must be between 1 and 65535"
exit 1
fi
fi
if [ -n "$APACHE_PORT" ] && [ -n "$TALK_PORT" ]; then
if [ "$APACHE_PORT" = "$TALK_PORT" ]; then
print_red "APACHE_PORT and TALK_PORT are not allowed to be equal."
echo "APACHE_PORT and TALK_PORT are not allowed to be equal."
exit 1
fi
fi
if [ -n "$WATCHTOWER_DOCKER_SOCKET_PATH" ]; then
if ! echo "$WATCHTOWER_DOCKER_SOCKET_PATH" | grep -q "^/" || echo "$WATCHTOWER_DOCKER_SOCKET_PATH" | grep -q "/$"; then
print_red "You've set WATCHTOWER_DOCKER_SOCKET_PATH but not to an allowed value.
if [ -n "$DOCKER_SOCKET_PATH" ]; then
if ! echo "$DOCKER_SOCKET_PATH" | grep -q "^/" || echo "$DOCKER_SOCKET_PATH" | grep -q "/$"; then
echo "You've set DOCKER_SOCKET_PATH but not to an allowed value.
The string must start with '/' and must not end with '/'.
It is set to '$WATCHTOWER_DOCKER_SOCKET_PATH'."
It is set to '$DOCKER_SOCKET_PATH'."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_TRUSTED_CACERTS_DIR" ]; then
if ! echo "$NEXTCLOUD_TRUSTED_CACERTS_DIR" | grep -q "^/" || echo "$NEXTCLOUD_TRUSTED_CACERTS_DIR" | grep -q "/$"; then
print_red "You've set NEXTCLOUD_TRUSTED_CACERTS_DIR but not to an allowed value.
echo "You've set NEXTCLOUD_TRUSTED_CACERTS_DIR but not to an allowed value.
It should be an absolute path to a directory that starts with '/' but not end with '/'.
It is set to '$NEXTCLOUD_TRUSTED_CACERTS_DIR '."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_STARTUP_APPS" ]; then
if ! echo "$NEXTCLOUD_STARTUP_APPS" | grep -q "^[a-z0-9 _-]\+$"; then
print_red "You've set NEXTCLOUD_STARTUP_APPS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, 0-9, spaces, hyphens and '_'.
if ! echo "$NEXTCLOUD_STARTUP_APPS" | grep -q "^[a-z _-]\+$"; then
echo "You've set NEXTCLOUD_STARTUP_APPS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, spaces, hyphens and '_'.
It is set to '$NEXTCLOUD_STARTUP_APPS'."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_ADDITIONAL_APKS" ]; then
if ! echo "$NEXTCLOUD_ADDITIONAL_APKS" | grep -q "^[a-z0-9 ._-]\+$"; then
print_red "You've set NEXTCLOUD_ADDITIONAL_APKS but not to an allowed value.
echo "You've set NEXTCLOUD_ADDITIONAL_APKS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens, dots and '_'.
It is set to '$NEXTCLOUD_ADDITIONAL_APKS'."
exit 1
@@ -224,7 +211,7 @@ It is set to '$NEXTCLOUD_ADDITIONAL_APKS'."
fi
if [ -n "$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS" ]; then
if ! echo "$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS" | grep -q "^[a-z0-9 ._-]\+$"; then
print_red "You've set NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS but not to an allowed value.
echo "You've set NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens, dots and '_'.
It is set to '$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS'."
exit 1
@@ -235,7 +222,7 @@ fi
# Prevents issues like https://github.com/nextcloud/all-in-one/discussions/565
curl https://nextcloud.com &>/dev/null
if [ "$?" = 6 ]; then
print_red "Could not resolve the host nextcloud.com."
echo "Could not resolve the host nextcloud.com."
echo "Most likely the DNS resolving does not work."
echo "You should be able to fix this by following https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html"
echo "Apart from that, there has been this: https://github.com/nextcloud/all-in-one/discussions/2065"
@@ -286,7 +273,7 @@ if [ -f ./ssl.crt ] && [ -f ./ssl.key ]; then
cp "$GENERATED_CERTS/ssl.key" ./
fi
print_green "Initial startup of Nextcloud All-in-One complete!
print_green "Initial startup of Nextcloud All In One complete!
You should be able to open the Nextcloud AIO Interface now on port 8080 of this server!
E.g. https://internal.ip.of.this.server:8080

View File

@@ -27,21 +27,32 @@ RUN set -ex; \
apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
autoconf \
libtool \
freetype-dev \
gmp-dev \
icu-dev \
imagemagick-dev \
libevent-dev \
libjpeg-turbo-dev \
libmcrypt-dev \
libmemcached-dev \
libpng-dev \
libwebp-dev \
libmemcached-dev \
libxml2-dev \
libzip-dev \
openldap-dev \
pcre-dev \
postgresql-dev \
libwebp-dev \
gmp-dev \
lcms2-dev \
fontconfig-dev \
freetype-dev \
ghostscript-dev \
tiff-dev \
zlib-dev \
imagemagick-dev \
libheif-dev \
librsvg-dev \
libxext-dev \
ghostscript-fonts \
; \
\
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp; \
@@ -50,14 +61,13 @@ RUN set -ex; \
bcmath \
exif \
gd \
gmp \
intl \
ldap \
opcache \
pcntl \
pdo_pgsql \
sysvsem \
zip \
gmp \
; \
\
# pecl will claim success even if one install fails, so we need to perform each install separately
@@ -88,8 +98,6 @@ RUN { \
echo 'opcache.interned_strings_buffer=32'; \
echo 'opcache.save_comments=1'; \
echo 'opcache.revalidate_freq=60'; \
echo 'opcache.jit=1255'; \
echo 'opcache.jit_buffer_size=128M'; \
} > /usr/local/etc/php/conf.d/opcache-recommended.ini; \
\
echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \
@@ -108,7 +116,7 @@ RUN { \
VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 25.0.7
ENV NEXTCLOUD_VERSION 25.0.5
RUN set -ex; \
apk add --no-cache --virtual .fetch-deps \
@@ -205,8 +213,12 @@ RUN set -ex; \
mawk \
sudo \
grep \
nodejs \
coreutils;
coreutils \
libjpeg \
librsvg \
libheif \
libpng \
ghostscript-fonts;
RUN set -ex; \
grep -q '^pm = dynamic' /usr/local/etc/php-fpm.d/www.conf; \
@@ -250,11 +262,6 @@ RUN set -ex; \
VOLUME /mnt/ncdata
RUN set -ex; \
mkdir -p /nc-updater; \
chown -R www-data:www-data /nc-updater; \
chmod -R 770 /nc-updater
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd

View File

@@ -216,12 +216,6 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
fi
# We do our own permission check so the permission check is not needed
cat << DATADIR_PERMISSION_CONF > /var/www/html/config/datadir.permission.config.php
<?php
\$CONFIG = array (
'check_data_directory_permissions' => false
);
DATADIR_PERMISSION_CONF
php /var/www/html/occ config:system:set check_data_directory_permissions --value=false --type=bool
# Try to force generation of appdata dir:
@@ -244,43 +238,9 @@ DATADIR_PERMISSION_CONF
fi
fi
# This autoconfig is not needed anymore and should be able to be overwritten by the user
rm /var/www/html/config/datadir.permission.config.php
# unset admin password
unset ADMIN_PASSWORD
if [ "$INSTALL_LATEST_MAJOR" = yes ]; then
php /var/www/html/occ config:system:set updater.release.channel --value=beta
php /var/www/html/occ config:system:set updatedirectory --value="/nc-updater"
php /var/www/html/updater/updater.phar --no-interaction
php /var/www/html/occ app:enable nextcloud-aio --force
if ! php /var/www/html/occ -V || php /var/www/html/occ status | grep maintenance | grep -q 'true'; then
echo "Installation of Nextcloud failed!"
touch "$NEXTCLOUD_DATA_DIR/install.failed"
exit 1
fi
# shellcheck disable=SC2016
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
INSTALLED_MAJOR="${installed_version%%.*}"
IMAGE_MAJOR="${image_version%%.*}"
if ! [ "$INSTALLED_MAJOR" -gt "$IMAGE_MAJOR" ]; then
php /var/www/html/occ config:system:set updater.release.channel --value=beta
php /var/www/html/occ config:system:set updatedirectory --value="/nc-updater"
php /var/www/html/updater/updater.phar --no-interaction
if ! php /var/www/html/occ -V || php /var/www/html/occ status | grep maintenance | grep -q 'true'; then
echo "Installation of Nextcloud failed!"
touch "$NEXTCLOUD_DATA_DIR/install.failed"
exit 1
fi
fi
php /var/www/html/occ config:system:set updater.release.channel --value=stable
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
fi
# Apply log settings
echo "Applying default settings..."
mkdir -p /var/www/html/data
@@ -305,7 +265,6 @@ DATADIR_PERMISSION_CONF
php /var/www/html/occ config:system:set enabledPreviewProviders 4 --value="OC\\Preview\\TXT"
php /var/www/html/occ config:system:set enabledPreviewProviders 5 --value="OC\\Preview\\OpenDocument"
php /var/www/html/occ config:system:set enabledPreviewProviders 6 --value="OC\\Preview\\Movie"
php /var/www/html/occ config:system:set enabledPreviewProviders 7 --value="OC\\Preview\\Krita"
php /var/www/html/occ config:system:set enable_previews --value=true --type=boolean
# Apply other settings
@@ -340,6 +299,11 @@ DATADIR_PERMISSION_CONF
done
fi
# Set the permission check to its default value again if not set
if [ "$SKIP_DATA_DIRECTORY_PERMISSION_CHECK" != yes ]; then
php /var/www/html/occ config:system:set check_data_directory_permissions --value=true --type=bool
fi
#upgrade
else
touch "$NEXTCLOUD_DATA_DIR/update.failed"
@@ -444,7 +408,6 @@ php /var/www/html/occ app:enable support
echo "Adjusting log files..."
php /var/www/html/occ config:system:set logfile --value="/var/www/html/data/nextcloud.log"
php /var/www/html/occ config:app:set admin_audit logfile --value="/var/www/html/data/audit.log"
php /var/www/html/occ config:system:set updatedirectory --value="/nc-updater"
# Apply network settings
echo "Applying network settings..."

View File

@@ -1,5 +1,5 @@
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
FROM onlyoffice/documentserver:7.3.3.50
FROM onlyoffice/documentserver:7.3.3.49
HEALTHCHECK CMD nc -z localhost 80 || exit 1
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,35 +1,39 @@
# From https://github.com/docker-library/postgres/blob/master/15/alpine/Dockerfile
FROM postgres:15.3-alpine
FROM postgres:15.2-alpine
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
COPY --chmod=775 init-user-db.sh /docker-entrypoint-initdb.d/init-user-db.sh
RUN apk add --no-cache bash openssl shadow grep mawk
RUN set -ex; \
apk add --no-cache bash openssl shadow grep mawk; \
\
# We need to use the same gid and uid as on old installations
RUN set -ex; \
deluser postgres; \
groupmod -g 9999 ping; \
addgroup -g 999 -S postgres; \
adduser -u 999 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres; \
apk del --no-cache shadow; \
\
adduser -u 999 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres
# Fix default permissions
RUN set -ex; \
chown -R postgres:postgres /var/lib/postgresql; \
chown -R postgres:postgres /var/run/postgresql; \
chown -R postgres:postgres "$PGDATA"; \
\
mkdir /mnt/data; \
chown postgres:postgres /mnt/data; \
\
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd
chown -R postgres:postgres "$PGDATA"
COPY start.sh /usr/bin/
COPY healthcheck.sh /usr/bin/
COPY init-user-db.sh /docker-entrypoint-initdb.d/
RUN set -ex; \
chmod +x /usr/bin/start.sh; \
chmod +xr /docker-entrypoint-initdb.d/init-user-db.sh; \
chmod +x /usr/bin/healthcheck.sh
RUN mkdir /mnt/data; \
chown postgres:postgres /mnt/data;
VOLUME /mnt/data
USER postgres
ENTRYPOINT ["/start.sh"]
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
HEALTHCHECK CMD /healthcheck.sh
USER postgres
ENTRYPOINT ["start.sh"]
HEALTHCHECK CMD healthcheck.sh
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,13 +1,13 @@
# From https://github.com/docker-library/redis/blob/master/7.0/alpine/Dockerfile
FROM redis:7.0.11-alpine
FROM redis:7.0.10-alpine
COPY --chmod=775 start.sh /usr/bin/start.sh
RUN apk add --no-cache openssl bash
COPY start.sh /usr/bin/
RUN chmod +x /usr/bin/start.sh
RUN set -ex; \
apk add --no-cache openssl bash; \
\
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER redis
ENTRYPOINT ["start.sh"]

View File

@@ -1,19 +1,17 @@
FROM nats:2.9.16-scratch as nats
FROM nats:2.9.15-scratch as nats
FROM strukturag/nextcloud-spreed-signaling:1.1.2 as signaling
FROM coturn/coturn:4.6.2-r0-alpine
FROM alpine:3.17.2
USER root
COPY --from=nats /nats-server /usr/local/bin/nats-server
COPY --from=signaling /usr/bin/nextcloud-spreed-signaling /usr/local/bin/nextcloud-spreed-signaling
COPY --chmod=775 start.sh /usr/bin/start.sh
COPY --chmod=664 supervisord.conf /supervisord.conf
RUN set -ex; \
apk add --no-cache \
ca-certificates \
tzdata \
bash \
coturn \
openssl \
supervisor \
bind-tools \
@@ -33,11 +31,15 @@ RUN set -ex; \
util-linux \
build-base \
lua5.3-dev \
luarocks5.3; \
\
luarocks5.3;
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd; \
\
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
COPY --chmod=775 start.sh /usr/bin/start.sh
COPY --chmod=664 supervisord.conf /supervisord.conf
RUN set -ex; \
touch \
/etc/nats.conf \
/etc/signaling.conf \
@@ -65,5 +67,5 @@ USER talk
ENTRYPOINT ["start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD (nc -z localhost 8081 && nc -z localhost 8188 && nc -z localhost 4222 && nc -z localhost "$TALK_PORT" && nc -z "$NC_DOMAIN" "$TALK_PORT") || exit 1
HEALTHCHECK CMD (nc -z localhost 8081 && nc -z localhost 8188 && nc -z localhost 4222 && nc -z localhost $TALK_PORT) || exit 1
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -20,6 +20,7 @@ set +x
cat << TURN_CONF > "/etc/turnserver.conf"
listening-port=$TALK_PORT
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=$TURN_SECRET
realm=$NC_DOMAIN

View File

@@ -1,12 +1,14 @@
# From https://github.com/containrrr/watchtower/blob/main/dockerfiles/Dockerfile.self-contained
FROM containrrr/watchtower:1.5.3 as watchtower
FROM alpine:3.17.3
FROM alpine:3.17.2
RUN apk add --no-cache bash
COPY --from=watchtower /watchtower /watchtower
COPY --from=watchtower /watchtower /
COPY --chmod=775 start.sh /start.sh
COPY start.sh /
RUN chmod +x /start.sh
USER root
ENTRYPOINT ["/start.sh"]
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -2,9 +2,9 @@
<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
<id>nextcloud-aio</id>
<name>Nextcloud All-in-One</name>
<name>Nextcloud All In One</name>
<summary>Provides a login link for admins.</summary>
<description>Add a link to the admin settings that gives access to the Nextcloud All-in-One admin interface</description>
<description>Add a link to the admin settings that gives access to the Nextcloud All In One admin interface</description>
<version>0.3.0</version>
<licence>agpl</licence>
<author>Azul</author>

View File

@@ -10,7 +10,6 @@ declare(strict_types=1);
*/
/** @var array $_ */ ?>
<div id="allinone" class="section">
<h2><?php p($l->t('Nextcloud All-in-One'));?></h2>
<a href="<?php p($_['AIOLoginUrl']);?>" class="button" target="_blank" rel="noopener">Open Nextcloud AIO Interface ↗</a><br><br>
<p><a href="https://github.com/nextcloud/all-in-one#how-to-easily-log-in-to-the-aio-interface">Click here for more infos on this feature (e.g. also on how to change the link in the button)</a></p>
<h2><?php p($l->t('Nextcloud All In One'));?></h2>
<a href="<?php p($_['AIOLoginUrl']);?>" class="button" target="_blank" rel="noopener">Open Nextcloud AIO Interface ↗</a>
</div>

View File

@@ -22,8 +22,6 @@ Simply use https://github.com/nextcloud/all-in-one/issues/180 as template.
Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/repo-sync.yml and run the workflow that will first sync the repo and then build new container that automatically get published to `develop` and `develop-arm64`.
## How to test things correctly?
Before testing, make sure that at least the amd64 containers are built successfully by checking the last workflow here: https://github.com/nextcloud-releases/all-in-one/actions/workflows/build_images.yml.
There is a testing-VM available for the maintainer of AIO that allows for some final testing before releasing new version. See [this](https://cloud.nextcloud.com/apps/collectives/Nextcloud%20Handbook/Technical/AIO%20testing%20VM?fileId=6350152) for details.
## How to promote builds from develop to beta

View File

@@ -2,25 +2,26 @@ version: "3.8"
volumes:
nextcloud_aio_mastercontainer:
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed as otherwise the built-in backup solution will not work
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed
services:
nextcloud:
image: nextcloud/all-in-one:latest
restart: always
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed
volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'DOCKER_SOCKET_PATH'!
ports:
- 80:80 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
- 8080:8080
- 8443:8443 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# environment: # Is needed when using any of the options below
# - AIO_DISABLE_BACKUP_SECTION=false # Setting this to true allows to hide the backup section in the AIO interface.
# - APACHE_PORT=11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# - APACHE_IP_BINDING=127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# - COLLABORA_SECCOMP_DISABLED=false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
# - DOCKER_SOCKET_PATH=/var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
# - DISABLE_BACKUP_SECTION=false # Setting this to true allows to hide the backup section in the AIO interface.
# - NEXTCLOUD_DATADIR=/mnt/ncdata # Allows to set the host directory for Nextcloud's datadir. See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
# - NEXTCLOUD_MOUNT=/mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
# - NEXTCLOUD_UPLOAD_LIMIT=10G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
@@ -32,9 +33,6 @@ services:
# - NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container
# - NEXTCLOUD_ENABLE_DRI_DEVICE=true # This allows to enable the /dev/dri device in the Nextcloud container which is needed for hardware-transcoding. See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud
# - TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
# - WATCHTOWER_DOCKER_SOCKET_PATH=/var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
# networks: # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
# - nextcloud-aio # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
# # Optional: Caddy reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# # You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/588
@@ -49,16 +47,3 @@ services:
# - ./data:/data
# - ./sites:/srv
# network_mode: "host"
# # Optional: If you need ipv6, follow step 1 and 2 of https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md first and then uncomment the below config in order to activate ipv6 for the internal nextcloud-aio network.
# # Please make sure to uncomment also the networking lines of the mastercontainer above in order to actually create the network with docker-compose
# # Inspired by https://github.com/mailcow/mailcow-dockerized/blob/master/docker-compose.yml
# networks:
# nextcloud-aio:
# name: nextcloud-aio # This line is not allowed to be changed as otherwise the created network will not be used by the other containers of AIO
# driver: bridge
# enable_ipv6: true
# ipam:
# driver: default
# config:
# - subnet: fd12:3456:789a:2::/64 # IPv6 subnet to use

View File

@@ -1,45 +0,0 @@
# IPv6-Support for Docker
Before enabling IPv6-Support for Docker, please note that there are still some unresolved problems in regards to IPv6-Support in Docker. See https://github.com/nextcloud/all-in-one/discussions/2557 for more details on this.
Now that this was mentioned, see the instructions below on how to enable IPv6 for Docker.
## Docker on Linux and Docker-rootless
1. Edit `/etc/docker/daemon.json` (or `~/.config/docker/daemon.json` in case of docker-rootless), set the `ipv6` key to `true` and the `fixed-cidr-v6` key to your IPv6 subnet. In this example we are setting it to `fd12:3456:789a:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well. If you are using mailcow and enabled IPv6 with the update.sh, you can keep their daemon.json, it will work too.
```json
{
"ipv6": true,
"fixed-cidr-v6": "fd12:3456:789a:1::/64",
"experimental": true,
"ip6tables": true
}
```
Save the file.
2. Reload the Docker configuration file.
```console
sudo systemctl restart docker
```
3. Make sure that ipv6 is enabled for the internal `nextcloud-aio` network by running `sudo docker network inspect nextcloud-aio | grep EnableIPv6`. On a new instance, this command should return that it did not find a network with this name. Then you can run `sudo docker network create --subnet="fd12:3456:789a:2::/64" --driver bridge --ipv6 nextcloud-aio` in order to create the network with ipv6-support. However if it finds the network and its value `EnableIPv6` is set to false, make sure to follow https://github.com/nextcloud/all-in-one/discussions/2045 in order to recreate the network and enable ipv6 for it.
## Docker Desktop (Windows and macOS)
On Windows and macOS which use Docker Desktop, you need to go into the settings, and select `Docker Engine`. There you should see the currently used daemon.json file.
1. You need to now adjust this json file by setting the `ipv6` key to `true` and the `fixed-cidr-v6` key to your IPv6 subnet. In this example we are setting it to `fd12:3456:789a:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well.
```
"ipv6": true,
"fixed-cidr-v6": "fd12:3456:789a:1::/64",
"experimental": true,
"ip6tables": true
```
2. Add these values to the json and make sure to keep the other currently values and that you don't see `Unexpected token in JSON at position ...` before attempting to restart by clicking on `Apply & restart`.
3. Make sure that ipv6 is enabled for the internal `nextcloud-aio` network by running `docker network inspect nextcloud-aio`. On a new instance, this command should return that it did not find a network with this name. Then you can run `docker network create --subnet="fd12:3456:789a:2::/64" --driver bridge --ipv6 nextcloud-aio` in order to create the network with ipv6-support. However if it finds the network and its value `EnableIPv6` is set to false, make sure to follow https://github.com/nextcloud/all-in-one/discussions/2045 in order to recreate the network and enable ipv6 for it.
---
**Note**: This is a copy of the original docker docs at https://docs.docker.com/config/daemon/ipv6/ which apparently are not correct. However experimental is set to true which the ip6tables feature needs. Thus it will not get included into the official docs. However it is needed to make it work in our testing.

View File

@@ -4,11 +4,11 @@ You can run AIO with docker rootless by following the steps below.
0. If docker is already installed, you should consider disabling it first: (`sudo systemctl disable --now docker.service docker.socket`)
1. Install docker rootless by following the official documentation: https://docs.docker.com/engine/security/rootless/#install. The easiest way is installing it **Without packages** (`curl -fsSL https://get.docker.com/rootless | sh`). Further limitations, distribution specific hints, etc. are discussed on the same site. Also do not forget to enable the systemd service, which may not be enabled always by default. See https://docs.docker.com/engine/security/rootless/#usage. (`systemctl --user enable docker`)
1. If you need ipv6 support, you should enable it by following https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md.
1. If you need ipv6 support, you should enable it by following https://docs.docker.com/config/daemon/ipv6/. The daemon.json file is most likely stored in `~/.config/docker/daemon.json`.
1. Do not forget to set the mentioned environmental variables and in best case add them to your `~/.bashrc` file as shown!
1. Also do not forget to run `loginctl enable-linger USERNAME` (and substitute USERNAME with the correct one) in order to make sure that user services are automatically started after every reboot.
1. Expose the privileged ports by following https://docs.docker.com/engine/security/rootless/#exposing-privileged-ports. (`sudo setcap cap_net_bind_service=ep $(which rootlesskit); systemctl --user restart docker`)
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `--env WATCHTOWER_DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly).
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `-e DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly).
1. Now everything should work like without docker rootless. You can consider using docker-compose for this or running it behind a reverse proxy. Basically the only thing that needs to be adjusted always in the startup command or docker-compose file (after installing docker rootles) are things that are mentioned in point 3.
**Please note:** All files outside the containers get created, written to and accessed as the user that is running the docker daemon or a subuid of it. So for the built-in backup to work you need to allow this user to write to the target directory. E.g. with `sudo chown -R USERNAME:GROUPNAME /mnt/backup`. The same applies when changing Nextcloud's datadir. E.g. `sudo chown -R USERNAME:GROUPNAME /mnt/ncdata`. When you want to use the NEXTCLOUD_MOUNT option for local external storage, you need to adjust the permissions of the chosen folders to be accessible/writeable by the userid `100032:100032` (if running `grep ^$(whoami): /etc/subuid` as the user that is running the docker daemon returns 100000 as first value).

9
helm-chart/Chart.yaml Executable file
View File

@@ -0,0 +1,9 @@
name: Nextcloud AIO Helm Chart
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
version: 4.6.2
apiVersion: v2
keywords:
- latest
sources:
- https://github.com/nextcloud/all-in-one/tree/main/helm-chart
home: https://github.com/nextcloud/all-in-one/tree/main/helm-chart

3
helm-chart/readme.md Executable file
View File

@@ -0,0 +1,3 @@
# You can also install the AIO containers on Kubernetes using this Helm Chart
This is currently beta and not ready yet.

View File

@@ -54,7 +54,7 @@ spec:
value: nextcloud-aio-talk
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-apache:20230511_075831-latest
image: nextcloud/aio-apache:20230315_112022-latest
name: nextcloud-aio-apache
ports:
- containerPort: {{ .Values.APACHE_PORT }}

View File

@@ -38,7 +38,7 @@ spec:
value: "90"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-clamav:20230511_075831-latest
image: nextcloud/aio-clamav:20230315_112022-latest
name: nextcloud-aio-clamav
ports:
- containerPort: 3310

View File

@@ -34,8 +34,6 @@ spec:
mountPath: /nextcloud-aio-collabora-fonts
containers:
- env:
- name: DONT_GEN_SSL_CERT
value: "1"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- name: aliasgroup1
@@ -46,7 +44,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: nextcloud/aio-collabora:20230511_075831-latest
image: nextcloud/aio-collabora:20230315_112022-latest
name: nextcloud-aio-collabora
ports:
- containerPort: 9980

View File

@@ -22,25 +22,11 @@ spec:
io.kompose.service: nextcloud-aio-database
spec:
initContainers:
- name: init-subpath
image: alpine
command:
- mkdir
- "-p"
- /nextcloud-aio-database/data
- /nextcloud-aio-database
- /nextcloud-aio-database-dump
volumeMounts:
- name: nextcloud-aio-database-dump
mountPath: /nextcloud-aio-database-dump
- name: nextcloud-aio-database
mountPath: /nextcloud-aio-database
- name: init-volumes
image: alpine
command:
- chown
- 999:999
- "-R"
- /nextcloud-aio-database
- /nextcloud-aio-database-dump
volumeMounts:
@@ -60,13 +46,12 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-postgresql:20230511_075831-latest
image: nextcloud/aio-postgresql:20230315_112022-latest
name: nextcloud-aio-database
ports:
- containerPort: 5432
volumeMounts:
- mountPath: /var/lib/postgresql/data
subPath: data
name: nextcloud-aio-database
- mountPath: /mnt/data
name: nextcloud-aio-database-dump

View File

@@ -42,7 +42,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: discovery.type
value: single-node
image: nextcloud/aio-fulltextsearch:20230511_075831-latest
image: nextcloud/aio-fulltextsearch:20230315_112022-latest
name: nextcloud-aio-fulltextsearch
ports:
- containerPort: 9200

View File

@@ -26,7 +26,7 @@ spec:
- env:
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-imaginary:20230511_075831-latest
image: nextcloud/aio-imaginary:20230315_112022-latest
name: nextcloud-aio-imaginary
ports:
- containerPort: 9000

View File

@@ -64,8 +64,6 @@ spec:
value: "{{ .Values.IMAGINARY_ENABLED }}"
- name: IMAGINARY_HOST
value: nextcloud-aio-imaginary
- name: INSTALL_LATEST_MAJOR
value: "{{ .Values.INSTALL_LATEST_MAJOR }}"
- name: NC_DOMAIN
value: "{{ .Values.NC_DOMAIN }}"
- name: NEXTCLOUD_DATA_DIR
@@ -100,6 +98,8 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: SIGNALING_SECRET
value: "{{ .Values.SIGNALING_SECRET }}"
- name: SKIP_DATA_DIRECTORY_PERMISSION_CHECK
value: "{{ .Values.SKIP_DATA_DIRECTORY_PERMISSION_CHECK }}"
- name: STARTUP_APPS
value: "{{ .Values.NEXTCLOUD_STARTUP_APPS }}"
- name: TALK_ENABLED
@@ -114,7 +114,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: UPDATE_NEXTCLOUD_APPS
value: "{{ .Values.UPDATE_NEXTCLOUD_APPS }}"
image: nextcloud/aio-nextcloud:20230511_075831-latest
image: nextcloud/aio-nextcloud:20230315_112022-latest
name: nextcloud-aio-nextcloud
ports:
- containerPort: 9000

View File

@@ -42,7 +42,7 @@ spec:
value: "{{ .Values.ONLYOFFICE_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-onlyoffice:20230511_075831-latest
image: nextcloud/aio-onlyoffice:20230315_112022-latest
name: nextcloud-aio-onlyoffice
ports:
- containerPort: 80

View File

@@ -37,7 +37,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-redis:20230511_075831-latest
image: nextcloud/aio-redis:20230315_112022-latest
name: nextcloud-aio-redis
ports:
- containerPort: 6379

View File

@@ -34,7 +34,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-talk:20230511_075831-latest
image: nextcloud/aio-talk:20230315_112022-latest
name: nextcloud-aio-talk
ports:
- containerPort: {{ .Values.TALK_PORT }}

View File

@@ -2,9 +2,6 @@
DOCKER_TAG="$1"
# The logic needs the files in ./helm-chart
mv ./nextcloud-aio-helm-chart ./helm-chart
# Clean
rm -f ./helm-chart/values.yaml
rm -rf ./helm-chart/templates
@@ -32,7 +29,6 @@ sed -i "s|\${TALK_PORT}:\${TALK_PORT}/|$TALK_PORT:$TALK_PORT/|g" latest.yml
sed -i "s|- \${APACHE_PORT}|- $APACHE_PORT|" latest.yml
sed -i "s|- \${TALK_PORT}|- $TALK_PORT|" latest.yml
sed -i "s|\${NEXTCLOUD_DATADIR}|$NEXTCLOUD_DATADIR|" latest.yml
sed -i "/name: nextcloud-aio/,$ d" latest.yml
sed -i "/NEXTCLOUD_DATADIR/d" latest.yml
sed -i "/\${NEXTCLOUD_MOUNT}/d" latest.yml
sed -i "/^volumes:/a\ \ nextcloud_aio_nextcloud_trusted_cacerts:\n \ \ \ \ name: nextcloud_aio_nextcloud_trusted_cacerts" latest.yml
@@ -57,19 +53,11 @@ cat << EOL > /tmp/initcontainers
EOL
cat << EOL > /tmp/initcontainers.database
initContainers:
- name: init-subpath
image: alpine
command:
- mkdir
- "-p"
- /nextcloud-aio-database/data
volumeMountsInitContainer:
- name: init-volumes
image: alpine
command:
- chown
- 999:999
- "-R"
volumeMountsInitContainer:
EOL
# shellcheck disable=SC1083
@@ -89,11 +77,6 @@ for variable in "${DEPLOYMENTS[@]}"; do
if [ "$volumeName" != "nextcloud-aio-nextcloud-data" ]; then
sed -i "/^.*volumeMountsInitContainer:/i\ \ \ \ \ \ \ \ \ \ \ \ - /$volumeName" "$variable"
sed -i "/volumeMountsInitContainer:/a\ \ \ \ \ \ \ \ \ \ \ \ - name: $volumeName\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ mountPath: /$volumeName" "$variable"
# Workaround for the database volume
if [ "$volumeName" = nextcloud-aio-database ]; then
sed -i "/mountPath: \/var\/lib\/postgresql\/data/a\ \ \ \ \ \ \ \ \ \ \ \ \ \ subPath: data" "$variable"
fi
fi
done
sed -i "s|volumeMountsInitContainer|volumeMounts|" "$variable"
@@ -188,11 +171,9 @@ sed -i 's|= |: |' /tmp/sample.conf
sed -i '/^NEXTCLOUD_DATADIR/d' /tmp/sample.conf
sed -i '/^APACHE_IP_BINDING/d' /tmp/sample.conf
sed -i '/^NEXTCLOUD_MOUNT/d' /tmp/sample.conf
sed -i '/^IPV6_NETWORK/d' /tmp/sample.conf
sed -i '/_ENABLED.*/s/ yes / "yes" /' /tmp/sample.conf
sed -i '/_ENABLED.*/s/ no / "no" /' /tmp/sample.conf
sed -i 's|^NEXTCLOUD_TRUSTED_CACERTS_DIR: .*|NEXTCLOUD_TRUSTED_CACERTS_DIR: # Setting this to any value allows to automatically import root certificates into the Nextcloud container|' /tmp/sample.conf
sed -i 's|10737418240|"10737418240"|' /tmp/sample.conf
# shellcheck disable=SC2129
echo 'STORAGE_CLASS: # By setting this, you can adjust the storage class for your volumes' >> /tmp/sample.conf
for variable in "${VOLUME_VARIABLE[@]}"; do
@@ -218,9 +199,4 @@ done
chmod 777 -R ./
# Seems like the dir needs to match the name of the chart
cd ../
rm -rf ./nextcloud-aio-helm-chart
mv ./helm-chart ./nextcloud-aio-helm-chart
set +ex

View File

@@ -1,6 +1,6 @@
AIO_TOKEN: 123456 # Has no function but needs to be set!
AIO_URL: localhost # Has no function but needs to be set!
APACHE_MAX_SIZE: "10737418240" # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
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 and else).
CLAMAV_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
COLLABORA_DICTIONARIES: de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru # You can change this in order to enable other dictionaries for collabora
@@ -9,7 +9,6 @@ COLLABORA_SECCOMP_POLICY: --o:security.seccomp=true # Changing the valu
DATABASE_PASSWORD: # TODO! This needs to be a unique and good password!
FULLTEXTSEARCH_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
IMAGINARY_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
INSTALL_LATEST_MAJOR: no # Setting this to yes will install the latest Major Nextcloud version upon the first installation
NC_DOMAIN: yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.
NEXTCLOUD_ADDITIONAL_APKS: imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.
NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS: imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.
@@ -23,6 +22,7 @@ ONLYOFFICE_ENABLED: "no" # Setting this to "yes" (with quotes) enables
ONLYOFFICE_SECRET: # TODO! This needs to be a unique and good password!
REDIS_PASSWORD: # TODO! This needs to be a unique and good password!
SIGNALING_SECRET: # TODO! This needs to be a unique and good password!
SKIP_DATA_DIRECTORY_PERMISSION_CHECK: no # When setting to yes (with quotes), it will skip the datadir permission check upon the initial Nextcloud installation.
TALK_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
TALK_PORT: 3478 # This allows to adjust the port that the talk container is using.
TIMEZONE: Europe/Berlin # TODO! This is the timezone that your containers will use.

1890
index.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -5,8 +5,8 @@ It is possible due to several reasons that you do not want or cannot open Nextcl
The recommended way is the following:
1. Set up your domain correctly to point to your home network
1. Set up a reverse proxy by following the [reverse proxy documentation](./reverse-proxy.md) but only open port 80 (which is needed for the ACME challenge to work - however no real traffic will use this port).
1. Set up a local DNS-server like a pi-hole and configure it to be your local DNS-server for the whole network. Then in the Pi-hole interface, add a custom DNS-record for your domain and overwrite the A-record (and possibly the AAAA-record, too) to point to the private ip-address of your reverse proxy (see https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally)
1. Enter the ip-address of your local dns-server in the deamon.json file for docker so that you are sure that all docker containers use the correct local dns-server.
1. Set up a local DNS-server like a pi-hole and configure it to be your local DNS-server for the whole network. Then in the Pi-hole interface, add a custom DNS-record for your domain and overwrite the A-record (and possibly the AAAA-record, too) to point to the local ip-address of your reverse proxy (see https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally)
1. Enter the the ip-address of your local dns-server in the deamon.json file for docker so that you are sure that all docker containers use the correct local dns-server.
1. Now, entering the domain in the AIO-interface should work as expected and should allow you to continue with the setup
## 2. Use the ACME DNS-challenge

View File

@@ -44,7 +44,6 @@ services:
restart: unless-stopped
networks:
- nextcloud-aio
shm_size: 268435456
nextcloud-aio-nextcloud:
depends_on:
@@ -102,7 +101,7 @@ services:
- STARTUP_APPS=${NEXTCLOUD_STARTUP_APPS}
- ADDITIONAL_APKS=${NEXTCLOUD_ADDITIONAL_APKS}
- ADDITIONAL_PHP_EXTENSIONS=${NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS}
- INSTALL_LATEST_MAJOR=${INSTALL_LATEST_MAJOR}
- SKIP_DATA_DIRECTORY_PERMISSION_CHECK=${SKIP_DATA_DIRECTORY_PERMISSION_CHECK}
restart: unless-stopped
networks:
- nextcloud-aio
@@ -131,7 +130,6 @@ services:
- dictionaries=${COLLABORA_DICTIONARIES}
- TZ=${TIMEZONE}
- server_name=${NC_DOMAIN}
- DONT_GEN_SSL_CERT=1
volumes:
- nextcloud_aio_collabora_fonts:/opt/cool/systemplate/tmpfonts:rw
restart: unless-stopped
@@ -237,13 +235,5 @@ volumes:
nextcloud_aio_nextcloud_data:
name: nextcloud_aio_nextcloud_data
# Inspired by https://github.com/mailcow/mailcow-dockerized/blob/master/docker-compose.yml
networks:
nextcloud-aio:
name: nextcloud-aio
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: ${IPV6_NETWORK}

View File

@@ -11,7 +11,7 @@ You can run the containers that are build for AIO with docker-compose. This come
- You lose the AIO interface
- You lose update notifications and automatic updates
- You lose all AIO backup and restore features
- **You need to know what you are doing, especially when modifying the docker-compose file**
- You need to know what you are doing, especially when modifying the docker-compose file
- For updating, you need to strictly follow the at the bottom described update routine
- Probably more
@@ -37,7 +37,7 @@ Since the AIO containers may change in the future, it is highly recommended to s
1. If your previous copy of `sample.conf` is named `my.conf`, run `mv my.conf .env` in order to rename the file to `.env`.
1. Run `sudo docker-compose down` to stop all running containers
1. Back up all important files and folders
1. Run `git pull` in order to get the updated yaml files from the repository. Now bring your `docker-compose.yml` file up-to-date with the updated one from the repository. You can use `diff docker-compose.yml 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 docker-compose file and removing ipv6 from the network.
1. Run `git pull` in order to get the updated yaml files from the repository. Now bring your `docker-compose.yml` file up-to-date with the updated one from the repository. You can use `diff docker-compose.yml latest.yml` for comparing.
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.

View File

@@ -10,7 +10,6 @@ COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value
DATABASE_PASSWORD= # TODO! This needs to be a unique and good password!
FULLTEXTSEARCH_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
IMAGINARY_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
INSTALL_LATEST_MAJOR=no # Setting this to yes will install the latest Major Nextcloud version upon the first installation
NC_DOMAIN=yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.
NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.
NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.
@@ -26,9 +25,9 @@ ONLYOFFICE_ENABLED="no" # Setting this to "yes" (with quotes) enables t
ONLYOFFICE_SECRET= # TODO! This needs to be a unique and good password!
REDIS_PASSWORD= # TODO! This needs to be a unique and good password!
SIGNALING_SECRET= # TODO! This needs to be a unique and good password!
SKIP_DATA_DIRECTORY_PERMISSION_CHECK="no" # When setting to "yes" (with quotes), it will skip the datadir permission check upon the initial Nextcloud installation.
TALK_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
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!
UPDATE_NEXTCLOUD_APPS="no" # When setting to "yes" (with quotes), it will automatically update all installed Nextcloud apps upon container startup on saturdays.
IPV6_NETWORK=fd12:3456:789a:2::/64 # IPv6 subnet to use

View File

@@ -15,7 +15,6 @@ OUTPUT="$(cat /tmp/containers.json)"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].internal_port)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].secrets)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].devices)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].backup_volumes)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-watchtower"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-domaincheck"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-borgbackup"))')"
@@ -72,6 +71,7 @@ sed -i 's|APACHE_MAX_SIZE=|APACHE_MAX_SIZE=10737418240 # This needs to
sed -i 's|NEXTCLOUD_MAX_TIME=|NEXTCLOUD_MAX_TIME=3600 # This allows to change the upload time limit of the Nextcloud container|' sample.conf
sed -i 's|NEXTCLOUD_TRUSTED_CACERTS_DIR=|NEXTCLOUD_TRUSTED_CACERTS_DIR=/usr/local/share/ca-certificates/my-custom-ca # Nextcloud container will trust all the Certification Authorities, whose certificates are included in the given directory.|' sample.conf
sed -i 's|UPDATE_NEXTCLOUD_APPS=|UPDATE_NEXTCLOUD_APPS="no" # When setting to "yes" (with quotes), it will automatically update all installed Nextcloud apps upon container startup on saturdays.|' sample.conf
sed -i 's|SKIP_DATA_DIRECTORY_PERMISSION_CHECK=|SKIP_DATA_DIRECTORY_PERMISSION_CHECK="no" # When setting to "yes" (with quotes), it will skip the datadir permission check upon the initial Nextcloud installation.|' sample.conf
sed -i 's|APACHE_PORT=|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 and else).|' sample.conf
sed -i 's|APACHE_IP_BINDING=|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 and else) and if that is running on the same host and using localhost to connect|' sample.conf
sed -i 's|TALK_PORT=|TALK_PORT=3478 # This allows to adjust the port that the talk container is using.|' sample.conf
@@ -84,9 +84,7 @@ sed -i 's|COLLABORA_SECCOMP_POLICY=|COLLABORA_SECCOMP_POLICY=--o:security.seccom
sed -i 's|NEXTCLOUD_STARTUP_APPS=|NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts" # Allows to modify the Nextcloud apps that are installed on starting AIO the first time|' sample.conf
sed -i 's|NEXTCLOUD_ADDITIONAL_APKS=|NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.|' sample.conf
sed -i 's|NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=|NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.|' sample.conf
sed -i 's|INSTALL_LATEST_MAJOR=|INSTALL_LATEST_MAJOR=no # Setting this to yes will install the latest Major Nextcloud version upon the first installation|' sample.conf
sed -i 's|=$|= # TODO! This needs to be a unique and good password!|' sample.conf
echo 'IPV6_NETWORK=fd12:3456:789a:2::/64 # IPv6 subnet to use' >> sample.conf
cat sample.conf
@@ -130,16 +128,8 @@ done
cat << NETWORK >> containers.yml
# Inspired by https://github.com/mailcow/mailcow-dockerized/blob/master/docker-compose.yml
networks:
nextcloud-aio:
name: nextcloud-aio
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: \${IPV6_NETWORK}
NETWORK
cat containers.yml > latest.yml

View File

@@ -8,12 +8,12 @@ Below is described more in detail how the the second way works.
## Run multiple AIO instances on the same server with docker rootless
1. Create as many linux users as you need first. The easiest way is to use `sudo adduser` and follow the setup for that. Make sure to create a strong unique password for each of them and write it down!
1. Log in as each of the users e.g. by opening a new SSH connection and install docker rootless for each of them by following step 0-4 of the [docker rootless documentation](./docker-rootless.md).
1. Then install AIO in reverse proxy mode by using the command that is descriebed in step 2 and 3 of the [reverse proxy documentation](./reverse-proxy.md) but use a different `APACHE_PORT` and [`TALK_PORT`](https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port) for each instance as otherwise it will bug out. Also make sure to adjust the docker socket and `WATCHTOWER_DOCKER_SOCKET_PATH` correctly for each of them by following step 6 of the [docker rootless documentation](./docker-rootless.md). Additionally, modify `--publish 8080:8080` to a different port for each container, e.g. `8081:8080` as otherwise it will not work.<br>
1. Then install AIO in reverse proxy mode by using the command that is descriebed in step 2 and 3 of the [reverse proxy documentation](./reverse-proxy.md) but use a different `APACHE_PORT` and [`TALK_PORT`](https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port) for each instance as otherwise it will bug out. Also make sure to adjust the docker socket and `DOCKER_SOCKET_PATH` correctly for each of them by following step 6 of the [docker rootless documentation](./docker-rootless.md). Additionally, modify `--publish 8080:8080` to a different port for each container, e.g. `8081:8080` as otherwise it will not work.<br>
**⚠️ Please note:** If you want to adjust the `NEXTCLOUD_DATADIR`, make sure to apply the correct permissions to the chosen path as documented at the bottom of the [docker rootless documentation](./docker-rootless.md). Also for the built-in backup to work, the target path needs to have the correct permissions as documented there, too.
1. Now install your webserver of choice on the host system. It is recommended to use caddy for this as it is by far the easiest solution. You can do so by following https://caddyserver.com/docs/install#debian-ubuntu-raspbian or below. (It needs to be installed directly on the host or on a different server in the same network).
1. Next create your Caddyfile with multiple entries and domains for the different instances like described in step 1 of the [reverse proxy documentation](./reverse-proxy.md). Obviously each domain needs to point correctly to the chosen `APACHE_PORT` that you've configured before. Then start Caddy which should automatically get the needed certificates for you if your domains are configured correctly and ports 80 and 443 are forwarded to your server.
1. Now open each of the AIO interfaces by opening `https://ip.address.of.this.server:8080` or e.g. `https://ip.address.of.this.server:8081` or as chosen during step 3 of this documentation.
1. Finally type in the domain that you've configured for each of the instances during step 5 of this documentation and you are done.
1. Please also do not forget to open/forward each chosen `TALK_PORT` UPD and TCP in your firewall/router as otherwise Talk will not work correctly!
1. Please also do not forget to open each chosen `TALK_PORT` UPD and TCP in your firewall/router as otherwise Talk will not work correctly!
Now everything should be set up correctly and you should have created multiple working instances of AIO on the same server!

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,13 +0,0 @@
name: nextcloud-aio-helm-chart
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
version: 5.1.0
apiVersion: v2
keywords:
- latest
- nextcloud
- helm-chart
- open-source
- cloud
sources:
- https://github.com/nextcloud/all-in-one/tree/main/nextcloud-aio-helm-chart
home: https://github.com/nextcloud/all-in-one/tree/main/nextcloud-aio-helm-chart

View File

@@ -1,37 +0,0 @@
# Nextcloud AIO Helm-chart
You can run the containers that are build for AIO with Kubernetes using this Helm chart. This comes with a few downsides, that are discussed below.
### Advantages
- You can run it without a container having access to the docker socket
- You can run the containers with Kubernetes
### Disadvantages
- You lose the AIO interface
- You lose update notifications and automatic updates
- You lose all AIO backup and restore features
- **You need to know what you are doing**
- For updating, you need to strictly follow the at the bottom described update routine
- You need to monitor yourself if the volumes have enough free space and increase them if they don't by adjusting their size in values.yaml
- Probably more
## How to use this?
First download this file: https://raw.githubusercontent.com/nextcloud/all-in-one/main/nextcloud-aio-helm-chart/values.yaml and adjust at least all values marked with `# TODO!`
Then run:
```
helm repo add nextcloud-aio https://nextcloud.github.io/all-in-one/
helm install my-release nextcloud-aio/nextcloud-aio-helm-chart -f values.yaml
```
And after a while, everything should be set up.
## How to update?
Since the values of this helm chart may change in the future, it is highly recommended to strictly follow the following procedure whenever you want to upgrade it.
1. Stop all running pods
1. Back up all volumes that got created by the Helm chart and the values.yaml file
1. Run `helm repo update nextcloud-aio` in order to get the updated yaml files from the repository
1. Now download the updated values.yaml file from https://raw.githubusercontent.com/nextcloud/all-in-one/main/nextcloud-aio-helm-chart/values.yaml and compare that with the one that you currently have locally. Look for variables that changed or got added. You can use the diff command to compare them.
1. After the file update was successful, simply run `helm install my-release nextcloud-aio/nextcloud-aio-helm-chart -f values.yaml` to update to the new version.

View File

@@ -5,7 +5,7 @@
}
},
"require": {
"php": "8.2.*",
"php": "8.1.*",
"ext-json": "*",
"ext-sodium": "*",
"ext-curl": "*",
@@ -22,6 +22,6 @@
"psalm": "psalm --threads=1",
"psalm:update-baseline": "psalm --threads=1 --update-baseline",
"lint": "find . -name \\*.php -not -path './vendor/*' -exec php -l {} \\;",
"php-deprecation-detector": "find . -name \\*.php -not -path './vendor/*' -exec phpdd scan {} -n -t 8.2 \\;"
"php-deprecation-detector": "find . -name \\*.php -not -path './vendor/*' -exec phpdd scan {} -n -t 8.1 \\;"
}
}

138
php/composer.lock generated
View File

@@ -4,26 +4,26 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "b0074cfbf6b5cde6d6d2207286ad2e85",
"content-hash": "ca8e9b0dbbbd88c096dd8f2bda37a315",
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "7.6.1",
"version": "7.5.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51"
"reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
"reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.5",
"guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
"guzzlehttp/psr7": "^1.9 || ^2.4",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -48,6 +48,9 @@
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "7.5-dev"
}
},
"autoload": {
@@ -113,7 +116,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.6.1"
"source": "https://github.com/guzzle/guzzle/tree/7.5.0"
},
"funding": [
{
@@ -129,7 +132,7 @@
"type": "tidelift"
}
],
"time": "2023-05-15T20:43:01+00:00"
"time": "2022-08-28T15:39:27+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -217,22 +220,22 @@
},
{
"name": "guzzlehttp/psr7",
"version": "2.5.0",
"version": "2.4.4",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "b635f279edd83fc275f822a1188157ffea568ff6"
"reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6",
"reference": "b635f279edd83fc275f822a1188157ffea568ff6",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf",
"reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.1 || ^2.0",
"psr/http-message": "^1.0",
"ralouphie/getallheaders": "^3.0"
},
"provide": {
@@ -252,6 +255,9 @@
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "2.4-dev"
}
},
"autoload": {
@@ -313,7 +319,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.5.0"
"source": "https://github.com/guzzle/psr7/tree/2.4.4"
},
"funding": [
{
@@ -329,7 +335,7 @@
"type": "tidelift"
}
],
"time": "2023-04-17T16:11:26+00:00"
"time": "2023-03-09T13:19:02+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -723,21 +729,21 @@
},
{
"name": "psr/http-client",
"version": "1.0.2",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
"reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31"
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31",
"reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31",
"url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"shasum": ""
},
"require": {
"php": "^7.0 || ^8.0",
"psr/http-message": "^1.0 || ^2.0"
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
@@ -757,7 +763,7 @@
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP clients",
@@ -769,27 +775,27 @@
"psr-18"
],
"support": {
"source": "https://github.com/php-fig/http-client/tree/1.0.2"
"source": "https://github.com/php-fig/http-client/tree/master"
},
"time": "2023-04-10T20:12:12+00:00"
"time": "2020-06-29T06:28:15+00:00"
},
{
"name": "psr/http-factory",
"version": "1.0.2",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-factory.git",
"reference": "e616d01114759c4c489f93b099585439f795fe35"
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
"reference": "e616d01114759c4c489f93b099585439f795fe35",
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
"shasum": ""
},
"require": {
"php": ">=7.0.0",
"psr/http-message": "^1.0 || ^2.0"
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
@@ -809,7 +815,7 @@
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for PSR-7 HTTP message factories",
@@ -824,31 +830,31 @@
"response"
],
"support": {
"source": "https://github.com/php-fig/http-factory/tree/1.0.2"
"source": "https://github.com/php-fig/http-factory/tree/master"
},
"time": "2023-04-10T20:10:41+00:00"
"time": "2019-04-30T12:38:16+00:00"
},
{
"name": "psr/http-message",
"version": "1.1",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
"reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba"
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
"reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
"dev-master": "1.0.x-dev"
}
},
"autoload": {
@@ -877,27 +883,27 @@
"response"
],
"support": {
"source": "https://github.com/php-fig/http-message/tree/1.1"
"source": "https://github.com/php-fig/http-message/tree/master"
},
"time": "2023-04-04T09:50:52+00:00"
"time": "2016-08-06T14:39:51+00:00"
},
{
"name": "psr/http-server-handler",
"version": "1.0.2",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-server-handler.git",
"reference": "84c4fb66179be4caaf8e97bd239203245302e7d4"
"reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4",
"reference": "84c4fb66179be4caaf8e97bd239203245302e7d4",
"url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
"reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
"shasum": ""
},
"require": {
"php": ">=7.0",
"psr/http-message": "^1.0 || ^2.0"
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
@@ -917,7 +923,7 @@
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP server-side request handler",
@@ -933,27 +939,28 @@
"server"
],
"support": {
"source": "https://github.com/php-fig/http-server-handler/tree/1.0.2"
"issues": "https://github.com/php-fig/http-server-handler/issues",
"source": "https://github.com/php-fig/http-server-handler/tree/master"
},
"time": "2023-04-10T20:06:20+00:00"
"time": "2018-10-30T16:46:14+00:00"
},
{
"name": "psr/http-server-middleware",
"version": "1.0.2",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-server-middleware.git",
"reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829"
"reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829",
"reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829",
"url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5",
"reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5",
"shasum": ""
},
"require": {
"php": ">=7.0",
"psr/http-message": "^1.0 || ^2.0",
"psr/http-message": "^1.0",
"psr/http-server-handler": "^1.0"
},
"type": "library",
@@ -974,7 +981,7 @@
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP server-side middleware",
@@ -990,9 +997,9 @@
],
"support": {
"issues": "https://github.com/php-fig/http-server-middleware/issues",
"source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2"
"source": "https://github.com/php-fig/http-server-middleware/tree/master"
},
"time": "2023-04-11T06:14:47+00:00"
"time": "2018-10-30T17:12:04+00:00"
},
{
"name": "psr/log",
@@ -1639,16 +1646,16 @@
},
{
"name": "twig/twig",
"version": "v3.6.0",
"version": "v3.5.1",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "106c170d08e8415d78be2d16c3d057d0d108262b"
"reference": "a6e0510cc793912b451fd40ab983a1d28f611c15"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/106c170d08e8415d78be2d16c3d057d0d108262b",
"reference": "106c170d08e8415d78be2d16c3d057d0d108262b",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15",
"reference": "a6e0510cc793912b451fd40ab983a1d28f611c15",
"shasum": ""
},
"require": {
@@ -1657,10 +1664,15 @@
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"psr/container": "^1.0|^2.0",
"psr/container": "^1.0",
"symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.5-dev"
}
},
"autoload": {
"psr-4": {
"Twig\\": "src/"
@@ -1694,7 +1706,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.6.0"
"source": "https://github.com/twigphp/Twig/tree/v3.5.1"
},
"funding": [
{
@@ -1706,7 +1718,7 @@
"type": "tidelift"
}
],
"time": "2023-05-03T19:06:57+00:00"
"time": "2023-02-08T07:49:20+00:00"
}
],
"packages-dev": [],
@@ -1716,7 +1728,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": "8.2.*",
"php": "8.1.*",
"ext-json": "*",
"ext-sodium": "*",
"ext-curl": "*",

View File

@@ -13,49 +13,40 @@
"required": ["image", "container_name"],
"properties": {
"image": {
"type": "string",
"minLength": 1
"type": "string"
},
"expose": {
"type": "array",
"items": {
"type": "string",
"pattern": "^([0-9]{1,5})$"
"type": "string"
}
},
"cap_add": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z_]+$"
"type": "string"
}
},
"depends_on": {
"type": "array",
"items": {
"type": "string",
"pattern": "^nextcloud-aio-[a-z-]+$"
"type": "string"
}
},
"display_name": {
"type": "string",
"pattern": "^[A-Za-z ]+$"
"type": "string"
},
"environment": {
"type": "array",
"items": {
"type": "string",
"pattern": "^.*=.*$",
"minlength": 1
"type": "string"
}
},
"container_name": {
"type": "string",
"pattern": "^nextcloud-aio-[a-z-]+$"
"type": "string"
},
"internal_port": {
"type": "string",
"pattern": "^(([0-9]{1,5})|host|(%[A-Z_]+%))$"
"type": "string"
},
"stop_grace_period": {
"type": "integer"
@@ -68,49 +59,30 @@
"minProperties": 3,
"properties": {
"ip_binding": {
"type": "string",
"pattern": "^(%[A-Z_]+%)?$"
"type": "string"
},
"port_number": {
"type": "string",
"pattern": "^(%[A-Z_]+%)$"
"type": "string"
},
"protocol": {
"type": "string",
"pattern": "^(tcp|udp)$"
"type": "string"
}
}
}
},
"restart": {
"type": "string",
"pattern": "^unless-stopped$"
},
"shm_size": {
"type": "integer"
"type": "string"
},
"secrets": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z_]+$"
"type": "string"
}
},
"devices": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/dev/[a-z]+$"
}
},
"apparmor_unconfined": {
"type": "boolean"
},
"backup_volumes": {
"type": "array",
"items": {
"type": "string",
"pattern": "^nextcloud_aio_[a-z_]+$"
"type": "string"
}
},
"volumes": {
@@ -121,12 +93,10 @@
"minProperties": 3,
"properties": {
"destination": {
"type": "string",
"pattern": "^((/[a-z_/.-]+)|(%[A-Z_]+%))$"
"type": "string"
},
"source": {
"type": "string",
"pattern": "^((nextcloud_aio_[a-z_]+)|(%[A-Z_]+%))$"
"type": "string"
},
"writeable": {
"type": "boolean"

View File

@@ -41,11 +41,7 @@
"writeable": true
}
],
"restart": "unless-stopped",
"backup_volumes": [
"nextcloud_aio_nextcloud",
"nextcloud_aio_apache"
]
"restart": "unless-stopped"
},
{
"container_name": "nextcloud-aio-database",
@@ -78,12 +74,7 @@
"PGTZ=%TIMEZONE%"
],
"stop_grace_period": 1800,
"restart": "unless-stopped",
"shm_size": 268435456,
"backup_volumes": [
"nextcloud_aio_database",
"nextcloud_aio_database_dump"
]
"restart": "unless-stopped"
},
{
"container_name": "nextcloud-aio-nextcloud",
@@ -170,14 +161,11 @@
"STARTUP_APPS=%NEXTCLOUD_STARTUP_APPS%",
"ADDITIONAL_APKS=%NEXTCLOUD_ADDITIONAL_APKS%",
"ADDITIONAL_PHP_EXTENSIONS=%NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS%",
"INSTALL_LATEST_MAJOR=%INSTALL_LATEST_MAJOR%"
"SKIP_DATA_DIRECTORY_PERMISSION_CHECK=%SKIP_DATA_DIRECTORY_PERMISSION_CHECK%"
],
"restart": "unless-stopped",
"devices": [
"/dev/dri"
],
"backup_volumes": [
"nextcloud_aio_nextcloud"
]
},
{
@@ -218,8 +206,7 @@
"extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true %COLLABORA_SECCOMP_POLICY% --o:remote_font_config.url=https://%NC_DOMAIN%/apps/richdocuments/settings/fonts.json",
"dictionaries=%COLLABORA_DICTIONARIES%",
"TZ=%TIMEZONE%",
"server_name=%NC_DOMAIN%",
"DONT_GEN_SSL_CERT=1"
"server_name=%NC_DOMAIN%"
],
"volumes": [
{
@@ -272,8 +259,7 @@
"SELECTED_RESTORE_TIME=%SELECTED_RESTORE_TIME%",
"BACKUP_RESTORE_PASSWORD=%BACKUP_RESTORE_PASSWORD%",
"ADDITIONAL_DIRECTORIES_BACKUP=%ADDITIONAL_DIRECTORIES_BACKUP%",
"BORGBACKUP_HOST_LOCATION=%BORGBACKUP_HOST_LOCATION%",
"BORG_HOST_ID=nextcloud-aio-borgbackup"
"BORGBACKUP_HOST_LOCATION=%BORGBACKUP_HOST_LOCATION%"
],
"volumes": [
{
@@ -281,11 +267,31 @@
"destination": "/root",
"writeable": true
},
{
"source": "nextcloud_aio_nextcloud",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud",
"writeable": true
},
{
"source": "%NEXTCLOUD_DATADIR%",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data",
"writeable": true
},
{
"source": "nextcloud_aio_database",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_database",
"writeable": true
},
{
"source": "nextcloud_aio_database_dump",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_database_dump",
"writeable": true
},
{
"source": "nextcloud_aio_apache",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_apache",
"writeable": true
},
{
"source": "nextcloud_aio_mastercontainer",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer",
@@ -315,8 +321,7 @@
],
"cap_add": [
"SYS_ADMIN"
],
"apparmor_unconfined": true
]
},
{
"container_name": "nextcloud-aio-watchtower",
@@ -326,7 +331,7 @@
],
"volumes": [
{
"source": "%WATCHTOWER_DOCKER_SOCKET_PATH%",
"source": "%DOCKER_SOCKET_PATH%",
"destination": "/var/run/docker.sock",
"writeable": false
}

View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="5.12.0@f90118cdeacd0088e7215e64c0c99ceca819e176"/>
<files psalm-version="5.8.0@9cf4f60a333f779ad3bc704a555920e81d4fdcda"/>

View File

@@ -20,10 +20,8 @@
if (xhr.status === 201) {
window.location.replace(xhr.getResponseHeader('Location'));
} else if (xhr.status === 422) {
disableSpinner()
showError(xhr.response);
} else if (xhr.status === 500) {
disableSpinner()
showError("Server error. Please check the mastercontainer logs for details.");
} else {
// If the responose is not one of the above, we should reload to show the latest content
@@ -31,12 +29,16 @@
}
}
function enableSpinner() {
function disable(element) {
document.getElementById('overlay').classList.add('loading');
element.classList.add('loading');
element.disabled = true;
}
function disableSpinner() {
function enable(element) {
document.getElementById('overlay').classList.remove('loading');
element.classList.remove('loading');
element.disabled = false;
}
function initForm(form) {
@@ -48,10 +50,11 @@
var xhr = new XMLHttpRequest();
xhr.addEventListener('load', handleEvent);
xhr.addEventListener('error', () => showError("Failed to talk to server."));
xhr.addEventListener('error', () => disableSpinner());
xhr.addEventListener('load', () => enable(event.submitter));
xhr.addEventListener('error', () => enable(event.submitter));
xhr.open(form.method, form.getAttribute("action"));
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
enableSpinner();
disable(event.submitter);
xhr.send(new URLSearchParams(new FormData(form)));
event.preventDefault();
}

View File

@@ -70,18 +70,15 @@ $app->post('/api/configuration', \AIO\Controller\ConfigurationController::class
// Views
$app->get('/containers', function (Request $request, Response $response, array $args) use ($container) {
$view = Twig::fromRequest($request);
$view->addExtension(new \AIO\Twig\ClassExtension());
/** @var \AIO\Data\ConfigurationManager $configurationManager */
$configurationManager = $container->get(\AIO\Data\ConfigurationManager::class);
/** @var \AIO\Docker\DockerActionManager $dockerActionManger */
$dockerActionManger = $container->get(\AIO\Docker\DockerActionManager::class);
/** @var \AIO\Controller\DockerController $dockerController */
$dockerController = $container->get(\AIO\Controller\DockerController::class);
$dockerActionManger->ConnectMasterContainerToNetwork();
$dockerController = $container->get(\AIO\Controller\DockerController::class);
$dockerController->StartDomaincheckContainer();
$view->addExtension(new \AIO\Twig\ClassExtension());
return $view->render($response, 'containers.twig', [
'domain' => $configurationManager->GetDomain(),
'apache_port' => $configurationManager->GetApachePort(),
'borg_backup_host_location' => $configurationManager->GetBorgBackupHostLocation(),
'nextcloud_password' => $configurationManager->GetAndGenerateSecret('NEXTCLOUD_PASSWORD'),
'containers' => (new \AIO\ContainerDefinitionFetcher($container->get(\AIO\Data\ConfigurationManager::class), $container))->FetchDefinition(),
@@ -114,12 +111,6 @@ $app->get('/containers', function (Request $request, Response $response, array $
'is_imaginary_enabled' => $configurationManager->isImaginaryEnabled(),
'is_fulltextsearch_enabled' => $configurationManager->isFulltextsearchEnabled(),
'additional_backup_directories' => $configurationManager->GetAdditionalBackupDirectoriesString(),
'nextcloud_datadir' => $configurationManager->GetNextcloudDatadirMount(),
'nextcloud_mount' => $configurationManager->GetNextcloudMount(),
'nextcloud_upload_limit' => $configurationManager->GetNextcloudUploadLimit(),
'nextcloud_max_time' => $configurationManager->GetNextcloudMaxTime(),
'nextcloud_memory_limit' => $configurationManager->GetNextcloudMemoryLimit(),
'is_dri_device_enabled' => $configurationManager->isDriDeviceEnabled(),
]);
})->setName('profile');
$app->get('/login', function (Request $request, Response $response, array $args) use ($container) {
@@ -153,7 +144,6 @@ $app->get('/setup', function (Request $request, Response $response, array $args)
// Auth Redirector
$app->get('/', function (\Psr\Http\Message\RequestInterface $request, Response $response, array $args) use ($container) {
/** @var \AIO\Auth\AuthManager $authManager */
$authManager = $container->get(\AIO\Auth\AuthManager::class);
/** @var \AIO\Data\Setup $setup */

View File

@@ -23,11 +23,6 @@ a {
outline: none;
}
.button:focus {
color:black;
border: 2px solid black;
}
#logout {
margin-top: 7px;
}
@@ -149,7 +144,7 @@ input {
padding: 20px;
max-width: 100%;
word-break: break-word;
max-width: 500px;
max-width: 470px;
margin: 0 auto;
}

View File

@@ -25,10 +25,6 @@ class Container {
private array $devices;
/** @var string[] */
private array $capAdd;
private int $shmSize;
private bool $apparmorUnconfined;
/** @var string[] */
private array $backupVolumes;
private DockerActionManager $dockerActionManager;
public function __construct(
@@ -45,9 +41,6 @@ class Container {
array $secrets,
array $devices,
array $capAdd,
int $shmSize,
bool $apparmorUnconfined,
array $backupVolumes,
DockerActionManager $dockerActionManager
) {
$this->identifier = $identifier;
@@ -63,9 +56,6 @@ class Container {
$this->secrets = $secrets;
$this->devices = $devices;
$this->capAdd = $capAdd;
$this->shmSize = $shmSize;
$this->apparmorUnconfined = $apparmorUnconfined;
$this->backupVolumes = $backupVolumes;
$this->dockerActionManager = $dockerActionManager;
}
@@ -85,14 +75,6 @@ class Container {
return $this->restartPolicy;
}
public function GetShmSize() : int {
return $this->shmSize;
}
public function isApparmorUnconfined() : bool {
return $this->apparmorUnconfined;
}
public function GetMaxShutdownTime() : int {
return $this->maxShutdownTime;
}
@@ -109,10 +91,6 @@ class Container {
return $this->capAdd;
}
public function GetBackupVolumes() : array {
return $this->backupVolumes;
}
public function GetPorts() : ContainerPorts {
return $this->ports;
}

Some files were not shown because too many files have changed in this diff Show More