Skip to content

Commit d97c15b

Browse files
authored
Merge pull request #2 from kalayciburak/feature/2fa-authentication
Feature/2fa authentication
2 parents 337ce4d + 271ebc1 commit d97c15b

19 files changed

Lines changed: 1378 additions & 341 deletions

File tree

README-TR.md

Lines changed: 169 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ docker run -d -p 5000:5000 \
2222
--name coolify-dashboard \
2323
-e "ADMIN_USERNAME=admin" \
2424
-e "ADMIN_PASSWORD=guvenli_sifreniz" \
25+
-e "ADMIN_2FA_SECRET=2fa_secret_anahtariniz" \
2526
-e "JWT_SECRET=jwt_secret_anahtariniz" \
2627
-e "ALLOWED_ORIGINS=https://dashboard.kalayciburak.com.tr" \
2728
-e "COOLIFY_BASE_URL=https://coolify.kalayciburak.com.tr" \
@@ -58,13 +59,29 @@ Aşağıdaki zorunlu ortam değişkenlerini ayarlayın:
5859
```env
5960
ADMIN_USERNAME=admin
6061
ADMIN_PASSWORD=guvenli_sifreniz
62+
ADMIN_2FA_SECRET=2fa_secret_anahtariniz
6163
JWT_SECRET=jwt_secret_anahtariniz
6264
ALLOWED_ORIGINS=https://dashboard.kalayciburak.com.tr
6365
COOLIFY_BASE_URL=https://coolify.kalayciburak.com.tr
6466
COOLIFY_TOKEN=coolify_api_token_iniz
6567
```
6668

67-
### Adım 4: Coolify API Token Oluşturun
69+
### Adım 4: 2FA Secret Oluşturun
70+
71+
Kimlik doğrulama için güvenli bir 2FA secret oluşturun:
72+
73+
```bash
74+
# Yerel olarak çalıştırıyorsanız
75+
cd server
76+
npm run generate-2fa
77+
78+
# Docker kullanıyorsanız, manuel olarak oluşturun:
79+
node -e "console.log(require('speakeasy').generateSecret({length: 32}).base32)"
80+
```
81+
82+
Oluşturulan secret'ı kopyalayıp ortam değişkenlerinde `ADMIN_2FA_SECRET` olarak kullanın.
83+
84+
### Adım 5: Coolify API Token Oluşturun
6885

6986
**Önemli**: Dağıtıma başlamadan önce, uygun izinlere sahip Coolify API token'ı oluşturun:
7087

@@ -78,7 +95,147 @@ COOLIFY_TOKEN=coolify_api_token_iniz
7895

7996
**Not**: `read:sensitive` izni, ortam değişkenleri ve hassas yapılandırma verileri dahil olmak üzere detaylı kaynak bilgilerine erişim için gereklidir.
8097

81-
### Adım 5: Dağıtım
98+
### Adım 6: 2FA Kurulumu (Tek Seferlik)
99+
100+
Dağıtımdan sonra, İki Faktörlü Doğrulamayı kurun. **Bu işlem sadece bir kez yapılabilir!**
101+
102+
1. Kurulum yapılıp yapılmadığını kontrol edin:
103+
```bash
104+
curl https://dashboard.kalayciburak.com.tr/api/auth/2fa/status
105+
# Yanıt: {"setupCompleted": false, "canSetup": true}
106+
```
107+
108+
2. Admin bilgilerinizle `/api/auth/2fa/setup` endpoint'ine POST isteği gönderin:
109+
```bash
110+
curl -X POST https://dashboard.kalayciburak.com.tr/api/auth/2fa/setup \
111+
-H "Content-Type: application/json" \
112+
-d '{"username":"admin","password":"sifreniz"}'
113+
```
114+
115+
2. Yanıttaki `qrCode` alanında QR kod bulunur. Görüntülemek için:
116+
- `qrCode` değerinin tamamını kopyalayın (`data:image/png;base64,...` ile başlar)
117+
- Tarayıcınızın URL çubuğuna yapıştırın
118+
- Enter'a basarak QR kod görselini görüntüleyin
119+
120+
3. Görüntülenen QR kodu bir kimlik doğrulama uygulamasıyla tarayın:
121+
- **Google Authenticator** (iOS/Android)
122+
- **Microsoft Authenticator** (iOS/Android) - Logo gösterir
123+
- **Authy** (iOS/Android/Desktop) - Logo gösterir
124+
- **1Password** (Premium özellik)
125+
126+
4. Secret'ı yedek olarak güvenli bir yerde saklayın
127+
128+
### 2FA Sıfırlama/Yenileme
129+
130+
2FA kurulumunuzu sıfırlamanız veya yenilemeniz gerekiyorsa (ör. kimlik doğrulama uygulaması erişimini kaybetme, güvenliği ihlal edilmiş secret, veya farklı bir cihaz kullanmak isteme), aşağıdaki adımları izleyin:
131+
132+
#### Neden Manuel Sıfırlama?
133+
134+
Dashboard, güvenlik nedenleriyle 2FA sıfırlama için bir kullanıcı arayüzü **sağlamaz**. Bu, yetkisiz kullanıcıların dashboard'a erişim sağlasalar bile 2FA kodlarını yeniden oluşturmalarını engeller. Sıfırlama işlemi sunucu düzeyinde erişim gerektirir ve bu maksimum güvenlik sağlar.
135+
136+
#### Sıfırlama Süreci
137+
138+
**1. Uygulamayı Durdurun**
139+
140+
Öncelikle, çalışan uygulamanızı durdurun:
141+
142+
```bash
143+
# Yerel olarak çalıştırıyorsanız
144+
npm stop
145+
146+
# Docker kullanıyorsanız
147+
docker stop coolify-dashboard
148+
149+
# Coolify üzerinde ise
150+
# Uygulamayı durdurmak için Coolify UI'ı kullanın
151+
```
152+
153+
**2. 2FA State Dosyasını Silin**
154+
155+
Bu dosya, 2FA kurulumunun tamamlanıp tamamlanmadığını takip eder:
156+
157+
```bash
158+
# Server dizinine gidin
159+
cd server
160+
161+
# State dosyasını silin
162+
rm .2fa-state.json
163+
164+
# Docker/Coolify kullanıyorsanız, container'a erişin:
165+
docker exec -it coolify-dashboard rm /app/server/.2fa-state.json
166+
```
167+
168+
**3. Yeni Bir 2FA Secret Oluşturun**
169+
170+
Yeni bir secret anahtarı oluşturun:
171+
172+
```bash
173+
# Yerel olarak çalıştırıyorsanız
174+
cd server
175+
npm run generate-2fa
176+
177+
# Docker kullanıyorsanız, manuel olarak oluşturun:
178+
node -e "console.log(require('speakeasy').generateSecret({length: 32}).base32)"
179+
```
180+
181+
Oluşturulan secret'ı kopyalayın (şuna benzer görünür: `JBSWY3DPEHPK3PXP`)
182+
183+
**4. Ortam Değişkenlerini Güncelleyin**
184+
185+
`.env` dosyanızı veya ortam yapılandırmanızı güncelleyin:
186+
187+
```env
188+
ADMIN_2FA_SECRET=YENİ_SECRET_BURAYA
189+
```
190+
191+
**Coolify'da:**
192+
1. Uygulama ayarlarınıza gidin
193+
2. **Environment Variables** (Ortam Değişkenleri) bölümüne tıklayın
194+
3. `ADMIN_2FA_SECRET` değerini yeni değerle güncelleyin
195+
4. Değişiklikleri kaydedin
196+
197+
**5. Uygulamayı Yeniden Başlatın**
198+
199+
```bash
200+
# Yerel olarak çalıştırıyorsanız
201+
npm run dev
202+
203+
# Docker kullanıyorsanız
204+
docker restart coolify-dashboard
205+
206+
# Coolify üzerinde ise
207+
# Uygulamayı yeniden başlatmak/deploy etmek için Coolify UI'ı kullanın
208+
```
209+
210+
**6. 2FA'yı Tekrar Kurun**
211+
212+
Yeniden başlatmadan sonra, yeni 2FA kurulumunu tamamlamak için [Adım 6](#adım-6-2fa-kurulumu-tek-seferlik)'yı takip edin:
213+
214+
```bash
215+
curl -X POST https://dashboard.kalayciburak.com.tr/api/auth/2fa/setup \
216+
-H "Content-Type: application/json" \
217+
-d '{"username":"admin","password":"sifreniz"}'
218+
```
219+
220+
Yeni QR kodunu kimlik doğrulama uygulamanızla tarayın.
221+
222+
**7. Eski Girdiyi Kimlik Doğrulama Uygulamasından Kaldırın**
223+
224+
**Önemli**: Kimlik doğrulama uygulamanızdan eski "Coolify Dashboard" girişini silmeyi unutmayın, çünkü yeni secret ile artık çalışmayacaktır.
225+
226+
#### Hızlı Referans
227+
228+
| Adım | İşlem | Komut/Konum |
229+
|------|-------|-------------|
230+
| 1 | Uygulamayı Durdur | `docker stop coolify-dashboard` veya Coolify UI |
231+
| 2 | State Dosyasını Sil | `rm server/.2fa-state.json` |
232+
| 3 | Yeni Secret Oluştur | `npm run generate-2fa` veya `node -e "..."` |
233+
| 4 | Ortam Değişkenini Güncelle | `.env` dosyasını düzenle veya Coolify Ortam Değişkenleri |
234+
| 5 | Uygulamayı Yeniden Başlat | `docker restart` veya Coolify Deploy |
235+
| 6 | 2FA'yı Kur | `/api/auth/2fa/setup` endpoint'ine POST |
236+
| 7 | Kimlik Doğrulama Uygulamasını Güncelle | Eski girdiyi kaldır, yeni QR'ı tara |
237+
238+
### Adım 7: Dağıtım
82239

83240
- Yapılandırmayı kaydedin
84241
- Uygulamayı başlatmak için **"Deploy"** butonuna tıklayın
@@ -116,14 +273,15 @@ COOLIFY_TOKEN=coolify_api_token_iniz
116273

117274
## Ortam Değişkenleri
118275

119-
| Değişken | Açıklama | Örnek | Gerekli |
120-
| ------------------ | --------------------------------------------------------- | --------------------------------------- | ------- |
121-
| `ADMIN_USERNAME` | Dashboard yönetici kullanıcı adı | `admin` | Evet |
122-
| `ADMIN_PASSWORD` | Dashboard yönetici şifresi | `guvenli_sifre` | Evet |
123-
| `JWT_SECRET` | JWT token üretimi için gizli anahtar | `rastgele_gizli_anahtar` | Evet |
124-
| `ALLOWED_ORIGINS` | CORS izin verilen kaynaklar (virgülle ayrılmış) | `https://dashboard.kalayciburak.com.tr` | Evet |
125-
| `COOLIFY_BASE_URL` | Coolify instance temel URL'i | `https://coolify.kalayciburak.com.tr` | Evet |
126-
| `COOLIFY_TOKEN` | read + read:sensitive yetkisine sahip Coolify API token'ı | `api_token_iniz` | Evet |
276+
| Değişken | Açıklama | Örnek | Gerekli |
277+
| ------------------ | --------------------------------------------------------- | ---------------------------------------- | ------- |
278+
| `ADMIN_USERNAME` | Dashboard yönetici kullanıcı adı | `admin` | Evet |
279+
| `ADMIN_PASSWORD` | Dashboard yönetici şifresi | `guvenli_sifre` | Evet |
280+
| `ADMIN_2FA_SECRET` | İki Faktörlü Doğrulama secret (Base32 encoded) | `npm run generate-2fa` ile oluşturulur | Evet |
281+
| `JWT_SECRET` | JWT token üretimi için gizli anahtar | `rastgele_gizli_anahtar` | Evet |
282+
| `ALLOWED_ORIGINS` | CORS izin verilen kaynaklar (virgülle ayrılmış) | `https://dashboard.kalayciburak.com.tr` | Evet |
283+
| `COOLIFY_BASE_URL` | Coolify instance temel URL'i | `https://coolify.kalayciburak.com.tr` | Evet |
284+
| `COOLIFY_TOKEN` | read + read:sensitive yetkisine sahip Coolify API token'ı | `api_token_iniz` | Evet |
127285

128286
---
129287

@@ -135,6 +293,7 @@ Coolify kullanırken, her bir uygulama ve servisin URL'lerini ve temel bilgileri
135293

136294
## Özellikler
137295

296+
- **İki Faktörlü Doğrulama (2FA)**: TOTP tabanlı güvenli kimlik doğrulama
138297
- **Çok Dilli Destek**: İngilizce ve Türkçe arasında sorunsuz geçiş
139298
- **Responsive Tasarım**: Masaüstü ve mobil cihazlar için optimize edilmiş modern arayüz
140299
- **Gerçek Zamanlı İzleme**: Kaynak durumu ve sağlığını gerçek zamanlı takip

0 commit comments

Comments
 (0)