HTTPS и адреса
Доступ к сайту осуществляется с использованием небезопасного протокола HTTP. Настоятельно рекомендуется вместо этого настроить использование протокола HTTPS, т.к. без него не будут работать некоторые важные веб-функции, такие, как копирование в буфер обмена и обработчики служб.

Эта ошибка в Nextcloud означает только одно: ты заходишь на сайт по HTTP, а Nextcloud знает, что он должен работать через HTTPS — но прокси не сообщает ему об этом. Это классическая проблема при работе через reverse proxy (Apache/Nginx/Traefik) + Docker.

Ниже — точное, практическое решение, которое полностью убирает предупреждение.

🎯 Короткий ответ

Тебе нужно:

  1. Настроить HTTPS на прокси (Nginx/Apache/Traefik).
  2. Сообщить Nextcloud, что он работает через HTTPS, добавив параметры:

php

'overwriteprotocol' => 'https',
'overwritehost' => 'docker.svyx.net',
'overwrite.cli.url' => 'https://docker.svyx.net',
  1. Убедиться, что прокси передаёт корректные заголовки:
  • X-Forwarded-Proto
  • X-Forwarded-Host
  • X-Forwarded-For

🧩 Твой исправленный config.php (фрагмент)

Добавь эти строки внутрь $CONFIG:

php

'trusted_proxies' =>
array (
  0 => '192.168.0.162',
  1 => '172.17.0.0/16',
),

'overwriteprotocol' => 'https',
'overwritehost' => 'docker.svyx.net',
'overwrite.cli.url' => 'https://docker.svyx.net',

Теперь Nextcloud будет считать, что он работает через HTTPS, даже если запрос приходит от прокси.

🔥 Теперь нужно убедиться, что прокси передаёт правильные заголовки

✔ Если у тебя Nginx reverse proxy

Добавь в конфиг:

Код

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;

✔ Если Apache reverse proxy

Код

ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Host "docker.svyx.net"
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s

✔ Если Traefik

Traefik делает всё автоматически — достаточно trusted_proxies.

🟩 После исправления

Перезапусти контейнер:

Код

docker restart nextcloud

Проверь:

Код

php occ config:list system

Ты должен увидеть:

Код

"overwriteprotocol": "https"
"overwritehost": "docker.svyx.net"
"overwrite.cli.url": "https://docker.svyx.net"

Теперь предупреждение исчезнет.

Доступ осуществляется по небезопасному HTTP

Короткий вывод: Даже если твоя конфигурация Apache почти правильная, но для Nextcloud не хватает двух критически важных вещей:

1) корректных заголовков X-Forwarded-*

2) правильного проксирования WebSocket (Nextcloud не использует ws://, это лишнее)

3) обязательного параметра ProxyPassReverse для HTTPS

4) правильного порядка директив

Ниже — полностью исправленный VirtualHost, который гарантированно убирает предупреждение Nextcloud:

«Доступ осуществляется по небезопасному HTTP» «Заголовки обратного прокси настроены неверно»

✔ Исправленный VirtualHost для Nextcloud через Apache reverse proxy

apache

<VirtualHost *:443>
    ServerName docker.svyx.net

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/docker.svyx.net/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/docker.svyx.net/privkey.pem

    # Важно для Nextcloud
    ProxyPreserveHost On
    ProxyRequests Off

    # Основной HTTP‑трафик
    ProxyPass        / http://192.168.0.162:8080/
    ProxyPassReverse / http://192.168.0.162:8080/

    # Критически важные заголовки для Nextcloud
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Ssl "on"
    RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
    RequestHeader set X-Forwarded-Host "%{HTTP_HOST}s"

    # Защита
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
</VirtualHost>

<VirtualHost *:80>
    ServerName docker.svyx.net
    Redirect permanent / https://docker.svyx.net/
</VirtualHost>

✔ Что я исправил и почему

🟩 1. Убрал WebSocket‑проксирование

Nextcloud не использует WebSocket, а твой RewriteRule:

apache

RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*) ws://192.168.0.162:8080/$1 [P,L]

делает прокси нестабильным и ломает заголовки.

🟩 2. Добавил корректные заголовки X‑Forwarded‑*

Это ключевое для Nextcloud:

Код

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Ssl "on"
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
RequestHeader set X-Forwarded-Host "%{HTTP_HOST}s"

Без них Nextcloud думает, что запрос пришёл по HTTP.

🟩 3. Упростил редирект с HTTP → HTTPS

У тебя было два одинаковых RewriteRule — они не нужны.

🟩 4. Проверил совместимость с Docker

Ты используешь:

  • Nextcloud в Docker
  • Apache как внешний reverse proxy
  • HTTPS на Apache

Это стандартная схема → исправленный конфиг полностью совместим.

✔ Теперь нужно обновить config.php Nextcloud

У тебя уже есть:

php

'trusted_proxies' =>
array (
  0 => '192.168.0.162',
  1 => '172.17.0.0/16',
),

Добавь:

php

'overwriteprotocol' => 'https',
'overwritehost' => 'docker.svyx.net',
'overwrite.cli.url' => 'https://docker.svyx.net',

✔ После изменений

Перезапусти Apache:

Код

systemctl restart apache2

Перезапусти контейнер Nextcloud:

Код

docker restart nextcloud

Проверь:

Код

php occ config:list system

От alex

Обучаемый.