mtls
Platform OneEntry için mTLS sertifikası ayarlama ve yapılandırma, token'lar ve mTLS kullanarak, ayrıca uygulamayı Nginx, Docker ve GitLab ile bir sunucuya dağıtma
Bölüm 1: mTLS Ayarlama
API'yi Koruma
- 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.
- mTLS Kullanarak: OneEntry kontrol panelinizde mTLS seçeneğini etkinleştirin ve OneEntry ayarlarında sertifikayı oluşturun.
Sertifikayı Ayarlama
- Kontrol panelinizde 'Erişim' sekmesine gidin ve token'dan mTLS'ye geçin.
- OneEntry'de yeni bir sertifika oluşturun ('Ayarlar' -> 'Uygulama Sertifikaları' -> 'Yeni Sertifika Oluştur').
- Sertifikayı bilgisayarınıza indirin ve projenizin kökündeki 'cert' klasörüne çıkarın.
Yerel Ortamı Ayarlama (ReactJS örneği kullanarak)
- setupProxy.js dosyasını indirin ve 'src' klasörüne kaydedin.
- 'target' parametresini düzenleyin, projenizin adresini belirtin.
- 'http-proxy-middleware' paketini yükleyin: 'npm install http-proxy-middleware'.
- Uygulamayı başlatın.
Bölüm 2: Sunucu Yapılandırması
Sunucuyu Hazırlama
- Depo bilgilerini güncelleyin: `apt update`.
- Docker deposunu ekleyin ve paketleri yükleyin: `apt install nginx certbot docker-ce pwgen`.
UFW Yapılandırması
- Tüm gelen bağlantıları engelleyin: `ufw default deny incoming`.
- Tüm giden bağlantılara izin verin: `ufw default allow outgoing`.
- 22, 80 ve 443 numaralı portlarda gelen TCP bağlantılarına izin verin: `ufw allow 22,80,443/tcp`.
SSH Yapılandırması
- SSH daemon yapılandırmasını düzenleyin: `nano /etc/ssh/sshd_config`.
- `PasswordAuthentication no` ayarını yapın.
- SSH daemon'u yeniden başlatın: `systemctl restart ssh`.
Nginx Yapılandırması
- Varsayılan yapılandırma dosyasını kaldırın: `rm /etc/nginx/sites-available/default`
- Yeni bir yapılandırma dosyası oluşturun: `nano /etc/nginx/sites-available/my_app`.
- OneEntry'den Nginx yapılandırmasını indirin ve "your_domain.com" kısmını kendi alan adınızla değiştirin.
- 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.
- Certbot kullanarak SSL sertifikalarını verin: `certbot certonly --webroot -w /var/www/html -d your_domain`
- Otomatik sertifika yenilemesini kontrol edin: `certbot renew --dry-run`.
- 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`
- Yapılandırma dosyasındaki satırları yorumdan çıkarın 'nano /etc/nginx/sites-available/my_app' (burada 'my_app' yapılandırma dosyanızın adıdır).
- Nginx yapılandırmasını kontrol edin: `nginx -t`
- Her değişiklikten sonra Nginx'i yeniden yükleyin: `nginx -s reload`.
Bölüm 3: Uygulamayı GitLab ve GitHub ile Dağıtma
GitHub
GitHub Runner için yeni bir kullanıcı oluşturma
- Bir şifre oluşturun: 'pwgen -s 15 1'
- Yeni bir kullanıcı oluşturun: 'useradd -m github-runner'
- Bunun için bir şifre belirleyin: 'passwd github-runner'
- Yeni kullanıcıyı gruplara ekleyin: 'usermod -aG docker github-runner' ve 'usermod -aG sudo github-runner'.
- GitHub Runner kullanıcısının shell'ini değiştirin: 'chsh -s /bin/bash github-runner'
- Yeni kullanıcıya geçin: 'sudo su - gitlab-runner'.
GitHub Runner'ı Yapılandırma
- Bir GitHub Runner oluşturun: depo ayarlarınıza gidin, 'Actions' sekmesine tıklayın ve 'Runners'ı seçin, ardından 'Yeni kendi barındırdığınız runner' seçeneğine tıklayın.
- 'İndir' bloğundaki talimatları ve 'Yapılandır' bloğundaki ilk komutu izleyin.
- Runner'ı sistem otomatik başlatmasına ekleyin: 'sudo ./svc.sh install'. Önceden oluşturduğunuz şifreyi girmeniz gerekecek.
- Runner'ı başlatın: 'sudo ./svc.sh start'.
- 'Actions' bölümüne gidin, 'Runners'ı tıklayın ve 'Runner'ın çalıştığından emin olun.
- 'root' kullanıcısına geri dönün.
- Çalışma dizini oluşturun: 'mkdir -p /var/apps/frontend'
- '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
- GitHub deponuzda `DOMAIN`, `MTLS_USER_CERT` ve `MTLS_USER_KEY` değişkenlerini oluşturun ('Ayarlar' -> 'Gizli ve Değişkenler').
- OneEntry'de bir sertifika oluşturun, sertifika ve anahtarı değişkenlere ekleyin. `DOMAIN` değişkeninde, projenizin adresini https olmadan belirtin.
- docker-compose.yml dosyasını ve iki arşivi .github ve .docker indirin.
- 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).
- Projenizde push komutunu çalıştırın.
- 'Actions' sekmesinde süreci kontrol edin.
- Uygulamanın tarayıcıda erişilebilirliğini kontrol edin.
GitLab
GitLab Runner'ı kaydetme
- 'docker, frontend' etiketlerini belirtin.
- 'Ayarlar -> CI/CD -> Runners' bölümüne gidin ve 'Yeni proje runner' butonuna tıklayın.
- Oluşturulan dizine gidin: `cd /var/apps/gitlab-runner`.
- Kayıt sürecini başlatmak için komutu çalıştırın: `docker compose run runner register`.
- GitLab URL'sini girin, örneğin, https://gitlab.com/.
- GitLab'dan kayıt token'ını alın (projenin 'Runners' bölümünde) ve terminale yapıştırın.
- Yürütücüyü 'docker' olarak belirtin.
- Varsayılan görüntüyü docker:20.10.16 olarak belirtin.
GitLab'da ortam değişkenlerini ayarlama
- GitLab deponuzda `DOMAIN`, `MTLS_USER_CERT` ve `MTLS_USER_KEY` değişkenlerini oluşturun ('Ayarlar' -> 'CI/CD' -> 'Değişkenler').
- OneEntry'de bir sertifika oluşturun, sertifika ve anahtarı değişkenlere ekleyin ve `DOMAIN` değişkeninde projenizin adresini https olmadan belirtin.
- 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
- Gerekli dizinleri oluşturun: `mkdir -p /var/apps/gitlab-runner/volumes/etc/gitlab-runner`
- 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ı
- Yapılandırma dosyasını düzenleyin: `nano volumes/etc/gitlab-runner/config.toml`.
- Docker-in-Docker'ı etkinleştirmek için `priviledged` parametresini `true` olarak ayarlayın.
- Docker'ın doğru çalışması için `volumes` değerini `['/var/run/docker.sock:/var/run/docker.sock', '/cache']` olarak değiştirin.
- Runner'ı o kullanıcı olarak çalıştırmak için dosyanın başına `user = 'gitlab-runner'` ekleyin.
- Değişiklikleri kaydedin ve editörden çıkın.
- Runner'ı yeniden başlatın: 'systemctl restart gitlab-runner'.
GitLab Runner'ı etkinleştirme ve doğrulama
- Runner'ı başlatmak için `docker compose up -d` komutunu çalıştırın.
- GitLab'a gidin ve Runner'ın aktif ve çalışır durumda olduğunu kontrol edin (projenin 'Runners' bölümünde durumunu görmelisiniz).
Host üzerinde ek bir Runner ayarlama (shell yürütücüsü)
- Host üzerinde doğrudan çalışan ek bir Runner'ı kurmak için Talimatları izleyin (Docker'da değil).
- Runner için etiketleri ayarlayın: 'shell, frontend'.
Runner İzinleri
- Yeni bir kullanıcıyı gruba ekleyin: 'usermod -aG docker gitlab-runner'
- 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
- Tüm Runner'ların doğru yapılandırıldığından ve kullanıma hazır olduğundan emin olun.
- Projenizde push komutunu çalıştırın.
- 'Build' -> 'Pipelines' bölümünde ilerlemeyi kontrol edin.
- Uygulamanın tarayıcıda erişilebilirliğini kontrol edin.
Sonuç
Uygulamanızı OneEntry ile başarılı bir şekilde ayarlamak ve dağıtmak için bu adımları izleyin. Geliştirmede başarılar dilerim!