Nextcloud
Bölüm bitiminde aşağıdaki konularda bilgi sahibi olacaksınız.
  • Gemstone geliştirme kartına Nextcloud bulut sistemi kurulumu
  • Mobil telefonunuz veya dış dünyadan evinizdeki Gemstone’a erişim sağlamak için kullanılan yöntemler

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ı yaptıktan sonra aşağıdaki komut ile Nextcloud kurulumunu başlatınız.
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.
Nextcloud password input
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, Localtunnel gibi çeşitli çözümler bulunmaktadır.
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

Tailscale
Bu bağlantıya tıklayarak Github, Google veya Microsoft hesabınızla Tailscale’e kayıt olunuz.
Tailscale signup
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.
Gemstone ekle
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 kopyaladığınız komutu terminalde çalıştırınız.
Install script
Tailscale kurulumunu tamamlandıktan sonra aşağıdaki komut ile tailscale servislerini başlatınız.
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.
Tailnet machine list
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.
Tailnet HTTPS enable
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.
sudo tailscale serve --bg --http=80 1453
Bu adımdan sonra bu ağa eklenen diğer cihazlar Nextcloud’a 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.
Tailnet Add Client device
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.
Tailnet device list
Eklediğimiz cihazda tarayıcıdan 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.
Nextcloud login

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.
Nextcloud user menu
Ardından sol menüden Security seçeneğini seçip Enable TOTP kutucuğunu işaretleyiniz.
Nextcloud security settings
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.
Nextcloud totp enable
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 Serverinde 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.
Tailnet lock page
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.
Tailnet sign nodes
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.)
Tailnet lock cmd
Ç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.
After Tailnet lock
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.
Tailnet locked out
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.
Tailnet sign