Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
wiki:articles:nc15 [19/03/2023 18:12] – [VNC] grafwiki:articles:nc15 [24/04/2024 19:53] (текущий) – [Улучшения] graf
Строка 377: Строка 377:
  
 ; Объем памяти для интернированных строк в Мбайт ; Объем памяти для интернированных строк в Мбайт
-opcache.interned_strings_buffer = 16+opcache.interned_strings_buffer = 128
  
 ; Максимальное количество ключей (скриптов) в хэш-таблице OPcache. ; Максимальное количество ключей (скриптов) в хэш-таблице OPcache.
Строка 488: Строка 488:
 Устанавливаем необходимые пакеты для получения бесплатных сертификатов от центра сертификации //[[https://letsencrypt.org/ | Let's Encrypt]]// при помощи //[[https://certbot.eff.org/ | Certbot]]//. Устанавливаем необходимые пакеты для получения бесплатных сертификатов от центра сертификации //[[https://letsencrypt.org/ | Let's Encrypt]]// при помощи //[[https://certbot.eff.org/ | Certbot]]//.
 <code> <code>
-# sbopkg -Bki "configobj josepy zope.component zope.event zope.interface requests-toolbelt \ +# pip install pyparsing requests importlib_metadata cryptography josepy   
-pyrfc3339 pytz python-parsedatetime python-augeas pyOpenSSL python3-configargparse letsencrypt"+# sbopkg -Bi "configobj zope.component zope.event zope.interface requests-toolbelt \ 
 +pyrfc3339 pytz python-parsedatetime augeas pyOpenSSL python3-setuptools-rust python3-semantic-version \ 
 +python3-configargparse python3-augeas letsencrypt"
 </code> </code>
  
Строка 507: Строка 509:
 ... ...
 ... ...
 +</code>
 +
 +Чтобы сертификаты автоматически обновлялись, создадим скрипт ///etc/rc.d/rc.cerbot_renew// в который пропишем:
 +<code>
 +certbot renew --pre-hook "/etc/rc.d/rc.httpd stop" --post-hook "/etc/rc.d/rc.httpd start" --force-renewal
 +</code>
 +
 +Добавим в //cron// задачу по запуску этого скрипта 25 числа каждые 2 месяца в 1:30 ночи:
 +<code>
 +# Обновление сертификатов
 +30 01 25 */2 * /etc/rc.d/rc.cerbot_renew 1> /dev/null
 +</code>
 +
 +В ///etc/httpd/extra/httpd-ssl.conf// закомментируем все строки кроме следующих:
 +<code=apache>
 +Listen 443
 +
 +SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
 +SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
 +
 +SSLHonorCipherOrder on
 +SSLProtocol all -SSLv3
 +SSLProxyProtocol all -SSLv3
 +
 +SSLPassPhraseDialog  builtin
 +
 +SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
 +SSLSessionCacheTimeout  300
 +
 +BrowserMatch "MSIE [2-5]" \
 +nokeepalive ssl-unclean-shutdown \
 +downgrade-1.0 force-response-1.0
 </code> </code>
  
Строка 652: Строка 686:
  
 Далее пойдёт описание интеграции //CODE// в наш //NextCloud//.\\ Далее пойдёт описание интеграции //CODE// в наш //NextCloud//.\\
 +Если у вас запрещено использование **IPv6**, то необходимо его разрешить.\\
 Для работы //CODE// будем использовать его образ в Docker-контейнере.\\ Для работы //CODE// будем использовать его образ в Docker-контейнере.\\
 Поэтому, для начала, установим и запустим //Docker//. На момент написания статьи, это //docker// версии //23.0.1//. Поэтому, для начала, установим и запустим //Docker//. На момент написания статьи, это //docker// версии //23.0.1//.
Строка 1018: Строка 1053:
 Там интуитивно понятно что и куда прописывать. Там интуитивно понятно что и куда прописывать.
  
-===== VNC =====+===== VNC как внешняя ссылка =====
 Подключимся к удaлённому рабочему столу прямо из web-интерфейса Nextcloud.\\ Подключимся к удaлённому рабочему столу прямо из web-интерфейса Nextcloud.\\
  
 Я покажу пример для подключения нескольких рабочих столов при помощи //noVNC//.\\ Я покажу пример для подключения нескольких рабочих столов при помощи //noVNC//.\\
 +Делаем всё на сервере Nextcloud.\\
 Клонируем исходники в /opt и создадим каталог для токенов: Клонируем исходники в /opt и создадим каталог для токенов:
 <code> <code>
Строка 1036: Строка 1072:
 </code> </code>
  
-где, подразумевается, что на указанных IP-адресах поднят VNC-сервер и открыт доступ на порту 5900+где, подразумевается, что на указанных IP-адресах поднят VNC-сервер на порту 5900. Первый столбец, это название токена по которому мы будем обращаться для подключения. Может быть произвольным.\\ 
 +Запускаем //WebSocket-server// на порту 8686: 
 +<code> 
 +# /opt/noVNC/utils/websockify/websockify.py --web /opt/novnc --token-plugin TokenFile --token-source /opt/novnc/tokens/tokens.conf 8686 & 
 + 
 +WebSocket server settings: 
 +  - Listen on :8686 
 +  - Web server. Web root: /opt/novnc 
 +  - No SSL/TLS support (no cert file) 
 +  - proxying from :8686 to targets generated by TokenFile 
 +</code> 
 + 
 +Теперь, необходимо прописать поддомен в DNS, например - //vnc//.\\ 
 +Это делается у хостеров, провайдеров, регистраторов и т.д., там где у вас есть права на изменения записей в DNS.\\ 
 +(Кусок конфигурации зоны в bind для домена //my-cloud.ru//
 +<code> 
 +$TTL 86400 
 +@       IN      SOA     my-cloud.ru.  it.my-cloud.ru. ( 
 +... 
 +... 
 +
 +... 
 +... 
 +@       IN      A       77.77.77.77 
 +www     IN      CNAME   @ 
 +office  IN      CNAME   @ 
 +vnc     IN      CNAME   @ 
 +... 
 +</code> 
 + 
 +Добавим блок //VirtualHost// в ///etc/httpd/extra/nc-vhosts.conf// или в отдельный файл. 
 +<code=apache> 
 +<VirtualHost *:443> 
 + 
 +    ServerName vnc.my-cloud.ru 
 + 
 +    SSLEngine on 
 +    SSLCertificateFile          /etc/letsencrypt/live/vnc.my-cloud.ru/cert.pem 
 +    SSLCertificateKeyFile       /etc/letsencrypt/live/vnc.my-cloud.ru/privkey.pem 
 +    SSLCertificateChainFile     /etc/letsencrypt/live/vnc.my-cloud.ru/chain.pem 
 + 
 +    SSLProxyEngine on 
 +    RequestHeader set X-Forwarded-Proto "https" 
 + 
 +    ProxyPreserveHost   On 
 +    ProxyRequests Off 
 +    ProxyVia on 
 +    ProxyAddHeaders On 
 +     
 +    <Proxy *> 
 +       Require all granted 
 +    </Proxy> 
 + 
 +    RewriteEngine On 
 +    RewriteCond %{HTTP:Connection} Upgrade [NC] 
 +    RewriteCond %{HTTP:Upgrade} =websocket [NC] 
 +    RewriteRule /(.*) ws://192.168.10.217:8686/$1 [P,L] 
 +    
 +    ProxyPass / http://192.168.10.217:8686/ retry=3 
 +    ProxyPassReverse / http://192.168.10.217:8686/ 
 + 
 +    ErrorLog "/var/log/httpd/vnc-error_log" 
 +    CustomLog "/var/log/httpd/vnc-access_log" common 
 + 
 +</VirtualHost> 
 +</code> 
 + 
 +Перезапускаем //apache// 
 +<code> 
 +# /etc/rc.d/rc.httpd restart 
 +</code> 
 + 
 +Теперь, если в браузере, в адресной строке, ввести URL с токеном **buh**\\ 
 +//%%https://vnc.my-cloud.ru/vnc.html?path=/websockify?token=buh%%//\\ 
 +мы получим приглашение //noVNC// на соединение, потом запрос пароля, если установлен и произойдёт подключение к компьютеру 192.168.10.22.\\ 
 +Подключимся к нему в нашем Nextcloud.\\ 
 +Заходим Администратором в Nextcloud и устанавливаем приложение //"External Sites"//\\ 
 +**//"Администратор" -> "Приложения" -> "External Sites"//**\\ 
 +\\ 
 +{{:wiki:articles:nc15-vnc-1.png?nolink&600|}}\\ 
 +\\ 
 +Переходим к настройке:\\ 
 +**//"Администратор" -> "Параметры сервера" -> "Внешние сайты"//**\\ 
 +Вводим название и URL. При клике на "..." получим возможность дополнительных настроек.\\ 
 +\\ 
 +{{:wiki:articles:nc15-vnc-2.png?nolink&800|}}\\ 
 +\\ 
 +Введём соответствующие данные и получим значок в заголовке:\\ 
 +\\ 
 +{{:wiki:articles:nc15-vnc-3.png?nolink&200|}}\\ 
 +\\ 
 +значок, кстати, можно загрузить свой.\\ 
 +Если кликнем по значку получим приглашение //noVNC//, в котором, кликнув по "шестерёнке", увидим дополнительные параметры подключения.\\ 
 +\\ 
 +{{:wiki:articles:nc15-vnc-4.png?nolink&600|}}\\ 
 +\\ 
 +Кликнув на "Подлючение" увидим запрос пароля для подключения к VNC-серверу на IP-адресе 192.168.10.22\\ 
 +\\ 
 +{{:wiki:articles:nc15-vnc-5.png?nolink&600|}}\\ 
 +\\ 
 +Клик на "Передача Учетных Данных" и мы видим экран компьютера по адресу 192.168.10.22, прямо в окне Nextcloud.\\ 
 +\\ 
 +{{:wiki:articles:nc15-vnc-6.png?nolink&600|}}\\ 
 +\\ 
 + 
 +===== Загрузка больших файлов ===== 
 + 
 +Очень часто, при загрузке больших файлов через веб-интерфейс, возникают ошибки, например: ** Error when assembling chunks, status code 504 ** - //Ошибка при сборке чанков, код ошибки 504// или просто прерывается закачка с сообщением //**"Произошла неизвестная ошибка"**//.\\ 
 +А в логах 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:error (70008)Partial results are valid but processing is incomplete**.\\ 
 +Исправляем: 
 +    * Проверяем, что в ///etc/php.ini//, а по статье в ///etc/php.d/nc.ini// прописаны следующие параметры (пропишите свои) и их нет в ///var/www/htdocs/nextcloud/.htaccess// и(или) в ///var/www/htdocs/nextcloud/.user.ini// (параметры должны быть прописаны в каком-нибудь одном файле) : 
 +<code> 
 +; Размер POST-данных, которые будет принимать PHP  
 +post_max_size = 16G 
 + 
 +; Максимально допустимый размер загружаемых файлов (0 - без ограничений) 
 +upload_max_filesize = 0 
 +</code> 
 + 
 +  * в файле ///etc/httpd/httpd.conf// 
 + 
 +<code> 
 +# Комментируем эту строку 
 +# LoadModule reqtimeout_module lib64/httpd/modules/mod_reqtimeout.so 
 + 
 +# Добавляем Timeout в секундах  
 +Timeout 7200 
 +</code> 
 + 
 +  * Увеличиваем размер чанка (фрагмента) загрузки до 50 МБ (по умолчанию 10 МБ): 
 +<code> 
 +# sudo -u apache php /var/www/htdocs/nextcloud/occ config:app:set files max_chunk_size --value 52428800 
 +</code> 
 + 
 +  * В блоке //VirtualHost// с проксирование добавляем таймаут в секундах: 
 +<code> 
 + ProxyTimeout 7200 
 +</code>
 ===== Улучшения ===== ===== Улучшения =====
 Всё, нижеописанное, относиться к добавлению параметров в файл ///var/www/htdocs/nextcloud/config/config.php//\\ Всё, нижеописанное, относиться к добавлению параметров в файл ///var/www/htdocs/nextcloud/config/config.php//\\
Строка 1127: Строка 1302:
 # /etc/rc.d/rc.httpd restart # /etc/rc.d/rc.httpd restart
 </code> </code>
 +
 +  * **skeleton**
 +Если при регистрации надо, чтобы у пользователя уже был определённый набор файлов, поместите их в директорию:\\
 +///var/www/htdocs/nextcloud/core/skeleton//\\
 +Соответственно, если набор не нужен, то удалить из этой директории все файлы и каталоги.
 +Можно переопределить адрес такой директории указав её в ///var/www/htdocs/nextcloud/config/config.php//
 +<code=php>'skeletondirectory' => '/var/www/htdocs/nextcloud/my_dir/skeleton'</code>
  
  
Строка 1163: Строка 1345:
 </code> </code>
  
 +  * **ОСС**
 +
 +//ОСС// - инструмент для административных задач из терминала.\\
 +Запускается под пользователем //apache//, т.е.\\
 +//# sudo -u apache php /var/www/htdocs/nextcloud/occ ''<ключь>''//\\
 +
 +Некоторый список ключей:
 +|''list''  |список и краткая аннотация всех ключей  |
 +|''user:list''  |список пользователей  |
 +|''user:resetpassword admin''  |сбросить пароль пользователя //admin//  |
 +|''user:add --display-name="Admin" -g admin admin''|создать пользователя //admin// в группе //admin//\\ с отображаемым именем //Admin// |
 +|''group:adduser admin Vasya -n''|дать права админа пользователю //Vasya// без вопросов | 
 +|''files:scan <username>''|если добавить файлы непосредственно в каталог данных пользователей на сервере,\\ то они не будут отображаться в веб-интерфейсе. Необходимо выполнить сканирование.\\ Без указания пользователя - сканируются все каталоги всех пользователей.|
 ====== Ссылки ====== ====== Ссылки ======
 При написании статьи использовались:\\ При написании статьи использовались:\\
Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:nc15 (generated for current page)