Ana içeriğe geç

mtls

Setting up and configuring mTLS certificate for Headless CMS OneEntry using tokens and mTLS, as well as deploying the application on a server with Nginx, Docker, and GitLab

Part 1: Setting up mTLS

Protecting the API
  1. 1. Token Kullanarak: OneEntry ayarlarında bir token oluşturun ve bunu istek başlıklarına 'x-app-token' parametresi ile ekleyin, burada değer token'dır.
  2. 2. mTLS Kullanarak: OneEntry kontrol panelinizde mTLS seçeneğini etkinleştirin ve OneEntry ayarlarında sertifikayı oluşturun.
Sertifikayı ayarlama
  1. 1. Kontrol panelinizde 'Erişim' sekmesine gidin ve token'dan mTLS'ye geçin.
  2. 2. OneEntry'de yeni bir sertifika oluşturun ('Ayarlar' -> 'Uygulama Sertifikaları' -> 'Yeni Sertifika Oluştur').
  3. 3. Sertifikayı bilgisayarınıza indirin ve projenizin kökündeki 'cert' klasörüne çıkarın.
Yerel ortamı ayarlama (örnek olarak ReactJS kullanarak)
  1. 1. setupProxy.js dosyasını indirin ve 'src' klasörüne kaydedin.
  2. 2. 'target' parametresini düzenleyin, projenizin adresini belirtin.
  3. 3. 'http-proxy-middleware' paketini yükleyin: 'npm install http-proxy-middleware'.
  4. 4. Uygulamayı başlatın.

Part 2: Sunucu Yapılandırması

Sunucuyu Hazırlama
  1. 1. Depo bilgilerini güncelleyin: `apt update`.
  2. 2. Docker deposunu ekleyin ve paketleri yükleyin: `apt install nginx certbot docker-ce pwgen`.
UFW Yapılandırması
  1. 1. Tüm gelen bağlantıları engelleyin: `ufw default deny incoming`.
  2. 2. Tüm giden bağlantılara izin verin: `ufw default allow outgoing`.
  3. 3. 22, 80 ve 443 numaralı portlarda gelen TCP bağlantılarına izin verin: `ufw allow 22,80,443/tcp`.
SSH Yapılandırması
  1. 1. SSH daemon yapılandırmasını düzenleyin: `nano /etc/ssh/sshd_config`.
  2. 2. `PasswordAuthentication no` ayarını yapın.
  3. 3. SSH daemon'u yeniden başlatın: `systemctl restart ssh`.
Nginx Yapılandırması
  1. 1. Varsayılan yapılandırma dosyasını kaldırın: `rm /etc/nginx/sites-available/default`
  2. 2. Yeni bir yapılandırma dosyası oluşturun: `nano /etc/nginx/sites-available/my_app`.
  3. 3. OneEntry'den Nginx yapılandırmasını indirin ve "your_domain.com" kısmını kendi alan adınızla değiştirin.
  4. 4. Ardından şu komutu çalıştırın: ‘ln -s /etc/nginx/sites-available/my_app /etc/nginx/sites-enabled', "my_app" kısmını yapılandırma dosyanızın adıyla değiştirin.
  5. 5. Certbot kullanarak SSL sertifikalarını verin: `certbot certonly --webroot -w /var/www/html -d your_domain`
  6. 6. Otomatik sertifika yenilemesini kontrol edin: `certbot renew --dry-run`.
  7. 7. Sertifikalar verildikten sonra Nginx yapılandırmasını otomatik olarak yeniden yüklemek için Certbot cron görevini düzenleyin: ‘nano /etc/cron.d/certbot', son satırı şu şekilde değiştirin: `echo "0 */12 * * * root certbot -q renew && nginx -s reload" > /etc/cron.d/certbot`
  8. 8. 'nano /etc/nginx/sites-available/my_app' yapılandırma dosyasındaki satırları yorumdan çıkarın (burada 'my_app' yapılandırma dosyanızın adıdır).
  9. 9. Nginx yapılandırmasını kontrol edin: `nginx -t`
  10. 10. Her değişiklikten sonra Nginx'i yeniden yükleyin: `nginx -s reload`.

Part 3: Uygulamayı GitLab ve GitHub ile Dağıtma

GitHub
GitHub Runner için yeni bir kullanıcı oluşturma
  1. 1. Bir şifre oluşturun: 'pwgen -s 15 1'
  2. 2. Yeni bir kullanıcı oluşturun: 'useradd -m github-runner'
  3. 3. Bunun için bir şifre ayarlayın: 'passwd github-runner'
  4. 4. Yeni kullanıcıyı gruplara ekleyin: 'usermod -aG docker github-runner' ve 'usermod -aG sudo github-runner'.
  5. 5. GitHub Runner kullanıcısının shell'ini değiştirin: 'chsh -s /bin/bash github-runner'
  6. 6. Yeni kullanıcıya geçin: 'sudo su - gitlab-runner'.
GitHub Runner'ı yapılandırma
  1. 1. Bir GitHub Runner oluşturun: depo ayarlarınıza gidin, 'Actions' sekmesine tıklayın ve 'Runners' seçeneğini seçin, ardından 'Yeni kendi barındırdığınız runner' seçeneğine tıklayın.
  2. 2. 'İndir' bloğundaki talimatları ve 'Yapılandır' bloğundaki ilk komutu izleyin.
  3. 3. Runner'ı sistem otomatik başlatmasına ekleyin: 'sudo ./svc.sh install'. Önceden oluşturduğunuz şifreyi girmeniz gerekecek.
  4. 4. Runner'ı başlatın: 'sudo ./svc.sh start'.
  5. 5. 'Actions' bölümüne gidin, 'Runners' seçeneğine tıklayın ve 'Runner'ın çalıştığından emin olun.
  6. 6. 'root' kullanıcısına geri dönün.
  7. 7. Çalışma dizini oluşturun: 'mkdir -p /var/apps/frontend'
  8. 8. 'github-runner' kullanıcısı için izinleri ayarlayın: 'chown -R github-runner:docker /var/apps/frontend'.
GitHub'da ortam değişkenlerini yapılandırma
  1. 1. GitHub deponuzda `DOMAIN`, `MTLS_USER_CERT`, ve `MTLS_USER_KEY` değişkenlerini oluşturun ('Ayarlar' -> 'Gizli Anahtarlar ve Değişkenler').
  2. 2. OneEntry'de bir sertifika oluşturun, sertifika ve anahtarı değişkenlere ekleyin. `DOMAIN` değişkeninde, projenizin adresini https olmadan belirtin.
  3. 3. docker-compose.yml dosyasını ve iki arşivi .github ve .docker indirin.
  4. 4. docker-compose.yml, .github.zip ve .docker.zip dosyalarını projenizin kök klasörüne koyun ve arşivleri çıkarın (çıkarma işleminden sonra arşivleri silebilirsiniz).
  5. 5. Projenizde push komutunu çalıştırın.
  6. 6. 'Actions' sekmesinde süreci kontrol edin.
  7. 7. Uygulamanın tarayıcıda erişilebilirliğini kontrol edin.
GitLab
GitLab Runner'ı kaydetme
  1. 1. 'docker, frontend' etiketlerini belirtin.
  2. 2. 'Ayarlar -> CI/CD -> Runners' bölümüne gidin ve 'Yeni proje runner' butonuna tıklayın.
  3. 3. Oluşturulan dizine gidin: `cd /var/apps/gitlab-runner`.
  4. 4. Kayıt sürecini başlatmak için komutu çalıştırın: `docker compose run runner register`.
  5. 5. GitLab URL'sini girin, örneğin, https://gitlab.com/.
  6. 6. GitLab'dan kayıt token'ını alın (projenin 'Runners' bölümünde) ve terminale yapıştırın.
  7. 7. Yürütücüyü 'docker' olarak belirtin.
  8. 8. Varsayılan görüntüyü docker:20.10.16 olarak belirtin.
GitLab'da ortam değişkenlerini ayarlama
  1. 1. GitLab deponuzda `DOMAIN`, `MTLS_USER_CERT`, ve `MTLS_USER_KEY` değişkenlerini oluşturun ('Ayarlar' -> 'CI/CD' -> 'Değişkenler').
  2. 2. OneEntry'de bir sertifika oluşturun, sertifika ve anahtarı değişkenlere ekleyin ve `DOMAIN` değişkeninde projenizin adresini https olmadan belirtin.
  3. 3. docker-compose.yml, .gitlab-ci.yml dosyalarını ve .docker arşivini indirin, dosyaları projenizin köküne yerleştirin ve arşivleri çıkarın (çıkarma işleminden sonra arşivleri silebilirsiniz).
GitLab Runner (Docker yürütücüsü) yapılandırmasını hazırlama
  1. 1. Gerekli dizinleri oluşturun: `mkdir -p /var/apps/gitlab-runner/volumes/etc/gitlab-runner`
  2. 2. Komutu çalıştırın: `cat \ /var/apps/gitlab-runner/docker-compose.yamlversion: '3' services: runner: image: 'gitlab/gitlab-runner:v16.2.0' restart: always container_name: 'gitlab-runner' privileged: true volumes: - './volumes/etc/gitlab-runner:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock' EOT`
GitLab Runner Yapılandırması
  1. 1. Yapılandırma dosyasını düzenleyin: `nano volumes/etc/gitlab-runner/config.toml`.
  2. 2. Docker-in-Docker'ı etkinleştirmek için `priviledged` parametresini `true` olarak ayarlayın.
  3. 3. Docker'ın doğru çalışması için `volumes` değerini `['/var/run/docker.sock:/var/run/docker.sock', '/cache']` olarak değiştirin.
  4. 4. Runner'ı o kullanıcı olarak çalıştırmak için dosyanın başına `user = 'gitlab-runner'` ekleyin.
  5. 5. Değişiklikleri kaydedin ve editörden çıkın.
  6. 6. Runner'ı yeniden başlatın: 'systemctl restart gitlab-runner'.
GitLab Runner'ı etkinleştirme ve doğrulama
  1. 1. Runner'ı başlatmak için `docker compose up -d` komutunu çalıştırın.
  2. 2. GitLab'a gidin ve Runner'ın aktif ve çalıştığını kontrol edin (projenin 'Runners' bölümünde durumunu görmelisiniz).
Ana makinede ek bir Runner ayarlama (shell yürütücüsü)
  1. 1. Talimatları izleyerek doğrudan ana makinede (Docker'da değil) çalışan ek bir Runner kurun.
  2. 2. Runner için etiketleri ayarlayın: 'shell, frontend'.
Runner İzinleri
  1. 1. Yeni bir kullanıcıyı gruba ekleyin: 'usermod -aG docker gitlab-runner'
  2. 2. Bir dosya veya dizinin sahibi ve gruplarını değiştirmek gerekiyorsa: 'chown -R gitlab-runner:docker /var/apps/frontend'

Son Yapılandırma ve Test

  1. 1. Tüm Runner'ların doğru yapılandırıldığından ve kullanıma hazır olduğundan emin olun.
  2. 2. Projenizde push komutunu çalıştırın.
  3. 3. 'Build' -> 'Pipelines' bölümünde ilerlemeyi kontrol edin.
  4. 4. Uygulamanın tarayıcıda erişilebilirliğini kontrol edin.

Sonuç

OneEntry ile uygulamanızın başarılı bir şekilde kurulumu ve dağıtımı için bu adımları izleyin. Geliştirmede başarılar!