# RaspberryPi Sifirdan Kurulumu, SSH ve VNC baglantisi, ngrok ile internetten eris

![](https://i.imgur.com/zooXqM8.png)

## Ilk tavsiyem sudur ki **raspberry’nin kendi isletim sistemini** kurun

* `Ubuntu` vb gibi isletim sistemlerini **kurmayin** performans sorunlari var
* Ayrica paketlerin hepsinin arm olmasi gerekiyor ki bu da sorun
* Ek olarak ubuntuda arm olmayan ama raspberry’de olan paketler var

<details>

<summary>2-3 saatimi ubuntuyu sorunsuz kullanmak icin harcadim</summary>

\- Tabiki kendi kullanim senaryom ile sizinki uyusmayacaktir - Ama yine de riski yuksek, bilmekte fayda var - Risk - Reward dengesi bana gore yetersiz

</details>

## SSH key ile sifresiz olarak raspberry’e baglanmak

<details>

<summary>_SSH_ key olusturun (veya olani kullanin)</summary>

```bash
ssh-keygen -t rsa -b 4096
```

</details>

<details>

<summary>Ardindan bunu _raspberry_ uzerine gonderin</summary>

```bash
ssh-copy-id kullaniciadi@raspberrypi_adresi
```

</details>

* Artik sifresiz bir sekilde baglanabilirsiniz

<details>

<summary>1Password ile uyumunu saglamak (opsiyonel)</summary>

\- \`New Item\` > \`SSH Key\` deyip \`.ssh/id\_rsa\` dosyanizi buraya surukleyin - \`Agent Sock\` kurulu ise 1password ile baglanabilirsiniz

<img src="https://i.imgur.com/63tdc0l.png" alt="" data-size="original">

</details>

<details>

<summary>Tum SSH islemleri</summary>

</details>

## VNC Server Kurulumu ile GUI Arayuzuyle Baglanmak

<details>

<summary>[VNC Server](https://www.realvnc.com/en/connect/download/vnc/) zaten kurulu olarak gelir _raspberry_’de, paketlerini guncellemeniz yeterlidir</summary>

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

</details>

<details>

<summary>Ardindan VNC Server’i `service mode` olarak `sudo` ile calistirin</summary>

```bash
sudo systemctl restart vncserver-x11-serviced
```

</details>

<details>

<summary>Artik VNC Server uzerinden `raspberrypi.local` yazarak baglanabilirsiniz</summary>

<img src="https://i.imgur.com/AqSxmcg.png" alt="" data-size="original">

</details>

* Ek bilgi olarak; `VNC` için 5900 portu kullanılır

{% embed url="<https://help.realvnc.com/hc/en-us/articles/360002249917-VNC-Connect-and-Raspberry-Pi#setting-up-your-raspberry-pi-0-0>" %}

## NodeJs Kurulumu

* [Nodesource](https://deb.nodesource.com/) uzerinden indirebilirsiniz

```bash
sudo apt-get update && sudo apt-get install -y ca-certificates curl gnupg
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update && sudo apt-get install nodejs -y
```

{% embed url="<https://deb.nodesource.com/>" %}

## Ngrok Kurulumu

* [Ngrok yonergelerine](https://dashboard.ngrok.com/get-started/setup/raspberrypi) bakmayi unutmayin

<details>

<summary>`ngrok` kurulumu</summary>

```bash
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt update && sudo apt install ngrok
```

</details>

<details>

<summary>`ngrok` yapilandirma</summary>

\- \`TOKEN\` bilgisini almak icin \[Your Authtoken]\(<https://dashboard.ngrok.com/get-started/your-authtoken>) alanina bakin

```bash
TOKEN="" # Buraya token bilginizi koyun
ngrok config add-authtoken $TOKEN
```

</details>

<details>

<summary>Baglanti basarili olursa [Agents](https://dashboard.ngrok.com/tunnels/agents) alaninda gorebilirsiniz</summary>

\- 15.tcp.eu.ngrok.io:149 icin \`\~/.ssh/config\` ayari

```bash
Host ngrok
    HostName 15.tcp.eu.ngrok.io
    Port 149
    User username
    ForwardX11 yes
```

</details>

## Pm2 ile Ngrok Kullanimi

## Raspberry Dizinine Internetten Erismek

<details>

<summary>Projenin dizinine gelin ve python ile serve edin</summary>

\- \`8000\` portu olduguna dikkat edin

```bash
PATH="Downlaod/tmp"
cd $PATH
python -m http.server 8000
```

```bash
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
```

</details>

<details>

<summary>ardindan ngrok ile `http` port yonlendirmesi yapin</summary>

```bash
DOMAIN=""
ngrok http 8000 --domain=$DOMAIN
```

<img src="https://i.imgur.com/TvJxxl1.png" alt="" data-size="original">

</details>
