# Linux Packages

## Install Packages

> Packages are like drivers of your linux system
>
> You must have specific packages installed to be able to run specific commands

### Update server packages

Before any installation, you must update your packages

```
sudo apt-get update && sudo apt-get upgrade -y
```

### Main Packages

```
sudo apt install curl iptables build-essential git wget lz4 jq make gcc nano automake autoconf tmux htop nvme-cli libgbm1 pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev ca-certificates  -y
```

### Python3, pip

```
## Python 3.8 Pip, Python3 Install
sudo apt install -y python3-pip
sudo apt install pip
sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
```

### Go

```
sudo rm -rf /usr/local/go
curl -L https://go.dev/dl/go1.22.3.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile
source .bash_profile
go version
```

### NodeJS , npm, yarn

```
# Check Nodejs Version
node --version
# if 18, skip nodejs steps

# Delete Nodejs old files
sudo apt-get remove nodejs
sudo apt-get purge nodejs
sudo apt-get autoremove
sudo rm /etc/apt/keyrings/nodesource.gpg
sudo rm /etc/apt/sources.list.d/nodesource.list

# Install Nodejs 18
sudo apt-get update
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

sudo apt install -y nodejs

node -v
npm -v

# Install npm
sudo apt-get install npm
npm --version

# Install yarn
curl -sSL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update -y
sudo apt-get install yarn -y
```

### Docker, Docker-Compose Plugin

```
sudo apt update -y && sudo apt upgrade -y
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

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

sudo apt update -y && sudo apt upgrade -y

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

# Test Docker
sudo docker run hello-world
```

### lsof, ufw

```
# check ports in-use
lsof -i -P -n | grep LISTEN

# What process is using port 80
lsof -i :80

# Open ports for external usage
sudo ufw allow <port>

# Example: Open port 3000 , 
# NOTED!!! always allow port 22 first to make sure your ssh access not getting blocked
sudo ufw allow 3000
```

### htop

Manage your linux components (CPU, Memory, Swap, Tasks, ..)

```
# Install
sudo apt install htop

# Run
htop
```

### bench

See your machine benchmark

```
# Method 1
wget -qO- bench.sh | bash

# Method 2
curl -Lso- bench.sh | bash

// you can choose any 1 of above command, it's should works same.
```

\*\*this pages based on [0xmoei post](https://github.com/0xmoei/Linux_Node_Guide/blob/main/linux-config.md).
