Установка раздатчиков CopyBaseWeb на QNAP.Linux QTS 4.2.6 и ASUSWRT Merlin 380.70

ЦЕЛЬ ЗАТЕИ: - Для раздачи томов баз данных .db6 через сервис CopyBaseWeb необходимые файлы должны быть доступны в адресе по схеме http://адрес_сервера/db/7475.db6 (обязательны каталог db и запрос авторизации).
Для возможности обновить Программный комплекс в папку с базами нужно добавить специальный архив : ftp://login:parol@ftp.kodeks-luks.ru/PK/SpecialEdition/6.4.2.52.zip
 

QNAP TS-459 PRO II QTS 4.2.6 (NAS)

Тут относительно все просто ...

Установка сервера

Nginx берем из Entware. Если этот пакет не установлен, то в админке NAS идем в APP Center и берем его из официального репозитория QNAP или из QnapClub.eu (Я установил Entware-Std из qnapclub.eu)

NGINX из Entware


[~] # opkg find nginx* # сам пакет может называться по-особенному, поэтому сперва смотрим все что есть
collectd-mod-nginx - 5.10.0-3 - nginx status input plugin nginx - 1.17.5-2 - nginx is an HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev. (Some module require SSL module enable to show up in config menu) nginx-extras - 1.17.7-1 - nginx is an HTTP and reverse proxy server, as well as a mail proxy server,
written by Igor Sysoev. This is mainline version where all available plugins and patches are taken from Debian nginx-extras package.
[~] # opkg install nginx-extras #Устанавливаем nginx-extras
[~] #

Настройки и файлы конфигурации

Заводим новые группу и пользователя без пароля с рангом 999 (см. коммады password файлы etc/password etc/groups /etc/shadow)
Глобальные настройки Nginx почти не изменяются
nginx.conf
user !usr!? !gruppa!?;
worker_processes 1;  # процессор у меня один
pid /opt/var/run/nginx.pid;
include /opt/etc/nginx/modules-enabled/*.conf;
events {
  worker_connections 768;  # не разобрался
  # multi_accept on;
}
http {
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 65;
  types_hash_max_size 2048;
  # server_tokens off;

  # server_names_hash_bucket_size 64;
  # server_name_in_redirect off;
  include /opt/etc/nginx/mime.types;
  default_type application/octet-stream;

  access_log /opt/var/log/nginx/access.log;
  error_log /opt/var/log/nginx/error.log notice;
  #rewrite_log on;

  gzip on;
  gzip_disable "msie6";

  # Virtual Host Configs
  include /opt/etc/nginx/conf.d/*.conf;
  include /opt/etc/nginx/sites-enabled/*;  # настройки виртуального сервера  в отдельном файле  copybase
}
        
Создаем файл виртуального сервера с каталогом db
site-available/copybase
server {
	listen 6501 default_server;
	#listen [::]:6501 default_server;
	root /opt/share/www/copybaseweb;
	index index.html index.htm;
	server_name cbw.novur.ru;
	location / { 
		rewrite ^(?:/db/?)(.*)$ /db/$1 permanent; 
		try_files $uri $uri/ =404;                
		auth_basic "Password-protected Area";
		auth_basic_user_file /opt/etc/nginx/.htpasswd;
	}
	location /db/ {
	  rewrite ^/db/(.*) /$1;                  # скрипт создания символических ссылок на базы в каталоге baseLoader 
	  try_files $uri $uri/ =404;              # кладет файлы ссылок в корень сайта, физически каталога db  не существует.
	  auth_basic "Password-protected Area";   # вместо того чтобы  поправить скрипт  заморочился  с rewrite
	  auth_basic_user_file /opt/etc/nginx/.htpasswd;
	  # запретил  ходить  на офисный  раздатчик  (cbw.novur.ru:6501) тем у кого нет  пиринга с ООО Сайт
	  # возможно со временем появится возможность  ограничивать клиентов
	  #в доступе непосредтсвенно на copybase.ru
	  deny 188.113.189.205;  #Солнцетелеком Сахниро
	  deny 188.113.189.66;  #Солнцетелеком Биолит
	  deny 188.168.65.162;  #ТТК Шельф Сервис
	  deny 188.244.143.232;  #ТТК Долинское ДРСУ
  }

Пароль для доступа к каталогу /db/

Придумываем и дописывем логин:пароль в /opt/etc/nginx/.htpasswd. Нужно сохранить данные в менеджер паролей, он понадобится при настройке кластера на copybase.ru/Clusters
[~] #
[~] # printf "ЛОГИН:$(openssl passwd -crypt ПАРОЛЬ)\n" >> /opt/etc/nginx/.htpasswd
[~] # 
 

ASUSWRT Merlin

Прошивка 380.70

Установить карту microSD

Про это много слов на форуме wl500g.info
С карты лучше предварительно удалить все разделы, особенно FAT32.
Проверяем наличие устройства # ls -al /dev/sd* и уже смонтрованные разделы # mount Создаем новый раздел с помощью fdisk и форматируем его в ext3

[~] #
[~] # ls -al /dev/sd*
[~] # mount 
[~] # fdisk /dev/sda
[~] #


[/] # mke2fs -j -L=sdcard  /dev/sda1
[/] #

Nginx

Сервер устанавливаем также из Entware. Сам репозитрорий устанавливается скриптом из прошивки Мерлина entware-setup.sh
Конфигурацию сервера взять из варианта с NAS. Только уж теперь без rewrite
Nginx устанавливается на свободный порт (у меня 6501) и запускается от имени everyone:everyone, в конфигурации для виртуального сервера меняем корневой каталог

  location /db/ {
    ...
    root /mnt/меткаUSB_HDD/каталог/где/лежат/файлы/db6/
    ...
  } 
        
Firewall
Для доступа из WAN нужно открыть порт роутера на WAN интерфейсе.

В редакторе или другим способом создать файл /jffs/scripts/firewall-start и скопировать в него следующие строки


  #!/bin/sh
  iptables -I INPUT -p tcp --destination-port 6501 -j ACCEPT
        
Установить на этот файл разрешение на запуск chmod a+rx /jffs/scripts/firewall-start

[/] #chmod a+rx /jffs/scripts/firewall-start
          
        
На роутере можно настроить при необходимости переадресацию портов 6501 на 6501. ИНТЕРНЕТ-> Переадресация портов, но мне оказалось достаточно и скрипта
 

Текст инструкции от Владимира Брызгалова CopybaseWeb

Настройка Nginx для CopyBaseWeb
В целом - тома должны быть доступны для скачивания в следующем виде: http://адрес_сервера/db/7475.db6 (из каталога db и с запросом авторизации).
В папку с базами также нужно добавить спец. дистрибутив для обновления ПК: ftp://login:parol@ftp.kodeks-luks.ru/PK/SpecialEdition/6.4.2.52.zip
Устанавливаем веб-сервер Nginx
Подключаем репозитории разработчиков (создаём в папке /etc/apt/sources.list.d файл nginx.list):  
sudo touch /etc/apt/sources.list.d/nginx.list  
Открываем созданный файл в редакторе: 
sudo nano /etc/apt/sources.list.d/nginx.list 
И вносим в него следующие записи (для Debian 8 указываем «jessie» для 9 версии «stretch», для других релизов принцип тот же):  
deb http://nginx.org/packages/mainline/debian/ stretch nginx 
deb-src http://nginx.org/packages/mainline/debian/ stretch nginx 
Сохраняем: 
Ctrl+X, y 
Скачиваем и устанавливаем PGP-ключ для проверки подлинности пакетов:  
cd  
wget http://nginx.org/keys/nginx_signing.key 
sudo apt-key add nginx_signing.key  
Обновляем список пакетов:  
sudo apt-get update  
Ставим Nginx:
sudo apt-get install nginx  
Вводим в браузере адрес сервера и видим приветствие установленного nginx! 
Настраиваем публикацию файлов
Создаём каталог «db» для публикации баз: 
sudo mkdir /usr/share/nginx/html/db 
Узнаём количество ядер процессора: 
nproc 
Открываем основной файл конфигурации сервера nginx: 
nano /etc/nginx/nginx.conf 
Устанавливаем значение worker_processes равное результату команды nproc:
worker_processes = ?;
В секции http для сокрытия версии Nginx (необязательно) добавляем: 
server_tokens off; 
Сохраняем файл: 
Ctrl+X, y, Enter 
Открываем другой файл конфигурации сервера nginx: 
nano /etc/nginx/conf.d/default.conf 
В секцию location добавляем авторизацию: 
auth_basic           "closed site"; 
auth_basic_user_file /etc/nginx/.htpasswd;  
Сохраняем файл: 
Ctrl+X, y, Enter 
 
Проверяем новую конфигурацию NGINX: 
nginx -t 
 
Если вывод содержит "syntax is ok" и "test is successful" - конфигурация корректна.  

Если веб-сервер не запущен, то запускаем: 
service nginx start
 
Создаём логин для авторизованного доступа (слова «логин» и «пароль» заменить любыми другими на английской раскладке): 
printf "логин:$(openssl passwd -crypt пароль)\n" >> /etc/nginx/.htpasswd 

Проверяем результат

В папку /usr/share/nginx/html/db копируем файлы БД.

Вводим в браузере ссылку для скачивания опубликованного файла, например:
http://адрес_сервера/db/7475. db6

Браузер должен запросить авторизацию! Вводим логин и пароль указанные в команде printf...

Если всё верно – начнётся скачивание файла.

Подключите настроенный сервер к сервису CopyBaseWeb в личном кабинете

http://copybase.ru/Clusters