Недавно я задался вопросом безопасности своего дев. окружения - 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Создайте ярлык веб приложения редактора:
Установите галочку чтобы оно открывалось в отдельном окне:
И редактор откроется как нативное приложение:
Теперь можно добавить его в системный трэй:
У меня все, безопасного вам кодинга!




