mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
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 <nikhilschacko@gmail.com> * 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 <veeraghanta.sriram@gmail.com> Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
This commit is contained in:
parent
edc5a38973
commit
d7a36f5b04
2
.gitignore
vendored
2
.gitignore
vendored
@ -74,7 +74,7 @@ pnpm-lock.yaml
|
|||||||
pnpm-workspace.yaml
|
pnpm-workspace.yaml
|
||||||
|
|
||||||
.npmrc
|
.npmrc
|
||||||
|
tmp/
|
||||||
|
|
||||||
## packages
|
## packages
|
||||||
dist
|
dist
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
# Deploy the Plane image
|
|
||||||
FROM makeplane/plane
|
|
||||||
|
|
||||||
LABEL maintainer="engineering@plane.so"
|
|
168
deploy/selfhost/docker-compose.yml
Normal file
168
deploy/selfhost/docker-compose.yml
Normal file
@ -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:
|
111
deploy/selfhost/install.sh
Executable file
111
deploy/selfhost/install.sh
Executable file
@ -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
|
63
deploy/selfhost/variables.env
Normal file
63
deploy/selfhost/variables.env
Normal file
@ -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
|
||||||
|
|
@ -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 <team@mailer.plane.so>}
|
|
||||||
- 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 <team@mailer.plane.so>}
|
|
||||||
- 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 <team@mailer.plane.so>}
|
|
||||||
- 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:
|
|
@ -46,7 +46,9 @@ export const RecentPagesList: React.FC<TPagesListProps> = ({ viewType }) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div key={key} className="h-full overflow-hidden pb-9">
|
<div key={key} className="h-full overflow-hidden pb-9">
|
||||||
<h2 className="text-xl font-semibold capitalize mb-2">{replaceUnderscoreIfSnakeCase(key)}</h2>
|
<h2 className="text-xl font-semibold capitalize mb-2">
|
||||||
|
{replaceUnderscoreIfSnakeCase(key)}
|
||||||
|
</h2>
|
||||||
<PagesView pages={pages[key as keyof RecentPagesResponse]} viewType={viewType} />
|
<PagesView pages={pages[key as keyof RecentPagesResponse]} viewType={viewType} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user