Compare commits

...

234 Commits

Author SHA1 Message Date
Simon L
db47b9c573 increase to 7.5.1
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-27 13:11:51 +02:00
Simon L
c96d56d2f5 Merge pull request #3616 from nextcloud/aio-helm-update
Helm Chart updates
2023-10-27 12:40:07 +02:00
szaimen
1abdac9613 Helm Chart updates
Signed-off-by: GitHub <noreply@github.com>
2023-10-27 10:30:37 +00:00
Simon L
2e9f48bb11 fix detail
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-27 10:39:01 +02:00
Simon L
706c8bc1bd fix update-helm script
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-27 09:28:21 +02:00
Simon L
882cef4b0c Merge pull request #3589 from nextcloud/nextcloud-container-update 2023-10-27 09:14:21 +02:00
szaimen
a90fd4d4aa nextcloud-update automated change
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-27 09:13:58 +02:00
Simon L
b2ca0b0e22 add mailu to recommended mail server projects
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-22 11:11:46 +02:00
Simon L
c8c6bda76e Merge pull request #3581 from nextcloud/aio-yaml-update
Yaml updates
2023-10-21 14:16:01 +02:00
szaimen
db84d7d486 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2023-10-21 12:02:16 +00:00
Simon L
d5ff2fca16 Merge pull request #3574 from nextcloud/enh/3540/fix-rp-setup 2023-10-20 21:42:11 +02:00
Simon L
3f43f122ee Merge pull request #3550 from p-fruck/compose-presets-and-typos 2023-10-20 19:53:31 +02:00
Simon L
c5135e3a4e nextcloud container - allowed clients - only limit access in known use cases
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-20 19:37:54 +02:00
Simon L
e2b4283067 add note that integration app is not yet compatible
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-20 19:19:11 +02:00
Philipp Fruck
41a4ea7d92 chore: Add more examples to compose.yaml
Signed-off-by: Philipp Fruck <dev@p-fruck.de>
2023-10-20 18:57:02 +02:00
Philipp Fruck
d9bbafdd69 docs(reverse-proxy): fix typos
Signed-off-by: Philipp Fruck <dev@p-fruck.de>
2023-10-20 18:57:02 +02:00
Simon L
13966948b0 Merge pull request #3565 from nextcloud/enh/3432/add-libretranslate 2023-10-20 17:28:01 +02:00
Simon L
97f66da219 community containers - add libretranslate
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-20 17:24:53 +02:00
Simon L
461ccb0b3e Merge pull request #3572 from nextcloud/dependabot/docker/Containers/apache/httpd-2.4.58-alpine3.18 2023-10-20 15:51:11 +02:00
dependabot[bot]
8e9eb59d12 Bump httpd in /Containers/apache
Bumps httpd from 2.4.57-alpine3.18 to 2.4.58-alpine3.18.

---
updated-dependencies:
- dependency-name: httpd
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-20 13:04:15 +00:00
Simon L
51132831e8 Merge pull request #3571 from nextcloud/dependabot/github_actions/peter-evans/create-or-update-comment-3.1.0
Bump peter-evans/create-or-update-comment from 3.0.2 to 3.1.0
2023-10-20 14:36:15 +02:00
dependabot[bot]
2bb5e84d83 Bump peter-evans/create-or-update-comment from 3.0.2 to 3.1.0
Bumps [peter-evans/create-or-update-comment](https://github.com/peter-evans/create-or-update-comment) from 3.0.2 to 3.1.0.
- [Release notes](https://github.com/peter-evans/create-or-update-comment/releases)
- [Commits](c6c9a1a660...23ff15729e)

---
updated-dependencies:
- dependency-name: peter-evans/create-or-update-comment
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-20 12:29:03 +00:00
Simon L
ab044fda96 Merge pull request #3567 from nextcloud/fix/3566/fix-haproxy 2023-10-20 13:50:24 +02:00
Simon L
b0eabb8235 Merge pull request #3568 from nextcloud/enh/noid/add-hint 2023-10-20 13:49:53 +02:00
Simon L
36acb8e4e6 add maxconn value to haproxy
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-20 13:40:58 +02:00
Simon L
1f68615c8d add hint regarding restore process and backup location
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-20 13:14:17 +02:00
Simon L
b5577a2909 add further hint what borg is able to do
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-20 13:07:33 +02:00
Simon L
499dccb122 add section about existing ideas for new community containers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-19 23:20:00 +02:00
Simon L
9a16b7ea53 add hint regarding community containers to the AIO interface
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-19 23:08:14 +02:00
Simon L
3e4f946ab9 adjust link to community containers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-19 23:02:10 +02:00
Simon L
22392b0a94 add links to ldap and mailserver
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-19 20:33:14 +02:00
Simon L
4456e5380f add another hint
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-19 16:50:20 +02:00
Simon L
3210ad06f2 adjust detail
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-19 16:47:25 +02:00
Simon L
bdf676af84 add notice regarding https
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-19 16:42:58 +02:00
Simon L
378ec28f76 Merge pull request #3564 from nextcloud/dependabot/docker/Containers/redis/redis-7.2.2-alpine 2023-10-19 15:23:37 +02:00
dependabot[bot]
b08b1857c8 Bump redis from 7.2.1-alpine to 7.2.2-alpine in /Containers/redis
Bumps redis from 7.2.1-alpine to 7.2.2-alpine.

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 13:03:17 +00:00
Simon L
f2b075ac64 improve detail
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 23:58:47 +02:00
Simon L
5f93ce7f78 update OO
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 23:54:19 +02:00
Simon L
b82b244e1f Merge pull request #3556 from nextcloud/enh/noid/improve-local-ai 2023-10-18 23:51:53 +02:00
Simon L
2f82c168e5 local-ai - actually do not back up downloaded models
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 19:09:04 +02:00
Simon L
d75a53b620 add warning to local-ai
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 18:54:33 +02:00
Simon L
609c61ad65 fix typo and also install assistant app when installing local-ai
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 18:39:21 +02:00
Simon L
53bbf99f37 Merge pull request #3555 from nextcloud/enh/noid/rework-local-ai 2023-10-18 18:23:16 +02:00
Simon L
4df370589d rework local-ai to download models automatically
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 18:17:26 +02:00
Simon L
0521605c33 adjust local ai docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 16:05:59 +02:00
Simon L
0feaa9d527 local-ai - use correct directory where models are stored
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 15:27:37 +02:00
Simon L
caeff27bf5 fix backup notification setting
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 14:22:29 +02:00
Simon L
706604539f increase to 7.5.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 14:00:22 +02:00
Simon L
9ac528423e Merge pull request #3516 from nextcloud/enh/3485/disable-successful-backup-notifications 2023-10-18 13:59:11 +02:00
Simon L
1daacdfa99 Merge pull request #3515 from nextcloud/enh/3461/do-not-expose-udp 2023-10-18 13:57:05 +02:00
Simon L
3f5854c4bb Merge pull request #3495 from nextcloud/enh/noid/add-local-ai 2023-10-18 13:36:12 +02:00
Simon L
cd7a87200b community containers - add local ai
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 12:56:08 +02:00
Simon L
f397392d9d update links to discussions for netdata and pgadmin
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-18 00:40:09 +02:00
Simon L
4705bfa992 Merge pull request #3533 from nextcloud/dependabot/docker/Containers/apache/caddy-2.7.5-alpine 2023-10-17 17:12:53 +02:00
Simon L
810236a05c Merge pull request #3532 from nextcloud/dependabot/docker/Containers/mastercontainer/caddy-2.7.5-alpine 2023-10-17 17:12:45 +02:00
Simon L
28b8be112f Merge pull request #3545 from nextcloud/enh/noid/fix-regex 2023-10-17 12:40:58 +02:00
Simon L
cea006c58f fix regex for additional backup dirs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-17 11:22:07 +02:00
Simon L
30c342d456 Merge pull request #3543 from nextcloud/dependabot/docker/Containers/talk/nats-2.10.3-scratch 2023-10-16 15:25:01 +02:00
Simon L
3f0c7490e0 Merge pull request #3542 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.2.0-9 2023-10-16 15:24:48 +02:00
Simon L
2280fb62d2 Merge pull request #3541 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-23.05.5.1.1 2023-10-16 15:24:31 +02:00
dependabot[bot]
388a79dfe9 Bump nats from 2.10.2-scratch to 2.10.3-scratch in /Containers/talk
Bumps nats from 2.10.2-scratch to 2.10.3-scratch.

---
updated-dependencies:
- dependency-name: nats
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 13:02:07 +00:00
dependabot[bot]
bfa74ad966 Bump clamav/clamav from 1.2.0-8 to 1.2.0-9 in /Containers/clamav
Bumps clamav/clamav from 1.2.0-8 to 1.2.0-9.

---
updated-dependencies:
- dependency-name: clamav/clamav
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 12:58:52 +00:00
dependabot[bot]
a8c25f7a6a Bump collabora/code in /Containers/collabora
Bumps collabora/code from 23.05.4.2.1 to 23.05.5.1.1.

---
updated-dependencies:
- dependency-name: collabora/code
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 12:53:49 +00:00
Simon L
eee6157f54 Merge pull request #3523 from nextcloud/smaller-talk 2023-10-16 10:43:33 +02:00
Simon L
b60c86c2b6 Merge pull request #3530 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.21.3-alpine3.18 2023-10-16 10:41:32 +02:00
Simon L
537dda95e7 Merge pull request #3521 from nextcloud/dependabot/docker/Containers/talk/nats-2.10.2-scratch 2023-10-16 10:41:18 +02:00
Zoey
a846b46fcd Add NPMplus as community-container (#3520)
Co-authored-by: Simon L <szaimen@e.mail.de>
2023-10-16 10:40:34 +02:00
Simon L
df9fa7edd3 Merge pull request #3522 from nextcloud/enh/noid/add-permanent-redirect 2023-10-16 10:39:57 +02:00
Simon L
03c7d0ba9a Merge pull request #3528 from MMuschner/patch-1 2023-10-16 10:39:22 +02:00
Simon L
25438f8513 Merge pull request #3539 from nextcloud/aio-helm-update 2023-10-16 10:19:40 +02:00
szaimen
8ebcdf22ca Helm Chart updates
Signed-off-by: GitHub <noreply@github.com>
2023-10-16 08:17:16 +00:00
Simon L
58d37d5d78 Merge pull request #3384 from nextcloud/aio-yaml-update 2023-10-16 10:12:25 +02:00
dependabot[bot]
cf1ae8fb1b Bump caddy from 2.7.4-alpine to 2.7.5-alpine in /Containers/apache
Bumps caddy from 2.7.4-alpine to 2.7.5-alpine.

---
updated-dependencies:
- dependency-name: caddy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-12 12:51:18 +00:00
dependabot[bot]
4950d1de68 Bump caddy in /Containers/mastercontainer
Bumps caddy from 2.7.4-alpine to 2.7.5-alpine.

---
updated-dependencies:
- dependency-name: caddy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-12 12:22:52 +00:00
dependabot[bot]
e1f7f04347 Bump golang in /Containers/imaginary
Bumps golang from 1.21.2-alpine3.18 to 1.21.3-alpine3.18.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-11 12:54:17 +00:00
szaimen
2ac76c80fd Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2023-10-11 12:13:15 +00:00
blu3acid
849febd414 Typo in containers.twig
Ln: 325 changed "internect" to "internet"

Signed-off-by: blu3acid <michael.muschner@mailbox.org>
2023-10-11 14:09:10 +02:00
Zoey
320cd9f436 reduce size of talk image
Signed-off-by: Zoey <zoey@z0ey.de>
2023-10-10 16:24:22 +02:00
Simon L
5d2275c806 add permanent redirect to port 80 in mastercontainer
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-10 16:03:40 +02:00
Simon L
92aae9dfd0 Merge pull request #3492 from MarvvanPal/3399-optimisations_of_the_installation_description 2023-10-10 15:30:37 +02:00
dependabot[bot]
f8aab5f828 Bump nats from 2.10.1-scratch to 2.10.2-scratch in /Containers/talk
Bumps nats from 2.10.1-scratch to 2.10.2-scratch.

---
updated-dependencies:
- dependency-name: nats
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-10 13:06:24 +00:00
Simon L
258f6683de daily backup - allow to disable succesful backup notifications
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-10 12:12:11 +02:00
Simon L
7d8f40c98d additional modifications
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-10 12:05:36 +02:00
Simon L
1a018d9ef2 adjust some more details
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-10 12:01:03 +02:00
Simon L
0edd0e1ed8 adjust some details in reverse proxy docs
Signed-off-by: Simon L <szaimen@e.mail.de>

Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-10-10 11:57:05 +02:00
Simon L
ef2fd3817f adjust wording in docker-rootles
Signed-off-by: Simon L <szaimen@e.mail.de>

Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-10-10 11:56:46 +02:00
Simon L
d6e61bc537 make some changes
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-10 11:55:45 +02:00
Simon L
b56555e92c do not expose udp if AIO is in reverse prox mode
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-09 16:38:18 +02:00
Simon L
5dcdb6268a increase to 7.4.1
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-09 15:58:11 +02:00
Simon L
9a83ac422a Merge pull request #3513 from nextcloud/fix/3491/fix-listen.allowed_clients 2023-10-09 15:55:02 +02:00
Simon L
c9dac9b84a Merge pull request #3490 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.21.2-alpine3.18 2023-10-09 15:54:49 +02:00
Simon L
05e778624d Merge pull request #3512 from nextcloud/dependabot/docker/Containers/notify-push/alpine-3.18.4 2023-10-09 15:54:32 +02:00
Simon L
965cc87323 Merge pull request #3511 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.2.0-8 2023-10-09 15:54:21 +02:00
Simon L
ed7cced146 fix listen.allowed_clients in nextcloud container
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-09 15:51:01 +02:00
dependabot[bot]
f36fae6550 Bump alpine from 3.18.2 to 3.18.4 in /Containers/notify-push
Bumps alpine from 3.18.2 to 3.18.4.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 12:49:46 +00:00
Simon L
5188f8026d add dependabot to notify-push
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-09 14:49:12 +02:00
dependabot[bot]
dae56914ff Bump clamav/clamav from 1.2.0-7 to 1.2.0-8 in /Containers/clamav
Bumps clamav/clamav from 1.2.0-7 to 1.2.0-8.

---
updated-dependencies:
- dependency-name: clamav/clamav
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 12:22:20 +00:00
Simon L
7336337c2e add another requirement
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-07 01:20:48 +02:00
Simon L
770ebba8e2 add additional requirement
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-06 21:37:02 +02:00
Simon L
6cb26872fb add additional requirement to new containers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-06 21:13:15 +02:00
Marvin von Papen
510bdb9aef simplify and deduplicate description
Running a proxy manager directly on the host or in a container leads to different adaption of the example configurations. The description for this is simplified and more structured now. Additional the steps are written once and referenced per example configuration.

Signed-off-by: Marvin von Papen <79196690+MarvvanPal@users.noreply.github.com>
2023-10-06 17:47:58 +02:00
dependabot[bot]
2d7014a143 Bump golang in /Containers/imaginary
Bumps golang from 1.21.1-alpine3.18 to 1.21.2-alpine3.18.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 12:56:11 +00:00
Marvin von Papen
29341e547c add path e.g. for /run/user/1000 variable
Signed-off-by: Marvin von Papen <79196690+MarvvanPal@users.noreply.github.com>
2023-10-06 13:00:28 +02:00
Simon L
7fd65f2117 get installed_version another time in order to bring it up-to-date after update
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-05 15:59:36 +02:00
Simon L
47852d4543 Merge pull request #3420 from nextcloud/nextcloud-container-update 2023-10-05 15:29:43 +02:00
szaimen
4378251cea nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2023-10-05 12:08:44 +00:00
Simon L
fd707d023b Merge pull request #3488 from nextcloud/allow-ping-app-api 2023-10-05 12:33:51 +02:00
Simon L
b1ed9aaf13 fix privileged regex?
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-05 12:21:30 +02:00
Andrey Borysenko
1dca919af8 allow _ping docker api to verify service accessible
Signed-off-by: Andrey Borysenko <andrey18106x@gmail.com>
2023-10-05 13:16:37 +03:00
Simon L
e15b184c0f Update advice regarding podman
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-10-05 10:02:18 +02:00
Simon L
71cfdb2ff2 improve docs for caddy on when the subdomain is required
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-04 23:12:19 +02:00
Simon L
6f80f6d70a Merge pull request #3469 from nextcloud/enh/noid/show-dsp
make docker-socket-proxy visible in AIO interface
2023-10-04 22:27:01 +02:00
Simon L
c4190e4560 add hint to create backup before adding any container
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-04 15:08:16 +02:00
Simon L
dd9c828095 Merge pull request #3482 from nextcloud/enh/noid/overwrite-values-during-dockeractionmanager 2023-10-04 14:07:16 +02:00
Simon L
f3411f0823 overwrite APACHE_PORT, TALK_PORT and APACHE_IP_BINDING only during dockeractionmanager
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-04 14:05:05 +02:00
Simon L
f2fee01201 Merge pull request #3481 from nextcloud/enh/noid/add-documentation-links 2023-10-04 13:42:47 +02:00
Simon L
bc7a25fa42 add documentation links correctly
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-04 13:40:19 +02:00
Simon L
083f0669e4 Merge pull request #3480 from nextcloud/revert-3416-enh/noid/use-caddy-for-self-signed-cert 2023-10-04 13:23:32 +02:00
Simon L
f8ab551ce6 Revert "mastercontainer - use Caddy for generating self-singed cert"
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-04 13:22:04 +02:00
Simon L
b9407dbc2d whe need shadow later
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-04 13:15:27 +02:00
Simon L
a1e5a0691b Merge pull request #3479 from nextcloud/enh/noid/revert-dbpersistent 2023-10-03 23:22:45 +02:00
Simon L
e1168f9c48 Revert dbpersistent setting to check if it fixes too many db connections
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-03 23:21:00 +02:00
Simon L
7f1adc36ae Merge pull request #3478 from nextcloud/enh/3432/add-documentation 2023-10-03 20:45:41 +02:00
Simon L
c1c96ee08a allow to add documentation on containers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-03 20:33:44 +02:00
Simon L
ec6448fe5f Merge pull request #3475 from nextcloud/dependabot/docker/Containers/talk-recording/python-3.12.0-alpine3.18
Bump python from 3.11.5-alpine3.18 to 3.12.0-alpine3.18 in /Containers/talk-recording
2023-10-03 15:33:21 +02:00
Simon L
faecee2bfe Merge pull request #3474 from nextcloud/dependabot/docker/Containers/watchtower/containrrr/watchtower-1.6.0
Bump containrrr/watchtower from 1.5.3 to 1.6.0 in /Containers/watchtower
2023-10-03 15:32:48 +02:00
dependabot[bot]
55001d9961 Bump python in /Containers/talk-recording
Bumps python from 3.11.5-alpine3.18 to 3.12.0-alpine3.18.

---
updated-dependencies:
- dependency-name: python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 12:37:20 +00:00
dependabot[bot]
4ba5407c01 Bump containrrr/watchtower from 1.5.3 to 1.6.0 in /Containers/watchtower
Bumps containrrr/watchtower from 1.5.3 to 1.6.0.

---
updated-dependencies:
- dependency-name: containrrr/watchtower
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 12:33:20 +00:00
Simon L
89e8aa3cc5 increase to 7.4.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-02 15:17:16 +02:00
Simon L
f8dc68aa0b Merge pull request #3467 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.2.0-7 2023-10-02 15:16:16 +02:00
Simon L
06f7f9341c Merge pull request #3470 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.1.24-fpm-alpine3.18 2023-10-02 15:15:42 +02:00
Simon L
dd31b13c31 Merge pull request #3471 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.2.11-fpm-alpine3.18 2023-10-02 15:15:31 +02:00
dependabot[bot]
49e14e4288 Bump php in /Containers/nextcloud
Bumps php from 8.1.23-fpm-alpine3.18 to 8.1.24-fpm-alpine3.18.

---
updated-dependencies:
- dependency-name: php
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 13:14:49 +00:00
dependabot[bot]
b883d123e6 Bump php in /Containers/mastercontainer
Bumps php from 8.2.10-fpm-alpine3.18 to 8.2.11-fpm-alpine3.18.

---
updated-dependencies:
- dependency-name: php
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 13:13:51 +00:00
Simon L
14266469c2 Merge pull request #3427 from nextcloud/enh/noid/adjust-limiting 2023-10-02 15:12:51 +02:00
Simon L
f32df189f7 Merge pull request #3460 from nextcloud/enh/3432/add-caddy 2023-10-02 15:11:57 +02:00
Simon L
3d1611f8ba community-containers - add caddy
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-02 15:10:08 +02:00
Simon L
c99f442c0c make docker-socket-proxy visible in AIO interface
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-02 15:05:56 +02:00
Simon L
88cae17035 Merge pull request #3459 from nextcloud/enh/noid/allow-to-set-aio-variables 2023-10-02 15:03:14 +02:00
Simon L
395380ea2b allow to set aio_variables from containers.json
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-02 15:01:51 +02:00
Simon L
49aca0d955 Merge pull request #3463 from nextcloud/enh/noid/fix-display-of-containers 2023-10-02 15:01:01 +02:00
dependabot[bot]
a176b74a61 Bump clamav/clamav from 1.2.0-6 to 1.2.0-7 in /Containers/clamav
Bumps clamav/clamav from 1.2.0-6 to 1.2.0-7.

---
updated-dependencies:
- dependency-name: clamav/clamav
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 12:54:17 +00:00
Simon L
5158081cfc only add container to apache container list if display_name is set
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-10-01 12:25:11 +02:00
Simon L
b651c013d4 fix failing schema validation
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-30 00:31:48 +02:00
Simon L
f82affdac6 adjust limiting the php-fpm port to specific containers again
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 19:15:51 +02:00
Simon L
949fd79bdf vaultwarden - add note which port is used
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 19:11:54 +02:00
Simon L
3075b393e4 add community-container links to other container docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 19:05:56 +02:00
Simon L
b0c859a080 Merge pull request #3416 from nextcloud/enh/noid/use-caddy-for-self-signed-cert
mastercontainer - use Caddy for generating self-singed cert
2023-09-29 18:16:34 +02:00
Simon L
211ef36cd7 add pi-hole and vaultwarden to the example list
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 17:29:24 +02:00
Simon L
1d9da52442 Merge pull request #3457 from nextcloud/apache-ipv6 2023-09-29 17:11:33 +02:00
Zoey
4705d947da apache ip binding - allow ipv6
Signed-off-by: Zoey <zoey@z0ey.de>
2023-09-29 17:08:41 +02:00
Simon L
6ffa0411ad Merge pull request #3454 from nextcloud/dependabot/docker/Containers/watchtower/alpine-3.18.4 2023-09-29 17:07:50 +02:00
Simon L
0f54507727 Merge pull request #3456 from nextcloud/enh/noid/add-pi-hole 2023-09-29 17:05:11 +02:00
Simon L
bbebaae89b community-containers - add pi-hole
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 16:52:51 +02:00
Simon L
369704564d Merge pull request #3455 from nextcloud/enh/noid/add-vaultwarden 2023-09-29 16:27:36 +02:00
Simon L
1fda79c9e7 community-containers - add vaultwarden
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 16:17:12 +02:00
dependabot[bot]
3202e20dd9 Bump alpine from 3.18.3 to 3.18.4 in /Containers/watchtower
Bumps alpine from 3.18.3 to 3.18.4.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-29 13:03:53 +00:00
Simon L
9d640fa9d6 add additional notes to plex
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 15:03:04 +02:00
Simon L
2dba82f3a2 Merge pull request #3453 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.18.4
Bump alpine from 3.18.3 to 3.18.4 in /Containers/domaincheck
2023-09-29 14:56:02 +02:00
dependabot[bot]
af292a1cff Bump alpine from 3.18.3 to 3.18.4 in /Containers/domaincheck
Bumps alpine from 3.18.3 to 3.18.4.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-29 12:51:18 +00:00
Simon L
60607d8982 Merge pull request #3452 from nextcloud/dependabot/docker/Containers/borgbackup/alpine-3.18.4
Bump alpine from 3.18.3 to 3.18.4 in /Containers/borgbackup
2023-09-29 14:43:15 +02:00
dependabot[bot]
e82ad51c9f Bump alpine from 3.18.3 to 3.18.4 in /Containers/borgbackup
Bumps alpine from 3.18.3 to 3.18.4.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-29 12:38:30 +00:00
Simon L
9c9f55eb49 Merge pull request #3451 from nextcloud/dependabot/docker/Containers/talk/alpine-3.18.4
Bump alpine from 3.18.2 to 3.18.4 in /Containers/talk
2023-09-29 14:22:28 +02:00
Simon L
72b69b6e25 Merge pull request #3450 from nextcloud/dependabot/docker/Containers/imaginary/alpine-3.18.4
Bump alpine from 3.18.3 to 3.18.4 in /Containers/imaginary
2023-09-29 14:21:59 +02:00
dependabot[bot]
e3d0841841 Bump alpine from 3.18.2 to 3.18.4 in /Containers/talk
Bumps alpine from 3.18.2 to 3.18.4.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-29 12:11:20 +00:00
dependabot[bot]
bdc5181ae5 Bump alpine from 3.18.3 to 3.18.4 in /Containers/imaginary
Bumps alpine from 3.18.3 to 3.18.4.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-29 12:11:09 +00:00
Simon L
726c7589b2 use and instead of or
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 12:11:47 +02:00
Simon L
5a4f027478 create a release.yml
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 11:53:11 +02:00
Simon L
bbb124ea6e Merge pull request #3445 from nextcloud/enh/3433/fix-hostport 2023-09-29 11:39:08 +02:00
Simon L
c1a7c085cf helm-chart - remove hostport from deployment
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-29 11:36:47 +02:00
Simon L
b9872f9c4a add community-containers also to included features
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-28 14:03:02 +02:00
Simon L
39e12a7af1 print red if community container was not found
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-28 14:01:28 +02:00
Simon L
c447a4defc some small improvements to docker-rootles and multiple-instances docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-28 12:24:07 +02:00
Simon L
25c41a1304 add nextcloud_aio_plex to backup volumes
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-28 11:51:53 +02:00
Simon L
a53f7b403b Merge pull request #3426 from nextcloud/enh/3395/eturnal 2023-09-28 11:38:57 +02:00
Simon L
22d85db738 Merge pull request #3439 from nextcloud/enh/noid/add-plex 2023-09-28 11:36:06 +02:00
Simon L
49ba11f559 community-containers - add plex
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-28 11:24:15 +02:00
Simon L
218d3d4280 Merge pull request #3436 from nextcloud/fix/3422/fix-chart 2023-09-28 10:59:37 +02:00
Simon L
b50a334cd0 fix helm chart
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-28 10:55:36 +02:00
Simon L
60ae0a4fd3 Merge pull request #3435 from nextcloud/enh/noid/improve-pattern 2023-09-28 01:07:59 +02:00
Simon L
d9ec367976 improve json-schema with pattern for image
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-28 01:05:44 +02:00
Simon L
810bfa1450 make text more verbose
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-28 00:52:29 +02:00
Simon L
5448662fdd add link also to requirements for new containers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-28 00:37:44 +02:00
Simon L
f8a855f491 Merge pull request #3431 from nextcloud/enh/1581/add-docs 2023-09-27 23:04:47 +02:00
Simon L
dc50106ac9 add docs on the community-containers feature
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 23:03:41 +02:00
Simon L
36baadc559 fix detail in $path for additional containers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 23:02:29 +02:00
Simon L
131dc62508 trust private ranges for port 8080
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 21:44:17 +02:00
Simon L
f5f8c836d2 mastercontainer - use Caddy for generating self-singed cert
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 21:44:17 +02:00
Simon L
eef371ec9a Merge pull request #3429 from nextcloud/enh/noid/limit-nextcloud 2023-09-27 21:34:59 +02:00
Simon L
2e928e43b3 Revert "nextcloud - limit access to php-fpm"
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 21:33:35 +02:00
Simon L
ebe4a9b44f add whitelist_peers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 21:28:44 +02:00
Simon L
4b134a5289 fix detail with listen.allowed_clients
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 21:10:56 +02:00
Simon L
10326e1911 add additional disadvantage to manual-install and helm-chart
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 20:58:12 +02:00
Simon L
71484bf631 clamav - fix detail
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 20:53:14 +02:00
Simon L
3104d6e2cc fix detail
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 20:52:21 +02:00
Simon L
9eeeee4e06 Merge pull request #3425 from nextcloud/enh/1581/final-steps 2023-09-27 20:36:41 +02:00
Simon L
ac890f046b merge containers.json and make sure they depend on the apache container
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 20:32:48 +02:00
Simon L
b276532f58 eturnal - set blacklist_peers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 20:26:51 +02:00
Simon L
538ee321a9 fail2ban - change to v1
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-09-27 18:46:25 +02:00
Simon L
6fb27e904f Merge pull request #3424 from nextcloud/enh/1581/AIO_COMMUNITY_CONTAINERS 2023-09-27 18:12:20 +02:00
Simon L
ea32a33fc6 fail2ban - change image_tag to 1.0.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 18:09:03 +02:00
Simon L
2a746863b9 allow to specify AIO_COMMUNITY_CONTAINERS
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 17:45:28 +02:00
Simon L
a823e1d3ce Merge pull request #3318 from nextcloud/enh/noid/limit-nextcloud-to-few 2023-09-27 17:35:32 +02:00
Simon L
dbb0833717 address review
Signed-off-by: Simon L <szaimen@e.mail.de>

Co-authored-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-09-27 17:03:04 +02:00
Simon L
598faf7eef Merge pull request #2637 from nextcloud/enh/1581/add-example-containers 2023-09-27 16:45:56 +02:00
Simon L
7661b9fb3a address review
Signed-off-by: Simon L <szaimen@e.mail.de>

Co-authored-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-09-27 16:40:18 +02:00
Simon L
ca3466759f add community-container validator
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 16:35:01 +02:00
Simon L
bae5acf47b Merge pull request #3421 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.2.0-6
Bump clamav/clamav from 1.2.0-1 to 1.2.0-6 in /Containers/clamav
2023-09-27 16:09:24 +02:00
dependabot[bot]
bbda78001d Bump clamav/clamav from 1.2.0-1 to 1.2.0-6 in /Containers/clamav
Bumps clamav/clamav from 1.2.0-1 to 1.2.0-6.

---
updated-dependencies:
- dependency-name: clamav/clamav
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-27 12:50:48 +00:00
Simon L
f221ab7655 add fail2ban as example container for testing purposes
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 14:37:03 +02:00
Simon L
c320da2b0e Merge pull request #3314 from nextcloud/enh/1581/require-image-tag 2023-09-27 13:58:22 +02:00
Simon L
6e17dec951 require image_tag and add %AIO_CHANNEL% variable
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-27 13:57:00 +02:00
Simon L
8e4678fe82 Merge pull request #3377 from nextcloud/enh/noid/drop-net-raw 2023-09-27 13:06:38 +02:00
Simon L
3e25acce24 Merge pull request #3231 from nextcloud/enh/3225/hadolint
adjust docker-lint to use hadolint
2023-09-27 12:10:33 +02:00
Simon L
ad81f52991 Merge pull request #3414 from nextcloud/enh/noid/adjust-kompose
adjust kompose script to automatically get latest version
2023-09-27 11:06:32 +02:00
Simon L
1ff0328039 Merge pull request #3417 from nextcloud/enh/noid/remove-json-validator
remove justinrainbow/json-schema again
2023-09-27 11:05:42 +02:00
Simon L
a1abd8e540 Merge pull request #3401 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.10.2
Bump elasticsearch from 8.10.1 to 8.10.2 in /Containers/fulltextsearch
2023-09-27 11:05:01 +02:00
Simon L
142c605401 Merge pull request #3398 from nextcloud/enh/3389/improve-notify-push
add warning to notify-push if binary was not found
2023-09-27 11:04:40 +02:00
Simon L
4bc426d3df Merge pull request #3400 from nextcloud/talk-container-update
talk update
2023-09-27 11:04:08 +02:00
Simon L
57ac3ff788 Merge pull request #3393 from nextcloud/dependabot/docker/Containers/talk/nats-2.10.1-scratch
Bump nats from 2.10.0-scratch to 2.10.1-scratch in /Containers/talk
2023-09-27 11:03:29 +02:00
Simon L
f84589778b Merge pull request #3392 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-23.05.4.2.1
Bump collabora/code from 23.05.4.1.1 to 23.05.4.2.1 in /Containers/collabora
2023-09-27 11:03:04 +02:00
Simon L
8687476799 Merge pull request #3404 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2023-09-27 11:02:41 +02:00
Simon L
f59707b065 Downgrade to 27.1.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-09-27 11:00:50 +02:00
Simon L
dbdefe273f remove justinrainbow/json-schema again
Signed-off-by: Simon L <szaimen@e.mail.de>
Co-Authored-By: szaimen <szaimen@users.noreply.github.com>
2023-09-26 16:00:18 +02:00
Simon L
0b1ac3422f adjust docker-lint to use hadolint
Signed-off-by: Simon L <szaimen@e.mail.de>
Co-Authored-By: Zoey <zoey@z0ey.de>
2023-09-26 15:06:39 +02:00
Simon L
f97644e029 adjust kompose script to automatically get latest version
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-26 15:03:09 +02:00
Simon L
6790114955 add warning to notify-push if binary was not found
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-25 10:44:16 +02:00
szaimen
896565c63c nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2023-09-23 12:06:47 +00:00
dependabot[bot]
915647db1f Bump elasticsearch from 8.10.1 to 8.10.2 in /Containers/fulltextsearch
Bumps elasticsearch from 8.10.1 to 8.10.2.

---
updated-dependencies:
- dependency-name: elasticsearch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-22 12:22:58 +00:00
szaimen
63659491e9 talk-update automated change
Signed-off-by: GitHub <noreply@github.com>
2023-09-22 12:03:16 +00:00
dependabot[bot]
bef5945cd7 Bump nats from 2.10.0-scratch to 2.10.1-scratch in /Containers/talk
Bumps nats from 2.10.0-scratch to 2.10.1-scratch.

---
updated-dependencies:
- dependency-name: nats
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-21 12:52:36 +00:00
dependabot[bot]
cc82cd2921 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 23.05.4.1.1 to 23.05.4.2.1.

---
updated-dependencies:
- dependency-name: collabora/code
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-21 12:35:32 +00:00
Simon L
bcced0b176 drop NET_RAW from all containers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-20 15:14:15 +02:00
Simon L
be55bbe7c1 nextcloud - limit access to php-fpm
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-09-19 18:50:51 +02:00
101 changed files with 1074 additions and 513 deletions

View File

@@ -165,6 +165,15 @@ updates:
labels:
- 3. to review
- dependencies
- package-ecosystem: "docker"
directory: "/Containers/notify-push"
schedule:
interval: "daily"
time: "12:00"
open-pull-requests-limit: 10
labels:
- 3. to review
- dependencies
- package-ecosystem: "docker"
directory: "/Containers/docker-socket-proxy"
schedule:

14
.github/release.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
changelog:
categories:
- title: 🏕 New features and other improvements
labels:
- enhancement
- title: 🐞 Fixed bugs
labels:
- bug
- title: 👒 Updated dependencies
labels:
- dependencies
- title: 📄 Improved documentation
labels:
- documentation

View File

@@ -23,7 +23,7 @@ jobs:
steps:
- name: Add reaction on start
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
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@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
if: failure()
with:
token: ${{ secrets.COMMAND_BOT_PAT }}

View File

@@ -0,0 +1,37 @@
name: Validate community containers
on:
pull_request:
paths:
- 'community-containers/**'
push:
branches:
- main
paths:
- 'community-containers/**'
jobs:
validator-community-containers:
name: Validate community containers
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Validate structure
run: |
CONTAINERS="$(find ./community-containers -mindepth 1 -maxdepth 1 -type d)"
mapfile -t CONTAINERS <<< "$CONTAINERS"
for container in "${CONTAINERS[@]}"; do
container="$(echo "$container" | sed 's|./community-containers/||')"
if ! [ -f ./community-containers/"$container"/"$container.json" ]; then
echo ".json file must be named like its parent folder $container"
FAIL=1
fi
if ! [ -f ./community-containers/"$container"/readme.md ]; then
echo "There must be a readme.md file in the folder!"
FAIL=1
fi
if [ -n "$FAIL" ]; then
exit 1
fi
done

View File

@@ -27,28 +27,20 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Install npm and dockerfilelint
- name: Install hadolint
run: |
sudo apt-get update
sudo apt-get install nodejs npm -y --no-install-recommends
npm install -g dockerfilelint
wget https://github.com/replicatedhq/dockerfilelint/pull/201.patch -O /usr/local/lib/node_modules/dockerfilelint/201.patch
CURRENT_DIR=$PWD
cd /usr/local/lib/node_modules/dockerfilelint/
git apply 201.patch
cd $CURRENT_DIR
cat << RULES > ./.dockerfilelintrc
rules:
sudo_usage: off
RULES
sudo wget https://github.com/hadolint/hadolint/releases/latest/download/hadolint-Linux-x86_64 -O /usr/bin/hadolint
sudo chmod +x /usr/bin/hadolint
- name: run lint
run: |
DOCKERFILES="$(find ./Containers -name Dockerfile)"
mapfile -t DOCKERFILES <<< "$DOCKERFILES"
for file in "${DOCKERFILES[@]}"; do
dockerfilelint "$file" --config ./ | tee -a ./dockerfilelint.log
# DL3018 warning: Pin versions in apk add. Instead of `apk add <package>` use `apk add <package>=<version>`
# DL4006 warning: Set the SHELL option -o pipefail before RUN with a pipe in it. If you are using /bin/sh in an alpine image or if your shell is symlinked to busybox then consider explicitly setting your SHELL to /bin/ash, or disable this check
hadolint "$file" --ignore DL3018 --ignore DL4006 | tee -a ./hadolint.log
done
if grep "^Issues: [0-9]" ./dockerfilelint.log; then
if grep -q "DL[0-9]\+\|SC[0-9]\+" ./hadolint.log; then
exit 1
fi

View File

@@ -22,4 +22,14 @@ jobs:
sudo apt-get update
sudo apt-get install python3-pip -y --no-install-recommends
sudo pip3 install json-spec
json validate --schema-file=php/containers-schema.json --document-file=php/containers.json
if ! json validate --schema-file=php/containers-schema.json --document-file=php/containers.json; then
exit 1
fi
JSON_FILES="$(find ./community-containers -name '*.json')"
mapfile -t JSON_FILES <<< "$JSON_FILES"
for file in "${JSON_FILES[@]}"; do
json validate --schema-file=php/containers-schema.json --document-file="$file" 2>&1 | tee -a ./json-validator.log
done
if grep -q "document does not validate with schema." ./json-validator.log; then
exit 1
fi

View File

@@ -1,6 +1,6 @@
FROM caddy:2.7.4-alpine as caddy
FROM caddy:2.7.5-alpine as caddy
FROM httpd:2.4.57-alpine3.18
FROM httpd:2.4.58-alpine3.18
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy

View File

@@ -1,4 +1,4 @@
FROM alpine:3.18.3
FROM alpine:3.18.4
RUN set -ex; \
\
@@ -16,6 +16,7 @@ VOLUME /root
COPY --chmod=770 *.sh /
ENTRYPOINT ["/start.sh"]
# hadolint ignore=DL3002
USER root
LABEL com.centurylinklabs.watchtower.enable="false"

View File

@@ -1,11 +1,11 @@
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/1.1/alpine/Dockerfile
FROM clamav/clamav:1.2.0-1
FROM clamav/clamav:1.2.0-9
COPY clamav.conf /tmp/clamav.conf
RUN set -ex; \
apk add --no-cache tzdata; \
cat /tmp/clamav.conf | tee -a /etc/clamav/clamd.conf; \
cat /tmp/clamav.conf >> /etc/clamav/clamd.conf; \
rm /tmp/clamav.conf; \
mkdir -p /var/run/clamav /run/lock; \
chown -R clamav:clamav /var/run/clamav /run/clamav /var/log/clamav /var/lock /run/lock; \

View File

@@ -1,8 +1,9 @@
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
FROM collabora/code:23.05.4.1.1
FROM collabora/code:23.05.5.1.1
USER root
# hadolint ignore=DL3008
RUN set -ex; \
\
apt-get update; \

View File

@@ -1,5 +1,6 @@
FROM haproxy:2.8.3-alpine3.18
# hadolint ignore=DL3002
USER root
ENV NEXTCLOUD_HOST nextcloud-aio-nextcloud
RUN set -ex; \

View File

@@ -1,5 +1,8 @@
# Inspiration: https://github.com/Tecnativa/docker-socket-proxy/blob/master/haproxy.cfg
global
maxconn 10
defaults
timeout connect 10s
timeout client 10s
@@ -9,6 +12,8 @@ frontend http
mode http
bind :::2375 v4v6
http-request deny unless { src 127.0.0.1 } || { src ::1 } || { src NC_IPV4_PLACEHOLDER } || { src NC_IPV6_PLACEHOLDER }
# docker system _ping
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/_ping } METH_GET
# container inspect: GET containers/%s/json
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/nc_app_[a-zA-Z0-9_.-]+/json } METH_GET
# container start/stop: POST containers/%s/start containers/%s/stop
@@ -30,7 +35,7 @@ frontend http
http-request deny if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/create } nc_app_container_name !one_mount_volume binds_present type_not_volume METH_POST
# ACL to restrict container creation, that it has HostConfig.Privileged not set
acl no_privileged_flag req.body -m reg -i "\"HostConfig\":\s?{[^}]*\"Privileged\"\s*:"
acl no_privileged_flag req.body -m reg -i "\"HostConfig\":\s?{[^}]*\"Privileged\""
# ACL to allow mount volume with strict pattern for name: nc_app_[a-zA-Z0-9_.-]+_data
acl nc_app_volume_data_only req.body -m reg -i "\"Mounts\":\s?\[\s?{[^}]*\"Source\":\s?\"nc_app_[a-zA-Z0-9_.-]+_data\""
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/create } nc_app_container_name !no_privileged_flag nc_app_volume_data_only METH_POST

View File

@@ -1,4 +1,4 @@
#!/bin/bash
nc -z "$NEXTCLOUD_HOST" 9000 || exit 0
nc -z "$NEXTCLOUD_HOST" 9001 || exit 0
nc -z localhost 2375 || exit 1

View File

@@ -1,7 +1,7 @@
#!/bin/sh
# Only start container if nextcloud is accessible
while ! nc -z "$NEXTCLOUD_HOST" 9000; do
while ! nc -z "$NEXTCLOUD_HOST" 9001; do
echo "Waiting for Nextcloud to start..."
sleep 5
done

View File

@@ -1,4 +1,4 @@
FROM alpine:3.18.3
FROM alpine:3.18.4
RUN set -ex; \
apk add --no-cache bash lighttpd netcat-openbsd; \
adduser -S www-data -G www-data; \

View File

@@ -1,8 +1,9 @@
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
FROM elasticsearch:8.10.1
FROM elasticsearch:8.10.2
USER root
# hadolint ignore=DL3008
RUN set -ex; \
\
export DEBIAN_FRONTEND=noninteractive; \

View File

@@ -1,4 +1,4 @@
FROM golang:1.21.1-alpine3.18 as go
FROM golang:1.21.3-alpine3.18 as go
ENV IMAGINARY_HASH b632dae8cc321452c3f85bcae79c580b1ae1ed84
@@ -12,7 +12,7 @@ RUN set -ex; \
build-base; \
go install github.com/h2non/imaginary@"$IMAGINARY_HASH";
FROM alpine:3.18.3
FROM alpine:3.18.4
RUN set -ex; \
apk add --no-cache \
tzdata \

View File

@@ -21,7 +21,7 @@
}
http://:80 {
redir https://{host}{uri}
redir https://{host}{uri} permanent
}
https://:8443 {

View File

@@ -2,10 +2,10 @@
FROM docker:24.0.6-cli as docker
# Caddy is a requirement
FROM caddy:2.7.4-alpine as caddy
FROM caddy:2.7.5-alpine as caddy
# From https://github.com/docker-library/php/blob/master/8.2/alpine3.18/fpm/Dockerfile
FROM php:8.2.10-fpm-alpine3.18
FROM php:8.2.11-fpm-alpine3.18
EXPOSE 80
EXPOSE 8080
@@ -16,6 +16,7 @@ COPY --from=docker /usr/local/bin/docker /usr/local/bin/docker
WORKDIR /var/www/docker-aio
# hadolint ignore=SC2086,DL3047,DL3003,DL3004
RUN set -ex; \
apk add --no-cache shadow; \
groupmod -g 333 xfs; \
@@ -50,7 +51,7 @@ RUN set -ex; \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --virtual .nextcloud-aio-rundeps $runDeps; \
apk add --no-cache --virtual .nextcloud-aio-rundeps $runDeps; \
apk del .build-deps; \
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; \
@@ -64,7 +65,7 @@ RUN set -ex; \
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 ./ -maxdepth 1 -mindepth 1 -not -path ./php -exec rm -r {} \; ; \
find ./ -maxdepth 1 -mindepth 1 -not -path ./php -not -path ./community-containers -exec rm -r {} \; ; \
chown www-data:www-data -R /var/www/docker-aio; \
cd php; \
sudo -u www-data composer install --no-dev; \
@@ -120,6 +121,7 @@ COPY --chmod=664 Caddyfile /Caddyfile
COPY --chmod=664 supervisord.conf /supervisord.conf
COPY mastercontainer.conf /etc/apache2/sites-available/mastercontainer.conf
# hadolint ignore=DL3002
USER root
ENTRYPOINT ["/start.sh"]

View File

@@ -12,6 +12,11 @@ while true; do
export AUTOMATIC_UPDATES=0
export START_CONTAINERS=1
fi
if [ "$(sed -n '3p' "/mnt/docker-aio-config/data/daily_backup_time")" != 'successNotificationsAreNotEnabled' ]; then
export SEND_SUCCESS_NOTIFICATIONS=1
else
export SEND_SUCCESS_NOTIFICATIONS=0
fi
set +x
if [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
export LOCK_FILE_PRESENT=1

View File

@@ -105,7 +105,7 @@ if [ "$DAILY_BACKUP" = 1 ] && ([ "$AUTOMATIC_UPDATES" = 1 ] || [ "$START_CONTAIN
done
fi
echo "Sending backup notification..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/BackupNotification.php
sudo -E -u www-data php /var/www/docker-aio/php/src/Cron/BackupNotification.php
fi
echo "Daily backup script has finished"

View File

@@ -179,7 +179,7 @@ It is set to '$APACHE_PORT'."
fi
fi
if [ -n "$APACHE_IP_BINDING" ]; then
if ! echo "$APACHE_IP_BINDING" | grep -q '^[0-9.]\+$'; then
if ! echo "$APACHE_IP_BINDING" | grep -q '^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$\|^[0-9a-f:]\+$'; then
print_red "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
@@ -241,6 +241,20 @@ It is set to '$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS'."
exit 1
fi
fi
if [ -n "$AIO_COMMUNITY_CONTAINERS" ]; then
read -ra AIO_CCONTAINERS <<< "$AIO_COMMUNITY_CONTAINERS"
for container in "${AIO_CCONTAINERS[@]}"; do
if ! [ -d "/var/www/docker-aio/community-containers/$container" ]; then
print_red "The community container $container was not found!"
FAIL_CCONTAINERS=1
fi
done
if [ -n "$FAIL_CCONTAINERS" ]; then
print_red "You've set AIO_COMMUNITY_CONTAINERS but at least one container was not found.
It is set to '$AIO_COMMUNITY_CONTAINERS'."
exit 1
fi
fi
# Check DNS resolution
# Prevents issues like https://github.com/nextcloud/all-in-one/discussions/565

View File

@@ -1,9 +1,9 @@
FROM php:8.1.23-fpm-alpine3.18
FROM php:8.1.24-fpm-alpine3.18
ENV PHP_MEMORY_LIMIT 512M
ENV PHP_UPLOAD_LIMIT 10G
ENV PHP_MAX_TIME 3600
ENV NEXTCLOUD_VERSION 27.1.1
ENV NEXTCLOUD_VERSION 27.1.3
ENV AIO_TOKEN 123456
ENV AIO_URL localhost
@@ -16,6 +16,7 @@ VOLUME /mnt/ncdata
VOLUME /var/www/html
# Custom: change id of www-data user as it needs to be the same like on old installations
# hadolint ignore=SC2086,DL3003
RUN set -ex; \
apk add --no-cache shadow; \
deluser www-data; \
@@ -69,7 +70,7 @@ RUN set -ex; \
# pecl will claim success even if one install fails, so we need to perform each install separately
pecl install APCu-5.1.22; \
pecl install memcached-3.2.0; \
pecl install redis-6.0.0; \
pecl install redis-6.0.1; \
pecl install imagick-3.7.0; \
\
docker-php-ext-enable \
@@ -85,7 +86,7 @@ RUN set -ex; \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --virtual .nextcloud-phpext-rundeps $runDeps; \
apk add --no-cache --virtual .nextcloud-phpext-rundeps $runDeps; \
apk del .build-deps; \
\
# set recommended PHP.ini settings
@@ -170,7 +171,7 @@ RUN set -ex; \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --virtual .nextcloud-phpext-rundeps $runDeps; \
apk add --no-cache --virtual .nextcloud-phpext-rundeps $runDeps; \
apk del .build-deps; \
\
mkdir -p \
@@ -189,6 +190,7 @@ RUN set -ex; \
sudo \
grep \
nodejs \
bind-tools \
coreutils; \
\
grep -q '^pm = dynamic' /usr/local/etc/php-fpm.d/www.conf; \
@@ -219,6 +221,7 @@ RUN set -ex; \
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd
# hadolint ignore=DL3002
USER root
ENTRYPOINT ["/start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]

View File

@@ -365,6 +365,9 @@ DATADIR_PERMISSION_CONF
exit 1
fi
# shellcheck disable=SC2016
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
rm "$NEXTCLOUD_DATA_DIR/update.failed"
bash /notify.sh "Nextcloud update to $image_version successful!" "Feel free to inspect the Nextcloud container logs for more info."
@@ -484,8 +487,8 @@ php /var/www/html/occ config:system:set overwrite.cli.url --value="https://$NC_D
php /var/www/html/occ config:system:set htaccess.RewriteBase --value="/"
php /var/www/html/occ maintenance:update:htaccess
# Apply dbpersistent setting in order to fix too many db connections
php /var/www/html/occ config:system:set dbpersistent --value=true --type=bool
# Revert dbpersistent setting to check if it fixes too many db connections
php /var/www/html/occ config:system:set dbpersistent --value=false --type=bool
# Disallow creating local external storages when nothing was mounted
if [ -z "$NEXTCLOUD_MOUNT" ]; then
@@ -524,11 +527,8 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
# Fix https://github.com/nextcloud/all-in-one/issues/188:
php /var/www/html/occ config:system:set allow_local_remote_servers --type=bool --value=true
# Make collabora more save
COLLABORA_IPv4_ADDRESS="$(echo "<?php echo gethostbyname('$NC_DOMAIN');" | php | head -1)"
COLLABORA_IPv6_ADDRESS="<?php \$record = dns_get_record('$NC_DOMAIN', DNS_AAAA);"
# shellcheck disable=SC2016
COLLABORA_IPv6_ADDRESS+='if (!empty($record)) {echo $record[0]["ipv6"];}'
COLLABORA_IPv6_ADDRESS="$(echo "$COLLABORA_IPv6_ADDRESS" | php | head -1)"
COLLABORA_IPv4_ADDRESS="$(dig "$NC_DOMAIN" A +short | grep '^[0-9.]\+$' | sort | head -n1)"
COLLABORA_IPv6_ADDRESS="$(dig "$NC_DOMAIN" AAAA +short | grep '^[0-9a-f:]\+$' | sort | head -n1)"
COLLABORA_ALLOW_LIST="$(php /var/www/html/occ config:app:get richdocuments wopi_allowlist)"
if [ -n "$COLLABORA_IPv4_ADDRESS" ]; then
if ! echo "$COLLABORA_ALLOW_LIST" | grep -q "$COLLABORA_IPv4_ADDRESS"; then
@@ -737,7 +737,7 @@ else
fi
# Docker socket proxy
if version_greater "$installed_version" "27.1.0.0"; then
if version_greater "$installed_version" "27.1.2.0"; then
if [ "$DOCKER_SOCKET_PROXY_ENABLED" = 'yes' ]; then
if ! [ -d "/var/www/html/custom_apps/app_api" ]; then
php /var/www/html/occ app:install app_api

View File

@@ -119,7 +119,7 @@ if [ -n "$ADDITIONAL_PHP_EXTENSIONS" ]; then
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)";
# shellcheck disable=SC2086
apk add --virtual .nextcloud-phpext-rundeps $runDeps >/dev/null
apk add --no-cache --virtual .nextcloud-phpext-rundeps $runDeps >/dev/null
apk del .build-deps >/dev/null
fi
fi
@@ -131,4 +131,24 @@ if ! sudo -E -u www-data bash /entrypoint.sh; then
exit 1
fi
exec "$@"
while [ -z "$(dig nextcloud-aio-apache A +short)" ]; do
echo "Waiting for nextcloud-aio-apache to start..."
sleep 5
done
set -x
if [ "$APACHE_PORT" = 443 ] || [ "$APACHE_IP_BINDING" = "127.0.0.1" ] || [ "$APACHE_IP_BINDING" = "::1" ]; then
IPv4_ADDRESS_APACHE="$(dig nextcloud-aio-apache A +short | grep '^[0-9.]\+$' | sort | head -n1)"
IPv6_ADDRESS_APACHE="$(dig nextcloud-aio-apache AAAA +short | grep '^[0-9a-f:]\+$' | sort | head -n1)"
IPv4_ADDRESS_MASTERCONTAINER="$(dig nextcloud-aio-mastercontainer A +short | grep '^[0-9.]\+$' | sort | head -n1)"
IPv6_ADDRESS_MASTERCONTAINER="$(dig nextcloud-aio-mastercontainer AAAA +short | grep '^[0-9a-f:]\+$' | sort | head -n1)"
sed -i "s|^;listen.allowed_clients|listen.allowed_clients|" /usr/local/etc/php-fpm.d/www.conf
sed -i "s|listen.allowed_clients.*|listen.allowed_clients = 127.0.0.1,::1,$IPv4_ADDRESS_APACHE,$IPv6_ADDRESS_APACHE,$IPv4_ADDRESS_MASTERCONTAINER,$IPv6_ADDRESS_MASTERCONTAINER|" /usr/local/etc/php-fpm.d/www.conf
sed -i "/^listen.allowed_clients/s/,,/,/g" /usr/local/etc/php-fpm.d/www.conf
sed -i "/^listen.allowed_clients/s/,$//" /usr/local/etc/php-fpm.d/www.conf
grep listen.allowed_clients /usr/local/etc/php-fpm.d/www.conf
fi
set +x
exec "$@"

View File

@@ -32,3 +32,12 @@ stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/run-exec-commands.sh
user=www-data
# This is a hack but no better solution is there
[program:is-nextcloud-online]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=nc -lk 9001
user=www-data

View File

@@ -1,4 +1,4 @@
FROM alpine:3.18.2
FROM alpine:3.18.4
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh

View File

@@ -1,6 +1,6 @@
#!/bin/bash
if ! nc -z "$NEXTCLOUD_HOST" 9000; then
if ! nc -z "$NEXTCLOUD_HOST" 9001; then
exit 0
fi

View File

@@ -12,7 +12,7 @@ elif [ -z "$REDIS_HOST" ]; then
fi
# Only start container if nextcloud is accessible
while ! nc -z "$NEXTCLOUD_HOST" 9000; do
while ! nc -z "$NEXTCLOUD_HOST" 9001; do
echo "Waiting for Nextcloud to start..."
sleep 5
done
@@ -27,6 +27,21 @@ elif [ "$CPU_ARCH" != "x86_64" ]; then
export CPU_ARCH="aarch64"
fi
# Add warning
if ! [ -f /nextcloud/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; then
echo "The notify_push binary was not found."
echo "Most likely is DNS resolution not working correctly."
echo "You can try to fix this by configuring a DNS server globally in dockers daemon.json."
echo "See https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html"
echo "Afterwards a restart of docker should automatically resolve this."
echo "Additionally, make sure to disable VPN software that might be running on your server"
echo "Also check your firewall if it blocks connections to github"
echo "If it should still not work afterwards, feel free to create a new thread at https://github.com/nextcloud/all-in-one/discussions/new?category=questions and post the Nextcloud container logs there."
echo ""
echo ""
exit 1
fi
# Set sensitive values as env
export DATABASE_URL="postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST/$POSTGRES_DB"
export REDIS_URL="redis://:$REDIS_HOST_PASSWORD@$REDIS_HOST"

View File

@@ -1,5 +1,5 @@
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
FROM onlyoffice/documentserver:7.4.1.1
FROM onlyoffice/documentserver:7.5.0.1
# USER root is probably used

View File

@@ -1,5 +1,5 @@
# From https://github.com/docker-library/redis/blob/master/7.0/alpine/Dockerfile
FROM redis:7.2.1-alpine
FROM redis:7.2.2-alpine
COPY --chmod=775 start.sh /start.sh

View File

@@ -1,8 +1,8 @@
FROM python:3.11.5-alpine3.18
FROM python:3.12.0-alpine3.18
COPY --chmod=775 start.sh /start.sh
ENV RECORDING_VERSION v17.1.0
ENV RECORDING_VERSION v17.1.1
ENV ALLOW_ALL false
ENV HPB_PROTOCOL https
ENV SKIP_VERIFY false
@@ -30,7 +30,7 @@ RUN set -ex; \
echo "root:$(openssl rand -base64 12)" | chpasswd; \
git clone --recursive https://github.com/nextcloud/spreed --depth=1 --single-branch --branch "$RECORDING_VERSION" /src; \
mv -v /src/recording/pyproject.toml /src/recording/src/pyproject.toml; \
python3 -m pip install /src/recording/src; \
python3 -m pip install --no-cache-dir /src/recording/src; \
rm -rf /src; \
touch /etc/recording.conf; \
chown recording:recording -R \

View File

@@ -1,7 +1,7 @@
FROM nats:2.10.0-scratch as nats
FROM eturnal/eturnal:1.11.1 AS eturnal
FROM nats:2.10.3-scratch as nats
FROM eturnal/eturnal:1.12.0 AS eturnal
FROM strukturag/nextcloud-spreed-signaling:1.1.3 as signaling
FROM alpine:3.18.3 as janus
FROM alpine:3.18.4 as janus
ARG JANUS_VERSION=v0.14.0
WORKDIR /src
@@ -33,12 +33,12 @@ RUN set -ex; \
make configs; \
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
FROM alpine:3.18.2
FROM alpine:3.18.4
ENV ETURNAL_ETC_DIR="/conf"
COPY --from=janus /usr/local /usr/local
COPY --from=eturnal /opt/eturnal /opt/eturnal
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 --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local
COPY --from=eturnal --chmod=777 --chown=1000:1000 /opt/eturnal /opt/eturnal
COPY --from=nats --chmod=777 --chown=1000:1000 /nats-server /usr/local/bin/nats-server
COPY --from=signaling --chmod=777 --chown=1000:1000 /usr/bin/nextcloud-spreed-signaling /usr/local/bin/nextcloud-spreed-signaling
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
@@ -66,7 +66,7 @@ RUN set -ex; \
libwebsockets \
\
shadow; \
useradd --system eturnal; \
useradd --system -u 1000 eturnal; \
apk del --no-cache \
shadow; \
\
@@ -85,15 +85,12 @@ RUN set -ex; \
/var/run/supervisord \
/usr/local/lib/janus/loggers; \
chown eturnal:eturnal -R \
/usr \
/opt/eturnal \
/etc/nats.conf \
/var/log/supervisord \
/var/run/supervisord; \
chmod 777 -R \
/tmp \
/conf \
/opt/eturnal \
/var/run/supervisord \
/var/log/supervisord; \
ln -s /opt/eturnal/bin/stun /usr/local/bin/stun; \

View File

@@ -38,9 +38,9 @@ eturnal:
secret: "$TURN_SECRET"
relay_ipv4_addr: "$IPv4_ADDRESS_TALK"
relay_ipv6_addr: "$IPv6_ADDRESS_TALK"
blacklist:
blacklist_peers:
- recommended
whitelist:
whitelist_peers:
- 127.0.0.1
- ::1
- "$IPv4_ADDRESS_TALK"

View File

@@ -1,13 +1,14 @@
# From https://github.com/containrrr/watchtower/blob/main/dockerfiles/Dockerfile.self-contained
FROM containrrr/watchtower:1.5.3 as watchtower
FROM containrrr/watchtower:1.6.0 as watchtower
FROM alpine:3.18.3
FROM alpine:3.18.4
RUN apk add --no-cache bash
COPY --from=watchtower /watchtower /watchtower
COPY --chmod=775 start.sh /start.sh
# hadolint ignore=DL3002
USER root
ENTRYPOINT ["/start.sh"]

View File

@@ -0,0 +1,52 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-caddy",
"display_name": "Caddy with geoblocking",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy",
"image": "szaimen/aio-caddy",
"image_tag": "v1",
"internal_port": "443",
"restart": "unless-stopped",
"ports": [
{
"ip_binding": "",
"port_number": "443",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "443",
"protocol": "udp"
}
],
"environment": [
"TZ=%TIMEZONE%",
"NC_DOMAIN=%NC_DOMAIN%",
"APACHE_PORT=%APACHE_PORT%"
],
"volumes": [
{
"source": "nextcloud_aio_caddy",
"destination": "/data",
"writeable": true
},
{
"source": "%NEXTCLOUD_DATADIR%",
"destination": "/nextcloud",
"writeable": false
}
],
"aio_variables": [
"apache_ip_binding=127.0.0.1",
"apache_port=11000"
],
"nextcloud_exec_commands": [
"mkdir '/mnt/ncdata/admin/files/nextcloud-aio-caddy'",
"touch '/mnt/ncdata/admin/files/nextcloud-aio-caddy/allowed-countries.txt'",
"echo 'Scanning nextcloud-aio-caddy folder for admin user...'",
"php /var/www/html/occ files:scan --path='/admin/files/nextcloud-aio-caddy'"
]
}
]
}

View File

@@ -0,0 +1,15 @@
## Caddy with geoblocking
This container bundles caddy and auto-configures it for you. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden by listening on `bw.$NC_DOMAIN`, if installed.
### Notes
- This container is incompatible with the [npmplus](https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus) community container. So make sure that you do not enable both at the same time!
- Make sure that no other service is using port 443 on your host as otherwise the containers will fail to start. You can check this with `sudo netstat -tulpn | grep 443` before installing AIO.
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden, make sure that you point `bw.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for vaultwarden.
- After the container was started the first time, you should see a new `nextcloud-aio-caddy` folder and inside there an `allowed-countries.txt` file when you open the files app with the default `admin` user. In there you can adjust the allowed country codes for caddy by adding them to the first line, e.g. `IT FR` would allow access from italy and france. Private ip-ranges are always allowed. Additionally, in order to activate this config, you need to get an account at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data and download the `GeoLite2-Country.mmdb` and upload it with this exact name into the `nextcloud-aio-caddy` folder. Afterwards restart all containers from the AIO interface and your new config should be active!
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/szaimen/aio-caddy
### Maintainer
https://github.com/szaimen

View File

@@ -0,0 +1,32 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-fail2ban",
"display_name": "Fail2ban",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/fail2ban",
"image": "szaimen/aio-fail2ban",
"image_tag": "v1",
"internal_port": "host",
"restart": "unless-stopped",
"cap_add": [
"NET_ADMIN",
"NET_RAW"
],
"environment": [
"TZ=%TIMEZONE%"
],
"volumes": [
{
"source": "nextcloud_aio_nextcloud",
"destination": "/nextcloud",
"writeable": false
},
{
"source": "nextcloud_aio_vaultwarden_logs",
"destination": "/vaultwarden",
"writeable": false
}
]
}
]
}

View File

@@ -0,0 +1,13 @@
## Fail2ban
This container bundles fail2ban and auto-configures it for you in order to block ip-addresses automatically. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden, if installed.
### Notes
- This is not working on Docker Desktop since it needs `network_mode: host` in order to work correctly.
- If you get an error like `"ip6tables v1.8.9 (legacy): can't initialize ip6tables table filter': Table does not exist (do you need to insmod?)"`, you need to enable ip6tables on your host via `sudo modprobe ip6table_filter`.
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/szaimen/aio-fail2ban
### Maintainer
https://github.com/szaimen

View File

@@ -0,0 +1,33 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-libretranslate",
"display_name": "LibreTranslate",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/libretranslate",
"image": "szaimen/aio-libretranslate",
"image_tag": "v1",
"internal_port": "5000",
"restart": "unless-stopped",
"environment": [
"TZ=%TIMEZONE%"
],
"volumes": [
{
"source": "nextcloud_aio_libretranslate_db",
"destination": "/app/db",
"writeable": true
},
{
"source": "nextcloud_aio_libretranslate_models",
"destination": "/home/libretranslate/.local",
"writeable": true
}
],
"nextcloud_exec_commands": [
"php /var/www/html/occ app:install integration_libretranslate",
"php /var/www/html/occ config:app:set integration_libretranslate host --value='http://nextcloud-aio-libretranslate'",
"php /var/www/html/occ config:app:set integration_libretranslate port --value='5000'"
]
}
]
}

View File

@@ -0,0 +1,19 @@
## Local AI
This container bundles LibreTranslate and auto-configures it for you.
### Notes
- Please note that this community container is currently not working since its integration app is not yet compatible with Nextcloud 27 (Hub 6). You can follow the progress here: https://github.com/v1r0x/integration_libretranslate/issues/1
- After the initial startup is done, you might want to change the default language to translate from and to via:
```bash
# Adjust the values `en` and `de` in commands below accordingly
sudo docker exec --user www-data nextcloud-aio-nextcloud php occ config:app:set integration_libretranslate from_lang --value="en"
sudo docker exec --user www-data nextcloud-aio-nextcloud php occ config:app:set integration_libretranslate to_lang --value="de"
```
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/szaimen/aio-libretranslate
### Maintainer
https://github.com/szaimen

View File

@@ -0,0 +1,43 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-local-ai",
"display_name": "Local AI",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/local-ai",
"image": "szaimen/aio-local-ai",
"image_tag": "v1",
"internal_port": "8080",
"restart": "unless-stopped",
"environment": [
"TZ=%TIMEZONE%",
"MODELS_PATH=/models"
],
"volumes": [
{
"source": "nextcloud_aio_localai_models",
"destination": "/models",
"writeable": true
},
{
"source": "nextcloud_aio_localai_images",
"destination": "/images",
"writeable": true
},
{
"source": "%NEXTCLOUD_DATADIR%",
"destination": "/nextcloud",
"writeable": false
}
],
"nextcloud_exec_commands": [
"mkdir '/mnt/ncdata/admin/files/nextcloud-aio-local-ai'",
"touch '/mnt/ncdata/admin/files/nextcloud-aio-local-ai/models.yaml'",
"echo 'Scanning nextcloud-aio-local-ai folder for admin user...'",
"php /var/www/html/occ files:scan --path='/admin/files/nextcloud-aio-local-ai'",
"php /var/www/html/occ app:install integration_openai",
"php /var/www/html/occ config:app:set integration_openai url --value http://nextcloud-aio-local-ai:8080",
"php /var/www/html/occ app:install assistant"
]
}
]
}

View File

@@ -0,0 +1,27 @@
## Local AI
This container bundles Local AI and auto-configures it for you.
### Notes
- Make sure to have enough storage space available. This container alone needs ~14GB storage on x64, on arm64 only ~4GB. Every model that you add to `models.yaml` will of course use additional space which adds up quite fast.
- After the container was started the first time, you should see a new `nextcloud-aio-local-ai` folder when you open the files app with the default `admin` user. In there you should see a `models.yaml` config file. You can now add models in there. Please refer [here](https://github.com/go-skynet/model-gallery/blob/main/index.yaml) where you can get further urls that you can put in there. Afterwards restart all containers from the AIO interface and the models should automatically get downloaded by the local-ai container and activated.
- Example for content of `models.yaml` (if you add all of them, it takes around 10GB additional space):
```yaml
# Stable Diffusion in NCNN with c++, supported txt2img and img2img
- url: github:go-skynet/model-gallery/stablediffusion.yaml
# Port of OpenAI's Whisper model in C/C++
- url: github:go-skynet/model-gallery/whisper-base.yaml
name: whisper-1
# A commercially licensable model based on GPT-J and trained by Nomic AI on the v0 GPT4All dataset.
- url: github:go-skynet/model-gallery/gpt4all-j.yaml
name: gpt4all-j
```
- Additionally after doing so, you might want to enable or disable specific features for your models in the integration_openai settings: `https://your-nc-domain.com/settings/admin/connected-accounts`
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/szaimen/aio-local-ai
### Maintainer
https://github.com/szaimen

View File

@@ -0,0 +1,32 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-npmplus",
"display_name": "NPMplus",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus",
"image": "zoeyvid/npmplus",
"image_tag": "latest",
"internal_port": "host",
"restart": "unless-stopped",
"environment": [
"TZ=%TIMEZONE%",
"NC_AIO=true",
"NC_DOMAIN=%NC_DOMAIN%"
],
"volumes": [
{
"source": "nextcloud_aio_npmplus",
"destination": "/data",
"writeable": true
}
],
"backup_volumes": [
"nextcloud_aio_npmplus"
],
"aio_variables": [
"apache_ip_binding=127.0.0.1",
"apache_port=11000"
]
}
]
}

View File

@@ -0,0 +1,22 @@
## NPMplus
This container contains a fork of the Nginx Proxy Manager, which is a WebUI for nginx. It will also automatically create a config and cert for AIO.
### Notes
- This container is incompatible with the [caddy](https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy) community container. So make sure that you do not enable both at the same time!
- Only works on linux since it uses network mode host
- You can ignore the NPM configuration of the reverse-proxy.md. The NPMplus fork already contains the changes of the advanced tab.
- Make sure that no other service is using port `443 (tcp/upd)` or `81 (tcp)` on your host as otherwise the containers will fail to start. You can check this with `sudo netstat -tulpn | grep "443\|81"` before installing AIO.
- Please change the default login data first, after you can read inside the logs that the default config for AIO is created and there are no errors.
- After the container was started the first time, please check the logs for errors. Then you can open NPMplus on `https://<ip>:81` and change the password.
- The default password is `iArhP1j7p1P6TA92FA2FMbbUGYqwcYzxC4AVEe12Wbi94FY9gNN62aKyF1shrvG4NycjjX9KfmDQiwkLZH1ZDR9xMjiG2QmoHXi` and the default email is `admin@example.com`
- If you want to use NPMplus behind a domain and outside localhost just create a new proxy host inside the NPMplus which proxies to `https`, `127.0.0.1` and port `81` - all other settings should be the same as for the AIO host.
- If you want to set env options from this [compose.yaml](https://github.com/ZoeyVid/NPMplus/blob/develop/compose.yaml), please set them inside the `.env` file which you can find in the `nextcloud_aio_npmplus` volume
- The data (certs, configs, etc.) of NPMplus will be automatically included in AIOs backup solution!
- **Important:** you always need to enable https for your hosts, since `DISABLE_HTTP` is set to true
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository and Documentation
https://github.com/ZoeyVid/NPMplus
### Maintainer
https://github.com/Zoey2936

View File

@@ -0,0 +1,55 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-pihole",
"display_name": "Pi-hole",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/pi-hole",
"image": "pihole/pihole",
"image_tag": "latest",
"internal_port": "8573",
"restart": "unless-stopped",
"ports": [
{
"ip_binding": "",
"port_number": "53",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "53",
"protocol": "udp"
},
{
"ip_binding": "",
"port_number": "8573",
"protocol": "tcp"
}
],
"environment": [
"TZ=%TIMEZONE%",
"WEBPASSWORD=%PIHOLE_WEBPASSWORD%",
"DNSMASQ_LISTENING=all",
"WEB_PORT=8573"
],
"volumes": [
{
"source": "nextcloud_aio_pihole",
"destination": "/etc/pihole",
"writeable": true
},
{
"source": "nextcloud_aio_pihole_dnsmasq",
"destination": "/etc/dnsmasq.d",
"writeable": true
}
],
"backup_volumes": [
"nextcloud_aio_pihole",
"nextcloud_aio_pihole_dnsmasq"
],
"secrets": [
"PIHOLE_WEBPASSWORD"
]
}
]
}

View File

@@ -0,0 +1,18 @@
## Pi-hole
This container bundles pi-hole and auto-configures it for you.
### Notes
- You should not run this container on a public VPS! It is only intended to run in home networks!
- Make sure that no dns server is already running by checking with `sudo netstat -tulpn | grep 53`. Otherwise the container will not be able to start!
- The DHCP functionality of Pi-hole has been disabled!
- The data of pi-hole will be automatically included in AIOs backup solution!
- After adding and starting the container, you can visit `http://ip.address.of.this.server:8573` in order to log in with the admin key that you can retrieve when running `sudo docker inspect nextcloud-aio-pihole | grep WEBPASSWORD`. There you can configure the pi-hole setup. Also you can add local dns records.
- You can configure your home network now to use pi-hole as its dns server by configuring your router.
- Additionally, you can configure the docker daemon to use that by editing `/etc/docker/daemon.json` and adding ` { "dns" : [ "ip.address.of.this.server" , "8.8.8.8" ] } `.
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/pi-hole/docker-pi-hole
### Maintainer
https://github.com/szaimen

View File

@@ -0,0 +1,41 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-plex",
"display_name": "Plex",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/plex",
"image": "plexinc/pms-docker",
"image_tag": "latest",
"internal_port": "host",
"restart": "unless-stopped",
"environment": [
"TZ=%TIMEZONE%",
"PLEX_UID=33",
"PLEX_GID=33"
],
"volumes": [
{
"source": "nextcloud_aio_plex",
"destination": "/config",
"writeable": true
},
{
"source": "%NEXTCLOUD_DATADIR%",
"destination": "/data",
"writeable": false
},
{
"source": "%NEXTCLOUD_MOUNT%",
"destination": "%NEXTCLOUD_MOUNT%",
"writeable": false
}
],
"devices": [
"/dev/dri"
],
"backup_volumes": [
"nextcloud_aio_plex"
]
}
]
}

View File

@@ -0,0 +1,16 @@
## Plex
This container bundles Plex and auto-configures it for you.
### Notes
- This is not working on arm64 since Plex does only provide x64 docker images.
- This is not working on Docker Desktop since it needs `network_mode: host` in order to work correctly.
- If you have a firewall like ufw configured, you might need to open all Plex ports in there first in order to make it work. Especially port 32400 is important!
- After adding and starting the container, you need to visit http://ip.address.of.server:32400 in order to claim your server with a plex account
- The data of Plex will be automatically included in AIOs backup solution!
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/plexinc/pms-docker
### Maintainer
https://github.com/szaimen

View File

@@ -0,0 +1,18 @@
# Community containers
This directory features containers that are built for AIO which allows to add additional functionality very easily.
## Disclaimers
⚠️ This is currently beta and not stable yet!
All containers that are in this directory are community maintained so the responsibility is on the community to keep them updated and secure. There is no guarantee that this will be the case in the future.
## How to use this?
Before adding any additional container, make sure to create a backup via the AIO interface!
Afterwards, you might want to add additional community containers to the default AIO stack. You can do so by adding `--env AIO_COMMUNITY_CONTAINERS="container1 container2"` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and customize the value to your fitting. It must match the folder names in this directory! ⚠️⚠️⚠️ Please review the folder for documentation on each of the containers before adding them! Not reviewing the documentation for each of them first might break starting the AIO containers because e.g. fail2ban only works on Linux and not on Docker Desktop!
## How to add containers?
Simply submit a PR by creating a new folder in this directory: https://github.com/nextcloud/all-in-one/tree/main/community-containers with the name of your container. It must include a json file with the same name and with correct syntax and a readme.md with additional information. You might get inspired by caddy, fail2ban, local-ai, libretranslate, plex, pi-hole or vaultwarden (subfolders in this directory). For a full-blown example of the json file, see https://github.com/nextcloud/all-in-one/blob/main/php/containers.json. The json-schema that it validates against can be found here: https://github.com/nextcloud/all-in-one/blob/main/php/containers-schema.json.
### Is there a list of ideas for new community containers?
Yes, see [this list](https://github.com/nextcloud/all-in-one/discussions/categories/ideas?discussions_q=is%3Aopen+category%3AIdeas+label%3A%22help+wanted%22) for already existing ideas for new community containers. Feel free to pick one up and add it to this folder by following the instructions above.

View File

@@ -0,0 +1,16 @@
## Vaultwarden
This container bundles vaultwarden and auto-configures it for you.
### Notes
- You need to configure a reverse proxy in order to run this container since vaultwarden needs a dedicated (sub)domain! For that, you might have a look at https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy or follow https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md and https://github.com/dani-garcia/vaultwarden/wiki/Proxy-examples. You need to point the reverse proxy at port 8812 of this server.
- Currently, only `bw.$NC_DOMAIN` is supported as subdomain! So if Nextcloud is using `your-domain.com`, vaultwarden will use `bw.your-domain.com`. The reverse proxy and domain must be configured accordingly!
- If you want to secure the installation with fail2ban, you might want to check out https://github.com/nextcloud/all-in-one/tree/main/community-containers/fail2ban
- The data of Vaultwarden will be automatically included in AIOs backup solution!
- After adding and starting the container, you need to visit `https://bw.your-domain.com/admin` in order to log in with the admin key that you can retrieve when running `sudo docker inspect nextcloud-aio-vaultwarden | grep ADMIN_TOKEN`. There you can configure smtp first and then invite users via mail. After this is done, you might disable the admin panel via the reverse proxy by blocking connections to the subdirectory.
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/dani-garcia/vaultwarden
### Maintainer
https://github.com/szaimen

View File

@@ -0,0 +1,48 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-vaultwarden",
"display_name": "Vaultwarden",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden",
"image": "vaultwarden/server",
"image_tag": "alpine",
"internal_port": "8812",
"restart": "unless-stopped",
"ports": [
{
"ip_binding": "%APACHE_IP_BINDING%",
"port_number": "8812",
"protocol": "tcp"
}
],
"environment": [
"TZ=%TIMEZONE%",
"ROCKET_PORT=8812",
"ADMIN_TOKEN=%VAULTWARDEN_ADMIN_TOKEN%",
"DOMAIN=https://bw.%NC_DOMAIN%",
"LOG_FILE=/logs/vaultwarden.log",
"LOG_LEVEL=warn",
"SIGNUPS_VERIFY=true",
"SIGNUPS_ALLOWED=false"
],
"volumes": [
{
"source": "nextcloud_aio_vaultwarden",
"destination": "/data",
"writeable": true
},
{
"source": "nextcloud_aio_vaultwarden_logs",
"destination": "/logs",
"writeable": true
}
],
"backup_volumes": [
"nextcloud_aio_vaultwarden"
],
"secrets": [
"VAULTWARDEN_ADMIN_TOKEN"
]
}
]
}

View File

@@ -32,6 +32,8 @@ services:
# - 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
# # Uncomment the following line when using SELinux
# security_opt: ["label:disable"]
# # 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
@@ -47,7 +49,7 @@ services:
# - ./sites:/srv
# network_mode: "host"
volumes:
volumes: # If you want to store the data on a different drive, see https://github.com/nextcloud/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drive
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

View File

@@ -5,10 +5,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. Do not forget to set the mentioned environmental variables and in best case add them to your `~/.bashrc` file as shown!
1. Do not forget to set the mentioned environmental variables `PATH` and `DOCKER_HOST` 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 `--env WATCHTOWER_DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly). When you are using Portainer to deploy AIO, the variable `$XDG_RUNTIME_DIR` is not available. In this case, it is necessary to manually add the path (e.g. `/run/user/1000/docker.sock`) to the Docker compose file to replace the `$XDG_RUNTIME_DIR` variable. If you are not sure how to get the path, you can run on the host: `echo $XDG_RUNTIME_DIR`.
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 compose.yaml 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).

View File

@@ -93,6 +93,7 @@ services:
init: true
expose:
- "9000"
- "9001"
volumes:
- nextcloud_aio_nextcloud:/var/www/html:rw
- ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw
@@ -142,6 +143,8 @@ services:
- TALK_RECORDING_HOST=nextcloud-aio-talk-recording
- FULLTEXTSEARCH_PASSWORD=${FULLTEXTSEARCH_PASSWORD}
- REMOVE_DISABLED_APPS=${REMOVE_DISABLED_APPS}
- APACHE_PORT=${APACHE_PORT}
- APACHE_IP_BINDING=${APACHE_IP_BINDING}
restart: unless-stopped
networks:
- nextcloud-aio
@@ -252,7 +255,7 @@ services:
nextcloud-aio-clamav:
image: nextcloud/aio-clamav:latest
init: true
init: false
expose:
- "3310"
environment:

View File

@@ -11,6 +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 lose all community containers: https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers
- **You need to know what you are doing, especially when modifying the compose.yaml file**
- For updating, you need to strictly follow the at the bottom described update routine
- Probably more

View File

@@ -17,6 +17,7 @@ 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[].nextcloud_exec_commands)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].image_tag)')"
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"))')"

View File

@@ -7,7 +7,7 @@ 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 by opening a new SSH connection as the user and install docker rootless for each of them by following step 0-4 of the [docker rootless documentation](./docker-rootless.md).
1. Log in as each of the users by opening a new SSH connection as the user and install docker rootless for each of them by following step 0-1 and 3-4 of the [docker rootless documentation](./docker-rootless.md) (you can skip step 2 in this case).
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>
**⚠️ 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).

View File

@@ -1,6 +1,6 @@
name: nextcloud-aio-helm-chart
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
version: 7.2.1
version: 7.5.0
apiVersion: v2
keywords:
- latest

View File

@@ -10,6 +10,7 @@ You can run the containers that are build for AIO with Kubernetes using this Hel
- You lose the AIO interface
- You lose update notifications and automatic updates
- You lose all AIO backup and restore features
- You lose all community containers: https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers
- **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

View File

@@ -3,7 +3,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-apache
name: nextcloud-aio-apache
@@ -17,7 +17,7 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-apache
@@ -30,22 +30,7 @@ spec:
- "777"
- /nextcloud-aio-nextcloud
- /nextcloud-aio-apache
- /nextcloud-aio-apache-tmpfs0
- /nextcloud-aio-apache-tmpfs1
- /nextcloud-aio-apache-tmpfs2
- /nextcloud-aio-apache-tmpfs3
- /nextcloud-aio-apache-tmpfs4
volumeMounts:
- name: nextcloud-aio-apache-tmpfs4
mountPath: /nextcloud-aio-apache-tmpfs4
- name: nextcloud-aio-apache-tmpfs3
mountPath: /nextcloud-aio-apache-tmpfs3
- name: nextcloud-aio-apache-tmpfs2
mountPath: /nextcloud-aio-apache-tmpfs2
- name: nextcloud-aio-apache-tmpfs1
mountPath: /nextcloud-aio-apache-tmpfs1
- name: nextcloud-aio-apache-tmpfs0
mountPath: /nextcloud-aio-apache-tmpfs0
- name: nextcloud-aio-apache
mountPath: /nextcloud-aio-apache
- name: nextcloud-aio-nextcloud
@@ -72,33 +57,19 @@ spec:
value: nextcloud-aio-talk
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-apache:20230916_091439-latest
image: nextcloud/aio-apache:20231027_071516-latest
name: nextcloud-aio-apache
ports:
- containerPort: {{ .Values.APACHE_PORT }}
hostPort: {{ .Values.APACHE_PORT }}
protocol: TCP
- containerPort: {{ .Values.APACHE_PORT }}
hostPort: {{ .Values.APACHE_PORT }}
protocol: UDP
securityContext:
readOnlyRootFilesystem: true
volumeMounts:
- mountPath: /var/www/html
name: nextcloud-aio-nextcloud
readOnly: true
- mountPath: /mnt/data
name: nextcloud-aio-apache
- mountPath: /var/log/supervisord
name: nextcloud-aio-apache-tmpfs0
- mountPath: /var/run/supervisord
name: nextcloud-aio-apache-tmpfs1
- mountPath: /usr/local/apache2/logs
name: nextcloud-aio-apache-tmpfs2
- mountPath: /tmp
name: nextcloud-aio-apache-tmpfs3
- mountPath: /home/www-data
name: nextcloud-aio-apache-tmpfs4
volumes:
- name: nextcloud-aio-nextcloud
persistentVolumeClaim:
@@ -106,13 +77,3 @@ spec:
- name: nextcloud-aio-apache
persistentVolumeClaim:
claimName: nextcloud-aio-apache
- emptyDir: {}
name: nextcloud-aio-apache-tmpfs0
- emptyDir: {}
name: nextcloud-aio-apache-tmpfs1
- emptyDir: {}
name: nextcloud-aio-apache-tmpfs2
- emptyDir: {}
name: nextcloud-aio-apache-tmpfs3
- emptyDir: {}
name: nextcloud-aio-apache-tmpfs4

View File

@@ -3,7 +3,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-apache
name: nextcloud-aio-apache

View File

@@ -4,7 +4,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-clamav
name: nextcloud-aio-clamav
@@ -18,7 +18,7 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-clamav
@@ -30,16 +30,7 @@ spec:
- chmod
- "777"
- /nextcloud-aio-clamav
- /nextcloud-aio-clamav-tmpfs0
- /nextcloud-aio-clamav-tmpfs1
- /nextcloud-aio-clamav-tmpfs2
volumeMounts:
- name: nextcloud-aio-clamav-tmpfs2
mountPath: /nextcloud-aio-clamav-tmpfs2
- name: nextcloud-aio-clamav-tmpfs1
mountPath: /nextcloud-aio-clamav-tmpfs1
- name: nextcloud-aio-clamav-tmpfs0
mountPath: /nextcloud-aio-clamav-tmpfs0
- name: nextcloud-aio-clamav
mountPath: /nextcloud-aio-clamav
containers:
@@ -48,31 +39,16 @@ spec:
value: "90"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-clamav:20230916_091439-latest
image: nextcloud/aio-clamav:20231027_071516-latest
name: nextcloud-aio-clamav
ports:
- containerPort: 3310
hostPort: 3310
protocol: TCP
securityContext:
readOnlyRootFilesystem: true
volumeMounts:
- mountPath: /var/lib/clamav
name: nextcloud-aio-clamav
- mountPath: /var/lock
name: nextcloud-aio-clamav-tmpfs0
- mountPath: /var/log/clamav
name: nextcloud-aio-clamav-tmpfs1
- mountPath: /tmp
name: nextcloud-aio-clamav-tmpfs2
volumes:
- name: nextcloud-aio-clamav
persistentVolumeClaim:
claimName: nextcloud-aio-clamav
- emptyDir: {}
name: nextcloud-aio-clamav-tmpfs0
- emptyDir: {}
name: nextcloud-aio-clamav-tmpfs1
- emptyDir: {}
name: nextcloud-aio-clamav-tmpfs2
{{- end }}

View File

@@ -4,7 +4,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-clamav
name: nextcloud-aio-clamav

View File

@@ -4,7 +4,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-collabora
name: nextcloud-aio-collabora
@@ -18,7 +18,7 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-collabora
@@ -37,10 +37,9 @@ 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:20230916_091439-latest
image: nextcloud/aio-collabora:20231027_071516-latest
name: nextcloud-aio-collabora
ports:
- containerPort: 9980
hostPort: 9980
protocol: TCP
{{- end }}

View File

@@ -4,7 +4,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-collabora
name: nextcloud-aio-collabora

View File

@@ -3,7 +3,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-database
name: nextcloud-aio-database
@@ -17,7 +17,7 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-database
@@ -31,10 +31,7 @@ spec:
- /nextcloud-aio-database/data
- /nextcloud-aio-database
- /nextcloud-aio-database-dump
- /nextcloud-aio-database-tmpfs0
volumeMounts:
- name: nextcloud-aio-database-tmpfs0
mountPath: /nextcloud-aio-database-tmpfs0
- name: nextcloud-aio-database-dump
mountPath: /nextcloud-aio-database-dump
- name: nextcloud-aio-database
@@ -47,10 +44,7 @@ spec:
- "-R"
- /nextcloud-aio-database
- /nextcloud-aio-database-dump
- /nextcloud-aio-database-tmpfs0
volumeMounts:
- name: nextcloud-aio-database-tmpfs0
mountPath: /nextcloud-aio-database-tmpfs0
- name: nextcloud-aio-database-dump
mountPath: /nextcloud-aio-database-dump
- name: nextcloud-aio-database
@@ -67,22 +61,17 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-postgresql:20230916_091439-latest
image: nextcloud/aio-postgresql:20231027_071516-latest
name: nextcloud-aio-database
ports:
- containerPort: 5432
hostPort: 5432
protocol: TCP
securityContext:
readOnlyRootFilesystem: true
volumeMounts:
- mountPath: /var/lib/postgresql/data
subPath: data
name: nextcloud-aio-database
- mountPath: /mnt/data
name: nextcloud-aio-database-dump
- mountPath: /var/run/postgresql
name: nextcloud-aio-database-tmpfs0
terminationGracePeriodSeconds: 1800
volumes:
- name: nextcloud-aio-database
@@ -91,5 +80,3 @@ spec:
- name: nextcloud-aio-database-dump
persistentVolumeClaim:
claimName: nextcloud-aio-database-dump
- emptyDir: {}
name: nextcloud-aio-database-tmpfs0

View File

@@ -3,7 +3,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-database
name: nextcloud-aio-database

View File

@@ -4,7 +4,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-fulltextsearch
name: nextcloud-aio-fulltextsearch
@@ -18,7 +18,7 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-fulltextsearch
@@ -55,11 +55,10 @@ spec:
value: basic
- name: xpack.security.enabled
value: "false"
image: nextcloud/aio-fulltextsearch:20230916_091439-latest
image: nextcloud/aio-fulltextsearch:20231027_071516-latest
name: nextcloud-aio-fulltextsearch
ports:
- containerPort: 9200
hostPort: 9200
protocol: TCP
volumeMounts:
- mountPath: /usr/share/elasticsearch/data

View File

@@ -4,7 +4,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-fulltextsearch
name: nextcloud-aio-fulltextsearch

View File

@@ -4,7 +4,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-imaginary
name: nextcloud-aio-imaginary
@@ -18,40 +18,22 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-imaginary
spec:
initContainers:
- name: init-volumes
image: alpine
command:
- chmod
- "777"
- /nextcloud-aio-imaginary-tmpfs0
volumeMounts:
- name: nextcloud-aio-imaginary-tmpfs0
mountPath: /nextcloud-aio-imaginary-tmpfs0
containers:
- env:
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-imaginary:20230916_091439-latest
image: nextcloud/aio-imaginary:20231027_071516-latest
name: nextcloud-aio-imaginary
ports:
- containerPort: 9000
hostPort: 9000
protocol: TCP
securityContext:
capabilities:
add:
- SYS_NICE
readOnlyRootFilesystem: true
volumeMounts:
- mountPath: /tmp
name: nextcloud-aio-imaginary-tmpfs0
volumes:
- emptyDir: {}
name: nextcloud-aio-imaginary-tmpfs0
{{- end }}

View File

@@ -4,7 +4,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-imaginary
name: nextcloud-aio-imaginary

View File

@@ -3,7 +3,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-nextcloud
name: nextcloud-aio-nextcloud
@@ -17,7 +17,7 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-nextcloud
@@ -45,6 +45,8 @@ spec:
value: "{{ .Values.NEXTCLOUD_PASSWORD }}"
- name: ADMIN_USER
value: admin
- name: APACHE_PORT
value: "{{ .Values.APACHE_PORT }}"
- name: CLAMAV_ENABLED
value: "{{ .Values.CLAMAV_ENABLED }}"
- name: CLAMAV_HOST
@@ -121,11 +123,12 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: UPDATE_NEXTCLOUD_APPS
value: "{{ .Values.UPDATE_NEXTCLOUD_APPS }}"
image: nextcloud/aio-nextcloud:20230916_091439-latest
image: nextcloud/aio-nextcloud:20231027_071516-latest
name: nextcloud-aio-nextcloud
ports:
- containerPort: 9000
hostPort: 9000
protocol: TCP
- containerPort: 9001
protocol: TCP
volumeMounts:
- mountPath: /var/www/html

View File

@@ -3,7 +3,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-nextcloud
name: nextcloud-aio-nextcloud
@@ -13,5 +13,8 @@ spec:
- name: "9000"
port: 9000
targetPort: 9000
- name: "9001"
port: 9001
targetPort: 9001
selector:
io.kompose.service: nextcloud-aio-nextcloud

View File

@@ -3,7 +3,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-notify-push
name: nextcloud-aio-notify-push
@@ -17,7 +17,7 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-notify-push
@@ -50,14 +50,11 @@ spec:
value: nextcloud-aio-redis
- name: REDIS_HOST_PASSWORD
value: "{{ .Values.REDIS_PASSWORD }}"
image: nextcloud/aio-notify-push:20230916_091439-latest
image: nextcloud/aio-notify-push:20231027_071516-latest
name: nextcloud-aio-notify-push
ports:
- containerPort: 7867
hostPort: 7867
protocol: TCP
securityContext:
readOnlyRootFilesystem: true
volumeMounts:
- mountPath: /nextcloud
name: nextcloud-aio-nextcloud

View File

@@ -3,7 +3,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-notify-push
name: nextcloud-aio-notify-push

View File

@@ -4,7 +4,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-onlyoffice
name: nextcloud-aio-onlyoffice
@@ -18,7 +18,7 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-onlyoffice
@@ -43,11 +43,10 @@ spec:
value: "{{ .Values.ONLYOFFICE_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-onlyoffice:20230916_091439-latest
image: nextcloud/aio-onlyoffice:20231027_071516-latest
name: nextcloud-aio-onlyoffice
ports:
- containerPort: 80
hostPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/lib/onlyoffice

View File

@@ -4,7 +4,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-onlyoffice
name: nextcloud-aio-onlyoffice

View File

@@ -3,7 +3,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-redis
name: nextcloud-aio-redis
@@ -17,7 +17,7 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-redis
@@ -38,14 +38,11 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-redis:20230916_091439-latest
image: nextcloud/aio-redis:20231027_071516-latest
name: nextcloud-aio-redis
ports:
- containerPort: 6379
hostPort: 6379
protocol: TCP
securityContext:
readOnlyRootFilesystem: true
volumeMounts:
- mountPath: /data
name: nextcloud-aio-redis

View File

@@ -3,7 +3,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-redis
name: nextcloud-aio-redis

View File

@@ -4,7 +4,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-talk
name: nextcloud-aio-talk
@@ -18,33 +18,11 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-talk
spec:
initContainers:
- name: init-volumes
image: alpine
command:
- chmod
- "777"
- /nextcloud-aio-talk-tmpfs0
- /nextcloud-aio-talk-tmpfs1
- /nextcloud-aio-talk-tmpfs2
- /nextcloud-aio-talk-tmpfs3
- /nextcloud-aio-talk-tmpfs4
volumeMounts:
- name: nextcloud-aio-talk-tmpfs4
mountPath: /nextcloud-aio-talk-tmpfs4
- name: nextcloud-aio-talk-tmpfs3
mountPath: /nextcloud-aio-talk-tmpfs3
- name: nextcloud-aio-talk-tmpfs2
mountPath: /nextcloud-aio-talk-tmpfs2
- name: nextcloud-aio-talk-tmpfs1
mountPath: /nextcloud-aio-talk-tmpfs1
- name: nextcloud-aio-talk-tmpfs0
mountPath: /nextcloud-aio-talk-tmpfs0
containers:
- env:
- name: INTERNAL_SECRET
@@ -59,40 +37,13 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-talk:20230916_091439-latest
image: nextcloud/aio-talk:20231027_071516-latest
name: nextcloud-aio-talk
ports:
- containerPort: {{ .Values.TALK_PORT }}
hostPort: {{ .Values.TALK_PORT }}
protocol: TCP
- containerPort: {{ .Values.TALK_PORT }}
hostPort: {{ .Values.TALK_PORT }}
protocol: UDP
- containerPort: 8081
hostPort: 8081
protocol: TCP
securityContext:
readOnlyRootFilesystem: true
volumeMounts:
- mountPath: /var/log/supervisord
name: nextcloud-aio-talk-tmpfs0
- mountPath: /var/run/supervisord
name: nextcloud-aio-talk-tmpfs1
- mountPath: /opt/eturnal/run
name: nextcloud-aio-talk-tmpfs2
- mountPath: /conf
name: nextcloud-aio-talk-tmpfs3
- mountPath: /tmp
name: nextcloud-aio-talk-tmpfs4
volumes:
- emptyDir: {}
name: nextcloud-aio-talk-tmpfs0
- emptyDir: {}
name: nextcloud-aio-talk-tmpfs1
- emptyDir: {}
name: nextcloud-aio-talk-tmpfs2
- emptyDir: {}
name: nextcloud-aio-talk-tmpfs3
- emptyDir: {}
name: nextcloud-aio-talk-tmpfs4
{{- end }}

View File

@@ -4,7 +4,7 @@ kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-talk-recording
name: nextcloud-aio-talk-recording
@@ -18,24 +18,11 @@ spec:
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.network/nextcloud-aio: "true"
io.kompose.service: nextcloud-aio-talk-recording
spec:
initContainers:
- name: init-volumes
image: alpine
command:
- chmod
- "777"
- /nextcloud-aio-talk-recording-tmpfs0
- /nextcloud-aio-talk-recording-tmpfs1
volumeMounts:
- name: nextcloud-aio-talk-recording-tmpfs1
mountPath: /nextcloud-aio-talk-recording-tmpfs1
- name: nextcloud-aio-talk-recording-tmpfs0
mountPath: /nextcloud-aio-talk-recording-tmpfs0
containers:
- env:
- name: INTERNAL_SECRET
@@ -46,22 +33,9 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-talk-recording:20230916_091439-latest
image: nextcloud/aio-talk-recording:20231027_071516-latest
name: nextcloud-aio-talk-recording
ports:
- containerPort: 1234
hostPort: 1234
protocol: TCP
securityContext:
readOnlyRootFilesystem: true
volumeMounts:
- mountPath: /tmp
name: nextcloud-aio-talk-recording-tmpfs0
- mountPath: /conf
name: nextcloud-aio-talk-recording-tmpfs1
volumes:
- emptyDir: {}
name: nextcloud-aio-talk-recording-tmpfs0
- emptyDir: {}
name: nextcloud-aio-talk-recording-tmpfs1
{{- end }}

View File

@@ -4,7 +4,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-talk-recording
name: nextcloud-aio-talk-recording

View File

@@ -5,7 +5,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-talk
name: nextcloud-aio-talk-public
@@ -28,7 +28,7 @@ kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -c -f latest.yml --namespace {{ .Values.NAMESPACE }}
kompose.version: 1.30.0 (9d8dcb518)
kompose.version: 1.31.2 (a92241f79)
labels:
io.kompose.service: nextcloud-aio-talk
name: nextcloud-aio-talk

View File

@@ -10,8 +10,7 @@ rm -f ./helm-chart/values.yaml
rm -rf ./helm-chart/templates
# Install kompose
LATEST_KOMPOSE="$(git ls-remote --tags https://github.com/kubernetes/kompose.git | cut -d/ -f3 | grep -viE -- 'rc|b' | sort -V | tail -1)"
curl -L https://github.com/kubernetes/kompose/releases/download/"$LATEST_KOMPOSE"/kompose-linux-amd64 -o kompose
curl -L https://github.com/kubernetes/kompose/releases/latest/download/kompose-linux-amd64 -o kompose
chmod +x kompose
sudo mv ./kompose /usr/local/bin/kompose
@@ -30,6 +29,7 @@ source /tmp/sample.conf
rm /tmp/sample.conf
sed -i "s|:latest$|:$DOCKER_TAG-latest|" latest.yml
sed -i "s|\${APACHE_IP_BINDING}:||" latest.yml
sed -i '/APACHE_IP_BINDING/d' latest.yml
sed -i "s|\${APACHE_PORT}:\${APACHE_PORT}/|$APACHE_PORT:$APACHE_PORT/|" latest.yml
sed -i "s|\${TALK_PORT}:\${TALK_PORT}/|$TALK_PORT:$TALK_PORT/|g" latest.yml
sed -i "s|- \${APACHE_PORT}|- $APACHE_PORT|" latest.yml
@@ -43,6 +43,9 @@ sed -i "s|\${NEXTCLOUD_TRUSTED_CACERTS_DIR}:|nextcloud_aio_nextcloud_trusted_cac
sed -i 's|\${|{{ .Values.|g' latest.yml
sed -i 's|}| }}|g' latest.yml
yq -i 'del(.services.[].profiles)' latest.yml
# Delete read_only and tmpfs setting while https://github.com/kubernetes/kubernetes/issues/48912 is not fixed
yq -i 'del(.services.[].read_only)' latest.yml
yq -i 'del(.services.[].tmpfs)' latest.yml
cat latest.yml
kompose convert -c -f latest.yml --namespace nextcloud-aio-namespace
cd latest
@@ -125,6 +128,8 @@ find ./ -name '*deployment.yaml' -exec sed -i "/medium: Memory/d" \{} \;
# shellcheck disable=SC1083
find ./ -name '*deployment.yaml' -exec sed -i "s|emptyDir:|emptyDir: \{\}|" \{} \;
# shellcheck disable=SC1083
find ./ -name '*deployment.yaml' -exec sed -i "/hostPort:/d" \{} \;
# shellcheck disable=SC1083
find ./ -name '*persistentvolumeclaim.yaml' -exec sed -i "s|ReadOnlyMany|ReadWriteOnce|" \{} \;
# shellcheck disable=SC1083
find ./ -name '*persistentvolumeclaim.yaml' -exec sed -i "/accessModes:/i\ \ {{- if .Values.STORAGE_CLASS }}" \{} \;

View File

@@ -16,8 +16,7 @@
"http-interop/http-factory-guzzle": "^1.2",
"slim/twig-view": "^3.3",
"slim/csrf": "^1.3",
"ext-apcu": "*",
"justinrainbow/json-schema": "^5.2"
"ext-apcu": "*"
},
"scripts": {
"psalm": "psalm --threads=1",

84
php/composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "3cbf9ef41575f504b9bdbc8dbe8562e3",
"content-hash": "b0074cfbf6b5cde6d6d2207286ad2e85",
"packages": [
{
"name": "guzzlehttp/guzzle",
@@ -389,76 +389,6 @@
},
"time": "2021-07-21T13:50:14+00:00"
},
{
"name": "justinrainbow/json-schema",
"version": "5.2.12",
"source": {
"type": "git",
"url": "https://github.com/justinrainbow/json-schema.git",
"reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60",
"reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
"json-schema/json-schema-test-suite": "1.2.0",
"phpunit/phpunit": "^4.8.35"
},
"bin": [
"bin/validate-json"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.0.x-dev"
}
},
"autoload": {
"psr-4": {
"JsonSchema\\": "src/JsonSchema/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Bruno Prieto Reis",
"email": "bruno.p.reis@gmail.com"
},
{
"name": "Justin Rainbow",
"email": "justin.rainbow@gmail.com"
},
{
"name": "Igor Wiedler",
"email": "igor@wiedler.ch"
},
{
"name": "Robert Schönthal",
"email": "seroscho@googlemail.com"
}
],
"description": "A library to validate a json schema.",
"homepage": "https://github.com/justinrainbow/json-schema",
"keywords": [
"json",
"schema"
],
"support": {
"issues": "https://github.com/justinrainbow/json-schema/issues",
"source": "https://github.com/justinrainbow/json-schema/tree/5.2.12"
},
"time": "2022-04-13T08:02:27+00:00"
},
{
"name": "laravel/serializable-closure",
"version": "v1.3.1",
@@ -793,16 +723,16 @@
},
{
"name": "psr/http-client",
"version": "1.0.2",
"version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
"reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31"
"reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
},
"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/bb5906edc1c324c9a05aa0873d40117941e5fa90",
"reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
"shasum": ""
},
"require": {
@@ -839,9 +769,9 @@
"psr-18"
],
"support": {
"source": "https://github.com/php-fig/http-client/tree/1.0.2"
"source": "https://github.com/php-fig/http-client"
},
"time": "2023-04-10T20:12:12+00:00"
"time": "2023-09-23T14:17:50+00:00"
},
{
"name": "psr/http-factory",

View File

@@ -10,11 +10,12 @@
"type": "object",
"additionalProperties": false,
"minProperties": 2,
"required": ["image", "container_name"],
"required": ["image", "container_name", "image_tag"],
"properties": {
"image": {
"type": "string",
"minLength": 1
"minLength": 1,
"pattern": "^[a-z0-9/-]+$"
},
"expose": {
"type": "array",
@@ -39,7 +40,7 @@
},
"display_name": {
"type": "string",
"pattern": "^[A-Za-z ]+$"
"pattern": "^[A-Za-z 0-9-]+$"
},
"environment": {
"type": "array",
@@ -51,7 +52,7 @@
},
"container_name": {
"type": "string",
"pattern": "^nextcloud-aio-[a-z-]+$"
"pattern": "^nextcloud-aio-[a-z0-9-]+$"
},
"internal_port": {
"type": "string",
@@ -73,7 +74,7 @@
},
"port_number": {
"type": "string",
"pattern": "^(%[A-Z_]+%)$"
"pattern": "^(%[A-Z_]+%|[0-9]{1,5})$"
},
"protocol": {
"type": "string",
@@ -82,6 +83,13 @@
}
}
},
"aio_variables": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z_a-z-]+=.*$"
}
},
"restart": {
"type": "string",
"pattern": "^unless-stopped$"
@@ -98,7 +106,11 @@
},
"image_tag": {
"type": "string",
"pattern": "^[a-z0-9.-]+$"
"pattern": "^([a-z0-9.-]+|%AIO_CHANNEL%)$"
},
"documentation": {
"type": "string",
"pattern": "^https://.*$"
},
"devices": {
"type": "array",
@@ -121,7 +133,7 @@
"type": "array",
"items": {
"type": "string",
"pattern": "^(php /var/www/html/occ .*|echo .*)$"
"pattern": "^(php /var/www/html/occ .*|echo .*|touch .*|mkdir .*)$"
}
},
"profiles": {

View File

@@ -2,6 +2,7 @@
"aio_services_v1": [
{
"container_name": "nextcloud-aio-apache",
"image_tag": "%AIO_CHANNEL%",
"depends_on": [
"nextcloud-aio-onlyoffice",
"nextcloud-aio-collabora",
@@ -68,6 +69,7 @@
},
{
"container_name": "nextcloud-aio-database",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Database",
"image": "nextcloud/aio-postgresql",
"init": true,
@@ -114,6 +116,7 @@
},
{
"container_name": "nextcloud-aio-nextcloud",
"image_tag": "%AIO_CHANNEL%",
"depends_on": [
"nextcloud-aio-database",
"nextcloud-aio-redis",
@@ -127,7 +130,8 @@
"image": "nextcloud/aio-nextcloud",
"init": true,
"expose": [
"9000"
"9000",
"9001"
],
"internal_port": "9000",
"secrets": [
@@ -206,7 +210,9 @@
"TALK_RECORDING_HOST=nextcloud-aio-talk-recording",
"FULLTEXTSEARCH_PASSWORD=%FULLTEXTSEARCH_PASSWORD%",
"DOCKER_SOCKET_PROXY_ENABLED=%DOCKER_SOCKET_PROXY_ENABLED%",
"REMOVE_DISABLED_APPS=%REMOVE_DISABLED_APPS%"
"REMOVE_DISABLED_APPS=%REMOVE_DISABLED_APPS%",
"APACHE_PORT=%APACHE_PORT%",
"APACHE_IP_BINDING=%APACHE_IP_BINDING%"
],
"restart": "unless-stopped",
"devices": [
@@ -221,6 +227,7 @@
},
{
"container_name": "nextcloud-aio-notify-push",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Notify Push",
"image": "nextcloud/aio-notify-push",
"init": true,
@@ -257,6 +264,7 @@
},
{
"container_name": "nextcloud-aio-redis",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Redis",
"image": "nextcloud/aio-redis",
"init": true,
@@ -288,6 +296,7 @@
},
{
"container_name": "nextcloud-aio-collabora",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Collabora",
"image": "nextcloud/aio-collabora",
"init": true,
@@ -317,6 +326,7 @@
},
{
"container_name": "nextcloud-aio-talk",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Talk",
"image": "nextcloud/aio-talk",
"init": true,
@@ -368,6 +378,7 @@
},
{
"container_name": "nextcloud-aio-talk-recording",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Talk Recording",
"image": "nextcloud/aio-talk-recording",
"init": true,
@@ -401,6 +412,7 @@
},
{
"container_name": "nextcloud-aio-borgbackup",
"image_tag": "%AIO_CHANNEL%",
"image": "nextcloud/aio-borgbackup",
"init": true,
"environment": [
@@ -463,6 +475,7 @@
},
{
"container_name": "nextcloud-aio-watchtower",
"image_tag": "%AIO_CHANNEL%",
"image": "nextcloud/aio-watchtower",
"init": true,
"environment": [
@@ -479,6 +492,7 @@
},
{
"container_name": "nextcloud-aio-domaincheck",
"image_tag": "%AIO_CHANNEL%",
"image": "nextcloud/aio-domaincheck",
"init": true,
"ports": [
@@ -505,6 +519,7 @@
},
{
"container_name": "nextcloud-aio-clamav",
"image_tag": "%AIO_CHANNEL%",
"display_name": "ClamAV",
"image": "nextcloud/aio-clamav",
"init": false,
@@ -539,6 +554,7 @@
},
{
"container_name": "nextcloud-aio-onlyoffice",
"image_tag": "%AIO_CHANNEL%",
"display_name": "OnlyOffice",
"image": "nextcloud/aio-onlyoffice",
"init": true,
@@ -576,6 +592,7 @@
},
{
"container_name": "nextcloud-aio-imaginary",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Imaginary",
"image": "nextcloud/aio-imaginary",
"init": true,
@@ -603,6 +620,7 @@
},
{
"container_name": "nextcloud-aio-fulltextsearch",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Fulltextsearch",
"image": "nextcloud/aio-fulltextsearch",
"init": false,
@@ -642,6 +660,7 @@
},
{
"container_name": "nextcloud-aio-docker-socket-proxy",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Docker Socket Proxy",
"image": "nextcloud/aio-docker-socket-proxy",
"init": true,

View File

@@ -0,0 +1,19 @@
<?php
namespace AIO\Container;
class AioVariables {
/** @var string[] */
private array $variables = [];
public function AddVariable(string $variable) : void {
$this->variables[] = $variable;
}
/**
* @return string[]
*/
public function GetVariables() : array {
return $this->variables;
}
}

View File

@@ -34,6 +34,8 @@ class Container {
private array $tmpfs;
private bool $init;
private string $imageTag;
private AioVariables $aioVariables;
private string $documentation;
private DockerActionManager $dockerActionManager;
public function __construct(
@@ -58,6 +60,8 @@ class Container {
array $tmpfs,
bool $init,
string $imageTag,
AioVariables $aioVariables,
string $documentation,
DockerActionManager $dockerActionManager
) {
$this->identifier = $identifier;
@@ -81,6 +85,8 @@ class Container {
$this->tmpfs = $tmpfs;
$this->init = $init;
$this->imageTag = $imageTag;
$this->aioVariables = $aioVariables;
$this->documentation = $documentation;
$this->dockerActionManager = $dockerActionManager;
}
@@ -186,4 +192,12 @@ class Container {
public function GetEnvironmentVariables() : ContainerEnvironmentVariables {
return $this->containerEnvironmentVariables;
}
public function GetAioVariables() : AioVariables {
return $this->aioVariables;
}
public function GetDocumentation() : string {
return $this->documentation;
}
}

View File

@@ -2,6 +2,7 @@
namespace AIO;
use AIO\Container\AioVariables;
use AIO\Container\Container;
use AIO\Container\ContainerEnvironmentVariables;
use AIO\Container\ContainerPort;
@@ -12,7 +13,6 @@ use AIO\Container\State\RunningState;
use AIO\Data\ConfigurationManager;
use AIO\Data\DataConst;
use AIO\Docker\DockerActionManager;
use JsonSchema\Validator;
class ContainerDefinitionFetcher
{
@@ -41,27 +41,25 @@ class ContainerDefinitionFetcher
throw new \Exception("The provided id " . $id . " was not found in the container definition.");
}
private function validateJson(object $data): void {
// Validate against json schema
$validator = new Validator;
$validator->validate($data, (object)[file_get_contents(__DIR__ . '/../containers-schema.json')]);
if (!$validator->isValid()) {
error_log("JSON does not validate. Violations:");
foreach ($validator->getErrors() as $error) {
error_log((string)printf("[%s] %s\n", $error['property'], $error['message']));
}
}
}
/**
* @return array
*/
private function GetDefinition(bool $latest): array
private function GetDefinition(): array
{
$rawData = file_get_contents(__DIR__ . '/../containers.json');
$objectData = json_decode($rawData, false);
$this->validateJson($objectData);
$data = json_decode($rawData, true);
$data = json_decode(file_get_contents(__DIR__ . '/../containers.json'), true);
$additionalContainerNames = [];
foreach ($this->configurationManager->GetEnabledCommunityContainers() as $communityContainer) {
if ($communityContainer !== '') {
$path = DataConst::GetCommunityContainersDirectory() . '/' . $communityContainer . '/' . $communityContainer . '.json';
$additionalData = json_decode(file_get_contents($path), true);
$data = array_merge_recursive($data, $additionalData);
if (isset($additionalData['aio_services_v1'][0]['display_name']) && $additionalData['aio_services_v1'][0]['display_name'] !== '') {
// Store container_name of community containers in variable for later
$additionalContainerNames[] = $additionalData['aio_services_v1'][0]['container_name'];
}
}
}
$containers = [];
foreach ($data['aio_services_v1'] as $entry) {
@@ -101,17 +99,7 @@ class ContainerDefinitionFetcher
$ports = new ContainerPorts();
if (isset($entry['ports'])) {
foreach ($entry['ports'] as $value) {
if ($value['port_number'] === '%APACHE_PORT%') {
$value['port_number'] = $this->configurationManager->GetApachePort();
} elseif ($value['port_number'] === '%TALK_PORT%') {
$value['port_number'] = $this->configurationManager->GetTalkPort();
}
if ($value['ip_binding'] === '%APACHE_IP_BINDING%') {
$value['ip_binding'] = $this->configurationManager->GetApacheIPBinding();
}
foreach ($entry['ports'] as $value) {
$ports->AddPort(
new ContainerPort(
$value['port_number'],
@@ -170,7 +158,16 @@ class ContainerDefinitionFetcher
$dependsOn = [];
if (isset($entry['depends_on'])) {
foreach ($entry['depends_on'] as $value) {
$valueDependsOn = $entry['depends_on'];
if ($entry['container_name'] === 'nextcloud-aio-apache') {
// Add community containers first and default ones last so that aio_variables works correctly
$valueDependsOnTemp = [];
foreach ($additionalContainerNames as $containerName) {
$valueDependsOnTemp[] = $containerName;
}
$valueDependsOn = array_merge_recursive($valueDependsOnTemp, $valueDependsOn);
}
foreach ($valueDependsOn as $value) {
if ($value === 'nextcloud-aio-clamav') {
if (!$this->configurationManager->isClamavEnabled()) {
continue;
@@ -215,6 +212,13 @@ class ContainerDefinitionFetcher
}
}
$aioVariables = new AioVariables();
if (isset($entry['aio_variables'])) {
foreach ($entry['aio_variables'] as $value) {
$aioVariables->AddVariable($value);
}
}
$displayName = '';
if (isset($entry['display_name'])) {
$displayName = $entry['display_name'];
@@ -285,11 +289,16 @@ class ContainerDefinitionFetcher
$init = $entry['init'];
}
$imageTag = '';
$imageTag = '%AIO_CHANNEL%';
if (isset($entry['image_tag'])) {
$imageTag = $entry['image_tag'];
}
$documentation = '';
if (isset($entry['documentation'])) {
$documentation = $entry['documentation'];
}
$containers[] = new Container(
$entry['container_name'],
$displayName,
@@ -312,6 +321,8 @@ class ContainerDefinitionFetcher
$tmpfs,
$init,
$imageTag,
$aioVariables,
$documentation,
$this->container->get(DockerActionManager::class)
);
}
@@ -321,35 +332,6 @@ class ContainerDefinitionFetcher
public function FetchDefinition(): array
{
if (!file_exists(DataConst::GetDataDirectory() . '/containers.json')) {
$containers = $this->GetDefinition(true);
} else {
$containers = $this->GetDefinition(false);
}
$borgBackupMode = $this->configurationManager->GetBorgBackupMode();
$fetchLatest = false;
foreach ($containers as $container) {
if ($container->GetIdentifier() === 'nextcloud-aio-borgbackup') {
if ($container->GetRunningState() === RunningState::class) {
if ($borgBackupMode !== 'backup' && $borgBackupMode !== 'restore') {
$fetchLatest = true;
}
} else {
$fetchLatest = true;
}
} elseif ($container->GetIdentifier() === 'nextcloud-aio-watchtower' && $container->GetRunningState() === RunningState::class) {
return $containers;
}
}
if ($fetchLatest === true) {
$containers = $this->GetDefinition(true);
}
return $containers;
return $this->GetDefinition();
}
}

View File

@@ -49,8 +49,13 @@ class ConfigurationController
} else {
$enableAutomaticUpdates = false;
}
if (isset($request->getParsedBody()['success_notification'])) {
$successNotification = true;
} else {
$successNotification = false;
}
$dailyBackupTime = $request->getParsedBody()['daily_backup_time'] ?? '';
$this->configurationManager->SetDailyBackupTime($dailyBackupTime, $enableAutomaticUpdates);
$this->configurationManager->SetDailyBackupTime($dailyBackupTime, $enableAutomaticUpdates, $successNotification);
}
if (isset($request->getParsedBody()['delete_daily_backup_time'])) {

View File

@@ -21,7 +21,11 @@ $nextcloudContainer = $containerDefinitionFetcher->GetContainerById($id);
$backupExitCode = $dockerActionManger->GetBackupcontainerExitCode();
if ($backupExitCode === 0) {
$dockerActionManger->sendNotification($nextcloudContainer, 'Daily backup successful!', 'You can get further info by looking at the backup logs in the AIO interface.');
if (getenv('SEND_SUCCESS_NOTIFICATIONS') === "0") {
error_log("Daily backup successful! Only logging successful backup and not sending backup notification since that has been disabled! You can get further info by looking at the backup logs in the AIO interface.");
} else {
$dockerActionManger->sendNotification($nextcloudContainer, 'Daily backup successful!', 'You can get further info by looking at the backup logs in the AIO interface.');
}
}
if ($backupExitCode > 0) {

View File

@@ -676,7 +676,7 @@ class ConfigurationManager
/**
* @throws InvalidSettingConfigurationException
*/
public function SetDailyBackupTime(string $time, bool $enableAutomaticUpdates) : void {
public function SetDailyBackupTime(string $time, bool $enableAutomaticUpdates, bool $successNotification) : void {
if ($time === "") {
throw new InvalidSettingConfigurationException("The daily backup time must not be empty!");
}
@@ -687,6 +687,13 @@ class ConfigurationManager
if ($enableAutomaticUpdates === false) {
$time .= PHP_EOL . 'automaticUpdatesAreNotEnabled';
} else {
$time .= PHP_EOL;
}
if ($successNotification === false) {
$time .= PHP_EOL . 'successNotificationsAreNotEnabled';
} else {
$time .= PHP_EOL;
}
file_put_contents(DataConst::GetDailyBackupTimeFile(), $time);
}
@@ -729,7 +736,7 @@ class ConfigurationManager
// Trim all unwanted chars on both sites
$entry = trim($entry);
if ($entry !== "") {
if (!preg_match("#^/[.0-1a-zA-Z/-_]+$#", $entry) && !preg_match("#^[.0-1a-zA-Z_-]+$#", $entry)) {
if (!preg_match("#^/[.0-1a-zA-Z/_-]+$#", $entry) && !preg_match("#^[.0-1a-zA-Z_-]+$#", $entry)) {
throw new InvalidSettingConfigurationException("You entered unallowed characters! Problematic is " . $entry);
}
$validDirectories .= rtrim($entry, '/') . PHP_EOL;
@@ -874,6 +881,17 @@ class ConfigurationManager
}
}
private function GetCommunityContainers() : string {
$envVariableName = 'AIO_COMMUNITY_CONTAINERS';
$configName = 'aio_community_containers';
$defaultValue = '';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetEnabledCommunityContainers() : array {
return explode(' ', $this->GetCommunityContainers());
}
private function GetEnabledDriDevice() : string {
$envVariableName = 'NEXTCLOUD_ENABLE_DRI_DEVICE';
$configName = 'nextcloud_enable_dri_device';

View File

@@ -50,4 +50,8 @@ class DataConst {
public static function GetSessionDateFile() : string {
return self::GetDataDirectory() . '/session_date_file';
}
public static function GetCommunityContainersDirectory() : string {
return realpath(__DIR__ . '/../../../community-containers/');
}
}

View File

@@ -49,7 +49,7 @@ class DockerActionManager
private function BuildImageName(Container $container) : string {
$tag = $container->GetImageTag();
if ($tag === '') {
if ($tag === '%AIO_CHANNEL%') {
$tag = $this->GetCurrentChannel();
}
return $container->GetContainerName() . ':' . $tag;
@@ -100,7 +100,7 @@ class DockerActionManager
public function GetContainerUpdateState(Container $container) : IContainerState
{
$tag = $container->GetImageTag();
if ($tag === '') {
if ($tag === '%AIO_CHANNEL%') {
$tag = $this->GetCurrentChannel();
}
@@ -248,6 +248,15 @@ class DockerActionManager
$this->configurationManager->GetAndGenerateSecret($secret);
}
$aioVariables = $container->GetAioVariables()->GetVariables();
foreach($aioVariables as $variable) {
$config = $this->configurationManager->GetConfig();
$variableArray = explode('=', $variable);
$config[$variableArray[0]] = $variableArray[1];
$this->configurationManager->WriteConfig($config);
sleep(1);
}
$envs = $container->GetEnvironmentVariables()->GetVariables();
// Special thing for the nextcloud container
if ($container->GetIdentifier() === 'nextcloud-aio-nextcloud') {
@@ -280,6 +289,8 @@ class DockerActionManager
$replacements[1] = $this->configurationManager->GetSelectedRestoreTime();
} elseif ($out[1] === 'APACHE_PORT') {
$replacements[1] = $this->configurationManager->GetApachePort();
} elseif ($out[1] === 'APACHE_IP_BINDING') {
$replacements[1] = $this->configurationManager->GetApacheIPBinding();
} elseif ($out[1] === 'TALK_PORT') {
$replacements[1] = $this->configurationManager->GetTalkPort();
} elseif ($out[1] === 'NEXTCLOUD_MOUNT') {
@@ -415,7 +426,18 @@ class DockerActionManager
$exposedPorts = [];
if ($container->GetInternalPort() !== 'host') {
foreach($container->GetPorts()->GetPorts() as $value) {
$portWithProtocol = $value->port . '/' . $value->protocol;
$port = $value->port;
$protocol = $value->protocol;
if ($port === '%APACHE_PORT%') {
$port = $this->configurationManager->GetApachePort();
// Do not expose udp if AIO is in reverse proxy mode
if ($port !== '443' && $protocol === 'udp') {
continue;
}
} else if ($port === '%TALK_PORT%') {
$port = $this->configurationManager->GetTalkPort();
}
$portWithProtocol = $port . '/' . $protocol;
$exposedPorts[$portWithProtocol] = null;
}
$requestBody['HostConfig']['NetworkMode'] = 'nextcloud-aio';
@@ -427,8 +449,20 @@ class DockerActionManager
$requestBody['ExposedPorts'] = $exposedPorts;
foreach ($container->GetPorts()->GetPorts() as $value) {
$port = $value->port;
$ipBinding = $value->ipBinding;
$protocol = $value->protocol;
if ($port === '%APACHE_PORT%') {
$port = $this->configurationManager->GetApachePort();
// Do not expose udp if AIO is in reverse proxy mode
if ($port !== '443' && $protocol === 'udp') {
continue;
}
} else if ($port === '%TALK_PORT%') {
$port = $this->configurationManager->GetTalkPort();
}
$ipBinding = $value->ipBinding;
if ($ipBinding === '%APACHE_IP_BINDING%') {
$ipBinding = $this->configurationManager->GetApacheIPBinding();
}
$portWithProtocol = $port . '/' . $protocol;
$requestBody['HostConfig']['PortBindings'][$portWithProtocol] = [
[
@@ -476,6 +510,11 @@ class DockerActionManager
$requestBody['HostConfig']['CapAdd'] = $capAdds;
}
// Disable arp spoofing
if (!in_array('NET_RAW', $capAdds, true)) {
$requestBody['HostConfig']['CapDrop'] = ['NET_RAW'];
}
if ($container->isApparmorUnconfined()) {
$requestBody['HostConfig']['SecurityOpt'] = ["apparmor:unconfined"];
}

View File

@@ -16,7 +16,7 @@
</header>
<div class="content">
<h1>Nextcloud AIO v7.3.0</h1>
<h1>Nextcloud AIO v7.5.1</h1>
{# Add 2nd tab warning #}
<script type="text/javascript" src="second-tab-warning.js"></script>
@@ -257,13 +257,25 @@
<li>
{% if class(container.GetStartingState()) == 'AIO\\Container\\State\\StartingState' %}
<span class="status running"></span>
<span>{{container.GetDisplayName()}} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}">Starting</a>)</span>
<span>{{ container.GetDisplayName() }} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}">Starting</a>)
{% if container.GetDocumentation() != '' %}
(<a href="{{ container.GetDocumentation() }}">docs</a>)
{% endif %}
</span>
{% elseif class(container.GetRunningState()) == 'AIO\\Container\\State\\RunningState' %}
<span class="status success"></span>
<span>{{container.GetDisplayName()}} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}">Running</a>)</span>
<span>{{ container.GetDisplayName() }} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}">Running</a>)
{% if container.GetDocumentation() != '' %}
(<a href="{{ container.GetDocumentation() }}">docs</a>)
{% endif %}
</span>
{% else %}
<span class="status error"></span>
<span>{{container.GetDisplayName()}} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}">Stopped</a>)</span>
<span>{{ container.GetDisplayName() }} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}">Stopped</a>)
{% if container.GetDocumentation() != '' %}
(<a href="{{ container.GetDocumentation() }}">docs</a>)
{% endif %}
</span>
{% endif %}
</li>
{% endif %}
@@ -310,7 +322,7 @@
Restore or Backup currently running. Cannot start the containers until that's done.<br /><br />
{% else %}
{% if was_start_button_clicked == false %}
<br>Clicking on the button below will download all docker containers and start them. This can take a lot of time depending on your internect connection. Since the overall size is a few GB, this will take around 5-10 min or more. So be aware and patient!<br><br>
<br>Clicking on the button below will download all docker containers and start them. This can take a lot of time depending on your internet connection. Since the overall size is a few GB, this will take around 5-10 min or more. So be aware and patient!<br><br>
{% endif %}
{% if is_mastercontainer_update_available == true %}
⚠️ A mastercontainer update is available. Please click on the button below to update it.<br><br>
@@ -354,7 +366,7 @@
{% else %}
{% if is_backup_container_running == false and borg_backup_host_location == "" and isApacheStarting != true %}
<h2>Backup and restore</h2>
Please type in the directory where backups will get created on the host system:<br><br>
Please type in the directory where backups will get created on the host system below. In best case make sure that you choose a location on a separate drive and not on your root drive.<br><br>
<form method="POST" action="/api/configuration" class="xhr">
<input type="text" name="borg_backup_host_location" placeholder="/mnt/backup"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
@@ -412,6 +424,7 @@
Please save it at a safe place since you won't be able to restore from backup if you lose this password! <br /><br/>
Backed up will get all important data of your Nextcloud AIO instance like the database, your files and configuration files of the mastercontainer and else. <br /><br/>
The backup itself uses a tool that is called <a href="https://github.com/borgbackup/borg#what-is-borgbackup"><b>BorgBackup</b></a> which is a well-known server backup tool that efficiently backs up your files and encrypts them on the fly. <br /><br/>
By using this tool, backups are incremental, differential, compressed and encrypted so only the first backup will take a while. Further backups should be fast as only changes are taken into account.<br /><br/>
Backups get created in the following directory on the host: <b>{{ borg_backup_host_location }}/borg</b> <br /><br/>
Be aware that this solution does not back up files and folders that are mounted into Nextcloud using the external storage app - but you can add further Docker volumes and host paths that you want to back up after the initial backup is done.<br><br>
Regarding backup retention, see <b><a href="https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy">this</a></b>.<br><br>
@@ -448,7 +461,7 @@
</form>
<h3>Backup restore</h3>
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will overwrite all your files with the state of the backup so you should consider creating a backup first. It also makes sense to run an integrity check before restoring your files but is not mandatory since it shouldn't be needed in most situations. Please note that this will not restore additionally chosen backup directories!<br><br>
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will overwrite all your files with the state of the backup so you should consider creating a backup first. It also makes sense to run an integrity check before restoring your files but is not mandatory since it shouldn't be needed in most situations. Please note that this will not restore additionally chosen backup directories! The restore process should be pretty fast as rsync is used to restore the chosen backup which only transfers changed files and deletes additional ones.<br><br>
<form method="POST" action="/api/docker/restore" class="xhr" id="restore_selection">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
@@ -462,13 +475,14 @@
<h3>Daily backup and automatic updates</h3>
{% if daily_backup_time == "" %}
By entering a time below, you can enable daily backups. It will create them at the entered time in 24h format. E.g. <b>04:00</b> will create backups at 4 am UTC and <b>16:00</b> at 4 pm UTC.<br><br/>
By entering a time below, you can enable daily backups. It will create them at the entered time in 24h format. E.g. <b>04:00</b> will create backups at 4 am UTC and <b>16:00</b> at 4 pm UTC. For creating the backup, it will stop the containers and start them back up after the backup is done.<br><br/>
<form method="POST" action="/api/configuration" class="xhr">
<input type="text" name="daily_backup_time" value="04:00" placeholder="04:00"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit backup time" /><br>
<input type="checkbox" id="automatic_updates" name="automatic_updates" checked="checked"><label for="automatic_updates">Automatically update all containers, the mastercontainer and on saturdays your Nextcloud apps</label><br>
<input type="checkbox" id="success_notification" name="success_notification" checked="checked"><label for="success_notification">Send notifications about successful backups (notifications about unsuccessful backups will always be sent)</label><br>
</form>
{% else %}
Daily backups will be created at <b>{{ daily_backup_time }} UTC</b> which includes a notification about the result of the backup.
@@ -528,12 +542,12 @@
{% endif %}
{% endif %}
{% if is_backup_container_running == false %}
<h2>Optional addons</h2>
In this section you can enable or disable optional addons.<br><br>
<h2>Optional containers</h2>
In this section you can enable or disable optional containers. There are further community containers available that are not listed below. See <b><a href="https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers">this documentation</a></b> how to add them.<br><br>
{% if isAnyRunning == true %}
<b>Please note:</b> You can enable or disable them when your containers are stopped.<br><br>
{% else %}
<b>Please note:</b> Make sure to save your changes by clicking on the button <b>Save changes</b> that is positioned below the list of optional addons. The changes will not be auto-saved.<br><br>
<b>Please note:</b> Make sure to save your changes by clicking on the button <b>Save changes</b> that is positioned below the list of optional containers. The changes will not be auto-saved.<br><br>
{% endif %}
<form id="options-form" method="POST" action="/api/configuration" class="xhr">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
@@ -577,12 +591,12 @@
{% if is_docker_socket_proxy_enabled == true %}
<input type="checkbox" id="docker-socket-proxy" name="docker-socket-proxy" checked="checked"><label for="docker-socket-proxy">Docker Socket Proxy (needed for <a href="https://github.com/cloud-py-api/app_api#nextcloud-appapi">Nextcloud App API</a>)</label><br><br>
{% else %}
{# <input type="checkbox" id="docker-socket-proxy" name="docker-socket-proxy"><label for="docker-socket-proxy">Docker Socket Proxy (needed for <a href="https://github.com/cloud-py-api/app_api#nextcloud-appapi">Nextcloud App API</a>)</label><br><br> #}
<input type="checkbox" id="docker-socket-proxy" name="docker-socket-proxy"><label for="docker-socket-proxy">Docker Socket Proxy (needed for <a href="https://github.com/cloud-py-api/app_api#nextcloud-appapi">Nextcloud App API</a>)</label><br><br>
{% endif %}
<input id="options-form-submit" class="button" type="submit" value="Save changes" />
<script type="text/javascript" src="options-form-submit.js"></script>
</form>
<b>Minimal system requirements:</b> When any optional addon is enabled, at least 2GB RAM, a dual-core CPU and 40GB system storage are required. When enabling ClamAV, Nextcloud Talk Recording-server or Fulltextsearch, at least 3GB RAM are required. For Talk Recording-server additional 2 vCPUs are required. When enabling everything, at least 5GB RAM and a quad-core CPU are required. Recommended are at least 1GB more RAM than the minimal requirement. For further advices and recommendations see <b><a href="https://github.com/nextcloud/all-in-one/discussions/1335">this documentation</a></b><br>
<b>Minimal system requirements:</b> When any optional container is enabled, at least 2GB RAM, a dual-core CPU and 40GB system storage are required. When enabling ClamAV, Nextcloud Talk Recording-server or Fulltextsearch, at least 3GB RAM are required. For Talk Recording-server additional 2 vCPUs are required. When enabling everything, at least 5GB RAM and a quad-core CPU are required. Recommended are at least 1GB more RAM than the minimal requirement. For further advices and recommendations see <b><a href="https://github.com/nextcloud/all-in-one/discussions/1335">this documentation</a></b><br>
{% if isAnyRunning == true or is_x64_platform == false %}
<script type="text/javascript" src="disable-clamav.js"></script>
{% endif %}

View File

@@ -43,6 +43,7 @@ Included are:
- Possibility included to [permanently add additional PHP extensions into the Nextcloud container](https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container) without having to build your own Docker image
- Possibility included to [pass the needed device for hardware transcoding](https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud) to the Nextcloud container
- Possibility included to [store all docker related files on a separate drive](https://github.com/nextcloud/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drive)
- [Additional features can be added very easily](https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers)
- [LDAP can be used as user backend for Nextcloud](https://github.com/nextcloud/all-in-one/tree/main#ldap)
- Migration from any former Nextcloud installation to AIO is possible. See [this documentation](https://github.com/nextcloud/all-in-one/blob/main/migration.md)
- [Fail2Ban can be added](https://github.com/nextcloud/all-in-one#fail2ban)
@@ -266,6 +267,7 @@ Now that this is out of the way, the recommended way how to access Nextcloud loc
- https://help.nextcloud.com/t/need-help-to-configure-internal-access/156075/6
- https://howchoo.com/pi/pi-hole-setup together with https://web.archive.org/web/20221203223505/https://docs.callitkarma.me/posts/PiHole-Local-DNS/
- https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html
Apart from that there is now a community container that can be added to the AIO stack: https://github.com/nextcloud/all-in-one/tree/main/community-containers/pi-hole
### How to skip the domain validation?
If you are completely sure that you've configured everything correctly and are not able to pass the domain validation, you may skip the domain validation by adding `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used).
@@ -338,10 +340,12 @@ Here is how to reset the AIO instance properly:
1. And you are done! Now feel free to start over with the recommended docker run command!
### Backup solution
Nextcloud AIO provides a local backup solution based on [BorgBackup](https://github.com/borgbackup/borg#what-is-borgbackup). These backups act as a local restore point in case the installation gets corrupted.
Nextcloud AIO provides a local backup solution based on [BorgBackup](https://github.com/borgbackup/borg#what-is-borgbackup). These backups act as a local restore point in case the installation gets corrupted. By using this tool, backups are incremental, differential, compressed and encrypted so only the first backup will take a while. Further backups should be fast as only changes are taken into account.
It is recommended to create a backup before any container update. By doing this, you will be safe regarding any possible complication during updates because you will be able to restore the whole instance with basically one click.
The restore process should be pretty fast as rsync is used to restore the chosen backup which only transfers changed files and deletes additional ones.
If you connect an external drive to your host, and choose the backup directory to be on that drive, you are also kind of safe against drive failures of the drive where the docker volumes are stored on.
<details>
@@ -640,7 +644,7 @@ Yes. For that to work, you need to use and follow the [helm-chart documentation]
You can run AIO also with docker rootless. How to do this is documented here: [docker-rootless.md](https://github.com/nextcloud/all-in-one/blob/main/docker-rootless.md)
### Can I run this with Podman instead of Docker?
No. Since Podman is not 100% compatible with the Docker API, you cannot use Podman instead of Docker (since that would add yet another platform where the maintainer would need to test on). However you can use and follow the [manual-install documentation](./manual-install/) to get AIO's containers running with Podman or use Docker rootless, as described in the above section.
Since Podman is not 100% compatible with the Docker API, Podman is not supported (since that would add yet another platform where the maintainer would need to test on). However you can use and follow the [manual-install documentation](./manual-install/) to get AIO's containers running with Podman or use Docker rootless, as described in the above section. Also there is this now: https://github.com/nextcloud/all-in-one/discussions/3487
### How to change the Nextcloud apps that are installed on the first startup?
You might want to adjust the Nextcloud apps that are installed upon the first startup of the Nextcloud container. You can do so by adding `--env NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts notes"` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and customize the value to your fitting. It must be a string with small letters a-z, 0-9, spaces and hyphens or '_'. You can disable shipped and by default enabled apps by adding a hyphen in front of the appid. E.g. `-contactsinteraction`.
@@ -685,28 +689,28 @@ You can edit Nextclouds config.php file directly from the host with your favorit
If you want to define a custom skeleton directory, you can do so by copying your skeleton files `sudo docker cp --follow-link /path/to/nextcloud/skeleton/ nextcloud-aio-nextcloud:/mnt/ncdata/skeleton/`, applying the correct permissions with `sudo docker exec nextcloud-aio-nextcloud chown -R 33:0 /mnt/ncdata/skeleton/` and `sudo docker exec nextcloud-aio-nextcloud chmod -R 750 /mnt/ncdata/skeleton/` and setting the skeleton directory option with `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:system:set skeletondirectory --value="/mnt/ncdata/skeleton"`. You can read further on this option here: [click here](https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html?highlight=skeletondir#:~:text=adding%20%3Fdirect%3D1-,'skeletondirectory',-%3D%3E%20'%2Fpath%2Fto%2Fnextcloud)
### Fail2ban
You can configure your server to block certain ip-addresses using fail2ban as bruteforce protection. Here is how to set it up: https://docs.nextcloud.com/server/stable/admin_manual/installation/harden_server.html#setup-fail2ban. The logpath of AIO is by default `/var/lib/docker/volumes/nextcloud_aio_nextcloud/_data/data/nextcloud.log`. Do not forget to add `chain=DOCKER-USER` to your nextcloud jail config (`nextcloud.local`) otherwise the nextcloud service running on docker will still be accessible even if the IP is banned. Also, you may change the blocked ports to cover all AIO ports: by default `80,443,8080,8443,3478` (see [this](https://github.com/nextcloud/all-in-one#explanation-of-used-ports))
You can configure your server to block certain ip-addresses using fail2ban as bruteforce protection. Here is how to set it up: https://docs.nextcloud.com/server/stable/admin_manual/installation/harden_server.html#setup-fail2ban. The logpath of AIO is by default `/var/lib/docker/volumes/nextcloud_aio_nextcloud/_data/data/nextcloud.log`. Do not forget to add `chain=DOCKER-USER` to your nextcloud jail config (`nextcloud.local`) otherwise the nextcloud service running on docker will still be accessible even if the IP is banned. Also, you may change the blocked ports to cover all AIO ports: by default `80,443,8080,8443,3478` (see [this](https://github.com/nextcloud/all-in-one#explanation-of-used-ports)). Apart from that there is now a community container that can be added to the AIO stack: https://github.com/nextcloud/all-in-one/tree/main/community-containers/fail2ban
### LDAP
It is possible to connect to an existing LDAP server. You need to make sure that the LDAP server is reachable from the Nextcloud container. Then you can enable the LDAP app and configure LDAP in Nextcloud manually. If you don't have a LDAP server yet, recommended is to use this docker container: https://hub.docker.com/r/nitnelave/lldap. Make sure here as well that Nextcloud can talk to the LDAP server. The easiest way is by adding the LDAP docker container to the docker network `nextcloud-aio`. Then you can connect to the LDAP container by its name from the Nextcloud container.
It is possible to connect to an existing LDAP server. You need to make sure that the LDAP server is reachable from the Nextcloud container. Then you can enable the LDAP app and configure LDAP in Nextcloud manually. If you don't have a LDAP server yet, recommended is to use this docker container: https://hub.docker.com/r/nitnelave/lldap. Make sure here as well that Nextcloud can talk to the LDAP server. The easiest way is by adding the LDAP docker container to the docker network `nextcloud-aio`. Then you can connect to the LDAP container by its name from the Nextcloud container. Apart from that there is now a way for the community to add containers: https://github.com/nextcloud/all-in-one/discussions/406#discussioncomment-7133555
### Netdata
Netdata allows you to monitor your server using a GUI. You can install it by following https://learn.netdata.cloud/docs/agent/packaging/docker#create-a-new-netdata-agent-container.
Netdata allows you to monitor your server using a GUI. You can install it by following https://learn.netdata.cloud/docs/agent/packaging/docker#create-a-new-netdata-agent-container. Apart from that there is now a way for the community to add containers: https://github.com/nextcloud/all-in-one/discussions/392#discussioncomment-7133563
### USER_SQL
If you want to use the user_sql app, the easiest way is to create an additional database container and add it to the docker network `nextcloud-aio`. Then the Nextcloud container should be able to talk to the database container using its name.
### phpMyAdmin, Adminer or pgAdmin
It is possible to install any of these to get a GUI for your AIO database. The pgAdmin container is recommended. You can get some docs on it here: https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html. For the container to connect to the aio-database, you need to connect the container to the docker network `nextcloud-aio` and use `nextcloud-aio-database` as database host, `oc_nextcloud` as database username and the password that you get when running `sudo docker exec nextcloud-aio-nextcloud grep dbpassword config/config.php` as the password.
It is possible to install any of these to get a GUI for your AIO database. The pgAdmin container is recommended. You can get some docs on it here: https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html. For the container to connect to the aio-database, you need to connect the container to the docker network `nextcloud-aio` and use `nextcloud-aio-database` as database host, `oc_nextcloud` as database username and the password that you get when running `sudo docker exec nextcloud-aio-nextcloud grep dbpassword config/config.php` as the password. Apart from that there is now a way for the community to add containers: https://github.com/nextcloud/all-in-one/discussions/3061#discussioncomment-7307045
### Mail server
You can configure one yourself by using either of these three recommended projects: [Docker Mailserver](https://github.com/docker-mailserver/docker-mailserver/#docker-mailserver), [Maddy Mail Server](https://github.com/foxcpp/maddy#maddy-mail-server) or [Mailcow](https://github.com/mailcow/mailcow-dockerized#mailcow-dockerized-------). Docker Mailserver and Maddy Mail Server are probably a bit easier to set up as it is possible to run them using only one container but Mailcow has much more features.
You can configure one yourself by using either of these three recommended projects: [Docker Mailserver](https://github.com/docker-mailserver/docker-mailserver/#docker-mailserver), [Mailu](https://github.com/Mailu/Mailu), [Maddy Mail Server](https://github.com/foxcpp/maddy#maddy-mail-server) or [Mailcow](https://github.com/mailcow/mailcow-dockerized#mailcow-dockerized-------). Docker Mailserver and Maddy Mail Server are probably a bit easier to set up as it is possible to run them using only one container but Mailcow and Mailu both have more features. Apart from that there is now a way for the community to add containers: https://github.com/nextcloud/all-in-one/discussions/356#discussioncomment-7133547
### How to migrate from an already existing Nextcloud installation to Nextcloud AIO?
Please see the following documentation on this: [migration.md](https://github.com/nextcloud/all-in-one/blob/main/migration.md)
### Requirements for integrating new containers
For integrating new containers, they must pass specific requirements for being considered to get integrated in AIO itself. Even if not considered, we may add some documentation on it.
For integrating new containers, they must pass specific requirements for being considered to get integrated in AIO itself. Even if not considered, we may add some documentation on it. Also there is this now: https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers
What are the requirements?
1. New containers must be related to Nextcloud. Related means that there must be a feature in Nextcloud that gets added by adding this container.
@@ -714,6 +718,9 @@ What are the requirements?
3. The feature that gets added into Nextcloud by adding the container must be maintained by the Nextcloud GmbH.
4. It must be possible to run the container without big quirks inside docker containers. Big quirks means e.g. needing to change the capabilities or security options.
5. The container should not mount directories from the host into the container: only docker volumes should be used.
6. The container must be usable by more than 90% of the users (e.g. not too high system requirements and such)
7. No additional setup should be needed after adding the container - it should work completely out of the box.
8. If the container requires being exposed, only subfolders are supported. So the container should not require its own (sub-)domain and must be able to run in a subfolder.
### How to trust user-defined Certification Authorities (CA)?
For some applications it might be necessary to establish a secure connection to another host/server which is using a certificate issued by a Certification Authority that is not trusted out of the box. An example could be configuring LDAPS against a domain controller (Active Directory or Samba-based) of an organization.

View File

@@ -4,7 +4,7 @@ A [reverse proxy](https://en.wikipedia.org/wiki/Reverse_proxy) is basically a we
**Please note:** Publishing the AIO interface with a valid certificate to the public internet is **not** the goal of this documentation! Instead, the main goal is to publish Nextcloud with a valid certificate to the public internet which is **not** running inside the mastercontainer but in a different container! If you need a valid certificate for the AIO interface, see [point 5](#5-optional-get-a-valid-certificate-for-the-aio-interface).
In order to run Nextcloud behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else), you need to specify the port that AIO's Apache container shall use, add a specific config to your web server or reverse proxy and modify the startup command a bit. All examples below will use port `11000` as example Apache port which will be exposed on the host to receive unencrypted HTTP traffic from the reverse proxy. Modify the port to your needings.
In order to run Nextcloud behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else), you need to specify the port that AIO's Apache container shall use, add a specific config to your web server or reverse proxy and modify the startup command a bit. All examples below will use port `11000` as example `APACHE_PORT` which will be exposed on the host to receive unencrypted HTTP traffic from the reverse proxy. **Advice:** If you need https between Nextcloud and the reverse proxy because it is running on a different server in the same network, simply add another reverse proxy to the chain that runs on the same server like AIO and takes care of https proxying (most likely via self-signed cert). Another option is to create a VPN between the server that runs AIO and the server that runs the reverse proxy which takes care of encrypting the connection.
**Attention:** The process to run Nextcloud behind a reverse proxy consists of at least steps 1, 2 and 4:
1. **Configure the reverse proxy! See [point 1](#1-add-this-to-your-reverse-proxy-config)**
@@ -18,6 +18,20 @@ In order to run Nextcloud behind a web server or reverse proxy (like Apache, Ngi
**Please note:** Since the Apache container gets created by the mastercontainer, there is **NO** way to provide custom docker labels or custom environmental variables for the Apache container. So please do not attempt to do this because you will fail! Only the documented way will work!
### Adaptation of the respective sample configuration
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also make sure to adjust the port `11000` to match the chosen `APACHE_PORT`. Additionally, you might need to adjust `localhost` or `127.0.0.1` based on your setup. See below.
**Running the Reverse Proxy on the same server, not in a container**<br>
For this setup, the default sample configurations with `localhost:$APACHE_PORT` should work.
**Running the Reverse Proxy in a Docker container on the same server**<br>
For this setup, you can use as target `host.docker.internal:$APACHE_PORT` instead of `localhost:$APACHE_PORT`.<br>
Another option and actually the recommended way in this case is to use `--network host` option (or `network_mode: host` for docker-compose) as setting for the reverse proxy container to connect it to the host network. If you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy manually. By doing so, the default sample configurations that point at `localhost:$APACHE_PORT` should work without having to modify them.
**Running the Reverse Proxy on a different server (no matter if in container or not)**<br>
For this setup, you need to use as target the private ip-address of the host that shall be running AIO. So e.g. `private.ip.address.of.aio.server:$APACHE_PORT` instead of `localhost:$APACHE_PORT`.<br>
If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` on the server that shall be running AIO. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux).
### Apache
<details>
@@ -83,7 +97,7 @@ Add this as a new Apache site config:
</VirtualHost>
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also make sure to adjust the port 11000 to match the chosen `APACHE_PORT`. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network (if you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy in that case manually). ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
To make the config work you can run the following command:
`sudo a2enmod rewrite proxy proxy_http proxy_wstunnel ssl headers http2`
@@ -105,7 +119,7 @@ https://<your-nc-domain>:443 {
```
The Caddyfile is a text file called `Caddyfile` (no extension) which if you should be running Caddy inside a container should usually be created in the same location as your `compose.yaml` file prior to starting the container.
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also make sure to adjust the port 11000 to match the chosen `APACHE_PORT`. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network (if you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy in that case manually). ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
**Advice:** You may have a look at [this](https://github.com/nextcloud/all-in-one/discussions/575#discussion-4055615) for a more complete example.
@@ -129,8 +143,11 @@ You can get AIO running using the ACME DNS-challenge. Here is how to do it.
}
}
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. You also need to adjust `<provider>` and `<key>` to match your case. Also make sure to adjust the port 11000 to match the chosen `APACHE_PORT`. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network (if you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy in that case manually). ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
1. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`) which will disable the dommain validation (because it is known that the domain validation will not when using the DNS-challenge since no port is publicly opened.
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
You also need to adjust `<provider>` and `<key>` to match your case.
1. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`) which will disable the domain validation (because it is known that the domain validation will not work when using the DNS-challenge since no port is publicly opened).
**Advice:** In order to make it work in your home network, you may add the internal ipv4-address of your reverse proxy as A DNS-record to your domain and disable the dns-rebind-protection in your router. Another way it to set up a local dns-server like a pi-hole and set up a custom dns-record for that domain that points to the internal ip-adddress of your reverse proxy (see https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally). If both is not possible, you may add the domain to the hosts file which is needed then for any devices that shall use the server.
@@ -152,10 +169,11 @@ For a reverse proxy example guide for Citrix ADC VPX / Citrix Netscaler, see thi
<summary>click here to expand</summary>
Although it does not seems like it is the case but from AIO perspective a Cloudflare Tunnel works like a reverse proxy. Please see the [caveats](https://github.com/nextcloud/all-in-one#notes-on-cloudflare-proxytunnel) before proceeding. Here is then how to make it work:
Although it does not seem like it is the case but from AIO perspective a Cloudflare Tunnel works like a reverse proxy. Please see the [caveats](https://github.com/nextcloud/all-in-one#notes-on-cloudflare-proxytunnel) before proceeding. Here is then how to make it work:
1. Install the Cloudflare Tunnel on the same machine where AIO will be running on and point the Tunnel with the domain that you want to use for AIO to `http://localhost:11000`. ***If the Tunnel is running on a different machine, you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
1. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command which will disable the dommain validation (because it is known that the domain validation will not work behind a Cloudflare Tunnel). So you need to ensure yourself that you've configured everything correctly.
1. Install the Cloudflare Tunnel on the same machine where AIO will be running on and point the Tunnel with the domain that you want to use for AIO to `http://localhost:11000`.<br>
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
1. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command which will disable the domain validation (because it is known that the domain validation will not work behind a Cloudflare Tunnel). So you need to ensure yourself that you've configured everything correctly.
**Advice:** Make sure to [disable Cloudflares Rocket Loader feature](https://help.nextcloud.com/t/login-page-not-working-solved/149417/8) as otherwise Nextcloud's login prompt will not be shown.
@@ -254,7 +272,7 @@ backend Nextcloud
server Nextcloud localhost:11000
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also make sure to adjust the port 11000 to match the chosen `APACHE_PORT`. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network (if you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy in that case manually). ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
</details>
@@ -344,7 +362,7 @@ server {
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also make sure to adjust the port 11000 to match the chosen `APACHE_PORT`. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network (if you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy in that case manually). ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `127.0.0.1` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
**Advice:** You may have a look at [this](https://github.com/nextcloud/all-in-one/discussions/588#discussioncomment-2811152) for a more complete example.
@@ -357,7 +375,7 @@ Of course you need to modify `<your-nc-domain>` to the domain on which you want
<summary>click here to expand</summary>
First, please make sure that the environmental variables `PUID` and `PGID` in the compose.yaml file for NPM are either unset or set to `0`.
If you need to change the GID/PID then please add `net.ipv4.ip_unprivileged_port_start=0` at the end of `/etc/sysctl.conf`. Note: this will cause that non root users can bind privilleged ports.
If you need to change the GID/PID then please add `net.ipv4.ip_unprivileged_port_start=0` at the end of `/etc/sysctl.conf`. Note: this will cause that non root users can bind privileged ports.
Second, see these screenshots for a working config:
@@ -375,7 +393,9 @@ proxy_read_timeout 86400s;
client_max_body_size 0;
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also change `<you>@<your-mail-provider-domain>` to a mail address of yours. Also make sure to adjust the port 11000 to match the chosen `APACHE_PORT`. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network (if you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy in that case manually). ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
Also change `<you>@<your-mail-provider-domain>` to a mail address of yours.
</details>
@@ -477,8 +497,7 @@ httpServer.on('upgrade', (req, socket, head) => {
});
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also make sure to adjust the port 11000 to match the chosen `APACHE_PORT`.
**Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network (if you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy in that case manually). ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
</details>
@@ -496,7 +515,7 @@ See these screenshots for a working config:
![image](https://user-images.githubusercontent.com/70434961/213193789-fa936edc-e307-4e6a-9a53-ae26d1bf2f42.jpg)
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also make sure to adjust the port 11000 to match the chosen `APACHE_PORT`. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network (if you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy in that case manually). ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
</details>
@@ -577,9 +596,7 @@ The examples below define the dynamic configuration in YAML files. If you rather
---
Of course you need to modify `<your-nextcloud-domain>` in the `nextcloud.yml` to the domain on which you want to run Nextcloud. Also make sure to adjust the port `11000` to match the chosen `APACHE_PORT`.
**Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network (if you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy in that case manually). ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
**Hint**: see https://www.youtube.com/watch?v=VLPSRrLMDmA for a video on configuring Traefik.
@@ -672,8 +689,7 @@ https://<your-nc-domain>:8443 {
}
}
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` when starting the reverse proxy container in order to connect the reverse proxy container to the host network. If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
Afterwards should the AIO interface be accessible via `https://ip.address.of.the.host:8443`. You can alternatively change the domain to a different subdomain by using `https://<your-alternative-domain>:443` instead of `https://<your-nc-domain>:8443` in the Caddyfile and use that to access the AIO interface.
@@ -683,7 +699,7 @@ If something does not work, follow the steps below:
1. Make sure that you used the docker run command that is described in this reverse proxy documentation. **Hint:** make sure that you have set the `APACHE_PORT` via e.g. `--env APACHE_PORT=11000` during the docker run command!
1. Make sure to set the `APACHE_IP_BINDING` variable correctly. If in doubt, set it to `--env APACHE_IP_BINDING=0.0.0.0`
1. Make sure that all ports to which your reverse proxy is pointing match the chosen `APACHE_PORT`.
1. Make sure that the reverse proxy is running on the host OS or if running in a container, connected to the host network. If that is not possible (e.g. on Windows or if the reverse proxy is running on a different host), substitute `localhost` or `127.0.0.1` in the default configurations by the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)
1. Make sure to follow [this](#adaptation-of-the-respective-sample-configuration) to adapt the example configurations to your specific setup
1. Make sure that the mastercontainer is able to spawn other containers. You can do so by checking that the mastercontainer indeed has access to the Docker socket which might not be positioned in one of the suggested directories like `/var/run/docker.sock` but in a different directory, based on your OS and the way how you installed Docker. The mastercontainer logs should help figuring this out. You can have a look at them by running `sudo docker logs nextcloud-aio-mastercontainer` after the container is started the first time.
1. Check if after the mastercontainer was started, the reverse proxy if running inside a container, can reach the provided apache port. You can test this by running `nc -z localhost 11000; echo $?` from inside the reverse proxy container. If the output is `0`, everything works. Alternatively you can of course use instead of `localhost` the ip-address of the host here for the test.
1. Make sure that you are not behind CGNAT. If that is the case, you will not be able to open ports properly. In that case you might use a Cloudflare Tunnel.
@@ -692,4 +708,3 @@ If something does not work, follow the steps below:
1. Check if you have a public IPv4- and public IPv6-address. If you only have a public IPv6-address (e.g. due to DS-Lite), make sure to enable IPv6 in Docker and your whole networking infrastructure (e.g. also by adding an AAAA DNS-entry to your domain).
1. Try to configure everything from scratch if it still does not work by following https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance.
1. As last resort, you may disable the domain validation by adding `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command. But only use this if you are completely sure that you've correctly configured everything!

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