void_3am писал:
зачислилось быстрее, чем я нашёл телефон
это потому что ночью даже банку скучно, вот он и крутит платежи от нечего делать)) я в пятницу ночью тоже сидел, только не платил — поднимал себе юпитер как раз по этой статье. ruslan_krd, по оплате подтверждаю твою версию: я платил СБП в будний день, зачислилось почти сразу. так что твои сутки «в обработке» — это банк выходного дня, не хостинг.
теперь по самой статье, потому что лбом я в неё ударился ровно в одном месте. всё поднял:
venv на
python 3.12,
pip install jupyterlab, сервис стартанул, токен вставил, блокнот открылся. а
kernel висит в вечном «connecting». я минут сорок грешил на
venv, снёс, поставил с нуля — то же самое. а дело вообще не в юпитере было: он у меня за
nginx, а
nginx по умолчанию вебсокеты не проксирует. юпитер без вебсокетов страницу показывает, а ядро к ней подключить не может. лечится парой строк в локейшене:
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# вот эти три строки и есть весь фикс
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
в статье про обратный прокси абзац есть, но про вебсокеты как-то вскользь. я бы жирным выделил — судя по моему вечеру пятницы, это грабля номер один.
ещё два момента от себя. первый: не вешайте юпитер на
0.0.0.0, даже с токеном. пусть слушает
127.0.0.1, а наружу смотрит только
nginx с сертификатом. токен в url — это по сути пароль, который ещё и в логах светится. я токен вообще выключил и сделал пароль через jupyter server password — один раз ввёл, браузер запомнил, и не надо каждый раз токен из вывода выковыривать.
второй:
systemd unit, чтобы оно переживало ребут и не умирало, когда закрыл
ssh:
[Unit]
Description=Jupyter
After=network-online.target
[Service]
Type=simple
User=artem
WorkingDirectory=/home/artem/notebooks
ExecStart=/home/artem/venv/bin/jupyter lab --no-browser
Restart=always
[Install]
WantedBy=multi-user.target
compose в этот раз не прикладываю — решил без докера, голый
systemd. чтоб никто не сказал, что я опять всё в контейнер завернул))
и про железо, раз статья про ML. я сначала поставил юпитер на тот же сервер, где у меня
ollama с 7b крутится, на 8 гб. они память делят: как только из блокнота дёргаешь модель, всё начинает подтормаживать — модель и так половину съела. в итоге оставил так, но честно: юпитер мне не для обучения, а промпты гонять перед тем, как тащить их в бота. для «покрутить в блокнотике» — с головой, для чего-то большего я бы памяти докинул.
void_3am, ты платил в субботу ночью, я деплоил в пятницу ночью — у нас с тобой рабочий день начинается, когда у нормальных людей заканчивается) но именно ночью я и нашёл эти вебсокеты за сорок минут, днём бы в три раза дольше пялился.
у кого юпитер на этом же хосте — lab гоняете или classic notebook? я на lab, но говорят, classic в браузере меньше жрёт. и ещё: у вас
kernel на долгих ячейках не отваливается? я пока только proxy_read_timeout поднял, вроде живёт.