Недавно я задался вопросом безопасности своего дев. окружения - vscode nodejs git yarn npm
... Как известно пакеты и их зависимости представляют обширный вектор для атак. Тоже самое можно сказать и про Visual Studio Code
с его плагинами и средствами автоматизации, и про другие утилиты. По сути это все есть ящик пандоры с доступом к вашей системе.
Первое что пришло на ум, это создать под проект виртуальную машину и примонтировать каталог проекта в нее. Таким образом бы достигалась полная безопасность остальной системы. Но как показала практика это не очень удобно. Скорость работы оставляет желать лучшего, виртуальная машина потребляет много ресурсов, да и поддержка нескольких операционных систем занимает время.
В голове все это время крутилось: "контейнеры", поэтому решение не заставило себя долго ждать. В общем недавно у нас появилась возможность запускать сервер для vscode
и подключаться к нему из своей локальной версии vscode
используя remote
расширение или вообще через броузер.
Я решил пойти по последнему пути что избавило от загрузки electron
. Также я предпочитаю использовать open-source
решения.
Для запуска нам понадобится установленный docker.
Запустите эту команду в консоли и направьте свой броузер на http://127.0.0.1:10201
docker run -d -p 127.0.0.1:10201:3000 lscr.io/linuxserver/openvscode-server:latest
Чтобы сохранять настройки редактора а также подключить каталог проекта нужно примомонтировать два каталога:
-v /path/to/vscode/config:/config -v /path/to/your/project:/project
Чтобы права подключенных файлов в linux
были как у текущего пользователя:
-e PUID=$(id -u) -e PGID=$(id -g)
Чтобы использовать nodejs
и npm
добавьте параметр:
-e "DOCKER_MODS=linuxserver/mods:code-server-nvm|linuxserver/mods:code-server-npmglobal"
Если вы хотите запустить сервер в контейнере и сделать его доступным в локальной системе:
-p 127.0.0.1:8080:80
Чтобы наоборот, иметь доступ к локальному сервису из контейнера, используйте хост host.docker.internal
и добавьте:
--add-host host.docker.internal:host-gateway
Также можно объединить локальную сеть и сеть контейнера, тогда проброску портов можно опустить:
--network host
А теперь все вместе:
docker run -d \
-p 127.0.0.1:10201:3000 \
-v /path/to/vscode/config:/config \
-v /path/to/your/project:/project \
-e PUID=$(id -u) \
-e PGID=$(id -g) \
-p 127.0.0.1:8080:80 \
--add-host host.docker.internal:host-gateway \
-e "DOCKER_MODS=linuxserver/mods:code-server-nvm|linuxserver/mods:code-server-npmglobal" \
lscr.io/linuxserver/openvscode-server:latest
Создайте ярлык веб приложения редактора:
Установите галочку чтобы оно открывалось в отдельном окне:
И редактор откроется как нативное приложение:
Теперь можно добавить его в системный трэй:
У меня все, безопасного вам кодинга!