> You can download a different distro, but the setup might differ.
2) On the same page, ensure to follow the instructions about installing Nodejs and NPM through the NVM.
**NOTE:** If you encounter errors on step 2, skip to the next step, and return when prompted
## Setting Up Git
It is likely you will be unable to clone your fork of freeCodeCamp, without running these steps, but there is no harm in trying. Just follow the instructions on [the Contributors Site](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally).
If you run into any issues related to Git, follow through with one of the following alternatives. If that does not resolve the issue, try the next alternative:
### ALTERNATIVE 1 - Use apt-get to Install the Latest Version of Git
1) Update your distribution:
```sh
sudo apt update && sudo apt upgrade
```
2) Download and install Git:
```sh
sudo apt install git
```
3) Verify the installed version:
```sh
git --version
```
### ALTERNATIVE 2 - Use SSH to Work on Your Fork
1) Follow the instructions on [GitHub](https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh) to generate a new SSH key, and add it to your account.
2) If you encounter an error similar to this, perform the rest of this alternative:
>ssh: connect to host `github.com` port 22: Connection refused
3) `cd` into the `.ssh` folder, and create a config file:
```sh
cd ~/.ssh && touch config
```
4) Open the file with your favourite text editor:
Open VS Code: `code .`
Alternatively, open the folder in the explorer, and use the Windows built-in text editor: `explorer.exe .`
> [!NOTE]
> This command works for VS Code, and you might be asked to install an extension for this to work
5) Add this to the config file to allow GitHub's domain through your firewall:
```
# GitHub Account
Host github.com
HostName ssh.github.com
Port 443
PreferredAuthentications publickey
IdentityFile ./id_rsa.pub
```
> [!DANGER]
> Provided you have not deviated from the default setup, the `IdentityFile` will be as above.
6) Return to the GitHub SSH setup to test your connection
### ALTERNATIVE 3 - Last Resort
1) Install build-essential, fakeroot and dpkg-dev using the following command:
10) Change directory in to `git_2.17.1` folder and open the control file located inside debian folder (git_2.17.1/debian/control) in a text editor. Replace all the occurrences of _“libcurl4-gnutls-dev”_ to _“libcurl4-openssl-dev”_.
11) Also open _“debian/rules”_ file and delete the line _“TEST=test”_
12) Build the package files using the following command.
```sh
sudo dpkg-buildpackage -rfakeroot -b
```
13) Install the package:
```sh
sudo dpkg -i git_2.17.1_amd64.deb
```
---
## Setup MongoDB on WSL
> [!NOTE]
> Remember to return to **step 2** of [Enabling WSL](#enable-wsl-amp-download-a-distro), if you skipped it.
You might find that setting up MongoDB Server on Windows to be the easiest, but connecting to the server from WSL might lead to permission denied errors.
1) Follow the instructions on the [Microsoft Documentation](https://docs.microsoft.com/en-us/windows/nodejs/databases) for setting up MongoDB on WSL.
If you encounter any errors similar to this:
>NonExistentPath: Data directory /data/db not found.
Follow these steps:
2) Create the path for the database:
```sh
sudo mkdir -p /data/db
```
3) Try to start the server again. If you encounter a `permission denied` error, start the server with:
```sh
sudo mongod
```
If you encounter another `path` error, manually tell MongoDB where to store the database:
```sh
mongod --dbpath=data/db
```
> [!NOTE]
> The path `data/db` must exist beforehand.
## Other Possible Issues
> ERR! build error gyp ERR! stack Error: not found: make