152 lines
4.5 KiB
Markdown
152 lines
4.5 KiB
Markdown
# 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.
|