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.