
# Advanced Linux OS installations
<br />
## Introduction
Congrats Ironhacker! If you are in this section, it means you have successfully finished your prework!
Now, it is time for the final push to set yourself for success in the bootcamp - we will guide you through the installations of the tools you will be using in the class, and later as a developer.
:::danger
:rotating_light: It is **absolutely essential** that your user account **has Admin rights**. You won't be able to install and use everything you need without those rights. If you are using a work computer with limited privileges, contact your IT person to grant you admin access.
:::
## Step #1: Install [nvm](https://github.com/nvm-sh/nvm)
[nvm](https://github.com/nvm-sh/nvm) is a terminal command that allows you to install and change between different versions of Node.js. Usually, your system can have only one version of Node.js installed at one time. With [nvm](https://github.com/nvm-sh/nvm), you can switch to a newer version, try some new features, and then back to an older version for your more serious projects.
- Run these commands one by one in your terminal:
```shell
$ mkdir ~/.nvm
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
```
<br>
- Use your editor to open your terminal settings file (`.zshrc` or `.bash_profile`):
```shell
$ code ~/$([ -n "$ZSH_VERSION" ] && echo ".zshrc" || echo ".bash_profile")
```
<br>
- In your editor, copy/paste these lines and save:
```shell
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
```
<br>
- Close and reopen all your terminal windows.
## Step #2: Install [Node.js](https://nodejs.org/)
- Run this command in your terminal to install the latest version of Node.js.
```shell
$ nvm install node
```
## Step #3: Install MongoDB on Ubuntu (all versions - 14.O4, 16.04, 18.04)
[MongoDB](https://www.mongodb.com/what-is-mongodb) is the database we will be teaching in the course. Every app needs a database to store its information. There are many different databases, each with its pros and cons — more on this during the course.
Run these commands one by one in your terminal:
1. Add the key to authenticate packages
```shell
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
```
2. Install Deb Package (Debian and Ubuntu)
Depending on the version, copy and paste one of the following commands:
- **FOR VERSION 14.O4 ONLY**
```shell
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
```
- **FOR VERSION 16.O4 ONLY**
```shell
$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
```
- **FOR VERSION 18.O4 ONLY**
```shell
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
```
3. Update packages
```shell
$ sudo apt-get update
```
4. Install MongoDB
```shell
$ sudo apt-get install -y mongodb-org
```
5. Start your database
:::warning
:warning: Now and every time you restart your computer, you will have to start your database.
:::
```shell
$ sudo service mongod start
```
6. Start using MongoDB
Run the [mongo shell](https://docs.mongodb.com/manual/reference/program/mongo/#bin.mongo) to connect to a `mongod` that is running on your localhost by default:
```shell
$ mongo
```
## Step #4: Install [MongoDB Compass](https://www.mongodb.com/products/compass)
- Visit [the Download and Install Compass page](https://docs.mongodb.com/compass/master/install/).
- Select _DEBIAN_ for Ubuntu.
- Follow the instructions to install the MongoDB Compass app.
<br>
You are good to go. Good luck! :heart:
## Extra resources
- [MongoDB on Ubuntu - official docs](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/)
- [Why passwords are not visible in the terminal?](https://askubuntu.com/questions/112069/nothing-shows-up-in-the-terminal-when-i-type-my-password)