Альтернативный способ получить доступ к Octoprint извне

brn
Идет загрузка
Загрузка
25.11.2019
1794
17
печатает на Финист
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

9

Листая старую тетрадь расстрелянного генерала, я как-то видел, что у кого-то на 3dtoday были проблемы с организацией доступа к Octoprint через Интернет. Стандартный способ предельно прост, на самом деле: зайти на роутер, дать фиксированный ip-адрес octoprint, настроить порт-форвардинг на него, зайти в раздел DDNS роутера, зарегистрироваться на каком-нибудь поддерживаемом DDNS, настроить. Но это и очень просто и очень сложно и не всегда работает :-). Вот например у меня дома две сети, возможность пробросить порт через 2 сети есть и я так непременно сделаю, но есть ещё одна проблема: Ростелеком. Иногда мне выдают "серый" IP, к которому невозможно подключиться извне и способ с DDNS не работает.

Но так получилось, что я разработчик и знаю ещё один "запасной" способ, которым хочу поделиться, вдруг пригодится. Пример для образа Raspbian с предустановленным Octoprint для Raspberry PI 3 (ARM), для AMD64 или ARM64 всё то же самое, просто надо будет скачать другой архив. Пользователь pi, если пользователь другой - тоже надо будет указать правильного пользователя.

Способ этот - локальный туннель, например ngrok.com или localtunnel.me. Я буду рассказывать на примере ngrok. Кстати, сегодня для меня была недоступна панель управления ngrok без VPN, возможно она пала жертвой Роскомнадзора. Для начала надо будет зайти на ngrok.com и зарегистрироваться там, там же можно получить свой authkey. В моём дистрибутиве Octoprint версия ngrok безнадёжно устаревшая и уже не работает, так что логинимся на нашу "пишку" и яростно фигачим команды!

Кстати, строчки "pi@octopi:~ $" или "root@octopi:~#" вводить не нужно, это то, что сервер вам говорит.

Сначала скачаем с https://ngrok.com/download версию для ARM.

pi@octopi:~ $ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip

2019-11-24 19:41:43 (2.76 MB/s) - ‘ngrok-stable-linux-arm.zip’ saved [13091884/13091884]

pi@octopi:~ $ unzip ngrok-stable-linux-arm.zip 

pi@octopi:~ $ sudo mv ngrok /usr/local/sbin/

pi@octopi:~ $ ngrok authtoken мой-auth-token

Authtoken saved to configuration file: /home/pi/.ngrok2/ngrok.yml

pi@octopi:~ $ echo 'region: eu' >> .ngrok2/ngrok.yml

pi@octopi:~ $ echo 'console_ui: iftty' >> .ngrok2/ngrok.yml 

Запускаем ngrok http 80, получаем результат, текстовый интерфейс, в котором написано что-то вроде Forwarding http://ac60ba17.eu.ngrok.io -> localhost:80. 

Кстати, если вы находитесь в США, поменяйте в ngrok.yml регион на us, или переместитесь в прошлое и не вводите команду echo 'region: eu' >> .ngrok2/ngrok.yml 

В принципе, это всё, теперь можно входить на адрес ac60ba17.eu.ngrok.io, до тех пор, пока не закроете это окошко. Что значит "уже закрыли"? И даже сами нашли, что CTRL+C для закрытия?

Да ладно, сам знаю, что octoprint - он в основном для людей, которые хотят легко и удобно, поэтому поступим иначе. Нам нужен root, желательно весь! Пишем sudo su -, вводим пароль, если у вас требуется пароль. Надо создать файл /etc/systemd/system/ngrok.service, если умеете пользоваться vim или другим консольным редактором, рекомендую этот способ (вот пример https://gist.github.com/balkin/0e74d29a0ac61169ca7b57114a401d8e). Если доверяете незнакомым людям в интернете, то вот так можно сделать:

wget -O /etc/systemd/system/ngrok.service https://gist.github.com/balkin/0e74d29a0ac61169ca7b57114a401d8e/raw/89ffd3ae5a4df6bd92bcb2f0d657974d82fa12f5/ngrok.service

root@octopi:~# systemctl enable ngrok

Created symlink /etc/systemd/system/multi-user.target.wants/ngrok.service → /etc/systemd/system/ngrok.service.

root@octopi:~# systemctl restart ngrok

Адрес туннеля можно найти вот тут: https://dashboard.ngrok.com/status, при перезапуске ngrok или ОС он может

Не забудьте, что злые русские хакеры могут взломать не только 3d-принтер, но даже президента! Обязательно установите надёжный пароль на ваш Octoprint. Кстати, пароль cjhjrnsczxj,tpmzyd;jgeceyekb,fyfy не может считаться надёжным, он уже скомпрометирован.

P.S., P.P.S. и P.P.P.S.: Обычно этот сервис используется для того, чтобы предоставить доступ к локальному API в интернет. Если будете круглосуточно смотреть веб-камеру через интернет, то скорее всего, скорость вам срежут или вообще аккаунт заблокируют. А вот если пользоваться этой мордой только с работы (да вы и не захотите из локальной сети это делать, оно вообще-то тормозит), при этом камеру смотреть изредка - всё будет хорошо.

Если вдруг не получилось, могу попробовать помочь, пишите :) Хотя это всё точно работает, я свои логи из консоли выложил и дописал немножко текста.

Если вдруг это не считается "Техничкой", можно переместить в личные дневники :)

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

9
Комментарии к статье

Комментарии

25.11.2019 в 07:26
1

Боорьба с телеграммом, некоторые провайдеры при обращении к домену http://ngrok.io/ выдают:

IP-адрес данного ресурса заблокирован в соответствии с действующим законодательством.

Запрещенный ресурс:54.218.215.34

Дата основания внесения в реестр:16.04.2018

Номер основания внесения в реестр:27-31-2018/Ид2971-18

Орган, принявший решение о внесении в реестр:Генпрокуратура

Доступ к информационному ресурсу ограничен на основании Федерального закона от 27 июля 2006 г. № 149-ФЗ "Об информации, информационных технологиях и о защите информации".

25.11.2019 в 10:43
0

Да, у меня частично заблокирован. ngrok скачать можно, заходить на туннели можно, войти в личный кабинет через Ростелеком нельзя. То есть существует проблема с получением адреса запущенного туннеля, которая решается с помощью прокси/ВПН/Frigate. Сами туннели работают без проксей и впн, во всяком случае туннели европейского региона.

brn
27.11.2019 в 10:53
0

Вот и всё, кстати =) https://dashboard.ngrok.com/status начал открываться без блокировок и задержек :) Этот адрес нужен для того, чтобы получить URL до своего октопринта. В моём случае например https://d2c819d5.eu.ngrok.io/ (но уже завтра этот адрес может измениться).

Хотя не поручусь, что адрес доступен у всех и навсегда. 

25.11.2019 в 13:40

Комментарий удалён

25.11.2019 в 07:32
0

Вот у моего провайдера подключение белого IP стоит всего лишь 90р за месяц.

Не думаю, что у других провайдеров стоимость этой услуги сильно отличается в цене.

И вешай хоть 100 разных устройств со свободным доступом хоть откуда. Никакого геморроя с настройками и никакой зависимости от сторонних серверов и сервисов.

25.11.2019 в 08:16
0

Не думаю, что у других провайдеров стоимость этой услуги сильно отличается в цене.

Не надо думать, надо просто помониторить цены. 300 рублей у одного, 500 рублей у другого. МТС (мобильный) в моем регионе статику вообще не предоставляют, у них вообще по факту за двумя натами я. Пул адресов ipv4 давно закончился. Остались малые резервы которые не вырвать каким-то целым пулом. Ценники на пулы ipv4 сейчас адовые. Так что... А с тем учетом что 6 метров мне и так в 1050 рублей выходит... 300 рублей приличный процент сверху.

Никакого геморроя с настройками и никакой зависимости от сторонних серверов и сервисов.

Я бы тут поспорил. Вытулить просто так web панель окты... даже сами разработчики просят этого не делать. А значит надо VPN, а не у всех в роутерах он из коробки живой. А настраивать на той же машине что и окта... тоже не легкое это дело. 

25.11.2019 в 09:31
0

Речь не о мобильном интернете, а об обычном кабельном, стационарном.

Вытулить просто так web панель окты...

Прокинул порт в маршрутизаторе и всё. Работает и есть не просит. Безо всяких ВПНов.

Захожу и со смарта, и с рабочего компа...

25.11.2019 в 09:44
0

Речь не о мобильном интернете, а об обычном кабельном, стационарном.

Если бы суровая реальность была такова что у все был доступен кабельный интернет... я 3 года ждал.

Прокинул порт в маршрутизаторе и всё. Работает и есть не просит. Безо всяких ВПНов. Захожу и со смарта, и с рабочего компа...

Если не кривя душою, то у меня именно так и сделано. Но есть одно отличие от бытового пользователя  - сервисы висящие в Internet у меня в другой подсети, которая "физически" с ЛВС не объедены. Нет я прекрасно понимаю что многие скажут что это паранойя и прочее, но... береженого бог бережет. У знакомого был свой сайт на своем хостинге дома. Ни каких защит особых предпринято не было, да еще и web сервисы были запущены из под root. По итогу взломали сайт, получили root, накрутили роутер, получили доступ к ЛВС и все что было расшарено по сети зашифровали. Ценник выставили 20к за ключик. Он парень языкастый, ребята пошли на встречу и за 10-ку расшифровали все. В ходе общения сказали что на весь взлом ушло порядка 10-15 минут. Не плохо так да? за 10 минут тыканья в кнопочки получить 10к рублей. И таких говорят много. Выдали ему все бреши в его безопасности. По итогу там еще парочка дырок было, хотя бы тот же включенный uPnP в который чудным образом вывалился RDP в инет, а пароль на пользователя был всего 4 символа...

25.11.2019 в 10:34
0

У нас повлиять "белый"/"серый", насколько мне известно, напрямую нельзя. Раньше статический адрес (соответственно он всегда "белый") стоил 150 рублей, что сравнимо с 90 рублями, сейчас с сайта и из личного кабинета убрали, но возможно услуга осталась. Хотя тоже как посмотреть, я за 100 Мбит/с плачу 300 рублей, и доплачивать ещё 150 в мои планы не входило. Да, я знаю, что это дёшево.

Но сейчас вот прямо вообще непросто делать такие вещи, у меня дома 2 сети, т.е. мой роутер сам не видит Octoprint, соответственно прокинуть на него ничего не может. Надо сначала с первого роутера пробросить на второй, а уже со второго роутера на октопринт. Такое извращение на ночь глядя городить не стал.

Есть ещё способ с поднятием своего сервера и пробросом Octoprint через него (всё равно у меня есть сервак за 3€ с VPN и прокси), но опять же тут возиться надо. Если вдруг кому надо будет - пишите, расскажу =)

Вариант с ngrok - быстрый (буквально 15 минут, из которых 10 я боролся с форматированием в статье и 5 настраивал ngrok), бесплатный, доступный. На мой взгляд, заслуживает внимания.

25.11.2019 в 09:04

Комментарий удалён

25.11.2019 в 11:55
0

Использую DDNS на роутере и nginx на локальном сервере, что форвардит через https до Октопринта.
DDNS позволяет использовать доменное имя, а nginx добавляет немого безопасности в обмен с Октопринтом.

Ранее пробовал с OpenVPN поднятом на роутере, но быстро надоело, т.к. с телефона удобно, а вот с рабочего PC со своими VPN и безопасностями нет.

25.11.2019 в 12:48
0

Да, всё верно. А описанный мной способ - именно альтернативный вот такому, классическому.

Например, в случаях когда нет белого IP, или когда роутер и Октопринт в разных сетях. Мы, извращенцы, такие извращённые ;-)

Спасибо за комментарий про https! Очевидно, из статьи это непонятно в данный момент, но ngrok тоже прячет пароли и API-ключи от посторонних хакеров, т.к. делает два туннеля, https и http. Теперь понимаю, что в заметке надо было бы показать фрагмент из логов, посвящённый https-туннелю - но уже поздно менять, нет кнопки редактирования.

25.11.2019 в 12:39
0

Коллеги, а плагин AstroPrint вместе с одноименным сервисом чем плох? На Octa корячится плагин, а потом через учетку Astro спойоной можно и скриншоты посмотреть того как дело и печать запустить/остановить.

d13
25.11.2019 в 12:50
0

А вот тоже бы с удовольствием послушал довольных и недовольных пользователей. Сам я - не пробовал, попробую при случае. :)

brn
25.11.2019 в 12:55
1

Ну я скорее к довольным пользователям отношусь. Ничего военного. Поставил на обадва октопринта плагины. Собственно, через учетку астры запускаю печать, смотрю статус и принимаю уведомления о том что печать закончена. Пробовал ставить AstroPi, кмк, это просто октапринт с переделанной мордой и рубленными функциями. Так что остался на Окте + плагин.

ЗЫ: Astro берут денег, если хотите подключить к учетке более 2-х принтеров. Пока 2 и меньше -- бесплано.

d13
27.11.2019 в 10:57
0

Попробовал интереса ради, вроде тоже нормальный вариант. Хотя мне как-то OctoRemote ближе )

25.11.2019 в 13:41
0

Ко мне малинка только едит, а разве на ней нельзя использовать google desktop ?

25.11.2019 в 14:56
0

Не знаю, вполне может быть, что можно. Как у него с прохождением через фаерволлы - не знаю. Как с трафиком - тоже. Какую нагрузку создаёт - тоже без понятия :(. Я написал, как можно получить удалённый доступ к Октопринту в непростых сетевых условиях (условно, если выходить в интернет через 3G-свисток, это всё равно будет работать).

Полагаю, что если пишка едет четвёртая, она "потянет" и печать и кодирование потока рабочего стола одновременно. У меня третья версия, одно из ядер полностью нагружено транслированием веб-камеры, второе бывает серьёзно занято октопринтом, в общем уже я бы побоялся запускать какую-то графическую оболочку и стримить её.

26.11.2019 в 04:22

Комментарий удалён

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Elegoo Mars - лучший бюджетный фотополимерный 3D принтер по версии ALL3DP.COM

Декор коридора.

Дефект при печати на Creality Ender 3 Pro

Миниатюры в масштабе 1:64

Аппликатор для двойных туб 50мл

Используем Cura для печати на SLA Photon