Compare commits

...

48 Commits

Author SHA1 Message Date
szaimen
3ad2f2e2b1 1.0.2
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-22 17:02:22 +02:00
Simon L
bad7b8106b Merge pull request #512 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-21.11.4.1.1
Bump collabora/code from 21.11.3.6.1 to 21.11.4.1.1 in /Containers/collabora
2022-04-22 16:59:07 +02:00
Simon L
82784a0297 Merge pull request #333 from nextcloud/nextcloud-container-update
Nextcloud update
2022-04-22 16:59:01 +02:00
Simon L
1f26c70865 Update Containers/nextcloud/Dockerfile
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-22 16:56:21 +02:00
Simon L
5129fcacdd Merge pull request #513 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20220415
Bump ubuntu from focal-20220404 to focal-20220415 in /Containers/talk
2022-04-22 15:19:46 +02:00
szaimen
1c0ab8a9e3 nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-04-22 12:48:09 +00:00
dependabot[bot]
0b718acf82 Bump ubuntu from focal-20220404 to focal-20220415 in /Containers/talk
Bumps ubuntu from focal-20220404 to focal-20220415.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-22 12:46:05 +00:00
dependabot[bot]
079a944c07 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 21.11.3.6.1 to 21.11.4.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-21 12:34:40 +00:00
Julius Härtl
657e384367 Merge pull request #511 from nextcloud/automated/noid/psalm-baseline-update-1650516559
[Automated] Update psalm-baseline.xml
2022-04-21 08:25:51 +02:00
nextcloud-command
32862a4d8a Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-04-21 04:49:19 +00:00
szaimen
324d75bbee fix a few details
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-20 17:49:13 +02:00
szaimen
5d787e9167 increase to 1.0.1
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-20 17:27:15 +02:00
Simon L
a2047dc04b Merge pull request #497 from nextcloud/fix/489/channel-switch
refactor detection of available container updates
2022-04-20 17:26:26 +02:00
Simon L
5dfc30afa5 Merge pull request #510 from nextcloud/enh/495/send-notification
send notification for Nextcloud and app updates
2022-04-20 17:25:40 +02:00
Simon L
301f30dd2c Merge pull request #509 from nextcloud/enh/503/caddy-user
run caddy as different user
2022-04-20 17:24:11 +02:00
Simon L
dd751a9fe4 Merge pull request #507 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.18-apache-bullseye
Bump php from 8.0.17-apache-bullseye to 8.0.18-apache-bullseye in /Containers/mastercontainer
2022-04-20 17:21:44 +02:00
Simon L
265c0d563b Merge pull request #506 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.18-fpm-alpine3.15
Bump php from 8.0.17-fpm-alpine3.15 to 8.0.18-fpm-alpine3.15 in /Containers/nextcloud
2022-04-20 17:21:22 +02:00
Simon L
43aba16204 Merge pull request #505 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220418-slim
Bump debian from bullseye-20220328-slim to bullseye-20220418-slim in /Containers/apache
2022-04-20 17:21:06 +02:00
Simon L
324a1156a0 Merge pull request #504 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220418-slim
Bump debian from bullseye-20220328-slim to bullseye-20220418-slim in /Containers/borgbackup
2022-04-20 17:20:50 +02:00
szaimen
d994512140 add info regarding reverse proxy in docker container
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-20 17:19:28 +02:00
szaimen
130ca73dd2 send notification for Nextcloud and app updates
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-20 17:16:43 +02:00
szaimen
456f26b9d5 run caddy as different user
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-20 17:02:57 +02:00
dependabot[bot]
37997cc091 Bump php in /Containers/mastercontainer
Bumps php from 8.0.17-apache-bullseye to 8.0.18-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-04-20 12:53:41 +00:00
dependabot[bot]
f3a7dfafa2 Bump php in /Containers/nextcloud
Bumps php from 8.0.17-fpm-alpine3.15 to 8.0.18-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-04-20 12:53:36 +00:00
dependabot[bot]
6be5bb6370 Bump debian in /Containers/apache
Bumps debian from bullseye-20220328-slim to bullseye-20220418-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-20 12:52:45 +00:00
dependabot[bot]
a6ffb5495e Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220328-slim to bullseye-20220418-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-20 12:52:41 +00:00
szaimen
3e59616b5d remove the found a bug notice
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-18 12:06:02 +02:00
szaimen
9930a368f0 fix switching between channels
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-17 13:57:22 +02:00
szaimen
ed319492f1 wrap password change section
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-16 11:34:22 +02:00
szaimen
a0cef69483 rework setup screen
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-14 20:25:08 +02:00
szaimen
d37a0f509d change link
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-14 15:07:12 +02:00
szaimen
3c34963504 add a disclaimer to the nginx config
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-14 15:04:19 +02:00
szaimen
460469feb4 this is also needed
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-13 17:06:57 +02:00
szaimen
c642f03d43 seems like this is needed anyways
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-13 16:55:55 +02:00
szaimen
1c172b4dd7 mention OnlyOffice and ClamAV
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-13 16:21:58 +02:00
szaimen
3a79002322 improve channel info
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-13 15:56:12 +02:00
Simon L
8aeee368d4 Merge pull request #468 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-21.11.3.6.1
Bump collabora/code from 21.11.3.4.1 to 21.11.3.6.1 in /Containers/collabora
2022-04-13 15:42:22 +02:00
Simon L
541aa9c6c0 Merge pull request #478 from nextcloud/enh/noid/update-handling
improve update handling when changing channels
2022-04-13 15:41:06 +02:00
szaimen
627e9d325f fix domain config
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-13 15:39:32 +02:00
Simon L
1c85e3e825 Merge pull request #479 from nextcloud/aio-dependency-update
Dependency updates
2022-04-13 15:31:27 +02:00
Simon L
c4a8fef8e9 Merge pull request #487 from nextcloud/enh/276/beta-channel
add a beta channel
2022-04-13 15:20:47 +02:00
szaimen
76cbefafb5 adjust documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-13 15:14:30 +02:00
szaimen
68447c9211 fix reviewdog
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-13 14:50:10 +02:00
szaimen
810d0590eb add a beta channel
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-13 14:39:00 +02:00
szaimen
3c81a90920 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-04-10 12:14:47 +00:00
szaimen
d2cadf6b9f improve update handling when changing channels
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-09 14:17:53 +02:00
szaimen
18b3c76a67 update config to redirecto to discussions for questions
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-09 13:30:28 +02:00
dependabot[bot]
7312dac0f8 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 21.11.3.4.1 to 21.11.3.6.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-07 12:26:50 +00:00
22 changed files with 194 additions and 147 deletions

View File

@@ -1,9 +1,12 @@
blank_issues_enabled: false
contact_links:
- name: 💡 Suggest a new feature or discuss one
url: https://github.com/nextcloud/all-in-one/discussions
url: https://github.com/nextcloud/all-in-one/discussions/categories/ideas
about: For new feature requests and discussion of existing ones
- name: Community Support and Help
- name: Questions on AIO
url: https://github.com/nextcloud/all-in-one/discussions/categories/questions
about: For questions regarding AIO
- name: ⛑️ Community Support and Help
url: https://help.nextcloud.com/tag/aio
about: For other types of questions
- name: 💼 Nextcloud Enterprise

View File

@@ -11,6 +11,8 @@ jobs:
steps:
- name: spelling or typos
uses: actions/checkout@v3
- name: fix permission for reviewdog
run: sudo chown -R root:root $GITHUB_WORKSPACE
- name: misspell
uses: reviewdog/action-misspell@v1
with:

View File

@@ -1,7 +1,7 @@
# Caddy is a requirement
FROM caddy:2.4.6-alpine as caddy
FROM debian:bullseye-20220328-slim
FROM debian:bullseye-20220418-slim
EXPOSE 80

View File

@@ -1,4 +1,4 @@
FROM debian:bullseye-20220328-slim
FROM debian:bullseye-20220418-slim
RUN set -ex; \
\

View File

@@ -1,2 +1,2 @@
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
FROM collabora/code:21.11.3.4.1
FROM collabora/code:21.11.4.1.1

View File

@@ -5,7 +5,7 @@ FROM docker:20.10.14-dind-alpine3.15 as dind
FROM caddy:2.4.6-alpine as caddy
# From https://github.com/docker-library/php/blob/master/8.0/bullseye/apache/Dockerfile
FROM php:8.0.17-apache-bullseye
FROM php:8.0.18-apache-bullseye
EXPOSE 80
EXPOSE 8080
@@ -92,7 +92,8 @@ COPY supervisord.conf /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /cron.sh; \
chmod +x /session-deduplicator.sh; \
chmod +x /backup-time-file-watcher.sh
chmod +x /backup-time-file-watcher.sh; \
chmod a+r /Caddyfile
USER root

View File

@@ -127,7 +127,7 @@ chmod 770 -R /mnt/docker-aio-config
chmod 777 /mnt/docker-aio-config
chown www-data:www-data -R /mnt/docker-aio-config/data/
chown www-data:www-data -R /mnt/docker-aio-config/session/
chown root:root -R /mnt/docker-aio-config/caddy/
chown www-data:www-data -R /mnt/docker-aio-config/caddy/
chown root:root -R /mnt/docker-aio-config/certs/
# Adjust certs

View File

@@ -20,7 +20,7 @@ stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/usr/bin/caddy run -config /Caddyfile
command=sudo -u www-data /usr/bin/caddy run -config /Caddyfile
[program:cron]
stdout_logfile=/dev/stdout

View File

@@ -1,5 +1,5 @@
# From https://github.com/nextcloud/docker/blob/master/23/fpm-alpine/Dockerfile
FROM php:8.0.17-fpm-alpine3.15
FROM php:8.0.18-fpm-alpine3.15
# Custom: change id of www-data user as it needs to be the same like on old installations
RUN set -ex; \
@@ -61,7 +61,7 @@ RUN set -ex; \
\
# pecl will claim success even if one install fails, so we need to perform each install separately
pecl install APCu-5.1.21; \
pecl install memcached-3.1.5; \
pecl install memcached-3.2.0; \
pecl install redis-5.3.7; \
pecl install imagick-3.7.0; \
\
@@ -105,7 +105,7 @@ RUN { \
VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 23.0.3
ENV NEXTCLOUD_VERSION 23.0.4
RUN set -ex; \
apk add --no-cache --virtual .fetch-deps \

View File

@@ -211,9 +211,12 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
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."
bash /notify.sh "Nextcloud update to $image_version failed!" "Please restore from backup!"
exit 1
fi
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
@@ -233,7 +236,10 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
# Performing update of all apps if daily backups are enabled, running and successful
if [ "$DAILY_BACKUP_RUNNING" = 'yes' ]; then
php /var/www/html/occ app:update --all
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
fi

View File

@@ -1,4 +1,4 @@
FROM ubuntu:focal-20220404
FROM ubuntu:focal-20220415
EXPOSE 3478

View File

@@ -18,7 +18,12 @@ It will now also select the developer channel for all other containers automatic
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 latest
## 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-latest.yml, click on `Run workflow` and enter your desired container image name that you want to publish from develop to latest. Available image names are listed here: https://github.com/nextcloud-releases/all-in-one/blob/main/.github/workflows/build_images.yml#L21-L30
2. Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/promote-to-beta.yml, click on `Run workflow`.
## 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`.

146
php/composer.lock generated
View File

@@ -387,6 +387,65 @@
},
"time": "2021-07-21T13:50:14+00:00"
},
{
"name": "laravel/serializable-closure",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
"reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/9e4b005daa20b0c161f3845040046dc9ddc1d74e",
"reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e",
"shasum": ""
},
"require": {
"php": "^7.3|^8.0"
},
"require-dev": {
"pestphp/pest": "^1.18",
"phpstan/phpstan": "^0.12.98",
"symfony/var-dumper": "^5.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Laravel\\SerializableClosure\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
},
{
"name": "Nuno Maduro",
"email": "nuno@laravel.com"
}
],
"description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.",
"keywords": [
"closure",
"laravel",
"serializable"
],
"support": {
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
"time": "2022-02-11T19:23:53+00:00"
},
{
"name": "nikic/fast-route",
"version": "v1.3.0",
@@ -437,71 +496,6 @@
},
"time": "2018-02-13T20:26:39+00:00"
},
{
"name": "opis/closure",
"version": "3.6.3",
"source": {
"type": "git",
"url": "https://github.com/opis/closure.git",
"reference": "3d81e4309d2a927abbe66df935f4bb60082805ad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad",
"reference": "3d81e4309d2a927abbe66df935f4bb60082805ad",
"shasum": ""
},
"require": {
"php": "^5.4 || ^7.0 || ^8.0"
},
"require-dev": {
"jeremeamia/superclosure": "^2.0",
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.6.x-dev"
}
},
"autoload": {
"files": [
"functions.php"
],
"psr-4": {
"Opis\\Closure\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marius Sarca",
"email": "marius.sarca@gmail.com"
},
{
"name": "Sorin Sarca",
"email": "sarca_sorin@hotmail.com"
}
],
"description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
"homepage": "https://opis.io/closure",
"keywords": [
"anonymous functions",
"closure",
"function",
"serializable",
"serialization",
"serialize"
],
"support": {
"issues": "https://github.com/opis/closure/issues",
"source": "https://github.com/opis/closure/tree/3.6.3"
},
"time": "2022-01-27T09:35:39+00:00"
},
{
"name": "php-di/invoker",
"version": "2.3.3",
@@ -559,21 +553,21 @@
},
{
"name": "php-di/php-di",
"version": "6.3.5",
"version": "6.4.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-DI/PHP-DI.git",
"reference": "b8126d066ce144765300ee0ab040c1ed6c9ef588"
"reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/b8126d066ce144765300ee0ab040c1ed6c9ef588",
"reference": "b8126d066ce144765300ee0ab040c1ed6c9ef588",
"url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/ae0f1b3b03d8b29dff81747063cbfd6276246cc4",
"reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4",
"shasum": ""
},
"require": {
"opis/closure": "^3.5.5",
"php": ">=7.2.0",
"laravel/serializable-closure": "^1.0",
"php": ">=7.4.0",
"php-di/invoker": "^2.0",
"php-di/phpdoc-reader": "^2.0.1",
"psr/container": "^1.0"
@@ -582,12 +576,12 @@
"psr/container-implementation": "^1.0"
},
"require-dev": {
"doctrine/annotations": "~1.2",
"doctrine/annotations": "~1.10",
"friendsofphp/php-cs-fixer": "^2.4",
"mnapoli/phpunit-easymock": "^1.2",
"ocramius/proxy-manager": "^2.0.2",
"ocramius/proxy-manager": "^2.11.2",
"phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^8.5|^9.0"
"phpunit/phpunit": "^9.5"
},
"suggest": {
"doctrine/annotations": "Install it if you want to use annotations (version ~1.2)",
@@ -619,7 +613,7 @@
],
"support": {
"issues": "https://github.com/PHP-DI/PHP-DI/issues",
"source": "https://github.com/PHP-DI/PHP-DI/tree/6.3.5"
"source": "https://github.com/PHP-DI/PHP-DI/tree/6.4.0"
},
"funding": [
{
@@ -631,7 +625,7 @@
"type": "tidelift"
}
],
"time": "2021-09-02T09:49:58+00:00"
"time": "2022-04-09T16:46:38+00:00"
},
{
"name": "php-di/phpdoc-reader",

View File

@@ -168,7 +168,7 @@
"9980"
],
"environmentVariables": [
"domain=%NC_DOMAIN%",
"aliasgroup1=https://%NC_DOMAIN%:443",
"extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning"
],
"volumes": [],

View File

@@ -60,9 +60,6 @@
<InvalidScalarArgument occurrences="1">
<code>$internalPort</code>
</InvalidScalarArgument>
<PossiblyFalseOperand occurrences="1">
<code>strpos($fullDigest, "@")</code>
</PossiblyFalseOperand>
<RedundantCondition occurrences="1">
<code>$container-&gt;GetInternalPorts() !== null</code>
</RedundantCondition>

View File

@@ -97,14 +97,21 @@ class DockerActionManager
{
$tag = $this->GetCurrentChannel();
$runningDigest = $this->GetRepoDigestOfContainer($container->GetIdentifier());
$remoteDigest = $this->dockerHubManager->GetLatestDigestOfTag($container->GetContainerName(), $tag);
if ($runningDigest === $remoteDigest || $remoteDigest === null || $runningDigest === null) {
return new VersionEqualState();
} else {
$runningDigests = $this->GetRepoDigestsOfContainer($container->GetIdentifier());
if ($runningDigests === null) {
return new VersionDifferentState();
}
$remoteDigest = $this->dockerHubManager->GetLatestDigestOfTag($container->GetContainerName(), $tag);
if ($remoteDigest === null) {
return new VersionEqualstate();
}
foreach($runningDigests as $runningDigest) {
if ($runningDigest === $remoteDigest) {
return new VersionEqualState();
}
}
return new VersionDifferentState();
}
public function GetContainerStartingState(Container $container) : IContainerState
@@ -358,7 +365,7 @@ class DockerActionManager
}
}
private function GetRepoDigestOfContainer(string $containerName) : ?string {
private function GetRepoDigestsOfContainer(string $containerName) : ?array {
try {
$containerUrl = $this->BuildApiUrl(sprintf('containers/%s/json', $containerName));
$containerOutput = json_decode($this->guzzleClient->get($containerUrl)->getBody()->getContents(), true);
@@ -367,15 +374,34 @@ class DockerActionManager
$imageUrl = $this->BuildApiUrl(sprintf('images/%s/json', $imageName));
$imageOutput = json_decode($this->guzzleClient->get($imageUrl)->getBody()->getContents(), true);
if(isset($imageOutput['RepoDigests']) && count($imageOutput['RepoDigests']) === 1) {
$fullDigest = $imageOutput['RepoDigests'][0];
if (!isset($imageOutput['RepoDigests'])) {
error_log('RepoDigests is not set of container ' . $containerName);
return null;
}
return substr($fullDigest, strpos($fullDigest, "@") + 1);
if (!is_array($imageOutput['RepoDigests'])) {
error_log('RepoDigests of ' . $containerName . ' is not an array which is not allowed!');
return null;
}
$repoDigestArray = [];
$oneDigestGiven = false;
foreach($imageOutput['RepoDigests'] as $repoDigest) {
$digestPosition = strpos($repoDigest, '@');
if ($digestPosition === false) {
error_log('Somehow the RepoDigest of ' . $containerName . ' does not contain a @.');
return null;
}
$repoDigestArray[] = substr($repoDigest, $digestPosition + 1);
$oneDigestGiven = true;
}
if ($oneDigestGiven) {
return $repoDigestArray;
}
return null;
} catch (\Exception $e) {
error_log('Could not get digest of container ' . $this->BuildApiUrl($containerName) . ' ' . $e->getMessage());
return null;
}
}
@@ -410,14 +436,21 @@ class DockerActionManager
$tag = $this->GetCurrentChannel();
$runningDigest = $this->GetRepoDigestOfContainer($containerName);
$remoteDigest = $this->dockerHubManager->GetLatestDigestOfTag($imageName, $tag);
if ($remoteDigest === $runningDigest || $remoteDigest === null || $runningDigest === null) {
return false;
} else {
$runningDigests = $this->GetRepoDigestsOfContainer($containerName);
if ($runningDigests === null) {
return true;
}
$remoteDigest = $this->dockerHubManager->GetLatestDigestOfTag($imageName, $tag);
if ($remoteDigest === null) {
return false;
}
foreach ($runningDigests as $runningDigest) {
if ($remoteDigest === $runningDigest) {
return false;
}
}
return true;
}
public function sendNotification(Container $container, string $subject, string $message) : void

View File

@@ -52,8 +52,10 @@ class DockerHubManager
}
}
error_log('Could not get digest of container ' . $name . ':' . $tag);
return null;
} catch (\Exception $e) {
error_log('Could not get digest of container ' . $name . ':' . $tag . ' ' . $e->getMessage());
return null;
}
}

View File

@@ -16,8 +16,7 @@
</header>
<div class="content">
<h1>Nextcloud AIO Beta v0.10.0</h1>
This is beta software and not production ready.<br><br>
<h1>Nextcloud AIO v1.0.2</h1>
{% set isAnyRunning = false %}
{% set isAnyRestarting = false %}
@@ -158,7 +157,7 @@
{% endif %}
{% if domain != "" and was_start_button_clicked == true %}
You are running the <b>{{ current_channel }}</b> channel. (<a href="/api/docker/logs?id=nextcloud-aio-mastercontainer">Logs</a>)<br><br>
You are running the <a href="https://github.com/nextcloud/all-in-one#how-to-switch-the-channel"><b>{{ current_channel }}</b></a> channel. (<a href="/api/docker/logs?id=nextcloud-aio-mastercontainer">Logs</a>)<br><br>
{% endif %}
{% if is_backup_container_running == true %}

View File

@@ -1,23 +1,23 @@
{% extends "layout.twig" %}
{% block body %}
<div class="login-wrapper">
<div class="login">
<img src="/img/logo-blue.svg" style="margin-left: auto;margin-right: auto;display: block;">
<h1>Nextcloud AIO Login</h1>
{% if is_login_allowed == true %}
<p>Log in using your Nextcloud AIO password.</p>
<form method="POST" action="/api/auth/login">
<input type="text" name="password" placeholder="Password" />
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input type="submit" class="button" value="Login" />
</form>
{% else %}
<p>The login is blocked since Nextcloud is running. Please use the automatic login from your Nextcloud.<br><br>
You can unblock the login by running 'sudo docker stop nextcloud-aio-apache'.</p>
{% endif %}
</div>
</div>
{% endblock %}
{% extends "layout.twig" %}
{% block body %}
<div class="login-wrapper">
<div class="login">
<img src="/img/logo-blue.svg" style="margin-left: auto;margin-right: auto;display: block;">
<h1>Nextcloud AIO Login</h1>
{% if is_login_allowed == true %}
<p>Log in using your Nextcloud AIO password:</p>
<form method="POST" action="/api/auth/login">
<input type="text" name="password" placeholder="Password" />
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input type="submit" class="button" value="Login" />
</form>
{% else %}
<p>The login is blocked since Nextcloud is running. Please use the automatic login from your Nextcloud.<br><br>
You can unblock the login by running 'sudo docker stop nextcloud-aio-apache'.</p>
{% endif %}
</div>
</div>
{% endblock %}

View File

@@ -4,7 +4,8 @@
<div class="login-wrapper">
<div class="login">
<img src="/img/logo-blue.svg" style="margin-left: auto;margin-right: auto;display: block;">
<h1>Your password for Nextcloud AIO Beta</h1>
<h1>Nextcloud AIO setup</h1>
<p>Nextcloud AIO stands for Nextcloud All In One and provides easy deployment and maintenance with most features included in this one Nextcloud instance.</p>
<p>Please note down the password to access the AIO interface and don't loose it!</p>
<strong>Password</strong><br/> <span class="monospace">{{ password }}</span><br>
<a href="/" class="button" target="_blank" rel="noopener">Open Nextcloud AIO login ↗</a>

View File

@@ -1,8 +1,4 @@
# Nextcloud All In One Beta
This is beta software and not production ready.
But feel free to use it at your own risk!
We expect there to be rough edges and potentially serious bugs.
# Nextcloud All In One
Nextcloud AIO stands for Nextcloud All In One and provides easy deployment and maintenance with most features included in this one Nextcloud instance.
Included are:
@@ -11,8 +7,8 @@ Included are:
- High performance backend for Nextcloud Files
- High performance backend for Nextcloud Talk
- Backup solution (based on [BorgBackup](https://github.com/borgbackup/borg#what-is-borgbackup))
**Found a bug?** Please file an issue at https://github.com/nextcloud/all-in-one
- OnlyOffice
- ClamAV
## How to use this?
The following instructions are especially meant for Linux. For macOS see [this](#how-to-run-it-on-macos), for Windows see [this](#how-to-run-it-on-windows).
@@ -106,6 +102,9 @@ Simply run the following: `sudo docker exec -it nextcloud-aio-nextcloud php occ
### How to resolve `Security & setup warnings displays the "missing default phone region" after initial install`?
Simply run the following command: `sudo docker exec -it nextcloud-aio-nextcloud php occ config:system:set default_phone_region --value="yourvalue"`. Of course you need to modify `yourvalue` based on your location. Examples are `DE`, `EN` and `GB`. See this list for more codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements
### How to switch the channel?
You can switch to a different channel like e.g. the beta channel or from the beta channel back to the latest channel by stopping the mastercontainer, removing it (no data will be lost) and recreating the container using the same command that you used initially to create the mastercontainer. For the beta channel on x64 you need to change the last line `nextcloud/all-in-one:latest` to `nextcloud/all-in-one:beta` and vice versa. For arm64 it is `nextcloud/all-in-one:latest-arm64` and `nextcloud/all-in-one:beta-arm64`, respectively.
### How to update the containers?
If we push new containers to `latest`, you will see in the AIO interface below the `containers` section that new container updates were found. In this case, just press `Stop containers` and `Start containers` in order to update the containers. The mastercontainer has its own update procedure though. See below. And don't forget to back up the current state of your instance using the built-in backup solution before starting the containers again! Otherwise you won't be able to restore your instance easily if something should break during the update.

View File

@@ -4,6 +4,8 @@ Basically, you need to specify the port that the apache container shall use and
All examples below will use port `11000` as example apache port. Also it is supposed that the reverse proxy runs on the same server like AIO, hence `localhost` is used and not an internal ip-address to point to the AIO instance. Modify both to your needings.
**Info:** The instructions below assume that your reverse proxy is installed directly on the host, not inside a separate docker container. If you want to run the reverse proxy inside a docker container, you can do so by using the `--network host` option when starting the reverse proxy container.
### Reverse proxy config examples
#### Caddy
@@ -31,6 +33,9 @@ Of course you need to modify `<your-nc-domain>` to the domain on which you want
<summary>click here to expand</summary>
<br>
**Disclaimer:** the config below is not working 100% correctly, yet. See e.g. https://github.com/nextcloud/all-in-one/issues/450, https://github.com/nextcloud/all-in-one/issues/447 and https://github.com/nextcloud/all-in-one/issues/491. Improvements to it are very welcome!
Add this to you nginx config:
```