All checks were successful
Build and Push App Image / build-and-push (push) Successful in 1m20s
149 lines
3.3 KiB
Markdown
149 lines
3.3 KiB
Markdown
# Environment Setup
|
|
|
|
Notely uses three different environment-file locations depending on how you run the app.
|
|
|
|
## 1. Root `.env`
|
|
|
|
Use the root `.env` file when running `docker compose` from the repository root.
|
|
|
|
Start from:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
### Variables Used By Docker Compose
|
|
|
|
Required or commonly used:
|
|
|
|
- `MONGODB_URI`
|
|
- `BACKEND_PORT`
|
|
- `JWT_SECRET`
|
|
- `ENCRYPTION_KEY`
|
|
- `FRONTEND_URL`
|
|
- `DEFAULT_ADMIN_EMAIL`
|
|
- `DEFAULT_ADMIN_USERNAME`
|
|
- `DEFAULT_ADMIN_PASSWORD`
|
|
- `NGINX_HTTP_PORT`
|
|
- `NGINX_HTTPS_PORT`
|
|
|
|
Optional backend runtime values that Docker Compose will also pass through if present:
|
|
|
|
- `REDIS_ADDR`
|
|
- `REDIS_USER`
|
|
- `REDIS_PASSWORD`
|
|
- `REDIS_DB`
|
|
- `SESSION_TTL_HOURS`
|
|
|
|
### Current Defaults In The Checked-In Example
|
|
|
|
- MongoDB container: `mongodb://admin:password@mongodb:27017/noteapp?authSource=admin`
|
|
- Backend port: `8080`
|
|
- Public frontend URL: `http://localhost`
|
|
|
|
## 2. `backend/.env`
|
|
|
|
Use `backend/.env` for local backend development.
|
|
|
|
Start from:
|
|
|
|
```bash
|
|
cd backend
|
|
cp .env.example .env
|
|
```
|
|
|
|
### Variables Currently Read By The Backend Runtime
|
|
|
|
Read in `backend/cmd/server/main.go` or other active handlers:
|
|
|
|
- `MONGODB_URI`
|
|
- `JWT_SECRET`
|
|
- `ENCRYPTION_KEY`
|
|
- `PORT`
|
|
- `REDIS_ADDR`
|
|
- `REDIS_USER`
|
|
- `REDIS_PASSWORD`
|
|
- `REDIS_DB`
|
|
- `SESSION_TTL_HOURS`
|
|
- `DEFAULT_ADMIN_EMAIL`
|
|
- `DEFAULT_ADMIN_USERNAME`
|
|
- `DEFAULT_ADMIN_PASSWORD`
|
|
- `FRONTEND_URL`
|
|
|
|
### Variables Present In `backend/.env.example` But Not Currently Consumed By Runtime Code
|
|
|
|
These values exist in the example file, but the current code path does not read them yet:
|
|
|
|
- `JWT_ISSUER`
|
|
- `ENV`
|
|
- `LOG_LEVEL`
|
|
- `CORS_ALLOWED_ORIGINS`
|
|
- `RATE_LIMIT_REQUESTS`
|
|
- `RATE_LIMIT_WINDOW`
|
|
|
|
### Backend Defaults If A Variable Is Missing
|
|
|
|
- `MONGODB_URI`: `mongodb://localhost:27017`
|
|
- `JWT_SECRET`: `your-secret-key-change-in-production`
|
|
- `ENCRYPTION_KEY`: `00000000000000000000000000000000`
|
|
- `PORT`: `8080`
|
|
- `REDIS_ADDR`: `localhost:6379`
|
|
- `REDIS_DB`: `0`
|
|
- `SESSION_TTL_HOURS`: `168`
|
|
- `FRONTEND_URL`: falls back to `http://localhost:5173` for login redirects
|
|
|
|
## 3. `frontend/.env`
|
|
|
|
Use `frontend/.env` for local frontend development.
|
|
|
|
Start from:
|
|
|
|
```bash
|
|
cd frontend
|
|
cp .env.example .env
|
|
```
|
|
|
|
### Frontend Variables In `frontend/.env.example`
|
|
|
|
- `VITE_ENV`
|
|
- `VITE_ENABLE_ANALYTICS`
|
|
|
|
### Variables Currently Relevant To The Frontend App
|
|
|
|
- API requests are sent to the current browser origin (same-origin runtime behavior)
|
|
|
|
The other example values are safe to keep, but the current checked-in frontend code does not actively consume them.
|
|
|
|
## Secret Generation
|
|
|
|
Examples:
|
|
|
|
```bash
|
|
openssl rand -base64 32
|
|
openssl rand -hex 16
|
|
openssl rand -hex 32
|
|
```
|
|
|
|
Use generated values for:
|
|
|
|
- `JWT_SECRET`
|
|
- `ENCRYPTION_KEY`
|
|
- provider secrets or other sensitive credentials stored through admin settings
|
|
|
|
## Compose Vs Local Development
|
|
|
|
Use the right env file for the right mode:
|
|
|
|
- root `.env`: Docker Compose
|
|
- `backend/.env`: local backend
|
|
- `frontend/.env`: local frontend
|
|
|
|
Do not assume values from one location are automatically shared with the others.
|
|
|
|
## Important Notes
|
|
|
|
- Do not commit real secrets
|
|
- Keep `ENCRYPTION_KEY` at 32 characters for the current AES-256 usage
|
|
- If OAuth login is enabled, set `FRONTEND_URL` correctly so callback redirects go to the intended UI
|
|
- If Redis settings are omitted, the backend assumes a local Redis instance at `localhost:6379`
|