Docs troubleshooting page (#8312)
Related to #8296 --------- Co-authored-by: Félix Malfait <felix@twenty.com> Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
This commit is contained in:
@ -3,10 +3,11 @@ export const DOCS_INDEX = {
|
||||
'Local Setup': [{ fileName: 'local-setup' }],
|
||||
'Self-Hosting': [
|
||||
{ fileName: 'self-hosting' },
|
||||
{ fileName: 'self-hosting-var' },
|
||||
{ fileName: 'docker-compose' },
|
||||
{ fileName: 'cloud-providers' },
|
||||
{ fileName: 'upgrade-guide' },
|
||||
{ fileName: 'self-hosting-var' },
|
||||
{ fileName: 'cloud-providers' },
|
||||
{ fileName: 'troubleshooting' },
|
||||
],
|
||||
},
|
||||
Extending: {
|
||||
|
||||
@ -5,7 +5,7 @@ image: /images/user-guide/fields/field.png
|
||||
info: Mostly for contributors or curious developers
|
||||
---
|
||||
|
||||
Follow this guide if you would like to setup the project locally to contribute.
|
||||
Follow this guide if you would like to set up the project locally to contribute.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@ -225,7 +225,7 @@ Start your redis server:
|
||||
</ArticleTabs>
|
||||
|
||||
|
||||
Setup your database with the following command:
|
||||
Set up your database with the following command:
|
||||
```bash
|
||||
npx nx database:reset twenty-server
|
||||
```
|
||||
@ -246,47 +246,8 @@ Twenty's server will be up and running at [http://localhost:3000](http://localho
|
||||
|
||||
Twenty's frontend will be running at [http://localhost:3001](http://localhost:3001). Just log in using the seeded demo account: `tim@apple.dev` (password: `Applecar2025`) to start using Twenty.
|
||||
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
#### CR line breaks found [Windows]
|
||||
|
||||
This is due to the line break characters of Windows and the git configuration. Try running:
|
||||
|
||||
```
|
||||
git config --global core.autocrlf false
|
||||
```
|
||||
|
||||
Then delete the repository and clone it again.
|
||||
|
||||
#### Missing metadata schema
|
||||
|
||||
During Twenty installation, you need to provision your postgres database with the right schemas, extensions, and users.
|
||||
If you're successful in running this provisioning, you should have `default` and `metadata` schemas in your database.
|
||||
If you don't, make sure you don't have more than one postgres instance running on your computer.
|
||||
|
||||
#### Cannot find module 'twenty-emails' or its corresponding type declarations.
|
||||
|
||||
You have to build the package `twenty-emails` before running the initialization of the database with `npx nx run twenty-emails:build`
|
||||
|
||||
#### Missing twenty-x package
|
||||
|
||||
Make sure to run yarn in the root directory and then run `npx nx server:dev twenty-server`. If this still doesn't work try building the missing package manually.
|
||||
|
||||
#### Lint on Save not working
|
||||
|
||||
This should work out of the box with the eslint extension installed. If this doesn't work try adding this to your vscode setting (on the dev container scope):
|
||||
|
||||
#### While running `npx nx start` or `npx nx start twenty-front`, Out of memory error is thrown
|
||||
|
||||
In `packages/twenty-front/.env` uncomment `VITE_DISABLE_TYPESCRIPT_CHECKER=true` and `VITE_DISABLE_ESLINT_CHECKER=true` to disable background checks thus reducing amount of needed RAM.
|
||||
|
||||
```
|
||||
"editor.codeActionsOnSave": {
|
||||
|
||||
"source.fixAll.eslint": "explicit"
|
||||
|
||||
}
|
||||
```
|
||||
If you encounter any problem, check [Troubleshooting](https://twenty.com/developers/section/self-hosting/troubleshooting) for solutions.
|
||||
|
||||
<ArticleEditContent></ArticleEditContent>
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Vendor-Specific Instructions
|
||||
title: Other methods
|
||||
icon: TbCloud
|
||||
image: /images/user-guide/notes/notes_header.png
|
||||
---
|
||||
@ -12,413 +12,6 @@ image: /images/user-guide/notes/notes_header.png
|
||||
|
||||
Community-led documentation for Kubernetes deployment is available [here](https://github.com/twentyhq/twenty/tree/main/packages/twenty-docker/k8s)
|
||||
|
||||
## Render
|
||||
|
||||
Community-led, might not be up to date
|
||||
|
||||
[](https://render.com/deploy?repo=https://github.com/twentyhq/twenty)
|
||||
|
||||
## RepoCloud
|
||||
|
||||
Community-led, might not be up to date
|
||||
|
||||
[](https://repocloud.io/details/?app_id=259)
|
||||
|
||||
## Azure Container Apps
|
||||
|
||||
Community-led, might not be up to date
|
||||
|
||||
### About
|
||||
|
||||
Hosts Twenty CRM using Azure Container Apps.
|
||||
The solution provisions file shares, a container apps environment with three containers, and a log analytics workspace.
|
||||
|
||||
The file shares are used to store uploaded images and files through the UI, and to store database backups.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Terraform installed https://developer.hashicorp.com/terraform/install
|
||||
- An Azure subscription with permissions to create resources
|
||||
|
||||
### Step by step instructions:
|
||||
|
||||
1. Create a new folder and copy all the files from below
|
||||
2. Run `terraform init`
|
||||
3. Run `terraform plan -out tfplan`
|
||||
4. Run `terraform apply tfplan`
|
||||
5. Connect to server `az containerapp exec --name twenty-server -g twenty-crm-rg`
|
||||
6. Initialize the database from the server `yarn database:init:prod`
|
||||
7. Go to https://your-twenty-front-fqdn - located in the portal
|
||||
|
||||
#### Production docker containers
|
||||
|
||||
This uses the prebuilt images found on [docker hub](https://hub.docker.com/r/twentycrm/).
|
||||
|
||||
#### Environment Variables
|
||||
|
||||
- Is set in respective tf-files
|
||||
- See docs [Setup Environment Variables](https://twenty.com/developers/section/self-hosting/self-hosting-var) for usage
|
||||
- After deployment you could can set `IS_SIGN_UP_DISABLED=true` (and run `terraform plan/apply` again) to disable new workspaces from being created
|
||||
|
||||
#### Security and networking
|
||||
|
||||
- Container `twenty-db` accepts only ingress TCP traffic from other containers in the environment. No external ingress traffic allowed
|
||||
- Container `twenty-server` accepts external traffic over HTTPS
|
||||
- Container `twenty-front` accepts external traffic over HTTPS
|
||||
|
||||
It´s highly recommended to enable [built-in authentication](https://learn.microsoft.com/en-us/azure/container-apps/authentication) for `twenty-front` using one of the supported providers.
|
||||
|
||||
Use the [custom domain](https://learn.microsoft.com/en-us/azure/container-apps/custom-domains-certificates) feature on the `twenty-front` container if you would like an easier domain name.
|
||||
|
||||
#### Files
|
||||
|
||||
##### providers.tf
|
||||
|
||||
```hcl
|
||||
# providers.tf
|
||||
|
||||
terraform {
|
||||
required_providers {
|
||||
azapi = {
|
||||
source = "Azure/azapi"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "azapi" {
|
||||
}
|
||||
|
||||
provider "azurerm" {
|
||||
features {}
|
||||
}
|
||||
|
||||
provider "azuread" {
|
||||
}
|
||||
|
||||
provider "random" {
|
||||
}
|
||||
```
|
||||
|
||||
##### main.tf
|
||||
|
||||
```hcl
|
||||
# main.tf
|
||||
|
||||
# Create a resource group
|
||||
resource "azurerm_resource_group" "main" {
|
||||
name = "twenty-crm-rg"
|
||||
location = "North Europe"
|
||||
}
|
||||
|
||||
# Variables
|
||||
locals {
|
||||
app_env_name = "twenty"
|
||||
|
||||
server_name = "twenty-server"
|
||||
server_tag = "latest"
|
||||
|
||||
front_app_name = "twenty-front"
|
||||
front_tag = "latest"
|
||||
|
||||
db_app_name = "twenty-postgres"
|
||||
db_tag = "latest"
|
||||
|
||||
db_user = "twenty"
|
||||
db_password = "twenty"
|
||||
|
||||
storage_mount_db_name = "twentydbstoragemount"
|
||||
storage_mount_server_name = "twentyserverstoragemount"
|
||||
|
||||
cpu = 1.0
|
||||
memory = "2Gi"
|
||||
}
|
||||
|
||||
# Set up a Log Analytics workspace
|
||||
resource "azurerm_log_analytics_workspace" "main" {
|
||||
name = "${local.app_env_name}-law"
|
||||
location = azurerm_resource_group.main.location
|
||||
resource_group_name = azurerm_resource_group.main.name
|
||||
sku = "PerGB2018"
|
||||
retention_in_days = 30
|
||||
}
|
||||
|
||||
# Create a storage account
|
||||
resource "random_pet" "example" {
|
||||
length = 2
|
||||
separator = ""
|
||||
}
|
||||
|
||||
resource "azurerm_storage_account" "main" {
|
||||
name = "twentystorage${random_pet.example.id}"
|
||||
resource_group_name = azurerm_resource_group.main.name
|
||||
location = azurerm_resource_group.main.location
|
||||
account_tier = "Standard"
|
||||
account_replication_type = "LRS"
|
||||
large_file_share_enabled = true
|
||||
}
|
||||
|
||||
# Create db file storage
|
||||
resource "azurerm_storage_share" "db" {
|
||||
name = "twentydatabaseshare"
|
||||
storage_account_name = azurerm_storage_account.main.name
|
||||
quota = 50
|
||||
enabled_protocol = "SMB"
|
||||
}
|
||||
|
||||
# Create backend file storage
|
||||
resource "azurerm_storage_share" "server" {
|
||||
name = "twentyservershare"
|
||||
storage_account_name = azurerm_storage_account.main.name
|
||||
quota = 50
|
||||
enabled_protocol = "SMB"
|
||||
}
|
||||
|
||||
# Create a Container App Environment
|
||||
resource "azurerm_container_app_environment" "main" {
|
||||
name = "${local.app_env_name}-env"
|
||||
location = azurerm_resource_group.main.location
|
||||
resource_group_name = azurerm_resource_group.main.name
|
||||
log_analytics_workspace_id = azurerm_log_analytics_workspace.main.id
|
||||
}
|
||||
|
||||
# Connect the db storage share to the container app environment
|
||||
resource "azurerm_container_app_environment_storage" "db" {
|
||||
name = local.storage_mount_db_name
|
||||
container_app_environment_id = azurerm_container_app_environment.main.id
|
||||
account_name = azurerm_storage_account.main.name
|
||||
share_name = azurerm_storage_share.db.name
|
||||
access_key = azurerm_storage_account.main.primary_access_key
|
||||
access_mode = "ReadWrite"
|
||||
}
|
||||
|
||||
# Connect the server storage share to the container app environment
|
||||
resource "azurerm_container_app_environment_storage" "server" {
|
||||
name = local.storage_mount_server_name
|
||||
container_app_environment_id = azurerm_container_app_environment.main.id
|
||||
account_name = azurerm_storage_account.main.name
|
||||
share_name = azurerm_storage_share.server.name
|
||||
access_key = azurerm_storage_account.main.primary_access_key
|
||||
access_mode = "ReadWrite"
|
||||
}
|
||||
```
|
||||
|
||||
##### frontend.tf
|
||||
|
||||
```hcl
|
||||
# frontend.tf
|
||||
|
||||
resource "azurerm_container_app" "twenty_front" {
|
||||
name = local.front_app_name
|
||||
container_app_environment_id = azurerm_container_app_environment.main.id
|
||||
resource_group_name = azurerm_resource_group.main.name
|
||||
revision_mode = "Single"
|
||||
|
||||
depends_on = [azurerm_container_app.twenty_server]
|
||||
|
||||
ingress {
|
||||
allow_insecure_connections = false
|
||||
external_enabled = true
|
||||
target_port = 3000
|
||||
transport = "http"
|
||||
traffic_weight {
|
||||
percentage = 100
|
||||
latest_revision = true
|
||||
}
|
||||
}
|
||||
|
||||
template {
|
||||
min_replicas = 1
|
||||
# things starts to fail when using more than 1 replica
|
||||
max_replicas = 1
|
||||
container {
|
||||
name = "twenty-front"
|
||||
image = "docker.io/twentycrm/twenty-front:${local.front_tag}"
|
||||
cpu = local.cpu
|
||||
memory = local.memory
|
||||
|
||||
env {
|
||||
name = "REACT_APP_SERVER_BASE_URL"
|
||||
value = "https://${azurerm_container_app.twenty_server.ingress[0].fqdn}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Set CORS rules for frontend app using AzAPI
|
||||
resource "azapi_update_resource" "cors" {
|
||||
type = "Microsoft.App/containerApps@2023-05-01"
|
||||
resource_id = azurerm_container_app.twenty_front.id
|
||||
body = jsonencode({
|
||||
properties = {
|
||||
configuration = {
|
||||
ingress = {
|
||||
corsPolicy = {
|
||||
allowedOrigins = ["*"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
depends_on = [azurerm_container_app.twenty_front]
|
||||
}
|
||||
```
|
||||
|
||||
##### backend.tf
|
||||
|
||||
```hcl
|
||||
# backend.tf
|
||||
|
||||
# Create a random UUID
|
||||
resource "random_uuid" "app_secret" {}
|
||||
|
||||
resource "azurerm_container_app" "twenty_server" {
|
||||
name = local.server_name
|
||||
container_app_environment_id = azurerm_container_app_environment.main.id
|
||||
resource_group_name = azurerm_resource_group.main.name
|
||||
revision_mode = "Single"
|
||||
|
||||
depends_on = [azurerm_container_app.twenty_db, azurerm_container_app_environment_storage.server]
|
||||
|
||||
ingress {
|
||||
allow_insecure_connections = false
|
||||
external_enabled = true
|
||||
target_port = 3000
|
||||
transport = "http"
|
||||
traffic_weight {
|
||||
percentage = 100
|
||||
latest_revision = true
|
||||
}
|
||||
}
|
||||
|
||||
template {
|
||||
min_replicas = 1
|
||||
max_replicas = 1
|
||||
volume {
|
||||
name = "twenty-server-data"
|
||||
storage_type = "AzureFile"
|
||||
storage_name = local.storage_mount_server_name
|
||||
}
|
||||
|
||||
container {
|
||||
name = local.server_name
|
||||
image = "docker.io/twentycrm/twenty-server:${local.server_tag}"
|
||||
cpu = local.cpu
|
||||
memory = local.memory
|
||||
|
||||
volume_mounts {
|
||||
name = "twenty-server-data"
|
||||
path = "/app/packages/twenty-server/.local-storage"
|
||||
}
|
||||
|
||||
# Environment variables
|
||||
env {
|
||||
name = "IS_SIGN_UP_DISABLED"
|
||||
value = false
|
||||
}
|
||||
env {
|
||||
name = "SIGN_IN_PREFILLED"
|
||||
value = false
|
||||
}
|
||||
env {
|
||||
name = "STORAGE_TYPE"
|
||||
value = "local"
|
||||
}
|
||||
env {
|
||||
name = "STORAGE_LOCAL_PATH"
|
||||
value = ".local-storage"
|
||||
}
|
||||
env {
|
||||
name = "PG_DATABASE_URL"
|
||||
value = "postgres://${local.db_user}:
|
||||
${local.db_password}@${local.db_app_name}:5432/default"
|
||||
}
|
||||
env {
|
||||
name = "FRONT_BASE_URL"
|
||||
value = "https://${local.front_app_name}"
|
||||
}
|
||||
env {
|
||||
name = "APP_SECRET"
|
||||
value = random_uuid.app_secret.result
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Set CORS rules for server app using AzAPI
|
||||
resource "azapi_update_resource" "server_cors" {
|
||||
type = "Microsoft.App/containerApps@2023-05-01"
|
||||
resource_id = azurerm_container_app.twenty_server.id
|
||||
body = jsonencode({
|
||||
properties = {
|
||||
configuration = {
|
||||
ingress = {
|
||||
corsPolicy = {
|
||||
allowedOrigins = ["*"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
depends_on = [azurerm_container_app.twenty_server]
|
||||
}
|
||||
```
|
||||
|
||||
##### database.tf
|
||||
|
||||
```hcl
|
||||
# database.tf
|
||||
|
||||
resource "azurerm_container_app" "twenty_db" {
|
||||
name = local.db_app_name
|
||||
container_app_environment_id = azurerm_container_app_environment.main.id
|
||||
resource_group_name = azurerm_resource_group.main.name
|
||||
revision_mode = "Single"
|
||||
|
||||
depends_on = [azurerm_container_app_environment_storage.db]
|
||||
|
||||
ingress {
|
||||
allow_insecure_connections = false
|
||||
external_enabled = false
|
||||
target_port = 5432
|
||||
transport = "tcp"
|
||||
traffic_weight {
|
||||
percentage = 100
|
||||
latest_revision = true
|
||||
}
|
||||
}
|
||||
|
||||
template {
|
||||
min_replicas = 1
|
||||
max_replicas = 1
|
||||
container {
|
||||
name = local.db_app_name
|
||||
image = "docker.io/twentycrm/twenty-postgres-spilo:${local.db_tag}"
|
||||
cpu = local.cpu
|
||||
memory = local.memory
|
||||
|
||||
volume_mounts {
|
||||
name = "twenty-db-data"
|
||||
path = "/var/lib/postgresql/data"
|
||||
}
|
||||
|
||||
env {
|
||||
name = "PGUSER_SUPERUSER"
|
||||
value = "postgres"
|
||||
}
|
||||
env {
|
||||
name = "PGPASSWORD_SUPERUSER"
|
||||
value = "twenty"
|
||||
}
|
||||
}
|
||||
|
||||
volume {
|
||||
name = "twenty-db-data"
|
||||
storage_type = "AzureFile"
|
||||
storage_name = local.storage_mount_db_name
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Others
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 1-Click Docker Compose
|
||||
title: 1-Click w/ Docker Compose
|
||||
icon: TbBrandDocker
|
||||
image: /images/user-guide/objects/objects.png
|
||||
---
|
||||
@ -16,7 +16,6 @@ This guide provides step-by-step instructions to install and configure the Twent
|
||||
|
||||
See docs [Setup Environment Variables](https://twenty.com/developers/section/self-hosting/self-hosting-var) for advanced configuration.
|
||||
|
||||
|
||||
## System Requirements
|
||||
|
||||
- RAM: Ensure your environment has at least 2GB of RAM. Insufficient memory can cause processes to crash.
|
||||
@ -45,7 +44,7 @@ Follow these steps for a manual setup.
|
||||
|
||||
Copy the example environment file to a new .env file in your working directory:
|
||||
```bash
|
||||
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/.env.example
|
||||
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/tags/v0.32.0/packages/twenty-docker/.env.example
|
||||
```
|
||||
|
||||
2. **Generate Secret Tokens**
|
||||
@ -77,7 +76,7 @@ Follow these steps for a manual setup.
|
||||
Download the `docker-compose.yml` file to your working directory:
|
||||
|
||||
```bash
|
||||
curl -O https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml
|
||||
curl -O https://raw.githubusercontent.com/twentyhq/twenty/refs/tags/v0.32.0/packages/twenty-docker/docker-compose.yml
|
||||
```
|
||||
|
||||
### Step 3: Launch the Application
|
||||
@ -177,41 +176,7 @@ We strongly recommend setting up Twenty behind a reverse proxy with SSL terminat
|
||||
|
||||
The `SERVER_URL` must match how users access your application in their browsers.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Unable to Log In
|
||||
|
||||
If you can't log in after setup:
|
||||
1. Run the following commands:
|
||||
```bash
|
||||
docker exec -it twenty-server-1 yarn
|
||||
docker exec -it twenty-server-1 npx nx database:reset
|
||||
```
|
||||
2. Restart the Docker containers:
|
||||
```bash
|
||||
docker-compose down
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
|
||||
### Connection Issues Behind a Reverse Proxy
|
||||
|
||||
If you're running Twenty behind a reverse proxy and experiencing connection issues:
|
||||
|
||||
1. **Verify SERVER_URL:**
|
||||
|
||||
Ensure `SERVER_URL` in your `.env` file matches your external access URL, including `https` if SSL is enabled.
|
||||
|
||||
2. **Check Reverse Proxy Settings:**
|
||||
|
||||
- Confirm that your reverse proxy is correctly forwarding requests to the Twenty server.
|
||||
- Ensure headers like `X-Forwarded-For` and `X-Forwarded-Proto` are properly set.
|
||||
|
||||
3. **Restart Services:**
|
||||
|
||||
After making changes, restart both the reverse proxy and Twenty containers.
|
||||
|
||||
## Persistence
|
||||
#### Persistence
|
||||
|
||||
- **Data Volumes:**
|
||||
|
||||
@ -221,19 +186,9 @@ If you're running Twenty behind a reverse proxy and experiencing connection issu
|
||||
|
||||
If deploying to a stateless environment (e.g., certain cloud services), configure external storage to persist data.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you encounter issues not covered in this guide:
|
||||
## Troubleshooting
|
||||
|
||||
- Check Logs:
|
||||
|
||||
View container logs for error messages:
|
||||
```bash
|
||||
docker-compose logs
|
||||
```
|
||||
|
||||
- Community Support:
|
||||
|
||||
Reach out to the Twenty community or support channels for assistance.
|
||||
If you encounter any problem, check [Troubleshooting](https://twenty.com/developers/section/self-hosting/troubleshooting) for solutions.
|
||||
|
||||
<ArticleEditContent></ArticleEditContent>
|
||||
|
||||
@ -0,0 +1,112 @@
|
||||
---
|
||||
title: Troubleshooting
|
||||
icon: TbCloud
|
||||
image: /images/user-guide/what-is-twenty/20.png
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you encounter any problem while setting up environment for development, upgrading your instance or self-hosting,
|
||||
here are some solutions for common problems.
|
||||
|
||||
### Self-hosting
|
||||
|
||||
#### CR line breaks found [Windows]
|
||||
|
||||
This is due to the line break characters of Windows and the git configuration. Try running:
|
||||
|
||||
```
|
||||
git config --global core.autocrlf false
|
||||
```
|
||||
|
||||
Then delete the repository and clone it again.
|
||||
|
||||
#### Missing metadata schema
|
||||
|
||||
During Twenty installation, you need to provision your postgres database with the right schemas, extensions, and users.
|
||||
If you're successful in running this provisioning, you should have `default` and `metadata` schemas in your database.
|
||||
If you don't, make sure you don't have more than one postgres instance running on your computer.
|
||||
|
||||
#### Cannot find module 'twenty-emails' or its corresponding type declarations.
|
||||
|
||||
You have to build the package `twenty-emails` before running the initialization of the database with `npx nx run twenty-emails:build`
|
||||
|
||||
#### Missing twenty-x package
|
||||
|
||||
Make sure to run yarn in the root directory and then run `npx nx server:dev twenty-server`. If this still doesn't work try building the missing package manually.
|
||||
|
||||
#### Lint on Save not working
|
||||
|
||||
This should work out of the box with the eslint extension installed. If this doesn't work try adding this to your vscode setting (on the dev container scope):
|
||||
|
||||
```
|
||||
"editor.codeActionsOnSave": {
|
||||
|
||||
"source.fixAll.eslint": "explicit"
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
#### While running `npx nx start` or `npx nx start twenty-front`, Out of memory error is thrown
|
||||
|
||||
In `packages/twenty-front/.env` uncomment `VITE_DISABLE_TYPESCRIPT_CHECKER=true` and `VITE_DISABLE_ESLINT_CHECKER=true` to disable background checks thus reducing amount of needed RAM.
|
||||
|
||||
#### While running `npx nx start` there are weird [0] and [1] in logs
|
||||
|
||||
That's expected as command `npx nx start` is running more commands under the hood
|
||||
|
||||
#### While running `yarn` warnings appear in console
|
||||
|
||||
Warnings are informing about pulling additional dependencies which aren't explicitly stated in `package.json`, so as long as no breaking error appears, everything should work as expected.
|
||||
|
||||
#### When user accesses login page, error about unauthorized user trying to access workspace appears in logs
|
||||
|
||||
That's expected as user is unauthorized when logged out since its identity is not verified.
|
||||
|
||||
### 1-click Docker compose
|
||||
|
||||
#### Unable to Log In
|
||||
|
||||
If you can't log in after setup:
|
||||
1. Run the following commands:
|
||||
```bash
|
||||
docker exec -it twenty-server-1 yarn
|
||||
docker exec -it twenty-server-1 npx nx database:reset
|
||||
```
|
||||
2. Restart the Docker containers:
|
||||
```bash
|
||||
docker-compose down
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
#### Connection Issues Behind a Reverse Proxy
|
||||
|
||||
If you're running Twenty behind a reverse proxy and experiencing connection issues:
|
||||
|
||||
1. **Verify SERVER_URL:**
|
||||
|
||||
Ensure `SERVER_URL` in your `.env` file matches your external access URL, including `https` if SSL is enabled.
|
||||
|
||||
2. **Check Reverse Proxy Settings:**
|
||||
|
||||
- Confirm that your reverse proxy is correctly forwarding requests to the Twenty server.
|
||||
- Ensure headers like `X-Forwarded-For` and `X-Forwarded-Proto` are properly set.
|
||||
|
||||
3. **Restart Services:**
|
||||
|
||||
After making changes, restart both the reverse proxy and Twenty containers.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you encounter issues not covered in this guide:
|
||||
|
||||
- Check Logs:
|
||||
|
||||
View container logs for error messages:
|
||||
```bash
|
||||
docker-compose logs
|
||||
```
|
||||
|
||||
- Community Support:
|
||||
|
||||
Reach out to the [Twenty community](https://github.com/twentyhq/twenty/issues) or [support channels](https://discord.gg/cx5n4Jzs57) for assistance.
|
||||
@ -4,11 +4,12 @@ icon: TbCloud
|
||||
image: /images/user-guide/notes/notes_header.png
|
||||
---
|
||||
|
||||
|
||||
## General guidelines
|
||||
|
||||
Always make sure to backup your database before starting the upgrade process.
|
||||
Always make sure to back up your database before starting the upgrade process.
|
||||
|
||||
## If you used Docker Compose
|
||||
If you used Docker Compose, follow these steps:
|
||||
|
||||
1. In a terminal, on the host where Twenty is running, turn off Twenty: `docker compose down`
|
||||
|
||||
@ -16,55 +17,72 @@ Always make sure to backup your database before starting the upgrade process.
|
||||
|
||||
3. Bring Twenty back online with `docker-compose up -d`
|
||||
|
||||
## Data Migration
|
||||
|
||||
Migrating a CRM is a bit trickier than migrating a traditional software, because the data model of Standard Object has to evolve smoothly along your custom objects.
|
||||
## Version-specific upgrade steps
|
||||
|
||||
## v0.21.0 to v0.22.0
|
||||
### v0.32.0 to v0.33.0
|
||||
|
||||
Upgrade your Twenty instance to use v0.22.0 image
|
||||
|
||||
Run the following commands:
|
||||
Upgrade your Twenty instance to use v0.33.0 image
|
||||
|
||||
```
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod workspace:sync-metadata -f
|
||||
yarn command:prod upgrade-0.22
|
||||
yarn command:prod cache:flush
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod upgrade-0.33
|
||||
```
|
||||
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the Database.
|
||||
The `yarn command:prod workspace:sync-metadata -f` command will sync the definition of standard objects to the metadata tables and apply to required migrations to existing workspaces.
|
||||
The `yarn command:prod upgrade-0.22` command will apply specific data transformations to adapt to the new object defaultRequestInstrumentationOptions.
|
||||
The `yarn command:prod cache:flush` command will flush the Redis cache.
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
|
||||
The `yarn command:prod upgrade-0.33` takes care of the data migration of all workspaces.
|
||||
|
||||
## v0.22.0 to v0.23.0
|
||||
|
||||
Upgrade your Twenty instance to use v0.23.0 image
|
||||
### v0.31.0 to v0.32.0
|
||||
|
||||
Run the following commands:
|
||||
|
||||
```
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod upgrade-0.23
|
||||
```
|
||||
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the Database.
|
||||
The `yarn command:prod upgrade-0.23` takes care of the data migration, including transferring activities to tasks/notes.
|
||||
|
||||
## v0.23.0 to v0.24.0
|
||||
|
||||
Upgrade your Twenty instance to use v0.24.0 image
|
||||
|
||||
Run the following commands:
|
||||
Upgrade your Twenty instance to use v0.32.0 image
|
||||
|
||||
**Schema and data migration**
|
||||
```
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod upgrade-0.24
|
||||
yarn command:prod upgrade-0.32
|
||||
```
|
||||
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
|
||||
The `yarn command:prod upgrade-0.24` takes care of the data migration of all workspaces.
|
||||
The `yarn command:prod upgrade-0.32` takes care of the data migration of all workspaces.
|
||||
|
||||
## v0.24.0 to v0.30.0
|
||||
**Environment Variables**
|
||||
|
||||
We have updated the way we handle the Redis connection.
|
||||
|
||||
- Removed: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`
|
||||
- Added: `REDIS_URL`
|
||||
|
||||
Update your `.env` file to use the new `REDIS_URL` variable instead of the individual Redis connection parameters.
|
||||
|
||||
We have also simplified the way we handle the JWT tokens.
|
||||
|
||||
- Removed: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET`
|
||||
- Added: `APP_SECRET`
|
||||
|
||||
Update your `.env` file to use the new `APP_SECRET` variable instead of the individual tokens secrets (you can use the same secret as before or generate a new random string)
|
||||
|
||||
**Connected Account**
|
||||
|
||||
If you are using connected account to synchronize your Google emails and calendars, you will need to activate the [People API](https://developers.google.com/people) on your Google Admin console.
|
||||
|
||||
|
||||
### v0.30.0 to v0.31.0
|
||||
|
||||
Upgrade your Twenty instance to use v0.31.0 image
|
||||
|
||||
**Schema and data migration**:
|
||||
```
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod upgrade-0.31
|
||||
```
|
||||
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
|
||||
The `yarn command:prod upgrade-0.31` takes care of the data migration of all workspaces.
|
||||
|
||||
### v0.24.0 to v0.30.0
|
||||
|
||||
Upgrade your Twenty instance to use v0.30.0 image
|
||||
|
||||
@ -86,66 +104,51 @@ yarn command:prod upgrade-0.30
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
|
||||
The `yarn command:prod upgrade-0.30` takes care of the data migration of all workspaces.
|
||||
|
||||
## v0.30.0 to v0.31.0
|
||||
### v0.23.0 to v0.24.0
|
||||
|
||||
Upgrade your Twenty instance to use v0.31.0 image
|
||||
Upgrade your Twenty instance to use v0.24.0 image
|
||||
|
||||
Run the following commands:
|
||||
|
||||
**Schema and data migration**:
|
||||
```
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod upgrade-0.31
|
||||
yarn command:prod upgrade-0.24
|
||||
```
|
||||
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
|
||||
The `yarn command:prod upgrade-0.31` takes care of the data migration of all workspaces.
|
||||
The `yarn command:prod upgrade-0.24` takes care of the data migration of all workspaces.
|
||||
|
||||
## v0.31.0 to v0.32.0
|
||||
### v0.22.0 to v0.23.0
|
||||
|
||||
Upgrade your Twenty instance to use v0.32.0 image
|
||||
Upgrade your Twenty instance to use v0.23.0 image
|
||||
|
||||
Run the following commands:
|
||||
|
||||
**Schema and data migration**:
|
||||
```
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod upgrade-0.32
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod upgrade-0.23
|
||||
```
|
||||
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
|
||||
The `yarn command:prod upgrade-0.32` takes care of the data migration of all workspaces.
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the Database.
|
||||
The `yarn command:prod upgrade-0.23` takes care of the data migration, including transferring activities to tasks/notes.
|
||||
|
||||
## v0.32.0 to v0.33.0
|
||||
### v0.21.0 to v0.22.0
|
||||
|
||||
Upgrade your Twenty instance to use v0.33.0 image
|
||||
Upgrade your Twenty instance to use v0.22.0 image
|
||||
|
||||
Run the following commands:
|
||||
|
||||
**Schema and data migration**:
|
||||
```
|
||||
yarn command:prod cache:flush
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod upgrade-0.33
|
||||
yarn database:migrate:prod
|
||||
yarn command:prod workspace:sync-metadata -f
|
||||
yarn command:prod upgrade-0.22
|
||||
```
|
||||
|
||||
The `yarn command:prod cache:flush` command will flush the Redis cache.
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
|
||||
The `yarn command:prod upgrade-0.33` takes care of the data migration of all workspaces.
|
||||
The `yarn database:migrate:prod` command will apply the migrations to the Database.
|
||||
The `yarn command:prod workspace:sync-metadata -f` command will sync the definition of standard objects to the metadata tables and apply to required migrations to existing workspaces.
|
||||
The `yarn command:prod upgrade-0.22` command will apply specific data transformations to adapt to the new object defaultRequestInstrumentationOptions.
|
||||
|
||||
### Environment Variables
|
||||
|
||||
We have updated the way we handle the Redis connection.
|
||||
|
||||
- Removed: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`
|
||||
- Added: `REDIS_URL`
|
||||
|
||||
Update your `.env` file to use the new `REDIS_URL` variable instead of the individual Redis connection parameters.
|
||||
|
||||
We have also simplifed the way we handle the JWT tokens.
|
||||
|
||||
- Removed: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET`
|
||||
- Added: `APP_SECRET`
|
||||
|
||||
Update your `.env` file to use the new `APP_SECRET` variable instead of the individual tokens secrets (you can use the same secret as before or generate a new random string)
|
||||
*Note*: Keep the `ACCESS_TOKEN_SECRET` variable to keep the backward compatibility with the previous API tokens.
|
||||
|
||||
### Connected Account
|
||||
|
||||
If you are using connected account to synchronize your Google emails and calendars, you will need to activate the [People API](https://developers.google.com/people) on your Google Admin console.
|
||||
|
||||
<ArticleEditContent></ArticleEditContent>
|
||||
@ -24,7 +24,7 @@ Start typing directly or press '/' to add elements like headings, files, or imag
|
||||
|
||||
### Format Content
|
||||
|
||||
You can format your notes right from the editor. Use markdown syntax, press the `/` key or click on the `+` icon on the editor to see the different block options, such as headings, tables, and lists. You can also attach images to your note.
|
||||
You can format your notes right from the editor. Use Markdown syntax, press the `/` key or click on the `+` icon on the editor to see the different block options, such as headings, tables, and lists. You can also attach images to your note.
|
||||
|
||||
Highlight the text to see more formatting options like bold, italics, and alignment options.
|
||||
|
||||
|
||||
@ -76,7 +76,7 @@ Here's how you can do it:
|
||||
|
||||
<img src="/images/user-guide/fields/deactivate-field.png" style={{width:'100%'}}/>
|
||||
|
||||
And, voila! You've deactivated a field. But what does this imply for your CRM operations?
|
||||
And, voilà! You've deactivated a field. But what does this imply for your CRM operations?
|
||||
|
||||
1. **In-App Functionality:** A deactivated field will no longer be functional within the app. You won't be able to assign values to these fields anymore.
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ sectionInfo: Discover how to use standard and custom objects in your workspace.
|
||||
|
||||
## Import data
|
||||
|
||||
You can import People and Companies data into Twenty from other apps using a .csv, .xslx, or .xsl file. In the <b>Companies</b> or <b>People</b> page, click on <b>Options</b> and then on <b>Import</b>.
|
||||
You can import People and Companies data into Twenty from other apps using a .csv, .xlsx, or .xls file. In the <b>Companies</b> or <b>People</b> page, click on <b>Options</b> and then on <b>Import</b>.
|
||||
|
||||
Upload your file, match the columns, check your data and import it.
|
||||
|
||||
|
||||
@ -55,7 +55,7 @@ The newly created view opens automatically.
|
||||
|
||||
#### From Sorting and Filtering
|
||||
|
||||
When you change the `Sorting` and `Filtering` of an existing view, a `Save as new view` button will appear at the right edge of the `View Bar`. This will opens the New View menu mentioned above, allowing you to create a new view out of an existing one.
|
||||
When you change the `Sorting` and `Filtering` of an existing view, a `Save as new view` button will appear at the right edge of the `View Bar`. This will open the New View menu mentioned above, allowing you to create a new view out of an existing one.
|
||||
|
||||
<div style={{padding:'69.01% 0 0 0', position:'relative', margin: '32px 0px 0px'}}>
|
||||
<iframe
|
||||
|
||||
@ -23,7 +23,7 @@ You can customize the display of your records using views, setting different fil
|
||||
A `Workspace` typically represents a company using Twenty. It holds all the records and data that you and your team members add to Twenty.
|
||||
It has a single domain name, which is typically the domain name your company uses for employee email addresses.
|
||||
|
||||
Sure, here is the glossary in the requested markdown format:
|
||||
Sure, here is the glossary in the requested Markdown format:
|
||||
|
||||
## Field
|
||||
A field refers to a specific area where particular data is stored for an entity.
|
||||
|
||||
Reference in New Issue
Block a user