first commit
This commit is contained in:
151
belgeler/ortam-degiskenleri.md
Normal file
151
belgeler/ortam-degiskenleri.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# Ortam Değişkenleri
|
||||
|
||||
Proje kök dizinindeki `.env` dosyasından veya sistem ortam değişkenlerinden okunur.
|
||||
`.env` yoksa sistem değişkenleri kullanılır (ör. Docker, CI ortamları).
|
||||
|
||||
---
|
||||
|
||||
## Veritabanı
|
||||
|
||||
| Değişken | Varsayılan | Açıklama |
|
||||
|---|---|---|
|
||||
| `DB_HOST` | `localhost` | MySQL sunucu adresi |
|
||||
| `DB_PORT` | `3306` | MySQL port |
|
||||
| `DB_USER` | `root` | Veritabanı kullanıcı adı |
|
||||
| `DB_PASSWORD` | _(boş)_ | Veritabanı şifresi |
|
||||
| `DB_NAME` | `goaresv3` | Veritabanı adı |
|
||||
|
||||
---
|
||||
|
||||
## JWT
|
||||
|
||||
| Değişken | Açıklama |
|
||||
|---|---|
|
||||
| `JWT_SECRET` | Access token imzalama anahtarı (min 32 karakter önerilir) |
|
||||
| `JWT_REFRESH_SECRET` | Refresh token imzalama anahtarı (min 32 karakter önerilir) |
|
||||
|
||||
> **Uyarı:** Her iki secret production ortamda farklı, uzun ve rastgele olmalıdır.
|
||||
> Örnek üretim komutu:
|
||||
> ```bash
|
||||
> openssl rand -hex 32
|
||||
> ```
|
||||
|
||||
---
|
||||
|
||||
## Uygulama
|
||||
|
||||
| Değişken | Varsayılan | Açıklama |
|
||||
|---|---|---|
|
||||
| `PORT` | `8080` | HTTP sunucu portu |
|
||||
| `APP_BASE_URL` | `http://localhost:8080` | Email doğrulama linki oluşturmak için temel adres |
|
||||
|
||||
---
|
||||
|
||||
## Google OAuth
|
||||
|
||||
| Değişken | Varsayılan | Açıklama |
|
||||
|---|---|---|
|
||||
| `SOCIAL_AUTH_GOOGLE_OAUTH2_KEY` | - | Google OAuth istemci ID |
|
||||
| `SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET` | - | Google OAuth istemci secret |
|
||||
| `SOCIAL_AUTH_GOOGLE_REDIRECT_URL` | - | Google callback URL (ör: `http://localhost:8080/api/v1/auth/google/callback`) |
|
||||
| `SOCIAL_AUTH_GOOGLE_SCOPES` | `openid,email,profile` | İsteğe bağlı scope listesi (virgülle ayrılmış) |
|
||||
|
||||
---
|
||||
|
||||
## GitHub OAuth
|
||||
|
||||
| Değişken | Varsayılan | Açıklama |
|
||||
|---|---|---|
|
||||
| `SOCIAL_AUTH_GITHUB_KEY` | - | GitHub OAuth istemci ID |
|
||||
| `SOCIAL_AUTH_GITHUB_SECRET` | - | GitHub OAuth istemci secret |
|
||||
| `SOCIAL_AUTH_GITHUB_REDIRECT_URL` | - | GitHub callback URL (ör: `http://localhost:8080/api/v1/auth/github/callback`) |
|
||||
| `SOCIAL_AUTH_GITHUB_SCOPES` | `read:user,user:email` | İsteğe bağlı scope listesi (virgülle ayrılmış) |
|
||||
|
||||
---
|
||||
|
||||
## CORS Bootstrap
|
||||
|
||||
> Bu değerler sadece **ilk açılış seed** için kullanılır.
|
||||
> DB'de kayıt varsa üzerine yazılmaz.
|
||||
|
||||
| Değişken | Varsayılan | Açıklama |
|
||||
|---|---|---|
|
||||
| `CORS_BOOTSTRAP_WHITELIST_ORIGINS` | _(boş)_ | Virgülle ayrılmış origin listesi (ör: `http://localhost:3000,https://admin.ornek.com`) |
|
||||
| `CORS_BOOTSTRAP_BLACKLIST_ORIGINS` | _(boş)_ | Virgülle ayrılmış engelli origin listesi |
|
||||
|
||||
---
|
||||
|
||||
## Rate Limit Bootstrap
|
||||
|
||||
> Bu değerler sadece **ilk açılış seed** için kullanılır.
|
||||
> `rate_limit_settings` tablosunda aynı `name` varsa değiştirilmez.
|
||||
|
||||
| Değişken | Varsayılan | Açıklama |
|
||||
|---|---|---|
|
||||
| `RL_BOOTSTRAP_LOGIN_MAX_REQUESTS` | `10` | `api/v1/auth/login` için maksimum istek |
|
||||
| `RL_BOOTSTRAP_LOGIN_WINDOW_SECONDS` | `60` | Login penceresi (sn) |
|
||||
| `RL_BOOTSTRAP_REGISTER_MAX_REQUESTS` | `5` | `api/v1/auth/register` için maksimum istek |
|
||||
| `RL_BOOTSTRAP_REGISTER_WINDOW_SECONDS` | `60` | Register penceresi (sn) |
|
||||
| `RL_BOOTSTRAP_API_MAX_REQUESTS` | `120` | Diğer endpointler için fallback `api` limiti |
|
||||
| `RL_BOOTSTRAP_API_WINDOW_SECONDS` | `60` | Genel fallback pencere (sn) |
|
||||
|
||||
---
|
||||
|
||||
## Email
|
||||
|
||||
| Değişken | Varsayılan | Açıklama |
|
||||
|---|---|---|
|
||||
| `EMAIL_HOST` | - | SMTP sunucu adresi |
|
||||
| `EMAIL_PORT` | - | SMTP port |
|
||||
| `EMAIL_HOST_USER` | _(boş olabilir)_ | SMTP kullanıcı adı |
|
||||
| `EMAIL_HOST_PASSWORD` | _(boş olabilir)_ | SMTP şifresi |
|
||||
| `EMAIL_USE_TLS` | `false` | STARTTLS kullanılsın mı |
|
||||
| `EMAIL_USE_SSL` | `false` | SMTPS (SSL/TLS) doğrudan bağlantı kullanılsın mı |
|
||||
| `EMAIL_FROM` | - | Gönderici email adresi |
|
||||
|
||||
---
|
||||
|
||||
## Örnek `.env`
|
||||
|
||||
```dotenv
|
||||
DB_HOST=localhost
|
||||
DB_PORT=3307
|
||||
DB_USER=root
|
||||
DB_PASSWORD=sifrem
|
||||
DB_NAME=goaresv3
|
||||
|
||||
JWT_SECRET=uretilen-guclu-secret-1
|
||||
JWT_REFRESH_SECRET=uretilen-guclu-secret-2
|
||||
|
||||
PORT=8080
|
||||
APP_BASE_URL=http://localhost:8080
|
||||
|
||||
EMAIL_HOST=10.80.80.70
|
||||
EMAIL_PORT=1025
|
||||
EMAIL_HOST_USER=
|
||||
EMAIL_HOST_PASSWORD=
|
||||
EMAIL_USE_TLS=false
|
||||
EMAIL_USE_SSL=false
|
||||
EMAIL_FROM=noreply@gauth.local
|
||||
|
||||
CORS_BOOTSTRAP_WHITELIST_ORIGINS=http://localhost:3000,http://localhost:5173
|
||||
CORS_BOOTSTRAP_BLACKLIST_ORIGINS=
|
||||
|
||||
RL_BOOTSTRAP_LOGIN_MAX_REQUESTS=10
|
||||
RL_BOOTSTRAP_LOGIN_WINDOW_SECONDS=60
|
||||
RL_BOOTSTRAP_REGISTER_MAX_REQUESTS=5
|
||||
RL_BOOTSTRAP_REGISTER_WINDOW_SECONDS=60
|
||||
RL_BOOTSTRAP_API_MAX_REQUESTS=120
|
||||
RL_BOOTSTRAP_API_WINDOW_SECONDS=60
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Güvenlik
|
||||
|
||||
- `.env` dosyasını **asla** Git'e commit etmeyin.
|
||||
- `.gitignore` dosyanıza ekleyin:
|
||||
```
|
||||
.env
|
||||
```
|
||||
- Staging/production ortamlarda değişkenleri CI/CD secret yöneticisi (GitHub Secrets, Vault) ile iletin.
|
||||
Reference in New Issue
Block a user