> ## Documentation Index
> Fetch the complete documentation index at: https://docs.t3gemstone.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Cloud

> Gemstone Kişisel Bulut Sistemi

<Frame>
  <img noZoom src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/nextcloud-hub.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=8d77ab9bddfcb3b527a830e7cb80e345" alt="Nextcloud" width="1506" height="865" data-path="images/cloud/nextcloud-hub.png" />
</Frame>

<Tip>
  Bölüm bitiminde aşağıdaki konularda bilgi sahibi olacaksınız.

  * Gemstone geliştirme kartına [Nextcloud](https://github.com/t3gemstone/t3-gem-nextcloud) bulut sistemi kurulumu
  * Mobil telefonunuz veya dış dünyadan evinizdeki Gemstone'a erişim sağlamak için kullanılan yöntemler
</Tip>

## 1. Giriş

Günümüzde kişisel verilerin kontrolü ve güvenliği her zamankinden daha önemli. Dosyalarınızı, fotoğraflarınızı,
takvimlerinizi, notlarınızı ve hatta şifrelerinizi Amazon, Google veya Microsoft gibi büyük bulut sağlayıcılarına
bağımlı olmadan merkezi bir sistemde yönetmek isteyebilirsiniz. Bunun için self-hosting ismi verilen yöntemi
kullanmanız yani kendi sunucunuzu kendi cihazlarınızda barındırmanız gerekir. Ancak kendi evinizde sunucu çalıştırmak,
sunucuya internet bağlantısı olan heryerden erişememe ve veri güvenliğini sağlayamama gibi teknik problemleri
beraberinde getirir. Bu problemler çoğu zaman karmaşık ve yüksek maliyetli yöntemler ile çözülür. `GemCloud` projesi
bu problemlerin kolay, maliyetsiz ve güvenli bir şekilde çözülmesini sağlar.

## 2. Nextcloud Kurulum

Nextcloud açık kaynak kodlu bir bulut çözümüdür. Fotoğraf ve dosya depolama, sohbet, takvim, şifre yöneticisi,
kanban görev planlama gibi uygulamaları bir arada sunar.

Gemstone geliştirme kartına [terminal bağlantısı](/tr/quickstart/#2-gemstone’u-keşfet) yaptıktan sonra aşağıdaki
komut ile Nextcloud kurulumunu başlatınız.

```bash theme={"system"}
sudo apt install t3-gem-nextcloud
```

Kurulum esnasında aşağıdaki şifre girme ekranı ile karşılaşacaksınız. Bu şifre Nextcloud'un kullandığı
veritabanında ve nextcloud `admin` kullanıcı şifresi olarak kullanılmaktadır. Güçlü ve akılda kalıcı bir şifre
seçerek şifrenizi saklayınız.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/nextcloud-password.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=595c21794b2573081551c44e1deef8c9" alt="Nextcloud password input" width="774" height="469" data-path="images/cloud/nextcloud-password.png" />
</Frame>

Kurulum tamamlandığında nextcloud sunucusu Gemstone üzerinde çalışmaya başlayacaktır. Bir sonraki aşama ise dış dünyadan
bu bulut sistemine nasıl bağlantı kurulacağını anlatmaktadır.

## 3. Dış Dünyadan Erişim

Evinizde kullanmış olduğunuz bilgisayarlarınıza ip adresi ile erişim yalnızca ev içerisindeki ağda mümkün
olmaktadır. Son yıllarda popüler hale gelen robot süpürgeler, akıllı aydınlatma sistemleri, mobil telefondan kontrol
edilen klima ve çeşitli ev aletlerinin dış dünyadan erişelebilir olması ise bu cihazların üreticiler tarafından kurulan
çeşitli sunuculara veri aktarımı gerçekleştirilerek mümkün olmaktadır.

Gemstone Cloud projesine dış dünyadan erişebilmek için en kolay çözüm internet servis sağlayıcınızı arayarak
(ISP: TurkNet, Turktelekom, Superonline vb.) Statik IP talebinde bulunmanız ve modem ayarlarından port yönlendirmesi
yapmanızdır. Bunu yapmak istemeyen kullanıcılar için ise [Tailscale](https://tailscale.com/),
[Localtunnel](https://theboroer.github.io/localtunnel-www/) gibi çeşitli çözümler bulunmaktadır.

<Tabs>
  <Tab title="Örnek Akıllı Ev Sistem Ağı">
    ```mermaid theme={"system"}
    flowchart
      n1@{ label: "Rectangle" }
      n1["Robot Süpürge"]
      n3["Klima"]
      n1 --- n6
      n2["Aydınlatma"] --- n6
      n3 --- n6
      n6@{ shape: "diam", label: "WIFI Modem" }
      n6@{ shape: "hex", label: "Wireless" }
      n6
      n5@{ shape: "stadium", label: "Sunucu" }
      n6@{ shape: "hex", label: "WIFI" } --- n5
      n6@{ shape: "dbl-circ", label: "WIFI" }
      n7@{ shape: "doc", label: "Mobil Telefon" }
      style n6 fill:#C1FF72
      n7@{ shape: "diam", label: "Mobil Telefon" }
      n5@{ shape: "stadium", label: "Üretici Sunucusu" } --- n7@{ shape: "hex", label: "Mobil Telefon" }
      n8
      n8["Akıllı Ev Sistemleri"] --- n6
      style n7 fill:#00BF63
      n5@{ shape: "lin-cyl", label: "Server" }
    ```
  </Tab>

  <Tab title="ISP Modem ve Lokal Ağ">
    <img noZoom height="600" width="600" src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/isp-nat-local.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=a5ac9d39024ea074df2cca297d9d239b" alt="Tailscale" data-path="images/cloud/isp-nat-local.png" />
  </Tab>
</Tabs>

Temel mantığı bilgisayarınıza kurmuş olduğunuz bir servis ile Tailscale haberleşmesi yaparak dış dünyadan yine tailscale
üzerinden bilgisayarınıza erişmenizi sağlamasıdır.

### 3.1. Tailscale Kurulum

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/tailscale-web.jpg?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=3090c8f4aca7aa2d4f395f1e9d27d860" alt="Tailscale" width="970" height="416" data-path="images/cloud/tailscale-web.jpg" />
</Frame>

Bu [bağlantıya](https://login.tailscale.com/start) tıklayarak Github, Google veya Microsoft hesabınızla
Tailscale'e kayıt olunuz.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/tailscale-signup.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=df120be207c3bf5544b5346c97c91cf5" alt="Tailscale signup" width="1901" height="909" data-path="images/cloud/tailscale-signup.png" />
</Frame>

Hesabınıza giriş yaptığınızda karşınıza Tailscale kontrol paneli çıkacaktır. Gemstone kartı eklemek
için `Machines -> Add device -> Linux server` seçeneğini seçiniz.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/gemstone-ekle.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=ca5ba00dd729257961a39f92d788c65f" alt="Gemstone ekle" width="1912" height="887" data-path="images/cloud/gemstone-ekle.png" />
</Frame>

Sayfanın en altına inip `Generate install script` butonuna tıklayarak oluşan tailscale kurulum
komutunu kopyalayınız. Ardından Gemstone karta [terminal bağlantısı yaparak](/tr/quickstart/#2-gemstone’u-keşfet)
kopyaladığınız komutu terminalde çalıştırınız.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/gen-install-script.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=5c7ff7035049ff6b3aea7a962e6241a7" alt="Install script" width="1913" height="874" data-path="images/cloud/gen-install-script.png" />
</Frame>

Tailscale kurulumunu tamamlandıktan sonra aşağıdaki komut ile tailscale servislerini başlatınız.

```bash theme={"system"}
sudo tailscale up
```

Bağlantının sağlıklı olduğunu, Tailscale Kontrol Panelindeki `Machines` bölümünden `Connected` yazıp yazmadığına
bakarak doğrulayınız.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/gem-machine-list.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=086f263ade32dfdd639dbcc5535ba280" alt="Tailnet machine list" width="1913" height="874" data-path="images/cloud/gem-machine-list.png" />
</Frame>

Bir sonraki adım ise Nextcloud sunucusunu tailnetten erişilebilir hale getirmektir. Kontrol panelinde
`DNS` menüsüne girip sayfanın en altında bulunan `Enable HTTPS` butonuna, ardından `Enable` butonuna
tıklayınız.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/enable-https.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=b77570c44311fc1decf744e6ad45bbac" alt="Tailnet HTTPS enable" width="1913" height="1471" data-path="images/cloud/enable-https.png" />
</Frame>

Geliştirme kartına terminal bağlantısı yapıp aşağıdaki komut ile Nextcloud'u ağdaki diğer cihazlarla paylaşıma açık
hale getiriniz.

```bash theme={"system"}
sudo tailscale serve --bg --http=80 1453
```

Bu adımdan sonra bu ağa eklenen diğer cihazlar Nextcloud'a [http://gemstone](http://gemstone) adresinden erişebilirler. Ağa client cihaz
(Örneğin Cep telefonu, kişisel bilgisayar veya tablet) eklemek için ise cihaz ekleme bölümündeki diğer seçenek olan
`Machines -> Add device ->  Client device` seçeneğini seçiniz.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/client-add.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=f4974d620ba9295382f668533ee736a3" alt="Tailnet Add Client device" width="1912" height="886" data-path="images/cloud/client-add.png" />
</Frame>

Açılan ekranda cihazınıza kurulum talimatlarını takip ederek eklemek istediğiniz cihazda Tailscale kurulumunu
tamamlayınız. Tailscale uygulamasını başlatarak işletim sisteminize uygun yöntemle giriş yapınız. İşlemleri
tamamladığınızda kontrol panelinde makineyi `Connected` etiketiyle görmeniz gerekmektedir.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/client-list.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=53226ae3ff7a7a61ad83dd25cdfbde6c" alt="Tailnet device list" width="1914" height="874" data-path="images/cloud/client-list.png" />
</Frame>

Eklediğimiz cihazda tarayıcıdan [http://gemstone](http://gemstone) adresine gidildiğinde Nextcloud giriş sayfasıyla karşılaşacaksınız.
Yönetici hesabının kullanıcı adı `admin` şifresi ise kurulum esnasında girdiğiniz `CLOUD` şifresidir.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/nextcloud-login.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=aae794b6100eb3136b2b2c8cc0d5ba7f" alt="Nextcloud login" width="1918" height="942" data-path="images/cloud/nextcloud-login.png" />
</Frame>

### 3.4. Tailscale Neden Kullanılıyor ?

IPv4 adreslerinin sınırlı sayıda olması nedeniyle, internet servis sağlayıcıları CGNAT (Carrier-Grade NAT) kullanarak
birden fazla kullanıcıyı tek bir IPv4 adresi üzerinden internete çıkarır. Bu durum, evde çalışan sunuculara
(bizim durumumuzda Nextcloud) doğrudan erişimi engeller. Tailscale, bu sorunu çözmek için WireGuard tabanlı bir
VPN ağı kurarak, CGNAT ve geleneksel NAT engellerini aşar. Kullanıcılar, internet erişimi olan her yerden, yalnızca
yetkilendirilmiş cihazlarla güvenli bir şekilde Nextcloud sunucusuna bağlanabilir. Böylece, herkese açık IP
paylaşımına gerek kalmadan, kapalı ve kontrollü
bir ağ ortamı sağlar.

### 3.5. Static IP ile Kullanım

Yapım aşamasında...

## 4. Gelişmiş Güvenlik

### 4.1. Nextcloud İki Adımlı Doğrulama

Admin hesabına giriş yaptıktan sonra üste bulunan profil resmine tıklayarak, açılan menüden `Personal Settings`
seçeneğine tıklayınız.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/nc-user-menu.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=f395f557cd9a8d017eb572ad6ee71bc5" alt="Nextcloud user menu" width="350" height="540" data-path="images/cloud/nc-user-menu.png" />
</Frame>

Ardından sol menüden `Security` seçeneğini seçip `Enable TOTP` kutucuğunu işaretleyiniz.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/security-settings.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=6f132f14d62834659a0de3ec6dfd9591" alt="Nextcloud security settings" width="1918" height="942" data-path="images/cloud/security-settings.png" />
</Frame>

Bu seçeneği işaretlediğinizde oluşan şifreyi veya QR kodu; doğrulama uygulamanıza girerek şifre oluşturunuz.
Son olarak üretilen kodu `Authentication` alanına girip `Verify` butonuna tıklayarak işlemi tamamlayınız.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/totp-enable.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=9eab64344d02788334df3701ec166b9b" alt="Nextcloud totp enable" width="1918" height="942" data-path="images/cloud/totp-enable.png" />
</Frame>

Artık hesabınıza girişte şifrenize ek olarak doğrulama kodu da kullanmanız ilave güvenlik önlemi olarak
aktifleşmiş olacaktır.

### 4.2. Tailscale Tailnet Lock Aktifleştirme

Kurulan bu sistemde Nextcloud'a erişim yalnızca tailnet ağına eklediğimiz cihazlarla yapılabildiğinden sistem güvenlidir.
Ancak burada ağa eklenecek cihazları kontrol eden `Tailscale` firmasının `Coordination Server` ismini verdiği kapalı
kaynaklı bir sunucusu mevcuttur. Tailnet'e bir cihazın katılıp katılamayacağının kararı bu sunucu tarafından
verilmektedir.

En kötü senaryoda Tailscale firması sizi hedef alırsa, `Coordination Server` kullanarak sizin izniniz dışında
tailnetinize cihaz ekleyebilir. `Tailscale` firması bu sorunu `Tailnet Lock` ismi verilen bir yöntemle çözmektedir.
Tailnet Lock; ağa katılmaya olanak sağlayan anahtarları Tailscale firmasının kendi `Coordination Server`inde
tutmak yerine sizin belirlediğiniz ağınızda bulunan iki cihazda tutmaktadır. Böylelikle tailnetinize girişleri
yalnızca bu iki cihaz yönetebilmektedir.

Kontrol panelinden `Settings -> Device management -> Enable tailnet lock` butonuna tıklayınız.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/enable-tailnet-lock-page.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=4de67c321ba0450b45d8e065ecd6bd40" alt="Tailnet lock page" width="1914" height="873" data-path="images/cloud/enable-tailnet-lock-page.png" />
</Frame>

Enable tailnet lock ekranında `Add new signing node` butonuna tıklayıp hali hazırda tailnette bulunan iki cihazı seçiniz.
Eğer sizin tailnetinizde başka cihazlar da varsa burada seçilen cihazlar güvendiğiniz cihazlar olmalıdır.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/tailnet-sign-nodes.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=f15f9f674fff7393d28687eb8d919b0a" alt="Tailnet sign nodes" width="1914" height="874" data-path="images/cloud/tailnet-sign-nodes.png" />
</Frame>

Tailnet lock aktifleştirildiğinde geri dönebilmek için tek yol Tailnet lock devre dışı bırakma kodlarıdır
(Tailnet lock disablement secret). Eğer ağınıza bir şekilde erişimi kaybederseniz ağı kurtarmak bu kodlar
olmadan mümkün değildir. Tailscale firması bu kodlardan birini kendi destek sistemlerine göndermenizi
tavsiye etmektedir fakat bunun yerine şifreleri kendi güvendiğiniz bir yerde muhafaza edebilirsiniz.

`Configure disablement options` bölümüne gidip `Don’t send disablement secret to Tailscale support` seçeneğine tıklayınız.
`Run command from signing node` bölümünde oluşan komutu kopyalayıp eklediğimiz cihazların birinde çalıştırmamız gerekmektedir.
(Örneğin Gemstone kartta çalıştırabilirsiniz.)

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/tailnet-lock-cmd.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=40848d481a5c577b0bfcab841fce9809" alt="Tailnet lock cmd" width="1915" height="874" data-path="images/cloud/tailnet-lock-cmd.png" />
</Frame>

Çalıştırdığınızda oluşan `disablement-secret:XXXXXXXX` şeklindeki devre dışı bırakma kodlarını güvenli bir yere not
ediniz.  Kontrol panelinde `Machines` kısmında ise seçtiğimiz iki cihazın altında `Signing node` ibaresini
görmemiz gerekmektedir.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/after-tailnet-lock.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=88b97aa1fc3b2294012df4c750007a99" alt="After Tailnet lock" width="1914" height="873" data-path="images/cloud/after-tailnet-lock.png" />
</Frame>

Artık yeni cihaz oluşturduğunuzda, ilgili cihazlar doğrudan ağınıza bağlanamayacaklar bunun yerine aşağıdaki
gibi `Locked out` olarak gözükeceklerdir.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/tailnet-locked-out.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=687435c2178bf4050badcb8a1f769b8e" alt="Tailnet locked out" width="1913" height="873" data-path="images/cloud/tailnet-locked-out.png" />
</Frame>

Bu cihazlar Signing node cihazlarının birinden aktifleştirilmelidir. Bunun için Signing node cihazında eklenecek
cihaza tıklayıp `Sign machine` butonuna basılmalı ardından cihazın işletim sistemine uygun seçeneklerden biri
seçilip sign işlemi tamamlanmalıdır. İşlemin ardından cihaz ağa bağlanmış olur. Sign işlemini Gemstone kartta
yapmak için `CLI` seçeneğini seçip oluşan komutu karta terminal bağlantısı yapıp terminalde çalıştırınız.

<Frame>
  <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/cloud/tailnet-sign-machine.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=05aee175a834f4ef2e74d1a1a077baf4" alt="Tailnet sign" width="1913" height="873" data-path="images/cloud/tailnet-sign-machine.png" />
</Frame>
