Node.js, Docker, Git, VSCode and Copilot

This guide continues from the WSL environment setup. At this point you have Debian Trixie running in WSL, logged in as the node user, with /workspace/projects ready. Now we install everything needed to start developing with TypeScript, NestJS, and Angular.

Step 1 — Install Node.js with nvm

nvm (Node Version Manager) lets you install and switch between multiple Node.js versions with a single command. It is the right way to manage Node in a development environment.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc

Install the latest LTS version:

nvm install --lts
nvm use --lts

Verify:

node --version
npm --version

Step 2 — Install TypeScript and Angular CLI

npm install -g typescript
npm install -g @angular/cli

Verify:

tsc --version
ng version

These are installed globally — available in all your projects from the start.

Step 3 — Install Docker Engine

Do not install Docker Desktop. Install Docker Engine natively inside WSL — this is the key difference that eliminates virtualisation overhead.

sudo apt-get update
sudo apt-get install -y ca-certificates curl

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Add the node user to the docker group so you can run Docker without sudo:

sudo usermod -aG docker node

Enable the Docker socket instead of the daemon. With socket activation, Docker starts only on the first request and consumes no memory when not in use:

sudo systemctl enable docker.socket
sudo systemctl start docker.socket

Test it:

docker run hello-world
docker compose version

Step 4 — Install Git

sudo apt-get install -y git

git config --global user.name "Your Name"
git config --global user.email "This email address is being protected from spambots. You need JavaScript enabled to view it."
git config --global init.defaultBranch main

Git is useful even without a GitHub account — for local versioning of your projects.

Step 5 — Install VSCode

If you are on Windows (WSL):

Download and install VSCode from code.visualstudio.com. During installation, make sure the option "Add to PATH" is checked.

Then install the Remote - WSL extension. Open VSCode, go to Extensions (Ctrl+Shift+X), search for Remote - WSL and install it.

From inside your WSL terminal, navigate to any project folder and run:

cd /workspace/projects
mkdir test && cd test
code .

VSCode opens connected directly to the Linux filesystem. Everything — terminal, Git, debugger — runs inside WSL.

If you are on Linux native:

sudo apt-get install -y wget gpg
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | \
  sudo tee /etc/apt/sources.list.d/vscode.list > /dev/null

sudo apt-get update
sudo apt-get install -y code

Step 6 — Install Recommended VSCode Extensions

From the WSL terminal, install the essential extensions with a single command:

code --install-extension ms-azuretools.vscode-docker
code --install-extension eamodio.gitlens
code --install-extension GitHub.copilot
code --install-extension GitHub.copilot-chat

GitHub Copilot is available with a free tier — enough to start experiencing AI-assisted development.

Step 7 — Create Your First Instruction File

An instruction file tells Copilot what your project is, which stack you use, and which rules to follow. The difference in output quality is immediate.

Create the structure for your first project:

cd /workspace/projects
mkdir my-project && cd my-project
mkdir -p .github/instructions
code .

Inside VSCode, create the file .github/instructions/general.instructions.md with this content as a starting point:

---
applyTo: "**"
---
# Project

## Stack
- Runtime: Node.js (LTS) with TypeScript
- Backend: NestJS
- Frontend: Angular
- Containerisation: Docker + Docker Compose

## Conventions
- Use async/await, never raw Promises
- All functions must have explicit TypeScript return types
- Module structure follows NestJS standard (module, controller, service)

## Rules
- Do not generate inline comments unless the logic is non-obvious
- Do not use `any` type

Adjust it to your project. The more specific you are, the better Copilot understands your context.

You are now ready to clone and run the projects from GitHub, including the RAD-System framework documented in the blog.