# Tools you install later

Week 0 deliberately leaves four tools out: Node, PostgreSQL, Docker and minikube. Each one arrives in the week that uses it. This page is how you install each one when that week comes.

Don't install them early. An unused database or container service costs disk, memory and attention, and gives you one more thing to keep patched.

> **What this teaches:** I can add a tool when the work needs it. I can follow the maker's own instructions instead of a copied command.

## When each one arrives

| Tool | Week | What you use it for |
|---|---|---|
| PostgreSQL 16 | Week 5 | Your first real database: tables, migrations, transactions |
| Node 24 | Week 9 | Running the React front end and its tests |
| Docker | Week 14 | Putting your app in a container |
| minikube | Week 14 | Running that container on Kubernetes, on your own machine |

Before you install any of them, check the maker's page for your exact system. The commands below are for the reference setup, Ubuntu 24.04 on x86_64. On Windows, macOS or another Linux, the official page is the instruction and this page is only the summary.

## PostgreSQL 16 — Week 5

Run `psql --version` first. If it already reports 16, skip installation.

Ubuntu 24.04 ships PostgreSQL 16 in its own package list, so you do not need an extra source.

```bash
sudo apt-get install postgresql postgresql-client
```

Check it:

```bash
psql --version
```

You should see 16 and some digits after it. The database also runs as a service:

```bash
systemctl status postgresql
```

Official page: <https://www.postgresql.org/download/linux/ubuntu/>

## Node 24 — Week 9

Run `node --version` first. If it already reports v24, skip installation.

Ubuntu's own package list does not carry Node 24, so you pick a source. Two work, and they suit different needs.

**nvm** installs Node under your home folder. No admin rights, and you can hold several versions at once. That fits a learner best.

**NodeSource** installs Node for the whole computer through apt. It needs admin rights and gives you one version.

Take nvm unless you have a reason not to. Install it with these four commands.

Download the installer. Open nvm's official page first and check the version tag in its install line. Put that tag in the address below.

```bash
curl -fLo "$HOME/nvm-install.sh" "https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh"
```

Read it before you run it. This is a script from the internet, so look at it.

```bash
less "$HOME/nvm-install.sh"
```

Run it as your normal user. Never with sudo.

```bash
bash "$HOME/nvm-install.sh"
```

Close the terminal and open a new one, so the shell picks up nvm. Then install Node.

```bash
nvm install 24
```

Check it:

```bash
node --version
```

You should see v24 and some digits.

Official pages: <https://github.com/nvm-sh/nvm> and <https://nodejs.org/en/download>

## Docker — Week 14

Run `docker --version` first. If installed, skip installation and check the service below.

Docker needs its own package source added first. The official page gives the exact lines for your Ubuntu version, and they change, so follow it rather than this summary.

The shape of it is: add Docker's signing key, add the Docker package source, update the package list, then install.

```bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

Check it:

```bash
sudo docker run hello-world
```

A short welcome message means the service is running.

Running Docker without `sudo` means adding your login to the `docker` group. That group can control the whole machine, so treat it as an admin decision and write down that you made it.

Official page: <https://docs.docker.com/engine/install/ubuntu/>

## minikube — Week 14

Run `minikube version` first. If installed, skip installation and start the cluster below.

minikube runs a small Kubernetes cluster on one machine. It needs Docker first, because Docker is the driver it uses.

Install it with these three commands. This is the Ubuntu package for an Intel or AMD chip. On an arm64 machine, take the arm64 file from the official page instead.

Download the package.

```bash
curl -fLo "$HOME/minikube.deb" "https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb"
```

Install it. This is a system package, so sudo is right here.

```bash
sudo dpkg -i "$HOME/minikube.deb"
```

Start the cluster.

```bash
minikube start --driver=docker
```

Check it. minikube ships its own kubectl, so you do not have to install one.

```bash
minikube kubectl -- get nodes
```

One node, with status Ready. If you would rather type plain kubectl, install it separately from the official Kubernetes page.

Official page: <https://minikube.sigs.k8s.io/docs/start/>

## If you are not on Ubuntu

The tools are the same, the commands are not. Open the official page for each one and pick your system. On Windows and macOS, Docker ships as Docker Desktop, which has its own licence terms for larger companies. Read them before you install it at work.

## Record what you did

For each tool you install, write four things in your week record:

- The official page you followed, and the date you read it
- The version the check command printed
- Anything the install changed about permissions, such as joining the `docker` group
- What still does not work, if anything

## Explain it back

Say why the course waits until Week 5 to install a database. Then name one cost of installing every tool on day one.
