Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
wiki:articles:nc15 [19/03/2023 18:12] – [VNC] graf | wiki:articles:nc15 [24/04/2024 19:53] (текущий) – [Улучшения] graf | ||
---|---|---|---|
Строка 377: | Строка 377: | ||
; Объем памяти для интернированных строк в Мбайт | ; Объем памяти для интернированных строк в Мбайт | ||
- | opcache.interned_strings_buffer = 16 | + | opcache.interned_strings_buffer = 128 |
; Максимальное количество ключей (скриптов) в хэш-таблице OPcache. | ; Максимальное количество ключей (скриптов) в хэш-таблице OPcache. | ||
Строка 488: | Строка 488: | ||
Устанавливаем необходимые пакеты для получения бесплатных сертификатов от центра сертификации // | Устанавливаем необходимые пакеты для получения бесплатных сертификатов от центра сертификации // | ||
< | < | ||
- | # sbopkg -Bki " | + | # pip install pyparsing requests importlib_metadata cryptography josepy |
- | pyrfc3339 pytz python-parsedatetime | + | # sbopkg -Bi " |
+ | pyrfc3339 pytz python-parsedatetime augeas pyOpenSSL | ||
+ | python3-configargparse | ||
</ | </ | ||
Строка 507: | Строка 509: | ||
... | ... | ||
... | ... | ||
+ | </ | ||
+ | |||
+ | Чтобы сертификаты автоматически обновлялись, | ||
+ | < | ||
+ | certbot renew --pre-hook "/ | ||
+ | </ | ||
+ | |||
+ | Добавим в //cron// задачу по запуску этого скрипта 25 числа каждые 2 месяца в 1:30 ночи: | ||
+ | < | ||
+ | # Обновление сертификатов | ||
+ | 30 01 25 */2 * / | ||
+ | </ | ||
+ | |||
+ | В /// | ||
+ | < | ||
+ | Listen 443 | ||
+ | |||
+ | SSLCipherSuite HIGH: | ||
+ | SSLProxyCipherSuite HIGH: | ||
+ | |||
+ | SSLHonorCipherOrder on | ||
+ | SSLProtocol all -SSLv3 | ||
+ | SSLProxyProtocol all -SSLv3 | ||
+ | |||
+ | SSLPassPhraseDialog | ||
+ | |||
+ | SSLSessionCache | ||
+ | SSLSessionCacheTimeout | ||
+ | |||
+ | BrowserMatch "MSIE [2-5]" \ | ||
+ | nokeepalive ssl-unclean-shutdown \ | ||
+ | downgrade-1.0 force-response-1.0 | ||
</ | </ | ||
Строка 652: | Строка 686: | ||
Далее пойдёт описание интеграции //CODE// в наш // | Далее пойдёт описание интеграции //CODE// в наш // | ||
+ | Если у вас запрещено использование **IPv6**, то необходимо его разрешить.\\ | ||
Для работы //CODE// будем использовать его образ в Docker-контейнере.\\ | Для работы //CODE// будем использовать его образ в Docker-контейнере.\\ | ||
Поэтому, | Поэтому, | ||
Строка 1018: | Строка 1053: | ||
Там интуитивно понятно что и куда прописывать. | Там интуитивно понятно что и куда прописывать. | ||
- | ===== VNC ===== | + | ===== VNC как внешняя ссылка |
Подключимся к удaлённому рабочему столу прямо из web-интерфейса Nextcloud.\\ | Подключимся к удaлённому рабочему столу прямо из web-интерфейса Nextcloud.\\ | ||
Я покажу пример для подключения нескольких рабочих столов при помощи // | Я покажу пример для подключения нескольких рабочих столов при помощи // | ||
+ | Делаем всё на сервере Nextcloud.\\ | ||
Клонируем исходники в /opt и создадим каталог для токенов: | Клонируем исходники в /opt и создадим каталог для токенов: | ||
< | < | ||
Строка 1036: | Строка 1072: | ||
</ | </ | ||
- | где, подразумевается, | + | где, подразумевается, |
+ | Запускаем // | ||
+ | < | ||
+ | # / | ||
+ | |||
+ | WebSocket server settings: | ||
+ | - Listen on :8686 | ||
+ | - Web server. Web root: / | ||
+ | - No SSL/TLS support (no cert file) | ||
+ | - proxying from :8686 to targets generated by TokenFile | ||
+ | </ | ||
+ | |||
+ | Теперь, | ||
+ | Это делается | ||
+ | (Кусок конфигурации зоны в bind для домена // | ||
+ | < | ||
+ | $TTL 86400 | ||
+ | @ | ||
+ | ... | ||
+ | ... | ||
+ | ) | ||
+ | ... | ||
+ | ... | ||
+ | @ | ||
+ | www | ||
+ | office | ||
+ | vnc | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Добавим блок // | ||
+ | < | ||
+ | < | ||
+ | |||
+ | ServerName vnc.my-cloud.ru | ||
+ | |||
+ | SSLEngine on | ||
+ | SSLCertificateFile | ||
+ | SSLCertificateKeyFile | ||
+ | SSLCertificateChainFile | ||
+ | |||
+ | SSLProxyEngine on | ||
+ | RequestHeader set X-Forwarded-Proto " | ||
+ | |||
+ | ProxyPreserveHost | ||
+ | ProxyRequests Off | ||
+ | ProxyVia on | ||
+ | ProxyAddHeaders On | ||
+ | |||
+ | <Proxy *> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | RewriteEngine On | ||
+ | RewriteCond %{HTTP: | ||
+ | RewriteCond %{HTTP: | ||
+ | RewriteRule /(.*) ws:// | ||
+ | |||
+ | ProxyPass / http:// | ||
+ | ProxyPassReverse / http:// | ||
+ | |||
+ | ErrorLog "/ | ||
+ | CustomLog "/ | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Перезапускаем // | ||
+ | < | ||
+ | # / | ||
+ | </ | ||
+ | |||
+ | Теперь, | ||
+ | // | ||
+ | мы получим приглашение //noVNC// на соединение, | ||
+ | Подключимся к нему в нашем Nextcloud.\\ | ||
+ | Заходим Администратором в Nextcloud и устанавливаем приложение //" | ||
+ | **//" | ||
+ | \\ | ||
+ | {{: | ||
+ | \\ | ||
+ | Переходим к настройке: | ||
+ | **//" | ||
+ | Вводим название и URL. При клике на " | ||
+ | \\ | ||
+ | {{: | ||
+ | \\ | ||
+ | Введём соответствующие данные и получим значок в заголовке: | ||
+ | \\ | ||
+ | {{: | ||
+ | \\ | ||
+ | значок, | ||
+ | Если кликнем по значку получим приглашение //noVNC//, в котором, | ||
+ | \\ | ||
+ | {{: | ||
+ | \\ | ||
+ | Кликнув на " | ||
+ | \\ | ||
+ | {{: | ||
+ | \\ | ||
+ | Клик на " | ||
+ | \\ | ||
+ | {{: | ||
+ | \\ | ||
+ | |||
+ | ===== Загрузка больших файлов ===== | ||
+ | |||
+ | Очень часто, при загрузке больших файлов через веб-интерфейс, | ||
+ | А в логах Nextcloud видим, что-то подобное: | ||
+ | **Expected filesize of 10485760 bytes but read (from Nextcloud client) and wrote (to Nextcloud storage) 8306688 bytes. Could either be a network problem on the sending side or a problem writing to the storage on the server side**.\\ | ||
+ | А при использовании проксирования в логах видим ошибку - **proxy_fcgi: | ||
+ | Исправляем: | ||
+ | * Проверяем, | ||
+ | < | ||
+ | ; Размер POST-данных, | ||
+ | post_max_size = 16G | ||
+ | |||
+ | ; Максимально допустимый размер загружаемых файлов (0 - без ограничений) | ||
+ | upload_max_filesize = 0 | ||
+ | </ | ||
+ | |||
+ | * в файле /// | ||
+ | |||
+ | < | ||
+ | # Комментируем эту строку | ||
+ | # LoadModule reqtimeout_module lib64/ | ||
+ | |||
+ | # Добавляем Timeout в секундах | ||
+ | Timeout 7200 | ||
+ | </ | ||
+ | |||
+ | * Увеличиваем размер чанка (фрагмента) загрузки до 50 МБ (по умолчанию 10 МБ): | ||
+ | < | ||
+ | # sudo -u apache php / | ||
+ | </ | ||
+ | |||
+ | * В блоке // | ||
+ | < | ||
+ | | ||
+ | </ | ||
===== Улучшения ===== | ===== Улучшения ===== | ||
Всё, нижеописанное, | Всё, нижеописанное, | ||
Строка 1127: | Строка 1302: | ||
# / | # / | ||
</ | </ | ||
+ | |||
+ | * **skeleton** | ||
+ | Если при регистрации надо, чтобы у пользователя уже был определённый набор файлов, | ||
+ | /// | ||
+ | Соответственно, | ||
+ | Можно переопределить адрес такой директории указав её в /// | ||
+ | < | ||
Строка 1163: | Строка 1345: | ||
</ | </ | ||
+ | * **ОСС** | ||
+ | |||
+ | //ОСС// - инструмент для административных задач из терминала.\\ | ||
+ | Запускается под пользователем //apache//, т.е.\\ | ||
+ | //# sudo -u apache php / | ||
+ | |||
+ | Некоторый список ключей: | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
====== Ссылки ====== | ====== Ссылки ====== | ||
При написании статьи использовались: | При написании статьи использовались: |