Установка и запуск potree на Linux Ubuntu
Используемые термины: Potree, Ubuntu, NGINX.
В результате выполнения рекомендаций, указанных в инструкции мы получим:
- Серверную часть potree (viewer), которая дает возможность просмотра изображений, собранных по точкам.
- Настроенную службу, которая будет автоматически запускать potree при включении компьютера/сервера.
- Установленную утилиту для конвертации сырых данных в страницу для viewer.
- Проксирование http-запросов через NGINX.
Работы будут выполняться Linux DEB (Ubuntu / Debian / Astra Linux).
Развертывание potree и настройка автозапуска
Установка NodeJS
Установка potree
Настройка systemd для автозапуска сервиса
Настройка NGINX для проксирования http-запросов
Установка и использование конвертера potree
Установка и запуск potree
Выполним несколько шагов для старта приложения на сервере.
Установка NODEJS
Приложение potree разработано на nodejs и для своей работы требует соответствующего пакета. Для его установки сначала настроим репозиторий, а для этого установим следующие пакеты:
apt update
apt install ca-certificates curl gnupg
* где:
- ca-certificates — набор корневых сертификатов.
- curl — утилита командной строки для отправки http-запросов. Позволяет загрузить файлы или отправить запрос на веб-сервер.
- gnupg — позволяет шифровать и расшифровывать цифровых подписей репозиториев.
Скачаем ключ репозитория nodejs и сохраним его в виде цепочки:
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
Создадим переменную, в качестве значения которой укажем версию устанавливаемой nodejs:
NODE_MAJOR=20
Создадим файл с настройкой репозитория nodejs:
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" > /etc/apt/sources.list.d/nodesource.list
Обновляем кэш репозиториев и устанавливаем nodejs:
apt update
apt install nodejs
Посмотреть версию установленного пакета можно командой:
node -v
Развертывание potree
Мы загрузим исходники приложения и выполним установку необходимых расширений для nodejs.
Нам понадобится приложение git:
apt install git
Создадим каталог, где разместим исходник:
mkdir /var/www
Создадим клон проекта potree и поместим файлы в созданном каталоге:
git clone https://github.com/potree/potree.git /var/www/potree
Перейдем в него:
cd /var/www/potree
Запускаем установку зависимых модулей:
npm install
* команда npm install находит файл package.json в текущем каталоге, в котором есть список необходимых для приложения модулей nodejs. А также выполнит их установку.
Приложение готово к работе.
Настройка запуска приложения
Мы планируем запускать приложение в качестве сервиса. Для этого создадим systemd-юнит:
vi /etc/systemd/system/potree.service
[Unit]
Description=Potree Service
After=network.target
[Service]
User=potree
Group=potree
Type=simple
ExecStart=/usr/bin/npm start
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
WorkingDirectory=/var/www/potree
[Install]
WantedBy=multi-user.target
* в нашем примере будет создан файл для сервиса potree. При запуске будет вызываться npm с аргументом start. Сам запуск будет выполнен от системной учетной записи potree.
Создадим пользователя:
useradd -r -d /var/www/potree potree
* это будет служебная учетная запись с именем potree и домашним каталогом /var/www/potree.
Разрешаем автозапуск для созданного сервиса и сразу стартуем его:
systemctl enable potree
systemctl start potree
Проверим, что сервис работает, отправив http-запрос на локальный хост и порт 1234:
curl http://127.0.0.1:1234
Мы должны увидеть html-разметку, что говорит нам о работе сервиса.
Установка и запуск potree завершена.
Настройка NGINX прокси
Выполним установку и настройку веб-прокси на базе NGINX. Это позволит использовать более удобные URL для запроса к сервису potree.
Устанавливаем пакет nginx:
apt install nginx
После открываем конфигурационный файл:
vi /etc/nginx/sites-enabled/default
Внутри раздела server находим настройку для location / и приводим ее к виду:
location / {
proxy_pass http://127.0.0.1:1234/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
* в данном примере мы все запросы к веб-серверу проксируем на локальный узел, порт 1234, то есть, на potree.
Проверяем конфигурацию nginx и перечитываем ее:
nginx -t && nginx -s reload
Можно попробовать перейти в браузере по адресу http://192.168.0.15/examples, где 192.168.0.15 — IP-адрес сервера potree.
Potree Converter
Для преобразования сырого формата координат (например, файл las) в html-страницу предназначена утилита Potree Converter. Рассмотрим, как ее установить и использовать.
Устанавливаем утилиту для распаковки zip-архивов:
apt install unzip
На странице в GitHub ознакомимся с имеющимися версиями программного продукта.
Переходим во временный каталог и загружаем PotreeConverter:
cd /tmp
curl -sLO https://github.com/potree/PotreeConverter/releases/download/2.1.1/PotreeConverter_2.1.1_x64_linux.zip
* в нашем примере будет загружен конвертер версии 2.1.1.
Распакуем загруженный архив:
unzip PotreeConverter_*_x64_linux.zip
Перенесем библиотеку liblaszip.so в каталог /lib/x86_64-linux-gnu:
mv ./PotreeConverter_linux_x64/liblaszip.so /lib/x86_64-linux-gnu/
Файлы конвертера перенесем в любое место на нашем компьютере, например:
mv PotreeConverter_linux_x64 /var/www/potree/potreeconverter
* в итоге, конвертер будет находиться в каталоге /var/www/potree/potreeconverter.
Разрешим запуск файла PotreeConverter на выполнение:
chmod +x /var/www/potree/potreeconverter/PotreeConverter
Готово. Конвертер можно использовать.
Например, если у нас есть файл /tmp/Block_merge.las, мы можем его преобразовать командой:
/var/www/potree/potreeconverter/PotreeConverter /tmp/Block_merge.las -o /var/www/potree/examples/ --generate-page Block_merge
* сконвертированный файл будет сохранен в каталоге с html-файлами (/var/www/potree/examples).