Compare commits

..

815 Commits

Author SHA1 Message Date
Simon L
1605431827 substitute borg --progress by borg -v
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-04 17:10:21 +01:00
Simon L
d8f24b8862 try to fix the borg check
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-04 16:49:47 +01:00
Simon L
db9f88945c increase to v4.1.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-04 16:22:38 +01:00
Simon L
c0e22efdbc Merge pull request #1670 from nextcloud/enh/1537/repair-integrity
allow to repair the integrity of the backup archive
2023-01-04 16:21:45 +01:00
Simon L
bc7b3c4c54 add onclick warning
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-04 16:17:04 +01:00
Simon L
6b91fb7ca2 allow to repair the integrity of the backup archive
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-04 16:17:04 +01:00
Simon L
f46f86dde6 Merge pull request #1667 from nextcloud/aio-yaml-update
Yaml updates
2023-01-04 16:07:29 +01:00
Simon L
57b5ea53e8 Merge pull request #1671 from nextcloud/enh/1662/add-talk-ulimit
add ulimit for the talk container due to a bug in libwebsockets
2023-01-04 16:03:14 +01:00
Simon L
b189e7b773 add ulimit for the talk container due to a bug in libwebsockets
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-04 16:01:33 +01:00
Simon L
480b3193d4 add a debug advice for collabora and talk
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-04 14:47:56 +01:00
Simon L
86c84de68b Merge pull request #1658 from nextcloud/enh/noid/add-totp-back
add twofactor_totp back as default enabled app
2023-01-04 14:17:09 +01:00
szaimen
c9e2b183aa Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2023-01-04 12:16:14 +00:00
Simon L
39a46428c2 Merge pull request #1639 from nextcloud/aio-yaml-update
Yaml updates
2023-01-04 12:50:05 +01:00
Simon L
e047c2402b Merge pull request #1663 from nextcloud/enh/1643/set-remote-font-config-for-collabora
set remote_font_config for collabora
2023-01-04 12:32:35 +01:00
Simon L
17031c7b7f Merge pull request #1659 from nextcloud/enh/noid/devices
allow to add the /dev/dri device into the container and refactor devices
2023-01-04 12:31:13 +01:00
Simon L
34376d535f set remote_font_config for collabora
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-04 12:28:56 +01:00
Simon L
a0bbb86b13 add twofactor_totp back as default enabled app
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-03 14:42:57 +01:00
szaimen
ec0e5b645d Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2023-01-03 12:15:50 +00:00
Simon L
dc74c2f94f Merge pull request #1660 from nextcloud/automated/noid/psalm-baseline-update-1672719685
[Automated] Update psalm-baseline.xml
2023-01-03 09:06:53 +01:00
nextcloud-command
5fd210f9d8 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2023-01-03 04:21:25 +00:00
Simon L
92b271c3e5 allow to add the /dev/dri device into the container and refactor devices
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-03 02:13:34 +01:00
Simon L
7237433548 add some documentation for the apps-disable on startup feature
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 23:58:25 +01:00
Simon L
32245612b9 Merge pull request #1646 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20230101
Bump nextcloud/imaginary from 20221201 to 20230101 in /Containers/imaginary
2023-01-02 22:41:57 +01:00
Simon L
316fd3460c Merge pull request #1654 from nextcloud/enh/noid/allow-enable-apps
allow to enable shipped apps during startup
2023-01-02 22:38:18 +01:00
Simon L
03d761b240 allow to enable shipped apps during startup
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 22:33:03 +01:00
Simon L
cf27112c04 Merge pull request #1604 from nextcloud/enh/noid/improve-containers-schema
improve containeers schema
2023-01-02 22:19:09 +01:00
Simon L
de1eaf7707 add isset for non-required properties
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 22:14:36 +01:00
Simon L
f98528eac5 rename services to aio_services_v1
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 22:11:20 +01:00
Simon L
29197deb69 removed not-used properties from the containers definition
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 22:11:20 +01:00
Simon L
57e1d95643 improve containeers schema
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 22:11:20 +01:00
Simon L
0ef29ffb0c Merge pull request #1657 from nextcloud/enh/noid/fix-healtchecks
fix healthcheck for nextcloud and database
2023-01-02 21:50:38 +01:00
Simon L
ed5483500a Address review
Signed-off-by: Simon L <szaimen@e.mail.de>
Co-Authored-By: Zoey <zoey@z0ey.de>
2023-01-02 21:48:55 +01:00
Simon L
54c642e787 fix healthcheck for nextcloud and database
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 18:16:12 +01:00
Simon L
cd06678191 Merge pull request #1655 from nextcloud/enh/noid/fix-adding-containers-to-host-network
fix adding containers to the host network
2023-01-02 17:56:50 +01:00
Simon L
454269ec5b Merge pull request #1656 from nextcloud/enh/noid/fix-exposing-containers
fix exposing containers
2023-01-02 17:55:32 +01:00
Simon L
cb980f9e84 fix exposing containers
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 17:53:52 +01:00
Simon L
3e8cdf16b1 Merge pull request #1645 from nextcloud/enh/noid/add-types
add types for missing ones and bring psalm-baseline down to zero
2023-01-02 17:39:00 +01:00
Simon L
5f63e90922 fix adding containers to the host network
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 16:42:08 +01:00
Simon L
f272979c43 address review by making $args an array
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 15:46:58 +01:00
Simon L
8089ab83cf add types for missing ones
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-01-02 13:17:41 +01:00
dependabot[bot]
5bd7070593 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20221201 to 20230101.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-02 12:10:49 +00:00
Simon L
eaabc8e4b0 Merge pull request #1635 from nextcloud/enh/noid/refactor-container-ports
refactor containerports
2022-12-30 23:15:35 +01:00
Simon L
210252825a also fix the update-yaml script
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-30 23:11:02 +01:00
Simon L
5dc9fad2d6 refactor containerports
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-30 23:10:44 +01:00
Simon L
1194b7a1ff Merge pull request #1637 from nextcloud/enh/noid/refactor-volumes
rename volume name to source and volume location to destination
2022-12-30 23:08:59 +01:00
Simon L
6dd9412fb6 rename volume name to source and volume location to destination
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-30 22:56:37 +01:00
Simon L
e535abccc7 Merge pull request #1597 from nextcloud/enh/noid/allow-to-add-host-network
allow to add container to host network
2022-12-30 21:14:25 +01:00
Simon L
cea32f50af allow to add container to host network
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-30 21:08:52 +01:00
Simon L
9c968d33b9 Merge pull request #1596 from nextcloud/enh/noid/pre-generate-secrets
secrets should only get generated if defined in secrets of container.…
2022-12-30 20:51:21 +01:00
Simon L
209d2e0f9a Merge pull request #1631 from nextcloud/automated/noid/psalm-baseline-update-1672374034
[Automated] Update psalm-baseline.xml
2022-12-30 10:49:43 +01:00
nextcloud-command
10cdcaa98f Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-30 04:20:33 +00:00
Simon L
c21087d6d0 Merge pull request #1619 from nextcloud/change-healthchecks
change dockerfile links, add tzdata to fulltext, migrate healthchecks to nc
2022-12-29 16:40:28 +01:00
Zoey
88fda477c6 change dockerfile links, add tzdata to fulltext, migrate healthchecks to nc
Signed-off-by: Zoey <zoey@z0ey.de>
2022-12-29 16:38:59 +01:00
Simon L
75bea8fa1f Merge pull request #1615 from nextcloud/enh/1611/improve-healtcheck
improve healthcheck to only exit 1 if it is started
2022-12-29 16:36:22 +01:00
Simon L
91fc8e6f97 Merge pull request #1587 from nextcloud/enh/noid/update-mastercontainer-to-8.1
update mastercontainer to php 8.1
2022-12-29 14:09:12 +01:00
Simon L
03d8a7d4fe Merge pull request #1612 from nextcloud/aio-dependency-update
Dependency updates
2022-12-29 14:06:30 +01:00
Simon L
1813fc3793 Merge pull request #1622 from nextcloud/enh/1564/add-additional-output
borg - add progress back and add some additional output
2022-12-29 13:59:27 +01:00
Simon L
6cceeda738 fix the last command
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 13:56:36 +01:00
Simon L
e8974323aa Merge pull request #1620 from nextcloud/enh/1553/add-migration-import-docs
migration - add some documentation on limits regarding the database owner name
2022-12-29 13:51:07 +01:00
Simon L
e4214c2f1e Merge pull request #1621 from nextcloud/enh/noid/improve-database-initialization
allow to make wrong database intialization better debuggable
2022-12-29 13:50:24 +01:00
Simon L
d06b3a7b19 revert imagemagick6 change
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 13:43:47 +01:00
Simon L
7a6f350248 try imagemagick6
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 13:26:30 +01:00
szaimen
4621a74bb0 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-12-29 12:15:09 +00:00
Simon L
6f5b2cc94e Merge pull request #1627 from nextcloud/enh/noid/improve-imagick
move imagick back to the dockerfile
2022-12-29 13:07:40 +01:00
Simon L
e32a3e8d0c move imagick back to the dockerfile
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 13:05:54 +01:00
Simon L
810094daa3 try to make imagick work
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 12:31:59 +01:00
Simon L
a2cfa17b05 Merge pull request #1626 from nextcloud/enh/noid/addmore-formats
add other file types as well
2022-12-29 11:42:17 +01:00
Simon L
4d83172a91 add other file types as well
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 11:37:02 +01:00
Simon L
9a9f16ec2f Merge pull request #1625 from nextcloud/revert-1603-enh/noid/refactor-volumes
Revert "substitute volume variables in dockeractionmanager"
2022-12-29 11:31:12 +01:00
Simon L
1f2e23c447 Revert "substitute volume variables in dockeractionmanager"
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 11:30:14 +01:00
Simon L
44fb8368bf also add libheif-dev
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 11:25:33 +01:00
Simon L
6fdc539ff4 Merge pull request #1624 from nextcloud/fix/noid/avatar-generation
add freetype-dev and fontconfig-dev for compiliing imagick
2022-12-29 11:15:18 +01:00
Simon L
b684e8d1e1 add freetype-dev and fontconfig-dev for compiliing imagick
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 11:11:08 +01:00
Simon L
417c6771c8 Merge pull request #1603 from nextcloud/enh/noid/refactor-volumes
substitute volume variables in dockeractionmanager
2022-12-29 10:33:57 +01:00
Simon L
13ca2a35a8 Merge pull request #1598 from nextcloud/enh/noid/allwo-to-hide-containers
allow to hide containers from the interface via display_name
2022-12-29 10:30:05 +01:00
Simon L
2983904697 Merge pull request #1595 from nextcloud/enh/noid/improve-container-definition
rename values of containers definition to match docker-compose values
2022-12-29 10:27:05 +01:00
Simon L
d0ab26918f Merge pull request #1527 from nextcloud/aio-yaml-update
Yaml updates
2022-12-29 10:14:25 +01:00
Simon L
f06ce34472 borg - add progress back and add some additional output
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 10:06:50 +01:00
szaimen
af128d1b46 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-12-28 23:50:41 +00:00
Simon L
35f2d7db16 fix the clamav_enabled description
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 00:49:44 +01:00
Simon L
ee50e9147d allow to make wrong database intialization better debuggable
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 00:41:29 +01:00
Simon L
8ae4ec52a3 migration - add some documentation on limits regarding the database owner name
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-29 00:29:53 +01:00
Simon L
fc29e69b96 improve healthcheck to only exit 1 if it is started
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-28 15:25:20 +01:00
Simon L
b5e40dbb94 substitute volume variables in dockeractionmanager
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-26 02:14:06 +01:00
Simon L
2fd750c8b2 allow to hide containers from the interface via display_name
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 15:56:37 +01:00
Simon L
117c3de7c5 add items type for secrets
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 02:45:32 +01:00
Simon L
27bd5ce1a4 secrets should only get generated if defined in secrets of container.json
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 02:28:53 +01:00
Simon L
54f61eba68 internal_ports should be a string and not an array
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 01:46:42 +01:00
Simon L
53065b5631 rename internalPorts to internal_ports
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 01:08:44 +01:00
Simon L
7a9a452f45 rename production to services
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 01:08:44 +01:00
Simon L
3c57b2db56 rename displayName to display_name
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 01:08:43 +01:00
Simon L
1e78d729c4 rename restartPolicy to restart
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 01:08:43 +01:00
Simon L
5c444472c7 rename maxShutdownTime to stop_grace_period
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 01:08:43 +01:00
Simon L
b13cb77ce2 rename environmentVariables to environment
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 01:08:43 +01:00
Simon L
4a69d53a67 rename containerName to image
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 01:08:43 +01:00
Simon L
6cca3ceb6c rename dependsOn to depends_on
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 01:08:43 +01:00
Simon L
7720ed5061 rename identifier to container_name
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-25 00:36:19 +01:00
ManOki
4750fb228f manual-install: add IMAGE_TAG to omit separate latest-arm64.yml (#1591)
* manual-install: add IMAGE_TAG to omit separate latest-arm64.yml

Signed-off-by: ManOki <ManOki@users.noreply.github.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2022-12-24 10:55:49 +01:00
Simon L
34854ba461 Merge pull request #1580 from nextcloud/apache-reverse-proxy-docs
improve the apache reverse proxy documentation
2022-12-23 22:39:03 +01:00
Simon L
059015968c Merge pull request #1590 from ManOki/documentation
manual-install: update readme to use default docker environment file
2022-12-23 22:03:58 +01:00
Simon L
377058cef1 make description of the mv command a bit clearer
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-23 22:03:00 +01:00
Simon L
67aa36c687 Merge pull request #1586 from ManOki/main
manual-install: add docker profiles for optional services
2022-12-23 21:59:15 +01:00
Simon L
653c63565e remove spaces in empty lines
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-23 21:57:25 +01:00
Simon L
a81be7c35c update script to add the profiles option automatically
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-23 21:40:15 +01:00
ManOki
7dc4edc1e0 manual-install: update readme to use default docker environment file .env
Signed-off-by: ManOki <ManOki@users.noreply.github.com>
2022-12-23 20:19:29 +01:00
szaimen
fbe8316e1d dependency updates
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-23 17:19:38 +01:00
Simon L
950ab32d26 update mastercontainerto php 8.1
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-23 17:02:47 +01:00
ManOki
ce165e05a1 manual-install: add docker profiles for optional services
Signed-off-by: ManOki <ManOki@users.noreply.github.com>
2022-12-23 16:53:20 +01:00
Zoey
14e095b569 try to close #1314
Got it from: https://stackoverflow.com/a/41388585 & https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
In my test, it works

Signed-off-by: Zoey <zoey@z0ey.de>
2022-12-23 15:33:15 +01:00
Simon L
3eb2b164e1 Merge pull request #1579 from nextcloud/revert-1572-enh/noid/add-files_lock-app
Revert "the files_lock app should get installed by default as well"
2022-12-22 18:47:12 +01:00
Simon L
ed62ff1ff5 Revert "the files_lock app should get installed by default as well"
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-22 18:45:44 +01:00
Simon L
d6208a0b18 fix the comment
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-22 10:16:47 +01:00
Simon L
e8e01f8687 increase to 4.0.1
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-22 09:44:23 +01:00
Simon L
f2cd2b9fbd Merge pull request #1572 from nextcloud/enh/noid/add-files_lock-app
the files_lock app should get installed by default as well
2022-12-22 09:43:43 +01:00
Simon L
2ddd9406aa the files_lock app should get installed by default as well
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-22 01:02:08 +01:00
Simon L
35b87eee9b typo
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-22 00:14:19 +01:00
Simon L
1a7dbb4dab fix small detail
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-22 00:12:50 +01:00
Simon L
73e029ec23 improve the reverse proxy documentation further
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-22 00:08:53 +01:00
Simon L
d8f78e186c Merge pull request #1499 from nextcloud/enh/noid/fix-collabora
make collabora more safe
2022-12-21 23:31:34 +01:00
Simon L
be6bcfe997 Merge pull request #1557 from nextcloud/enh/1553/improve-import
improve database import
2022-12-21 23:29:16 +01:00
Simon L
502b39a354 Merge pull request #1566 from nextcloud/enh/noid/turn-server
make the turnserver more reliable
2022-12-21 23:29:00 +01:00
Simon L
ffd970352e Merge pull request #1558 from nextcloud/enh/1547/fix-turn-add-syntax
fix the turn:add syntax
2022-12-21 23:28:49 +01:00
Simon L
ce54d6d70d Merge pull request #1569 from nextcloud/enh/noid/add-gcompat
add gcompat for the recognize app
2022-12-21 23:21:36 +01:00
Simon L
5f68d55672 update OO
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-21 23:19:19 +01:00
Simon L
afb3734000 Merge pull request #1559 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.9.2.1
Bump collabora/code from 22.05.8.4.1 to 22.05.9.2.1 in /Containers/collabora
2022-12-21 23:18:24 +01:00
Simon L
48795c3911 Merge pull request #1568 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20221219-slim
Bump debian from bullseye-20221205-slim to bullseye-20221219-slim in /Containers/apache
2022-12-21 23:16:59 +01:00
Simon L
c0bf69f5dd Merge pull request #1567 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20221219-slim
Bump debian from bullseye-20221205-slim to bullseye-20221219-slim in /Containers/borgbackup
2022-12-21 23:16:33 +01:00
Simon L
9184aab3ec add gcompat for the recognize app
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-21 16:10:15 +01:00
dependabot[bot]
f4f717c929 Bump debian in /Containers/apache
Bumps debian from bullseye-20221205-slim to bullseye-20221219-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-21 12:10:40 +00:00
dependabot[bot]
a12b1c0e56 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20221205-slim to bullseye-20221219-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-21 12:10:04 +00:00
Simon L
0239788c78 make the turnserver more reliable
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-21 11:36:32 +01:00
Simon L
70a03ba1ae add facerecognition notice to the readme
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-20 23:54:30 +01:00
Simon L
edb616b18c add logging to database import
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-20 17:07:43 +01:00
dependabot[bot]
730d4e1bee Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.8.4.1 to 22.05.9.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 12:06:41 +00:00
Simon L
e70bc8c5f7 fix the turn:add syntax
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-20 11:16:50 +01:00
Simon L
e47b58312a improve database import
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-20 10:59:01 +01:00
Simon L
aea0cf7382 Merge pull request #1556 from nextcloud/automated/noid/psalm-baseline-update-1671510103
[Automated] Update psalm-baseline.xml
2022-12-20 09:51:15 +01:00
nextcloud-command
01ea8900cc Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-20 04:21:42 +00:00
Simon L
14c90cdd9e Merge pull request #1544 from thigg/patch-1
Added cifs/smb config help to readme
2022-12-19 14:20:03 +01:00
Simon L
f3bfc2beb7 a few improvements
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-19 14:18:03 +01:00
Simon L
c5749defc8 Merge pull request #1548 from nextcloud/automated/noid/psalm-baseline-update-1671423723
[Automated] Update psalm-baseline.xml
2022-12-19 10:59:27 +01:00
nextcloud-command
42c7e86ee9 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-19 04:22:03 +00:00
thigg
6a509513a3 Added cifs/smb config help to readme
Signed-off-by: thigg <thigg@users.noreply.github.com>
2022-12-18 18:17:43 +01:00
Simon L
65b6d7e6b1 make more clear which FS is recommended for docker
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-18 15:02:26 +01:00
Simon L
756511f16a This does not work
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-17 16:46:24 +01:00
Simon L
4ab3520d10 another one
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-17 16:38:58 +01:00
Simon L
de01850279 another attempt
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-17 16:20:58 +01:00
Simon L
70b87ed9f8 try to fix it
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-17 16:14:11 +01:00
Simon L
e389a17a74 try to fix the elasticsearch inclusion
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-17 16:03:03 +01:00
Simon L
331442fe38 add two more points to manual-install
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-17 15:43:34 +01:00
Simon L
1208000234 Merge pull request #1541 from nextcloud/enh/1538/clamd-timeout
change clamd startup timeout to 90s
2022-12-17 15:36:43 +01:00
Simon L
083150bfb3 Merge pull request #1540 from nextcloud/enh/noid/revert-clamav-trap
Revert "fix Clamav starting trap"
2022-12-17 15:34:23 +01:00
Simon L
f4944fbf92 change clamd startup timeout to 90s
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-17 15:33:28 +01:00
Simon L
3f775653a0 Revert "fix Clamav starting trap"
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-17 15:30:45 +01:00
Simon L
c16d59f9e4 Merge pull request #1532 from nextcloud/enh/1531/add-stdbuf
add stdbuf
2022-12-17 15:28:56 +01:00
Simon L
605f8c87fb Merge pull request #1539 from nextcloud/enh/noid/reload-always
reload in case of undefined response
2022-12-17 15:27:45 +01:00
Simon L
1dee9c465c reload in case of undefined response
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-17 15:26:51 +01:00
Simon L
ec1f5aa129 Merge pull request #1506 from nextcloud/enh/noid/disable-borg-compact
make more clear what to do when borg check fails
2022-12-16 20:06:58 +01:00
Simon L
17fe0db050 Merge pull request #1534 from nextcloud/enh/noid/fix-clamav-daemon-starting-trap
fix Clamav starting trap
2022-12-16 18:53:14 +01:00
Simon L
3c40abbb60 make more clear what to do when borg check fails
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-16 18:46:08 +01:00
Simon L
163f6ea10a Merge pull request #1533 from nextcloud/enh/noid/dont-start-nextcloud-if-install-failed
Don't start the Nextcloud container if the installation failed
2022-12-16 18:12:41 +01:00
Simon L
1bd3c2cb4c add a further hint
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-16 18:12:03 +01:00
Simon L
b90226282a add stdbuf
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-16 17:53:38 +01:00
Simon L
08aa2eece3 fix Clamav starting trap
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-16 12:36:51 +01:00
Simon L
e18f8308ed Don't start the Nextcloud container if the installation failed
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-16 10:57:42 +01:00
Simon L
0b961c9dfc try - catch is not needed for onlyoffice js
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-16 10:36:13 +01:00
Simon L
9b3ad32764 fix restoring of elasticsearch volume
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-15 15:09:39 +01:00
Simon L
fb6668755c make rsync less verbose
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-15 14:32:03 +01:00
Simon L
71231b9b8b increase to 4.0.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-15 12:20:04 +01:00
Simon L
e53281610d Merge pull request #1495 from nextcloud/enh/1280/nc25
update to Nextcloud 25
2022-12-15 12:17:47 +01:00
Simon L
3568adf8c6 Merge pull request #1498 from nextcloud/enh/1032/add-collabora-volume
add a volume for collabora fonts
2022-12-15 12:14:29 +01:00
Simon L
b1d5204078 Merge pull request #1497 from nextcloud/enh/1156/add-redis-volume
add a volume for redis
2022-12-15 12:13:11 +01:00
Simon L
79946a876c remove the redis database once a backup gets restored
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-15 12:10:55 +01:00
Simon L
882fd3be26 add a volume for redis
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-15 12:09:31 +01:00
Simon L
7eb59374a2 Merge pull request #1496 from nextcloud/enh/1191/remove-mysql
remove pdo_mysql
2022-12-15 12:08:56 +01:00
Simon L
28919e27f3 Merge pull request #1513 from nextcloud/enh/noid/back-up-fts-volume
also back up the fulltextsearch volume
2022-12-15 12:08:48 +01:00
Simon L
098a6c4b29 Merge pull request #1432 from nextcloud/enh/1280/remove-appporder
remove the apporder and twofactor_totp app
2022-12-15 12:08:37 +01:00
Simon L
d20cf5777f remove the twofactor_totp app since it is bundled now
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-15 12:06:57 +01:00
Simon L
6b3be9d6e8 remove the apporder app
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-15 12:06:27 +01:00
Simon L
03e2ffb3c9 Merge pull request #1520 from nextcloud/dependabot/docker/Containers/redis/redis-6.2.8-alpine
Bump redis from 6.2.7-alpine to 6.2.8-alpine in /Containers/redis
2022-12-15 11:14:46 +01:00
Simon L
1e3dccf976 Merge pull request #1516 from nextcloud/enh/noid/fix-spaces
fix spaces in env file
2022-12-15 11:14:08 +01:00
Simon L
84a5e28784 Merge pull request #1515 from nextcloud/enh/noid/remove-container-name
manual-install - remove container_name so that it should run using do…
2022-12-15 11:13:40 +01:00
Simon L
4de666eba4 Merge pull request #1514 from nextcloud/enh/noid/sync-autoconfig
also sync autoconfig files
2022-12-15 11:13:08 +01:00
Simon L
e061a16cb7 Merge pull request #1512 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-7.17.8
Bump elasticsearch from 7.17.7 to 7.17.8 in /Containers/fulltextsearch
2022-12-15 11:11:40 +01:00
Simon L
f5e36c854e Merge pull request #1500 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20221130
Bump ubuntu from focal-20221019 to focal-20221130 in /Containers/talk
2022-12-15 11:11:20 +01:00
Simon L
ab384f6e29 Merge pull request #1521 from nextcloud/dependabot/github_actions/cirrus-actions/rebase-1.8
Bump cirrus-actions/rebase from 1.7 to 1.8
2022-12-14 13:10:57 +01:00
dependabot[bot]
e5ca49356c Bump cirrus-actions/rebase from 1.7 to 1.8
Bumps [cirrus-actions/rebase](https://github.com/cirrus-actions/rebase) from 1.7 to 1.8.
- [Release notes](https://github.com/cirrus-actions/rebase/releases)
- [Commits](https://github.com/cirrus-actions/rebase/compare/1.7...1.8)

---
updated-dependencies:
- dependency-name: cirrus-actions/rebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-14 12:06:35 +00:00
Simon L
bd81c3133f also sync autoconfig files
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-13 23:45:01 +01:00
Simon L
c6e45ef378 add exception for elasticsearch and re-order the exceptions
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-13 15:06:47 +01:00
Simon L
52b8bf0696 make collabora more safe
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-13 14:52:01 +01:00
Simon L
bea8ca86dd add a volume for collabora fonts
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-13 14:42:02 +01:00
Simon L
ab5369023b update to Nextcloud 25
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-13 14:11:11 +01:00
dependabot[bot]
f9290e49c8 Bump redis from 6.2.7-alpine to 6.2.8-alpine in /Containers/redis
Bumps redis from 6.2.7-alpine to 6.2.8-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-13 12:04:55 +00:00
Simon L
becfb3cc16 Merge pull request #1517 from nextcloud/automated/noid/psalm-baseline-update-1670905372
[Automated] Update psalm-baseline.xml
2022-12-13 09:14:46 +01:00
nextcloud-command
7cf9fe8dec Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-13 04:22:52 +00:00
Simon L
aa32d496e6 Update sample.conf
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-13 00:48:08 +01:00
Simon L
d9f994fc5d fix spaces in env file
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-13 00:45:48 +01:00
Simon L
df9457bd91 manual-install - remove container_name so that it should run using docker-swarm too
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-13 00:33:57 +01:00
Simon L
85999c297c also back up the fulltextsearch volume
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-12 18:16:24 +01:00
dependabot[bot]
af1612cda1 Bump elasticsearch from 7.17.7 to 7.17.8 in /Containers/fulltextsearch
Bumps elasticsearch from 7.17.7 to 7.17.8.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 12:14:04 +00:00
dependabot[bot]
211ce3c69b Bump ubuntu from focal-20221019 to focal-20221130 in /Containers/talk
Bumps ubuntu from focal-20221019 to focal-20221130.

---
updated-dependencies:
- dependency-name: ubuntu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 12:06:33 +00:00
Simon L
7b4d0baa6c remove pdo_mysql
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-09 11:33:46 +01:00
Simon L
bce08a1564 Merge pull request #1363 from nextcloud/enh/noid/updater-deletion
do not delete the updater so that it can get used later on
2022-12-08 15:09:16 +01:00
Simon L
ba6a0f4652 Merge pull request #1491 from nextcloud/nextcloud-container-update
Nextcloud update
2022-12-08 15:08:37 +01:00
szaimen
02ed48f0d5 nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-12-08 14:06:32 +00:00
Simon L
979f2e45fe allow to update Nextcloud dependencies using workflow_dispatch
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-08 15:02:41 +01:00
Simon L
710b0d15f8 Merge pull request #1485 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20221205-slim
Bump debian from bullseye-20221114-slim to bullseye-20221205-slim in /Containers/apache
2022-12-06 15:44:13 +01:00
Simon L
9b622f3c37 Merge pull request #1486 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20221205-slim
Bump debian from bullseye-20221114-slim to bullseye-20221205-slim in /Containers/borgbackup
2022-12-06 15:43:42 +01:00
dependabot[bot]
914bc68eea Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20221114-slim to bullseye-20221205-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-06 12:05:03 +00:00
dependabot[bot]
16dadb8f4e Bump debian in /Containers/apache
Bumps debian from bullseye-20221114-slim to bullseye-20221205-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-06 12:04:58 +00:00
Simon L
3d94ae56c4 increase to 3.2.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 15:44:16 +01:00
Simon L
7833057c6d Merge pull request #1481 from nextcloud/enh/noid/reactivate-error-log
re-activate error.log for php-fpm
2022-12-05 15:21:56 +01:00
Simon L
56c400bd83 Merge pull request #1482 from nextcloud/enh/noid/apache-use-stderr
Print apache errors in the future to stderr
2022-12-05 15:21:45 +01:00
Simon L
df9882a944 Merge pull request #1471 from nextcloud/enh/1467/check-for-overlay2
check if vfs or fuse-overlayfs is used
2022-12-05 15:21:29 +01:00
Simon L
dffba06345 Merge pull request #1484 from nextcloud/dependabot/github_actions/dessant/lock-threads-4
Bump dessant/lock-threads from 3 to 4
2022-12-05 13:15:15 +01:00
dependabot[bot]
a05a3c02a2 Bump dessant/lock-threads from 3 to 4
Bumps [dessant/lock-threads](https://github.com/dessant/lock-threads) from 3 to 4.
- [Release notes](https://github.com/dessant/lock-threads/releases)
- [Changelog](https://github.com/dessant/lock-threads/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dessant/lock-threads/compare/v3...v4)

---
updated-dependencies:
- dependency-name: dessant/lock-threads
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 12:11:41 +00:00
Simon L
a0cbcc7f52 file logging is not needed
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 10:58:04 +01:00
Simon L
94a508d8aa Print apache errors in the future to stderr
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 10:55:49 +01:00
Simon L
38f9cb2046 fix the dependency update workflow?
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 10:34:33 +01:00
Simon L
bc77beced4 re-activate error.log for php-fpm
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 10:19:55 +01:00
Simon L
b86c1f490a check if vfs or fuse-overlayfs is used
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-03 19:02:30 +01:00
Simon L
d33f3f3b26 fix the dependency-update workflow
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-03 16:05:38 +01:00
Simon L
ae6b328de4 Merge pull request #1477 from nextcloud/automated/noid/psalm-baseline-update-1670041287
[Automated] Update psalm-baseline.xml
2022-12-03 09:36:15 +01:00
nextcloud-command
7f0f84ecfb Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-03 04:21:26 +00:00
Simon L
f3c20d8b76 Merge pull request #1441 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-0.105.1-7
Bump clamav/clamav from 0.105.1 to 0.105.1-7 in /Containers/clamav
2022-12-02 21:58:35 +01:00
Simon L
638675906c fix version number
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-02 21:58:11 +01:00
Simon L
9cffa4db38 Merge pull request #1454 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.26-fpm-alpine3.16
Bump php from 8.0.25-fpm-alpine3.16 to 8.0.26-fpm-alpine3.16 in /Containers/nextcloud
2022-12-02 21:57:27 +01:00
Simon L
906926382f Merge pull request #1456 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.26-apache-bullseye
Bump php from 8.0.25-apache-bullseye to 8.0.26-apache-bullseye in /Containers/mastercontainer
2022-12-02 21:57:09 +01:00
Simon L
8a213fa29a Merge pull request #1447 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.8.4.1
Bump collabora/code from 22.05.8.2.1 to 22.05.8.4.1 in /Containers/collabora
2022-12-02 21:56:30 +01:00
Simon L
c31990e41d Merge pull request #1466 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20221201
Bump nextcloud/imaginary from 20221101 to 20221201 in /Containers/imaginary
2022-12-02 21:56:14 +01:00
Simon L
700ddf25bf Merge pull request #1473 from nextcloud/enh/noid/add-appdata-hint
add hint for not present appdata dir
2022-12-02 21:51:57 +01:00
Simon L
5c966bc1f8 Merge pull request #1472 from nextcloud/enh/1469/add-lock-file-hint
add a hint what to do if the backup container was forcefully killed
2022-12-02 21:51:51 +01:00
Simon L
d093b524ed Merge pull request #1470 from nextcloud/enh/1467/improve-watchtower-logging
increase the loglevel for watchtower
2022-12-02 21:51:46 +01:00
Simon L
87ac260764 add hint for not present appdata dir
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-02 21:41:04 +01:00
Simon L
a3ed26063c add hint regarding default borg.config path
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-02 21:37:48 +01:00
Simon L
bd8546f30d Merge pull request #1462 from nextcloud/enh/noid/adjust-migration-docs
adjust migration docs
2022-12-01 16:46:22 +01:00
Simon L
fe251a9996 add a hint what to do if the backup container was forcefully killed
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-01 16:29:23 +01:00
Simon L
1ef7945c31 increasea the loglevel for watchtower
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-01 16:14:58 +01:00
dependabot[bot]
9d305844bf Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20221101 to 20221201.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-01 12:09:26 +00:00
Simon L
413633cfea Merge pull request #1465 from sergiocasero/Improve-local_storage-documentation
Update readme.md
2022-12-01 10:50:16 +01:00
Sergio Casero Hernández
f8820cb7c9 Update readme.md
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Sergio Casero Hernández <soy@sergiocasero.es>
2022-12-01 10:47:32 +01:00
Sergio Casero Hernández
d632df56bd Update readme.md
Updated readme by including the info about "what happens if local storage doesn't appear on the interface"

Signed-off-by: Sergio Casero Hernández <soy@sergiocasero.es>
2022-12-01 10:35:21 +01:00
Simon L
d34e18ee91 Merge pull request #1464 from nextcloud/automated/noid/psalm-baseline-update-1669868673
[Automated] Update psalm-baseline.xml
2022-12-01 08:37:57 +01:00
nextcloud-command
170e512690 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-01 04:24:32 +00:00
Simon L
3b97270862 adjust migration docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-01 03:25:58 +01:00
dependabot[bot]
d5db7568fe Bump clamav/clamav from 0.105.1 to 0.105.1-7 in /Containers/clamav
Bumps clamav/clamav from 0.105.1 to 0.105.1-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>
2022-11-29 12:24:51 +00:00
dependabot[bot]
0969d0582a Bump php in /Containers/mastercontainer
Bumps php from 8.0.25-apache-bullseye to 8.0.26-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-29 12:05:53 +00:00
dependabot[bot]
459fe462ab Bump php in /Containers/nextcloud
Bumps php from 8.0.25-fpm-alpine3.16 to 8.0.26-fpm-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-29 12:05:36 +00:00
Simon L
efbc247cb6 Merge pull request #1451 from nextcloud/fix-nginx-localhost
Fix reverse proxy documentation for nginx
2022-11-28 18:44:54 +01:00
Zoey
9019fda7e4 Fix reverse proxy documentation for nginx
Signed-off-by: Zoey <zoey@z0ey.de>
2022-11-28 15:51:18 +01:00
dependabot[bot]
b13e8afe18 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.8.2.1 to 22.05.8.4.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 12:05:30 +00:00
Simon L
3fa584442b change not recommended to disrecommended
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-24 11:39:05 +01:00
Simon L
6b6500c29d just exclude the whole dir on restore
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-21 19:03:17 +01:00
Simon L
b02d5cde1a fix the new update process
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-21 18:38:34 +01:00
Simon L
4a1539b473 dont restore ocsp folder
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-21 18:26:36 +01:00
Simon L
9e0079effc increase to 3.1.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-21 17:26:28 +01:00
Simon L
b8d5903c3b Merge pull request #1428 from nextcloud/enh/noid/disable-race-condition
make sure to only trigger the daily-backup script if daily_backups ar…
2022-11-21 17:25:02 +01:00
Simon L
ebe30e69f9 make sure to only trigger the daily-backup script if daily_backups are really enabled
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-20 01:36:55 +01:00
Simon L
e323f9770b improve the script
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-20 00:59:40 +01:00
Simon L
d5272c0ea7 Merge pull request #1423 from nextcloud/enh/1034/automatic-update-guide
add a guide on how to run automatic updates without creating a backup…
2022-11-19 14:07:42 +01:00
Simon L
daa9a94ebd add a guide on how to run automatic updates without creating a backup first
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 14:06:24 +01:00
Simon L
ccd4c9046a invert the default for DISABLE_BACKUP_SECTION
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:58:46 +01:00
Simon L
ed7b1e3cba adjust quotation marks
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:32:42 +01:00
Simon L
d45c42f8ed add a hint to also set docker_socket_path
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:31:40 +01:00
Simon L
bec7ee9a76 re-order the docker-compose entries partially alphabetically
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:27:48 +01:00
Simon L
dea53d9dad Merge pull request #1420 from nextcloud/enh/1400/make-update-process-more-stable
make update process more stable
2022-11-19 12:18:07 +01:00
Simon L
374b7bf7a6 make sure that all apps are up-to-date
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:05:39 +01:00
Simon L
e56a388cc5 Merge pull request #1419 from nextcloud/enh/1417/add-outdated-notification
add an AIO outdated notification
2022-11-18 10:38:43 +01:00
Simon L
df8b340b18 Merge pull request #1402 from nextcloud/dependabot/docker/Containers/watchtower/alpine-3.16.3
Bump alpine from 3.16.2 to 3.16.3 in /Containers/watchtower
2022-11-18 10:36:03 +01:00
Simon L
febe766eac Merge pull request #1401 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.16.3
Bump alpine from 3.16.2 to 3.16.3 in /Containers/domaincheck
2022-11-18 10:35:55 +01:00
dependabot[bot]
c3aa304e08 Bump alpine from 3.16.2 to 3.16.3 in /Containers/watchtower
Bumps alpine from 3.16.2 to 3.16.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 09:04:06 +00:00
dependabot[bot]
64f37b959e Bump alpine from 3.16.2 to 3.16.3 in /Containers/domaincheck
Bumps alpine from 3.16.2 to 3.16.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 09:04:02 +00:00
Simon L
9ff31d48cc Merge pull request #1408 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20221114-slim
Bump debian from bullseye-20221024-slim to bullseye-20221114-slim in /Containers/apache
2022-11-18 10:03:02 +01:00
Simon L
92f00b2068 Merge pull request #1407 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20221114-slim
Bump debian from bullseye-20221024-slim to bullseye-20221114-slim in /Containers/borgbackup
2022-11-18 10:02:31 +01:00
Simon L
7e5c56c066 Merge pull request #1404 from nextcloud/enh/noid/re-add-password-change
re-add the password change
2022-11-18 10:01:15 +01:00
Simon L
bd0bb708b8 Merge pull request #1394 from nextcloud/enh/noid/imaginary-add-return-size-option
imaginary - add `-return-size` option by default
2022-11-18 09:56:33 +01:00
Simon L
4f93ffc870 Merge pull request #1390 from nextcloud/dependabot/docker/Containers/postgresql/postgres-14.6-alpine
Bump postgres from 14.5-alpine to 14.6-alpine in /Containers/postgresql
2022-11-18 09:56:12 +01:00
Simon L
77a0717417 make update process more stable
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-17 17:54:09 +01:00
Simon L
de137f70ae add an AIO outdated notification
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-17 13:38:09 +01:00
dependabot[bot]
16b0f77895 Bump postgres from 14.5-alpine to 14.6-alpine in /Containers/postgresql
Bumps postgres from 14.5-alpine to 14.6-alpine.

---
updated-dependencies:
- dependency-name: postgres
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-17 10:53:44 +00:00
Simon L
bdcd4fc240 Merge pull request #1384 from nextcloud/aio-yaml-update
Yaml updates
2022-11-17 11:52:39 +01:00
dependabot[bot]
2ad2d7c9eb Bump debian in /Containers/apache
Bumps debian from bullseye-20221024-slim to bullseye-20221114-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 12:04:28 +00:00
dependabot[bot]
72248fc4bd Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20221024-slim to bullseye-20221114-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 12:03:57 +00:00
Simon L
15526b6fed re-add the password change
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-14 17:31:45 +01:00
szaimen
cccf21805e Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-11-12 12:17:20 +00:00
Simon L
b6f8d3e8e9 imaginary - add -return-size option by default
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-11 15:28:48 +01:00
Simon L
c5201731c3 fix spacing
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-11 15:23:40 +01:00
Simon L
30911356c1 Merge pull request #1388 from nextcloud/fix-regex
fix regex syntax
2022-11-10 20:57:52 +01:00
Simon L
bf4ef11474 fix removing of build dependencies
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 20:46:18 +01:00
Zoey
cbf579df18 fix regex syntax
I forgot, that the "-" must be at the end of the regex

Signed-off-by: Zoey <zoey@z0ey.de>
2022-11-10 20:40:22 +01:00
Simon L
8c1e1a268e Merge pull request #1387 from nextcloud/enh/noid/allow-digits
2nd follow-up to #1377
2022-11-10 20:30:36 +01:00
Simon L
7a93ad0e4e also allow digits
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 20:27:13 +01:00
Simon L
84f54b58aa make explanation better
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 19:44:59 +01:00
Simon L
ed8979ab2d Merge pull request #1386 from nextcloud/enh/noid/1377-follow-up
follow-up to #1377
2022-11-10 19:41:23 +01:00
Simon L
7bca6b3d2e follow-up to #1377
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 19:39:55 +01:00
Simon L
a04947034e Merge pull request #1377 from nextcloud/enh/1162/allow-to-add-additional-dependencies
allow to add dependencies and php extensions into the Nextcloud container
2022-11-10 18:22:33 +01:00
Simon L
fb7d5e531f add error output
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 18:13:01 +01:00
Simon L
bc9abd39a9 address review
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 18:09:05 +01:00
Simon L
bb09e4ac0a Merge pull request #1370 from nextcloud/enh/noid/keep-session
session should not get cleared automatically before 24h
2022-11-10 14:09:10 +01:00
Simon L
d06c4419cc Merge pull request #1385 from nextcloud/aio-dependency-update
Dependency updates
2022-11-10 13:33:31 +01:00
Simon L
38dd034fae improv the startup apps docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 13:28:00 +01:00
szaimen
0bab4eaa6d dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-11-10 12:26:29 +00:00
Simon L
50e3a5f5de fix the string replacement
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 13:22:52 +01:00
Simon L
6f4b918677 increase to 3.0.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 12:49:13 +01:00
Simon L
da2b967a33 allow to add dependencies and php extensions into the Nextcloud container
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 12:32:21 +01:00
Simon L
63f568ef36 Merge pull request #1382 from nextcloud/enh/noid/allow-to-adjust-php-memory-limit
allow to adjust the PHP memory limit
2022-11-10 12:30:03 +01:00
Simon L
588f9a36e7 allow to adjust the PHP memory limit
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 12:15:40 +01:00
Simon L
a1eac7dbbc Merge pull request #1378 from nextcloud/enh/noid/improve-login-screen
improve the UX when the login is blocked
2022-11-10 12:14:24 +01:00
Simon L
e4becc7249 Merge pull request #1381 from nextcloud/enh/noid/rename-trusted-cacerts-dir-variable
rename TRUSTED_CACERTS_DIR to NEXTCLOUD_TRUSTED_CACERTS_DIR
2022-11-10 12:01:57 +01:00
Simon L
dd6925d004 Merge pull request #1374 from nextcloud/dependabot/docker/Containers/watchtower/containrrr/watchtower-1.5.1
Bump containrrr/watchtower from 1.4.0 to 1.5.1 in /Containers/watchtower
2022-11-10 11:58:36 +01:00
Simon L
e9d1afe4fd Merge pull request #1380 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.8.2.1
Bump collabora/code from 22.05.7.3.1 to 22.05.8.2.1 in /Containers/collabora
2022-11-10 11:58:19 +01:00
Simon L
89b0c1f73d Merge pull request #1368 from nextcloud/aio-dependency-update
Dependency updates
2022-11-10 11:55:21 +01:00
Simon L
6a51a6a251 use an existing path as example
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 11:53:40 +01:00
Simon L
d424776a43 rename TRUSTED_CACERTS_DIR to NEXTCLOUD_TRUSTED_CACERTS_DIR
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 11:49:34 +01:00
Simon L
9b8937884e fix the link
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 11:44:51 +01:00
Simon L
dd7dac314f Merge pull request #1199 from nextcloud/enh/11998/adjust-apps
allow to adjust Nextcloud apps that get installed upon first startup
2022-11-10 11:43:27 +01:00
Simon L
bdb159b2fe add a link
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 11:42:43 +01:00
Simon L
bd80fd1915 Merge pull request #1362 from Brouware/main
Fixed typo's readme.md
2022-11-09 23:12:16 +01:00
szaimen
54687a2375 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-11-09 12:24:54 +00:00
dependabot[bot]
f9f29ae42a Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.7.3.1 to 22.05.8.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-09 12:04:23 +00:00
Simon L
78959b26cb improve the UX when the login is blocked
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-08 23:41:24 +01:00
Simon L
b027cdd293 Merge pull request #1375 from nextcloud/enh/1350/add-explanation-of-docker-run
Add explanation of the initial docker run command to the readme
2022-11-08 22:15:30 +01:00
Simon L
36f38e549e Merge pull request #1376 from roib20/patch-1
Proofread and revise explanation of the initial docker run command
2022-11-08 22:12:52 +01:00
szaimen
029b6ea797 allow to adjust Nextcloud apps that get installed upon first startup
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-08 21:48:21 +01:00
roib20
f42fa09202 Proofread and revise explanation of the initial docker run command
Clarify explanations of initial docker run command and fix grammar, punctuation and typos (in readme.md)

Signed-off-by: roib20 <66280613+roib20@users.noreply.github.com>
2022-11-08 21:40:13 +02:00
Simon L
4e7fa6b4b9 Add explanation of the initial docker run command to the readme
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-08 19:34:45 +01:00
dependabot[bot]
43eddabeaf Bump containrrr/watchtower from 1.4.0 to 1.5.1 in /Containers/watchtower
Bumps containrrr/watchtower from 1.4.0 to 1.5.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-08 12:07:10 +00:00
Simon L
b47e674aa7 session should not get cleared automatically before 24h
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-07 19:44:02 +01:00
Simon L
54f39b5334 Merge pull request #1369 from nextcloud/automated/noid/psalm-baseline-update-1667796403
[Automated] Update psalm-baseline.xml
2022-11-07 08:50:20 +01:00
nextcloud-command
19369c7ce2 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-11-07 04:46:43 +00:00
Simon L
cd8ba20716 Merge pull request #1365 from nextcloud/enh/noid/deprecation-detector
add php-deprecation-detector
2022-11-05 21:56:26 +01:00
Simon L
0e36ae0ba9 add php-deprecation-detector
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-05 21:54:05 +01:00
Simon L
fd88b61882 do not delete the updater so that it can get used later on
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-05 01:42:07 +01:00
Brouware
90991c6c24 Fixed typo's
- Fixed command to check Borg version
- Fixed script breaking typo under "Sync the backup regularly to another drive"

Signed-off-by: Brouware <63195347+Brouware@users.noreply.github.com>
2022-11-05 00:10:13 +01:00
Simon L
99b45997a6 Add link to docker dns
Signed-off-by: Simon L. <szaimen@e.mail.de>
2022-11-04 13:53:58 +01:00
szaimen
8cf7d47f26 increase to 2.1.2
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-03 15:09:15 +01:00
szaimen
4e67b82d46 fix typo
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-03 15:08:07 +01:00
Simon L
820ac1d918 Merge pull request #1347 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20221101
Bump nextcloud/imaginary from 20221003 to 20221101 in /Containers/imaginary
2022-11-03 15:04:45 +01:00
Simon L
e63d59ff1e Merge pull request #1351 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.7.3.1
Bump collabora/code from 22.05.7.2.1 to 22.05.7.3.1 in /Containers/collabora
2022-11-03 15:04:34 +01:00
Simon L
df8791b7f8 Merge pull request #1355 from nextcloud/nextcloud-container-update
Nextcloud update
2022-11-03 15:04:23 +01:00
szaimen
df808c10bb nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-11-03 12:52:31 +00:00
dependabot[bot]
3bba9da0d5 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.7.2.1 to 22.05.7.3.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-02 12:37:17 +00:00
dependabot[bot]
968103ee45 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20221003 to 20221101.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 13:44:54 +00:00
szaimen
982f7644f5 increase to 2.1.1
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-31 15:15:05 +01:00
Simon L
bdfb238683 Merge pull request #1339 from nextcloud/enh/noid/improve-logging
improve logging situation
2022-10-31 15:14:00 +01:00
Simon L
b02a874497 Merge pull request #1340 from nextcloud/fix/noid/fix-the-notify-script
fix the notify script
2022-10-31 15:13:38 +01:00
Simon L
0b540ef4fc Merge pull request #1345 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.25-fpm-alpine3.16
Bump php from 8.0.24-fpm-alpine3.16 to 8.0.25-fpm-alpine3.16 in /Containers/nextcloud
2022-10-31 15:13:00 +01:00
Simon L
bd8a1c024d Merge pull request #1346 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.25-apache-bullseye
Bump php from 8.0.24-apache-bullseye to 8.0.25-apache-bullseye in /Containers/mastercontainer
2022-10-31 15:12:40 +01:00
Simon L
48e692a09f Merge pull request #1344 from nextcloud/enh/noid/apache-sites
Make sure that the sites are really gone
2022-10-31 15:12:13 +01:00
dependabot[bot]
d767ec65d9 Bump php in /Containers/mastercontainer
Bumps php from 8.0.24-apache-bullseye to 8.0.25-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-31 12:45:17 +00:00
dependabot[bot]
0e60c52b91 Bump php in /Containers/nextcloud
Bumps php from 8.0.24-fpm-alpine3.16 to 8.0.25-fpm-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-31 12:45:15 +00:00
szaimen
77613f456c Make sure that the sites are really gone
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-31 11:49:37 +01:00
szaimen
adb4279de1 improve logging situation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-31 11:17:29 +01:00
szaimen
3616ce48a9 fix the notify script
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-30 02:12:06 +02:00
Simon L
0397f30bb5 Merge pull request #1336 from nextcloud/optimize-nginx
optimize nginx reverse proxy documentation
2022-10-29 11:20:22 +02:00
Zoey
b7708b66df optimize nginx reverse proxy documentation
With this change, it is not needed to change the main http block

Signed-off-by: Zoey <zoey@z0ey.de>
2022-10-28 17:15:33 +02:00
Simon L
6b0b65e425 Merge pull request #1331 from Zoey2936/main
improve nginx reverse proxy documnetation
2022-10-28 12:57:34 +02:00
Simon L
896b44a172 Merge pull request #1332 from nextcloud/automated/noid/psalm-baseline-update-1666932620
[Automated] Update psalm-baseline.xml
2022-10-28 08:11:19 +02:00
nextcloud-command
39f7874ea7 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-10-28 04:50:20 +00:00
Zoey
a0dc8781a7 improve nginx reverse proxy documnetation
Signed-off-by: Zoey <zoey@z0ey.de>
2022-10-27 22:11:22 +02:00
szaimen
db5cab9e34 fix it!
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 18:51:51 +02:00
szaimen
a547f1d892 another attempt
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 18:23:16 +02:00
szaimen
a03fad2c33 fix sudo command
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 16:11:09 +02:00
szaimen
6458bf6613 fix chaning to root user
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 15:58:40 +02:00
szaimen
24eefc7009 increase to 2.1.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 15:22:47 +02:00
Simon L
e358e40c15 Merge pull request #1326 from nextcloud/enh/noid/skip-update
skip app update if backup was restored or comparable
2022-10-27 15:21:10 +02:00
Simon L
a639a9f103 Merge pull request #1307 from nextcloud/enh/1088/talk-settings
use the add commands to add talk settings
2022-10-27 15:20:19 +02:00
Simon L
1c987b180c Merge pull request #1329 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-7.17.7
Bump elasticsearch from 7.17.6 to 7.17.7 in /Containers/fulltextsearch
2022-10-27 15:18:57 +02:00
Simon L
c8ffe9ef4a Merge pull request #1327 from nextcloud/dependabot/composer/php/guzzlehttp/psr7-2.4.3
Bump guzzlehttp/psr7 from 2.4.2 to 2.4.3 in /php
2022-10-27 15:17:55 +02:00
dependabot[bot]
12f6220591 Bump elasticsearch from 7.17.6 to 7.17.7 in /Containers/fulltextsearch
Bumps elasticsearch from 7.17.6 to 7.17.7.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-27 12:43:04 +00:00
dependabot[bot]
31a16535fe Bump guzzlehttp/psr7 from 2.4.2 to 2.4.3 in /php
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.4.2 to 2.4.3.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/master/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.4.2...2.4.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-27 12:23:27 +00:00
szaimen
e81c4e3041 skip app update if backup was restored or comparable
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 13:53:17 +02:00
szaimen
87192838e8 improve detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 13:04:45 +02:00
Simon L
9f2c74b030 Merge pull request #1313 from TheManchineel/patch-1
rework NGINX reverse proxy docs to support CODE
2022-10-27 12:57:05 +02:00
TheManchineel
201dbc15ae Rework NGINX reverse proxy docs to support CODE
As per PR #1236, applied the same documentation change to the NGINX configuration, so as to pass the full URI of each HTTP request to the Collabora Online backend. This fixes #834 but for NGINX rather than Apache. It might be necessary to make similar changes to other proxy software, but NGINX is what I am familiar with.

Signed-off-by: TheManchineel <37479927+TheManchineel@users.noreply.github.com>
2022-10-27 12:51:10 +02:00
szaimen
f8a1c1862a address review
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 12:42:13 +02:00
szaimen
4b10fcada2 use the add commands to add talk settings
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 12:41:52 +02:00
Simon L
d6f0023a42 Merge pull request #1249 from nextcloud/enh/1233/nextcloud-entrypoint-root
change entrypoint of nextcloud container to root
2022-10-27 12:40:14 +02:00
szaimen
b9ada72be3 address missing points
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 12:35:42 +02:00
Simon L
41507c05fa Merge pull request #1274 from nextcloud/enh/1272/session-deduplication
rework session deduplication
2022-10-27 12:33:01 +02:00
Simon L
53044c8354 Merge pull request #1325 from nextcloud/enh/noid/json-improvements
prettify json and unescape slashes
2022-10-27 00:16:18 +02:00
szaimen
d01a1087fa prettify json and unescape slashes
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-26 19:30:15 +02:00
Simon L
2771f5124d Merge pull request #1320 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-20.10.21-dind-alpine3.16
Bump docker from 20.10.20-dind-alpine3.16 to 20.10.21-dind-alpine3.16 in /Containers/mastercontainer
2022-10-26 18:30:18 +02:00
Simon L
d9e8c98724 Merge pull request #1319 from nextcloud/dependabot/composer/php/guzzlehttp/psr7-2.4.2
Bump guzzlehttp/psr7 from 2.4.1 to 2.4.2 in /php
2022-10-26 18:29:50 +02:00
Simon L
f282d1439c Merge pull request #1324 from BR14Nx/patch-1
Hint about custom datadirectory path in database migration
2022-10-26 18:28:29 +02:00
Brian Philipp
e92daa62bf Hint about custom datadirectory path
Signed-off-by: Brian Philipp <66728496+BR14Nx@users.noreply.github.com>
2022-10-26 17:50:04 +02:00
dependabot[bot]
2faa1357d3 Bump docker in /Containers/mastercontainer
Bumps docker from 20.10.20-dind-alpine3.16 to 20.10.21-dind-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-26 12:41:22 +00:00
dependabot[bot]
fa6a238d16 Bump guzzlehttp/psr7 from 2.4.1 to 2.4.2 in /php
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/master/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.4.1...2.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-26 12:36:26 +00:00
Simon L
ab7c2fccad Merge pull request #1310 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20221024-slim
Bump debian from bullseye-20221004-slim to bullseye-20221024-slim in /Containers/apache
2022-10-25 18:23:08 +02:00
Simon L
7606cadf40 Merge pull request #1309 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20221024-slim
Bump debian from bullseye-20221004-slim to bullseye-20221024-slim in /Containers/borgbackup
2022-10-25 18:22:55 +02:00
Simon L
6f87a30595 Merge pull request #1308 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20221019
Bump ubuntu from focal-20220922 to focal-20221019 in /Containers/talk
2022-10-25 18:22:42 +02:00
szaimen
e1ec9c738d update one-click settings
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-25 18:13:16 +02:00
dependabot[bot]
9daecad5b3 Bump debian in /Containers/apache
Bumps debian from bullseye-20221004-slim to bullseye-20221024-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 12:41:23 +00:00
dependabot[bot]
d41ae98de7 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20221004-slim to bullseye-20221024-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 12:41:17 +00:00
dependabot[bot]
8a71b4e9dc Bump ubuntu from focal-20220922 to focal-20221019 in /Containers/talk
Bumps ubuntu from focal-20220922 to focal-20221019.

---
updated-dependencies:
- dependency-name: ubuntu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 12:41:17 +00:00
Simon L
aae58915d7 Merge pull request #1261 from nextcloud/dependabot/docker/Containers/apache/caddy-2.6.2-alpine
Bump caddy from 2.6.1-alpine to 2.6.2-alpine in /Containers/apache
2022-10-24 20:54:31 +02:00
Simon L
0f728d2660 Merge pull request #1262 from nextcloud/dependabot/docker/Containers/mastercontainer/caddy-2.6.2-alpine
Bump caddy from 2.6.1-alpine to 2.6.2-alpine in /Containers/mastercontainer
2022-10-24 20:54:12 +02:00
Simon L
ec7f379779 Merge pull request #1285 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-20.10.20-dind-alpine3.16
Bump docker from 20.10.18-dind-alpine3.16 to 20.10.20-dind-alpine3.16 in /Containers/mastercontainer
2022-10-24 20:53:50 +02:00
Simon L
e7d1d19936 Merge pull request #1302 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.7.2.1
Bump collabora/code from 22.05.6.3.1 to 22.05.7.2.1 in /Containers/collabora
2022-10-24 20:53:20 +02:00
dependabot[bot]
62f129bdd2 Bump docker in /Containers/mastercontainer
Bumps docker from 20.10.18-dind-alpine3.16 to 20.10.20-dind-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 18:52:20 +00:00
szaimen
e5fce3eb89 update OO
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-24 20:51:36 +02:00
Simon L
69122c55bf Merge pull request #1305 from nextcloud/enh/279/update-borg
install borg from backports in the future
2022-10-24 20:45:39 +02:00
szaimen
f5102f8562 add bullseye-backports to sources.list
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-24 20:41:56 +02:00
Simon L
3a29a55dc0 Merge pull request #1275 from nextcloud/enh/noid/2nd-tab-warning
add 2nd tab warning
2022-10-24 20:38:45 +02:00
szaimen
5c25656460 install borg from backports in the future
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-24 19:46:09 +02:00
szaimen
d4645d50ab make nginx config more verbose
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-24 18:58:39 +02:00
Simon L
4cbc8c7e53 Merge pull request #1259 from Klaus15/patch-1
Update nginx section of reverse-proxy.md
2022-10-24 18:58:09 +02:00
Simon L
4cffe12e16 Merge pull request #1197 from nextcloud/enh/noid/add-haproxy
add HaProxy to reverse proxy documentation
2022-10-24 18:51:21 +02:00
dependabot[bot]
be243fdba9 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.6.3.1 to 22.05.7.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 12:31:59 +00:00
szaimen
8397ff50b4 reverse the order
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-18 23:52:20 +02:00
szaimen
132b97ba20 add some guides for local dns server
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-18 23:50:16 +02:00
Simon L
228d113bb0 Merge pull request #1266 from nextcloud/feat/workflow-auto-update-lint-php.yml
Updating lint-php.yml workflow from template
2022-10-17 17:56:25 +02:00
szaimen
203b17d316 improve rootless docs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-17 17:45:10 +02:00
szaimen
d3d8b11e28 change entrypoint of nextcloud container to root
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-17 17:45:10 +02:00
szaimen
c789b7e5db fix lint
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-17 16:30:38 +02:00
szaimen
3ac260837f add 2nd tab warning
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-16 18:58:59 +02:00
szaimen
3118ecf385 rework session deduplication
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-16 18:12:50 +02:00
Nextcloud bot
8450d7d9a5 Updating lint-php.yml workflow from template
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-10-15 09:57:35 +00:00
szaimen
9d4c591f1a add not to borg delete regarding freeing space
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-15 00:48:52 +02:00
dependabot[bot]
4e598b9de3 Bump caddy in /Containers/mastercontainer
Bumps caddy from 2.6.1-alpine to 2.6.2-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 12:21:20 +00:00
dependabot[bot]
b6470db144 Bump caddy from 2.6.1-alpine to 2.6.2-alpine in /Containers/apache
Bumps caddy from 2.6.1-alpine to 2.6.2-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 12:21:19 +00:00
Simon L
6210657558 Merge pull request #1194 from nextcloud/aio-yaml-update
Yaml updates
2022-10-14 12:45:57 +02:00
Klaus15
5641f62561 Update nginx section of reverse-proxy.md
added nginx.conf code snippet to get a working websocket config

Signed-off-by: Klaus15 <le_kluus@web.de>
2022-10-13 23:04:32 +02:00
szaimen
6c81f2b244 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-10-12 12:23:55 +00:00
Simon L
82adedf26a Merge pull request #1250 from nextcloud/automated/noid/psalm-baseline-update-1665551327
[Automated] Update psalm-baseline.xml
2022-10-12 08:54:11 +02:00
nextcloud-command
c4e5e0e8d4 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-10-12 05:08:47 +00:00
szaimen
ce47fab555 remove the issue from the doc
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-09 17:48:40 +02:00
szaimen
0bbae775c6 small detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-09 17:28:29 +02:00
Simon L
c283c71362 Merge pull request #1236 from nextcloud/enh/noid/fix-apache
rework the apache reverse proxy documentation
2022-10-09 17:23:50 +02:00
szaimen
ca5e97ef5b rework the apache reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-09 17:22:24 +02:00
Simon L
19e1e067bc Merge pull request #1235 from nextcloud/automated/noid/psalm-baseline-update-1665204655
[Automated] Update psalm-baseline.xml
2022-10-08 10:56:00 +02:00
nextcloud-command
d5a1fa32c4 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-10-08 04:50:55 +00:00
szaimen
be299dfe8c add it to mastercontainer as well
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 23:22:19 +02:00
szaimen
56af317778 use correct config syntax
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 23:02:59 +02:00
szaimen
1cf6f995d4 increase to 2.0.4
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 22:42:18 +02:00
Simon L
dc97ef872e Merge pull request #1206 from nextcloud/enh/noid/synology-rp
add Synology Reverse Proxyy to reverse proxy documentation
2022-10-06 22:40:14 +02:00
Simon L
99cf7f385a Merge pull request #1231 from nextcloud/enh/1221/add-free-disk-space
add a check for free space
2022-10-06 22:39:26 +02:00
Simon L
a721e250bd Merge pull request #1232 from nextcloud/enh/1204/change-healthcheck-to-nc
use netcat for healthchecks
2022-10-06 22:39:01 +02:00
szaimen
95311fd7c3 use netcat for healthchecks
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 22:34:10 +02:00
szaimen
abbeaa31d7 add a check for free space
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 20:08:46 +02:00
Simon L
ac06db59c7 Merge pull request #1229 from nextcloud/enh/1222/add-channel-hint
add channel advice
2022-10-06 19:54:44 +02:00
Simon L
3904e24ee0 Merge pull request #1228 from nextcloud/nextcloud-container-update
Nextcloud update
2022-10-06 19:53:31 +02:00
Simon L
e80fd26fdb Merge pull request #1225 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20221004-slim
Bump debian from bullseye-20220912-slim to bullseye-20221004-slim in /Containers/apache
2022-10-06 19:53:06 +02:00
Simon L
0f8561a920 Merge pull request #1224 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20220922
Bump ubuntu from focal-20220826 to focal-20220922 in /Containers/talk
2022-10-06 19:52:47 +02:00
Simon L
677123e57b Merge pull request #1223 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20221004-slim
Bump debian from bullseye-20220912-slim to bullseye-20221004-slim in /Containers/borgbackup
2022-10-06 19:52:24 +02:00
Simon L
e60cffc4cc Merge pull request #1217 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20221003
Bump nextcloud/imaginary from 20220919 to 20221003 in /Containers/imaginary
2022-10-06 19:51:28 +02:00
Simon L
dced664925 Merge pull request #1216 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.24-fpm-alpine3.16
Bump php from 8.0.23-fpm-alpine3.16 to 8.0.24-fpm-alpine3.16 in /Containers/nextcloud
2022-10-06 19:51:01 +02:00
Simon L
ab0856842b Merge pull request #1215 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.24-apache-bullseye
Bump php from 8.0.23-apache-bullseye to 8.0.24-apache-bullseye in /Containers/mastercontainer
2022-10-06 19:50:37 +02:00
Simon L
2bd8894454 Merge pull request #1203 from nextcloud/enh/noid/talk-startup-logs
fix talk startup logs
2022-10-06 19:49:51 +02:00
szaimen
1b7c7a3d66 add lets encrypt back
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 18:59:23 +02:00
szaimen
b88b55feb4 add channel advice
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 18:27:19 +02:00
szaimen
1a2b4217ec nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-10-06 12:59:23 +00:00
dependabot[bot]
dd607243d7 Bump debian in /Containers/apache
Bumps debian from bullseye-20220912-slim to bullseye-20221004-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-05 12:40:33 +00:00
dependabot[bot]
fcabd7cf50 Bump ubuntu from focal-20220826 to focal-20220922 in /Containers/talk
Bumps ubuntu from focal-20220826 to focal-20220922.

---
updated-dependencies:
- dependency-name: ubuntu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-05 12:40:30 +00:00
dependabot[bot]
b63f50e00b Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220912-slim to bullseye-20221004-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-05 12:40:30 +00:00
szaimen
7e235b088f remove codeowners
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-03 17:40:52 +02:00
dependabot[bot]
7239360a70 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20220919 to 20221003.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 13:05:56 +00:00
dependabot[bot]
ece09c2f41 Bump php in /Containers/nextcloud
Bumps php from 8.0.23-fpm-alpine3.16 to 8.0.24-fpm-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 12:41:48 +00:00
dependabot[bot]
6e34656540 Bump php in /Containers/mastercontainer
Bumps php from 8.0.23-apache-bullseye to 8.0.24-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 12:41:48 +00:00
Simon L
1e8d9809c9 Merge pull request #1208 from nextcloud/aio-dependency-update
Dependency updates
2022-09-28 14:24:15 +02:00
szaimen
27d70b7739 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-28 12:22:33 +00:00
Simon L
77e6f59610 Merge pull request #1205 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.6.3.1
Bump collabora/code from 22.05.6.1.1 to 22.05.6.3.1 in /Containers/collabora
2022-09-27 15:02:31 +02:00
szaimen
bce24687cc add Synology Reverse Proxyy to reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-27 14:54:49 +02:00
dependabot[bot]
7716548c75 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.6.1.1 to 22.05.6.3.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-27 12:34:31 +00:00
szaimen
dafa03698b fix talk startup logs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-27 11:28:50 +02:00
szaimen
fd3c30bdb7 add a disclaimer
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-26 19:28:18 +02:00
szaimen
730128b1ab add HaProxy to reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-26 19:25:04 +02:00
Simon L
3645033663 Merge pull request #1188 from nextcloud/dependabot/docker/Containers/apache/caddy-2.6.1-alpine
Bump caddy from 2.5.2-alpine to 2.6.1-alpine in /Containers/apache
2022-09-26 12:30:57 +02:00
Simon L
99838dea4f Merge pull request #1189 from nextcloud/dependabot/docker/Containers/mastercontainer/caddy-2.6.1-alpine
Bump caddy from 2.5.2-alpine to 2.6.1-alpine in /Containers/mastercontainer
2022-09-26 12:30:35 +02:00
szaimen
8889e92a64 fix incorrect removal of OO
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-26 12:22:05 +02:00
szaimen
2af13efe63 update some files
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-26 12:18:58 +02:00
Simon L
1f58094ddd Merge pull request #1181 from nextcloud/aio-yaml-update
Yaml updates
2022-09-26 12:04:06 +02:00
szaimen
0523af0f8a add a hint that the chosen datadir needs to be cleaned up as well
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-25 18:55:07 +02:00
dependabot[bot]
fb8fcae3d6 Bump caddy in /Containers/mastercontainer
Bumps caddy from 2.5.2-alpine to 2.6.1-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-23 12:40:50 +00:00
dependabot[bot]
240a29cb2b Bump caddy from 2.5.2-alpine to 2.6.1-alpine in /Containers/apache
Bumps caddy from 2.5.2-alpine to 2.6.1-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-23 12:40:43 +00:00
szaimen
073f5e18e3 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-21 12:23:29 +00:00
szaimen
e0a52df781 fix link
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 20:44:13 +02:00
szaimen
ef0361dd29 increase to 2.0.3
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 20:05:10 +02:00
Simon L
dff437fe26 Merge pull request #1150 from nextcloud/enh/1149/collabora-seccomp
allow to disable seccomp for collabora
2022-09-20 20:03:18 +02:00
szaimen
4e8c1e53ee allow to disable seccomp for collabora
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 19:58:36 +02:00
Simon L
dc63eec43b Merge pull request #1168 from nextcloud/enh/noid/small-enhancements
small enhancements for daily-backup.sh
2022-09-20 19:33:21 +02:00
szaimen
4397e74ca9 small enhancements
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 19:28:17 +02:00
Simon L
c670d982aa Merge pull request #1178 from nextcloud/enh/noid/bring-in-sync
bring Apache limits in sync with PHP limits
2022-09-20 19:12:00 +02:00
Simon L
ef6e85dbec Merge pull request #1177 from nextcloud/enh/1176/be-more-verbose
update permissions output and fix usage of variable
2022-09-20 19:10:08 +02:00
Simon L
3051214536 Merge pull request #1174 from mustaphazorgati/fix-aio-apache
aio-apache configuration now uses NEXTCLOUD_HOST env variable (#1173)
2022-09-20 19:06:23 +02:00
Simon L
b5b84fa6c7 Merge pull request #1169 from nextcloud/enh/1164/fix-updatenotification-removal
fix removal of the updatenotification app for migrated instances
2022-09-20 19:06:02 +02:00
Simon L
0430df5d63 Merge pull request #1172 from nextcloud/nextcloud-container-update
Nextcloud update
2022-09-20 19:05:20 +02:00
Simon L
ff88664cb2 Merge pull request #1141 from nextcloud/aio-dependency-update
Dependency updates
2022-09-20 19:04:56 +02:00
Simon L
08e52444db Merge pull request #1146 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-20.10.18-dind-alpine3.16
Bump docker from 20.10.17-dind-alpine3.16 to 20.10.18-dind-alpine3.16 in /Containers/mastercontainer
2022-09-20 19:04:29 +02:00
Simon L
48dd97b708 Merge pull request #1145 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220912-slim
Bump debian from bullseye-20220822-slim to bullseye-20220912-slim in /Containers/borgbackup
2022-09-20 19:04:06 +02:00
dependabot[bot]
7e148f8287 Bump docker in /Containers/mastercontainer
Bumps docker from 20.10.17-dind-alpine3.16 to 20.10.18-dind-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 17:04:05 +00:00
Simon L
ef93133b02 Merge pull request #1144 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220912-slim
Bump debian from bullseye-20220822-slim to bullseye-20220912-slim in /Containers/apache
2022-09-20 19:03:52 +02:00
Simon L
fb51b06c00 Merge pull request #1157 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.6.1.1
Bump collabora/code from 22.05.5.4.1 to 22.05.6.1.1 in /Containers/collabora
2022-09-20 19:03:30 +02:00
Simon L
75c53350ab Merge pull request #1171 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20220919
Bump nextcloud/imaginary from 20220905 to 20220919 in /Containers/imaginary
2022-09-20 19:03:10 +02:00
Simon L
39514d54e8 Merge pull request #1097 from lollo0296/trust-custom-ca
Let the Nextcloud-Container trust custom CAs (e.g. for using LDAPS) 2
2022-09-20 19:02:40 +02:00
szaimen
8dd871b368 add logging to apache
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 18:56:22 +02:00
szaimen
1e8d5c71f4 update permissions output and fix usage of variable
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 18:34:53 +02:00
szaimen
2b5deb81f5 bring Apache limits in sync with PHP limits
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 18:16:17 +02:00
Mustapha Zorgati
6e2872b953 aio-apache configuration now uses NEXTCLOUD_HOST env variable (#1173)
instead of hardcoded container name
2022-09-19 23:53:12 +02:00
szaimen
18227536cd fix removal of the updatenotification app for migrated instances
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-19 16:25:17 +02:00
szaimen
93f1f9c47e nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-09-19 12:57:18 +00:00
dependabot[bot]
544f38a882 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20220905 to 20220919.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 12:51:35 +00:00
szaimen
7efa09339c dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-19 12:24:35 +00:00
dependabot[bot]
e91a3d7bce Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.5.4.1 to 22.05.6.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-15 12:39:08 +00:00
Lorenzo Marroccoli
935d4aab11 Let the Nextcloud-Container trust custom CAs (e.g. for using LDAPS) 2
Signed-off-by: Lorenzo Marroccoli <lollo0296@gmail.com>
Signed-off-by: szaimen <szaimen@e.mail.de>
Co-Authored-By: Simon L. <szaimen@e.mail.de>
2022-09-14 10:08:24 +02:00
dependabot[bot]
319bda83e8 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220822-slim to bullseye-20220912-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-13 12:31:15 +00:00
dependabot[bot]
609cabf9dc Bump debian in /Containers/apache
Bumps debian from bullseye-20220822-slim to bullseye-20220912-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-13 12:31:14 +00:00
Simon L
bfcbc41141 Merge pull request #1136 from nextcloud/enh/noid/add-tz-confirmation
add a confirmation for the timezone
2022-09-08 17:39:29 +02:00
szaimen
3ac6fc590a add a confirmation for the timezone
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-08 17:33:33 +02:00
Simon L
0aee7c6bb9 Merge pull request #1135 from nextcloud/revert-1118-enh/1073/add-db-check
Revert "add a check for init-user-db.sh"
2022-09-08 17:32:57 +02:00
Simon L
feb6438d39 Revert "add a check for init-user-db.sh"
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-08 17:27:15 +02:00
szaimen
4ecfaa0650 increase to 2.0.2
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-08 16:15:16 +02:00
Simon L
8dec561045 Merge pull request #1093 from nextcloud/fix/noid/container-logs
fix container logs new line
2022-09-08 16:07:07 +02:00
Simon L
2ab42b06ed Merge pull request #1094 from nextcloud/enh/1077/backup-check
rework the daily backup script and allow to start the backup check from it
2022-09-08 16:05:24 +02:00
Simon L
d25c74e382 Merge pull request #1118 from nextcloud/enh/1073/add-db-check
add a check for init-user-db.sh
2022-09-08 15:49:22 +02:00
Simon L
8c544d96c9 Merge pull request #1069 from nextcloud/fix/1067/fix-pulling-images
do not pull containers if START_CONTAINERS was provided and not …
2022-09-08 15:45:54 +02:00
Simon L
3280a08430 Merge pull request #1092 from nextcloud/fix/1085/fix-dbpassword
the dbpassword and dbuser do not need to be overwritten anymore
2022-09-08 15:44:57 +02:00
Simon L
29f3952713 Merge pull request #1095 from nextcloud/enh/noid/borg-logs
do not show progress for borg operations
2022-09-08 15:44:36 +02:00
Simon L
3bc55fb104 Merge pull request #1096 from nextcloud/fix/noid/mastercontainer-logs
get rid of some strange lines in the mastercontainer logs
2022-09-08 15:44:11 +02:00
Simon L
d01eed902a Merge pull request #1107 from nextcloud/enh/596/allow-to-change-backup-location
Allow to choose a different backup location if the first backup fails
2022-09-08 15:32:23 +02:00
Simon L
88751452c7 Merge pull request #1129 from MartinM01/fix/1121/fix-hpb-participants-limited-7-8
TURN_CONF set total-quota unlimited
2022-09-08 15:31:23 +02:00
Simon L
f7b0787fe5 Merge pull request #1134 from nextcloud/nextcloud-container-update
Nextcloud update
2022-09-08 15:30:25 +02:00
szaimen
46b1a0c068 nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-09-08 12:50:47 +00:00
martin.mueller
80482657be TURN_CONF set total-quota unlimited
Signed-off-by: martin.mueller <martin.mueller@model-engineers.com>
2022-09-07 13:28:04 +02:00
Simon L
2c7e0518f1 Merge pull request #1120 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20220905
Bump nextcloud/imaginary from 20220822 to 20220905 in /Containers/imaginary
2022-09-07 09:59:24 +02:00
Simon L
fbb9180c0f Merge pull request #1104 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.23-fpm-alpine3.16
Bump php from 8.0.22-fpm-alpine3.16 to 8.0.23-fpm-alpine3.16 in /Containers/nextcloud
2022-09-07 09:58:29 +02:00
Simon L
5a91eeb55c Merge pull request #1103 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20220826
Bump ubuntu from focal-20220801 to focal-20220826 in /Containers/talk
2022-09-07 09:58:10 +02:00
Simon L
b8d686fa00 Merge pull request #1102 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.23-apache-bullseye
Bump php from 8.0.22-apache-bullseye to 8.0.23-apache-bullseye in /Containers/mastercontainer
2022-09-07 09:57:53 +02:00
Simon L
0614d9d3f5 Merge pull request #1081 from nextcloud/aio-dependency-update
Dependency updates
2022-09-07 09:56:26 +02:00
dependabot[bot]
16c75492f3 Bump php in /Containers/mastercontainer
Bumps php from 8.0.22-apache-bullseye to 8.0.23-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-07 07:46:40 +00:00
dependabot[bot]
0cc5d278fb Bump php in /Containers/nextcloud
Bumps php from 8.0.22-fpm-alpine3.16 to 8.0.23-fpm-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-07 07:46:39 +00:00
Simon L
d14ece713f Merge pull request #1045 from nextcloud/aio-yaml-update
Yaml updates
2022-09-07 09:45:53 +02:00
dependabot[bot]
06315218b8 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20220822 to 20220905.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 16:04:45 +00:00
szaimen
e03e3cfc08 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-05 12:19:49 +00:00
szaimen
04abdbed9e Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-05 12:19:49 +00:00
szaimen
abb414129a add a check for init-user-db.sh
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-05 14:06:16 +02:00
szaimen
3f48169f5c increase to 2.0.1
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-05 13:32:14 +02:00
Simon L
db91ede42a Merge pull request #1116 from nextcloud/fix/1115/mastercontainer-healthcheck
improve healthcheck for mastercontainer
2022-09-05 13:31:25 +02:00
szaimen
59bbff23fe improve healthcheck for mastercontainer
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-05 13:29:57 +02:00
Simon L
1a84679537 Merge pull request #1113 from nextcloud/start.sh-typo
Fix typo in mastercontainer start.sh
2022-09-05 13:25:09 +02:00
Álvaro Brey
27e0080ed0 Fix typo in mastercontainer start.sh
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-09-05 10:01:43 +02:00
szaimen
fa4eb44898 Allow to choose a different backup location if the first backup fails
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-03 15:43:40 +02:00
dependabot[bot]
b61d2d46fd Bump ubuntu from focal-20220801 to focal-20220826 in /Containers/talk
Bumps ubuntu from focal-20220801 to focal-20220826.

---
updated-dependencies:
- dependency-name: ubuntu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 12:35:07 +00:00
Simon L
5cebbcd7b3 Merge pull request #1100 from nextcloud/automated/noid/psalm-baseline-update-1662096933
[Automated] Update psalm-baseline.xml
2022-09-02 08:11:22 +02:00
nextcloud-command
92b1639329 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-09-02 05:35:32 +00:00
szaimen
999c74a731 get rid of some strange lines in the mastercontainer logs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 19:04:47 +02:00
szaimen
ec1605d29a do not show progress for borg operations
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 14:22:11 +02:00
szaimen
d6e1f62202 rework the daily backup script and allow to start the backup check from it
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 14:08:40 +02:00
szaimen
5eaff0ba2f fix container logs new line
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 13:45:23 +02:00
szaimen
7ad975f4b1 the dbpassword and dbuser do not need to be overwritten anymore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 12:31:56 +02:00
szaimen
ed82a41bc1 remove resolved issues from nginx docs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-27 16:13:08 +02:00
szaimen
c872c259c1 do not pull containers START_CONTAINERS was provided and not AUTOMATIC_UPDATES
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 22:52:19 +02:00
szaimen
34d5ee6298 use the correct syntax for running from an external script
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 22:35:42 +02:00
szaimen
c29839f65f also save and restore daily backup time upon restore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 15:26:51 +02:00
szaimen
b22c239998 fix restoring of addional bakup dirs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 15:04:52 +02:00
Simon L
2b05939f17 Merge pull request #1065 from nextcloud/enh/noid/fix-fts
fix FTS
2022-08-26 14:47:42 +02:00
szaimen
f8017a0a02 fix FTS
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 14:12:29 +02:00
Simon L
06b3e82522 Merge pull request #1064 from nextcloud/enh/noid/publish
use long syntax for port publishing
2022-08-26 14:03:45 +02:00
szaimen
f188ac8ebf reorder dependencies
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 14:03:18 +02:00
Simon L
e9d9fb1ae6 Merge pull request #1063 from nextcloud/enh/noid/sig-proxy
modify the docker run command to not exit if you press ctrl+c
2022-08-26 12:35:45 +02:00
szaimen
c6b9bf20e7 modify the docker run command to not exit if you press ctrl+c
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 12:27:13 +02:00
szaimen
84333607e8 use long syntax for port publishing
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 12:21:56 +02:00
szaimen
40b2e014fb Fix additional backup dirs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 19:03:29 +02:00
Simon L
14fdec4dd4 Merge pull request #1060 from nextcloud/healthcheck-apache-fix
fix apache healthcheck
2022-08-25 18:21:04 +02:00
Zoey
a9c4b1fdf4 fix apache healthcheck
Signed-off-by: Zoey <zoey@z0ey.de>
Co-Authored-By: Simon L. <szaimen@e.mail.de>
2022-08-25 18:17:29 +02:00
Simon L
90bf396b9e Merge pull request #1059 from nextcloud/healthcheck-fulltextsearch-patch-1
fix healthcheck in fulltextsearch container
2022-08-25 17:47:11 +02:00
Zoey
bf165642dc fix healthcheck in fulltextsearch container
Signed-off-by: Zoey <zoey@z0ey.de>
2022-08-25 16:18:46 +02:00
szaimen
ce7027d026 increase to 2.0.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 15:29:23 +02:00
Simon L
f15a28b9e7 Merge pull request #1058 from nextcloud/Zoey2936-patch-1
add docker healthchecks to the docker images
2022-08-25 15:28:05 +02:00
Zoey
1edb422f3d add docker healthchecks to the docker images
Signed-off-by: Zoey <zoey@z0ey.de>
2022-08-25 15:18:35 +02:00
szaimen
c90ee1c4db add PHP_MAX_TIME to containers.json
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 14:59:57 +02:00
Simon L
f3ce490a8c Merge pull request #1046 from nextcloud/enh/695/additional-directories
allow to back up additional directories
2022-08-25 14:31:50 +02:00
Simon L
687707731f add command-rebase
Signed-off-by: szaimen <szaimen@e.mail.de>

Signed-off-by: Simon L. <szaimen@e.mail.de>
2022-08-25 13:52:58 +02:00
szaimen
2ee63dbe42 allow to back up additional directories
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 13:44:04 +02:00
szaimen
6c63adc37f fix fulltextsearch build
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 13:33:16 +02:00
Simon L
267378998c Merge pull request #1057 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-7.17.6
Bump elasticsearch from 7.17.5 to 7.17.6 in /Containers/fulltextsearch
2022-08-25 13:04:23 +02:00
dependabot[bot]
9dbad0592c Bump elasticsearch from 7.17.5 to 7.17.6 in /Containers/fulltextsearch
Bumps elasticsearch from 7.17.5 to 7.17.6.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-25 11:01:18 +00:00
szaimen
c353406f24 do not update elasticsearch to major automatically
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 13:00:39 +02:00
Simon L
40efd3092f Merge pull request #1044 from nextcloud/enh/1036/fulltextsearch
add fulltextsearch as option
2022-08-25 12:58:18 +02:00
Simon L
37d40f0992 Merge pull request #1042 from nextcloud/enh/noid/temp_dir
Configure tempdirectory automatically
2022-08-25 12:57:45 +02:00
szaimen
b94b72e893 substitute 365d through inf
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 12:53:36 +02:00
szaimen
201dfc67f3 fix removing clamav and onlyoffice correctly
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 12:20:06 +02:00
Simon L
8ff05aa80a Merge pull request #1052 from flortsch/patch-2
Fix bad error message in start.sh
2022-08-25 11:55:51 +02:00
Florian Latifi
cc19fd4e74 Fix bad error message in start.sh
Fix bad error message in start.sh which seems to be a copy/paste error from the previous if check.

Signed-off-by: Florian Latifi <mail@florian-latifi.at>
2022-08-23 21:45:48 +02:00
Simon L
7af4c3a2ec Merge pull request #1050 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.5.4.1
Bump collabora/code from 22.05.5.3.1 to 22.05.5.4.1 in /Containers/collabora
2022-08-23 15:20:29 +02:00
Simon L
387fa30056 Merge pull request #1049 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220822-slim
Bump debian from bullseye-20220801-slim to bullseye-20220822-slim in /Containers/borgbackup
2022-08-23 15:17:23 +02:00
Simon L
8628ab06c3 Merge pull request #1051 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220822-slim
Bump debian from bullseye-20220801-slim to bullseye-20220822-slim in /Containers/apache
2022-08-23 15:16:55 +02:00
dependabot[bot]
c264cc3a02 Bump debian in /Containers/apache
Bumps debian from bullseye-20220801-slim to bullseye-20220822-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 12:40:04 +00:00
dependabot[bot]
212e5eff1c Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.5.3.1 to 22.05.5.4.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 12:39:57 +00:00
dependabot[bot]
aa957ad4f4 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220801-slim to bullseye-20220822-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 12:39:57 +00:00
szaimen
8010030a5d add fulltextsearch as option
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-23 11:37:59 +02:00
szaimen
096be7107a fix enabling of imaginary
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 23:14:05 +02:00
szaimen
7b4876c681 fix changing the max_children
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 23:05:14 +02:00
szaimen
2e1e53e9d3 fix setting max connections
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 22:45:03 +02:00
szaimen
20892c2d40 fix onlyoffice not being there anymore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 22:36:34 +02:00
szaimen
2ba61b8971 remove Onlyoffice from QA section
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 14:05:53 +02:00
szaimen
25bd890a71 add imaginary to QA section
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 14:03:54 +02:00
szaimen
09003fcce1 rework collabora activation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 13:25:14 +02:00
Simon L
7ddb60cce9 Merge pull request #1029 from nextcloud/enh/noid/set-values-based-on-hardware
set max connections and max php children based on available hardware
2022-08-22 12:31:16 +02:00
Simon L
b38a7e11c1 Merge pull request #1030 from nextcloud/enh/901/upload-time
allow to adjust the max upload time
2022-08-22 12:28:02 +02:00
szaimen
f42cb98b98 allow to adjust the max upload time
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 12:27:06 +02:00
Simon L
9a83c3af47 Merge pull request #1035 from Zoey2936/patch-1
Set default talk port inside Dockerfile
2022-08-22 12:21:59 +02:00
Simon L
eb744398d7 Merge pull request #1028 from nextcloud/enh/880/upload-limit
allow to adjust the upload limit
2022-08-22 12:18:52 +02:00
szaimen
e152185fe9 allow to adjust the upload limit
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 12:11:55 +02:00
Simon L
7ba83089ec Merge pull request #1043 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20220822
Bump nextcloud/imaginary from 20220819 to 20220822 in /Containers/imaginary
2022-08-22 12:07:00 +02:00
dependabot[bot]
de99fb89f9 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20220819 to 20220822.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 10:05:45 +00:00
Simon L
2fab890ac0 Merge pull request #1026 from nextcloud/enh/393/imaginary
add imaginary as option
2022-08-22 12:05:14 +02:00
szaimen
05e90d6110 add imaginary
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 12:02:56 +02:00
Simon L
c926f92b6f Merge pull request #1024 from nextcloud/enh/noid/disable-onlyoffice
disable onlyoffice
2022-08-22 11:58:45 +02:00
Simon L
8350aad484 Merge pull request #1025 from nextcloud/aio-yaml-update
Yaml updates
2022-08-22 11:54:36 +02:00
szaimen
b75074f30d Configure tempdirectory automatically
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 11:14:19 +02:00
szaimen
ae29ce409e Support big file uploads in Apache
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 10:19:28 +02:00
szaimen
fa265a84c5 improve wording
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-21 21:09:41 +02:00
szaimen
5cfdb32081 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-08-21 12:16:25 +00:00
szaimen
539727a19d fix dependency updates
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-20 15:34:14 +02:00
szaimen
8754cd3571 disable onlyoffice
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-20 13:50:13 +02:00
Zoey
365c1065fe Set default talk port inside Dockerfile
Should close https://github.com/nextcloud/all-in-one/issues/1011, because so the default env is set and when the talk container is launched by the mastercontainer, the env should be overridden by the env send from the mastercontainer.
If I have an image with an env (myenv=456) set inside the Dockerfile and then launch it with "-e myenv=123" the env is set to 123 inside the container,
I hope it's the same when the container is launched through the docker socket. But if yes, this should change help.

Signed-off-by: Zoey <zoey@z0ey.de>
2022-08-19 20:34:51 +02:00
szaimen
cbec4df965 fix dependency updates
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-18 14:28:19 +02:00
szaimen
bd4b3d69d6 add s3 and swift back for manual installations
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-18 13:36:24 +02:00
Simon L
115b295999 Make system requirements a bit more clear
Signed-off-by: Simon L. <szaimen@e.mail.de>
2022-08-18 00:46:45 +02:00
szaimen
5804f68824 set max connections and max php children based on available hardware
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-17 19:10:54 +02:00
szaimen
b307c39f70 fix the layout
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-17 13:01:58 +02:00
szaimen
b8d29c5c96 increase to 1.7.1
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-17 12:28:30 +02:00
Simon L
c311a1d062 Merge pull request #1019 from nextcloud/enh/noid/nextcloud-update-failed
don't allow the Nextcloud container to start if the update failed
2022-08-17 12:26:53 +02:00
Simon L
df92b4bf61 Merge pull request #1018 from nextcloud/enh/noid/wait-for-database
wait for the database startup correctly
2022-08-17 12:25:28 +02:00
szaimen
9f6c532170 don't allow the Nextcloud container to start if the update failed
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-17 12:24:01 +02:00
Simon L
d90c3f095d Merge pull request #1022 from nextcloud/office-home-mode
Set collabora home option
2022-08-17 12:18:28 +02:00
szaimen
12750837a6 wait for the database startup correctly
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-16 17:58:13 +02:00
Simon L
315e97c460 Merge pull request #1023 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.5.3.1
Bump collabora/code from 22.05.5.2.1 to 22.05.5.3.1 in /Containers/collabora
2022-08-16 16:04:17 +02:00
dependabot[bot]
b3e2fadbc9 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.5.2.1 to 22.05.5.3.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-16 12:37:17 +00:00
Julius Härtl
0b49031058 Set collabora home option
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-15 21:24:34 +02:00
Simon L
8f857906d8 Merge pull request #1021 from andygeorge/andygeorge/replace-loose-with-lose
Grammar fix: Replace "loose" with "lose"
2022-08-15 17:52:28 +02:00
Andy George
faa449b9c2 Update setup.twig
Signed-off-by: Andy George <andygeorge@users.noreply.github.com>
2022-08-15 09:53:37 -05:00
Andy George
27a7598eb7 Update containers.twig
Signed-off-by: Andy George <andygeorge@users.noreply.github.com>
2022-08-15 09:53:20 -05:00
Andy George
8f3bbe1fb9 Update readme.md
Signed-off-by: Andy George <andygeorge@users.noreply.github.com>
2022-08-15 09:52:48 -05:00
Simon L
d331f6e65e Merge pull request #1020 from nextcloud/dependabot/docker/Containers/postgresql/postgres-14.5-alpine
Bump postgres from 14.4-alpine to 14.5-alpine in /Containers/postgresql
2022-08-15 15:08:15 +02:00
dependabot[bot]
7e4d54a3e0 Bump postgres from 14.4-alpine to 14.5-alpine in /Containers/postgresql
Bumps postgres from 14.4-alpine to 14.5-alpine.

---
updated-dependencies:
- dependency-name: postgres
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 12:34:56 +00:00
szaimen
1411a0d8b1 add a hint how to skip the domain validation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-15 13:28:12 +02:00
szaimen
22e9d009bf add it also to the multiple instances documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-15 13:17:41 +02:00
szaimen
090842e334 document how to adjust the talk-port
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-15 13:15:25 +02:00
Simon L
815e65d7b0 Merge pull request #1003 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.16.2
Bump alpine from 3.16.1 to 3.16.2 in /Containers/domaincheck
2022-08-15 12:08:13 +02:00
Simon L
be39df9e98 Merge pull request #1002 from nextcloud/dependabot/docker/Containers/watchtower/alpine-3.16.2
Bump alpine from 3.16.1 to 3.16.2 in /Containers/watchtower
2022-08-15 12:08:09 +02:00
Simon L
c102f1f59a Merge pull request #1007 from nextcloud/aio-dependency-update
Dependency updates
2022-08-15 12:08:01 +02:00
Simon L
95f590fc24 Merge pull request #1006 from nextcloud/nextcloud-container-update
Nextcloud update
2022-08-15 12:07:38 +02:00
dependabot[bot]
3f1131d5f3 Bump alpine from 3.16.1 to 3.16.2 in /Containers/domaincheck
Bumps alpine from 3.16.1 to 3.16.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 10:07:12 +00:00
dependabot[bot]
2545b3fd16 Bump alpine from 3.16.1 to 3.16.2 in /Containers/watchtower
Bumps alpine from 3.16.1 to 3.16.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 10:07:11 +00:00
Simon L
801bd2ce4b Merge pull request #997 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.22-apache-bullseye
Bump php from 8.0.21-apache-bullseye to 8.0.22-apache-bullseye in /Containers/mastercontainer
2022-08-15 12:06:44 +02:00
Simon L
b7401866fb Merge pull request #996 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.22-fpm-alpine3.16
Bump php from 8.0.21-fpm-alpine3.16 to 8.0.22-fpm-alpine3.16 in /Containers/nextcloud
2022-08-15 12:06:27 +02:00
Simon L
018dac5639 Merge pull request #989 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20220801
Bump ubuntu from focal-20220531 to focal-20220801 in /Containers/talk
2022-08-15 12:06:02 +02:00
Simon L
0aaa25068e Merge pull request #988 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220801-slim
Bump debian from bullseye-20220711-slim to bullseye-20220801-slim in /Containers/borgbackup
2022-08-15 12:05:36 +02:00
Simon L
8019c70f88 Merge pull request #987 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220801-slim
Bump debian from bullseye-20220711-slim to bullseye-20220801-slim in /Containers/apache
2022-08-15 12:05:20 +02:00
Simon L
5e71675a8a Merge pull request #977 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-0.105.1
Bump clamav/clamav from 0.105.0 to 0.105.1 in /Containers/clamav
2022-08-15 12:05:04 +02:00
szaimen
177e115b2b document how to skip the domain validation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-15 11:51:54 +02:00
Julius Härtl
abe463eaba Merge pull request #1010 from flortsch/patch-1
Fix sed line in start.sh
2022-08-14 21:10:53 +02:00
Florian Latifi
7109e22acc Fix sed line in start.sh
Signed-off-by: Florian Latifi <mail@florian-latifi.at>
2022-08-14 15:43:14 +02:00
szaimen
1a4729fcd9 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-08-12 12:18:22 +00:00
szaimen
50602b52ac nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-08-11 12:51:07 +00:00
Julius Härtl
5d044d8fea Merge pull request #995 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.5.2.1 2022-08-05 16:10:13 +02:00
dependabot[bot]
ad72f07fa0 Bump php in /Containers/mastercontainer
Bumps php from 8.0.21-apache-bullseye to 8.0.22-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 12:28:00 +00:00
dependabot[bot]
6ec26ae310 Bump php in /Containers/nextcloud
Bumps php from 8.0.21-fpm-alpine3.16 to 8.0.22-fpm-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 12:27:59 +00:00
dependabot[bot]
5ce4d9ce91 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.5.1.1 to 22.05.5.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 12:27:57 +00:00
Julius Härtl
5ac481803d Merge pull request #993 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.5.1.1 2022-08-04 16:35:59 +02:00
dependabot[bot]
c01d7bd990 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.4.1.1 to 22.05.5.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 12:31:48 +00:00
Julius Härtl
37d1ac9fba Merge pull request #991 from nextcloud/automated/noid/psalm-baseline-update-1659503285
[Automated] Update psalm-baseline.xml
2022-08-03 08:06:46 +02:00
nextcloud-command
52afdac462 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-08-03 05:08:05 +00:00
dependabot[bot]
de20e07f43 Bump ubuntu from focal-20220531 to focal-20220801 in /Containers/talk
Bumps ubuntu from focal-20220531 to focal-20220801.

---
updated-dependencies:
- dependency-name: ubuntu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 12:31:40 +00:00
dependabot[bot]
d4e3495d10 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220711-slim to bullseye-20220801-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 12:31:39 +00:00
dependabot[bot]
d217afcf64 Bump debian in /Containers/apache
Bumps debian from bullseye-20220711-slim to bullseye-20220801-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 12:31:29 +00:00
szaimen
e7867e1265 fix detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-31 21:43:22 +02:00
szaimen
c4e7a0ea0b document that buying a certificate is also an option
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-31 19:27:37 +02:00
szaimen
42dac435ec add a comment on ports
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-31 11:25:20 +02:00
szaimen
82a5a15ce5 document the user_migration app for migrating
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-31 11:02:58 +02:00
Simon L
699a40c6f5 Merge pull request #980 from nextcloud/automated/noid/psalm-baseline-update-1659070391
[Automated] Update psalm-baseline.xml
2022-07-29 10:16:52 +02:00
nextcloud-command
d8d13549f3 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-07-29 04:53:10 +00:00
szaimen
8e2df6dfa2 improve notes
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-28 15:33:21 +02:00
szaimen
4674b6899f improve the link
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-27 16:03:36 +02:00
szaimen
1cf03ec378 add a section on how to test things
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-27 16:01:10 +02:00
dependabot[bot]
ee728d7f2d Bump clamav/clamav from 0.105.0 to 0.105.1 in /Containers/clamav
Bumps clamav/clamav from 0.105.0 to 0.105.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 12:32:38 +00:00
szaimen
46ca08858a fix database import
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-26 20:41:47 +02:00
szaimen
da79cf777d update to 1.7.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-26 20:10:01 +02:00
Simon L
0313187846 Merge pull request #945 from nextcloud/enh/910/disable-backup-section
allow to disable the backup section
2022-07-26 20:08:30 +02:00
szaimen
9052828dde allow to disable the backup section
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-26 20:05:59 +02:00
szaimen
adcba6b751 make clear when apache_ip_binding needs to be set
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-26 19:56:36 +02:00
Simon L
7e24978a8c Merge pull request #840 from nextcloud/enh/669/nextcloud-24
update Nextcloud to 24
2022-07-26 19:53:35 +02:00
Simon L
1e82dada6b Merge pull request #955 from nextcloud/dependabot/docker/Containers/watchtower/alpine-3.16.1
Bump alpine from 3.15.4 to 3.16.1 in /Containers/watchtower
2022-07-26 19:53:03 +02:00
Simon L
af997e5ede Merge pull request #956 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.16.1
Bump alpine from 3.15.4 to 3.16.1 in /Containers/domaincheck
2022-07-26 19:52:52 +02:00
dependabot[bot]
f6fd2e69b3 Bump alpine from 3.15.4 to 3.16.1 in /Containers/domaincheck
Bumps alpine from 3.15.4 to 3.16.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-26 17:48:03 +00:00
dependabot[bot]
5bb6dc4c38 Bump alpine from 3.15.4 to 3.16.1 in /Containers/watchtower
Bumps alpine from 3.15.4 to 3.16.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-26 17:48:01 +00:00
Simon L
651a9ac99f Merge pull request #958 from nextcloud/enh/noid/update-php-fpm-alpine
update php:fpm-alpine to 3.16
2022-07-26 19:47:32 +02:00
Simon L
7d1f8272c7 Merge pull request #969 from nextcloud/enh/noid/clamav-update
update clamav to 0.105.0
2022-07-26 19:47:19 +02:00
Simon L
3ec271bbc5 Merge pull request #970 from nextcloud/fix/967/fix-import
fix database import for cases where the owner is not one of the expec…
2022-07-26 19:47:06 +02:00
Simon L
e7024127cf Merge pull request #954 from nextcloud/aio-yaml-update
Yaml updates
2022-07-25 19:19:21 +02:00
szaimen
659a2537a2 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-07-23 12:17:00 +00:00
szaimen
55ed50228b add a few hints
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-23 13:25:26 +02:00
szaimen
0bc4fb384a add a hint to the windows documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-23 13:16:39 +02:00
szaimen
f0dba693d5 Remove this warning as it is not correct anymore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-23 09:51:37 +02:00
szaimen
d86adc7438 this is not needed to be run manually anymore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-23 09:49:09 +02:00
szaimen
7aa433a9a4 fix database import for cases where the owner is not one of the expected ones
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-23 09:39:45 +02:00
szaimen
1e8ab5e3bf update clamav to 0.105.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-23 09:09:52 +02:00
Simon L
4f98879c26 Merge pull request #968 from fa-ribeiro/patch-1
Fixes small typo in multiple-instances.md
2022-07-22 22:16:12 +02:00
Fernando Ribeiro
36f0ef419e typo correction
"rootles" must be "rootless"

Signed-off-by: Fernando Ribeiro <fribeiro@fribeiro.org>
2022-07-22 13:59:02 +01:00
szaimen
e6a9fcd3c8 change the recommendation how to run clean the database
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-22 00:37:09 +02:00
szaimen
a864e74105 fix some links
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-21 01:31:50 +02:00
szaimen
bf38592e98 improve headings
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-21 01:17:42 +02:00
Simon L
bc7516857f Merge pull request #940 from nextcloud/enh/854/multiple-aio-instances
add documentation on how to run multiple AIO instances on the same server
2022-07-20 21:00:13 +02:00
Simon L
691bcc00cb Merge pull request #946 from nextcloud/enh/356/mail-server
add documentation for mail server
2022-07-20 20:59:40 +02:00
szaimen
9906b58270 document some more restrictions
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-20 20:55:50 +02:00
Simon L
9825199dcb Merge pull request #947 from nextcloud/enh/876/dns-challenge
add documentation on how use ACME DNS-challenge for AIO
2022-07-20 19:55:44 +02:00
szaimen
0a43ec8750 add documentation on how use ACME DNS-challenge for AIO
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-20 19:51:07 +02:00
Julius Härtl
f24933cd0a Merge pull request #949 from nextcloud/enh/878/run-locally 2022-07-20 13:40:33 +02:00
szaimen
d8d7d1c04c update php:fpm-alpine to 3.16
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-19 17:40:23 +02:00
szaimen
636744a3ca update Nextcloud to 24
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-18 17:57:17 +02:00
szaimen
bba267511c use a verb for the login button
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-18 17:53:10 +02:00
szaimen
2e64f989d6 improve the wording
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-18 17:44:30 +02:00
Simon L
9de369e6ab Merge pull request #951 from nextcloud/revert-950-aio-yaml-update
Revert "Yaml updates"
2022-07-18 17:13:59 +02:00
Simon L
10485045b4 Revert "Yaml updates" 2022-07-18 17:12:39 +02:00
Simon L
4f9ed2bcd3 Merge pull request #950 from nextcloud/aio-yaml-update
Yaml updates
2022-07-18 15:05:08 +02:00
szaimen
f84b84eb6b Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-07-18 12:23:42 +00:00
szaimen
94694cc0ac document how to run it locally
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-18 02:00:48 +02:00
szaimen
4913231a98 add documentation for mail server
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-17 22:32:55 +02:00
szaimen
fc01a07d38 add documentation on how to run multiple AIO instances on the same server
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-17 20:36:23 +02:00
Simon L
63a74beeab Merge pull request #909 from nextcloud/enh/722/run-externally
add documentation for running from an external script
2022-07-17 20:30:48 +02:00
Simon L
57adc3a137 Merge pull request #887 from nextcloud/enh/884/apache-listen-localhost
Document how to restrict the apache_port only listen on localhost
2022-07-17 20:29:39 +02:00
szaimen
0dd9177630 fix automatic updates
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-17 20:19:11 +02:00
szaimen
02ec273971 update to 1.6.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-17 19:46:36 +02:00
Simon L
70c4223a29 Merge pull request #908 from nextcloud/enh/722/automatic-updates
allow to run daily backups without automatic updates
2022-07-17 19:45:58 +02:00
szaimen
79e53f0d00 allow to run daily backups without automatic updates
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-17 19:45:16 +02:00
szaimen
cd6e0ed9d4 fix the lighttpd config
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-17 19:30:34 +02:00
szaimen
ac9f86a525 update postgres to 14.4
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-17 18:54:49 +02:00
szaimen
675b2025d2 Document how to restrict the apache_port only listen on localhost
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-17 18:25:00 +02:00
Simon L
8021c8119f Merge pull request #898 from nextcloud/enh/noid/lighttpd-ipv6
enable ipv6 for lighttpd
2022-07-17 18:24:05 +02:00
Simon L
a58185bb6e Merge pull request #897 from nextcloud/enh/noid/update-on-saturdays
only update apps on saturdays
2022-07-17 18:23:53 +02:00
Simon L
ce0ede2bcc Merge pull request #904 from nextcloud/enh/889/ip-binding
allow to specify an apache ip-binding
2022-07-17 18:23:16 +02:00
szaimen
a708102ca7 recommend lldap as ldap container
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-17 17:32:24 +02:00
Simon L
def0509bb3 Merge pull request #941 from MiguelGuthridge/patch-1
Improve docs for Cloudflare Tunnel setup
2022-07-17 10:44:01 +02:00
Miguel Guthridge
3b2e4a22ae Improve docs for Cloudflare Tunnel setup
Signed-off-by: Miguel Guthridge <hdsq@outlook.com.au>
2022-07-16 21:46:01 +10:00
szaimen
478aadf3fa add the docker rootless script to the documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-16 10:52:42 +02:00
Simon L
443daa092f Merge pull request #899 from nextcloud/enh/noid/ipv6-support
document how to enable ipv6 support
2022-07-16 10:43:48 +02:00
Simon L
8425fa1b6d Merge pull request #938 from nextcloud/enh/933/document-domain-change
document how to change the domain
2022-07-16 10:42:21 +02:00
Simon L
07d1b5e240 Merge pull request #939 from nextcloud/enh/934/portainer
document how to run it with Portainer
2022-07-16 10:41:11 +02:00
szaimen
bdedc6ab24 document how to run it with Portainer
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-14 19:21:59 +02:00
szaimen
dd1287469d document how to change the domain
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-14 19:11:36 +02:00
Simon L
2bf511a935 Remove Lukas from codeowners and Max as well
Signed-off-by: Simon L. <szaimen@e.mail.de>
2022-07-14 15:41:38 +02:00
Simon L
72140ddf36 Merge pull request #935 from HedgeShot/patch-1
add docs on fail2ban config
2022-07-14 11:09:48 +02:00
HedgeShot
e2ca219cf5 add docs on fail2ban config
fail2ban and docker don't play nice by default, need to add a rule in the config file to make sure docker doesn't bypass fail2ban jail.


Signed-off-by: HedgeShot <HedgeShot@users.noreply.github.com>
2022-07-14 11:06:18 +02:00
szaimen
6e84405249 add configuration for running from an external script
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-13 21:28:05 +02:00
Simon L
1a4e5ce3f4 Merge pull request #930 from nextcloud/dependabot/docker/Containers/mastercontainer/caddy-2.5.2-alpine
Bump caddy from 2.5.1-alpine to 2.5.2-alpine in /Containers/mastercontainer
2022-07-13 19:56:43 +02:00
Simon L
5a7aa1cb1f Merge pull request #929 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.4.1.1
Bump collabora/code from 22.05.3.1.1 to 22.05.4.1.1 in /Containers/collabora
2022-07-13 19:56:25 +02:00
dependabot[bot]
45b031545a Bump caddy in /Containers/mastercontainer
Bumps caddy from 2.5.1-alpine to 2.5.2-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-13 17:55:47 +00:00
Simon L
3ce14dc23c Merge pull request #928 from nextcloud/dependabot/docker/Containers/apache/caddy-2.5.2-alpine
Bump caddy from 2.5.1-alpine to 2.5.2-alpine in /Containers/apache
2022-07-13 19:55:28 +02:00
Simon L
bc34ab31bc Merge pull request #924 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220711-slim
Bump debian from bullseye-20220622-slim to bullseye-20220711-slim in /Containers/apache
2022-07-13 19:55:10 +02:00
Simon L
dba9980202 Merge pull request #923 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220711-slim
Bump debian from bullseye-20220622-slim to bullseye-20220711-slim in /Containers/borgbackup
2022-07-13 19:54:56 +02:00
Simon L
bd5301cd48 Merge pull request #903 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.21-apache-bullseye
Bump php from 8.0.20-apache-bullseye to 8.0.21-apache-bullseye in /Containers/mastercontainer
2022-07-13 19:54:38 +02:00
Simon L
e4aff51ea5 Merge pull request #902 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.21-fpm-alpine3.15
Bump php from 8.0.20-fpm-alpine3.15 to 8.0.21-fpm-alpine3.15 in /Containers/nextcloud
2022-07-13 19:54:19 +02:00
dependabot[bot]
84dbfc1ed3 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.3.1.1 to 22.05.4.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-13 12:41:23 +00:00
dependabot[bot]
750c61a8df Bump caddy from 2.5.1-alpine to 2.5.2-alpine in /Containers/apache
Bumps caddy from 2.5.1-alpine to 2.5.2-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-13 12:41:19 +00:00
dependabot[bot]
11fdf29fdd Bump debian in /Containers/apache
Bumps debian from bullseye-20220622-slim to bullseye-20220711-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-12 12:45:25 +00:00
dependabot[bot]
cfe839f3f6 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220622-slim to bullseye-20220711-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-12 12:45:25 +00:00
Simon L
0224304dca Merge pull request #868 from nextcloud/aio-yaml-update
Yaml updates
2022-07-11 11:55:11 +02:00
szaimen
482b279f3c allow to specify an apache ip-binding
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-08 17:11:49 +02:00
dependabot[bot]
f78620402e Bump php in /Containers/mastercontainer
Bumps php from 8.0.20-apache-bullseye to 8.0.21-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-08 12:32:57 +00:00
dependabot[bot]
1b6a3142cd Bump php in /Containers/nextcloud
Bumps php from 8.0.20-fpm-alpine3.15 to 8.0.21-fpm-alpine3.15.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-08 12:32:55 +00:00
szaimen
71549c49eb document how to enable ipv6 support
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-08 11:54:29 +02:00
szaimen
4db1b278b1 enable ipv6 for lighttpd
Signed-off-by: szaimen <szaimen@e.mail.de>

Revert "enable ipv6 for lighttpd"

This reverts commit 3d03d45d0b024845fdd58eb08e490df75219b335.

Update lighttpd.conf
2022-07-08 11:50:52 +02:00
szaimen
1ebb03aef7 only update apps on saturdays
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-08 11:24:03 +02:00
szaimen
97f59ac009 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-07-07 12:20:18 +00:00
Simon L
005ad34741 Merge pull request #896 from grossamos/main
fixed typo in backup section of README
2022-07-07 09:36:13 +02:00
grossamos
7cc922c18f fixed typo in readme
incorrect use of the verb "save"
Signed-off-by: grossamos <email@amosgross.com>
2022-07-07 08:42:40 +02:00
szaimen
5ece00e496 fix shouldDomainValidationBeSkipped
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 15:32:39 +02:00
szaimen
db620e035a increase to 1.5.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 14:36:54 +02:00
Simon L
f99d4f19c6 Merge pull request #865 from nextcloud/enh/761/collabora-dictionaries
allow to set collabora dictionaries
2022-07-04 14:35:21 +02:00
szaimen
97f053228c allow to set collabora dictionaries
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 14:32:48 +02:00
Simon L
a26d36c084 Merge pull request #793 from nextcloud/enh/734/talk-port
allow to adjust the talk port
2022-07-04 14:21:35 +02:00
szaimen
7ae718300f allow to adjust the talk port
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 14:17:33 +02:00
Simon L
8b7aa71d15 Merge pull request #869 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.3.1.1
Bump collabora/code from 21.11.5.3.1 to 22.05.3.1.1 in /Containers/collabora
2022-07-04 14:15:45 +02:00
Simon L
8f5966dae9 Merge pull request #873 from nextcloud/enh/858/skip-domain-verification
allow to skip the domain validation and add documentation for cloud…
2022-07-04 14:15:28 +02:00
szaimen
263b5605e1 onlyoffice now needs allow_local_remote_servers, too
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 13:35:23 +02:00
szaimen
7f245bd048 allow to skip the domain verification and add documentation for cloudflare argo tunnel
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-30 17:00:00 +02:00
Simon L
758a721d84 Merge pull request #867 from nextcloud/aio-dependency-update
Dependency updates
2022-06-30 16:56:47 +02:00
szaimen
49d94b388e remove the onlyoffice secret from latest-arm64.yml
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-30 16:55:35 +02:00
Simon L
973ea5ff4f Merge pull request #875 from nextcloud/enh/noid/internal-ip-address-documentation
add documentation on how to fix the internal or reserved ip-address e…
2022-06-30 16:51:17 +02:00
szaimen
0bd376743f add documentation on how to fix the internal or reserved ip-address error
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-30 16:41:12 +02:00
Simon L
86f15d0911 Merge pull request #874 from nextcloud/fix/872/ipv6-domain-validatioin
domain validation should be compatible with ipv6 only as well
2022-06-30 16:11:02 +02:00
szaimen
00c6eeda44 domain validation should be compatible with ipv6 only
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-30 14:47:37 +02:00
dependabot[bot]
9d8990348b Bump collabora/code in /Containers/collabora
Bumps collabora/code from 21.11.5.3.1 to 22.05.3.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-29 12:33:52 +00:00
szaimen
036bba94c0 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-06-28 12:19:27 +00:00
Simon L
dfb672811f Merge pull request #866 from nextcloud/automated/noid/psalm-baseline-update-1656391562
[Automated] Update psalm-baseline.xml
2022-06-28 07:58:02 +02:00
nextcloud-command
db89be5e9c Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-06-28 04:46:02 +00:00
szaimen
847e5a887c fix onlyoffice secret
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 17:29:37 +02:00
Simon L
dc87c7d3f4 Merge pull request #794 from nextcloud/enh/748/onlyoffice-collabora-secret
add a secret to onlyoffice
2022-06-27 16:47:57 +02:00
Simon L
bea77e4642 Merge pull request #859 from nextcloud/enh/noid/setdomain-logging
improve logging of setdomain and allow private ip-addresses again when running behind a reverse proxy
2022-06-27 16:47:30 +02:00
Simon L
e6211d93fe Merge pull request #864 from nextcloud/enh/862/change-backup-path
allow to change the backup path again if the initial backup was not s…
2022-06-27 16:46:45 +02:00
szaimen
2cf98773cc add a secret to onlyoffice and collabora
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 14:11:29 +02:00
Simon L
85caab7507 Merge pull request #853 from nextcloud/enh/noid/requirements
add a list of requirements for integrating new containers
2022-06-27 12:56:37 +02:00
Simon L
13beca4072 Merge pull request #852 from nextcloud/enh/noid/netdata
document how to install Netdata
2022-06-27 12:55:57 +02:00
Simon L
988c37f60b Merge pull request #851 from nextcloud/enh/noid/fail2ban
add docs on how to set up fail2ban
2022-06-27 12:54:57 +02:00
Simon L
d462813e4f Merge pull request #835 from nextcloud/enh/834/push-proxy
apache documentation - make the push proxy work
2022-06-27 12:54:17 +02:00
Simon L
4a651fc44e Merge pull request #850 from nextcloud/enh/noid/add-bruteforce-and-database-docs
add some bruteforce documentation and some documentation on phpmyadmi…
2022-06-27 12:53:39 +02:00
Simon L
9d971902d7 Merge pull request #856 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220622-slim
Bump debian from bullseye-20220527-slim to bullseye-20220622-slim in /Containers/borgbackup
2022-06-27 12:52:26 +02:00
Simon L
fb8c2a524d Merge pull request #857 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220622-slim
Bump debian from bullseye-20220527-slim to bullseye-20220622-slim in /Containers/apache
2022-06-27 12:52:13 +02:00
szaimen
95a3323993 allow to change the backup path again if the initial backup was not successful
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 12:49:19 +02:00
szaimen
b454660599 allow to continue with local ip-address when behind reverse proxy
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 12:21:20 +02:00
szaimen
21422f2e1c the timezone needs to be UTC for the mastercontainer
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 12:12:07 +02:00
szaimen
3beee36872 apache documentation - make the push proxy work
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-25 19:38:56 +02:00
szaimen
fc58ec2ac2 make visible that automatic updates is already implemented
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-24 21:22:09 +02:00
szaimen
036c1707d6 add a list of requirements for integratingnew containers
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-24 20:27:13 +02:00
szaimen
9b68d3c157 improve logging of setdomain
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-24 01:00:05 +02:00
dependabot[bot]
fc49283a5e Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220527-slim to bullseye-20220622-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 14:49:59 +00:00
dependabot[bot]
cf0b8bdb2a Bump debian in /Containers/apache
Bumps debian from bullseye-20220527-slim to bullseye-20220622-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 14:49:59 +00:00
Simon L
62e4ea3238 Merge pull request #855 from pmocek/patch-1
docs(manual-install): Fix typo in env var
2022-06-23 14:17:18 +02:00
Phil Mocek
8ff0536705 docs: Fix typo
In manual-install/readme.md, environmental variable NEXTCLOUD_DATADIR was misspelled NEXTLOUD_DATADIR.
2022-06-22 20:00:24 -07:00
szaimen
c88696809a port 80 should not be exposed since it can be changed
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-23 03:12:28 +02:00
szaimen
96888c2ffa document how to install Netdata
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 16:48:38 +02:00
szaimen
693df4d4e2 add docs on how to set up fail2ban
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 16:21:55 +02:00
szaimen
ffcace3688 add some bruteforce documentation and some documentation on phpmyadmin, adminer and pgadmin
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 15:56:10 +02:00
112 changed files with 3608 additions and 1332 deletions

View File

@@ -11,6 +11,12 @@ labels: bug, 0. Needs triage
* Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
* Subscribe to receive notifications on status change and new comments.
<!---
For issues with Collabora or Talk, make sure to follow https://github.com/nextcloud/all-in-one/discussions/1358. It may already resolve your issue and/or makes it easier to help you.
--->
<!--- Please fill out the whole template below -->
### Steps to reproduce
1.

View File

@@ -135,3 +135,24 @@ updates:
labels:
- 3. to review
- dependencies
- package-ecosystem: "docker"
directory: "/Containers/imaginary"
schedule:
interval: "daily"
time: "12:00"
open-pull-requests-limit: 10
labels:
- 3. to review
- dependencies
- package-ecosystem: "docker"
directory: "/Containers/fulltextsearch"
schedule:
interval: "daily"
time: "12:00"
ignore:
- dependency-name: "elasticsearch"
update-types: ["version-update:semver-major"]
open-pull-requests-limit: 10
labels:
- 3. to review
- dependencies

51
.github/workflows/command-rebase.yml vendored Normal file
View File

@@ -0,0 +1,51 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Rebase command
on:
issue_comment:
types: created
permissions:
contents: read
jobs:
rebase:
runs-on: ubuntu-latest
permissions:
contents: none
# On pull requests and if the comment starts with `/rebase`
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
steps:
- name: Add reaction on start
uses: peter-evans/create-or-update-comment@v2
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
comment-id: ${{ github.event.comment.id }}
reaction-type: "+1"
- name: Checkout the latest code
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.COMMAND_BOT_PAT }}
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.8
env:
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
- name: Add reaction on failure
uses: peter-evans/create-or-update-comment@v2
if: failure()
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
comment-id: ${{ github.event.comment.id }}
reaction-type: "-1"

View File

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

View File

@@ -1,18 +1,20 @@
name: dependency-updates
on:
workflow_dispatch:
schedule:
- cron: '00 12 * * *'
jobs:
dependency_updates:
name: Run dependency update script
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: nanasess/setup-php@master
with:
php-version: '8.0'
php-version: 8.1
extensions: apcu
- name: Run dependency update script
run: |
set -x
@@ -22,7 +24,7 @@ jobs:
cd ./php
composer update
set +e
ALL_LINES="$(composer outdated | grep -v "psr/container")"
ALL_LINES="$(composer outdated | grep -v "psr/container\|^$\|Direct dependencies\|Everything up to date\|Transitive dependencies")"
set -e
while [ -n "$ALL_LINES" ]; do
CURRENT_LINE="$(echo "$ALL_LINES" | head -1)"

View File

@@ -1,48 +1,55 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
on:
pull_request:
push:
branches:
- main
- master
- stable*
jobs:
php-lint:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ["8.0"]
name: php-lint
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
- name: Lint
run: cd php && composer run lint
summary:
runs-on: ubuntu-latest
needs: php-lint
if: always()
name: php-lint-summary
steps:
- name: Summary status
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
concurrency:
group: lint-php-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
php-lint:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ["8.1"]
name: php-lint
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
- name: Lint
run: cd php && composer run lint
summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: php-lint
if: always()
name: php-lint-summary
steps:
- name: Summary status
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi

View File

@@ -14,7 +14,7 @@ jobs:
action:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v3
- uses: dessant/lock-threads@v4
with:
issue-inactive-days: '14'
process-only: 'issues'

View File

@@ -2,6 +2,7 @@
name: nextcloud-update
on:
workflow_dispatch:
schedule:
- cron: '00 12 * * *'
@@ -58,7 +59,7 @@ jobs:
| tail -1
)"
sed -i "s|pecl install imagick.*\;|pecl install imagick-$imagick_version\;|" ./Containers/nextcloud/Dockerfile
# Nextcloud
NC_MAJOR="$(grep "ENV NEXTCLOUD_VERSION" ./Containers/nextcloud/Dockerfile | grep -oP '[23][0-9]')"
NCVERSION=$(curl -s -m 900 https://download.nextcloud.com/server/releases/ | sed --silent 's/.*href="nextcloud-\([^"]\+\).zip.asc".*/\1/p' | grep "$NC_MAJOR" | sort --version-sort | tail -1)

View File

@@ -0,0 +1,29 @@
name: PHP Deprecation Detector
# See https://github.com/wapmorgan/PhpDeprecationDetector
on:
pull_request:
push:
branches:
- main
jobs:
psalm:
name: PHP Deprecation Detector
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up php8.1
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
extensions: apcu
coverage: none
- name: Run script
run: |
set -x
cd php
composer global require wapmorgan/php-deprecation-detector dev-master
composer install
composer run php-deprecation-detector

View File

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

View File

@@ -12,10 +12,10 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Set up php8.0
- name: Set up php8.1
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
php-version: 8.1
extensions: apcu
coverage: none

View File

@@ -8,7 +8,7 @@ on:
jobs:
shellcheck:
name: Github Actions
name: Check Shell
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

3
.gitignore vendored
View File

@@ -5,4 +5,5 @@
/php/vendor
/manual-install/*.conf
!/manual-install/sample.conf
/manual-install/docker-compose.yml
/manual-install/docker-compose.yml
/manual-install/.env

View File

@@ -1 +0,0 @@
* @szaimen @LukasReschke @azul @juliushaertl

View File

@@ -1,9 +1,7 @@
# Caddy is a requirement
FROM caddy:2.5.1-alpine as caddy
FROM caddy:2.6.2-alpine as caddy
FROM debian:bullseye-20220527-slim
EXPOSE 80
FROM debian:bullseye-20221219-slim
RUN mkdir -p /mnt/data; \
chown www-data:www-data /mnt/data;
@@ -47,6 +45,10 @@ RUN rm /etc/apache2/ports.conf; \
RUN set -ex; \
a2dissite 000-default && \
a2dissite default-ssl && \
rm -f /etc/apache2/sites-enabled/000-default.conf && \
rm -f /etc/apache2/sites-enabled/default-ssl.conf && \
rm /etc/apache2/sites-available/000-default.conf && \
rm /etc/apache2/sites-available/default-ssl.conf && \
a2ensite nextcloud.conf && \
rm -rf /var/www/html/* && \
chown www-data:www-data -R /var/log/apache2; \
@@ -62,8 +64,10 @@ RUN mkdir /var/log/supervisord; \
COPY Caddyfile /
COPY start.sh /usr/bin/
COPY healthcheck.sh /usr/bin/
COPY supervisord.conf /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /usr/bin/healthcheck.sh; \
chmod +r /supervisord.conf; \
chown www-data:www-data /Caddyfile; \
chmod +r -R /etc/apache2
@@ -74,4 +78,6 @@ RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER www-data
ENTRYPOINT ["start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD healthcheck.sh

View File

@@ -0,0 +1,9 @@
#!/bin/bash
nc -z "$NEXTCLOUD_HOST" 9000 || exit 0
nc -z localhost 8000 || exit 1
if [ "$APACHE_PORT" != '443' ]; then
nc -z localhost "$APACHE_PORT" || exit 1
else
nc -z "$NC_DOMAIN" "$APACHE_PORT" || exit 1
fi

View File

@@ -1,8 +1,14 @@
Listen 8000
<VirtualHost *:8000>
ServerName localhost
# Add error log
CustomLog /proc/self/fd/1 combined
ErrorLog /proc/self/fd/2
# PHP match
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://nextcloud-aio-nextcloud:9000"
SetHandler "proxy:fcgi://${NEXTCLOUD_HOST}:9000"
</FilesMatch>
# Nextcloud dir
DocumentRoot /var/www/html/
@@ -24,4 +30,13 @@ Listen 8000
# Fix zero file sizes
# See https://github.com/nextcloud/server/issues/3056#issuecomment-954209565
SetEnv proxy-sendcl 1
# See https://httpd.apache.org/docs/current/en/mod/core.html#limitrequestbody
LimitRequestBody ${APACHE_MAX_SIZE}
# See https://httpd.apache.org/docs/current/mod/core.html#timeout
Timeout ${APACHE_MAX_TIME}
# See https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxytimeout
ProxyTimeout ${APACHE_MAX_TIME}
</VirtualHost>

View File

@@ -1,23 +1,23 @@
[supervisord]
nodaemon=true
nodaemon=true
logfile=/var/log/supervisord/supervisord.log
pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
[program:apache]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=apachectl -DFOREGROUND
[program:caddy]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/usr/bin/caddy run -config /Caddyfile
[supervisord]
nodaemon=true
nodaemon=true
logfile=/var/log/supervisord/supervisord.log
pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
[program:apache]
# stdout_logfile=/dev/stdout
# stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=apachectl -DFOREGROUND
[program:caddy]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/usr/bin/caddy run --config /Caddyfile

View File

@@ -1,10 +1,11 @@
FROM debian:bullseye-20220527-slim
FROM debian:bullseye-20221219-slim
RUN set -ex; \
\
echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list; \
apt-get update; \
apt-get install -y --no-install-recommends borgbackup -t bullseye-backports; \
apt-get install -y --no-install-recommends \
borgbackup \
rsync \
fuse \
python3-llfuse \

View File

@@ -66,7 +66,7 @@ if [ "$BORG_MODE" = backup ]; then
# Test that nothing is empty
for directory in "${VOLUME_DIRS[@]}"; do
if [ -z "$(ls -A "$directory")" ]; then
if [ -z "$(ls -A "$directory")" ] && [ "$directory" != "/nextcloud_aio_volumes/nextcloud_aio_elasticsearch" ]; then
echo "$directory is empty which is not allowed."
exit 1
fi
@@ -87,10 +87,13 @@ if [ "$BORG_MODE" = backup ]; then
# Don't initialize if already initialized
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config" ]; then
echo "Cannot initialize a new repository as that was already done at least one time."
echo "If you still want to do so, you may delete the 'borg.config' file that is stored in the mastercontainer volume manually, which will allow you to initialize a new borg repository in the chosen directory."
echo "By default it is stored here: /var/lib/docker/volumes/nextcloud_aio_mastercontainer/_data/data/borg.config"
exit 1
fi
echo "initializing repository..."
NEW_REPOSITORY=1
if ! borg init --debug --encryption=repokey-blake2 "$BORG_BACKUP_DIRECTORY"; then
echo "Could not initialize borg repository."
rm -f "$BORG_BACKUP_DIRECTORY/config"
@@ -124,15 +127,19 @@ if [ "$BORG_MODE" = backup ]; then
# Borg options
# auto,zstd compression seems to has the best ratio based on:
# https://forum.level1techs.com/t/optimal-compression-for-borg-backups/145870/6
BORG_OPTS=(--stats --progress --compression "auto,zstd" --exclude-caches --checkpoint-interval 86400)
BORG_OPTS=(-v --stats --compression "auto,zstd" --exclude-caches --checkpoint-interval 86400)
# Create the backup
echo "Starting the backup..."
get_start_time
if ! borg create "${BORG_OPTS[@]}" "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio" "/nextcloud_aio_volumes/"; then
echo "Deleting the failed backup archive..."
borg delete --stats --progress "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio"
borg delete --stats "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio"
echo "Backup failed!"
if [ "$NEW_REPOSITORY" = 1 ]; then
echo "Deleting borg.config file so that you can choose a different location for the backup."
rm "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config"
fi
exit 1
fi
@@ -140,7 +147,7 @@ if [ "$BORG_MODE" = backup ]; then
rm -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/skip.update"
# Prune options
BORG_PRUNE_OPTS=(--stats --progress --keep-within=7d --keep-weekly=4 --keep-monthly=6 "$BORG_BACKUP_DIRECTORY")
BORG_PRUNE_OPTS=(--stats --keep-within=7d --keep-weekly=4 --keep-monthly=6 "$BORG_BACKUP_DIRECTORY")
# Prune archives
echo "Pruning the archives..."
@@ -149,9 +156,82 @@ if [ "$BORG_MODE" = backup ]; then
exit 1
fi
# Compact archives
echo "Compacting the archives..."
if ! borg compact "$BORG_BACKUP_DIRECTORY"; then
echo "Failed to compact archives!"
exit 1
fi
# Back up additional directories of the host
if [ "$ADDITIONAL_DIRECTORIES_BACKUP" = 'yes' ]; then
if [ -d "/docker_volumes/" ]; then
DOCKER_VOLUME_DIRS="$(find /docker_volumes -mindepth 1 -maxdepth 1 -type d)"
mapfile -t DOCKER_VOLUME_DIRS <<< "$DOCKER_VOLUME_DIRS"
for directory in "${DOCKER_VOLUME_DIRS[@]}"; do
if [ -z "$(ls -A "$directory")" ]; then
echo "$directory is empty which is not allowed."
exit 1
fi
done
echo "Starting the backup for additional volumes..."
if ! borg create "${BORG_OPTS[@]}" "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-additional-docker-volumes" "/docker_volumes/"; then
echo "Deleting the failed backup archive..."
borg delete --stats "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-additional-docker-volumes"
echo "Backup of additional docker-volumes failed!"
exit 1
fi
echo "Pruning additional volumes..."
if ! borg prune --prefix '*_*-additional-docker-volumes' "${BORG_PRUNE_OPTS[@]}"; then
echo "Failed to prune additional docker-volumes archives!"
exit 1
fi
echo "Compacting additional volumes..."
if ! borg compact "$BORG_BACKUP_DIRECTORY"; then
echo "Failed to compact archives!"
exit 1
fi
fi
if [ -d "/host_mounts/" ]; then
EXCLUDED_DIRECTORIES=(home/*/.cache root/.cache var/cache lost+found run var/run dev tmp sys proc)
# Exclude borg backup cache
EXCLUDED_DIRECTORIES+=(var/lib/docker/volumes/nextcloud_aio_backup_cache/_data)
# Exclude target directory
if [ -n "$BORGBACKUP_HOST_LOCATION" ] && [ "$BORGBACKUP_HOST_LOCATION" != "nextcloud_aio_backupdir" ]; then
EXCLUDED_DIRECTORIES+=("$BORGBACKUP_HOST_LOCATION")
fi
for directory in "${EXCLUDED_DIRECTORIES[@]}"
do
EXCLUDE_DIRS+=(--exclude "/host_mounts/$directory/")
done
echo "Starting the backup for additional host mounts..."
if ! borg create "${BORG_OPTS[@]}" "${EXCLUDE_DIRS[@]}" "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-additional-host-mounts" "/host_mounts/"; then
echo "Deleting the failed backup archive..."
borg delete --stats "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-additional-host-mounts"
echo "Backup of additional host-mounts failed!"
exit 1
fi
echo "Pruning additional host mounts..."
if ! borg prune --prefix '*_*-additional-host-mounts' "${BORG_PRUNE_OPTS[@]}"; then
echo "Failed to prune additional host-mount archives!"
exit 1
fi
echo "Compacting additional host mounts..."
if ! borg compact "$BORG_BACKUP_DIRECTORY"; then
echo "Failed to compact archives!"
exit 1
fi
fi
fi
# Inform user
get_expiration_time
echo "Backup finished successfully on $END_DATE_READABLE ($DURATION_READABLE)"
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/update.failed" ]; then
echo "However a Nextcloud update failed. So reporting that the backup failed which will skip any update attempt the next time."
echo "Please restore a backup from before the failed Nextcloud update attempt."
exit 1
fi
exit 0
fi
@@ -172,12 +252,25 @@ if [ "$BORG_MODE" = restore ]; then
exit 1
fi
# Save Additional Backup dirs
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories" ]; then
ADDITIONAL_BACKUP_DIRECTORIES="$(cat /nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories)"
fi
# Save daily backup time
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time" ]; then
DAILY_BACKUPTIME="$(cat /nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time)"
fi
# Restore everything except the configuration file
if ! rsync --stats --archive --human-readable -vv --delete \
--exclude "nextcloud_aio_mastercontainer/session/"** \
--exclude "nextcloud_aio_apache/caddy/"** \
--exclude "nextcloud_aio_mastercontainer/caddy/"** \
--exclude "nextcloud_aio_mastercontainer/certs/"** \
--exclude "nextcloud_aio_mastercontainer/data/daily_backup_running" \
--exclude "nextcloud_aio_mastercontainer/data/configuration.json" \
--exclude "nextcloud_aio_mastercontainer/data/daily_backup_running" \
--exclude "nextcloud_aio_mastercontainer/data/session_date_file" \
--exclude "nextcloud_aio_mastercontainer/session/"** \
/tmp/borg/nextcloud_aio_volumes/ /nextcloud_aio_volumes; then
echo "Something failed while restoring from backup."
umount /tmp/borg
@@ -222,6 +315,20 @@ if [ "$BORG_MODE" = restore ]; then
CONTENTS="$(jq ".nextcloud_datadir = $NEXTCLOUD_DATADIR" /nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/configuration.json)"
echo -E "${CONTENTS}" > /nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/configuration.json
# Reset the additional backup directories
if [ -n "$ADDITIONAL_BACKUP_DIRECTORIES" ]; then
echo "$ADDITIONAL_BACKUP_DIRECTORIES" > "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories"
chown 33:0 "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories"
chmod 770 "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories"
fi
# Reset the additional backup directories
if [ -n "$DAILY_BACKUPTIME" ]; then
echo "$DAILY_BACKUPTIME" > "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time"
chown 33:0 "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time"
chmod 770 "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time"
fi
umount /tmp/borg
# Inform user
@@ -235,6 +342,9 @@ if [ "$BORG_MODE" = restore ]; then
# Add file to Nextcloud container so that it performs a fingerprint update the next time
touch "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/fingerprint.update"
chmod 777 "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/fingerprint.update"
# Delete redis cache
rm -f "/mnt/redis/dump.rdb"
fi
# Do the Backup check
@@ -243,7 +353,7 @@ if [ "$BORG_MODE" = check ]; then
echo "Checking the backup integrity..."
# Perform the check
if ! borg check --verify-data --progress "$BORG_BACKUP_DIRECTORY"; then
if ! borg check -v --verify-data "$BORG_BACKUP_DIRECTORY"; then
echo "Some errors were found while checking the backup integrity!"
exit 1
fi
@@ -254,6 +364,23 @@ if [ "$BORG_MODE" = check ]; then
exit 0
fi
# Do the Backup check-repair
if [ "$BORG_MODE" = "check-repair" ]; then
get_start_time
echo "Checking the backup integrity and repairing it..."
# Perform the check-repair
if ! echo YES | borg check -v --repair "$BORG_BACKUP_DIRECTORY"; then
echo "Some errors were found while checking and repairing the backup integrity!"
exit 1
fi
# Inform user
get_expiration_time
echo "Check finished successfully on $END_DATE_READABLE ($DURATION_READABLE)"
exit 0
fi
# Do the backup test
if [ "$BORG_MODE" = test ]; then
if ! [ -d "$BORG_BACKUP_DIRECTORY" ]; then

View File

@@ -20,7 +20,7 @@ export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
# Validate BORG_MODE
if [ "$BORG_MODE" != backup ] && [ "$BORG_MODE" != restore ] && [ "$BORG_MODE" != check ] && [ "$BORG_MODE" != test ]; then
if [ "$BORG_MODE" != backup ] && [ "$BORG_MODE" != restore ] && [ "$BORG_MODE" != check ] && [ "$BORG_MODE" != "check-repair" ] && [ "$BORG_MODE" != test ]; then
echo "No correct BORG_MODE mode applied. Valid are 'backup', 'check', 'restore' and 'test'."
exit 1
fi

View File

@@ -1,5 +1,5 @@
# Probably from this file: https://github.com/Cisco-Talos/clamav/blob/main/Dockerfile
FROM clamav/clamav:0.104.2-3
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/0.105/alpine/Dockerfile
FROM clamav/clamav:0.105.1-7
RUN apk add --update --no-cache tzdata
COPY clamav.conf /tmp/

View File

@@ -1,5 +1,5 @@
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
FROM collabora/code:21.11.5.3.1
FROM collabora/code:22.05.9.2.1
USER root
@@ -9,7 +9,10 @@ RUN set -ex; \
export DEBIAN_FRONTEND=noninteractive; \
apt-get install -y --no-install-recommends \
tzdata \
netcat \
; \
rm -rf /var/lib/apt/lists/*
USER 104
HEALTHCHECK CMD nc -z localhost 9980 || exit 1

View File

@@ -1,11 +1,12 @@
FROM alpine:3.15.4
RUN apk add --update --no-cache lighttpd bash
FROM alpine:3.16.3
RUN apk add --update --no-cache lighttpd bash netcat-openbsd
RUN adduser -S www-data -G www-data
RUN rm -rf /etc/lighttpd/lighttpd.conf
COPY lighttpd.conf /etc/lighttpd/lighttpd.conf
RUN chmod +r -R /etc/lighttpd && \
chown www-data:www-data -R /var/www
chown www-data:www-data -R /var/www && \
chown www-data:www-data /etc/lighttpd/lighttpd.conf
COPY start.sh /
RUN chmod +x /start.sh
@@ -13,3 +14,5 @@ RUN chmod +x /start.sh
USER www-data
RUN mkdir -p /var/www/domaincheck/
ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD nc -z localhost $APACHE_PORT || exit 1

View File

@@ -13,4 +13,8 @@ mimetype.assign = (
)
static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc" )
index-file.names = ( "index.html" )
index-file.names = ( "index.html" )
$SERVER["socket"] == "ipv6-placeholder" {
server.document-root = "/var/www/domaincheck/"
}

View File

@@ -11,6 +11,9 @@ if [ -z "$APACHE_PORT" ]; then
export APACHE_PORT="443"
fi
CONF_FILE="$(sed "s|ipv6-placeholder|\[::\]:$APACHE_PORT|" /etc/lighttpd/lighttpd.conf)"
echo "$CONF_FILE" > /etc/lighttpd/lighttpd.conf
# Check config file
lighttpd -tt -f /etc/lighttpd/lighttpd.conf

View File

@@ -0,0 +1,14 @@
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
FROM elasticsearch:7.17.8
RUN elasticsearch-plugin install --batch ingest-attachment
RUN set -ex; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
tzdata \
; \
rm -rf /var/lib/apt/lists/*
HEALTHCHECK CMD nc -z localhost 9200 || exit 1

View File

@@ -0,0 +1,16 @@
# From https://github.com/h2non/imaginary/blob/master/Dockerfile
FROM nextcloud/imaginary:20230101
USER root
RUN set -ex; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
netcat \
; \
rm -rf /var/lib/apt/lists/*
USER nobody
ENTRYPOINT ["/usr/local/bin/imaginary", "-return-size"]
HEALTHCHECK CMD nc -z localhost 9000 || exit 1

View File

@@ -1,11 +1,11 @@
# Docker CLI is a requirement
FROM docker:20.10.17-dind-alpine3.16 as dind
FROM docker:20.10.21-dind-alpine3.16 as dind
# Caddy is a requirement
FROM caddy:2.5.1-alpine as caddy
FROM caddy:2.6.2-alpine as caddy
# From https://github.com/docker-library/php/blob/master/8.0/bullseye/apache/Dockerfile
FROM php:8.0.20-apache-bullseye
FROM php:8.1.13-apache-bullseye
EXPOSE 80
EXPOSE 8080
@@ -37,7 +37,7 @@ COPY --from=dind /usr/local/bin/docker /usr/local/bin/
RUN chmod +x /usr/local/bin/docker
RUN set -ex; \
pecl install APCu-5.1.21; \
pecl install APCu-5.1.22; \
docker-php-ext-enable apcu
RUN set -e && \
@@ -52,7 +52,7 @@ RUN set -e && \
cd ..; \
rm -f /usr/local/bin/composer; \
chmod 770 -R ./; \
chown www-data:www-data -R ./; \
chown www-data:www-data -R /var/www; \
rm -r ./php/data; \
rm -r ./php/session
@@ -76,8 +76,13 @@ RUN rm /etc/apache2/ports.conf; \
sed -s -i -e "s/Include ports.conf//" /etc/apache2/apache2.conf; \
sed -i "/^Listen /d" /etc/apache2/apache2.conf
RUN a2dissite 000-default && \
RUN set -ex; \
a2dissite 000-default && \
a2dissite default-ssl && \
rm -f /etc/apache2/sites-enabled/000-default.conf && \
rm -f /etc/apache2/sites-enabled/default-ssl.conf && \
rm /etc/apache2/sites-available/000-default.conf && \
rm /etc/apache2/sites-available/default-ssl.conf && \
a2ensite mastercontainer.conf
RUN mkdir /var/log/supervisord; \
@@ -88,14 +93,20 @@ COPY start.sh /usr/bin/
COPY backup-time-file-watcher.sh /
COPY session-deduplicator.sh /
COPY cron.sh /
COPY daily-backup.sh /
COPY supervisord.conf /
COPY healthcheck.sh /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /cron.sh; \
chmod +x /session-deduplicator.sh; \
chmod +x /backup-time-file-watcher.sh; \
chmod a+r /Caddyfile
chmod +x /daily-backup.sh; \
chmod a+r /Caddyfile; \
chmod +x /healthcheck.sh
USER root
ENTRYPOINT ["start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD /healthcheck.sh

View File

@@ -10,12 +10,12 @@ file_present() {
if [ "$FILE_PRESENT" = 0 ]; then
restart_process
else
if [ -n "$BACKUP_TIME" ] && [ "$(cat "/mnt/docker-aio-config/data/daily_backup_time")" != "$BACKUP_TIME" ]; then
if [ -n "$BACKUP_TIME" ] && [ "$(head -1 "/mnt/docker-aio-config/data/daily_backup_time")" != "$BACKUP_TIME" ]; then
restart_process
fi
fi
FILE_PRESENT=1
BACKUP_TIME="$(cat "/mnt/docker-aio-config/data/daily_backup_time")"
BACKUP_TIME="$(head -1 "/mnt/docker-aio-config/data/daily_backup_time")"
else
if [ "$FILE_PRESENT" = 1 ]; then
restart_process

View File

@@ -3,18 +3,25 @@
while true; do
if [ -f "/mnt/docker-aio-config/data/daily_backup_time" ]; then
set -x
BACKUP_TIME="$(cat "/mnt/docker-aio-config/data/daily_backup_time")"
DAILY_BACKUP=1
BACKUP_TIME="$(head -1 "/mnt/docker-aio-config/data/daily_backup_time")"
export BACKUP_TIME
export DAILY_BACKUP=1
if [ "$(sed -n '2p' "/mnt/docker-aio-config/data/daily_backup_time")" != 'automaticUpdatesAreNotEnabled' ]; then
export AUTOMATIC_UPDATES=1
else
export AUTOMATIC_UPDATES=0
export START_CONTAINERS=1
fi
set +x
if [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
export LOCK_FILE_PRESENT=1
else
export LOCK_FILE_PRESENT=0
fi
else
BACKUP_TIME="04:00"
DAILY_BACKUP=0
fi
if [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
LOCK_FILE_PRESENT=1
else
LOCK_FILE_PRESENT=0
export BACKUP_TIME="04:00"
export DAILY_BACKUP=0
export LOCK_FILE_PRESENT=0
fi
# Allow to continue directly if e.g. the mastercontainer was updated. Otherwise wait for the next execution
@@ -25,61 +32,7 @@ while true; do
fi
if [ "$DAILY_BACKUP" = 1 ]; then
echo "Daily backup has started"
# Delete all active sessions and create a lock file
# But don't kick out the user if the mastercontainer was just updated since we block the interface either way with the lock file
if [ "$LOCK_FILE_PRESENT" = 0 ]; then
rm -f "/mnt/docker-aio-config/session/"*
fi
sudo -u www-data touch "/mnt/docker-aio-config/data/daily_backup_running"
# Check if apache is running/stopped, watchtower is stopped and backupcontainer is stopped
APACHE_PORT="$(docker inspect nextcloud-aio-apache --format "{{.HostConfig.PortBindings}}" | grep -oP '[0-9]+' | head -1)"
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-apache$" && ! nc -z nextcloud-aio-apache "$APACHE_PORT"; do
echo "Waiting for apache to become available"
sleep 30
done
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; do
echo "Waiting for watchtower to stop"
sleep 30
done
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-borgbackup$"; do
echo "Waiting for borgbackup to stop"
sleep 30
done
# Update the mastercontainer
sudo -u www-data php /var/www/docker-aio/php/src/Cron/UpdateMastercontainer.php
# Wait for watchtower to stop
if ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; then
echo "Something seems to be wrong: Watchtower should be started at this step."
else
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; do
echo "Waiting for watchtower to stop"
sleep 30
done
fi
# Execute the backup itself and some related tasks
sudo -u www-data php /var/www/docker-aio/php/src/Cron/DailyBackup.php
# Delete the lock file
rm -f "/mnt/docker-aio-config/data/daily_backup_running"
# Wait for the nextcloud container to start and send if the backup was successful
if ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-nextcloud$"; then
echo "Something seems to be wrong: Nextcloud should be started at this step."
else
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-nextcloud$" && ! nc -z nextcloud-aio-nextcloud 9000; do
echo "Waiting for the Nextcloud container to start"
sleep 30
done
fi
sudo -u www-data php /var/www/docker-aio/php/src/Cron/BackupNotification.php
echo "Daily backup has finished"
bash /daily-backup.sh
fi
# Make sure to delete the lock file always
@@ -88,6 +41,9 @@ while true; do
# Check for updates and send notification if yes
sudo -u www-data php /var/www/docker-aio/php/src/Cron/UpdateNotification.php
# Check if AIO is outdated
sudo -u www-data php /var/www/docker-aio/php/src/Cron/OutdatedNotification.php
# Remove sessions older than 24h
find "/mnt/docker-aio-config/session/" -mindepth 1 -mmin +1440 -delete

View File

@@ -0,0 +1,103 @@
#!/bin/bash
echo "Daily backup script has started"
# Daily backup and backup check cannot be run at the same time
if [ "$DAILY_BACKUP" = 1 ] && [ "$CHECK_BACKUP" = 1 ]; then
echo "Daily backup and backup check cannot be run at the same time. Exiting..."
exit 1
fi
# Delete all active sessions and create a lock file
# But don't kick out the user if the mastercontainer was just updated since we block the interface either way with the lock file
if [ "$LOCK_FILE_PRESENT" = 0 ] || ! [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
rm -f "/mnt/docker-aio-config/session/"*
fi
sudo -u www-data touch "/mnt/docker-aio-config/data/daily_backup_running"
# Check if apache is running/stopped, watchtower is stopped and backupcontainer is stopped
APACHE_PORT="$(docker inspect nextcloud-aio-apache --format "{{.HostConfig.PortBindings}}" | grep -oP '[0-9]+' | head -1)"
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-apache$" && ! nc -z nextcloud-aio-apache "$APACHE_PORT"; do
echo "Waiting for apache to become available"
sleep 30
done
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; do
echo "Waiting for watchtower to stop"
sleep 30
done
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-borgbackup$"; do
echo "Waiting for borgbackup to stop"
sleep 30
done
# Update the mastercontainer
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
echo "Starting mastercontainer update..."
echo "(The script might get exited due to that. In order to update all the other containers correctly, you need to run this script with the same settings a second time.)"
sudo -u www-data php /var/www/docker-aio/php/src/Cron/UpdateMastercontainer.php
fi
# Wait for watchtower to stop
if [ "$AUTOMATIC_UPDATES" = 1 ] && ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; then
echo "Something seems to be wrong: Watchtower should be started at this step."
else
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; do
echo "Waiting for watchtower to stop"
sleep 30
done
fi
# Stop containers if required
# shellcheck disable=SC2235
if [ "$CHECK_BACKUP" != 1 ] && ([ "$DAILY_BACKUP" != 1 ] || [ "$STOP_CONTAINERS" = 1 ]); then
echo "Stopping containers..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/StopContainers.php
fi
# Execute the backup itself and some related tasks (also stops the containers)
if [ "$DAILY_BACKUP" = 1 ]; then
echo "Creating daily backup..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CreateBackup.php
fi
# Execute backup check
if [ "$CHECK_BACKUP" = 1 ]; then
echo "Starting backup check..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CheckBackup.php
fi
# Start and/or update containers
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
echo "Starting and updating containers..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/StartAndUpdateContainers.php
else
if [ "$START_CONTAINERS" = 1 ]; then
echo "Starting containers without updating them..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/StartContainers.php
fi
fi
# Delete the lock file
rm -f "/mnt/docker-aio-config/data/daily_backup_running"
# Send backup notification
# shellcheck disable=SC2235
if [ "$DAILY_BACKUP" = 1 ] && ([ "$AUTOMATIC_UPDATES" = 1 ] || [ "$START_CONTAINERS" = 1 ]); then
# Wait for the nextcloud container to start and send if the backup was successful
if ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-nextcloud$"; then
echo "Something seems to be wrong: Nextcloud should be started at this step."
else
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-nextcloud$" && ! nc -z nextcloud-aio-nextcloud 9000; do
echo "Waiting for the Nextcloud container to start"
sleep 30
if [ "$(docker inspect nextcloud-aio-nextcloud --format "{{.State.Restarting}}")" = "true" ]; then
echo "Nextcloud container restarting. Skipping this check!"
break
fi
done
fi
echo "Sending backup notification..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/BackupNotification.php
fi
echo "Daily backup script has finished"

View File

@@ -0,0 +1,5 @@
#!/bin/bash
if [ -f "/mnt/docker-aio-config/data/configuration.json" ]; then
nc -z localhost 8080 || exit 1
fi

View File

@@ -1,9 +1,6 @@
Listen 8000
Listen 8080
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
# Deny access to .ht files
<Files ".ht*">
Require all denied
@@ -11,6 +8,8 @@ ErrorLog ${APACHE_LOG_DIR}/error.log
# Http host
<VirtualHost *:8000>
ServerName localhost
# PHP match
<FilesMatch "\.php$">
SetHandler application/x-httpd-php

View File

@@ -1,23 +1,22 @@
#!/bin/bash
deduplicate_sessions() {
echo "Deleting duplicate sessions"
find "/mnt/docker-aio-config/session/" -mindepth 1 -exec grep -qv "$NEW_SESSION_TIME" {} \; -delete
}
compare_times() {
if [ -f "/mnt/docker-aio-config/data/session_date_file" ]; then
unset NEW_SESSION_TIME
NEW_SESSION_TIME="$(cat "/mnt/docker-aio-config/data/session_date_file")"
if [ -n "$NEW_SESSION_TIME" ] && [ -n "$OLD_SESSION_TIME" ] && [ "$NEW_SESSION_TIME" != "$OLD_SESSION_TIME" ]; then
deduplicate_sessions
fi
OLD_SESSION_TIME="$NEW_SESSION_TIME"
fi
}
while true; do
while [ "$(find "/mnt/docker-aio-config/session/" -mindepth 1 -exec grep "aio_authenticated|[a-z]:1" {} \; | wc -l)" -gt 1 ]; do
unset SESSION_FILES
SESSION_FILES="$(find "/mnt/docker-aio-config/session/" -mindepth 1)"
unset SESSION_FILES_ARRAY
mapfile -t SESSION_FILES_ARRAY <<< "$SESSION_FILES"
for SESSION_FILE in "${SESSION_FILES_ARRAY[@]}"; do
if ! grep -q "aio_authenticated|[a-z]:1" "$SESSION_FILE"; then
rm "$SESSION_FILE"
fi
done
echo "Deleting duplicate sessions"
unset OLDEST_FILE
set -x
# shellcheck disable=SC2012
OLDEST_FILE="$(ls -t "/mnt/docker-aio-config/session/" | tail -1)"
rm "/mnt/docker-aio-config/session/$OLDEST_FILE"
set +x
done
sleep 5
compare_times
sleep 2
done

95
Containers/mastercontainer/start.sh Executable file → Normal file
View File

@@ -65,6 +65,17 @@ else
sleep 10
fi
# Check Storage drivers
STORAGE_DRIVER="$(docker info | grep "Storage Driver")"
# Check if vfs is used: https://github.com/nextcloud/all-in-one/discussions/1467
if echo "$STORAGE_DRIVER" | grep -q vfs; then
echo "$STORAGE_DRIVER"
echo "Warning: It seems like the storage driver vfs is used. This will lead to problems with disk space and performance and is disrecommended!"
elif echo "$STORAGE_DRIVER" | grep -q fuse-overlayfs; then
echo "$STORAGE_DRIVER"
echo "Warning: It seems like the storage driver fuse-overlayfs is used. Please check if you can switch to overlay2 instead."
fi
# Check if startup command was executed correctly
if ! sudo -u www-data docker ps | grep -q "nextcloud-aio-mastercontainer"; then
echo "It seems like you did not give the mastercontainer the correct name?
@@ -104,6 +115,30 @@ if [ -n "$NEXTCLOUD_DATADIR" ] && [ -n "$NEXTCLOUD_MOUNT" ]; then
exit 1
fi
fi
if [ -n "$NEXTCLOUD_UPLOAD_LIMIT" ]; then
if ! echo "$NEXTCLOUD_UPLOAD_LIMIT" | grep -q '^[0-9]\+G$'; then
echo "You've set NEXTCLOUD_UPLOAD_LIMIT but not to an allowed value.
The string must start with a number and end with 'G'.
It is set to '$NEXTCLOUD_UPLOAD_LIMIT'."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_MAX_TIME" ]; then
if ! echo "$NEXTCLOUD_MAX_TIME" | grep -q '^[0-9]\+$'; then
echo "You've set NEXTCLOUD_MAX_TIME but not to an allowed value.
The string must be a number. E.g. '3600'.
It is set to '$NEXTCLOUD_MAX_TIME'."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_MEMORY_LIMIT" ]; then
if ! echo "$NEXTCLOUD_MEMORY_LIMIT" | grep -q '^[0-9]\+M$'; then
echo "You've set NEXTCLOUD_MEMORY_LIMIT but not to an allowed value.
The string must start with a number and end with 'M'.
It is set to '$NEXTCLOUD_MEMORY_LIMIT'."
exit 1
fi
fi
if [ -n "$APACHE_PORT" ]; then
if ! check_if_number "$APACHE_PORT"; then
echo "You provided an Apache port but did not only use numbers.
@@ -114,6 +149,29 @@ It is set to '$APACHE_PORT'."
exit 1
fi
fi
if [ -n "$APACHE_IP_BINDING" ]; then
if ! echo "$APACHE_IP_BINDING" | grep -q '^[0-9.]\+$'; then
echo "You provided an ip-address for the apache container's ip-binding but it was not a valid ip-address.
It is set to '$APACHE_IP_BINDING'."
exit 1
fi
fi
if [ -n "$TALK_PORT" ]; then
if ! check_if_number "$TALK_PORT"; then
echo "You provided an Talk port but did not only use numbers.
It is set to '$TALK_PORT'."
exit 1
elif ! [ "$TALK_PORT" -le 65535 ] || ! [ "$TALK_PORT" -ge 1 ]; then
echo "The provided Talk port is invalid. It must be between 1 and 65535"
exit 1
fi
fi
if [ -n "$APACHE_PORT" ] && [ -n "$TALK_PORT" ]; then
if [ "$APACHE_PORT" = "$TALK_PORT" ]; then
echo "APACHE_PORT and TALK_PORT are not allowed to be equal."
exit 1
fi
fi
if [ -n "$DOCKER_SOCKET_PATH" ]; then
if ! echo "$DOCKER_SOCKET_PATH" | grep -q "^/" || echo "$DOCKER_SOCKET_PATH" | grep -q "/$"; then
echo "You've set DOCKER_SOCKET_PATH but not to an allowed value.
@@ -122,6 +180,38 @@ It is set to '$DOCKER_SOCKET_PATH'."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_TRUSTED_CACERTS_DIR" ]; then
if ! echo "$NEXTCLOUD_TRUSTED_CACERTS_DIR" | grep -q "^/" || echo "$NEXTCLOUD_TRUSTED_CACERTS_DIR" | grep -q "/$"; then
echo "You've set NEXTCLOUD_TRUSTED_CACERTS_DIR but not to an allowed value.
It should be an absolute path to a directory that starts with '/' but not end with '/'.
It is set to '$NEXTCLOUD_TRUSTED_CACERTS_DIR '."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_STARTUP_APPS" ]; then
if ! echo "$NEXTCLOUD_STARTUP_APPS" | grep -q "^[a-z _-]\+$"; then
echo "You've set NEXTCLOUD_STARTUP_APPS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, spaces, hyphens and '_'.
It is set to '$NEXTCLOUD_STARTUP_APPS'."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_ADDITIONAL_APKS" ]; then
if ! echo "$NEXTCLOUD_ADDITIONAL_APKS" | grep -q "^[a-z0-9 ._-]\+$"; then
echo "You've set NEXTCLOUD_ADDITIONAL_APKS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens, dots and '_'.
It is set to '$NEXTCLOUD_ADDITIONAL_APKS'."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS" ]; then
if ! echo "$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS" | grep -q "^[a-z0-9 ._-]\+$"; then
echo "You've set NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens, dots and '_'.
It is set to '$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS'."
exit 1
fi
fi
# Check DNS resolution
# Prevents issues like https://github.com/nextcloud/all-in-one/discussions/565
@@ -181,7 +271,10 @@ print_green "Initial startup of Nextcloud All In One complete!
You should be able to open the Nextcloud AIO Interface now on port 8080 of this server!
E.g. https://internal.ip.of.this.server:8080
If your server has port 80 and 8443 open and you point a domain to your server, you can get a valid certificate automatially by opening the Nextcloud AIO Interface via:
If your server has port 80 and 8443 open and you point a domain to your server, you can get a valid certificate automatically by opening the Nextcloud AIO Interface via:
https://your-domain-that-points-to-this-server.tld:8443"
# Set the timezone to UTC
export TZ=UTC
exec "$@"

View File

@@ -1,26 +1,28 @@
[supervisord]
nodaemon=true
nodaemon=true
logfile=/var/log/supervisord/supervisord.log
pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
user=root
[program:apache]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
# stdout_logfile=/dev/stdout
# stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=apache2-foreground
user=root
[program:caddy]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=sudo -u www-data /usr/bin/caddy run -config /Caddyfile
command=/usr/bin/caddy run --config /Caddyfile
user=www-data
[program:cron]
stdout_logfile=/dev/stdout
@@ -35,6 +37,7 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/backup-time-file-watcher.sh
user=root
[program:session-deduplicator]
stdout_logfile=/dev/stdout
@@ -42,3 +45,4 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/session-deduplicator.sh
user=root

View File

@@ -1,5 +1,5 @@
# From https://github.com/nextcloud/docker/blob/master/23/fpm-alpine/Dockerfile
FROM php:8.0.20-fpm-alpine3.15
FROM php:8.0.26-fpm-alpine3.16
# Custom: change id of www-data user as it needs to be the same like on old installations
RUN set -ex; \
@@ -21,6 +21,7 @@ RUN set -ex; \
# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html
ENV PHP_MEMORY_LIMIT 512M
ENV PHP_UPLOAD_LIMIT 10G
ENV PHP_MAX_TIME 3600
RUN set -ex; \
\
apk add --no-cache --virtual .build-deps \
@@ -38,9 +39,18 @@ RUN set -ex; \
openldap-dev \
pcre-dev \
postgresql-dev \
imagemagick-dev \
libwebp-dev \
gmp-dev \
lcms2-dev \
fontconfig-dev \
freetype-dev \
ghostscript-dev \
tiff-dev \
zlib-dev \
imagemagick-dev \
libheif-dev \
librsvg-dev \
libxext-dev \
; \
\
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp; \
@@ -53,14 +63,13 @@ RUN set -ex; \
ldap \
opcache \
pcntl \
pdo_mysql \
pdo_pgsql \
zip \
gmp \
; \
\
# pecl will claim success even if one install fails, so we need to perform each install separately
pecl install APCu-5.1.21; \
pecl install APCu-5.1.22; \
pecl install memcached-3.2.0; \
pecl install redis-5.3.7; \
pecl install imagick-3.7.0; \
@@ -69,7 +78,6 @@ RUN set -ex; \
apcu \
memcached \
redis \
imagick \
; \
rm -r /tmp/pear; \
\
@@ -96,6 +104,8 @@ RUN { \
echo 'memory_limit=${PHP_MEMORY_LIMIT}'; \
echo 'upload_max_filesize=${PHP_UPLOAD_LIMIT}'; \
echo 'post_max_size=${PHP_UPLOAD_LIMIT}'; \
echo 'max_execution_time=${PHP_MAX_TIME}'; \
echo 'max_input_time=${PHP_MAX_TIME}'; \
} > /usr/local/etc/php/conf.d/nextcloud.ini; \
\
mkdir /var/www/data; \
@@ -104,8 +114,7 @@ RUN { \
VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 23.0.6
ENV NEXTCLOUD_VERSION 25.0.2
RUN set -ex; \
apk add --no-cache --virtual .fetch-deps \
@@ -124,7 +133,6 @@ RUN set -ex; \
tar -xjf nextcloud.tar.bz2 -C /usr/src/; \
gpgconf --kill all; \
rm nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /usr/src/nextcloud/updater; \
mkdir -p /usr/src/nextcloud/data; \
mkdir -p /usr/src/nextcloud/custom_apps; \
chmod +x /usr/src/nextcloud/occ; \
@@ -142,7 +150,6 @@ RUN set -ex; \
\
apk add --no-cache \
ffmpeg \
imagemagick \
procps \
samba-client \
supervisor \
@@ -199,15 +206,25 @@ RUN set -ex; \
git \
postgresql-client \
tzdata \
mawk \
sudo \
grep \
coreutils \
gcompat \
libjpeg \
librsvg \
libheif \
; \
rm -rf /var/lib/apt/lists/*
RUN set -ex; \
grep -q '^pm = dynamic' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.max_children =.*/pm.max_children = 100/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.start_servers =.*/pm.start_servers = 25/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.min_spare_servers =.*/pm.min_spare_servers = 25/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.max_spare_servers =.*/pm.max_spare_servers = 75/' /usr/local/etc/php-fpm.d/www.conf
sed -i 's/^pm = dynamic/pm = ondemand/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.max_children =.*/pm.max_children = 80/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.start_servers =.*/pm.start_servers = 2/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.min_spare_servers =.*/pm.min_spare_servers = 1/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.max_spare_servers =.*/pm.max_spare_servers = 3/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf
RUN set -ex; \
rm -rf /tmp/nextcloud-aio && \
@@ -220,20 +237,21 @@ RUN set -ex; \
RUN set -ex; \
chown www-data:root -R /usr/src && \
chown www-data:root -R /usr/local/etc/php/conf.d && \
chown www-data:root -R /var/log/supervisord/ && \
chown www-data:root -R /var/run/supervisord/ && \
chown www-data:root -R /usr/local/etc/php-fpm.d && \
rm -r /usr/src/nextcloud/apps/updatenotification
COPY start.sh /
COPY notify.sh /
COPY notify-all.sh /
RUN set -ex; \
chmod +x /start.sh && \
chmod +r /supervisord.conf && \
chmod +x /entrypoint.sh && \
chmod +r /upgrade.exclude && \
chmod +x /cron.sh && \
chmod +x /notify.sh && \
chmod +x /activate-collabora.sh
chmod +x /notify-all.sh && \
chmod +x /activate-collabora.sh && \
chmod +x /healthcheck.sh
RUN set -ex; \
mkdir /mnt/ncdata; \
@@ -244,5 +262,7 @@ VOLUME /mnt/ncdata
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER www-data
USER root
ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD sudo -E -u www-data bash /healthcheck.sh

View File

@@ -1,20 +1,13 @@
#!/bin/bash
COLLABORA_ACTIVATED=0
while true; do
if [ "$COLLABORA_ENABLED" != yes ]; then
# Basically sleep for forever if collabora is not enabled
sleep 365d
fi
if [ "$COLLABORA_ACTIVATED" != 0 ]; then
# Basically sleep for forever if collabora was activated
sleep 365d
fi
while ! nc -z "$NC_DOMAIN" 443; do
sleep 5
done
echo "Activating collabora config"
php /var/www/html/occ richdocuments:activate-config
COLLABORA_ACTIVATED=1
if [ "$COLLABORA_ENABLED" != yes ]; then
# Basically sleep for forever if collabora is not enabled
sleep inf
fi
while ! nc -z "$NC_DOMAIN" 443; do
sleep 5
done
sleep 10
echo "Activating collabora config..."
php /var/www/html/occ richdocuments:activate-config
sleep inf

View File

@@ -0,0 +1,27 @@
<?php
if (getenv('OBJECTSTORE_S3_BUCKET')) {
$use_ssl = getenv('OBJECTSTORE_S3_SSL');
$use_path = getenv('OBJECTSTORE_S3_USEPATH_STYLE');
$use_legacyauth = getenv('OBJECTSTORE_S3_LEGACYAUTH');
$autocreate = getenv('OBJECTSTORE_S3_AUTOCREATE');
$CONFIG = array(
'objectstore' => array(
'class' => '\OC\Files\ObjectStore\S3',
'arguments' => array(
'bucket' => getenv('OBJECTSTORE_S3_BUCKET'),
'key' => getenv('OBJECTSTORE_S3_KEY') ?: '',
'secret' => getenv('OBJECTSTORE_S3_SECRET') ?: '',
'region' => getenv('OBJECTSTORE_S3_REGION') ?: '',
'hostname' => getenv('OBJECTSTORE_S3_HOST') ?: '',
'port' => getenv('OBJECTSTORE_S3_PORT') ?: '',
'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:",
'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true,
'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true,
// required for some non Amazon S3 implementations
'use_path_style' => $use_path == true && strtolower($use_path) !== 'false',
// required for older protocol versions
'legacy_auth' => $use_legacyauth == true && strtolower($use_legacyauth) !== 'false'
)
)
);
}

View File

@@ -0,0 +1,31 @@
<?php
if (getenv('OBJECTSTORE_SWIFT_URL')) {
$autocreate = getenv('OBJECTSTORE_SWIFT_AUTOCREATE');
$CONFIG = array(
'objectstore' => [
'class' => 'OC\\Files\\ObjectStore\\Swift',
'arguments' => [
'autocreate' => $autocreate == true && strtolower($autocreate) !== 'false',
'user' => [
'name' => getenv('OBJECTSTORE_SWIFT_USER_NAME'),
'password' => getenv('OBJECTSTORE_SWIFT_USER_PASSWORD'),
'domain' => [
'name' => (getenv('OBJECTSTORE_SWIFT_USER_DOMAIN')) ?: 'Default',
],
],
'scope' => [
'project' => [
'name' => getenv('OBJECTSTORE_SWIFT_PROJECT_NAME'),
'domain' => [
'name' => (getenv('OBJECTSTORE_SWIFT_PROJECT_DOMAIN')) ?: 'Default',
],
],
],
'serviceName' => (getenv('OBJECTSTORE_SWIFT_SERVICE_NAME')) ?: 'swift',
'region' => getenv('OBJECTSTORE_SWIFT_REGION'),
'url' => getenv('OBJECTSTORE_SWIFT_URL'),
'bucket' => getenv('OBJECTSTORE_SWIFT_CONTAINER_NAME'),
]
]
);
}

View File

@@ -10,7 +10,7 @@ directory_empty() {
[ -z "$(ls -A "$1/")" ]
}
echo "Configuring Redis as session handler"
echo "Configuring Redis as session handler..."
cat << REDIS_CONF > /usr/local/etc/php/conf.d/redis-session.ini
session.save_handler = redis
session.save_path = "tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}"
@@ -21,14 +21,28 @@ redis.session.lock_retries = -1
redis.session.lock_wait_time = 10000
REDIS_CONF
echo "Setting php max children..."
MEMORY=$(mawk '/MemTotal/ {printf "%d", $2/1024}' /proc/meminfo)
PHP_MAX_CHILDREN=$((MEMORY/50))
if [ -n "$PHP_MAX_CHILDREN" ]; then
sed -i "s/^pm.max_children =.*/pm.max_children = $PHP_MAX_CHILDREN/" /usr/local/etc/php-fpm.d/www.conf
fi
# Check permissions in ncdata
touch "/mnt/ncdata/this-is-a-test-file"
if ! [ -f "/mnt/ncdata/this-is-a-test-file" ]; then
echo "The www-data user doesn't seem to have access rights in /mnt/ncdata.
Did you maybe change the datadir and did forget to apply the correct permissions?"
touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" &>/dev/null
if ! [ -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" ]; then
echo "The www-data user doesn't seem to have access rights in the datadir.
Most likely are the files located on a drive that does not follow linux permissions.
Please adjust the permissions like mentioned below.
The found permissions are:
$(stat -c "%u:%g %a" "$NEXTCLOUD_DATA_DIR")
(userID:groupID permissions)
but they should be:
33:0 750
(userID:groupID permissions)"
exit 1
fi
rm "/mnt/ncdata/this-is-a-test-file"
rm "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
if [ -f /var/www/html/version.php ]; then
# shellcheck disable=SC2016
@@ -57,12 +71,35 @@ if [ -f "/var/www/html/lib/versioncheck.php" ] && ! php /var/www/html/lib/versio
exit 1
fi
# Do not start the container if the last update failed
if [ -f "$NEXTCLOUD_DATA_DIR/update.failed" ]; then
echo "The last Nextcloud update failed."
echo "Please restore from backup and try again!"
echo "If you do not have a backup in place, you can simply delete the update.failed file in the datadir which will allow the container to start again."
exit 1
fi
# Do not start the container if the install failed
if [ -f "$NEXTCLOUD_DATA_DIR/install.failed" ]; then
echo "The initial Nextcloud installation failed."
echo "Please reset AIO properly and try again. For further clues what went wrong, check the logs above."
echo "See https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance"
exit 1
fi
# Skip any update if Nextcloud was just restored
if ! [ -f "/mnt/ncdata/skip.update" ]; then
if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
if version_greater "$image_version" "$installed_version"; then
# Check if it skips a major version
INSTALLED_MAJOR="${installed_version%%.*}"
IMAGE_MAJOR="${image_version%%.*}"
if [ "$installed_version" != "0.0.0.0" ]; then
# Write output to logfile.
exec > >(tee -i "/var/www/html/data/update.log")
exec 2>&1
fi
if [ "$installed_version" != "0.0.0.0" ] && [ "$((IMAGE_MAJOR - INSTALLED_MAJOR))" -gt 1 ]; then
set -ex
NEXT_MAJOR="$((INSTALLED_MAJOR + 1))"
@@ -77,7 +114,6 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
tar -xjf nextcloud.tar.bz2 -C /usr/src/tmp/
gpgconf --kill all
rm nextcloud.tar.bz2.asc nextcloud.tar.bz2
rm -rf "$GNUPGHOME" /usr/src/tmp/nextcloud/updater
mkdir -p /usr/src/tmp/nextcloud/data
mkdir -p /usr/src/tmp/nextcloud/custom_apps
chmod +x /usr/src/tmp/nextcloud/occ
@@ -111,7 +147,19 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
php /var/www/html/occ maintenance:mode --off
echo "Getting and backing up the status of apps for later, this might take a while..."
php /var/www/html/occ app:list | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
NC_APPS="$(find /var/www/html/custom_apps/ -type d -maxdepth 1 -mindepth 1 | sed 's|/var/www/html/custom_apps/||g')"
if [ -z "$NC_APPS" ]; then
echo "No apps detected, aborting export of app status..."
APPSTORAGE="no-export-done"
else
mapfile -t NC_APPS_ARRAY <<< "$NC_APPS"
declare -Ag APPSTORAGE
echo "Disabling apps before the update in order to make the update procedure more safe. This can take a while..."
for app in "${NC_APPS_ARRAY[@]}"; do
APPSTORAGE[$app]=$(php /var/www/html/occ config:app:get "$app" enabled)
php /var/www/html/occ app:disable "$app"
done
fi
if [ "$((IMAGE_MAJOR - INSTALLED_MAJOR))" -eq 1 ]; then
php /var/www/html/occ config:system:delete app_install_overwrite
@@ -120,8 +168,11 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
php /var/www/html/occ app:update --all
# Fix removing the updatenotification for old instances
UPDATENOTIFICATION_STATUS="$(php /var/www/html/occ config:app:get updatenotification enabled)"
if [ -d "/var/www/html/apps/updatenotification" ]; then
php /var/www/html/occ app:disable updatenotification
elif [ "$UPDATENOTIFICATION_STATUS" != "no" ] && [ -n "$UPDATENOTIFICATION_STATUS" ]; then
php /var/www/html/occ config:app:set updatenotification enabled --value="no"
fi
fi
@@ -133,6 +184,7 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
rsync -rlD --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
fi
done
rsync -rlD --delete --include '/config/' --exclude '/*' --exclude '/config/CAN_INSTALL' --exclude '/config/config.sample.php' --exclude '/config/config.php' /usr/src/nextcloud/ /var/www/html/
rsync -rlD --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/
echo "Initializing finished"
@@ -159,12 +211,16 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
done
if [ "$try" -gt "$max_retries" ]; then
echo "installing of nextcloud failed!"
touch "$NEXTCLOUD_DATA_DIR/install.failed"
exit 1
fi
# unset admin password
unset ADMIN_PASSWORD
# Post Install logs: For questions like https://help.nextcloud.com/t/nextcloud-aio-error-could-not-get-appdata-folder-after-container-has-already-written-data-in-it/151122/5
echo "Install errors: $(cat /var/www/html/data/nextcloud.log)"
# Apply log settings
echo "Applying default settings..."
mkdir -p /var/www/html/data
@@ -204,21 +260,28 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
# php /var/www/html/occ config:app:set updatenotification notify_groups --value="[]"
# Install some apps by default
php /var/www/html/occ app:install twofactor_totp
php /var/www/html/occ app:install deck
php /var/www/html/occ app:install tasks
php /var/www/html/occ app:install calendar
php /var/www/html/occ app:install contacts
php /var/www/html/occ app:install apporder
if [ -n "$STARTUP_APPS" ]; then
read -ra STARTUP_APPS_ARRAY <<< "$STARTUP_APPS"
for app in "${STARTUP_APPS_ARRAY[@]}"; do
if ! echo "$app" | grep -q '^-'; then
if [ -z "$(find /var/www/html/apps -type d -maxdepth 1 -mindepth 1 -name "$app" )" ]; then
# If not shipped, install and enable the app
php /var/www/html/occ app:install "$app"
else
# If shipped, enable the app
php /var/www/html/occ app:enable "$app"
fi
else
app="${app#-}"
# Disable the app if '-' was provided in front of the appid
php /var/www/html/occ app:disable "$app"
fi
done
fi
#upgrade
else
while [ -n "$(pgrep -f cron.php)" ]
do
echo "Waiting for Nextclouds cronjob to finish..."
sleep 5
done
touch "$NEXTCLOUD_DATA_DIR/update.failed"
echo "Upgrading nextcloud from $installed_version to $image_version..."
if ! php /var/www/html/occ upgrade || ! php /var/www/html/occ -V; then
echo "Upgrade failed. Please restore from backup."
@@ -226,12 +289,38 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
exit 1
fi
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."
php /var/www/html/occ app:list | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
echo "The following apps have been disabled:"
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
rm -f /tmp/list_before /tmp/list_after
php /var/www/html/occ app:update --all
# Restore app status
if [ "${APPSTORAGE[0]}" != "no-export-done" ]; then
echo "Restoring the status of apps. This can take a while..."
for app in "${!APPSTORAGE[@]}"; do
if [ -n "${APPSTORAGE[$app]}" ]; then
if [ "${APPSTORAGE[$app]}" != "no" ]; then
echo "Enabling $app..."
if ! php /var/www/html/occ app:enable "$app" >/dev/null; then
echo "The $app app could not get enabled. Probably because it is not compatible with the new Nextcloud version."
if [ "$app" = apporder ]; then
CUSTOM_HINT="The apporder app was deprecated. A possible replacement is the side_menu app, aka 'Custom menu'."
else
CUSTOM_HINT="Most likely because it is not compatible with the new Nextcloud version."
fi
bash /notify.sh "Could not enable the $app app after the Nextcloud update!" "$CUSTOM_HINT Feel free to look at the Nextcloud update logs and force-enable the app again from the app-store UI."
continue
fi
# Only restore the group settings, if the app was enabled (and is thus compatible with the new NC version)
if [ "${APPSTORAGE[$app]}" != "yes" ]; then
php /var/www/html/occ config:app:set "$app" enabled --value="${APPSTORAGE[$app]}"
fi
fi
fi
done
fi
php /var/www/html/occ app:update --all
# Apply optimization
echo "Doing some optimizations..."
@@ -245,32 +334,48 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
fi
fi
# Performing update of all apps if daily backups are enabled, running and successful
if [ "$DAILY_BACKUP_RUNNING" = 'yes' ]; then
# Performing update of all apps if daily backups are enabled, running and successful and if it is saturday
if [ "$UPDATE_NEXTCLOUD_APPS" = 'yes' ] && [ "$(date +%u)" = 6 ]; then
UPDATED_APPS="$(php /var/www/html/occ app:update --all)"
if [ -n "$UPDATED_APPS" ]; then
bash /notify.sh "Your apps just got updated!" "$UPDATED_APPS"
fi
fi
else
SKIP_UPDATE=1
fi
# Check if appdata is present
# If not, something broke (e.g. changing ncdatadir after aio was first started)
if [ -z "$(find "/mnt/ncdata/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
if [ -z "$(find "$NEXTCLOUD_DATA_DIR/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
echo "Appdata is not present. Did you maybe change the datadir after aio was first started?"
echo "See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir"
echo "In the datadir was found:"
ls -la "$NEXTCLOUD_DATA_DIR/"
exit 1
fi
# Configure tempdirectory
if [ -z "$OBJECTSTORE_S3_BUCKET" ] && [ -z "$OBJECTSTORE_SWIFT_URL" ]; then
mkdir -p "$NEXTCLOUD_DATA_DIR/tmp/"
if ! grep -q upload_tmp_dir /usr/local/etc/php/conf.d/nextcloud.ini; then
echo "upload_tmp_dir = $NEXTCLOUD_DATA_DIR/tmp/" >> /usr/local/etc/php/conf.d/nextcloud.ini
fi
php /var/www/html/occ config:system:set tempdirectory --value="$NEXTCLOUD_DATA_DIR/tmp/"
fi
# Perform fingerprint update if instance was restored
if [ -f "/mnt/ncdata/fingerprint.update" ]; then
if [ -f "$NEXTCLOUD_DATA_DIR/fingerprint.update" ]; then
php /var/www/html/occ maintenance:data-fingerprint
rm "/mnt/ncdata/fingerprint.update"
rm "$NEXTCLOUD_DATA_DIR/fingerprint.update"
fi
# Apply one-click-instance settings
echo "Applying one-click-instance settings..."
php /var/www/html/occ config:system:set one-click-instance --value=true --type=bool
php /var/www/html/occ config:system:set one-click-instance.user-limit --value=100 --type=int
php /var/www/html/occ config:system:set one-click-instance.link --value="https://nextcloud.com/all-in-one/"
php /var/www/html/occ app:enable support
# Adjusting log files to be stored on a volume
echo "Adjusting log files..."
@@ -303,7 +408,7 @@ if ! [ -d "/var/www/html/custom_apps/notify_push" ]; then
php /var/www/html/occ app:install notify_push
elif [ "$(php /var/www/html/occ config:app:get notify_push enabled)" = "no" ]; then
php /var/www/html/occ app:enable notify_push
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update notify_push
fi
php /var/www/html/occ config:system:set trusted_proxies 0 --value="127.0.0.1"
@@ -316,15 +421,52 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:install richdocuments
elif [ "$(php /var/www/html/occ config:app:get richdocuments enabled)" = "no" ]; then
php /var/www/html/occ app:enable richdocuments
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update richdocuments
fi
php /var/www/html/occ config:app:set richdocuments wopi_url --value="https://$NC_DOMAIN/"
# 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_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
if [ -z "$COLLABORA_ALLOW_LIST" ]; then
COLLABORA_ALLOW_LIST="$COLLABORA_IPv4_ADDRESS"
else
COLLABORA_ALLOW_LIST+=",$COLLABORA_IPv4_ADDRESS"
fi
fi
else
echo "Warning: No ipv4-address found for $NC_DOMAIN."
fi
if [ -n "$COLLABORA_IPv6_ADDRESS" ]; then
if ! echo "$COLLABORA_ALLOW_LIST" | grep -q "$COLLABORA_IPv6_ADDRESS"; then
if [ -z "$COLLABORA_ALLOW_LIST" ]; then
COLLABORA_ALLOW_LIST="$COLLABORA_IPv6_ADDRESS"
else
COLLABORA_ALLOW_LIST+=",$COLLABORA_IPv6_ADDRESS"
fi
fi
else
echo "No ipv6-address found for $NC_DOMAIN."
fi
if [ -n "$COLLABORA_ALLOW_LIST" ]; then
PRIVATE_IP_RANGES='127.0.0.1/8,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8,fd00::/8,::1'
if ! echo "$COLLABORA_ALLOW_LIST" | grep -q "$PRIVATE_IP_RANGES"; then
COLLABORA_ALLOW_LIST+=",$PRIVATE_IP_RANGES"
fi
php /var/www/html/occ config:app:set richdocuments wopi_allowlist --value="$COLLABORA_ALLOW_LIST"
else
echo "Warning: wopi_allowlist is empty which should not be the case!"
fi
else
if [ -d "/var/www/html/custom_apps/richdocuments" ]; then
php /var/www/html/occ config:system:delete allow_local_remote_servers
php /var/www/html/occ app:remove richdocuments
fi
fi
@@ -339,12 +481,15 @@ if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:install onlyoffice
elif [ "$(php /var/www/html/occ config:app:get onlyoffice enabled)" = "no" ]; then
php /var/www/html/occ app:enable onlyoffice
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update onlyoffice
fi
php /var/www/html/occ config:system:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
php /var/www/html/occ config:system:set onlyoffice jwt_header --value="AuthorizationJwt"
php /var/www/html/occ config:app:set onlyoffice DocumentServerUrl --value="https://$NC_DOMAIN/onlyoffice"
php /var/www/html/occ config:system:set allow_local_remote_servers --type=bool --value=true
else
if [ -d "/var/www/html/custom_apps/onlyoffice" ]; then
if [ -d "/var/www/html/custom_apps/onlyoffice" ] && [ -n "$ONLYOFFICE_SECRET" ] && [ "$(php /var/www/html/occ config:system:get onlyoffice jwt_secret)" = "$ONLYOFFICE_SECRET" ]; then
php /var/www/html/occ app:remove onlyoffice
fi
fi
@@ -355,15 +500,20 @@ if [ "$TALK_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:install spreed
elif [ "$(php /var/www/html/occ config:app:get spreed enabled)" = "no" ]; then
php /var/www/html/occ app:enable spreed
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update spreed
fi
STUN_SERVERS="[\"$NC_DOMAIN:3478\"]"
TURN_SERVERS="[{\"server\":\"$NC_DOMAIN:3478\",\"secret\":\"$TURN_SECRET\",\"protocols\":\"udp,tcp\"}]"
SIGNALING_SERVERS="{\"servers\":[{\"server\":\"https://$NC_DOMAIN/standalone-signaling/\",\"verify\":true}],\"secret\":\"$SIGNALING_SECRET\"}"
php /var/www/html/occ config:app:set spreed stun_servers --value="$STUN_SERVERS" --output json
php /var/www/html/occ config:app:set spreed turn_servers --value="$TURN_SERVERS" --output json
php /var/www/html/occ config:app:set spreed signaling_servers --value="$SIGNALING_SERVERS" --output json
# Based on https://github.com/nextcloud/spreed/issues/960#issuecomment-416993435
if [ -z "$(php /var/www/html/occ talk:turn:list --output="plain")" ]; then
php /var/www/html/occ talk:turn:add turn "$NC_DOMAIN:$TALK_PORT" "udp,tcp" --secret="$TURN_SECRET"
fi
if php /var/www/html/occ talk:stun:list --output="plain" | grep -oP '[a-zA-Z.:0-9]+' | grep -q "^stun.nextcloud.com:443$"; then
php /var/www/html/occ talk:stun:add "$NC_DOMAIN:$TALK_PORT"
php /var/www/html/occ talk:stun:delete "stun.nextcloud.com:443"
fi
if ! php /var/www/html/occ talk:signaling:list --output="plain" | grep -q "https://$NC_DOMAIN/standalone-signaling/"; then
php /var/www/html/occ talk:signaling:add "https://$NC_DOMAIN/standalone-signaling/" "$SIGNALING_SECRET" --verify
fi
else
if [ -d "/var/www/html/custom_apps/spreed" ]; then
php /var/www/html/occ app:remove spreed
@@ -380,7 +530,7 @@ if [ "$CLAMAV_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:install files_antivirus
elif [ "$(php /var/www/html/occ config:app:get files_antivirus enabled)" = "no" ]; then
php /var/www/html/occ app:enable files_antivirus
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update files_antivirus
fi
php /var/www/html/occ config:app:set files_antivirus av_mode --value="daemon"
@@ -395,5 +545,70 @@ else
fi
fi
# Imaginary
if version_greater "$installed_version" "24.0.0.0"; then
if [ "$IMAGINARY_ENABLED" = 'yes' ]; then
php /var/www/html/occ config:system:set enabledPreviewProviders 0 --value="OC\\Preview\\Imaginary"
php /var/www/html/occ config:system:set preview_imaginary_url --value="http://$IMAGINARY_HOST:9000"
else
php /var/www/html/occ config:system:delete enabledPreviewProviders 0
php /var/www/html/occ config:system:delete preview_imaginary_url
fi
fi
# Fulltextsearch
if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
while ! nc -z "$FULLTEXTSEARCH_HOST" 9200; do
echo "waiting for Fulltextsearch to become available..."
sleep 5
done
if ! [ -d "/var/www/html/custom_apps/fulltextsearch" ]; then
php /var/www/html/occ app:install fulltextsearch
elif [ "$(php /var/www/html/occ config:app:get fulltextsearch enabled)" = "no" ]; then
php /var/www/html/occ app:enable fulltextsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update fulltextsearch
fi
if ! [ -d "/var/www/html/custom_apps/fulltextsearch_elasticsearch" ]; then
php /var/www/html/occ app:install fulltextsearch_elasticsearch
elif [ "$(php /var/www/html/occ config:app:get fulltextsearch_elasticsearch enabled)" = "no" ]; then
php /var/www/html/occ app:enable fulltextsearch_elasticsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update fulltextsearch_elasticsearch
fi
if ! [ -d "/var/www/html/custom_apps/files_fulltextsearch" ]; then
php /var/www/html/occ app:install files_fulltextsearch
elif [ "$(php /var/www/html/occ config:app:get files_fulltextsearch enabled)" = "no" ]; then
php /var/www/html/occ app:enable files_fulltextsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update files_fulltextsearch
fi
php /var/www/html/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://$FULLTEXTSEARCH_HOST:9200\",\"elastic_index\":\"nextcloud-aio\"}"
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":\"1\",\"files_office\":\"1\"}"
# Do the index
if ! [ -f "$NEXTCLOUD_DATA_DIR/fts-index.done" ]; then
echo "Waiting 10s before activating FTS..."
sleep 10
echo "Activating fulltextsearch..."
if php /var/www/html/occ fulltextsearch:test && php /var/www/html/occ fulltextsearch:index; then
touch "$NEXTCLOUD_DATA_DIR/fts-index.done"
else
echo "Fulltextsearch failed. Could not index."
fi
fi
else
if [ -d "/var/www/html/custom_apps/fulltextsearch" ]; then
php /var/www/html/occ app:remove fulltextsearch
fi
if [ -d "/var/www/html/custom_apps/fulltextsearch_elasticsearch" ]; then
php /var/www/html/occ app:remove fulltextsearch_elasticsearch
fi
if [ -d "/var/www/html/custom_apps/files_fulltextsearch" ]; then
php /var/www/html/occ app:remove files_fulltextsearch
fi
fi
# Remove the update skip file always
rm -f /mnt/ncdata/skip.update
rm -f "$NEXTCLOUD_DATA_DIR"/skip.update

View File

@@ -0,0 +1,7 @@
#!/bin/bash
nc -z "$POSTGRES_HOST" 5432 || exit 0
if ! nc -z localhost 9000 || ! nc -z localhost 7867; then
exit 1
fi

View File

@@ -0,0 +1,27 @@
#!/bin/bash
if [[ "$EUID" = 0 ]]; then
COMMAND=(sudo -E -u www-data php /var/www/html/occ)
else
COMMAND=(php /var/www/html/occ)
fi
SUBJECT="$1"
MESSAGE="$2"
if [ "$("${COMMAND[@]}" config:app:get notifications enabled)" = "no" ]; then
echo "Cannot send notification as notification app is not enabled."
exit 1
fi
echo "Posting notifications to all users..."
NC_USERS=$("${COMMAND[@]}" user:list | sed 's|^ - ||g' | sed 's|:.*||')
mapfile -t NC_USERS <<< "$NC_USERS"
for user in "${NC_USERS[@]}"
do
echo "Posting '$SUBJECT' to: $user"
"${COMMAND[@]}" notification:generate "$user" "$NC_DOMAIN: $SUBJECT" -l "$MESSAGE"
done
echo "Done!"
exit 0

View File

@@ -1,19 +1,25 @@
#!/bin/bash
if [[ "$EUID" = 0 ]]; then
COMMAND=(sudo -E -u www-data php /var/www/html/occ)
else
COMMAND=(php /var/www/html/occ)
fi
SUBJECT="$1"
MESSAGE="$2"
if [ "$(php /var/www/html/occ config:app:get notifications enabled)" = "no" ]; then
if [ "$("${COMMAND[@]}" config:app:get notifications enabled)" = "no" ]; then
echo "Cannot send notification as notification app is not enabled."
exit 1
fi
echo "Posting notifications to users that are admins..."
NC_USERS=$(php /var/www/html/occ user:list | sed 's|^ - ||g' | sed 's|:.*||')
NC_USERS=$("${COMMAND[@]}" user:list | sed 's|^ - ||g' | sed 's|:.*||')
mapfile -t NC_USERS <<< "$NC_USERS"
for user in "${NC_USERS[@]}"
do
if php /var/www/html/occ user:info "$user" | cut -d "-" -f2 | grep -x -q " admin"
if "${COMMAND[@]}" user:info "$user" | cut -d "-" -f2 | grep -x -q " admin"
then
NC_ADMIN_USER+=("$user")
fi
@@ -22,7 +28,7 @@ done
for admin in "${NC_ADMIN_USER[@]}"
do
echo "Posting '$SUBJECT' to: $admin"
php /var/www/html/occ notification:generate "$admin" "$NC_DOMAIN: $SUBJECT" -l "$MESSAGE"
"${COMMAND[@]}" notification:generate "$admin" "$NC_DOMAIN: $SUBJECT" -l "$MESSAGE"
done
echo "Done!"

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# Only start container if database is accessible
while ! nc -z "$POSTGRES_HOST" 5432; do
while ! sudo -u www-data nc -z "$POSTGRES_HOST" 5432; do
echo "Waiting for database to start..."
sleep 5
done
@@ -11,13 +11,122 @@ POSTGRES_USER="oc_$POSTGRES_USER"
export POSTGRES_USER
# Fix false database connection on old instances
if [ -f "/var/www/html/config/config.php" ] && sleep 2 && psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/$POSTGRES_DB" -c "select now()"; then
sed -i "s|'dbuser'.*=>.*$|'dbuser' => '$POSTGRES_USER',|" /var/www/html/config/config.php
sed -i "s|'dbpassword'.*=>.*$|'dbpassword' => '$POSTGRES_PASSWORD',|" /var/www/html/config/config.php
if [ -f "/var/www/html/config/config.php" ]; then
sleep 2
while ! sudo -u www-data psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/$POSTGRES_DB" -c "select now()"; do
echo "Waiting for the database to start..."
sleep 5
done
if [ "$POSTGRES_USER" = "oc_nextcloud" ] && echo "$POSTGRES_PASSWORD" | grep -q '^[a-z0-9]\+$'; then
# this was introduced with https://github.com/nextcloud/all-in-one/pull/218
sed -i "s|'dbuser'.*=>.*$|'dbuser' => '$POSTGRES_USER',|" /var/www/html/config/config.php
sed -i "s|'dbpassword'.*=>.*$|'dbpassword' => '$POSTGRES_PASSWORD',|" /var/www/html/config/config.php
fi
fi
# Trust additional Cacerts, if the user provided $TRUSTED_CACERTS_DIR
if [ -n "$TRUSTED_CACERTS_DIR" ]; then
echo "User required to trust additional CA certificates, running 'update-ca-certificates.'"
update-ca-certificates
fi
# Check if /dev/dri device is present and apply correct permissions
set -x
if ! [ -f "/dev-dri-group-was-added" ] && [ -n "$(find /dev -maxdepth 1 -mindepth 1 -name dri)" ] && [ -n "$(find /dev/dri -maxdepth 1 -mindepth 1 -name renderD128)" ]; then
# From https://github.com/pulsejet/memories/wiki/QSV-Transcoding#docker-installations
GID="$(stat -c "%g" /dev/dri/renderD128)"
groupadd -g "$GID" render2 || true # sometimes this is needed
GROUP="$(getent group "$GID" | cut -d: -f1)"
usermod -aG "$GROUP" www-data
touch "/dev-dri-group-was-added"
fi
set +x
# Check datadir permissions
sudo -u www-data touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" &>/dev/null
if ! [ -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" ]; then
chown -R www-data:root "$NEXTCLOUD_DATA_DIR"
chmod 750 -R "$NEXTCLOUD_DATA_DIR"
fi
sudo -u www-data rm -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
# Install additional dependencies
if [ -n "$ADDITIONAL_APKS" ]; then
if ! [ -f "/additional-apks-are-installed" ]; then
read -ra ADDITIONAL_APKS_ARRAY <<< "$ADDITIONAL_APKS"
for app in "${ADDITIONAL_APKS_ARRAY[@]}"; do
echo "Installing $app via apk..."
if ! apk add --no-cache "$app" >/dev/null; then
echo "The packet $app was not installed!"
fi
done
fi
touch /additional-apks-are-installed
fi
# Install additional php extensions
if [ -n "$ADDITIONAL_PHP_EXTENSIONS" ]; then
if ! [ -f "/additional-php-extensions-are-installed" ]; then
read -ra ADDITIONAL_PHP_EXTENSIONS_ARRAY <<< "$ADDITIONAL_PHP_EXTENSIONS"
for app in "${ADDITIONAL_PHP_EXTENSIONS_ARRAY[@]}"; do
if [ "$app" = imagick ]; then
echo "Enabling Imagick..."
if ! docker-php-ext-enable imagick >/dev/null; then
echo "Could not install PHP extension imagick!"
fi
continue
fi
# shellcheck disable=SC2086
if [ "$PHP_DEPS_ARE_INSTALLED" != 1 ]; then
echo "Installing PHP build dependencies..."
if ! apk add --no-cache --virtual .build-deps \
libxml2-dev \
autoconf \
$PHPIZE_DEPS >/dev/null; then
echo "Could not install build-deps!"
fi
PHP_DEPS_ARE_INSTALLED=1
fi
if [ "$app" = inotify ]; then
echo "Installing $app via PECL..."
pecl install "$app" >/dev/null
if ! docker-php-ext-enable "$app" >/dev/null; then
echo "Could not install PHP extension $app!"
fi
elif [ "$app" = soap ]; then
echo "Installing $app from core..."
if ! docker-php-ext-install -j "$(nproc)" "$app" >/dev/null; then
echo "Could not install PHP extension $app!"
fi
else
echo "Installing PHP extension $app ..."
if ! docker-php-ext-install -j "$(nproc)" "$app" >/dev/null; then
echo "Could not install $app from core. Trying to install from PECL..."
pecl install "$app" >/dev/null
if ! docker-php-ext-enable "$app" >/dev/null; then
echo "Could also not install $app from PECL. The PHP extensions was not installed!"
fi
fi
fi
done
if [ "$PHP_DEPS_ARE_INSTALLED" = 1 ]; then
rm -rf /tmp/pear
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
| tr ',' '\n' \
| sort -u \
| 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 del .build-deps >/dev/null
fi
fi
touch /additional-php-extensions-are-installed
fi
# Run original entrypoint
if ! bash /entrypoint.sh; then
if ! sudo -E -u www-data bash /entrypoint.sh; then
exit 1
fi

View File

@@ -7,6 +7,7 @@ childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB ; maximum size of logfile before rotation
logfile_backups=10 ; number of backed up logfiles
loglevel=error
user=root
[program:php-fpm]
stdout_logfile=/dev/stdout
@@ -14,6 +15,7 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=php-fpm
user=root
[program:cron]
stdout_logfile=/dev/stdout
@@ -21,6 +23,7 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/cron.sh
user=www-data
[program:notify-push]
stdout_logfile=/dev/stdout
@@ -28,6 +31,7 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/var/www/html/custom_apps/notify_push/bin/%(ENV_CPU_ARCH)s/notify_push /var/www/html/config/config.php --port 7867 --redis-url redis://:%(ENV_REDIS_HOST_PASSWORD)s@%(ENV_REDIS_HOST)s
user=www-data
[program:activate-collabora]
stdout_logfile=/dev/stdout
@@ -35,3 +39,4 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/activate-collabora.sh
user=www-data

View File

@@ -1,2 +1,4 @@
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
FROM onlyoffice/documentserver:7.1.1.23
FROM onlyoffice/documentserver:7.2.2.56
HEALTHCHECK CMD nc -z localhost 80 || exit 1

View File

@@ -1,7 +1,7 @@
# From https://github.com/docker-library/postgres/blob/master/13/alpine/Dockerfile
FROM postgres:14.3-alpine3.15
# From https://github.com/docker-library/postgres/blob/master/14/alpine/Dockerfile
FROM postgres:14.6-alpine
RUN apk add --update --no-cache bash openssl shadow netcat-openbsd
RUN apk add --update --no-cache bash openssl shadow netcat-openbsd grep mawk
# We need to use the same gid and uid as on old installations
RUN set -ex; \
@@ -17,9 +17,12 @@ RUN set -ex; \
chown -R postgres:postgres "$PGDATA"
COPY start.sh /usr/bin/
COPY healthcheck.sh /usr/bin/
COPY init-user-db.sh /docker-entrypoint-initdb.d/
RUN chmod +x /usr/bin/start.sh; \
chmod +xr /docker-entrypoint-initdb.d/init-user-db.sh
RUN set -ex; \
chmod +x /usr/bin/start.sh; \
chmod +xr /docker-entrypoint-initdb.d/init-user-db.sh; \
chmod +x /usr/bin/healthcheck.sh
RUN mkdir /mnt/data; \
chown postgres:postgres /mnt/data;
@@ -31,3 +34,5 @@ RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER postgres
ENTRYPOINT ["start.sh"]
HEALTHCHECK CMD healthcheck.sh

View File

@@ -0,0 +1,5 @@
#!/bin/bash
test -f "/mnt/data/backup-is-running" && exit 0
psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:5432/$POSTGRES_DB" -c "select now()" || exit 1

View File

@@ -1,9 +1,13 @@
#!/bin/bash
set -ex
touch "$DUMP_DIR/initialization.failed"
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER "oc_$POSTGRES_USER" WITH PASSWORD '$POSTGRES_PASSWORD' CREATEDB;
ALTER DATABASE "$POSTGRES_DB" OWNER TO "oc_$POSTGRES_USER";
EOSQL
rm "$DUMP_DIR/initialization.failed"
set +ex

View File

@@ -2,13 +2,15 @@
# Variables
DATADIR="/var/lib/postgresql/data"
DUMP_DIR="/mnt/data"
export DUMP_DIR="/mnt/data"
DUMP_FILE="$DUMP_DIR/database-dump.sql"
export PGPASSWORD="$POSTGRES_PASSWORD"
# Don't start database as long as backup is running
while [ -f "$DUMP_DIR/backup-is-running" ]; do
echo "Waiting for backup container to finish..."
echo "If this is incorrect because the backup container is not running anymore (because it was forcefully killed), you might delete the lock file which is by default stored here:"
echo "/var/lib/docker/volumes/nextcloud_aio_database_dump/_data/backup-is-running"
sleep 10
done
@@ -18,6 +20,23 @@ if ! [ -w "$DUMP_DIR" ]; then
exit 1
fi
# Don't start if import failed
if [ -f "$DUMP_DIR/import.failed" ]; then
echo "The database import failed. Please restore a backup and try again."
echo "For further clues on what went wrong, look at the logs above."
exit 1
fi
# Don't start if initialization failed
if [ -f "$DUMP_DIR/initialization.failed" ]; then
echo "The database initialization failed. Most likely was a wrong timezone selected."
echo "The selected timezone is '$TZ'."
echo "Please check if it is in 'TZ database name' column of the timezone list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List"
echo "For further clues on what went wrong, look at the logs above."
echo "You might start again from scratch by following https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance and selecting a proper timezone."
exit 1
fi
# Delete the datadir once (needed for setting the correct credentials on old instances once)
if ! [ -f "$DUMP_DIR/export.failed" ] && ! [ -f "$DUMP_DIR/initial-cleanup-done" ]; then
set -ex
@@ -39,13 +58,20 @@ if ( [ -f "$DATADIR/PG_VERSION" ] && [ "$PG_MAJOR" != "$(cat "$DATADIR/PG_VERSIO
# If database export was unsuccessful, skip update
if [ -f "$DUMP_DIR/export.failed" ]; then
echo "Database export failed the last time. Most likely was the export time not high enough."
echo "Plese report this to https://github.com/nextcloud/all-in-one/issues. Thanks!"
echo "Please report this to https://github.com/nextcloud/all-in-one/issues. Thanks!"
exit 1
fi
# Write output to logfile.
exec > >(tee -i "$DUMP_DIR/database-import.log")
exec 2>&1
# Inform
echo "Restoring from database dump."
# Add import.failed file
touch "$DUMP_DIR/import.failed"
# Exit if any command fails
set -ex
@@ -64,12 +90,26 @@ if ( [ -f "$DATADIR/PG_VERSION" ] && [ "$PG_MAJOR" != "$(cat "$DATADIR/PG_VERSIO
sleep 5
done
# Set correct permissions
if grep -q "Owner: oc_admin" "$DUMP_FILE" && ! grep -q "Owner: oc_$POSTGRES_USER" "$DUMP_FILE"; then
OC_ADMIN_EXISTS=1
# Check if the line we grep for later on is there
GREP_STRING='Name: oc_appconfig; Type: TABLE; Schema: public; Owner:'
if ! grep -q "$GREP_STRING" "$DUMP_FILE"; then
echo "The needed oc_appconfig line is not there which is unexpected."
echo "Please report this to https://github.com/nextcloud/all-in-one/issues. Thanks!"
exit 1
fi
# Get the Owner
DB_OWNER="$(grep "$GREP_STRING" "$DUMP_FILE" | grep -oP 'Owner:.*$' | sed 's|Owner:||;s| ||g')"
if [ "$DB_OWNER" = "$POSTGRES_USER" ]; then
echo "Unfortunately was the found database owner of the dump file the same as the POSTGRES_USER $POSTGRES_USER"
echo "It is not possible to import a database dump from this database owner."
echo "However you might rename the owner in the dumpfile to something else."
exit 1
elif [ "$DB_OWNER" != "oc_$POSTGRES_USER" ]; then
DIFFERENT_DB_OWNER=1
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER oc_admin WITH PASSWORD '$POSTGRES_PASSWORD' CREATEDB;
ALTER DATABASE "$POSTGRES_DB" OWNER TO oc_admin;
CREATE USER "$DB_OWNER" WITH PASSWORD '$POSTGRES_PASSWORD' CREATEDB;
ALTER DATABASE "$POSTGRES_DB" OWNER TO "$DB_OWNER";
EOSQL
fi
@@ -78,10 +118,10 @@ EOSQL
psql "$POSTGRES_DB" -U "$POSTGRES_USER" < "$DUMP_FILE"
# Correct permissions
if [ -n "$OC_ADMIN_EXISTS" ]; then
if [ -n "$DIFFERENT_DB_OWNER" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
ALTER DATABASE "$POSTGRES_DB" OWNER TO "oc_$POSTGRES_USER";
REASSIGN OWNED BY oc_admin TO "oc_$POSTGRES_USER";
REASSIGN OWNED BY "$DB_OWNER" TO "oc_$POSTGRES_USER";
EOSQL
fi
@@ -93,6 +133,9 @@ EOSQL
# Don't exit if command fails anymore
set +ex
# Remove import failed file if everything went correctly
rm "$DUMP_DIR/import.failed"
fi
# Cover the last case
@@ -101,6 +144,13 @@ if ! [ -f "$DATADIR/PG_VERSION" ] && ! [ -f "$DUMP_FILE" ]; then
rm -rf "${DATADIR:?}/"*
fi
echo "Setting max connections..."
MEMORY=$(mawk '/MemTotal/ {printf "%d", $2/1024}' /proc/meminfo)
MAX_CONNECTIONS=$((MEMORY/50+3))
if [ -n "$MAX_CONNECTIONS" ]; then
sed -i "s|^max_connections =.*|max_connections = $MAX_CONNECTIONS|" "/var/lib/postgresql/data/postgresql.conf"
fi
# Catch docker stop attempts
trap 'true' SIGINT SIGTERM

View File

@@ -1,5 +1,5 @@
# From https://github.com/docker-library/redis/blob/master/6.2/alpine/Dockerfile
FROM redis:6.2.7-alpine
FROM redis:6.2.8-alpine
RUN apk add --update --no-cache openssl bash
@@ -11,3 +11,5 @@ RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER redis
ENTRYPOINT ["start.sh"]
HEALTHCHECK CMD redis-cli -a $REDIS_HOST_PASSWORD PING || exit 1

View File

@@ -1,6 +1,4 @@
FROM ubuntu:focal-20220531
EXPOSE 3478
FROM ubuntu:focal-20221130
RUN set -ex; \
\
@@ -11,6 +9,7 @@ RUN set -ex; \
supervisor \
curl \
ca-certificates \
netcat \
; \
rm -rf /var/lib/apt/lists/*
@@ -54,15 +53,22 @@ RUN curl -sL -o "/usr/share/janus/lua/json.lua" "https://raw.githubusercontent.c
RUN mkdir -p /etc/nats; \
echo "listen: 127.0.0.1:4222" > /etc/nats/nats.conf; \
mkdir /var/lib/turn; \
chown talk:talk /etc; \
chown talk:talk -R /etc/nats; \
chown talk:talk -R /etc/janus; \
chown talk:talk -R /etc/signaling; \
chown talk:talk -R /usr
chown talk:talk -R /usr; \
chown talk:talk -R /var/lib/turn;
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
# Set default talk port https://github.com/nextcloud/all-in-one/issues/1011
ENV TALK_PORT=3478
USER talk
ENTRYPOINT ["start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD (nc -z localhost 8081 && nc -z localhost 8188 && nc -z localhost 4222 && nc -z localhost $TALK_PORT) || exit 1

View File

@@ -11,24 +11,27 @@ elif [ -z "$JANUS_API_KEY" ]; then
echo "You need to provide the JANUS_API_KEY."
exit 1
elif [ -z "$SIGNALING_SECRET" ]; then
echo "You need to provide the JANUS_API_KEY."
echo "You need to provide the SIGNALING_SECRET."
exit 1
fi
# Turn
# Turn: https://github.com/coturn/coturn/blob/master/examples/etc/turnserver.conf
cat << TURN_CONF > "/etc/turnserver.conf"
listening-port=3478
listening-port=$TALK_PORT
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=$TURN_SECRET
realm=$NC_DOMAIN
total-quota=100
total-quota=0
bps-capacity=0
stale-nonce
no-multicast-peers
simple-log
pidfile=/var/tmp/turnserver.pid
no-tls
no-dtls
userdb=/var/lib/turn/turndb
TURN_CONF
# Janus
@@ -36,13 +39,15 @@ set -x
sed -i "s|#turn_rest_api_key.*|turn_rest_api_key = \"$JANUS_API_KEY\"|" /etc/janus/janus.jcfg
sed -i "s|#full_trickle.*|full_trickle = true|g" /etc/janus/janus.jcfg
sed -i 's|#stun_server.*|stun_server = "127.0.0.1"|g' /etc/janus/janus.jcfg
sed -i "s|#stun_port.*|stun_port = 3478|g" /etc/janus/janus.jcfg
sed -i "s|#turn_port.*|turn_port = 3478|g" /etc/janus/janus.jcfg
sed -i 's|#turn_server.*|turn_server = "127.0.0.1"|g'/etc/janus/janus.jcfg
sed -i "s|#stun_port.*|stun_port = $TALK_PORT|g" /etc/janus/janus.jcfg
sed -i "s|#turn_port.*|turn_port = $TALK_PORT|g" /etc/janus/janus.jcfg
sed -i 's|#turn_server.*|turn_server = "127.0.0.1"|g' /etc/janus/janus.jcfg
sed -i 's|#turn_type .*|turn_type = "udp"|g' /etc/janus/janus.jcfg
sed -i 's|#ice_ignore_list .*|ice_ignore_list = "udp"|g' /etc/janus/janus.jcfg
sed -i 's|#interface.*|interface = "lo"|g' /etc/janus/janus.transport.websockets.jcfg
sed -i 's|#ws_interface.*|ws_interface = "lo"|g' /etc/janus/janus.transport.websockets.jcfg
sed -i 's|certfile =|#certfile =|g' /etc/janus/janus.transport.mqtt.jcfg
sed -i 's|keyfile =|#keyfile =|g' /etc/janus/janus.transport.mqtt.jcfg
set +x
# Signling
@@ -80,7 +85,7 @@ url = ws://127.0.0.1:8188
[turn]
apikey = ${JANUS_API_KEY}
secret = ${TURN_SECRET}
servers = turn:$NC_DOMAIN:3478?transport=tcp,turn:$NC_DOMAIN:3478?transport=udp
servers = turn:$NC_DOMAIN:$TALK_PORT?transport=tcp,turn:$NC_DOMAIN:$TALK_PORT?transport=udp
SIGNALING_CONF
exec "$@"

View File

@@ -27,11 +27,11 @@ stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/usr/bin/janus --config=/etc/janus/janus.jcfg --disable-colors --daemon --log-stdout
command=/usr/bin/janus --config=/etc/janus/janus.jcfg --disable-colors --log-stdout
[program:signaling]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=signaling -config /etc/signaling/server.conf
command=signaling --config /etc/signaling/server.conf

View File

@@ -1,7 +1,7 @@
# From https://github.com/containrrr/watchtower/blob/main/dockerfiles/Dockerfile.self-contained
FROM containrrr/watchtower:1.4.0 as watchtower
FROM containrrr/watchtower:1.5.1 as watchtower
FROM alpine:3.15.4
FROM alpine:3.16.3
RUN apk add --update --no-cache bash
COPY --from=watchtower /watchtower /

View File

@@ -10,7 +10,7 @@ elif ! test -r /var/run/docker.sock; then
fi
if [ -n "$CONTAINER_TO_UPDATE" ]; then
exec /watchtower --cleanup --run-once "$CONTAINER_TO_UPDATE"
exec /watchtower --cleanup --debug --run-once "$CONTAINER_TO_UPDATE"
else
echo "'CONTAINER_TO_UPDATE' is not set. Cannot update anything."
exit 1

View File

@@ -5,7 +5,7 @@
<name>Nextcloud All In One</name>
<summary>Provides a login link for admins.</summary>
<description>Add a link to the admin settings that gives access to the Nextcloud All In One admin interface</description>
<version>0.1.0</version>
<version>0.3.0</version>
<licence>agpl</licence>
<author>Azul</author>
<namespace>AllInOne</namespace>
@@ -13,7 +13,7 @@
<category>monitoring</category>
<bugs>https://github.com/nextcloud/all-in-one/issues</bugs>
<dependencies>
<nextcloud min-version="22" max-version="23"/>
<nextcloud min-version="24" max-version="25"/>
</dependencies>
<settings>

View File

@@ -1,12 +1,13 @@
## Developer channel
If you want to switch to the develop channel, you simply stop and delete the mastercontainer and create a new one with a changed tag to develop:
```shell
sudo docker run -it \
sudo docker run \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
-p 80:80 \
-p 8080:8080 \
-p 8443:8443 \
--publish 80:80 \
--publish 8080:8080 \
--publish 8443:8443 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:develop
@@ -18,18 +19,19 @@ It will now also select the developer channel for all other containers automatic
Simply use https://github.com/nextcloud/all-in-one/issues/180 as template.
## How to build new containers
Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/repo-sync.yml and run the workflow that will first sync the repo and then build new container that automatically get published to `develop` and `develop-arm64`.
## How to promote builds from develop to beta
## How to test things correctly?
There is a testing-VM available for the maintainer of AIO that allows for some final testing before releasing new version. See [this](https://cloud.nextcloud.com/apps/collectives/Nextcloud%20Handbook/Technical/AIO%20testing%20VM?fileId=6350152) for details.
## How to promote builds from develop to beta
1. Verify that no job is running here: https://github.com/nextcloud-releases/all-in-one/actions/workflows/build_images.yml
2. Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/promote-to-beta.yml, click on `Run workflow`.
## Where to find the VPS and other builds?
This is documented here: https://github.com/nextcloud-releases/all-in-one/tree/main/.build
## How to promote builds from beta to latest
1. Verify that no job is running here: https://github.com/nextcloud-releases/all-in-one/actions/workflows/promote-to-beta.yml
2. Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/promote-to-latest.yml, click on `Run workflow`.
## Where to find the VPS and other builds?
This is documented here: https://github.com/nextcloud-releases/all-in-one/tree/main/.build

View File

@@ -11,16 +11,28 @@ services:
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed
volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'DOCKER_SOCKET_PATH'!
ports:
- 80:80 # Can be removed when running behind a reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
- 8080:8080
- 8443:8443 # Can be removed when running behind a reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# environment: # Is needed when using any of the options below
# - APACHE_PORT=11000 # Is needed when running behind a reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# - APACHE_IP_BINDING=127.0.0.1 # Should be set when running behind a reverse proxy that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# - COLLABORA_SECCOMP_DISABLED=false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
# - DOCKER_SOCKET_PATH=/var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail.
# - DISABLE_BACKUP_SECTION=false # Setting this to true allows to hide the backup section in the AIO interface.
# - NEXTCLOUD_DATADIR=/mnt/ncdata # Allows to set the host directory for Nextcloud's datadir. See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
# - NEXTCLOUD_MOUNT=/mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
# - 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.
# - NEXTCLOUD_UPLOAD_LIMIT=10G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
# - NEXTCLOUD_MAX_TIME=3600 # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud
# - NEXTCLOUD_MEMORY_LIMIT=512M # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud
# - NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts # CA certificates in this directory will be trusted by the OS of the nexcloud container (Useful e.g. for LDAPS) See See https://github.com/nextcloud/all-in-one#how-to-trust-user-defiend-certification-authorities-ca
# - NEXTCLOUD_STARTUP_APPS=deck twofactor_totp tasks calendar contacts # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. See https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup
# - NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-packets-permanently-to-the-nextcloud-container
# - NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container
# - NEXTCLOUD_ENABLE_DRI_DEVICE=true # This allows to enable the /dev/dri device in the Nextcloud container which is needed for hardware-transcoding. See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud
# - TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
# # 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

View File

@@ -3,10 +3,12 @@
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**. 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. 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://docs.docker.com/config/daemon/ipv6/. The daemon.json file is most likely stored in `~/.config/docker/daemon.json`.
1. Do not forget to set the mentioned environmental variables and in best case add them to your `~/.bashrc` file as shown!
1. Also do not forget to run `loginctl enable-linger USERNAME` (and substitute USERNAME with the correct one) in order to make sure that user services are automatically started after every reboot.
1. Expose the privileged ports by following https://docs.docker.com/engine/security/rootless/#exposing-privileged-ports. (`sudo setcap cap_net_bind_service=ep $(which rootlesskit); systemctl --user restart docker`)
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `-e DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly).
1. Now everything should work like without docker rootless. You can consider using docker-compose for this or running it behind a reverse proxy. Basically the only thing that needs to be adjusted always in the startup command or docker-compose file (after installing docker rootles) are things that are mentioned in point 3.
**Please note:** All files outside the containers get created, written to and accessed as the user that is running the docker daemon or a subuid of it. So for the built-in backup to work you need to allow this user to write to the target directory. For changing Nextcloud's datadir, 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). This logically also applies to the NEXTCLOUD_MOUNT option.
**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).

19
local-instance.md Normal file
View File

@@ -0,0 +1,19 @@
# Local instance
It is possible due to several reasons that you do not want or cannot open Nextcloud to the public internet. However AIO requires a valid certificate to work correctly. Below is discussed how you can achieve both: Having a valid certificate for Nextcloud and only using it locally.
## 1. The recommended way
The recommended way is the following:
1. Set up your domain correctly to point to your home network
1. Set up a reverse proxy by following the [reverse proxy documentation](./reverse-proxy.md) but only open port 80 (which is needed for the ACME challenge to work - however no real traffic will use this port).
1. Set up a local DNS-server like a pi-hole and configure it to be your local DNS-server for the whole network. Then in the Pi-hole interface, add a custom DNS-record for your domain and overwrite the A-record (and possibly the AAAA-record, too) to point to the local ip-address of your reverse proxy (see https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally)
1. Enter the the ip-address of your local dns-server in the deamon.json file for docker so that you are sure that all docker containers use the correct local dns-server.
1. Now, entering the domain in the AIO-interface should work as expected and should allow you to continue with the setup
## 2. Use the ACME DNS-challenge
You can alternatively use the ACME DNS-challenge to get a valid certificate for Nextcloud. Here is described how to set it up: https://github.com/nextcloud/all-in-one#how-to-get-nextcloud-running-using-the-acme-dns-challenge
## 3. Use Cloudflare
If you do not have any contol over the network, you may think about using Cloudflare Argo Tunnel to get a valid certificate for your Nextcloud. However it will be opened to the public internet then. See https://github.com/nextcloud/all-in-one#how-to-run-nextcloud-behind-a-cloudflare-argo-tunnel how to set this up.
## 4. Buy a certificate and use that
If none of the above ways work for you, you may simply buy a certificate from an issuer for your domain. You then download the certificate onto your server, configure AIO in [reverse proxy mode](./reverse-proxy.md) and use the certificate for your domain in your reverse proxy config.

View File

@@ -1,136 +0,0 @@
version: "3.8"
services:
nextcloud-aio-apache:
container_name: nextcloud-aio-apache
depends_on:
- nextcloud-aio-collabora
- nextcloud-aio-talk
- nextcloud-aio-nextcloud
image: nextcloud/aio-apache:latest-arm64
ports:
- ${APACHE_PORT}:${APACHE_PORT}/tcp
environment:
- NC_DOMAIN=${NC_DOMAIN}
- NEXTCLOUD_HOST=nextcloud-aio-nextcloud
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_HOST=nextcloud-aio-talk
- APACHE_PORT=${APACHE_PORT}
- TZ=${TIMEZONE}
volumes:
- nextcloud_aio_nextcloud:/var/www/html:ro
- nextcloud_aio_apache:/mnt/data:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-database:
container_name: nextcloud-aio-database
image: nextcloud/aio-postgresql:latest-arm64
volumes:
- nextcloud_aio_database:/var/lib/postgresql/data:rw
- nextcloud_aio_database_dump:/mnt/data:rw
environment:
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
- POSTGRES_DB=nextcloud_database
- POSTGRES_USER=nextcloud
- TZ=${TIMEZONE}
- PGTZ=${TIMEZONE}
stop_grace_period: 1800s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-nextcloud:
container_name: nextcloud-aio-nextcloud
depends_on:
- nextcloud-aio-database
- nextcloud-aio-redis
image: nextcloud/aio-nextcloud:latest-arm64
volumes:
- nextcloud_aio_nextcloud:/var/www/html:rw
- ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw
- ${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:rw
environment:
- POSTGRES_HOST=nextcloud-aio-database
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
- POSTGRES_DB=nextcloud_database
- POSTGRES_USER=nextcloud
- REDIS_HOST=nextcloud-aio-redis
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
- AIO_TOKEN=${AIO_TOKEN}
- NC_DOMAIN=${NC_DOMAIN}
- ADMIN_USER=admin
- ADMIN_PASSWORD=${NEXTCLOUD_PASSWORD}
- NEXTCLOUD_DATA_DIR=/mnt/ncdata
- OVERWRITEHOST=${NC_DOMAIN}
- OVERWRITEPROTOCOL=https
- TURN_SECRET=${TURN_SECRET}
- SIGNALING_SECRET=${SIGNALING_SECRET}
- AIO_URL=${AIO_URL}
- NEXTCLOUD_MOUNT=${NEXTCLOUD_MOUNT}
- COLLABORA_ENABLED=${COLLABORA_ENABLED}
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_ENABLED=${TALK_ENABLED}
- DAILY_BACKUP_RUNNING=${DAILY_BACKUP_RUNNING}
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-redis:
container_name: nextcloud-aio-redis
image: nextcloud/aio-redis:latest-arm64
environment:
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-collabora:
container_name: nextcloud-aio-collabora
image: nextcloud/aio-collabora:latest-arm64
environment:
- aliasgroup1=https://${NC_DOMAIN}:443
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-talk:
container_name: nextcloud-aio-talk
image: nextcloud/aio-talk:latest-arm64
ports:
- 3478:3478/tcp
- 3478:3478/udp
environment:
- NC_DOMAIN=${NC_DOMAIN}
- TURN_SECRET=${TURN_SECRET}
- SIGNALING_SECRET=${SIGNALING_SECRET}
- JANUS_API_KEY=${JANUS_API_KEY}
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
volumes:
nextcloud_aio_apache:
name: nextcloud_aio_apache
nextcloud_aio_database:
name: nextcloud_aio_database
nextcloud_aio_database_dump:
name: nextcloud_aio_database_dump
nextcloud_aio_nextcloud:
name: nextcloud_aio_nextcloud
nextcloud_aio_nextcloud_data:
name: nextcloud_aio_nextcloud_data
networks:
nextcloud-aio:

View File

@@ -2,16 +2,14 @@ version: "3.8"
services:
nextcloud-aio-apache:
container_name: nextcloud-aio-apache
depends_on:
- nextcloud-aio-onlyoffice
- nextcloud-aio-collabora
- nextcloud-aio-clamav
- nextcloud-aio-talk
- nextcloud-aio-nextcloud
image: nextcloud/aio-apache:latest
image: nextcloud/aio-apache:${IMAGE_TAG}
ports:
- ${APACHE_PORT}:${APACHE_PORT}/tcp
- ${APACHE_IP_BINDING}:${APACHE_PORT}:${APACHE_PORT}/tcp
environment:
- NC_DOMAIN=${NC_DOMAIN}
- NEXTCLOUD_HOST=nextcloud-aio-nextcloud
@@ -20,17 +18,17 @@ services:
- APACHE_PORT=${APACHE_PORT}
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
- TZ=${TIMEZONE}
- APACHE_MAX_SIZE=${APACHE_MAX_SIZE}
- APACHE_MAX_TIME=${NEXTCLOUD_MAX_TIME}
volumes:
- nextcloud_aio_nextcloud:/var/www/html:ro
- nextcloud_aio_apache:/mnt/data:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-database:
container_name: nextcloud-aio-database
image: nextcloud/aio-postgresql:latest
image: nextcloud/aio-postgresql:${IMAGE_TAG}
volumes:
- nextcloud_aio_database:/var/lib/postgresql/data:rw
- nextcloud_aio_database_dump:/mnt/data:rw
@@ -44,17 +42,20 @@ services:
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-nextcloud:
container_name: nextcloud-aio-nextcloud
depends_on:
- nextcloud-aio-database
- nextcloud-aio-redis
image: nextcloud/aio-nextcloud:latest
- nextcloud-aio-clamav
- nextcloud-aio-fulltextsearch
- nextcloud-aio-imaginary
image: nextcloud/aio-nextcloud:${IMAGE_TAG}
volumes:
- nextcloud_aio_nextcloud:/var/www/html:rw
- ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw
- ${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:rw
- ${NEXTCLOUD_TRUSTED_CACERTS_DIR}:/usr/local/share/ca-certificates:ro
environment:
- POSTGRES_HOST=nextcloud-aio-database
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
@@ -71,6 +72,7 @@ services:
- OVERWRITEPROTOCOL=https
- TURN_SECRET=${TURN_SECRET}
- SIGNALING_SECRET=${SIGNALING_SECRET}
- ONLYOFFICE_SECRET=${ONLYOFFICE_SECRET}
- AIO_URL=${AIO_URL}
- NEXTCLOUD_MOUNT=${NEXTCLOUD_MOUNT}
- CLAMAV_ENABLED=${CLAMAV_ENABLED}
@@ -80,73 +82,110 @@ services:
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_ENABLED=${TALK_ENABLED}
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
- DAILY_BACKUP_RUNNING=${DAILY_BACKUP_RUNNING}
- UPDATE_NEXTCLOUD_APPS=${UPDATE_NEXTCLOUD_APPS}
- TZ=${TIMEZONE}
stop_grace_period: 10s
- TALK_PORT=${TALK_PORT}
- IMAGINARY_ENABLED=${IMAGINARY_ENABLED}
- IMAGINARY_HOST=nextcloud-aio-imaginary
- PHP_UPLOAD_LIMIT=${NEXTCLOUD_UPLOAD_LIMIT}
- PHP_MEMORY_LIMIT=${NEXTCLOUD_MEMORY_LIMIT}
- FULLTEXTSEARCH_ENABLED=${FULLTEXTSEARCH_ENABLED}
- FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch
- PHP_MAX_TIME=${NEXTCLOUD_MAX_TIME}
- TRUSTED_CACERTS_DIR=${NEXTCLOUD_TRUSTED_CACERTS_DIR}
- STARTUP_APPS=${NEXTCLOUD_STARTUP_APPS}
- ADDITIONAL_APKS=${NEXTCLOUD_ADDITIONAL_APKS}
- ADDITIONAL_PHP_EXTENSIONS=${NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS}
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-redis:
container_name: nextcloud-aio-redis
image: nextcloud/aio-redis:latest
image: nextcloud/aio-redis:${IMAGE_TAG}
environment:
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
- TZ=${TIMEZONE}
stop_grace_period: 10s
volumes:
- nextcloud_aio_redis:/data:rw
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-collabora:
container_name: nextcloud-aio-collabora
image: nextcloud/aio-collabora:latest
profiles: ["collabora"]
image: nextcloud/aio-collabora:${IMAGE_TAG}
environment:
- aliasgroup1=https://${NC_DOMAIN}:443
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:home_mode.enable=true ${COLLABORA_SECCOMP_POLICY} --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json
- dictionaries=${COLLABORA_DICTIONARIES}
- TZ=${TIMEZONE}
stop_grace_period: 10s
volumes:
- nextcloud_aio_collabora_fonts:/opt/cool/systemplate/tmpfonts:rw
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-talk:
container_name: nextcloud-aio-talk
image: nextcloud/aio-talk:latest
profiles: ["talk"]
image: nextcloud/aio-talk:${IMAGE_TAG}
ports:
- 3478:3478/tcp
- 3478:3478/udp
- ${TALK_PORT}:${TALK_PORT}/tcp
- ${TALK_PORT}:${TALK_PORT}/udp
environment:
- NC_DOMAIN=${NC_DOMAIN}
- TURN_SECRET=${TURN_SECRET}
- SIGNALING_SECRET=${SIGNALING_SECRET}
- JANUS_API_KEY=${JANUS_API_KEY}
- TZ=${TIMEZONE}
stop_grace_period: 10s
- TALK_PORT=${TALK_PORT}
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-clamav:
container_name: nextcloud-aio-clamav
image: nextcloud/aio-clamav:latest
profiles: ["clamav"]
image: nextcloud/aio-clamav:${IMAGE_TAG}
environment:
- TZ=${TIMEZONE}
- CLAMD_STARTUP_TIMEOUT=90
volumes:
- nextcloud_aio_clamav:/var/lib/clamav:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-onlyoffice:
container_name: nextcloud-aio-onlyoffice
image: nextcloud/aio-onlyoffice:latest
profiles: ["onlyoffice"]
image: nextcloud/aio-onlyoffice:${IMAGE_TAG}
environment:
- TZ=${TIMEZONE}
- JWT_ENABLED=true
- JWT_HEADER=AuthorizationJwt
- JWT_SECRET=${ONLYOFFICE_SECRET}
volumes:
- nextcloud_aio_onlyoffice:/var/lib/onlyoffice:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-imaginary:
profiles: ["imaginary"]
image: nextcloud/aio-imaginary:${IMAGE_TAG}
environment:
- TZ=${TIMEZONE}
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-fulltextsearch:
profiles: ["fulltextsearch"]
image: nextcloud/aio-fulltextsearch:${IMAGE_TAG}
environment:
- TZ=${TIMEZONE}
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms1024M -Xmx1024M
volumes:
- nextcloud_aio_elasticsearch:/usr/share/elasticsearch/data:rw
restart: unless-stopped
networks:
- nextcloud-aio
@@ -156,14 +195,20 @@ volumes:
name: nextcloud_aio_apache
nextcloud_aio_clamav:
name: nextcloud_aio_clamav
nextcloud_aio_collabora_fonts:
name: nextcloud_aio_collabora_fonts
nextcloud_aio_database:
name: nextcloud_aio_database
nextcloud_aio_database_dump:
name: nextcloud_aio_database_dump
nextcloud_aio_elasticsearch:
name: nextcloud_aio_elasticsearch
nextcloud_aio_nextcloud:
name: nextcloud_aio_nextcloud
nextcloud_aio_onlyoffice:
name: nextcloud_aio_onlyoffice
nextcloud_aio_redis:
name: nextcloud_aio_redis
nextcloud_aio_nextcloud_data:
name: nextcloud_aio_nextcloud_data

View File

@@ -5,12 +5,14 @@ You can run the containers that are build for AIO with docker-compose. This come
### Advantages
- You can run it without a container having access to the docker socket
- You can modify all values on your own
- You can run the containers with docker swarm
### Disadvantages
- You loose the AIO interface
- You loose update notifications and automatic updates
- You loose all AIO backup and restore features
- You lose the AIO interface
- You lose update notifications and automatic updates
- You lose all AIO backup and restore features
- You need to know what you are doing, especially when modifying the docker-compose file
- For updating, you need to strictly follow the at the bottom described update routine
- Probably more
## How to use this?
@@ -19,23 +21,29 @@ First, install docker and docker-compose if not already done. Then simply run th
git clone https://github.com/nextcloud/all-in-one.git
cd all-in-one/manual-install
```
Then copy the sample.conf to a new file, e.g. `cp sample.conf my.conf`, open the new conf file, e.g. with `nano my.conf`, edit all values that are marked with `# TODO!`, close and save the file.
Then copy the sample.conf to default environment file, e.g. `cp sample.conf .env`, open the new conf file, e.g. with `nano .env`, edit all values that are marked with `# TODO!`, close and save the file. For arm64 support use `IMAGE_TAG=latest-arm64` (Note: there is no clamav image for arm64).
Now copy the provided yaml file to a docker-compose file by running on x64 `cp latest.yml docker-compose.yml` and on arm64 `cp latest-arm64.yml docker-compose.yml`.
Now copy the provided yaml file to a docker-compose file by running `cp latest.yml docker-compose.yml`.
Now you should be ready to go with `sudo docker-compose --env-file my.conf up`.
Now you should be ready to go with `sudo docker-compose up`.
## Docker profiles
The default profile of `latest.yml` only provide the minimum necessary services: nextcloud, database, redis and apache. To get optional services collabora, onlyoffice, talk, clamav, imaginary or fulltextsearch use additional arguments for each of them, for example `--profile collabora`.
For a complete all-in-one with collabora use `sudo docker-compose --profile collabora --profile talk --profile clamav --profile imaginary --profile fulltextsearch up`.
## How to update?
Since the AIO containers may change in the future, it is highly recommended to strictly follow the following procedure whenever you want to upgrade your containers.
1. Run `sudo docker-compose --env-file my.conf down` to stop all running containers
1. If your previous copy of `sample.conf` is named `my.conf`, run `mv my.conf .env` in order to rename the file to `.env`.
1. Run `sudo docker-compose down` to stop all running containers
1. Back up all important files and folders
1. Run `git pull` in order to get the updated yaml files from the repository. Now bring your `docker-compose.yml` file up-to-date with the updated one from the repository. You can use `diff docker-compose.yml latest.yml` on x64 and `diff docker-compose.yml latest-arm64.yml` on arm64 for comparing.
1. Also have a look at the `sample.conf` if any variable was added or renamed and add that to your conf file as well. Here may help the diff command as well.
1. After the file update was successful, simply run `sudo docker-compose --env-file my.conf pull` to pull the new images.
1. At the end run `sudo docker-compose --env-file my.conf up` in order to start and update the containers with the new configuration.
1. After the file update was successful, simply run `sudo docker-compose pull` to pull the new images.
1. At the end run `sudo docker-compose up` in order to start and update the containers with the new configuration.
## FAQ
### Backup and restore?
If you leave `NEXTLOUD_DATADIR` in your conf file at the default value of `nextcloud_aio_nextcloud_data` and don't modify the yaml file, all data will be stored inside docker volumes which are on Linux by default located here: `/var/lib/docker/volumes`. Simply backing up this location should be a valid backup solution. Then you can also easily restore in case something bad happens. However if you change `NEXTLOUD_DATADIR` to a path like `/mnt/ncdata`, you obviously need to back up this location, too because the Nextcloud data will be stored there. The same applies to any change to the yaml file.
If you leave `NEXTCLOUD_DATADIR` in your conf file at the default value of `nextcloud_aio_nextcloud_data` and don't modify the yaml file, all data will be stored inside docker volumes which are on Linux by default located here: `/var/lib/docker/volumes`. Simply backing up this location should be a valid backup solution. Then you can also easily restore in case something bad happens. However if you change `NEXTCLOUD_DATADIR` to a path like `/mnt/ncdata`, you obviously need to back up this location, too because the Nextcloud data will be stored there. The same applies to any change to the yaml file.
Obviously you also need to back up the conf file and the yaml file if you modified it.

View File

@@ -1,18 +1,34 @@
IMAGE_TAG=latest # Version of docker images, should be latest or latest-arm64. Note: latest-arm64 has no clamav support
AIO_TOKEN=123456 # Has no function but needs to be set!
AIO_URL=localhost # Has no function but needs to be set!
APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a reverse proxy and if that is running on the same host and using localhost to connect
APACHE_MAX_SIZE=10737418240 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a reverse proxy.
CLAMAV_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
CLAMAV_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically. Note: latest-arm64 has no clamav support
COLLABORA_DICTIONARIES="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" # You can change this in order to enable other dictionaries for collabora
COLLABORA_ENABLED=yes # Setting this to "yes" enables the option in Nextcloud automatically.
DAILY_BACKUP_RUNNING=no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup.
COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.
DATABASE_PASSWORD= # TODO! This needs to be a unique and good password!
FULLTEXTSEARCH_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
IMAGINARY_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
JANUS_API_KEY= # TODO! This needs to be a unique and good password!
NC_DOMAIN=yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.
NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.
NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.
NEXTCLOUD_DATADIR=nextcloud_aio_nextcloud_data # You can change this to e.g. "/mnt/ncdata" to map it to a location on your host. It needs to be adjusted before the first startup and never afterwards!
NEXTCLOUD_MAX_TIME=3600 # This allows to change the upload time limit of the Nextcloud container
NEXTCLOUD_MEMORY_LIMIT=512M # This allows to change the PHP memory limit of the Nextcloud container
NEXTCLOUD_MOUNT=/mnt/ # This allows the Nextcloud container to access directories on the host. It must never be equal to the value of NEXTCLOUD_DATADIR!
NEXTCLOUD_PASSWORD= # TODO! This is the password of the initially created Nextcloud admin with username "admin".
NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts" # Allows to modify the Nextcloud apps that are installed on starting AIO the first time
NEXTCLOUD_TRUSTED_CACERTS_DIR=/usr/local/share/ca-certificates/my-custom-ca # Nextcloud container will trust all the Certification Authorities, whose certificates are included in the given directory.
NEXTCLOUD_UPLOAD_LIMIT=10G # This allows to change the upload limit of the Nextcloud container
ONLYOFFICE_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
ONLYOFFICE_SECRET= # TODO! This needs to be a unique and good password!
REDIS_PASSWORD= # TODO! This needs to be a unique and good password!
SIGNALING_SECRET= # TODO! This needs to be a unique and good password!
TALK_ENABLED=yes # Setting this to "yes" enables the option in Nextcloud automatically.
TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
TIMEZONE=Europe/Berlin # TODO! This is the timezone that your containers will use.
TURN_SECRET= # TODO! This needs to be a unique and good password!
UPDATE_NEXTCLOUD_APPS=no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup on saturdays.

View File

@@ -1,15 +1,21 @@
#!/bin/bash
jq -c . ./php/containers.json > /tmp/containers.json
sed -i 's|","location":"|:|g' /tmp/containers.json
sed -i 's|aio_services_v1|services|g' /tmp/containers.json
sed -i 's|","destination":"|:|g' /tmp/containers.json
sed -i 's|","writeable":false|:ro"|g' /tmp/containers.json
sed -i 's|","writeable":true|:rw"|g' /tmp/containers.json
sed -i 's|","port_number":"|:|g' /tmp/containers.json
sed -i 's|","protocol":"|/|g' /tmp/containers.json
sed -i 's|"ip_binding":":|"ip_binding":"|g' /tmp/containers.json
cat /tmp/containers.json
OUTPUT="$(cat /tmp/containers.json)"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[].internalPorts)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[].secrets)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[] | select(.identifier == "nextcloud-aio-watchtower"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[] | select(.identifier == "nextcloud-aio-domaincheck"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[] | select(.identifier == "nextcloud-aio-borgbackup"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].internal_port)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].secrets)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].devices)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | 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"))')"
snap install yq
mkdir -p ./manual-install
@@ -17,24 +23,18 @@ echo "$OUTPUT" | yq -P > ./manual-install/containers.yml
cd manual-install || exit
sed -i "s|'||g" containers.yml
sed -i 's|production:|services:|' containers.yml
sed -i 's|- identifier:| container_name:|' containers.yml
sed -i 's|restartPolicy:|restart:|' containers.yml
sed -i 's|environmentVariables:|environment:|' containers.yml
sed -i '/displayName:/d' containers.yml
sed -i 's|maxShutdownTime:|stop_grace_period:|' containers.yml
sed -i '/display_name:/d' containers.yml
sed -i '/stop_grace_period:/s/$/s/' containers.yml
sed -i 's|containerName:|image:|' containers.yml
sed -i '/: \[\]/d' containers.yml
sed -i 's|dependsOn:|depends_on:|' containers.yml
sed -i 's|- name: |- |' containers.yml
sed -i 's|- source: |- |' containers.yml
sed -i 's|- ip_binding: |- |' containers.yml
TCP="$(grep -oP '[%A-Z0-9_]+/tcp' containers.yml | sort -u)"
mapfile -t TCP <<< "$TCP"
for port in "${TCP[@]}"
do
solve_port="${port%%/tcp}"
sed -i "s|$port|$solve_port:$solve_port/tcp|" containers.yml
sed -i "s|$solve_port/tcp|$solve_port:$solve_port/tcp|" containers.yml
done
UDP="$(grep -oP '[%A-Z0-9_]+/udp' containers.yml | sort -u)"
@@ -42,10 +42,11 @@ mapfile -t UDP <<< "$UDP"
for port in "${UDP[@]}"
do
solve_port="${port%%/udp}"
sed -i "s|$port|$solve_port:$solve_port/udp|" containers.yml
sed -i "s|$solve_port/udp|$solve_port:$solve_port/udp|" containers.yml
done
rm -f sample.conf
echo 'IMAGE_TAG=latest # Version of docker images, should be latest or latest-arm64. Note: latest-arm64 has no clamav support' >> sample.conf
VARIABLES="$(grep -oP '%[A-Z_a-z0-6]+%' containers.yml | sort -u)"
mapfile -t VARIABLES <<< "$VARIABLES"
for variable in "${VARIABLES[@]}"
@@ -57,17 +58,30 @@ do
done
sed -i 's|_ENABLED=|_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.|' sample.conf
sed -i 's|CLAMAV_ENABLED=no.*|CLAMAV_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically. Note: latest-arm64 has no clamav support|' sample.conf
sed -i 's|TALK_ENABLED=no|TALK_ENABLED=yes|' sample.conf
sed -i 's|COLLABORA_ENABLED=no|COLLABORA_ENABLED=yes|' sample.conf
sed -i 's|COLLABORA_DICTIONARIES=|COLLABORA_DICTIONARIES="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" # You can change this in order to enable other dictionaries for collabora|' sample.conf
sed -i 's|NEXTCLOUD_DATADIR=|NEXTCLOUD_DATADIR=nextcloud_aio_nextcloud_data # You can change this to e.g. "/mnt/ncdata" to map it to a location on your host. It needs to be adjusted before the first startup and never afterwards!|' sample.conf
sed -i 's|NEXTCLOUD_MOUNT=|NEXTCLOUD_MOUNT=/mnt/ # This allows the Nextcloud container to access directories on the host. It must never be equal to the value of NEXTCLOUD_DATADIR!|' sample.conf
sed -i 's|DAILY_BACKUP_RUNNING=|DAILY_BACKUP_RUNNING=no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup.|' sample.conf
sed -i 's|NEXTCLOUD_UPLOAD_LIMIT=|NEXTCLOUD_UPLOAD_LIMIT=10G # This allows to change the upload limit of the Nextcloud container|' sample.conf
sed -i 's|NEXTCLOUD_MEMORY_LIMIT=|NEXTCLOUD_MEMORY_LIMIT=512M # This allows to change the PHP memory limit of the Nextcloud container|' sample.conf
sed -i 's|APACHE_MAX_SIZE=|APACHE_MAX_SIZE=10737418240 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT|' sample.conf
sed -i 's|NEXTCLOUD_MAX_TIME=|NEXTCLOUD_MAX_TIME=3600 # This allows to change the upload time limit of the Nextcloud container|' sample.conf
sed -i 's|NEXTCLOUD_TRUSTED_CACERTS_DIR=|NEXTCLOUD_TRUSTED_CACERTS_DIR=/usr/local/share/ca-certificates/my-custom-ca # Nextcloud container will trust all the Certification Authorities, whose certificates are included in the given directory.|' sample.conf
sed -i 's|UPDATE_NEXTCLOUD_APPS=|UPDATE_NEXTCLOUD_APPS=no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup on saturdays.|' sample.conf
sed -i 's|APACHE_PORT=|APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a reverse proxy.|' sample.conf
sed -i 's|APACHE_IP_BINDING=|APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a reverse proxy and if that is running on the same host and using localhost to connect|' sample.conf
sed -i 's|TALK_PORT=|TALK_PORT=3478 # This allows to adjust the port that the talk container is using.|' sample.conf
sed -i 's|AIO_TOKEN=|AIO_TOKEN=123456 # Has no function but needs to be set!|' sample.conf
sed -i 's|AIO_URL=|AIO_URL=localhost # Has no function but needs to be set!|' sample.conf
sed -i 's|NC_DOMAIN=|NC_DOMAIN=yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.|' sample.conf
sed -i 's|NEXTCLOUD_PASSWORD=|NEXTCLOUD_PASSWORD= # TODO! This is the password of the initially created Nextcloud admin with username "admin".|' sample.conf
sed -i 's|TIMEZONE=|TIMEZONE=Europe/Berlin # TODO! This is the timezone that your containers will use.|' sample.conf
sed -i 's|COLLABORA_SECCOMP_POLICY=|COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.|' sample.conf
sed -i 's|NEXTCLOUD_STARTUP_APPS=|NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts" # Allows to modify the Nextcloud apps that are installed on starting AIO the first time|' sample.conf
sed -i 's|NEXTCLOUD_ADDITIONAL_APKS=|NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.|' sample.conf
sed -i 's|NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=|NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.|' sample.conf
sed -i 's|=$|= # TODO! This needs to be a unique and good password!|' sample.conf
cat sample.conf
@@ -81,6 +95,11 @@ do
if [ "$name" != "nextcloud-aio-apache" ]; then
OUTPUT="$(echo "$OUTPUT" | sed "/ $name:/i\ ")"
fi
if ! echo "$name" | grep "apache$" && ! echo "$name" | grep "database$" && ! echo "$name" | grep "nextcloud$" && ! echo "$name" | grep "redis$"; then
sed -i '/container_name/d' containers.yml
SLIM_NAME="${name##nextcloud-aio-}"
OUTPUT="$(echo "$OUTPUT" | sed "/container_name: $name$/a\ \ \ \ profiles:\ \[\"$SLIM_NAME\"\]")"
fi
done
OUTPUT="$(echo "$OUTPUT" | sed "/restart: /a\ \ \ \ networks:\n\ \ \ \ \ \ - nextcloud-aio")"
@@ -90,6 +109,9 @@ echo "" >> containers.yml
echo "$OUTPUT" >> containers.yml
sed -i '/container_name/d' containers.yml
sed -i 's|^ $||' containers.yml
VOLUMES="$(grep -oP 'nextcloud_aio_[a-z_]+' containers.yml | sort -u)"
mapfile -t VOLUMES <<< "$VOLUMES"
echo "" >> containers.yml
@@ -109,15 +131,6 @@ networks:
NETWORK
cat containers.yml > latest.yml
sed -i '/image:/s/$/:latest/' latest.yml
cat containers.yml > latest-arm64.yml
sed -i '/image:/s/$/:latest-arm64/' latest-arm64.yml
sed -i '/ nextcloud-aio-clamav:/,/^$/d' latest-arm64.yml
sed -i '/nextcloud[-_]aio[-_]clamav/d' latest-arm64.yml
sed -i '/CLAMAV_ENABLED/d' latest-arm64.yml
sed -i '/ nextcloud-aio-onlyoffice:/,/^$/d' latest-arm64.yml
sed -i '/nextcloud[-_]aio[-_]onlyoffice/d' latest-arm64.yml
sed -i '/ONLYOFFICE_ENABLED/d' latest-arm64.yml
sed -i "/image:/s/$/:\${IMAGE_TAG}/" latest.yml
rm containers.yml

View File

@@ -1,9 +1,10 @@
# How to migrate from an already existing Nextcloud installation to Nextcloud AIO?
There are basically two ways how to migrate from an already existing Nextcloud installation to Nextcloud AIO:
There are basically three ways how to migrate from an already existing Nextcloud installation to Nextcloud AIO:
1. Migrate only the files which is the easiest way
1. Migrate the files and the database which is much more complicated
1. Migrate the files and the database which is much more complicated (and doesn't work on former snap installations)
1. Use the user_migration app that allows to migrate some of the user's data from a former instance to a new instance but needs to be done manually for each user
## Migrate only the files
**Please note**: If you used groupfolders or encrypted your files before, you will need to restore the database, as well!
@@ -16,11 +17,10 @@ The procedure for migrating only the files works like this:
1. Restore the datadirectory of your former instance into the following directory: `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/`
1. Next, run `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` to apply the correct permissions
1. Start the containers again and wait until all containers are running
1. Run `sudo docker exec -it nextcloud-aio-nextcloud php occ files:scan-app-data && sudo docker exec -it nextcloud-aio-nextcloud php occ files:scan --all` in order to scan all files in the datadirectory.
1. Run `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan-app-data && sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan --all` in order to scan all files in the datadirectory.
## Migrate the files and the database
**Please note**: this is much more complicated than migrating only the files and also not as failproof so be warned!<br>
Also, you will currently not be able to use local external storage in Nextcloud AIO since that is not supported, yet. See https://github.com/nextcloud/all-in-one/issues/76
**Please note**: this is much more complicated than migrating only the files and also not as failproof so be warned! Also, this will not work on former snap installations as the snap is read-only and thus you cannot install the necessary `pdo_pgsql` PHP extension.
The procedure for migrating the files and the database works like this:
1. Make sure that your old instance is on exactly the same version like the version used in Nextcloud AIO. (e.g. 23.0.0) You can find the used version here: [click here](https://github.com/nextcloud/all-in-one/search?l=Dockerfile&q=NEXTCLOUD_VERSION&type=). If not, simply upgrade your former installation to that version or wait until the version used in Nextcloud AIO got updated to the same version of your former installation or the other way around.
@@ -44,8 +44,8 @@ The procedure for migrating the files and the database works like this:
```
occ db:convert-type --all-apps --password "$PG_PASSWORD" pgsql "$PG_USER" 127.0.0.1 "$PG_DATABASE"
```
**Please note:** You might need to change the ip-address `127.0.0.1` based on your exact installation.<br>
Further information on the conversion is additionally available here: https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/db_conversion.html#converting-database-type
**Please note:** You might need to change the ip-address `127.0.0.1` and adjust the occ command (`occ`) based on your exact installation. Further information on the conversion is additionally available here: https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/db_conversion.html#converting-database-type<br>
**Troubleshooting:** If you get an error that it could not find a driver for the conversion, you most likely need to install the PHP extension `pdo_pgsql`.
1. Hopefully does the conversion finish successfully. If not, simply restore your old Nextcloud installation from backup. If yes, you should now log in to your Nextcloud and test if everything works and if all data has been converted successfully.
1. If everything works as expected, feel free to continue with the steps below.
1. Now, run a pg_dump to get an export of your current database. Something like the following command should work:
@@ -64,20 +64,23 @@ The procedure for migrating the files and the database works like this:
1. Type in `local::/your/old/datadir/` which should bring up the exact line where you need to modify the path to use the one used in Nextcloud AIO, instead.
1. Change it to look like this: `local::/mnt/ncdata/`.
1. Now save the file by pressing `[CTRL] + [o]` then `[ENTER]` and close nano by pressing `[CTRL] + [x]`
1. In order to make sure that everything is good, you can now run `grep "/your/old/datadir" database-dump.sql` which should not bring up further results.
1. In order to make sure that everything is good, you can now run `grep "/your/old/datadir" database-dump.sql` which should not bring up further results.<br>
1. **Please note:** Unfortunately it is not possible to import a database dump from a former database owner with the name `nextcloud`. You can check if that is the case with this command: `grep "Name: oc_appconfig; Type: TABLE; Schema: public; Owner:" database-dump.sql | grep -oP 'Owner:.*$' | sed 's|Owner:||;s| ||g'`. If it returns `nextcloud`, you need to rename the owner in the dump file manually. A command like the following should work, however please note that it is possible that it will overwrite wrong lines. You can thus first check which lines it will change with `grep "Owner: nextcloud$" database-dump.sql`. If only correct looking lines get returned, feel free to change them with `sed -i 's|Owner: nextcloud$|Owner: ncadmin|' database-dump.sql`.
1. Next, copy the database dump into the correct place and prepare the database container which will import from the database dump automatically the next container start:
```
sudo rm /var/lib/docker/volumes/nextcloud_aio_database_dump/_data/database-dump.sql
sudo cp database-dump.sql /var/lib/docker/volumes/nextcloud_aio_database_dump/_data/
sudo chmod 777 /var/lib/docker/volumes/nextcloud_aio_database_dump/_data/database-dump.sql
sudo rm -r /var/lib/docker/volumes/nextcloud_aio_database/_data/*
sudo rm /var/lib/docker/volumes/nextcloud_aio_database_dump/_data/initial-cleanup-done
```
1. If the commands above were executed successfully, restore the datadirectory of your former instance into the following directory: `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/`
1. Next, run `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*`to apply the correct permissions
1. If the commands above were executed successfully, restore the datadirectory of your former instance into your datadirectory: `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/`. Be aware if you have changed the standard path of your datadirectory like described [here](https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir).
1. Next, run `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*`to apply the correct permissions on the datadirectory.
1. Edit the Nextcloud AIO config.php file that is stored in `/var/lib/docker/volumes/nextcloud_aio_nextcloud/_data/config/config.php` and modify only `passwordsalt`, `secret`, `instanceid` and set it to the old values that you used on your old installation. If you are brave, feel free to modify further values e.g. add your old LDAP config or S3 storage config. (Some things like Mail server config can be added back using Nextcloud's webinterface later on).
1. When you are done and saved your changes to the file, finally start the containers again and wait until all containers are running.
1. Now run `sudo docker exec -it nextcloud-aio-nextcloud php occ maintenance:data-fingerprint`.
1. As last step, install all apps again that were installed before on your old instance by using the webinterface.
Now the whole Nextcloud instance should work again.<br>
If not, feel free to restore the AIO instance from backup and start at step 8 again.
## Use the user_migration app
A new way since the Nextcloud update to 24 is to use the new [user_migration app](https://apps.nextcloud.com/apps/user_migration#app-gallery). It allows to export the most important data on one instance and import it on a different Nextcloud instance. For that, you need to install and enable the user_migration app on your old instance, trigger the export for the user, create the user on the new instance, log in with that user and import the archive that was created during the export. This then needs to be done for each user that you want to migrate.

19
multiple-instances.md Normal file
View File

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

View File

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

187
php/composer.lock generated
View File

@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "46e4dcf2df4e1a85aba17d664cacd815",
"content-hash": "7a318338d9e074d6f02e1fba5b3dda24",
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "7.4.5",
"version": "7.5.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82"
"reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
"reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"shasum": ""
},
"require": {
@@ -32,10 +32,10 @@
"psr/http-client-implementation": "1.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"bamarni/composer-bin-plugin": "^1.8.1",
"ext-curl": "*",
"php-http/client-integration-tests": "^3.0",
"phpunit/phpunit": "^8.5.5 || ^9.3.5",
"phpunit/phpunit": "^8.5.29 || ^9.5.23",
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
@@ -45,8 +45,12 @@
},
"type": "library",
"extra": {
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "7.4-dev"
"dev-master": "7.5-dev"
}
},
"autoload": {
@@ -112,7 +116,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.4.5"
"source": "https://github.com/guzzle/guzzle/tree/7.5.0"
},
"funding": [
{
@@ -128,20 +132,20 @@
"type": "tidelift"
}
],
"time": "2022-06-20T22:16:13+00:00"
"time": "2022-08-28T15:39:27+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "1.5.1",
"version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
"reference": "b94b2807d85443f9719887892882d0329d1e2598"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
"reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
"url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
"reference": "b94b2807d85443f9719887892882d0329d1e2598",
"shasum": ""
},
"require": {
@@ -196,7 +200,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/1.5.1"
"source": "https://github.com/guzzle/promises/tree/1.5.2"
},
"funding": [
{
@@ -212,20 +216,20 @@
"type": "tidelift"
}
],
"time": "2021-10-22T20:56:57+00:00"
"time": "2022-08-28T14:55:35+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.4.0",
"version": "2.4.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "13388f00956b1503577598873fffb5ae994b5737"
"reference": "67c26b443f348a51926030c83481b85718457d3d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737",
"reference": "13388f00956b1503577598873fffb5ae994b5737",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d",
"reference": "67c26b443f348a51926030c83481b85718457d3d",
"shasum": ""
},
"require": {
@@ -239,15 +243,19 @@
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"bamarni/composer-bin-plugin": "^1.8.1",
"http-interop/http-factory-tests": "^0.9",
"phpunit/phpunit": "^8.5.8 || ^9.3.10"
"phpunit/phpunit": "^8.5.29 || ^9.5.23"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "2.4-dev"
}
@@ -311,7 +319,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.4.0"
"source": "https://github.com/guzzle/psr7/tree/2.4.3"
},
"funding": [
{
@@ -327,7 +335,7 @@
"type": "tidelift"
}
],
"time": "2022-06-20T21:43:11+00:00"
"time": "2022-10-26T14:07:24+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -389,25 +397,26 @@
},
{
"name": "laravel/serializable-closure",
"version": "v1.2.0",
"version": "v1.2.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
"reference": "09f0e9fb61829f628205b7c94906c28740ff9540"
"reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540",
"reference": "09f0e9fb61829f628205b7c94906c28740ff9540",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/47afb7fae28ed29057fdca37e16a84f90cc62fae",
"reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae",
"shasum": ""
},
"require": {
"php": "^7.3|^8.0"
},
"require-dev": {
"pestphp/pest": "^1.18",
"phpstan/phpstan": "^0.12.98",
"symfony/var-dumper": "^5.3"
"nesbot/carbon": "^2.61",
"pestphp/pest": "^1.21.3",
"phpstan/phpstan": "^1.8.2",
"symfony/var-dumper": "^5.4.11"
},
"type": "library",
"extra": {
@@ -444,7 +453,7 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
"time": "2022-05-16T17:09:47+00:00"
"time": "2022-09-08T13:45:54+00:00"
},
{
"name": "nikic/fast-route",
@@ -1128,30 +1137,30 @@
},
{
"name": "slim/csrf",
"version": "1.2.1",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/slimphp/Slim-Csrf.git",
"reference": "ee811a258ecee807846aefc51aabc1963ae0a400"
"reference": "ebaaf295fd6d7224078d8ae3bba45329b31798c7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/slimphp/Slim-Csrf/zipball/ee811a258ecee807846aefc51aabc1963ae0a400",
"reference": "ee811a258ecee807846aefc51aabc1963ae0a400",
"url": "https://api.github.com/repos/slimphp/Slim-Csrf/zipball/ebaaf295fd6d7224078d8ae3bba45329b31798c7",
"reference": "ebaaf295fd6d7224078d8ae3bba45329b31798c7",
"shasum": ""
},
"require": {
"php": "^7.3|^8.0",
"php": "^7.4 || ^8.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0",
"psr/http-server-handler": "^1.0",
"psr/http-server-middleware": "^1.0"
},
"require-dev": {
"phpspec/prophecy": "^1.12",
"phpspec/prophecy": "^1.15",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "^3.5.8"
"squizlabs/php_codesniffer": "^3.7"
},
"type": "library",
"autoload": {
@@ -1171,7 +1180,7 @@
}
],
"description": "Slim Framework 4 CSRF protection PSR-15 middleware",
"homepage": "http://slimframework.com",
"homepage": "https://www.slimframework.com",
"keywords": [
"csrf",
"framework",
@@ -1180,22 +1189,22 @@
],
"support": {
"issues": "https://github.com/slimphp/Slim-Csrf/issues",
"source": "https://github.com/slimphp/Slim-Csrf/tree/1.2.1"
"source": "https://github.com/slimphp/Slim-Csrf/tree/1.3.0"
},
"time": "2021-02-04T15:37:21+00:00"
"time": "2022-11-05T19:27:53+00:00"
},
{
"name": "slim/slim",
"version": "4.10.0",
"version": "4.11.0",
"source": {
"type": "git",
"url": "https://github.com/slimphp/Slim.git",
"reference": "0dfc7d2fdf2553b361d864d51af3fe8a6ad168b0"
"reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/slimphp/Slim/zipball/0dfc7d2fdf2553b361d864d51af3fe8a6ad168b0",
"reference": "0dfc7d2fdf2553b361d864d51af3fe8a6ad168b0",
"url": "https://api.github.com/repos/slimphp/Slim/zipball/b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7",
"reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7",
"shasum": ""
},
"require": {
@@ -1210,21 +1219,21 @@
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"require-dev": {
"adriansuter/php-autoload-override": "^1.2",
"adriansuter/php-autoload-override": "^1.3",
"ext-simplexml": "*",
"guzzlehttp/psr7": "^2.1",
"guzzlehttp/psr7": "^2.4",
"httpsoft/http-message": "^1.0",
"httpsoft/http-server-request": "^1.0",
"laminas/laminas-diactoros": "^2.8",
"laminas/laminas-diactoros": "^2.17",
"nyholm/psr7": "^1.5",
"nyholm/psr7-server": "^1.0",
"phpspec/prophecy": "^1.15",
"phpspec/prophecy-phpunit": "^2.0",
"phpstan/phpstan": "^1.4",
"phpstan/phpstan": "^1.8",
"phpunit/phpunit": "^9.5",
"slim/http": "^1.2",
"slim/psr7": "^1.5",
"squizlabs/php_codesniffer": "^3.6"
"squizlabs/php_codesniffer": "^3.7"
},
"suggest": {
"ext-simplexml": "Needed to support XML format in BodyParsingMiddleware",
@@ -1297,7 +1306,7 @@
"type": "tidelift"
}
],
"time": "2022-03-14T14:18:23+00:00"
"time": "2022-11-06T16:33:39+00:00"
},
{
"name": "slim/twig-view",
@@ -1366,25 +1375,25 @@
},
{
"name": "symfony/deprecation-contracts",
"version": "v3.0.1",
"version": "v3.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
"reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
"reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3",
"reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3",
"shasum": ""
},
"require": {
"php": ">=8.0.2"
"php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.0-dev"
"dev-main": "3.3-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -1413,7 +1422,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1"
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0"
},
"funding": [
{
@@ -1429,20 +1438,20 @@
"type": "tidelift"
}
],
"time": "2022-01-02T09:55:41+00:00"
"time": "2022-11-25T10:21:52+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
"shasum": ""
},
"require": {
@@ -1457,7 +1466,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1495,7 +1504,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
},
"funding": [
{
@@ -1511,20 +1520,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"shasum": ""
},
"require": {
@@ -1539,7 +1548,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1578,7 +1587,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
},
"funding": [
{
@@ -1594,20 +1603,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
"reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1"
"reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1",
"reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
"reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
"shasum": ""
},
"require": {
@@ -1616,7 +1625,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1657,7 +1666,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
},
"funding": [
{
@@ -1673,20 +1682,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "twig/twig",
"version": "v3.4.1",
"version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342"
"reference": "3ffcf4b7d890770466da3b2666f82ac054e7ec72"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/e939eae92386b69b49cfa4599dd9bead6bf4a342",
"reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/3ffcf4b7d890770466da3b2666f82ac054e7ec72",
"reference": "3ffcf4b7d890770466da3b2666f82ac054e7ec72",
"shasum": ""
},
"require": {
@@ -1701,7 +1710,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.4-dev"
"dev-master": "3.5-dev"
}
},
"autoload": {
@@ -1737,7 +1746,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.4.1"
"source": "https://github.com/twigphp/Twig/tree/v3.5.0"
},
"funding": [
{
@@ -1749,7 +1758,7 @@
"type": "tidelift"
}
],
"time": "2022-05-17T05:48:52+00:00"
"time": "2022-12-27T12:28:18+00:00"
}
],
"packages-dev": [],
@@ -1759,7 +1768,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": "^8.0",
"php": "^8.1",
"ext-json": "*",
"ext-sodium": "*",
"ext-curl": "*",

View File

@@ -1,57 +1,77 @@
{
"type": "object",
"description": "AIO containers definition schema",
"additionalProperties": false,
"minProperties": 1,
"required": ["aio_services_v1"],
"properties": {
"production": {
"aio_services_v1": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"minProperties": 11,
"minProperties": 2,
"required": ["image", "container_name"],
"properties": {
"containerName": {
"image": {
"type": "string"
},
"dependsOn": {
"depends_on": {
"type": "array",
"items": {
"type": "string"
}
},
"displayName": {
"display_name": {
"type": "string"
},
"environmentVariables": {
"environment": {
"type": "array",
"items": {
"type": "string"
}
},
"identifier": {
"container_name": {
"type": "string"
},
"internalPorts": {
"type": "array",
"items": {
"type": "string"
}
"internal_port": {
"type": "string"
},
"maxShutdownTime": {
"stop_grace_period": {
"type": "integer"
},
"ports": {
"type": "array",
"items": {
"type": "string"
"type": "object",
"additionalProperties": false,
"minProperties": 3,
"properties": {
"ip_binding": {
"type": "string"
},
"port_number": {
"type": "string"
},
"protocol": {
"type": "string"
}
}
}
},
"restartPolicy": {
"restart": {
"type": "string"
},
"secrets": {
"type": "array"
"type": "array",
"items": {
"type": "string"
}
},
"devices": {
"type": "array",
"items": {
"type": "string"
}
},
"volumes": {
"type": "array",
@@ -60,10 +80,10 @@
"additionalProperties": false,
"minProperties": 3,
"properties": {
"location": {
"destination": {
"type": "string"
},
"name": {
"source": {
"type": "string"
},
"writeable": {

View File

@@ -1,93 +1,90 @@
{
"production": [
"aio_services_v1": [
{
"identifier": "nextcloud-aio-apache",
"dependsOn": [
"container_name": "nextcloud-aio-apache",
"depends_on": [
"nextcloud-aio-onlyoffice",
"nextcloud-aio-collabora",
"nextcloud-aio-clamav",
"nextcloud-aio-talk",
"nextcloud-aio-nextcloud"
],
"displayName": "Apache",
"containerName": "nextcloud/aio-apache",
"display_name": "Apache",
"image": "nextcloud/aio-apache",
"ports": [
"%APACHE_PORT%/tcp"
{
"ip_binding": "%APACHE_IP_BINDING%",
"port_number": "%APACHE_PORT%",
"protocol": "tcp"
}
],
"internalPorts": [
"%APACHE_PORT%"
],
"secrets": [],
"environmentVariables": [
"internal_port": "%APACHE_PORT%",
"environment": [
"NC_DOMAIN=%NC_DOMAIN%",
"NEXTCLOUD_HOST=nextcloud-aio-nextcloud",
"COLLABORA_HOST=nextcloud-aio-collabora",
"TALK_HOST=nextcloud-aio-talk",
"APACHE_PORT=%APACHE_PORT%",
"ONLYOFFICE_HOST=nextcloud-aio-onlyoffice",
"TZ=%TIMEZONE%"
"TZ=%TIMEZONE%",
"APACHE_MAX_SIZE=%APACHE_MAX_SIZE%",
"APACHE_MAX_TIME=%NEXTCLOUD_MAX_TIME%"
],
"volumes": [
{
"name": "nextcloud_aio_nextcloud",
"location": "/var/www/html",
"source": "nextcloud_aio_nextcloud",
"destination": "/var/www/html",
"writeable": false
},
{
"name": "nextcloud_aio_apache",
"location": "/mnt/data",
"source": "nextcloud_aio_apache",
"destination": "/mnt/data",
"writeable": true
}
],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
"restart": "unless-stopped"
},
{
"identifier": "nextcloud-aio-database",
"dependsOn": [],
"displayName": "Database",
"containerName": "nextcloud/aio-postgresql",
"ports": [],
"internalPorts": [
"5432"
],
"container_name": "nextcloud-aio-database",
"display_name": "Database",
"image": "nextcloud/aio-postgresql",
"internal_port": "5432",
"secrets": [
"DATABASE_PASSWORD"
],
"volumes": [
{
"name": "nextcloud_aio_database",
"location": "/var/lib/postgresql/data",
"source": "nextcloud_aio_database",
"destination": "/var/lib/postgresql/data",
"writeable": true
},
{
"name": "nextcloud_aio_database_dump",
"location": "/mnt/data",
"source": "nextcloud_aio_database_dump",
"destination": "/mnt/data",
"writeable": true
}
],
"environmentVariables": [
"environment": [
"POSTGRES_PASSWORD=%DATABASE_PASSWORD%",
"POSTGRES_DB=nextcloud_database",
"POSTGRES_USER=nextcloud",
"TZ=%TIMEZONE%",
"PGTZ=%TIMEZONE%"
],
"maxShutdownTime": 1800,
"restartPolicy": "unless-stopped"
"stop_grace_period": 1800,
"restart": "unless-stopped"
},
{
"identifier": "nextcloud-aio-nextcloud",
"dependsOn": [
"container_name": "nextcloud-aio-nextcloud",
"depends_on": [
"nextcloud-aio-database",
"nextcloud-aio-redis"
],
"displayName": "Nextcloud",
"containerName": "nextcloud/aio-nextcloud",
"ports": [],
"internalPorts": [
"9000"
"nextcloud-aio-redis",
"nextcloud-aio-clamav",
"nextcloud-aio-fulltextsearch",
"nextcloud-aio-imaginary"
],
"display_name": "Nextcloud",
"image": "nextcloud/aio-nextcloud",
"internal_port": "9000",
"secrets": [
"DATABASE_PASSWORD",
"REDIS_PASSWORD",
@@ -97,22 +94,27 @@
],
"volumes": [
{
"name": "nextcloud_aio_nextcloud",
"location": "/var/www/html",
"source": "nextcloud_aio_nextcloud",
"destination": "/var/www/html",
"writeable": true
},
{
"name": "%NEXTCLOUD_DATADIR%",
"location": "/mnt/ncdata",
"source": "%NEXTCLOUD_DATADIR%",
"destination": "/mnt/ncdata",
"writeable": true
},
{
"name": "%NEXTCLOUD_MOUNT%",
"location": "%NEXTCLOUD_MOUNT%",
"source": "%NEXTCLOUD_MOUNT%",
"destination": "%NEXTCLOUD_MOUNT%",
"writeable": true
},
{
"source": "%NEXTCLOUD_TRUSTED_CACERTS_DIR%",
"destination": "/usr/local/share/ca-certificates",
"writeable": false
}
],
"environmentVariables": [
"environment": [
"POSTGRES_HOST=nextcloud-aio-database",
"POSTGRES_PASSWORD=%DATABASE_PASSWORD%",
"POSTGRES_DB=nextcloud_database",
@@ -128,6 +130,7 @@
"OVERWRITEPROTOCOL=https",
"TURN_SECRET=%TURN_SECRET%",
"SIGNALING_SECRET=%SIGNALING_SECRET%",
"ONLYOFFICE_SECRET=%ONLYOFFICE_SECRET%",
"AIO_URL=%AIO_URL%",
"NEXTCLOUD_MOUNT=%NEXTCLOUD_MOUNT%",
"CLAMAV_ENABLED=%CLAMAV_ENABLED%",
@@ -137,226 +140,272 @@
"COLLABORA_HOST=nextcloud-aio-collabora",
"TALK_ENABLED=%TALK_ENABLED%",
"ONLYOFFICE_HOST=nextcloud-aio-onlyoffice",
"DAILY_BACKUP_RUNNING=%DAILY_BACKUP_RUNNING%",
"TZ=%TIMEZONE%"
"UPDATE_NEXTCLOUD_APPS=%UPDATE_NEXTCLOUD_APPS%",
"TZ=%TIMEZONE%",
"TALK_PORT=%TALK_PORT%",
"IMAGINARY_ENABLED=%IMAGINARY_ENABLED%",
"IMAGINARY_HOST=nextcloud-aio-imaginary",
"PHP_UPLOAD_LIMIT=%NEXTCLOUD_UPLOAD_LIMIT%",
"PHP_MEMORY_LIMIT=%NEXTCLOUD_MEMORY_LIMIT%",
"FULLTEXTSEARCH_ENABLED=%FULLTEXTSEARCH_ENABLED%",
"FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch",
"PHP_MAX_TIME=%NEXTCLOUD_MAX_TIME%",
"TRUSTED_CACERTS_DIR=%NEXTCLOUD_TRUSTED_CACERTS_DIR%",
"STARTUP_APPS=%NEXTCLOUD_STARTUP_APPS%",
"ADDITIONAL_APKS=%NEXTCLOUD_ADDITIONAL_APKS%",
"ADDITIONAL_PHP_EXTENSIONS=%NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS%"
],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
"restart": "unless-stopped",
"devices": [
"/dev/dri"
]
},
{
"identifier": "nextcloud-aio-redis",
"dependsOn": [],
"displayName": "Redis",
"containerName": "nextcloud/aio-redis",
"ports": [],
"internalPorts": [
"6379"
],
"environmentVariables": [
"container_name": "nextcloud-aio-redis",
"display_name": "Redis",
"image": "nextcloud/aio-redis",
"internal_port": "6379",
"environment": [
"REDIS_HOST_PASSWORD=%REDIS_PASSWORD%",
"TZ=%TIMEZONE%"
],
"volumes": [],
"secrets": [
"REDIS_PASSWORD"
"volumes": [
{
"source": "nextcloud_aio_redis",
"destination": "/data",
"writeable": true
}
],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
"secrets": [
"REDIS_PASSWORD",
"ONLYOFFICE_SECRET"
],
"restart": "unless-stopped"
},
{
"identifier": "nextcloud-aio-collabora",
"dependsOn": [],
"displayName": "Collabora",
"containerName": "nextcloud/aio-collabora",
"ports": [],
"internalPorts": [
"9980"
],
"environmentVariables": [
"container_name": "nextcloud-aio-collabora",
"display_name": "Collabora",
"image": "nextcloud/aio-collabora",
"internal_port": "9980",
"environment": [
"aliasgroup1=https://%NC_DOMAIN%:443",
"extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning",
"extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:home_mode.enable=true %COLLABORA_SECCOMP_POLICY% --o:remote_font_config.url=https://%NC_DOMAIN%/apps/richdocuments/settings/fonts.json",
"dictionaries=%COLLABORA_DICTIONARIES%",
"TZ=%TIMEZONE%"
],
"volumes": [],
"secrets": [],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
"volumes": [
{
"source": "nextcloud_aio_collabora_fonts",
"destination": "/opt/cool/systemplate/tmpfonts",
"writeable": true
}
],
"restart": "unless-stopped"
},
{
"identifier": "nextcloud-aio-talk",
"dependsOn": [],
"displayName": "Talk",
"containerName": "nextcloud/aio-talk",
"container_name": "nextcloud-aio-talk",
"display_name": "Talk",
"image": "nextcloud/aio-talk",
"ports": [
"3478/tcp",
"3478/udp"
{
"ip_binding": "",
"port_number": "%TALK_PORT%",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "%TALK_PORT%",
"protocol": "udp"
}
],
"internalPorts": [
"3478"
],
"environmentVariables": [
"internal_port": "%TALK_PORT%",
"environment": [
"NC_DOMAIN=%NC_DOMAIN%",
"TURN_SECRET=%TURN_SECRET%",
"SIGNALING_SECRET=%SIGNALING_SECRET%",
"JANUS_API_KEY=%JANUS_API_KEY%",
"TZ=%TIMEZONE%"
"TZ=%TIMEZONE%",
"TALK_PORT=%TALK_PORT%"
],
"volumes": [],
"secrets": [
"TURN_SECRET",
"SIGNALING_SECRET",
"JANUS_API_KEY"
],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
"restart": "unless-stopped"
},
{
"identifier": "nextcloud-aio-borgbackup",
"dependsOn": [],
"displayName": "Borgbackup",
"containerName": "nextcloud/aio-borgbackup",
"ports": [],
"internalPorts": [],
"environmentVariables": [
"container_name": "nextcloud-aio-borgbackup",
"image": "nextcloud/aio-borgbackup",
"environment": [
"BORG_PASSWORD=%BORGBACKUP_PASSWORD%",
"BORG_MODE=%BORGBACKUP_MODE%",
"SELECTED_RESTORE_TIME=%SELECTED_RESTORE_TIME%",
"BACKUP_RESTORE_PASSWORD=%BACKUP_RESTORE_PASSWORD%"
"BACKUP_RESTORE_PASSWORD=%BACKUP_RESTORE_PASSWORD%",
"ADDITIONAL_DIRECTORIES_BACKUP=%ADDITIONAL_DIRECTORIES_BACKUP%",
"BORGBACKUP_HOST_LOCATION=%BORGBACKUP_HOST_LOCATION%"
],
"volumes": [
{
"name": "nextcloud_aio_backup_cache",
"location": "/root",
"source": "nextcloud_aio_backup_cache",
"destination": "/root",
"writeable": true
},
{
"name": "nextcloud_aio_nextcloud",
"location": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud",
"source": "nextcloud_aio_nextcloud",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud",
"writeable": true
},
{
"name": "%NEXTCLOUD_DATADIR%",
"location": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data",
"source": "%NEXTCLOUD_DATADIR%",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data",
"writeable": true
},
{
"name": "nextcloud_aio_database",
"location": "/nextcloud_aio_volumes/nextcloud_aio_database",
"source": "nextcloud_aio_database",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_database",
"writeable": true
},
{
"name": "nextcloud_aio_database_dump",
"location": "/nextcloud_aio_volumes/nextcloud_aio_database_dump",
"source": "nextcloud_aio_database_dump",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_database_dump",
"writeable": true
},
{
"name": "nextcloud_aio_apache",
"location": "/nextcloud_aio_volumes/nextcloud_aio_apache",
"source": "nextcloud_aio_apache",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_apache",
"writeable": true
},
{
"name": "nextcloud_aio_mastercontainer",
"location": "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer",
"source": "nextcloud_aio_mastercontainer",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer",
"writeable": true
},
{
"name": "%BORGBACKUP_HOST_LOCATION%",
"location": "/mnt/borgbackup",
"source": "%BORGBACKUP_HOST_LOCATION%",
"destination": "/mnt/borgbackup",
"writeable": true
},
{
"source": "nextcloud_aio_elasticsearch",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_elasticsearch",
"writeable": true
},
{
"source": "nextcloud_aio_redis",
"destination": "/mnt/redis",
"writeable": true
}
],
"secrets": [
"BORGBACKUP_PASSWORD"
],
"maxShutdownTime": 10,
"restartPolicy": ""
"devices": [
"/dev/fuse"
]
},
{
"identifier": "nextcloud-aio-watchtower",
"dependsOn": [],
"displayName": "Watchtower",
"containerName": "nextcloud/aio-watchtower",
"ports": [],
"internalPorts": [],
"environmentVariables": [
"container_name": "nextcloud-aio-watchtower",
"image": "nextcloud/aio-watchtower",
"environment": [
"CONTAINER_TO_UPDATE=nextcloud-aio-mastercontainer"
],
"volumes": [
{
"name": "%DOCKER_SOCKET_PATH%",
"location": "/var/run/docker.sock",
"source": "%DOCKER_SOCKET_PATH%",
"destination": "/var/run/docker.sock",
"writeable": false
}
],
"secrets": [],
"maxShutdownTime": 10,
"restartPolicy": ""
]
},
{
"dependsOn": [],
"identifier": "nextcloud-aio-domaincheck",
"displayName": "Domaincheck",
"containerName": "nextcloud/aio-domaincheck",
"container_name": "nextcloud-aio-domaincheck",
"image": "nextcloud/aio-domaincheck",
"ports": [
"%APACHE_PORT%/tcp"
{
"ip_binding": "%APACHE_IP_BINDING%",
"port_number": "%APACHE_PORT%",
"protocol": "tcp"
}
],
"internalPorts": [],
"environmentVariables": [
"environment": [
"INSTANCE_ID=%INSTANCE_ID%",
"APACHE_PORT=%APACHE_PORT%"
],
"volumes": [],
"secrets": [
"INSTANCE_ID"
],
"maxShutdownTime": 1,
"restartPolicy": ""
"stop_grace_period": 1
},
{
"identifier": "nextcloud-aio-clamav",
"dependsOn": [],
"displayName": "ClamAV",
"containerName": "nextcloud/aio-clamav",
"ports": [],
"internalPorts": [
"3310"
],
"environmentVariables": [
"TZ=%TIMEZONE%"
"container_name": "nextcloud-aio-clamav",
"display_name": "ClamAV",
"image": "nextcloud/aio-clamav",
"internal_port": "3310",
"environment": [
"TZ=%TIMEZONE%",
"CLAMD_STARTUP_TIMEOUT=90"
],
"volumes": [
{
"name": "nextcloud_aio_clamav",
"location": "/var/lib/clamav",
"source": "nextcloud_aio_clamav",
"destination": "/var/lib/clamav",
"writeable": true
}
],
"secrets": [],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
"restart": "unless-stopped"
},
{
"identifier": "nextcloud-aio-onlyoffice",
"dependsOn": [],
"displayName": "OnlyOffice",
"containerName": "nextcloud/aio-onlyoffice",
"ports": [],
"internalPorts": [
"80"
],
"environmentVariables": [
"TZ=%TIMEZONE%"
"container_name": "nextcloud-aio-onlyoffice",
"display_name": "OnlyOffice",
"image": "nextcloud/aio-onlyoffice",
"internal_port": "80",
"environment": [
"TZ=%TIMEZONE%",
"JWT_ENABLED=true",
"JWT_HEADER=AuthorizationJwt",
"JWT_SECRET=%ONLYOFFICE_SECRET%"
],
"volumes": [
{
"name": "nextcloud_aio_onlyoffice",
"location": "/var/lib/onlyoffice",
"source": "nextcloud_aio_onlyoffice",
"destination": "/var/lib/onlyoffice",
"writeable": true
}
],
"secrets": [],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
"secrets": [
"ONLYOFFICE_SECRET"
],
"restart": "unless-stopped"
},
{
"container_name": "nextcloud-aio-imaginary",
"display_name": "Imaginary",
"image": "nextcloud/aio-imaginary",
"internal_port": "9000",
"environment": [
"TZ=%TIMEZONE%"
],
"restart": "unless-stopped"
},
{
"container_name": "nextcloud-aio-fulltextsearch",
"display_name": "Fulltextsearch",
"image": "nextcloud/aio-fulltextsearch",
"internal_port": "9200",
"environment": [
"TZ=%TIMEZONE%",
"discovery.type=single-node",
"ES_JAVA_OPTS=-Xms1024M -Xmx1024M"
],
"volumes": [
{
"source": "nextcloud_aio_elasticsearch",
"destination": "/usr/share/elasticsearch/data",
"writeable": true
}
],
"restart": "unless-stopped"
}
]
}

View File

@@ -1,77 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="4.23.0@f1fe6ff483bf325c803df9f510d09a03fd796f88">
<file src="public/index.php">
<MissingClosureParamType occurrences="10">
<code>$args</code>
<code>$args</code>
<code>$args</code>
<code>$args</code>
<code>$request</code>
<code>$request</code>
<code>$request</code>
<code>$response</code>
<code>$response</code>
<code>$response</code>
</MissingClosureParamType>
</file>
<file src="src/Controller/ConfigurationController.php">
<MissingParamType occurrences="1">
<code>$args</code>
</MissingParamType>
</file>
<file src="src/Controller/DockerController.php">
<MissingParamType occurrences="8">
<code>$args</code>
<code>$args</code>
<code>$args</code>
<code>$args</code>
<code>$args</code>
<code>$args</code>
<code>$args</code>
<code>$args</code>
</MissingParamType>
<PossiblyInvalidArrayAccess occurrences="1">
<code>$request-&gt;getParsedBody()['selected_restore_time']</code>
</PossiblyInvalidArrayAccess>
<PossiblyNullArrayAccess occurrences="1">
<code>$request-&gt;getParsedBody()['selected_restore_time']</code>
</PossiblyNullArrayAccess>
</file>
<file src="src/Controller/LoginController.php">
<MissingParamType occurrences="3">
<code>$args</code>
<code>$args</code>
<code>$args</code>
</MissingParamType>
<PossiblyInvalidArrayAccess occurrences="1">
<code>$request-&gt;getParsedBody()['password']</code>
</PossiblyInvalidArrayAccess>
<PossiblyNullArgument occurrences="1">
<code>$password</code>
</PossiblyNullArgument>
<PossiblyNullArrayAccess occurrences="1">
<code>$request-&gt;getParsedBody()['password']</code>
</PossiblyNullArrayAccess>
</file>
<file src="src/Docker/DockerActionManager.php">
<InvalidReturnType occurrences="1">
<code>IContainerState</code>
</InvalidReturnType>
<InvalidScalarArgument occurrences="1">
<code>$internalPort</code>
</InvalidScalarArgument>
<RedundantCondition occurrences="1">
<code>$container-&gt;GetInternalPorts() !== null</code>
</RedundantCondition>
</file>
<file src="src/Middleware/AuthMiddleware.php">
<UndefinedInterfaceMethod occurrences="1">
<code>withStatus</code>
</UndefinedInterfaceMethod>
</file>
<file src="src/Twig/ClassExtension.php">
<MissingParamType occurrences="1">
<code>$object</code>
</MissingParamType>
</file>
</files>
<files psalm-version="5.4.0@62db5d4f6a7ae0a20f7cc5a4952d730272fc0863"/>

View File

@@ -0,0 +1,5 @@
document.addEventListener("DOMContentLoaded", function(event) {
// Fulltextsearch
var fulltextsearch = document.getElementById("fulltextsearch");
fulltextsearch.disabled = true;
});

View File

@@ -0,0 +1,5 @@
document.addEventListener("DOMContentLoaded", function(event) {
// Imaginary
var imaginary = document.getElementById("imaginary");
imaginary.disabled = true;
});

View File

@@ -1,5 +1,7 @@
document.addEventListener("DOMContentLoaded", function(event) {
// OnlyOffice
var onlyoffice = document.getElementById("onlyoffice");
onlyoffice.disabled = true;
document.addEventListener("DOMContentLoaded", function(event) {
// OnlyOffice
var onlyoffice = document.getElementById("onlyoffice");
if (onlyoffice) {
onlyoffice.disabled = true;
}
});

View File

@@ -19,12 +19,13 @@
const xhr = e.target;
if (xhr.status === 201) {
window.location.replace(xhr.getResponseHeader('Location'));
}
if (xhr.status === 422) {
} else if (xhr.status === 422) {
showError(xhr.response);
}
if (xhr.status === 500) {
showError("Server error. Please see the logs for details.");
} else if (xhr.status === 500) {
showError("Server error. Please check the mastercontainer logs for details.");
} else {
// If the responose is not one of the above, we should reload to show the latest content
window.location.reload(1);
}
}

View File

@@ -12,6 +12,8 @@ use Slim\Csrf\Guard;
use Slim\Factory\AppFactory;
use Slim\Views\Twig;
use Slim\Views\TwigMiddleware;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
require __DIR__ . '/../vendor/autoload.php';
@@ -22,6 +24,9 @@ ini_set('session.save_path', $dataConst->GetSessionDirectory());
// Auto logout on browser close
ini_set('session.cookie_lifetime', '0');
# Keep session for 24h max
ini_set('session.gc_maxlifetime', '86400');
// Create app
AppFactory::setContainer($container);
$app = AppFactory::create();
@@ -52,6 +57,7 @@ $app->get('/api/docker/getwatchtower', AIO\Controller\DockerController::class .
$app->post('/api/docker/start', AIO\Controller\DockerController::class . ':StartContainer');
$app->post('/api/docker/backup', AIO\Controller\DockerController::class . ':StartBackupContainerBackup');
$app->post('/api/docker/backup-check', AIO\Controller\DockerController::class . ':StartBackupContainerCheck');
$app->post('/api/docker/backup-check-repair', AIO\Controller\DockerController::class . ':StartBackupContainerCheckRepair');
$app->post('/api/docker/backup-test', AIO\Controller\DockerController::class . ':StartBackupContainerTest');
$app->post('/api/docker/restore', AIO\Controller\DockerController::class . ':StartBackupContainerRestore');
$app->post('/api/docker/stop', AIO\Controller\DockerController::class . ':StopContainer');
@@ -62,7 +68,7 @@ $app->post('/api/auth/logout', AIO\Controller\LoginController::class . ':Logout'
$app->post('/api/configuration', \AIO\Controller\ConfigurationController::class . ':SetConfig');
// Views
$app->get('/containers', function ($request, $response, $args) use ($container) {
$app->get('/containers', function (Request $request, Response $response, array $args) use ($container) {
$view = Twig::fromRequest($request);
/** @var \AIO\Data\ConfigurationManager $configurationManager */
$configurationManager = $container->get(\AIO\Data\ConfigurationManager::class);
@@ -74,9 +80,9 @@ $app->get('/containers', function ($request, $response, $args) use ($container)
return $view->render($response, 'containers.twig', [
'domain' => $configurationManager->GetDomain(),
'borg_backup_host_location' => $configurationManager->GetBorgBackupHostLocation(),
'nextcloud_password' => $configurationManager->GetSecret('NEXTCLOUD_PASSWORD'),
'nextcloud_password' => $configurationManager->GetAndGenerateSecret('NEXTCLOUD_PASSWORD'),
'containers' => (new \AIO\ContainerDefinitionFetcher($container->get(\AIO\Data\ConfigurationManager::class), $container))->FetchDefinition(),
'borgbackup_password' => $configurationManager->GetSecret('BORGBACKUP_PASSWORD'),
'borgbackup_password' => $configurationManager->GetAndGenerateSecret('BORGBACKUP_PASSWORD'),
'is_mastercontainer_update_available' => $dockerActionManger->IsMastercontainerUpdateAvailable(),
'has_backup_run_once' => $configurationManager->hasBackupRunOnce(),
'is_backup_container_running' => $dockerActionManger->isBackupContainerRunning(),
@@ -97,9 +103,17 @@ $app->get('/containers', function ($request, $response, $args) use ($container)
'daily_backup_time' => $configurationManager->GetDailyBackupTime(),
'is_daily_backup_running' => $configurationManager->isDailyBackupRunning(),
'timezone' => $configurationManager->GetTimezone(),
'skip_domain_validation' => $configurationManager->shouldDomainValidationBeSkipped(),
'talk_port' => $configurationManager->GetTalkPort(),
'collabora_dictionaries' => $configurationManager->GetCollaboraDictionaries(),
'automatic_updates' => $configurationManager->areAutomaticUpdatesEnabled(),
'is_backup_section_enabled' => $configurationManager->isBackupSectionEnabled(),
'is_imaginary_enabled' => $configurationManager->isImaginaryEnabled(),
'is_fulltextsearch_enabled' => $configurationManager->isFulltextsearchEnabled(),
'additional_backup_directories' => $configurationManager->GetAdditionalBackupDirectoriesString(),
]);
})->setName('profile');
$app->get('/login', function ($request, $response, $args) use ($container) {
$app->get('/login', function (Request $request, Response $response, array $args) use ($container) {
$view = Twig::fromRequest($request);
/** @var \AIO\Docker\DockerActionManager $dockerActionManger */
$dockerActionManger = $container->get(\AIO\Docker\DockerActionManager::class);
@@ -107,7 +121,7 @@ $app->get('/login', function ($request, $response, $args) use ($container) {
'is_login_allowed' => $dockerActionManger->isLoginAllowed(),
]);
});
$app->get('/setup', function ($request, $response, $args) use ($container) {
$app->get('/setup', function (Request $request, Response $response, array $args) use ($container) {
$view = Twig::fromRequest($request);
/** @var \AIO\Data\Setup $setup */
$setup = $container->get(\AIO\Data\Setup::class);
@@ -129,7 +143,7 @@ $app->get('/setup', function ($request, $response, $args) use ($container) {
});
// Auth Redirector
$app->get('/', function (\Psr\Http\Message\RequestInterface $request, \Psr\Http\Message\ResponseInterface $response, $args) use ($container) {
$app->get('/', function (\Psr\Http\Message\RequestInterface $request, Response $response, array $args) use ($container) {
$authManager = $container->get(\AIO\Auth\AuthManager::class);
/** @var \AIO\Data\Setup $setup */

View File

@@ -14,7 +14,9 @@ document.addEventListener("DOMContentLoaded", function(event) {
// OnlyOffice
var onlyoffice = document.getElementById("onlyoffice");
onlyoffice.addEventListener('change', makeOptionsFormSubmitVisible);
if (onlyoffice) {
onlyoffice.addEventListener('change', makeOptionsFormSubmitVisible);
}
// Collabora
var collabora = document.getElementById("collabora");
@@ -23,4 +25,12 @@ document.addEventListener("DOMContentLoaded", function(event) {
// Talk
var talk = document.getElementById("talk");
talk.addEventListener('change', makeOptionsFormSubmitVisible);
// Imaginary
var imaginary = document.getElementById("imaginary");
imaginary.addEventListener('change', makeOptionsFormSubmitVisible);
// Fulltextsearch
var fulltextsearch = document.getElementById("fulltextsearch");
fulltextsearch.addEventListener('change', makeOptionsFormSubmitVisible);
});

View File

@@ -0,0 +1,12 @@
const channel = new BroadcastChannel('tab')
channel.postMessage('second-tab')
// note that listener is added after posting the message
channel.addEventListener('message', (msg) => {
if (msg.data === 'second-tab') {
// message received from 2nd tab
document.getElementById('overlay').classList.add('loading')
alert('Cannot open multiple instances. You can use AIO here by reloading the page.')
}
});

View File

@@ -3,6 +3,8 @@
namespace AIO\Auth;
use AIO\Data\ConfigurationManager;
use AIO\Data\DataConst;
use \DateTime;
class AuthManager {
private const SESSION_KEY = 'aio_authenticated';
@@ -21,6 +23,14 @@ class AuthManager {
}
public function SetAuthState(bool $isLoggedIn) : void {
if (!$this->IsAuthenticated() && $isLoggedIn === true) {
$date = new DateTime();
$dateTime = $date->getTimestamp();
$_SESSION['date_time'] = $dateTime;
file_put_contents(DataConst::GetSessionDateFile(), (string)$dateTime);
}
$_SESSION[self::SESSION_KEY] = $isLoggedIn;
}

View File

@@ -14,13 +14,15 @@ class Container {
private string $restartPolicy;
private int $maxShutdownTime;
private ContainerPorts $ports;
private ContainerInternalPorts $internalPorts;
private string $internalPorts;
private ContainerVolumes $volumes;
private ContainerEnvironmentVariables $containerEnvironmentVariables;
/** @var string[] */
private array $dependsOn;
/** @var string[] */
private array $secrets;
/** @var string[] */
private array $devices;
private DockerActionManager $dockerActionManager;
public function __construct(
@@ -30,11 +32,12 @@ class Container {
string $restartPolicy,
int $maxShutdownTime,
ContainerPorts $ports,
ContainerInternalPorts $internalPorts,
string $internalPorts,
ContainerVolumes $volumes,
ContainerEnvironmentVariables $containerEnvironmentVariables,
array $dependsOn,
array $secrets,
array $devices,
DockerActionManager $dockerActionManager
) {
$this->identifier = $identifier;
@@ -48,6 +51,7 @@ class Container {
$this->containerEnvironmentVariables = $containerEnvironmentVariables;
$this->dependsOn = $dependsOn;
$this->secrets = $secrets;
$this->devices = $devices;
$this->dockerActionManager = $dockerActionManager;
}
@@ -75,11 +79,15 @@ class Container {
return $this->secrets;
}
public function GetDevices() : array {
return $this->devices;
}
public function GetPorts() : ContainerPorts {
return $this->ports;
}
public function GetInternalPorts() : ContainerInternalPorts {
public function GetInternalPort() : string {
return $this->internalPorts;
}

View File

@@ -1,19 +0,0 @@
<?php
namespace AIO\Container;
class ContainerInternalPorts {
/** @var string[] */
private array $internalPorts = [];
public function AddInternalPort(string $internalPort) : void {
$this->internalPorts[] = $internalPort;
}
/**
* @return string[]
*/
public function GetInternalPorts() : array {
return $this->internalPorts;
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace AIO\Container;
class ContainerPort {
public string $port;
public string $ipBinding;
public string $protocol;
public function __construct(
string $port,
string $ipBinding,
string $protocol
) {
$this->port = $port;
$this->ipBinding = $ipBinding;
$this->protocol = $protocol;
}
}

View File

@@ -3,17 +3,17 @@
namespace AIO\Container;
class ContainerPorts {
/** @var string[] */
/** @var ContainerPort[] */
private array $ports = [];
public function AddPort(string $port) : void {
public function AddPort(ContainerPort $port) : void {
$this->ports[] = $port;
}
/**
* @return string[]
* @return ContainerPort[]
*/
public function GetPorts() : array {
return $this->ports;
}
}
}

View File

@@ -4,8 +4,8 @@ namespace AIO;
use AIO\Container\Container;
use AIO\Container\ContainerEnvironmentVariables;
use AIO\Container\ContainerPort;
use AIO\Container\ContainerPorts;
use AIO\Container\ContainerInternalPorts;
use AIO\Container\ContainerVolume;
use AIO\Container\ContainerVolumes;
use AIO\Container\State\RunningState;
@@ -48,119 +48,184 @@ class ContainerDefinitionFetcher
$data = json_decode(file_get_contents(__DIR__ . '/../containers.json'), true);
$containers = [];
foreach ($data['production'] as $entry) {
if ($entry['identifier'] === 'nextcloud-aio-clamav') {
foreach ($data['aio_services_v1'] as $entry) {
if ($entry['container_name'] === 'nextcloud-aio-clamav') {
if (!$this->configurationManager->isClamavEnabled()) {
continue;
}
} elseif ($entry['identifier'] === 'nextcloud-aio-onlyoffice') {
} elseif ($entry['container_name'] === 'nextcloud-aio-onlyoffice') {
if (!$this->configurationManager->isOnlyofficeEnabled()) {
continue;
}
} elseif ($entry['identifier'] === 'nextcloud-aio-collabora') {
} elseif ($entry['container_name'] === 'nextcloud-aio-collabora') {
if (!$this->configurationManager->isCollaboraEnabled()) {
continue;
}
} elseif ($entry['identifier'] === 'nextcloud-aio-talk') {
} elseif ($entry['container_name'] === 'nextcloud-aio-talk') {
if (!$this->configurationManager->isTalkEnabled()) {
continue;
}
} elseif ($entry['container_name'] === 'nextcloud-aio-imaginary') {
if (!$this->configurationManager->isImaginaryEnabled()) {
continue;
}
} elseif ($entry['container_name'] === 'nextcloud-aio-fulltextsearch') {
if (!$this->configurationManager->isFulltextsearchEnabled()) {
continue;
}
}
$ports = new ContainerPorts();
foreach ($entry['ports'] as $port) {
if($port === '%APACHE_PORT%/tcp') {
$port = $this->configurationManager->GetApachePort() . '/tcp';
}
$ports->AddPort($port);
}
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();
}
$internalPorts = new ContainerInternalPorts();
foreach ($entry['internalPorts'] as $internalPort) {
if($internalPort === '%APACHE_PORT%') {
$internalPort = $this->configurationManager->GetApachePort();
if ($value['ip_binding'] === '%APACHE_IP_BINDING%') {
$value['ip_binding'] = $this->configurationManager->GetApacheIPBinding();
}
$ports->AddPort(
new ContainerPort(
$value['port_number'],
$value['ip_binding'],
$value['protocol']
)
);
}
$internalPorts->AddInternalPort($internalPort);
}
$volumes = new ContainerVolumes();
foreach ($entry['volumes'] as $value) {
if($value['name'] === '%BORGBACKUP_HOST_LOCATION%') {
$value['name'] = $this->configurationManager->GetBorgBackupHostLocation();
if($value['name'] === '') {
continue;
if (isset($entry['volumes'])) {
foreach ($entry['volumes'] as $value) {
if($value['source'] === '%BORGBACKUP_HOST_LOCATION%') {
$value['source'] = $this->configurationManager->GetBorgBackupHostLocation();
if($value['source'] === '') {
continue;
}
}
if($value['source'] === '%NEXTCLOUD_MOUNT%') {
$value['source'] = $this->configurationManager->GetNextcloudMount();
if($value['source'] === '') {
continue;
}
} elseif ($value['source'] === '%NEXTCLOUD_DATADIR%') {
$value['source'] = $this->configurationManager->GetNextcloudDatadirMount();
if ($value['source'] === '') {
continue;
}
} elseif ($value['source'] === '%DOCKER_SOCKET_PATH%') {
$value['source'] = $this->configurationManager->GetDockerSocketPath();
if($value['source'] === '') {
continue;
}
} elseif ($value['source'] === '%NEXTCLOUD_TRUSTED_CACERTS_DIR%') {
$value['source'] = $this->configurationManager->GetTrustedCacertsDir();
if($value['source'] === '') {
continue;
}
}
if ($value['destination'] === '%NEXTCLOUD_MOUNT%') {
$value['destination'] = $this->configurationManager->GetNextcloudMount();
if($value['destination'] === '') {
continue;
}
}
$volumes->AddVolume(
new ContainerVolume(
$value['source'],
$value['destination'],
$value['writeable']
)
);
}
if($value['name'] === '%NEXTCLOUD_MOUNT%') {
$value['name'] = $this->configurationManager->GetNextcloudMount();
if($value['name'] === '') {
continue;
}
} elseif ($value['name'] === '%NEXTCLOUD_DATADIR%') {
$value['name'] = $this->configurationManager->GetNextcloudDatadirMount();
if ($value['name'] === '') {
continue;
}
} elseif ($value['name'] === '%DOCKER_SOCKET_PATH%') {
$value['name'] = $this->configurationManager->GetDockerSocketPath();
if($value['name'] === '') {
continue;
}
}
if ($value['location'] === '%NEXTCLOUD_MOUNT%') {
$value['location'] = $this->configurationManager->GetNextcloudMount();
if($value['location'] === '') {
continue;
}
}
$volumes->AddVolume(
new ContainerVolume(
$value['name'],
$value['location'],
$value['writeable']
)
);
}
$dependsOn = [];
foreach ($entry['dependsOn'] as $value) {
if ($value === 'nextcloud-aio-clamav') {
if (!$this->configurationManager->isClamavEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-onlyoffice') {
if (!$this->configurationManager->isOnlyofficeEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-collabora') {
if (!$this->configurationManager->isCollaboraEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-talk') {
if (!$this->configurationManager->isTalkEnabled()) {
continue;
if (isset($entry['depends_on'])) {
foreach ($entry['depends_on'] as $value) {
if ($value === 'nextcloud-aio-clamav') {
if (!$this->configurationManager->isClamavEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-onlyoffice') {
if (!$this->configurationManager->isOnlyofficeEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-collabora') {
if (!$this->configurationManager->isCollaboraEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-talk') {
if (!$this->configurationManager->isTalkEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-imaginary') {
if (!$this->configurationManager->isImaginaryEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-fulltextsearch') {
if (!$this->configurationManager->isFulltextsearchEnabled()) {
continue;
}
}
$dependsOn[] = $value;
}
$dependsOn[] = $value;
}
$variables = new ContainerEnvironmentVariables();
foreach ($entry['environmentVariables'] as $value) {
$variables->AddVariable($value);
if (isset($entry['environment'])) {
foreach ($entry['environment'] as $value) {
$variables->AddVariable($value);
}
}
$displayName = '';
if (isset($entry['display_name'])) {
$displayName = $entry['display_name'];
}
$restartPolicy = '';
if (isset($entry['restart'])) {
$restartPolicy = $entry['restart'];
}
$maxShutdownTime = 10;
if (isset($entry['stop_grace_period'])) {
$maxShutdownTime = $entry['stop_grace_period'];
}
$internalPort = '';
if (isset($entry['internal_port'])) {
$internalPort = $entry['internal_port'];
}
$secrets = [];
if (isset($entry['secrets'])) {
$secrets = $entry['secrets'];
}
$devices = [];
if (isset($entry['devices'])) {
$devices = $entry['devices'];
}
$containers[] = new Container(
$entry['identifier'],
$entry['displayName'],
$entry['containerName'],
$entry['restartPolicy'],
$entry['maxShutdownTime'],
$entry['container_name'],
$displayName,
$entry['image'],
$restartPolicy,
$maxShutdownTime,
$ports,
$internalPorts,
$internalPort,
$volumes,
$variables,
$dependsOn,
$entry['secrets'],
$secrets,
$devices,
$this->container->get(DockerActionManager::class)
);
}

View File

@@ -19,7 +19,7 @@ class ConfigurationController
$this->configurationManager = $configurationManager;
}
public function SetConfig(Request $request, Response $response, $args) : Response {
public function SetConfig(Request $request, Response $response, array $args) : Response {
try {
if (isset($request->getParsedBody()['domain'])) {
$domain = $request->getParsedBody()['domain'] ?? '';
@@ -44,14 +44,24 @@ class ConfigurationController
}
if (isset($request->getParsedBody()['daily_backup_time'])) {
if (isset($request->getParsedBody()['automatic_updates'])) {
$enableAutomaticUpdates = true;
} else {
$enableAutomaticUpdates = false;
}
$dailyBackupTime = $request->getParsedBody()['daily_backup_time'] ?? '';
$this->configurationManager->SetDailyBackupTime($dailyBackupTime);
$this->configurationManager->SetDailyBackupTime($dailyBackupTime, $enableAutomaticUpdates);
}
if (isset($request->getParsedBody()['delete_daily_backup_time'])) {
$this->configurationManager->DeleteDailyBackupTime();
}
if (isset($request->getParsedBody()['additional_backup_directories'])) {
$additionalBackupDirectories = $request->getParsedBody()['additional_backup_directories'] ?? '';
$this->configurationManager->SetAdditionalBackupDirectories($additionalBackupDirectories);
}
if (isset($request->getParsedBody()['delete_timezone'])) {
$this->configurationManager->DeleteTimezone();
}
@@ -85,6 +95,25 @@ class ConfigurationController
} else {
$this->configurationManager->SetTalkEnabledState(0);
}
if (isset($request->getParsedBody()['imaginary'])) {
$this->configurationManager->SetImaginaryEnabledState(1);
} else {
$this->configurationManager->SetImaginaryEnabledState(0);
}
if (isset($request->getParsedBody()['fulltextsearch'])) {
$this->configurationManager->SetFulltextsearchEnabledState(1);
} else {
$this->configurationManager->SetFulltextsearchEnabledState(0);
}
}
if (isset($request->getParsedBody()['delete_collabora_dictionaries'])) {
$this->configurationManager->DeleteCollaboraDictionaries();
}
if (isset($request->getParsedBody()['collabora_dictionaries'])) {
$collaboraDictionaries = $request->getParsedBody()['collabora_dictionaries'] ?? '';
$this->configurationManager->SetCollaboraDictionaries($collaboraDictionaries);
}
return $response->withStatus(201)->withHeader('Location', '/');

View File

@@ -26,32 +26,30 @@ class DockerController
$this->configurationManager = $configurationManager;
}
private function PerformRecursiveContainerStart(string $id) : void {
private function PerformRecursiveContainerStart(string $id, bool $pullContainer = true) : void {
$container = $this->containerDefinitionFetcher->GetContainerById($id);
foreach($container->GetDependsOn() as $dependency) {
$this->PerformRecursiveContainerStart($dependency);
$this->PerformRecursiveContainerStart($dependency, $pullContainer);
}
$pullcontainer = true;
if ($id === 'nextcloud-aio-database') {
if ($this->dockerActionManager->GetDatabasecontainerExitCode() > 0) {
$pullcontainer = false;
$pullContainer = false;
error_log('Not pulling the latest database image because the container was not correctly shut down.');
}
}
$this->dockerActionManager->DeleteContainer($container);
$this->dockerActionManager->CreateVolumes($container);
if ($pullcontainer) {
if ($pullContainer) {
$this->dockerActionManager->PullContainer($container);
} else {
error_log('Not pulling the latest database image because the container was not correctly shut down.');
}
$this->dockerActionManager->CreateContainer($container);
$this->dockerActionManager->StartContainer($container);
$this->dockerActionManager->ConnectContainerToNetwork($container);
}
public function GetLogs(Request $request, Response $response, $args) : Response
public function GetLogs(Request $request, Response $response, array $args) : Response
{
$id = $request->getQueryParams()['id'];
if (str_starts_with($id, 'nextcloud-aio-')) {
@@ -69,7 +67,7 @@ class DockerController
->withHeader('Content-Disposition', 'inline');
}
public function StartBackupContainerBackup(Request $request, Response $response, $args) : Response {
public function StartBackupContainerBackup(Request $request, Response $response, array $args) : Response {
$this->startBackup();
return $response->withStatus(201)->withHeader('Location', '/');
}
@@ -86,21 +84,24 @@ class DockerController
$this->PerformRecursiveContainerStart($id);
}
public function StartBackupContainerCheck(Request $request, Response $response, $args) : Response {
public function StartBackupContainerCheck(Request $request, Response $response, array $args) : Response {
$this->checkBackup();
return $response->withStatus(201)->withHeader('Location', '/');
}
public function checkBackup() : void {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'check';
$this->configurationManager->WriteConfig($config);
$id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id);
return $response->withStatus(201)->withHeader('Location', '/');
}
public function StartBackupContainerRestore(Request $request, Response $response, $args) : Response {
public function StartBackupContainerRestore(Request $request, Response $response, array $args) : Response {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'restore';
$config['selected-restore-time'] = $request->getParsedBody()['selected_restore_time'];
$config['selected-restore-time'] = $request->getParsedBody()['selected_restore_time'] ?? '';
$this->configurationManager->WriteConfig($config);
$id = self::TOP_CONTAINER;
@@ -112,7 +113,23 @@ class DockerController
return $response->withStatus(201)->withHeader('Location', '/');
}
public function StartBackupContainerTest(Request $request, Response $response, $args) : Response {
public function StartBackupContainerCheckRepair(Request $request, Response $response, array $args) : Response {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'check-repair';
$this->configurationManager->WriteConfig($config);
$id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id);
// Restore to backup check which is needed to make the UI logic work correctly
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'check';
$this->configurationManager->WriteConfig($config);
return $response->withStatus(201)->withHeader('Location', '/');
}
public function StartBackupContainerTest(Request $request, Response $response, array $args) : Response {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'test';
$config['instance_restore_attempt'] = 0;
@@ -127,7 +144,7 @@ class DockerController
return $response->withStatus(201)->withHeader('Location', '/');
}
public function StartContainer(Request $request, Response $response, $args) : Response
public function StartContainer(Request $request, Response $response, array $args) : Response
{
$uri = $request->getUri();
$host = $uri->getHost();
@@ -145,12 +162,12 @@ class DockerController
$this->configurationManager->WriteConfig($config);
// Start container
$this->startTopContainer();
$this->startTopContainer(true);
return $response->withStatus(201)->withHeader('Location', '/');
}
public function startTopContainer() : void {
public function startTopContainer(bool $pullContainer) : void {
$config = $this->configurationManager->GetConfig();
// set AIO_TOKEN
$config['AIO_TOKEN'] = bin2hex(random_bytes(24));
@@ -161,10 +178,10 @@ class DockerController
$id = self::TOP_CONTAINER;
$this->PerformRecursiveContainerStart($id);
$this->PerformRecursiveContainerStart($id, $pullContainer);
}
public function StartWatchtowerContainer(Request $request, Response $response, $args) : Response {
public function StartWatchtowerContainer(Request $request, Response $response, array $args) : Response {
$this->startWatchtower();
return $response->withStatus(201)->withHeader('Location', '/');
}
@@ -187,7 +204,7 @@ class DockerController
$this->dockerActionManager->StopContainer($container);
}
public function StopContainer(Request $request, Response $response, $args) : Response
public function StopContainer(Request $request, Response $response, array $args) : Response
{
$id = self::TOP_CONTAINER;
$this->PerformRecursiveContainerStop($id);
@@ -195,6 +212,11 @@ class DockerController
return $response->withStatus(201)->withHeader('Location', '/');
}
public function stopTopContainer() : void {
$id = self::TOP_CONTAINER;
$this->PerformRecursiveContainerStop($id);
}
public function StartDomaincheckContainer() : void
{
# Don't start if domain is already set

View File

@@ -19,11 +19,11 @@ class LoginController
$this->dockerActionManager = $dockerActionManager;
}
public function TryLogin(Request $request, Response $response, $args) : Response {
public function TryLogin(Request $request, Response $response, array $args) : Response {
if (!$this->dockerActionManager->isLoginAllowed()) {
return $response->withHeader('Location', '/')->withStatus(302);
}
$password = $request->getParsedBody()['password'];
$password = $request->getParsedBody()['password'] ?? '';
if($this->authManager->CheckCredentials($password)) {
$this->authManager->SetAuthState(true);
return $response->withHeader('Location', '/')->withStatus(302);
@@ -32,8 +32,8 @@ class LoginController
return $response->withHeader('Location', '/')->withStatus(302);
}
public function GetTryLogin(Request $request, Response $response, $args) : Response {
$token = $request->getQueryParams()['token'];
public function GetTryLogin(Request $request, Response $response, array $args) : Response {
$token = $request->getQueryParams()['token'] ?? '';
if($this->authManager->CheckToken($token)) {
$this->authManager->SetAuthState(true);
return $response->withHeader('Location', '/')->withStatus(302);
@@ -42,7 +42,7 @@ class LoginController
return $response->withHeader('Location', '/')->withStatus(302);
}
public function Logout(Request $request, Response $response, $args) : Response
public function Logout(Request $request, Response $response, array $args) : Response
{
$this->authManager->SetAuthState(false);
return $response

View File

@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
// increase memory limit to 2GB
ini_set('memory_limit', '2048M');
use DI\Container;
require __DIR__ . '/../../vendor/autoload.php';
$container = \AIO\DependencyInjection::GetContainer();
/** @var \AIO\Controller\DockerController $dockerController */
$dockerController = $container->get(\AIO\Controller\DockerController::class);
// Stop container and start backup check
$dockerController->checkBackup();

View File

@@ -15,6 +15,3 @@ $dockerController = $container->get(\AIO\Controller\DockerController::class);
// Stop container and start backup
$dockerController->startBackup();
// Start apache
$dockerController->startTopContainer();

View File

@@ -0,0 +1,26 @@
<?php
declare(strict_types=1);
// increase memory limit to 2GB
ini_set('memory_limit', '2048M');
use DI\Container;
require __DIR__ . '/../../vendor/autoload.php';
$container = \AIO\DependencyInjection::GetContainer();
/** @var \AIO\Docker\DockerActionManager $dockerActionManger */
$dockerActionManger = $container->get(\AIO\Docker\DockerActionManager::class);
/** @var \AIO\ContainerDefinitionFetcher $containerDefinitionFetcher */
$containerDefinitionFetcher = $container->get(\AIO\ContainerDefinitionFetcher::class);
$id = 'nextcloud-aio-nextcloud';
$nextcloudContainer = $containerDefinitionFetcher->GetContainerById($id);
$isNextcloudImageOutdated = $dockerActionManger->isNextcloudImageOutdated();
if ($isNextcloudImageOutdated === true) {
$dockerActionManger->sendNotification($nextcloudContainer, 'AIO is outdated!', 'Please open the AIO interface or ask an administrator to update it. If you do not want to do it manually each time, you can enable the daily backup feature from the AIO interface which automatically updates all containers.', '/notify-all.sh');
}

View File

@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
// increase memory limit to 2GB
ini_set('memory_limit', '2048M');
use DI\Container;
require __DIR__ . '/../../vendor/autoload.php';
$container = \AIO\DependencyInjection::GetContainer();
/** @var \AIO\Controller\DockerController $dockerController */
$dockerController = $container->get(\AIO\Controller\DockerController::class);
// Start apache
$dockerController->startTopContainer(true);

View File

@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
// increase memory limit to 2GB
ini_set('memory_limit', '2048M');
use DI\Container;
require __DIR__ . '/../../vendor/autoload.php';
$container = \AIO\DependencyInjection::GetContainer();
/** @var \AIO\Controller\DockerController $dockerController */
$dockerController = $container->get(\AIO\Controller\DockerController::class);
// Start apache
$dockerController->startTopContainer(false);

View File

@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
// increase memory limit to 2GB
ini_set('memory_limit', '2048M');
use DI\Container;
require __DIR__ . '/../../vendor/autoload.php';
$container = \AIO\DependencyInjection::GetContainer();
/** @var \AIO\Controller\DockerController $dockerController */
$dockerController = $container->get(\AIO\Controller\DockerController::class);
// Start apache
$dockerController->stopTopContainer();

View File

@@ -32,7 +32,7 @@ class ConfigurationManager
$this->WriteConfig($config);
}
public function GetSecret(string $secretId) : string {
public function GetAndGenerateSecret(string $secretId) : string {
$config = $this->GetConfig();
if(!isset($config['secrets'][$secretId])) {
$config['secrets'][$secretId] = bin2hex(random_bytes(24));
@@ -46,6 +46,15 @@ class ConfigurationManager
return $config['secrets'][$secretId];
}
public function GetSecret(string $secretId) : string {
$config = $this->GetConfig();
if(!isset($config['secrets'][$secretId])) {
$config['secrets'][$secretId] = "";
}
return $config['secrets'][$secretId];
}
private function DoubleSafeBackupSecret(string $borgBackupPassword) : void {
file_put_contents(DataConst::GetBackupSecretFile(), $borgBackupPassword);
}
@@ -139,6 +148,36 @@ class ConfigurationManager
$this->WriteConfig($config);
}
public function isImaginaryEnabled() : bool {
$config = $this->GetConfig();
if (isset($config['isImaginaryEnabled']) && $config['isImaginaryEnabled'] === 1) {
return true;
} else {
return false;
}
}
public function SetImaginaryEnabledState(int $value) : void {
$config = $this->GetConfig();
$config['isImaginaryEnabled'] = $value;
$this->WriteConfig($config);
}
public function isFulltextsearchEnabled() : bool {
$config = $this->GetConfig();
if (isset($config['isFulltextsearchEnabled']) && $config['isFulltextsearchEnabled'] === 1) {
return true;
} else {
return false;
}
}
public function SetFulltextsearchEnabledState(int $value) : void {
$config = $this->GetConfig();
$config['isFulltextsearchEnabled'] = $value;
$this->WriteConfig($config);
}
public function isOnlyofficeEnabled() : bool {
$config = $this->GetConfig();
if (isset($config['isOnlyofficeEnabled']) && $config['isOnlyofficeEnabled'] === 1) {
@@ -198,51 +237,71 @@ class ConfigurationManager
throw new InvalidSettingConfigurationException("Please enter a domain and not an IP-address!");
}
$dnsRecordIP = gethostbyname($domain);
if ($dnsRecordIP === $domain) {
$dnsRecordIP = '';
}
// Skip domain validation if opted in to do so
if (!$this->shouldDomainValidationBeSkipped()) {
// Validate IP
if(!filter_var($dnsRecordIP, FILTER_VALIDATE_IP)) {
throw new InvalidSettingConfigurationException("DNS config is not set for this domain or the domain is not a valid domain! (It was found to be set to '" . $dnsRecordIP . "')");
}
$dnsRecordIP = gethostbyname($domain);
if ($dnsRecordIP === $domain) {
$dnsRecordIP = '';
}
if (!filter_var($dnsRecordIP, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
throw new InvalidSettingConfigurationException("It seems like the ip-address is set to an internal or reserved ip-address. This is not supported. (It was found to be set to '" . $dnsRecordIP . "')");
}
if (empty($dnsRecordIP)) {
$record = dns_get_record($domain, DNS_AAAA);
if (!empty($record)) {
$dnsRecordIP = $record[0]['ipv6'];
}
}
// Check if port 443 is open
$connection = @fsockopen($domain, 443, $errno, $errstr, 10);
if ($connection) {
fclose($connection);
} else {
throw new InvalidSettingConfigurationException("The server is not reachable on Port 443. You can verify this e.g. with 'https://portchecker.co/' by entering your domain there as ip-address and port 443 as port.");
}
// Validate IP
if (!filter_var($dnsRecordIP, FILTER_VALIDATE_IP)) {
throw new InvalidSettingConfigurationException("DNS config is not set for this domain or the domain is not a valid domain! (It was found to be set to '" . $dnsRecordIP . "')");
}
// Get Instance ID
$instanceID = $this->GetSecret('INSTANCE_ID');
// Get the apache port
$port = $this->GetApachePort();
// set protocol
$port = $this->GetApachePort();
if ($port !== '443') {
$protocol = 'https://';
} else {
$protocol = 'http://';
}
if (!filter_var($dnsRecordIP, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
$errorMessage = "It seems like the ip-address is set to an internal or reserved ip-address. This is not supported. (It was found to be set to '" . $dnsRecordIP . "')";
if ($port === '443') {
throw new InvalidSettingConfigurationException($errorMessage);
} else {
error_log($errorMessage);
}
}
// Check if response is correct
$ch = curl_init();
$testUrl = $protocol . $domain . ':443';
curl_setopt($ch, CURLOPT_URL, $testUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = (string)curl_exec($ch);
# Get rid of trailing \n
$response = str_replace("\n", "", $response);
// Check if port 443 is open
$connection = @fsockopen($domain, 443, $errno, $errstr, 10);
if ($connection) {
fclose($connection);
} else {
throw new InvalidSettingConfigurationException("The server is not reachable on Port 443. You can verify this e.g. with 'https://portchecker.co/' by entering your domain there as ip-address and port 443 as port.");
}
if ($response !== $instanceID) {
error_log('The response of the connection attempt to "' . $testUrl . '" was: ' . $response);
throw new InvalidSettingConfigurationException("Domain does not point to this server or the reverse proxy is not configured correctly. See the mastercontainer logs for more details. ('sudo docker logs -f nextcloud-aio-mastercontainer')");
// Get Instance ID
$instanceID = $this->GetAndGenerateSecret('INSTANCE_ID');
// set protocol
if ($port !== '443') {
$protocol = 'https://';
} else {
$protocol = 'http://';
}
// Check if response is correct
$ch = curl_init();
$testUrl = $protocol . $domain . ':443';
curl_setopt($ch, CURLOPT_URL, $testUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = (string)curl_exec($ch);
# Get rid of trailing \n
$response = str_replace("\n", "", $response);
if ($response !== $instanceID) {
error_log('The response of the connection attempt to "' . $testUrl . '" was: ' . $response);
error_log('Expected was: ' . $instanceID);
error_log('The error message was: ' . curl_error($ch));
throw new InvalidSettingConfigurationException("Domain does not point to this server or the reverse proxy is not configured correctly. See the mastercontainer logs for more details. ('sudo docker logs -f nextcloud-aio-mastercontainer')");
}
}
// Write domain
@@ -375,6 +434,13 @@ class ConfigurationManager
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetTalkPort() : string {
$envVariableName = 'TALK_PORT';
$configName = 'talk_port';
$defaultValue = '3478';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
/**
* @throws InvalidSettingConfigurationException
*/
@@ -382,7 +448,11 @@ class ConfigurationManager
if(!is_dir(DataConst::GetDataDirectory())) {
throw new InvalidSettingConfigurationException(DataConst::GetDataDirectory() . " does not exist! Something was set up falsely!");
}
file_put_contents(DataConst::GetConfigFile(), json_encode($config));
$df = disk_free_space(DataConst::GetDataDirectory());
if ($df !== false && (int)$df < 10240) {
throw new InvalidSettingConfigurationException(DataConst::GetDataDirectory() . " does not have enough space for writing the config file! Not writing it back!");
}
file_put_contents(DataConst::GetConfigFile(), json_encode($config, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT));
}
private function GetEnvironmentalVariableOrConfig(string $envVariableName, string $configName, string $defaultValue) : string {
@@ -460,6 +530,32 @@ class ConfigurationManager
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetNextcloudUploadLimit() : string {
$envVariableName = 'NEXTCLOUD_UPLOAD_LIMIT';
$configName = 'nextcloud_upload_limit';
$defaultValue = '10G';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetNextcloudMemoryLimit() : string {
$envVariableName = 'NEXTCLOUD_MEMORY_LIMIT';
$configName = 'nextcloud_memory_limit';
$defaultValue = '512M';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetApacheMaxSize() : int {
$uploadLimit = (int)rtrim($this->GetNextcloudUploadLimit(), 'G');
return $uploadLimit * 1024 * 1024 * 1024;
}
public function GetNextcloudMaxTime() : string {
$envVariableName = 'NEXTCLOUD_MAX_TIME';
$configName = 'nextcloud_max_time';
$defaultValue = '3600';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetDockerSocketPath() : string {
$envVariableName = 'DOCKER_SOCKET_PATH';
$configName = 'docker_socket_path';
@@ -467,10 +563,46 @@ class ConfigurationManager
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetTrustedCacertsDir() : string {
$envVariableName = 'NEXTCLOUD_TRUSTED_CACERTS_DIR';
$configName = 'trusted_cacerts_dir';
$defaultValue = '';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetNextcloudAdditionalApks() : string {
$envVariableName = 'NEXTCLOUD_ADDITIONAL_APKS';
$configName = 'nextcloud_additional_apks';
$defaultValue = 'imagemagick';
return trim($this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue));
}
public function GetNextcloudAdditionalPhpExtensions() : string {
$envVariableName = 'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS';
$configName = 'nextcloud_additional_php_extensions';
$defaultValue = 'imagick';
return trim($this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue));
}
public function GetCollaboraSeccompPolicy() : string {
$defaultString = '--o:security.seccomp=';
if ($this->GetCollaboraSeccompDisabledState() !== 'true') {
return $defaultString . 'true';
}
return $defaultString . 'false';
}
private function GetCollaboraSeccompDisabledState() : string {
$envVariableName = 'COLLABORA_SECCOMP_DISABLED';
$configName = 'collabora_seccomp_disabled';
$defaultValue = 'false';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
/**
* @throws InvalidSettingConfigurationException
*/
public function SetDailyBackupTime(string $time) : void {
public function SetDailyBackupTime(string $time, bool $enableAutomaticUpdates) : void {
if ($time === "") {
throw new InvalidSettingConfigurationException("The daily backup time must not be empty!");
}
@@ -479,6 +611,9 @@ class ConfigurationManager
throw new InvalidSettingConfigurationException("You did not enter a correct time! One correct example is '04:00'!");
}
if ($enableAutomaticUpdates === false) {
$time .= PHP_EOL . 'automaticUpdatesAreNotEnabled';
}
file_put_contents(DataConst::GetDailyBackupTimeFile(), $time);
}
@@ -486,7 +621,22 @@ class ConfigurationManager
if (!file_exists(DataConst::GetDailyBackupTimeFile())) {
return '';
}
return file_get_contents(DataConst::GetDailyBackupTimeFile());
$dailyBackupFile = file_get_contents(DataConst::GetDailyBackupTimeFile());
$dailyBackupFileArray = explode("\n", $dailyBackupFile);
return $dailyBackupFileArray[0];
}
public function areAutomaticUpdatesEnabled() : bool {
if (!file_exists(DataConst::GetDailyBackupTimeFile())) {
return false;
}
$dailyBackupFile = file_get_contents(DataConst::GetDailyBackupTimeFile());
$dailyBackupFileArray = explode("\n", $dailyBackupFile);
if (isset($dailyBackupFileArray[1]) && $dailyBackupFileArray[1] === 'automaticUpdatesAreNotEnabled') {
return false;
} else {
return true;
}
}
public function DeleteDailyBackupTime() : void {
@@ -495,6 +645,45 @@ class ConfigurationManager
}
}
/**
* @throws InvalidSettingConfigurationException
*/
public function SetAdditionalBackupDirectories(string $additionalBackupDirectories) : void {
$additionalBackupDirectoriesArray = explode("\n", $additionalBackupDirectories);
$validDirectories = '';
foreach($additionalBackupDirectoriesArray as $entry) {
// 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)) {
throw new InvalidSettingConfigurationException("You entered unallowed characters! Problematic is " . $entry);
}
$validDirectories .= rtrim($entry, '/') . PHP_EOL;
}
}
if ($validDirectories === '') {
unlink(DataConst::GetAdditionalBackupDirectoriesFile());
} else {
file_put_contents(DataConst::GetAdditionalBackupDirectoriesFile(), $validDirectories);
}
}
public function GetAdditionalBackupDirectoriesString() : string {
if (!file_exists(DataConst::GetAdditionalBackupDirectoriesFile())) {
return '';
}
$additionalBackupDirectories = file_get_contents(DataConst::GetAdditionalBackupDirectoriesFile());
return $additionalBackupDirectories;
}
public function GetAdditionalBackupDirectoriesArray() : array {
$additionalBackupDirectories = $this->GetAdditionalBackupDirectoriesString();
$additionalBackupDirectoriesArray = explode("\n", $additionalBackupDirectories);
$additionalBackupDirectoriesArray = array_unique($additionalBackupDirectoriesArray, SORT_REGULAR);
return $additionalBackupDirectoriesArray;
}
public function isDailyBackupRunning() : bool {
if (file_exists(DataConst::GetDailyBackupBlockFile())) {
return true;
@@ -533,4 +722,88 @@ class ConfigurationManager
$config['timezone'] = '';
$this->WriteConfig($config);
}
public function shouldDomainValidationBeSkipped() : bool {
if (getenv('SKIP_DOMAIN_VALIDATION') !== false) {
return true;
}
return false;
}
public function GetNextcloudStartupApps() : string {
$apps = getenv('NEXTCLOUD_STARTUP_APPS');
if (is_string($apps)) {
return trim($apps);
}
return 'deck twofactor_totp tasks calendar contacts';
}
public function GetCollaboraDictionaries() : string {
$config = $this->GetConfig();
if(!isset($config['collabora_dictionaries'])) {
$config['collabora_dictionaries'] = '';
}
return $config['collabora_dictionaries'];
}
/**
* @throws InvalidSettingConfigurationException
*/
public function SetCollaboraDictionaries(string $CollaboraDictionaries) : void {
if ($CollaboraDictionaries === "") {
throw new InvalidSettingConfigurationException("The dictionaries must not be empty!");
}
if (!preg_match("#^[a-zA-Z_ ]+$#", $CollaboraDictionaries)) {
throw new InvalidSettingConfigurationException("The entered dictionaries do not seem to be a valid!");
}
$config = $this->GetConfig();
$config['collabora_dictionaries'] = $CollaboraDictionaries;
$this->WriteConfig($config);
}
public function DeleteCollaboraDictionaries() : void {
$config = $this->GetConfig();
$config['collabora_dictionaries'] = '';
$this->WriteConfig($config);
}
public function GetApacheIPBinding() : string {
$envVariableName = 'APACHE_IP_BINDING';
$configName = 'apache_ip_binding';
$defaultValue = '';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
private function GetDisableBackupSection() : string {
$envVariableName = 'DISABLE_BACKUP_SECTION';
$configName = 'disable_backup_section';
$defaultValue = '';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function isBackupSectionEnabled() : bool {
if ($this->GetDisableBackupSection() === 'true') {
return false;
} else {
return true;
}
}
private function GetEnabledDriDevice() : string {
$envVariableName = 'NEXTCLOUD_ENABLE_DRI_DEVICE';
$configName = 'nextcloud_enable_dri_device';
$defaultValue = '';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function isDriDeviceEnabled() : bool {
if ($this->GetEnabledDriDevice() === 'true') {
return true;
} else {
return false;
}
}
}

View File

@@ -31,6 +31,10 @@ class DataConst {
return self::GetDataDirectory() . '/daily_backup_time';
}
public static function GetAdditionalBackupDirectoriesFile() : string {
return self::GetDataDirectory() . '/additional_backup_directories';
}
public static function GetDailyBackupBlockFile() : string {
return self::GetDataDirectory() . '/daily_backup_running';
}
@@ -42,4 +46,8 @@ class DataConst {
public static function GetBackupArchivesList() : string {
return self::GetDataDirectory() . '/backup_archives.list';
}
public static function GetSessionDateFile() : string {
return self::GetDataDirectory() . '/session_date_file';
}
}

View File

@@ -124,15 +124,20 @@ class DockerActionManager
}
$containerName = $container->GetIdentifier();
if ($container->GetInternalPorts() !== null) {
foreach($container->GetInternalPorts()->GetInternalPorts() as $internalPort) {
$connection = @fsockopen($containerName, $internalPort, $errno, $errstr, 0.1);
if ($connection) {
fclose($connection);
return new RunningState();
} else {
return new StartingState();
}
$internalPort = $container->GetInternalPort();
if($internalPort === '%APACHE_PORT%') {
$internalPort = $this->configurationManager->GetApachePort();
} elseif($internalPort === '%TALK_PORT%') {
$internalPort = $this->configurationManager->GetTalkPort();
}
if ($internalPort !== "" && $internalPort !== 'host') {
$connection = @fsockopen($containerName, (int)$internalPort, $errno, $errstr, 0.1);
if ($connection) {
fclose($connection);
return new RunningState();
} else {
return new StartingState();
}
} else {
return new RunningState();
@@ -162,11 +167,11 @@ class DockerActionManager
$response = "";
$separator = "\r\n";
$line = strtok($responseBody, $separator);
$response = substr($line, 8) . "\n";
$response = substr($line, 8) . $separator;
while ($line !== false) {
$line = strtok($separator);
$response .= substr($line, 8) . "\n";
$response .= substr($line, 8) . $separator;
}
return $response;
@@ -217,11 +222,6 @@ class DockerActionManager
$volumes[] = $volumeEntry;
}
$exposedPorts = [];
foreach($container->GetPorts()->GetPorts() as $port) {
$exposedPorts[$port] = null;
}
$requestBody = [
'Image' => $this->BuildImageName($container),
];
@@ -230,10 +230,22 @@ class DockerActionManager
$requestBody['HostConfig']['Binds'] = $volumes;
}
foreach($container->GetSecrets() as $secret) {
$this->configurationManager->GetAndGenerateSecret($secret);
}
$envs = $container->GetEnvironmentVariables()->GetVariables();
foreach($envs as $key => $env) {
$patterns = ['/%(.*)%/'];
// TODO: This whole block below is a hack and needs to get reworked in order to support multiple substitutions per line by default for all envs
if (str_starts_with($env, 'extra_params=')) {
$env = str_replace('%COLLABORA_SECCOMP_POLICY%', $this->configurationManager->GetCollaboraSeccompPolicy(), $env);
$env = str_replace('%NC_DOMAIN%', $this->configurationManager->GetDomain(), $env);
$envs[$key] = $env;
continue;
}
// Original implementation
$patterns = ['/%(.*)%/'];
if(preg_match($patterns[0], $env, $out) === 1) {
$replacements = array();
@@ -250,6 +262,8 @@ class DockerActionManager
$replacements[1] = $this->configurationManager->GetSelectedRestoreTime();
} elseif ($out[1] === 'APACHE_PORT') {
$replacements[1] = $this->configurationManager->GetApachePort();
} elseif ($out[1] === 'TALK_PORT') {
$replacements[1] = $this->configurationManager->GetTalkPort();
} elseif ($out[1] === 'NEXTCLOUD_MOUNT') {
$replacements[1] = $this->configurationManager->GetNextcloudMount();
} elseif ($out[1] === 'BACKUP_RESTORE_PASSWORD') {
@@ -278,8 +292,8 @@ class DockerActionManager
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'DAILY_BACKUP_RUNNING') {
if ($this->configurationManager->isDailyBackupRunning()) {
} elseif ($out[1] === 'UPDATE_NEXTCLOUD_APPS') {
if ($this->configurationManager->isDailyBackupRunning() && $this->configurationManager->areAutomaticUpdatesEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
@@ -290,8 +304,56 @@ class DockerActionManager
} else {
$replacements[1] = $this->configurationManager->GetTimezone();
}
} elseif ($out[1] === 'COLLABORA_DICTIONARIES') {
if ($this->configurationManager->GetCollaboraDictionaries() === '') {
$replacements[1] = 'de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru';
} else {
$replacements[1] = $this->configurationManager->GetCollaboraDictionaries();
}
} elseif ($out[1] === 'IMAGINARY_ENABLED') {
if ($this->configurationManager->isImaginaryEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'FULLTEXTSEARCH_ENABLED') {
if ($this->configurationManager->isFulltextsearchEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'NEXTCLOUD_UPLOAD_LIMIT') {
$replacements[1] = $this->configurationManager->GetNextcloudUploadLimit();
} elseif ($out[1] === 'NEXTCLOUD_MEMORY_LIMIT') {
$replacements[1] = $this->configurationManager->GetNextcloudMemoryLimit();
} elseif ($out[1] === 'NEXTCLOUD_MAX_TIME') {
$replacements[1] = $this->configurationManager->GetNextcloudMaxTime();
} elseif ($out[1] === 'NEXTCLOUD_TRUSTED_CACERTS_DIR') {
$replacements[1] = $this->configurationManager->GetTrustedCacertsDir();
} elseif ($out[1] === 'ADDITIONAL_DIRECTORIES_BACKUP') {
if ($this->configurationManager->GetAdditionalBackupDirectoriesString() !== '') {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'BORGBACKUP_HOST_LOCATION') {
$replacements[1] = $this->configurationManager->GetBorgBackupHostLocation();
} elseif ($out[1] === 'APACHE_MAX_SIZE') {
$replacements[1] = $this->configurationManager->GetApacheMaxSize();
} elseif ($out[1] === 'COLLABORA_SECCOMP_POLICY') {
$replacements[1] = $this->configurationManager->GetCollaboraSeccompPolicy();
} elseif ($out[1] === 'NEXTCLOUD_STARTUP_APPS') {
$replacements[1] = $this->configurationManager->GetNextcloudStartupApps();
} elseif ($out[1] === 'NEXTCLOUD_ADDITIONAL_APKS') {
$replacements[1] = $this->configurationManager->GetNextcloudAdditionalApks();
} elseif ($out[1] === 'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS') {
$replacements[1] = $this->configurationManager->GetNextcloudAdditionalPhpExtensions();
} else {
$replacements[1] = $this->configurationManager->GetSecret($out[1]);
$secret = $this->configurationManager->GetSecret($out[1]);
if ($secret === "") {
throw new \Exception("The secret " . $out[1] . " is empty. Cannot substitute its value. Pleas check if it is defined in secrets of containers.json.");
}
$replacements[1] = $secret;
}
$envs[$key] = preg_replace($patterns, $replacements, $env);
@@ -303,24 +365,68 @@ class DockerActionManager
}
$requestBody['HostConfig']['RestartPolicy']['Name'] = $container->GetRestartPolicy();
$exposedPorts = [];
if ($container->GetInternalPort() !== 'host') {
foreach($container->GetPorts()->GetPorts() as $value) {
$portWithProtocol = $value->port . '/' . $value->protocol;
$exposedPorts[$portWithProtocol] = null;
}
} else {
$requestBody['HostConfig']['NetworkMode'] = 'host';
}
if(count($exposedPorts) > 0) {
$requestBody['ExposedPorts'] = $exposedPorts;
foreach($container->GetPorts()->GetPorts() as $port) {
$portNumber = explode("/", $port);
$requestBody['HostConfig']['PortBindings'][$port] = [
foreach ($container->GetPorts()->GetPorts() as $value) {
$port = $value->port;
$ipBinding = $value->ipBinding;
$protocol = $value->protocol;
$portWithProtocol = $port . '/' . $protocol;
$requestBody['HostConfig']['PortBindings'][$portWithProtocol] = [
[
'HostPort' => $portNumber[0],
'HostPort' => $port,
'HostIp' => $ipBinding,
]
];
}
}
$devices = [];
foreach($container->GetDevices() as $device) {
if ($device === '/dev/dri' && ! $this->configurationManager->isDriDeviceEnabled()) {
continue;
}
$devices[] = ["PathOnHost" => $device, "PathInContainer" => $device, "CgroupPermissions" => "rwm"];
}
if (count($devices) > 0) {
$requestBody['HostConfig']['Devices'] = $devices;
}
// Special things for the backup container which should not be exposed in the containers.json
if ($container->GetIdentifier() === 'nextcloud-aio-borgbackup') {
$requestBody['HostConfig']['CapAdd'] = ["SYS_ADMIN"];
$requestBody['HostConfig']['Devices'] = [["PathOnHost" => "/dev/fuse", "PathInContainer" => "/dev/fuse", "CgroupPermissions" => "rwm"]];
$requestBody['HostConfig']['SecurityOpt'] = ["apparmor:unconfined"];
// Additional backup directories
$mounts = [];
foreach ($this->configurationManager->GetAdditionalBackupDirectoriesArray() as $additionalBackupDirectories) {
if ($additionalBackupDirectories !== '') {
if (!str_starts_with($additionalBackupDirectories, '/')) {
$mounts[] = ["Type" => "volume", "Source" => $additionalBackupDirectories, "Target" => "/docker_volumes/" . $additionalBackupDirectories, "ReadOnly" => true];
} else {
$mounts[] = ["Type" => "bind", "Source" => $additionalBackupDirectories, "Target" => "/host_mounts" . $additionalBackupDirectories, "ReadOnly" => true, "BindOptions" => ["NonRecursive" => true]];
}
}
}
if(count($mounts) > 0) {
$requestBody['HostConfig']['Mounts'] = $mounts;
}
// Special things for the talk container which should not be exposed in the containers.json
} elseif ($container->GetIdentifier() === 'nextcloud-aio-talk') {
// This is needed due to a bug in libwebsockets which cannot handle unlimited ulimits
$requestBody['HostConfig']['Ulimits'] = [["Name" => "nofile", "Hard" => 200000, "Soft" => 200000]];
}
$url = $this->BuildApiUrl('containers/create?name=' . $container->GetIdentifier());
@@ -470,7 +576,7 @@ class DockerActionManager
return true;
}
public function sendNotification(Container $container, string $subject, string $message) : void
public function sendNotification(Container $container, string $subject, string $message, string $file = '/notify.sh') : void
{
if ($this->GetContainerStartingState($container) instanceof RunningState) {
@@ -488,7 +594,7 @@ class DockerActionManager
'Tty' => true,
'Cmd' => [
'bash',
'/notify.sh',
$file,
$subject,
$message
],
@@ -498,7 +604,6 @@ class DockerActionManager
true
);
// get the id from the response
$id = $response['Id'];
// start the exec
@@ -538,8 +643,13 @@ class DockerActionManager
}
}
private function ConnectContainerIdToNetwork(string $id) : void
private function ConnectContainerIdToNetwork(string $id, string $internalPort) : void
{
if ($internalPort === 'host') {
return;
}
$network = 'nextcloud-aio';
$url = $this->BuildApiUrl('networks/create');
try {
$this->guzzleClient->request(
@@ -565,7 +675,7 @@ class DockerActionManager
}
$url = $this->BuildApiUrl(
sprintf('networks/%s/connect', 'nextcloud-aio')
sprintf('networks/%s/connect', $network)
);
try {
$this->guzzleClient->request(
@@ -587,12 +697,12 @@ class DockerActionManager
public function ConnectMasterContainerToNetwork() : void
{
$this->ConnectContainerIdToNetwork('nextcloud-aio-mastercontainer');
$this->ConnectContainerIdToNetwork('nextcloud-aio-mastercontainer', '');
}
public function ConnectContainerToNetwork(Container $container) : void
{
$this->ConnectContainerIdToNetwork($container->GetIdentifier());
$this->ConnectContainerIdToNetwork($container->GetIdentifier(), $container->GetInternalPort());
}
public function StopContainer(Container $container) : void {
@@ -669,4 +779,36 @@ class DockerActionManager
}
return false;
}
private function GetCreatedTimeOfNextcloudImage() : ?string {
$imageName = 'nextcloud/aio-nextcloud' . ':' . $this->GetCurrentChannel();
try {
$imageUrl = $this->BuildApiUrl(sprintf('images/%s/json', $imageName));
$imageOutput = json_decode($this->guzzleClient->get($imageUrl)->getBody()->getContents(), true);
if (!isset($imageOutput['Created'])) {
error_log('Created is not set of image ' . $imageName);
return null;
}
return str_replace('T', ' ', $imageOutput['Created']);
} catch (\Exception $e) {
return null;
}
}
public function isNextcloudImageOutdated() : bool {
$createdTime = $this->GetCreatedTimeOfNextcloudImage();
if ($createdTime === null) {
return false;
}
// If the image is older than 90 days, it is outdated.
if ((time() - (60 * 60 * 24 * 90)) > strtotime($createdTime)) {
return true;
}
return false;
}
}

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