Удалённая разработка
Не всегда компилятор можно поставить прямо на рабочую машину. Типичные причины: мак на Intel, слишком старый процессор, корпоративный ноутбук с запретом на установку софта или желание считать на мощном сервере, а редактировать код на лёгком ноутбуке.
Во всех этих случаях подход один: код и компилятор живут на удалённой машине, а редактор работает так, будто всё локально. Это тот же принцип, что и с WSL, только Linux не внутри вашего компьютера, а где-то ещё.
Что выбрать
Заголовок раздела «Что выбрать»| Ситуация | Решение |
|---|---|
| Есть сервер или виртуальная машина с Linux | Remote - SSH |
| Хочется чистое воспроизводимое окружение, Docker уже стоит | Dev Containers |
| Ничего нет, попробовать хочется прямо сейчас | GitHub Codespaces |
| Windows на своей машине | WSL — это тоже удалённая разработка, только локальная |
Remote - SSH
Заголовок раздела «Remote - SSH»-
Поставьте расширение Remote - SSH (
ms-vscode-remote.remote-ssh). -
Настройте подключение по ключу.
Если ключа ещё нет, создайте его на своей машине:
Окно терминала ssh-keygen -t ed25519 -C "you@example.com"И скопируйте публичную часть на сервер:
Окно терминала ssh-copy-id вашеимя@адрес-сервераПроверьте, что вход работает без пароля:
Окно терминала ssh вашеимя@адрес-сервера -
Опишите хост в конфиге SSH — так его не придётся набирать руками:
~/.ssh/config Host mojo-serverHostName 203.0.113.10User вашеимяIdentityFile ~/.ssh/id_ed25519ForwardAgent yesСтрока
ForwardAgent yesпробрасывает на сервер ваш SSH-агент. Благодаря ейgit pushс сервера будет использовать ключ с вашего ноутбука, и отдельный ключ на сервере заводить не придётся. -
Подключитесь: Ctrl + Shift + P → Remote-SSH: Connect to Host →
mojo-server.VS Code доустановит на сервер свою серверную часть. В левом нижнем углу появится индикатор с именем хоста.
-
Установите Mojo на сервере — так же, как на обычном Linux: через uv.
-
Поставьте расширения в удалённую сессию.
У кнопки установки будет написано
Install in SSH: mojo-server. Нужны расширения Mojo и Python — как и в случае с WSL, они должны жить там же, где компилятор.
Dev Containers
Заголовок раздела «Dev Containers»Контейнер описывает окружение файлом в репозитории — и у всех участников проекта оно получается одинаковым, вплоть до версии компилятора.
Нужны Docker и расширение Dev Containers (ms-vscode-remote.remote-containers).
Положите в проект такой файл:
{ "name": "Mojo 1.0", "image": "mcr.microsoft.com/devcontainers/base:ubuntu-24.04", "postCreateCommand": "curl -LsSf https://astral.sh/uv/install.sh | sh && ~/.local/bin/uv sync", "customizations": { "vscode": { "extensions": ["modular-mojotools.vscode-mojo", "ms-python.python"] } }}Затем: Ctrl + Shift + P → Dev Containers: Reopen in Container.
Что здесь происходит: берётся чистая Ubuntu 24.04, в неё ставится uv,
затем uv sync разворачивает окружение по вашему pyproject.toml
и uv.lock — то есть ровно ту версию Mojo, которая зафиксирована в проекте.
Расширения ставятся в контейнер автоматически.
GitHub Codespaces
Заголовок раздела «GitHub Codespaces»Самый быстрый способ попробовать Mojo, если ставить локально нечего или некуда: Codespaces — это тот же dev container, только запущенный на серверах GitHub и открытый в браузере.
-
Форкните репозиторий с
devcontainer.json(подойдёт шаблон из курса). -
На странице репозитория: кнопка Code → вкладка Codespaces → Create codespace on main.
-
Дождитесь сборки окружения — первый запуск занимает пару минут, дальше оно кэшируется.
-
Откройте терминал и проверьте:
Окно терминала uv run mojo --version
Работать можно прямо в браузере или подключиться к этому же codespace из десктопного VS Code — через расширение GitHub Codespaces.
Git на удалённой машине
Заголовок раздела «Git на удалённой машине»Кода на сервере касается тот же принцип, что и в WSL: Git там свой, и настроить его нужно отдельно.
git config --global user.name "Ваше Имя"git config --global user.email "you@example.com"Если вы включили ForwardAgent yes, отдельный ключ на сервере не нужен —
git push будет использовать ключ с вашего ноутбука. Проверить:
ssh -T git@github.comHi username! You've successfully authenticated, but GitHub does not provide shell access.
Если проброс агента не используется, создайте ключ прямо на сервере и добавьте его в настройках GitHub — процедура описана в главе Установка на Windows через WSL, она одинаковая для любого Linux.
Что заметно медленнее по сети
Заголовок раздела «Что заметно медленнее по сети»Пара вещей, которые стоит знать заранее, чтобы не удивляться:
- Первое подключение к новому хосту всегда долгое: VS Code разворачивает на нём свою серверную часть.
- Автодополнение отвечает через сеть. На канале с задержкой в 100 мс это ощущается, но терпимо; на мобильном интернете — раздражает.
- Проброс портов VS Code делает сам, если программа слушает порт: ссылка появится во вкладке «Порты».
- Файлы не синхронизируются автоматически. Всё, что вы редактируете, —
это файлы на удалённой машине. Не забывайте про
git push, иначе единственная копия работы останется на чужом сервере.
🎯 Проверь себя
Чем Remote-SSH принципиально отличается от редактирования файлов по SFTP?
При работе по SFTP редактор остаётся локальным и просто копирует файлы туда-сюда: языковой сервер, компилятор и терминал — ваши, локальные. Remote-SSH запускает серверную часть VS Code на удалённой машине, поэтому расширения, автодополнение, сборка и отладка выполняются там же, где живёт код и компилятор.
Зачем в devcontainer.json команда uv sync, а не uv add mojo?
uv sync разворачивает окружение по уже существующим pyproject.toml
и uv.lock, то есть ставит зафиксированную версию Mojo. uv add
добавил бы зависимость заново и мог подтянуть более свежую версию —
воспроизводимость окружения на этом бы и закончилась.
У меня MacBook на Intel. Какой путь самый быстрый?
GitHub Codespaces: форкнуть репозиторий с devcontainer и нажать Create codespace — рабочее окружение с Mojo появится в браузере за пару минут. Для постоянной работы — арендовать недорогую виртуальную машину с Linux и подключаться к ней через Remote-SSH.
Что дальше
Заголовок раздела «Что дальше»Если что-то не заводится — загляните в диагностику проблем. Если всё работает — пора к первой программе.
Тексты курса — CC BY-NC-SA 4.0, код примеров — Apache 2.0