Установка и запуск potree на Linux Ubuntu

Обновлено и опубликовано Опубликовано:

Используемые термины: PotreeUbuntu, NGINX.

В результате выполнения рекомендаций, указанных в инструкции мы получим:

  • Серверную часть potree (viewer), которая дает возможность просмотра изображений, собранных по точкам.
  • Настроенную службу, которая будет автоматически запускать potree при включении компьютера/сервера.
  • Установленную утилиту для конвертации сырых данных в страницу для viewer.
  • Проксирование http-запросов через NGINX.

Работы будут выполняться Linux DEB (Ubuntu / Debian / Astra Linux).

Установка и запуск 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).

# Ubuntu
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет