Локальный nbviewer: слава Docker'у

О, эта вечная дилемма: использовать сторонний сервис и зависеть от тех людей, которые его поддерживают, или сделать собственный и поддерживать его самому, разбираясь со всеми проблемами самостоятельно. А проблемы будут! В обоих случаях! Даже в таком тривиальном, казалось бы, деле, как выкладывание конспектов лекций. Я уже было подумал, что за последние полтора года нашёл правильную комбинацию: программистские лекции я пишу в ipynb, выкладываю исходники на github и даю ссылки через nbviewer. И всё работало. До недавнего времени. Но нет: вот уже несколько месяцев nbviewer «радует» регулярными ошибками Error 503 first byte timeout и пишет что-то про Guru mediation. Я надеялся, что «само пройдёт», но недавно обнаружил, что сообщения об этом висят открытыми с октября. Так что, видимо, не пройдёт. В общем, я тяжело вздохнул, перебрал в голове пару вариантов и решил устанавливать тот же nbviewer на каком-нибудь своём хостинге, заранее смирившись с тем, что при этом придётся решать тысячу и одну проблему.

И оказался неправ. Установка заняла примерно 4 минуты и выглядела ровно так (в полном соответствии с описанием в README-файле):

docker pull jupyter/nbviewer 
docker run -p 8080:8080 jupyter/nbviewer

И всё. Нет, вы понимаете, вообще всё. Дальше я просто зашёл на свой сервер на порт 8080 — и увидел прямо близнеца «настоящего» nbviewer'а. И он работает!

(Окей, у меня уже был установлен docker, но это тоже не велика беда, если у вас есть под рукой виртуальный сервер с каким-нибудь Linux'ом — завести такой сейчас не проблема.)

Дальше я в пару кликов получил новенький GitHub personal access token и прописал его при запуске контейнера (я не очень понимаю, зачем, но разработчики nbviewer пишут, что так будет лучше), через полминуты нагуглил, что для запуска контейнера в виде демона достаточно добавить ключик -d и всё! Осталось переделать ссылки на конспекты — ура, они снова доступны!

Ну, что я могу сказать. Слава Docker'у!

Комментарии