163 lines
3.9 KiB
Markdown
163 lines
3.9 KiB
Markdown
# Configuration
|
|
|
|
This guide covers the essential configuration steps to get your FastAPI application running quickly.
|
|
|
|
## Quick Setup
|
|
|
|
The fastest way to get started is to copy the example environment file and modify just a few values:
|
|
|
|
```bash
|
|
cp src/.env.example src/.env
|
|
```
|
|
|
|
## Essential Configuration
|
|
|
|
Open `src/.env` and set these required values:
|
|
|
|
### Application Settings
|
|
|
|
```env
|
|
# App Settings
|
|
APP_NAME="Your app name here"
|
|
APP_DESCRIPTION="Your app description here"
|
|
APP_VERSION="0.1"
|
|
CONTACT_NAME="Your name"
|
|
CONTACT_EMAIL="Your email"
|
|
LICENSE_NAME="The license you picked"
|
|
```
|
|
|
|
### Database Connection
|
|
|
|
```env
|
|
# Database
|
|
POSTGRES_USER="your_postgres_user"
|
|
POSTGRES_PASSWORD="your_password"
|
|
POSTGRES_SERVER="localhost" # Use "db" for Docker Compose
|
|
POSTGRES_PORT=5432 # Use 5432 for Docker Compose
|
|
POSTGRES_DB="your_database_name"
|
|
```
|
|
|
|
### PGAdmin (Optional)
|
|
|
|
For database administration:
|
|
|
|
```env
|
|
# PGAdmin
|
|
PGADMIN_DEFAULT_EMAIL="your_email_address"
|
|
PGADMIN_DEFAULT_PASSWORD="your_password"
|
|
PGADMIN_LISTEN_PORT=80
|
|
```
|
|
|
|
**To connect to database in PGAdmin:**
|
|
1. Login with `PGADMIN_DEFAULT_EMAIL` and `PGADMIN_DEFAULT_PASSWORD`
|
|
2. Click "Add Server"
|
|
3. Use these connection settings:
|
|
- **Hostname/address**: `db` (if using containers) or `localhost`
|
|
- **Port**: Value from `POSTGRES_PORT`
|
|
- **Database**: `postgres` (leave as default)
|
|
- **Username**: Value from `POSTGRES_USER`
|
|
- **Password**: Value from `POSTGRES_PASSWORD`
|
|
|
|
### Security
|
|
|
|
Generate a secret key and set it:
|
|
|
|
```bash
|
|
# Generate a secure secret key
|
|
openssl rand -hex 32
|
|
```
|
|
|
|
```env
|
|
# Cryptography
|
|
SECRET_KEY="your-generated-secret-key-here" # Result of openssl rand -hex 32
|
|
ALGORITHM="HS256" # Default: HS256
|
|
ACCESS_TOKEN_EXPIRE_MINUTES=30 # Default: 30
|
|
REFRESH_TOKEN_EXPIRE_DAYS=7 # Default: 7
|
|
```
|
|
|
|
### First Admin User
|
|
|
|
```env
|
|
# Admin User
|
|
ADMIN_NAME="your_name"
|
|
ADMIN_EMAIL="your_email"
|
|
ADMIN_USERNAME="your_username"
|
|
ADMIN_PASSWORD="your_password"
|
|
```
|
|
|
|
### Redis Configuration
|
|
|
|
```env
|
|
# Redis Cache
|
|
REDIS_CACHE_HOST="localhost" # Use "redis" for Docker Compose
|
|
REDIS_CACHE_PORT=6379
|
|
|
|
# Client-side Cache
|
|
CLIENT_CACHE_MAX_AGE=30 # Default: 30 seconds
|
|
|
|
# Redis Job Queue
|
|
REDIS_QUEUE_HOST="localhost" # Use "redis" for Docker Compose
|
|
REDIS_QUEUE_PORT=6379
|
|
|
|
# Redis Rate Limiting
|
|
REDIS_RATE_LIMIT_HOST="localhost" # Use "redis" for Docker Compose
|
|
REDIS_RATE_LIMIT_PORT=6379
|
|
```
|
|
|
|
!!! warning "Redis in Production"
|
|
You may use the same Redis instance for caching and queues while developing, but use separate containers in production.
|
|
|
|
### Rate Limiting Defaults
|
|
|
|
```env
|
|
# Default Rate Limits
|
|
DEFAULT_RATE_LIMIT_LIMIT=10 # Default: 10 requests
|
|
DEFAULT_RATE_LIMIT_PERIOD=3600 # Default: 3600 seconds (1 hour)
|
|
```
|
|
|
|
### First Tier
|
|
|
|
```env
|
|
# Default Tier
|
|
TIER_NAME="free"
|
|
```
|
|
|
|
## Environment Types
|
|
|
|
Set your environment type:
|
|
|
|
```env
|
|
ENVIRONMENT="local" # local, staging, or production
|
|
```
|
|
|
|
- **local**: API docs available at `/docs`, `/redoc`, and `/openapi.json`
|
|
- **staging**: API docs available to superusers only
|
|
- **production**: API docs completely disabled
|
|
|
|
## Docker Compose Settings
|
|
|
|
If using Docker Compose, use these values instead:
|
|
|
|
```env
|
|
# Docker Compose values
|
|
POSTGRES_SERVER="db"
|
|
REDIS_CACHE_HOST="redis"
|
|
REDIS_QUEUE_HOST="redis"
|
|
REDIS_RATE_LIMIT_HOST="redis"
|
|
```
|
|
|
|
## Optional Services
|
|
|
|
The boilerplate includes Redis for caching, job queues, and rate limiting. If running locally without Docker, either:
|
|
|
|
1. **Install Redis** and keep the default settings
|
|
2. **Disable Redis services** (see [User Guide - Configuration](../user-guide/configuration/index.md) for details)
|
|
|
|
## That's It!
|
|
|
|
With these basic settings configured, you can start the application:
|
|
|
|
- **Docker Compose**: `docker compose up`
|
|
- **Manual**: `uv run uvicorn src.app.main:app --reload`
|
|
|
|
For detailed configuration options, advanced settings, and production deployment, see the [User Guide - Configuration](../user-guide/configuration/index.md). |