From d7a36f5b040a81a1e2f2876257957e7ecc71dc4b Mon Sep 17 00:00:00 2001 From: Manish Gupta <59428681+manishg3@users.noreply.github.com> Date: Mon, 23 Oct 2023 15:56:19 +0530 Subject: [PATCH] dev: Self Hosting simplified with shell script (#2484) * bug:fix recent page hiding last item on scroll #1468 (#2411) * dev: hub compose file update (#2376) (#2444) (#2445) * docker-compose-hub modified for envs * bug:fix recent page hiding last item on scroll #1468 (#2411) * wip * fixed the AMD build on ARM --------- Co-authored-by: Manish Gupta <59428681+manishg3@users.noreply.github.com> Co-authored-by: pablohashescobar * selfhosting fixes * wip * checking selfhost * checking selfhost * selfhost * selfhosting script fix * wip * self hosting fixes * folder structure modified * replica config * self host specific version * fix * fix * fixes * docker compose modifications * fixed install.sh * fixed install.sh * install.sh modified --------- Co-authored-by: Prashant Indurkar <32466796+PrashantIndurkar@users.noreply.github.com> Co-authored-by: sriram veeraghanta Co-authored-by: pablohashescobar --- .gitignore | 2 +- deploy/heroku/Dockerfile | 4 - deploy/selfhost/docker-compose.yml | 168 +++++++++++++ deploy/selfhost/install.sh | 111 +++++++++ deploy/selfhost/variables.env | 63 +++++ docker-compose-hub.yml | 234 ------------------ .../pages/pages-list/recent-pages-list.tsx | 4 +- 7 files changed, 346 insertions(+), 240 deletions(-) delete mode 100644 deploy/heroku/Dockerfile create mode 100644 deploy/selfhost/docker-compose.yml create mode 100755 deploy/selfhost/install.sh create mode 100644 deploy/selfhost/variables.env delete mode 100644 docker-compose-hub.yml diff --git a/.gitignore b/.gitignore index f0c28f9de..8bf25a3f3 100644 --- a/.gitignore +++ b/.gitignore @@ -74,7 +74,7 @@ pnpm-lock.yaml pnpm-workspace.yaml .npmrc - +tmp/ ## packages dist diff --git a/deploy/heroku/Dockerfile b/deploy/heroku/Dockerfile deleted file mode 100644 index edae32788..000000000 --- a/deploy/heroku/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -# Deploy the Plane image -FROM makeplane/plane - -LABEL maintainer="engineering@plane.so" \ No newline at end of file diff --git a/deploy/selfhost/docker-compose.yml b/deploy/selfhost/docker-compose.yml new file mode 100644 index 000000000..33a0f6673 --- /dev/null +++ b/deploy/selfhost/docker-compose.yml @@ -0,0 +1,168 @@ +version: "3.8" + +x-app-env : &app-env + environment: + - NGINX_PORT=${NGINX_PORT:-84} + - DEBUG=${DEBUG:-0} + - DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE:-plane.settings.selfhosted} + - NEXT_PUBLIC_ENABLE_OAUTH=${NEXT_PUBLIC_ENABLE_OAUTH:-0} + - NEXT_PUBLIC_DEPLOY_URL=${NEXT_PUBLIC_DEPLOY_URL:-http://localhost/spaces} + - SENTRY_DSN=${SENTRY_DSN:-""} + - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-""} + - DOCKERIZED=${DOCKERIZED:-1} + #DB SETTINGS + - PGHOST=${PGHOST:-plane-db} + - PGDATABASE=${PGDATABASE:-plane} + - POSTGRES_USER=${POSTGRES_USER:-plane} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-plane} + - POSTGRES_DB=${POSTGRES_DB:-plane} + - PGDATA=${PGDATA:-/var/lib/postgresql/data} + - DATABASE_URL=${DATABASE_URL:-postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${PGHOST}/${PGDATABASE}} + # REDIS SETTINGS + - REDIS_HOST=${REDIS_HOST:-plane-redis} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_URL=${REDIS_URL:-redis://${REDIS_HOST}:6379/} + # EMAIL SETTINGS + - EMAIL_HOST=${EMAIL_HOST:-""} + - EMAIL_HOST_USER=${EMAIL_HOST_USER:-""} + - EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD:-""} + - EMAIL_PORT=${EMAIL_PORT:-587} + - EMAIL_FROM=${EMAIL_FROM:-"Team Plane <team@mailer.plane.so>"} + - EMAIL_USE_TLS=${EMAIL_USE_TLS:-1} + - EMAIL_USE_SSL=${EMAIL_USE_SSL:-0} + - DEFAULT_EMAIL=${DEFAULT_EMAIL:-captain@plane.so} + - DEFAULT_PASSWORD=${DEFAULT_PASSWORD:-password123} + # OPENAI SETTINGS + - OPENAI_API_BASE=${OPENAI_API_BASE:-https://api.openai.com/v1} + - OPENAI_API_KEY=${OPENAI_API_KEY:-"sk-"} + - GPT_ENGINE=${GPT_ENGINE:-"gpt-3.5-turbo"} + # LOGIN/SIGNUP SETTINGS + - ENABLE_SIGNUP=${ENABLE_SIGNUP:-1} + - ENABLE_EMAIL_PASSWORD=${ENABLE_EMAIL_PASSWORD:-1} + - ENABLE_MAGIC_LINK_LOGIN=${ENABLE_MAGIC_LINK_LOGIN:-0} + - SECRET_KEY=${SECRET_KEY:-60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5} + # DATA STORE SETTINGS + - USE_MINIO=${USE_MINIO:-1} + - AWS_REGION=${AWS_REGION:-""} + - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-"access-key"} + - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-"secret-key"} + - AWS_S3_ENDPOINT_URL=${AWS_S3_ENDPOINT_URL:-http://plane-minio:9000} + - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME:-uploads} + - MINIO_ROOT_USER=${MINIO_ROOT_USER:-"access-key"} + - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-"secret-key"} + - BUCKET_NAME=${BUCKET_NAME:-uploads} + - FILE_SIZE_LIMIT=${FILE_SIZE_LIMIT:-5242880} + +services: + web: + <<: *app-env + platform: linux/amd64 + image: makeplane/plane-frontend:${APP_RELEASE:-latest} + restart: unless-stopped + command: /usr/local/bin/start.sh web/server.js web + deploy: + replicas: ${WEB_REPLICAS:-1} + depends_on: + - api + - worker + + space: + <<: *app-env + platform: linux/amd64 + image: makeplane/plane-space:${APP_RELEASE:-latest} + restart: unless-stopped + command: /usr/local/bin/start.sh space/server.js space + deploy: + replicas: ${SPACE_REPLICAS:-1} + depends_on: + - api + - worker + - web + + api: + <<: *app-env + platform: linux/amd64 + image: makeplane/plane-backend:${APP_RELEASE:-latest} + restart: unless-stopped + command: ./bin/takeoff + deploy: + replicas: ${API_REPLICAS:-1} + depends_on: + - plane-db + - plane-redis + + worker: + <<: *app-env + container_name: bgworker + platform: linux/amd64 + image: makeplane/plane-backend:${APP_RELEASE:-latest} + restart: unless-stopped + command: ./bin/worker + depends_on: + - api + - plane-db + - plane-redis + + beat-worker: + <<: *app-env + container_name: beatworker + platform: linux/amd64 + image: makeplane/plane-backend:${APP_RELEASE:-latest} + restart: unless-stopped + command: ./bin/beat + depends_on: + - api + - plane-db + - plane-redis + + plane-db: + <<: *app-env + container_name: plane-db + image: postgres:15.2-alpine + restart: unless-stopped + command: postgres -c 'max_connections=1000' + volumes: + - pgdata:/var/lib/postgresql/data + + plane-redis: + <<: *app-env + container_name: plane-redis + image: redis:6.2.7-alpine + restart: unless-stopped + volumes: + - redisdata:/data + + plane-minio: + <<: *app-env + container_name: plane-minio + image: minio/minio + restart: unless-stopped + command: server /export --console-address ":9090" + volumes: + - uploads:/export + + createbuckets: + <<: *app-env + image: minio/mc + entrypoint: > + /bin/sh -c " /usr/bin/mc config host add plane-minio http://plane-minio:9000 \$AWS_ACCESS_KEY_ID \$AWS_SECRET_ACCESS_KEY; /usr/bin/mc mb plane-minio/\$AWS_S3_BUCKET_NAME; /usr/bin/mc anonymous set download plane-minio/\$AWS_S3_BUCKET_NAME; exit 0; " + depends_on: + - plane-minio + + # Comment this if you already have a reverse proxy running + proxy: + <<: *app-env + container_name: proxy + platform: linux/amd64 + image: makeplane/plane-proxy:${APP_RELEASE:-latest} + ports: + - ${NGINX_PORT}:80 + depends_on: + - web + - api + - space + +volumes: + pgdata: + redisdata: + uploads: diff --git a/deploy/selfhost/install.sh b/deploy/selfhost/install.sh new file mode 100755 index 000000000..f9437a844 --- /dev/null +++ b/deploy/selfhost/install.sh @@ -0,0 +1,111 @@ +#!/bin/bash + +BRANCH=${BRANCH:-master} +SCRIPT_DIR=$PWD +PLANE_INSTALL_DIR=$PWD/plane-app +mkdir -p $PLANE_INSTALL_DIR/archive + +function install(){ + echo + echo "Installing on $PLANE_INSTALL_DIR" + download +} +function download(){ + cd $SCRIPT_DIR + TS=$(date +%s) + if [ -f "$PLANE_INSTALL_DIR/docker-compose.yaml" ] + then + mv $PLANE_INSTALL_DIR/docker-compose.yaml $PLANE_INSTALL_DIR/archive/$TS.docker-compose.yaml + fi + + curl -H 'Cache-Control: no-cache, no-store' -s -o $PLANE_INSTALL_DIR/docker-compose.yaml https://raw.githubusercontent.com/makeplane/plane/$BRANCH/deploy/selfhost/docker-compose.yml?$(date +%s) + curl -H 'Cache-Control: no-cache, no-store' -s -o $PLANE_INSTALL_DIR/variables-upgrade.env https://raw.githubusercontent.com/makeplane/plane/$BRANCH/deploy/selfhost/variables.env?$(date +%s) + + if [ -f "$PLANE_INSTALL_DIR/.env" ]; + then + cp $PLANE_INSTALL_DIR/.env $PLANE_INSTALL_DIR/archive/$TS.env + else + mv $PLANE_INSTALL_DIR/variables-upgrade.env $PLANE_INSTALL_DIR/.env + fi + + + echo "" + echo "Latest version is now available for you to use" + echo "" + echo "In case of Upgrade, your new setting file is availabe as 'variables-upgrade.env'. Please compare and set the required values in '.env 'file." + echo "" + +} +function startServices(){ + cd $PLANE_INSTALL_DIR + docker compose up -d + cd $SCRIPT_DIR +} +function stopServices(){ + cd $PLANE_INSTALL_DIR + docker compose down + cd $SCRIPT_DIR +} +function restartServices(){ + cd $PLANE_INSTALL_DIR + docker compose restart + cd $SCRIPT_DIR +} +function upgrade(){ + echo "***** STOPPING SERVICES ****" + stopServices + + echo + echo "***** DOWNLOADING LATEST VERSION ****" + download + + echo "***** PLEASE VALIDATE AND START SERVICES ****" + +} +function askForAction(){ + echo + echo "Select a Action you want to perform:" + echo " 1) Install" + echo " 2) Start" + echo " 3) Stop" + echo " 4) Restart" + echo " 5) Upgrade" + echo " 6) Exit" + echo + read -p "Action [2]: " ACTION + until [[ -z "$ACTION" || "$ACTION" =~ ^[1-6]$ ]]; do + echo "$ACTION: invalid selection." + read -p "Action [2]: " ACTION + done + echo + + + if [ "$ACTION" == "1" ] + then + install + askForAction + elif [ "$ACTION" == "2" ] || [ "$ACTION" == "" ] + then + startServices + askForAction + elif [ "$ACTION" == "3" ] + then + stopServices + askForAction + elif [ "$ACTION" == "4" ] + then + restartServices + askForAction + elif [ "$ACTION" == "5" ] + then + upgrade + askForAction + elif [ "$ACTION" == "6" ] + then + exit 0 + else + echo "INVALID ACTION SUPPLIED" + fi +} + +askForAction diff --git a/deploy/selfhost/variables.env b/deploy/selfhost/variables.env new file mode 100644 index 000000000..1e507a54b --- /dev/null +++ b/deploy/selfhost/variables.env @@ -0,0 +1,63 @@ +APP_RELEASE=latest + +WEB_REPLICAS=1 +SPACE_REPLICAS=1 +API_REPLICAS=1 + +NGINX_PORT=80 +DEBUG=0 +DJANGO_SETTINGS_MODULE=plane.settings.selfhosted +NEXT_PUBLIC_ENABLE_OAUTH=0 +NEXT_PUBLIC_DEPLOY_URL=http://localhost/spaces +SENTRY_DSN="" +GITHUB_CLIENT_SECRET="" +DOCKERIZED=1 + +#DB SETTINGS +PGHOST=plane-db +PGDATABASE=plane +POSTGRES_USER=plane +POSTGRES_PASSWORD=plane +POSTGRES_DB=plane +PGDATA=/var/lib/postgresql/data +DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${PGHOST}/${PGDATABASE} + +# REDIS SETTINGS +REDIS_HOST=plane-redis +REDIS_PORT=6379 +REDIS_URL=redis://${REDIS_HOST}:6379/ + +# EMAIL SETTINGS +EMAIL_HOST="" +EMAIL_HOST_USER="" +EMAIL_HOST_PASSWORD="" +EMAIL_PORT=587 +EMAIL_FROM="Team Plane <team@mailer.plane.so>" +EMAIL_USE_TLS=1 +EMAIL_USE_SSL=0 +DEFAULT_EMAIL=captain@plane.so +DEFAULT_PASSWORD=password123 + +# OPENAI SETTINGS +OPENAI_API_BASE=https://api.openai.com/v1 +OPENAI_API_KEY="sk-" +GPT_ENGINE="gpt-3.5-turbo" + +# LOGIN/SIGNUP SETTINGS +ENABLE_SIGNUP=1 +ENABLE_EMAIL_PASSWORD=1 +ENABLE_MAGIC_LINK_LOGIN=0 +SECRET_KEY=60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 + +# DATA STORE SETTINGS +USE_MINIO=1 +AWS_REGION="" +AWS_ACCESS_KEY_ID="access-key" +AWS_SECRET_ACCESS_KEY="secret-key" +AWS_S3_ENDPOINT_URL=http://plane-minio:9000 +AWS_S3_BUCKET_NAME=uploads +MINIO_ROOT_USER="access-key" +MINIO_ROOT_PASSWORD="secret-key" +BUCKET_NAME=uploads +FILE_SIZE_LIMIT=5242880 + diff --git a/docker-compose-hub.yml b/docker-compose-hub.yml deleted file mode 100644 index 28f8c47df..000000000 --- a/docker-compose-hub.yml +++ /dev/null @@ -1,234 +0,0 @@ -version: "3.8" - -services: - web: - container_name: web - platform: linux/amd64 - image: makeplane/plane-frontend:latest - restart: always - command: /usr/local/bin/start.sh web/server.js web - environment: - - NEXT_PUBLIC_ENABLE_OAUTH=${NEXT_PUBLIC_ENABLE_OAUTH:-0} - - NEXT_PUBLIC_DEPLOY_URL=${NEXT_PUBLIC_DEPLOY_URL:-http://localhost/spaces} - depends_on: - - api - - worker - - space: - container_name: space - platform: linux/amd64 - image: makeplane/plane-space:latest - restart: always - command: /usr/local/bin/start.sh space/server.js space - environment: - - NEXT_PUBLIC_ENABLE_OAUTH=${NEXT_PUBLIC_ENABLE_OAUTH:-0} - depends_on: - - api - - worker - - web - - api: - container_name: api - platform: linux/amd64 - image: makeplane/plane-backend:latest - restart: always - command: ./bin/takeoff - environment: - - DEBUG=${DEBUG:-0} - - DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE:-plane.settings.selfhosted} - - SENTRY_DSN=${SENTRY_DSN:-""} - - PGUSER=${PGUSER:-plane} - - PGPASSWORD=${PGPASSWORD:-plane} - - PGHOST=${PGHOST:-plane-db} - - PGDATABASE=${PGDATABASE:-plane} - - DATABASE_URL=${DATABASE_URL:-postgresql://${PGUSER}:${PGPASSWORD}@${PGHOST}/${PGDATABASE}} - - REDIS_HOST=${REDIS_HOST:-plane-redis} - - REDIS_PORT=${REDIS_PORT:-6379} - - REDIS_URL=${REDIS_URL:-redis://${REDIS_HOST}:6379/} - - EMAIL_HOST=${EMAIL_HOST:-""} - - EMAIL_HOST_USER=${EMAIL_HOST_USER:-""} - - EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD:-""} - - EMAIL_PORT=${EMAIL_PORT:-587} - - EMAIL_FROM=${EMAIL_FROM:-Team Plane } - - EMAIL_USE_TLS=${EMAIL_USE_TLS:-1} - - EMAIL_USE_SSL=${EMAIL_USE_SSL:-0} - - AWS_REGION=${AWS_REGION:-""} - - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-access-key} - - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-secret-key} - - AWS_S3_ENDPOINT_URL=${AWS_S3_ENDPOINT_URL:-http://plane-minio:9000} - - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME:-uploads} - - FILE_SIZE_LIMIT=${FILE_SIZE_LIMIT:-5242880} - - OPENAI_API_BASE=${OPENAI_API_BASE:-https://api.openai.com/v1} - - OPENAI_API_KEY=${OPENAI_API_KEY:-sk-} - - GPT_ENGINE=${GPT_ENGINE:-gpt-3.5-turbo} - - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-""} - - DOCKERIZED=${DOCKERIZED:-1} - - USE_MINIO=${USE_MINIO:-1} - - NGINX_PORT=${NGINX_PORT:-80} - - DEFAULT_EMAIL=${DEFAULT_EMAIL:-captain@plane.so} - - DEFAULT_PASSWORD=${DEFAULT_PASSWORD:-password123} - - ENABLE_SIGNUP=${ENABLE_SIGNUP:-1} - - ENABLE_EMAIL_PASSWORD=${ENABLE_EMAIL_PASSWORD:-1} - - ENABLE_MAGIC_LINK_LOGIN=${ENABLE_MAGIC_LINK_LOGIN:-0} - - SECRET_KEY=${SECRET_KEY:-60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5} - depends_on: - - plane-db - - plane-redis - - worker: - container_name: bgworker - platform: linux/amd64 - image: makeplane/plane-backend:latest - restart: always - command: ./bin/worker - environment: - - DEBUG=${DEBUG:-0} - - DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE:-plane.settings.selfhosted} - - SENTRY_DSN=${SENTRY_DSN:-""} - - PGUSER=${PGUSER:-plane} - - PGPASSWORD=${PGPASSWORD:-plane} - - PGHOST=${PGHOST:-plane-db} - - PGDATABASE=${PGDATABASE:-plane} - - DATABASE_URL=${DATABASE_URL:-postgresql://${PGUSER}:${PGPASSWORD}@${PGHOST}/${PGDATABASE}} - - REDIS_HOST=${REDIS_HOST:-plane-redis} - - REDIS_PORT=${REDIS_PORT:-6379} - - REDIS_URL=${REDIS_URL:-redis://${REDIS_HOST}:6379/} - - EMAIL_HOST=${EMAIL_HOST:-""} - - EMAIL_HOST_USER=${EMAIL_HOST_USER:-""} - - EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD:-""} - - EMAIL_PORT=${EMAIL_PORT:-587} - - EMAIL_FROM=${EMAIL_FROM:-Team Plane } - - EMAIL_USE_TLS=${EMAIL_USE_TLS:-1} - - EMAIL_USE_SSL=${EMAIL_USE_SSL:-0} - - AWS_REGION=${AWS_REGION:-""} - - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-access-key} - - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-secret-key} - - AWS_S3_ENDPOINT_URL=${AWS_S3_ENDPOINT_URL:-http://plane-minio:9000} - - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME:-uploads} - - FILE_SIZE_LIMIT=${FILE_SIZE_LIMIT:-5242880} - - OPENAI_API_BASE=${OPENAI_API_BASE:-https://api.openai.com/v1} - - OPENAI_API_KEY=${OPENAI_API_KEY:-sk-} - - GPT_ENGINE=${GPT_ENGINE:-gpt-3.5-turbo} - - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-""} - - DOCKERIZED=${DOCKERIZED:-1} - - USE_MINIO=${USE_MINIO:-1} - - NGINX_PORT=${NGINX_PORT:-80} - - DEFAULT_EMAIL=${DEFAULT_EMAIL:-captain@plane.so} - - DEFAULT_PASSWORD=${DEFAULT_PASSWORD:-password123} - - ENABLE_SIGNUP=${ENABLE_SIGNUP:-1} - - SECRET_KEY=${SECRET_KEY:-60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5} - depends_on: - - api - - plane-db - - plane-redis - - beat-worker: - container_name: beatworker - platform: linux/amd64 - image: makeplane/plane-backend:latest - restart: always - command: ./bin/beat - environment: - - DEBUG=${DEBUG:-0} - - DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE:-plane.settings.selfhosted} - - SENTRY_DSN=${SENTRY_DSN:-""} - - PGUSER=${PGUSER:-plane} - - PGPASSWORD=${PGPASSWORD:-plane} - - PGHOST=${PGHOST:-plane-db} - - PGDATABASE=${PGDATABASE:-plane} - - DATABASE_URL=${DATABASE_URL:-postgresql://${PGUSER}:${PGPASSWORD}@${PGHOST}/${PGDATABASE}} - - REDIS_HOST=${REDIS_HOST:-plane-redis} - - REDIS_PORT=${REDIS_PORT:-6379} - - REDIS_URL=${REDIS_URL:-redis://${REDIS_HOST}:6379/} - - EMAIL_HOST=${EMAIL_HOST:-""} - - EMAIL_HOST_USER=${EMAIL_HOST_USER:-""} - - EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD:-""} - - EMAIL_PORT=${EMAIL_PORT:-587} - - EMAIL_FROM=${EMAIL_FROM:-Team Plane } - - EMAIL_USE_TLS=${EMAIL_USE_TLS:-1} - - EMAIL_USE_SSL=${EMAIL_USE_SSL:-0} - - AWS_REGION=${AWS_REGION:-""} - - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-access-key} - - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-secret-key} - - AWS_S3_ENDPOINT_URL=${AWS_S3_ENDPOINT_URL:-http://plane-minio:9000} - - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME:-uploads} - - FILE_SIZE_LIMIT=${FILE_SIZE_LIMIT:-5242880} - - OPENAI_API_BASE=${OPENAI_API_BASE:-https://api.openai.com/v1} - - OPENAI_API_KEY=${OPENAI_API_KEY:-sk-} - - GPT_ENGINE=${GPT_ENGINE:-gpt-3.5-turbo} - - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-""} - - DOCKERIZED=${DOCKERIZED:-1} - - USE_MINIO=${USE_MINIO:-1} - - NGINX_PORT=${NGINX_PORT:-80} - - DEFAULT_EMAIL=${DEFAULT_EMAIL:-captain@plane.so} - - DEFAULT_PASSWORD=${DEFAULT_PASSWORD:-password123} - - ENABLE_SIGNUP=${ENABLE_SIGNUP:-1} - - SECRET_KEY=${SECRET_KEY:-60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5} - depends_on: - - api - - plane-db - - plane-redis - - - plane-db: - container_name: plane-db - image: postgres:15.2-alpine - restart: always - command: postgres -c 'max_connections=1000' - volumes: - - pgdata:/var/lib/postgresql/data - environment: - - POSTGRES_USER=${POSTGRES_USER:-plane} - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-plane} - - POSTGRES_DB=${POSTGRES_DB:-plane} - - PGDATA=${PGDATA:-/var/lib/postgresql/data} - - plane-redis: - container_name: plane-redis - image: redis:6.2.7-alpine - restart: always - volumes: - - redisdata:/data - - plane-minio: - container_name: plane-minio - image: minio/minio - restart: always - command: server /export --console-address ":9090" - volumes: - - uploads:/export - environment: - - MINIO_ROOT_USER=${MINIO_ROOT_USER:-access-key} - - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-secret-key} - - createbuckets: - image: minio/mc - entrypoint: > - /bin/sh -c " /usr/bin/mc config host add plane-minio http://plane-minio:9000 \$AWS_ACCESS_KEY_ID \$AWS_SECRET_ACCESS_KEY; /usr/bin/mc mb plane-minio/\$AWS_S3_BUCKET_NAME; /usr/bin/mc anonymous set download plane-minio/\$AWS_S3_BUCKET_NAME; exit 0; " - environment: - - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-access-key} - - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-secret-key} - - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME:-uploads} - depends_on: - - plane-minio - - # Comment this if you already have a reverse proxy running - proxy: - container_name: proxy - platform: linux/amd64 - image: makeplane/plane-proxy:latest - ports: - - ${NGINX_PORT}:80 - environment: - - NGINX_PORT=${NGINX_PORT:-80} - - FILE_SIZE_LIMIT=${FILE_SIZE_LIMIT:-5242880} - - BUCKET_NAME=${AWS_S3_BUCKET_NAME:-uploads} - depends_on: - - web - - api - - space - -volumes: - pgdata: - redisdata: - uploads: diff --git a/web/components/pages/pages-list/recent-pages-list.tsx b/web/components/pages/pages-list/recent-pages-list.tsx index 09225fc04..e4bc46c66 100644 --- a/web/components/pages/pages-list/recent-pages-list.tsx +++ b/web/components/pages/pages-list/recent-pages-list.tsx @@ -46,7 +46,9 @@ export const RecentPagesList: React.FC = ({ viewType }) => { return (
-

{replaceUnderscoreIfSnakeCase(key)}

+

+ {replaceUnderscoreIfSnakeCase(key)} +

);