173 lines
5.2 KiB
Bash
173 lines
5.2 KiB
Bash
(
|
|
echo "============================================================"
|
|
echo "NEXTCLOUD DIAGNOSTIC"
|
|
echo "Date: $(date)"
|
|
echo "============================================================"
|
|
echo
|
|
|
|
run() {
|
|
echo
|
|
echo "============================================================"
|
|
echo "COMMAND:"
|
|
echo "$*"
|
|
echo "============================================================"
|
|
"$@" 2>&1
|
|
echo
|
|
echo "EXIT CODE: $?"
|
|
}
|
|
|
|
echo "### 1. Docker containers"
|
|
run docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}'
|
|
|
|
echo "### 2. Nextcloud status"
|
|
run docker exec nextcloud php occ status
|
|
|
|
echo "### 3. Effective Nextcloud configuration"
|
|
echo 'COMMAND: docker exec nextcloud php -r ...'
|
|
docker exec nextcloud php -r '
|
|
$CONFIG = [];
|
|
|
|
include "/var/www/html/config/config.php";
|
|
|
|
if (file_exists("/var/www/html/config/zz-docker-env.config.php")) {
|
|
include "/var/www/html/config/zz-docker-env.config.php";
|
|
}
|
|
|
|
echo "dbtype: " . ($CONFIG["dbtype"] ?? "MISSING") . PHP_EOL;
|
|
echo "dbhost: " . ($CONFIG["dbhost"] ?? "MISSING") . PHP_EOL;
|
|
echo "dbname: " . ($CONFIG["dbname"] ?? "MISSING") . PHP_EOL;
|
|
echo "dbuser: " . ($CONFIG["dbuser"] ?? "MISSING") . PHP_EOL;
|
|
echo "dbpassword: " . (empty($CONFIG["dbpassword"] ?? "") ? "EMPTY" : "SET") . PHP_EOL;
|
|
echo "instanceid: " . ($CONFIG["instanceid"] ?? "MISSING") . PHP_EOL;
|
|
echo "version: " . ($CONFIG["version"] ?? "MISSING") . PHP_EOL;
|
|
echo "datadirectory: " . ($CONFIG["datadirectory"] ?? "MISSING") . PHP_EOL;
|
|
echo "overwrite.cli.url: " . ($CONFIG["overwrite.cli.url"] ?? "MISSING") . PHP_EOL;
|
|
echo "overwriteprotocol: " . ($CONFIG["overwriteprotocol"] ?? "MISSING") . PHP_EOL;
|
|
|
|
echo "redis.host: " . ($CONFIG["redis"]["host"] ?? "MISSING") . PHP_EOL;
|
|
echo "redis.password: " . (empty($CONFIG["redis"]["password"] ?? "") ? "EMPTY" : "SET") . PHP_EOL;
|
|
|
|
echo "trusted_domains:" . PHP_EOL;
|
|
foreach (($CONFIG["trusted_domains"] ?? []) as $domain) {
|
|
echo " - " . $domain . PHP_EOL;
|
|
}
|
|
|
|
echo "trusted_proxies:" . PHP_EOL;
|
|
foreach (($CONFIG["trusted_proxies"] ?? []) as $proxy) {
|
|
echo " - " . $proxy . PHP_EOL;
|
|
}
|
|
' 2>&1
|
|
echo "EXIT CODE: $?"
|
|
|
|
echo
|
|
echo "### 4. Test MariaDB connection"
|
|
echo 'COMMAND: docker exec nextcloud php -r ...'
|
|
docker exec nextcloud php -r '
|
|
$CONFIG = [];
|
|
|
|
include "/var/www/html/config/config.php";
|
|
|
|
if (file_exists("/var/www/html/config/zz-docker-env.config.php")) {
|
|
include "/var/www/html/config/zz-docker-env.config.php";
|
|
}
|
|
|
|
try {
|
|
$dsn = "mysql:host=" . $CONFIG["dbhost"] .
|
|
";dbname=" . $CONFIG["dbname"];
|
|
|
|
$pdo = new PDO(
|
|
$dsn,
|
|
$CONFIG["dbuser"],
|
|
$CONFIG["dbpassword"],
|
|
[
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
|
|
]
|
|
);
|
|
|
|
echo "PASS: MariaDB connection works" . PHP_EOL;
|
|
|
|
} catch (Throwable $e) {
|
|
echo "FAIL: MariaDB connection failed" . PHP_EOL;
|
|
echo $e->getMessage() . PHP_EOL;
|
|
}
|
|
' 2>&1
|
|
echo "EXIT CODE: $?"
|
|
|
|
echo
|
|
echo "### 5. Nextcloud config directory"
|
|
run docker exec nextcloud ls -la /var/www/html/config
|
|
|
|
echo "### 6. Nextcloud root directory"
|
|
run docker exec nextcloud ls -la /var/www/html
|
|
|
|
echo "### 7. Nextcloud data directory"
|
|
run docker exec nextcloud sh -c 'ls -ld /var/www/html/data && ls -la /var/www/html/data | head -30'
|
|
|
|
echo "### 8. Config.php syntax"
|
|
run docker exec nextcloud php -l /var/www/html/config/config.php
|
|
|
|
echo "### 9. zz-docker-env.config.php syntax"
|
|
run docker exec nextcloud php -l /var/www/html/config/zz-docker-env.config.php
|
|
|
|
echo "### 10. Docker environment"
|
|
echo 'COMMAND: docker exec nextcloud env'
|
|
docker exec nextcloud env 2>&1 |
|
|
sed -E \
|
|
-e 's/(MYSQL_PASSWORD=).*/\1[REDACTED]/' \
|
|
-e 's/(MYSQL_ROOT_PASSWORD=).*/\1[REDACTED]/' \
|
|
-e 's/(REDIS_PASSWORD=).*/\1[REDACTED]/' \
|
|
-e 's/(NEXTCLOUD_ADMIN_PASSWORD=).*/\1[REDACTED]/'
|
|
echo "EXIT CODE: ${PIPESTATUS[0]}"
|
|
|
|
echo "### 11. Nextcloud container logs"
|
|
run docker logs --tail 20 nextcloud
|
|
|
|
echo "### 12. MariaDB container logs"
|
|
run docker logs --tail 20 nextcloud-db
|
|
|
|
echo "### 13. Nextcloud application log"
|
|
echo 'COMMAND: docker exec nextcloud sh -c ...'
|
|
docker exec nextcloud sh -c '
|
|
if [ -f /var/www/html/data/nextcloud.log ]; then
|
|
tail -2 /var/www/html/data/nextcloud.log
|
|
else
|
|
echo "nextcloud.log not found"
|
|
fi
|
|
' 2>&1
|
|
echo "EXIT CODE: $?"
|
|
|
|
echo "### 14. Network"
|
|
run docker inspect nextcloud --format '{{json .NetworkSettings.Networks}}'
|
|
|
|
echo "### 15. Database network"
|
|
run docker inspect nextcloud-db --format '{{json .NetworkSettings.Networks}}'
|
|
|
|
echo "### 16. Docker Compose configuration"
|
|
echo 'COMMAND: docker compose config'
|
|
docker compose config 2>&1 |
|
|
sed -E \
|
|
-e 's/(MYSQL_PASSWORD:).*/\1 [REDACTED]/' \
|
|
-e 's/(MYSQL_ROOT_PASSWORD:).*/\1 [REDACTED]/' \
|
|
-e 's/(REDIS_PASSWORD:).*/\1 [REDACTED]/' \
|
|
-e 's/(NEXTCLOUD_ADMIN_PASSWORD:).*/\1 [REDACTED]/'
|
|
|
|
echo "### 17. Disk space"
|
|
run df -h
|
|
|
|
echo "### 18. Docker volumes/mounts"
|
|
echo 'COMMAND: docker inspect nextcloud --format ...'
|
|
docker inspect nextcloud \
|
|
--format '{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}' \
|
|
2>&1
|
|
|
|
echo
|
|
echo "============================================================"
|
|
echo "END OF DIAGNOSTIC"
|
|
echo "============================================================"
|
|
|
|
) 2>&1 | tee nextcloud-diagnostic.txt
|
|
|
|
echo
|
|
echo "Diagnostic saved to:"
|
|
echo " $(pwd)/nextcloud-diagnostic.txt"
|