HTTPS и прокси

Открыть доступ к сайту

Откройте домен на телефоне или планшете в той же сети Wi-Fi по QR-коду или отправьте его кому-нибудь по публичной ссылке (cloudflared, ngrok, localhost.run, Pinggy).

Домен .test отвечает только на вашем Mac. Открыть доступ делает его доступным в другом месте: на телефоне или планшете в той же сети, чтобы проверить сайт вживую, или в интернете по публичной ссылке, чтобы показать его клиенту или принять вебхук.

На вкладке Домены проекта нажмите значок общего доступа в строке домена: откроется окно Открыть доступ к <домен> с двумя разделами.

Окно «Открыть доступ»: домен в локальной сети с QR-кодом и публичная ссылка через Cloudflare

По умолчанию всё выключено, ничего не сохраняется: доступ живёт в памяти и закрывается при выходе из Joppa. Домен должен быть включён, а прокси запущен.

В локальной сети

Включите Открыть доступ в локальной сети. Joppa открывает порт на адресе вашего Mac в сети (Wi-Fi или Ethernet) и показывает адрес, например http://192.168.1.20:41306, с QR-кодом. На телефоне, подключённом к той же сети Wi-Fi, отсканируйте код камерой или введите адрес.

  • Один порт на домен, всегда один и тот же для данного домена (от 41000 до 41999), пока он свободен: закладка на телефоне продолжает работать от раза к разу.
  • По обычному HTTP. Телефон не доверяет центру сертификации Joppa, установленному только на вашем Mac: адрес по HTTPS показал бы ошибку сертификата. Для безопасного контекста (service worker, камера, crypto.subtle) используйте публичную ссылку по HTTPS.
  • Горячая перезагрузка работает. Клиент HMR Vite (а также Next.js, Astro…) переподключается к адресу, с которого пришла страница: его WebSocket идёт через тот же порт, и страница на телефоне обновляется, когда вы сохраняете файл.
  • Доступ в локальной сети бесплатен.

Выключение переключателя сразу закрывает порт.

Публичная ссылка

Публичная ссылка даёт временный адрес https://, который может открыть кто угодно, через туннель. Она входит в Joppa Pro; в бесплатной версии раздел показывает «Публичные ссылки входят в Joppa Pro». См. Лицензия и тарифы.

Выберите Туннель, затем нажмите Открыть туннель. Через несколько секунд появится адрес с QR-кодом, кнопкой копирования и кнопкой открытия. Закрыть останавливает туннель.

Туннель Аккаунт Что нужно
Cloudflare, без аккаунта (по умолчанию) не нужен cloudflared, который Joppa скачает, если его нет
ngrok, ваш аккаунт ngrok Установленный ngrok (brew install ngrok) и ваш токен
localhost.run, без аккаунта не нужен ssh, уже есть в macOS
Pinggy, без аккаунта (60 мин) не нужен ssh; бесплатный туннель закрывается через 60 минут
  • cloudflared: если его нет ни в PATH, ни среди уже скачанного, Скачать cloudflared загружает закреплённую в Joppa версию из релизов Cloudflare на GitHub (около 20 МБ) и проверяет её SHA-256, прежде чем установить в папку Joppa (см. Файлы). Архив с несовпадающим отпечатком удаляется.
  • ngrok: вставьте свой Authtoken ngrok (dashboard.ngrok.com) и нажмите Сохранить; он хранится в связке ключей. Не нужен, если у ngrok токен уже есть (ngrok config add-authtoken). Бесплатный аккаунт ngrok показывает посетителям страницу-предупреждение перед сайтом.
  • localhost.run и Pinggy работают через ssh; Joppa хранит их ключи хостов в собственном файле known_hosts, не трогая ~/.ssh.

Пока туннель открыт, строка состояния показывает его оранжевым («1 туннель открыт»); щелчок по нему показывает домены с открытым доступом, с кнопкой Закрыть для каждого и Закрыть все. В списке у домена также появляется значок публично. Если клиент туннеля останавливается (пропала сеть, сервис отказал), окно показывает «Туннель закрылся» с его последними сообщениями и кнопкой Повторить.

Что видит приложение

Оба вида доступа проходят через прокси Joppa, как и браузер вашего Mac:

  • сервер разработки получает Host домена (app.acme.test) и X-Forwarded-Proto: https, какой бы адрес ни был введён на телефоне: в allowedHosts Vite и в доверенных доменах Laravel или Symfony ничего менять не нужно;
  • Origin и Referer приводятся к домену, чтобы защита от CSRF принимала формы;
  • запросы видны в Аналитике и в Инспекторе.

В обратную сторону Joppa переписывает абсолютные URL домена на общий адрес: https://app.acme.test/… становится http://192.168.1.20:41306/… или https://….trycloudflare.com/…. Это касается перенаправлений (Location), заголовков CORS и CSP и тела текстовых ответов (HTML, CSS, JavaScript, JSON, XML, SVG) размером до 8 МБ. Cookie теряют атрибут Domain, а в локальной сети по HTTP — и атрибут Secure (иначе телефон отклонил бы их и сессия не держалась бы).

Laravel и npm run dev

Во время npm run dev Laravel записывает адрес Vite в public/hot (https://myproject.test:5173), и страница загружает оттуда свои скрипты и стили — с адреса, который знает только ваш Mac. Пока этот файл существует, общий доступ также отправляет пути Vite (/@vite/client, /resources/…, /node_modules/…) на сервер Vite вашего Mac и заменяет его адрес в ответах на общий адрес. Страница полностью загружается на телефоне без npm run build. Таблица доменов отмечает это пометкой «+ Vite :5173» рядом с целью.

В терминале и для ИИ

joppa share app.acme.test
joppa share app.acme.test --public
joppa share stop app.acme.test

См. Команда joppa и инструменты share_start, share_stop и share_status MCP-сервера.

getjoppa.com › support

Загрузка

Не отправляется? Напишите на [email protected]. Просто вопрос: [email protected].