From 25cb909e1759fde82f873e09d92ab096e87eba41 Mon Sep 17 00:00:00 2001 From: John Sessford <8752479+john-s4d@users.noreply.github.com> Date: Fri, 24 Jan 2025 10:13:28 -0500 Subject: [PATCH] Improve Docker-Compose Install Experience (#9781) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR updates the docker-compose installation documentation and env sample to improve the setup experience. - Updates the URLs for raw files to reference main branch, which is likely where new users will be pulling from initially. This seems to be the most straightforward option; assume that advanced users who want to retrieve it from a particular tag will know to change the URL for their scenario. - Fixes an improperly stated curl command. - Adds a note that the PGPASSWORD_SUPERUSER should be URL-safe. This is required since the value is later concat into a PG_DATABASE_URL as a URL, and expected to be in proper URL format. Touches on #8597. --------- Co-authored-by: Félix Malfait Co-authored-by: Félix Malfait --- .github/workflows/ci-test-docker-compose.yaml | 2 +- packages/twenty-docker/.env.example | 5 +++-- packages/twenty-docker/docker-compose.yml | 10 +++++----- packages/twenty-docker/scripts/install.sh | 9 ++++----- .../content/developers/self-hosting/docker-compose.mdx | 6 +++--- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci-test-docker-compose.yaml b/.github/workflows/ci-test-docker-compose.yaml index 21a8db386..f530cb434 100644 --- a/.github/workflows/ci-test-docker-compose.yaml +++ b/.github/workflows/ci-test-docker-compose.yaml @@ -39,7 +39,7 @@ jobs: echo "Generating secrets..." echo "# === Randomly generated secrets ===" >>.env echo "APP_SECRET=$(openssl rand -base64 32)" >>.env - echo "PGPASSWORD_SUPERUSER=$(openssl rand -base64 32)" >>.env + echo "PGPASSWORD_SUPERUSER=$(openssl rand -hex 16)" >>.env echo "Docker compose up..." docker compose up -d || { diff --git a/packages/twenty-docker/.env.example b/packages/twenty-docker/.env.example index 591e4c91b..344c20c32 100644 --- a/packages/twenty-docker/.env.example +++ b/packages/twenty-docker/.env.example @@ -1,8 +1,9 @@ TAG=latest -#PGUSER_SUPERUSER=postgres -#PGPASSWORD_SUPERUSER=replace_me_with_a_strong_password +#PG_DATABASE_USER=postgres +#PG_DATABASE_PASSWORD=replace_me_with_a_strong_password_without_special_characters #PG_DATABASE_HOST=db +#PG_DATABASE_PORT=5432 #REDIS_URL=redis://redis:6379 SERVER_URL=http://localhost:3000 diff --git a/packages/twenty-docker/docker-compose.yml b/packages/twenty-docker/docker-compose.yml index df3293cbf..8222f9b03 100644 --- a/packages/twenty-docker/docker-compose.yml +++ b/packages/twenty-docker/docker-compose.yml @@ -21,7 +21,7 @@ services: - "3000:3000" environment: PORT: 3000 - PG_DATABASE_URL: postgres://${PGUSER_SUPERUSER:-postgres}:${PGPASSWORD_SUPERUSER:-postgres}@${PG_DATABASE_HOST:-db:5432}/default + PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/default SERVER_URL: ${SERVER_URL} REDIS_URL: ${REDIS_URL:-redis://redis:6379} @@ -47,7 +47,7 @@ services: image: twentycrm/twenty:${TAG:-latest} command: ["yarn", "worker:prod"] environment: - PG_DATABASE_URL: postgres://${PGUSER_SUPERUSER:-postgres}:${PGPASSWORD_SUPERUSER:-postgres}@${PG_DATABASE_HOST:-db:5432}/default + PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/default SERVER_URL: ${SERVER_URL} REDIS_URL: ${REDIS_URL:-redis://redis:6379} DISABLE_DB_MIGRATIONS: "true" # it already runs on the server @@ -70,12 +70,12 @@ services: volumes: - db-data:/home/postgres/pgdata environment: - PGUSER_SUPERUSER: ${PGUSER_SUPERUSER:-postgres} - PGPASSWORD_SUPERUSER: ${PGPASSWORD_SUPERUSER:-postgres} + PGUSER_SUPERUSER: ${PG_DATABASE_USER:-postgres} + PGPASSWORD_SUPERUSER: ${PG_DATABASE_PASSWORD:-postgres} ALLOW_NOSSL: "true" SPILO_PROVIDER: "local" healthcheck: - test: pg_isready -U ${PGUSER_SUPERUSER:-postgres} -h localhost -d postgres + test: pg_isready -U ${PG_DATABASE_USER:-postgres} -h localhost -d postgres interval: 5s timeout: 5s retries: 10 diff --git a/packages/twenty-docker/scripts/install.sh b/packages/twenty-docker/scripts/install.sh index 5d560d6c7..320696d13 100755 --- a/packages/twenty-docker/scripts/install.sh +++ b/packages/twenty-docker/scripts/install.sh @@ -90,12 +90,11 @@ else fi # Generate random strings for secrets -echo "# === Randomly generated secret ===" >>.env -echo "APP_SECRET=$(openssl rand -base64 32)" >>.env +echo "# === Randomly generated secret ===" >> .env +echo "APP_SECRET=$(openssl rand -base64 32)" >> .env -# Issue with Postgres spilo? -#echo "" >>.env -#echo "PGPASSWORD_SUPERUSER=$(openssl rand -hex 16)" >>.env +echo "" >> .env +echo "PG_DATABASE_PASSWORD=$(openssl rand -hex 16)" >> .env echo -e "\t• .env configuration completed" diff --git a/packages/twenty-website/src/content/developers/self-hosting/docker-compose.mdx b/packages/twenty-website/src/content/developers/self-hosting/docker-compose.mdx index fa2f2bc63..6191aa820 100644 --- a/packages/twenty-website/src/content/developers/self-hosting/docker-compose.mdx +++ b/packages/twenty-website/src/content/developers/self-hosting/docker-compose.mdx @@ -44,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/refs/tags/v0.35.0/packages/twenty-docker/.env.example + curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example ``` 2. **Generate Secret Tokens** @@ -65,7 +65,7 @@ Follow these steps for a manual setup. 4. **Set the Postgres Password** - Update the `PGPASSWORD_SUPERUSER` value in the .env file with a strong password. + Update the `PGPASSWORD_SUPERUSER` value in the .env file with a strong password without special characters. ```ini PGPASSWORD_SUPERUSER=my_strong_password @@ -76,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/refs/tags/v0.35.0/packages/twenty-docker/docker-compose.yml +curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml ``` ### Step 3: Launch the Application