mirror of
https://github.com/learnhouse/docs.git
synced 2026-02-18 00:07:39 +01:00
172 lines
4.3 KiB
Plaintext
172 lines
4.3 KiB
Plaintext
import { Callout } from 'nextra/components'
|
|
|
|
# Configuration
|
|
For self hosted LearnHouse users, a custom configuration file can be used to suit your needs.
|
|
## Backend config file
|
|
Here is an example of the `config.yaml` file :
|
|
|
|
```yaml filename="config.yaml" copy
|
|
site_name: LearnHouse
|
|
site_description: LearnHouse is an open-source platform tailored for learning experiences.
|
|
contact_email: hi@learnhouse.app
|
|
|
|
general:
|
|
development_mode: false
|
|
install_mode: false
|
|
|
|
security:
|
|
auth_jwt_secret_key: secret
|
|
|
|
hosting_config:
|
|
domain: learnhouse.app
|
|
ssl: true
|
|
port: 1338
|
|
allowed_origins:
|
|
- http://localhost:3000
|
|
- http://localhost:3001
|
|
cookies_config:
|
|
domain: ".localhost"
|
|
allowed_regexp: '\b((?:https?://)[^\s/$.?#].[^\s]*)\b'
|
|
content_delivery:
|
|
type: "filesystem" # "filesystem" or "s3api"
|
|
s3api:
|
|
bucket_name: ""
|
|
endpoint_url: ""
|
|
|
|
mailing_config:
|
|
resend_api_key: ""
|
|
system_email_adress: ""
|
|
|
|
database_config:
|
|
sql_connection_string: postgresql://learnhouse:learnhouse@localhost:5432/learnhouse
|
|
|
|
redis_config:
|
|
redis_connection_string: redis://localhost:6379/learnhouse
|
|
```
|
|
You can also use a `.env` file to configure your backend.
|
|
|
|
<Callout>
|
|
If an environment variable is set, it will override the value in the `config.yaml` file
|
|
</Callout>
|
|
|
|
```env filename=".env" copy
|
|
LEARNHOUSE_SITE_NAME=LearnHouse
|
|
LEARNHOUSE_SITE_DESCRIPTION=LearnHouse is an open-source platform tailored for learning experiences.
|
|
LEARNHOUSE_CONTACT_EMAIL=hi@learnhouse.app
|
|
LEARNHOUSE_DOMAIN=learnhouse.app
|
|
LEARNHOUSE_SSL=true
|
|
LEARNHOUSE_USE_DEFAULT_ORG=true
|
|
LEARNHOUSE_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:3001
|
|
LEARNHOUSE_COOKIE_DOMAIN=.localhost
|
|
LEARNHOUSE_ALLOWED_REGEXP=\b((?:https?://)[^\s/$.?#].[^\s]*)\b
|
|
LEARNHOUSE_SELF_HOSTED=false
|
|
LEARNHOUSE_SQL_CONNECTION_STRING=postgresql://learnhouse:learnhouse@postgresql:5432/learnhouse
|
|
```
|
|
|
|
|
|
### General Metadata
|
|
|
|
#### Site name
|
|
|
|
Your site name
|
|
|
|
#### Site description
|
|
|
|
A short description
|
|
|
|
#### Contact email
|
|
|
|
Your designated contact email address.
|
|
|
|
### Hosting Config
|
|
|
|
#### Domain
|
|
|
|
You site's technical domain
|
|
|
|
#### SSL
|
|
|
|
Is SSL used?
|
|
|
|
#### Allowed Origins
|
|
|
|
A list of origins that should be permitted to make cross-origin requests to your website.
|
|
|
|
#### Allowed Origins Regex
|
|
|
|
A regex string to match against origins that should be permitted to make cross-origin requests to your website.
|
|
|
|
#### Cookies Domain
|
|
|
|
Your frontend domain, the domain will be assigned to cookies that the backend emits, authentication and parts of your site would not work if not configured properly.
|
|
|
|
The value used in the `yaml` should be in the "string" format.
|
|
|
|
##### Sub Domains
|
|
|
|
If you want to use the backend for different subdomains locations, for example :
|
|
|
|
- domain.app
|
|
- acme1.domain.app
|
|
- acme2.domain.app
|
|
|
|
You can add a `.` before your domain, here it would be `.domain.app`
|
|
|
|
### Database Config
|
|
|
|
#### PostgreSQL Connection string
|
|
|
|
<Callout type="info">
|
|
As of December 2023, we've transitioned our database structure to PostgreSQL.
|
|
</Callout>
|
|
|
|
Your PostgreSQL Database connection string
|
|
|
|
### Redis Config
|
|
|
|
#### Redis connection string
|
|
|
|
Your Redis Database connection string
|
|
|
|
### Mailing Config
|
|
|
|
#### Resend API Key
|
|
|
|
Your Resend API Key
|
|
|
|
#### System Email Address
|
|
|
|
Your System Email Address
|
|
|
|
## Frontend config file
|
|
|
|
You can also configure your frontend by creating a `.env` file in the `apps/web` folder.
|
|
|
|
### Authentication (Oauth) configuration
|
|
Following the integration of OAuth using NextAuth to manage sign-ups/ins. For this to work, you now need to add two lines to your `.env` config file.
|
|
|
|
<Callout type="info">
|
|
To safely encrypt tokens and email hashes, you need a NextAuth secret.
|
|
|
|
To create one, either run `npx auth secret`, or on UNIX based systems (MacOS/Linux) you can use `openssl rand -base64 33`.
|
|
|
|
Copy this string into your .env file as NEXTAUTH_SECRET.
|
|
</Callout>
|
|
|
|
Here is an example of the `.env` file :
|
|
|
|
```env filename="apps/web/.env" {1-2} copy
|
|
# Learnhouse configuration
|
|
NEXT_PUBLIC_LEARNHOUSE_MULTI_ORG=false
|
|
NEXT_PUBLIC_LEARNHOUSE_DEFAULT_ORG=defaultorg
|
|
# NextAuth Configuration
|
|
NEXTAUTH_SECRET={generated_secret}
|
|
NEXTAUTH_URL=http://localhost:3000/
|
|
```
|
|
|
|
To learn more about Custom Authentication, visit the NextAuth docs [here](https://authjs.dev/getting-started/authentication).
|
|
|
|
### Multi Organizations
|
|
|
|
Please check the [Multi Organization](./organization-hosting-modes) section for more information.
|