forked from github/plane
Merge branch 'dev/settings_configuration' of github.com:makeplane/plane into feat/self_hosted_instance
This commit is contained in:
commit
29798fa08a
15
.env.example
15
.env.example
@ -21,20 +21,15 @@ AWS_S3_BUCKET_NAME="uploads"
|
|||||||
FILE_SIZE_LIMIT=5242880
|
FILE_SIZE_LIMIT=5242880
|
||||||
|
|
||||||
# GPT settings
|
# GPT settings
|
||||||
OPENAI_API_BASE="https://api.openai.com/v1" # change if using a custom endpoint
|
OPENAI_API_BASE="https://api.openai.com/v1" # deprecated
|
||||||
OPENAI_API_KEY="sk-" # add your openai key here
|
OPENAI_API_KEY="sk-" # deprecated
|
||||||
GPT_ENGINE="gpt-3.5-turbo" # use "gpt-4" if you have access
|
GPT_ENGINE="gpt-3.5-turbo" # deprecated
|
||||||
|
|
||||||
# Settings related to Docker
|
# Settings related to Docker
|
||||||
DOCKERIZED=1
|
DOCKERIZED=1 # deprecated
|
||||||
|
|
||||||
# set to 1 If using the pre-configured minio setup
|
# set to 1 If using the pre-configured minio setup
|
||||||
USE_MINIO=1
|
USE_MINIO=1
|
||||||
|
|
||||||
# Nginx Configuration
|
# Nginx Configuration
|
||||||
NGINX_PORT=80
|
NGINX_PORT=80
|
||||||
|
|
||||||
# Set it to 0, to disable it
|
|
||||||
ENABLE_WEBHOOK=1
|
|
||||||
|
|
||||||
# Set it to 0, to disable it
|
|
||||||
ENABLE_API=1
|
|
@ -44,7 +44,6 @@ ENV PYTHONDONTWRITEBYTECODE 1
|
|||||||
ENV PYTHONUNBUFFERED 1
|
ENV PYTHONUNBUFFERED 1
|
||||||
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
|
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
|
||||||
ENV DJANGO_SETTINGS_MODULE plane.settings.production
|
ENV DJANGO_SETTINGS_MODULE plane.settings.production
|
||||||
ENV DOCKERIZED 1
|
|
||||||
|
|
||||||
WORKDIR /code
|
WORKDIR /code
|
||||||
|
|
||||||
|
19
ENV_SETUP.md
19
ENV_SETUP.md
@ -31,12 +31,10 @@ AWS_S3_BUCKET_NAME="uploads"
|
|||||||
FILE_SIZE_LIMIT=5242880
|
FILE_SIZE_LIMIT=5242880
|
||||||
|
|
||||||
# GPT settings
|
# GPT settings
|
||||||
OPENAI_API_BASE="https://api.openai.com/v1" # change if using a custom endpoint
|
OPENAI_API_BASE="https://api.openai.com/v1" # deprecated
|
||||||
OPENAI_API_KEY="sk-" # add your openai key here
|
OPENAI_API_KEY="sk-" # deprecated
|
||||||
GPT_ENGINE="gpt-3.5-turbo" # use "gpt-4" if you have access
|
GPT_ENGINE="gpt-3.5-turbo" # deprecated
|
||||||
|
|
||||||
# Settings related to Docker
|
|
||||||
DOCKERIZED=1
|
|
||||||
# set to 1 If using the pre-configured minio setup
|
# set to 1 If using the pre-configured minio setup
|
||||||
USE_MINIO=1
|
USE_MINIO=1
|
||||||
|
|
||||||
@ -115,15 +113,16 @@ AWS_S3_BUCKET_NAME="uploads"
|
|||||||
FILE_SIZE_LIMIT=5242880
|
FILE_SIZE_LIMIT=5242880
|
||||||
|
|
||||||
# GPT settings
|
# GPT settings
|
||||||
OPENAI_API_BASE="https://api.openai.com/v1" # change if using a custom endpoint
|
OPENAI_API_BASE="https://api.openai.com/v1" # deprecated
|
||||||
OPENAI_API_KEY="sk-" # add your openai key here
|
OPENAI_API_KEY="sk-" # deprecated
|
||||||
GPT_ENGINE="gpt-3.5-turbo" # use "gpt-4" if you have access
|
GPT_ENGINE="gpt-3.5-turbo" # deprecated
|
||||||
|
|
||||||
|
# Settings related to Docker
|
||||||
|
DOCKERIZED=1 # Deprecated
|
||||||
|
|
||||||
# Github
|
# Github
|
||||||
GITHUB_CLIENT_SECRET="" # For fetching release notes
|
GITHUB_CLIENT_SECRET="" # For fetching release notes
|
||||||
|
|
||||||
# Settings related to Docker
|
|
||||||
DOCKERIZED=1
|
|
||||||
# set to 1 If using the pre-configured minio setup
|
# set to 1 If using the pre-configured minio setup
|
||||||
USE_MINIO=1
|
USE_MINIO=1
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Backend
|
# Backend
|
||||||
# Debug value for api server use it as 0 for production use
|
# Debug value for api server use it as 0 for production use
|
||||||
DEBUG=0
|
DEBUG=0
|
||||||
CORS_ALLOWED_ORIGINS="http://localhost"
|
CORS_ALLOWED_ORIGINS=""
|
||||||
|
|
||||||
# Error logs
|
# Error logs
|
||||||
SENTRY_DSN=""
|
SENTRY_DSN=""
|
||||||
@ -29,9 +29,9 @@ AWS_S3_BUCKET_NAME="uploads"
|
|||||||
FILE_SIZE_LIMIT=5242880
|
FILE_SIZE_LIMIT=5242880
|
||||||
|
|
||||||
# GPT settings
|
# GPT settings
|
||||||
OPENAI_API_BASE="https://api.openai.com/v1" # change if using a custom endpoint
|
OPENAI_API_BASE="https://api.openai.com/v1" # deprecated
|
||||||
OPENAI_API_KEY="sk-" # add your openai key here
|
OPENAI_API_KEY="sk-" # deprecated
|
||||||
GPT_ENGINE="gpt-3.5-turbo" # use "gpt-4" if you have access
|
GPT_ENGINE="gpt-3.5-turbo" # deprecated
|
||||||
|
|
||||||
# Github
|
# Github
|
||||||
GITHUB_CLIENT_SECRET="" # For fetching release notes
|
GITHUB_CLIENT_SECRET="" # For fetching release notes
|
||||||
@ -58,12 +58,6 @@ ENABLE_MAGIC_LINK_LOGIN="0"
|
|||||||
# Email redirections and minio domain settings
|
# Email redirections and minio domain settings
|
||||||
WEB_URL="http://localhost"
|
WEB_URL="http://localhost"
|
||||||
|
|
||||||
# Set it to 0, to disable it
|
|
||||||
ENABLE_WEBHOOK=1
|
|
||||||
|
|
||||||
# Set it to 0, to disable it
|
|
||||||
ENABLE_API=1
|
|
||||||
|
|
||||||
# Gunicorn Workers
|
# Gunicorn Workers
|
||||||
GUNICORN_WORKERS=2
|
GUNICORN_WORKERS=2
|
||||||
|
|
||||||
|
@ -49,10 +49,6 @@ urlpatterns = [
|
|||||||
*user_urls,
|
*user_urls,
|
||||||
*view_urls,
|
*view_urls,
|
||||||
*workspace_urls,
|
*workspace_urls,
|
||||||
|
*api_urls,
|
||||||
|
*webhook_urls,
|
||||||
]
|
]
|
||||||
|
|
||||||
if settings.ENABLE_WEBHOOK:
|
|
||||||
urlpatterns += webhook_urls
|
|
||||||
|
|
||||||
if settings.ENABLE_API:
|
|
||||||
urlpatterns += api_urls
|
|
||||||
|
@ -51,7 +51,6 @@ class WebhookMixin:
|
|||||||
self.webhook_event
|
self.webhook_event
|
||||||
and self.request.method in ["POST", "PATCH", "DELETE"]
|
and self.request.method in ["POST", "PATCH", "DELETE"]
|
||||||
and response.status_code in [200, 201, 204]
|
and response.status_code in [200, 201, 204]
|
||||||
and settings.ENABLE_WEBHOOK
|
|
||||||
):
|
):
|
||||||
send_webhook.delay(
|
send_webhook.delay(
|
||||||
event=self.webhook_event,
|
event=self.webhook_event,
|
||||||
|
@ -427,7 +427,7 @@ class ProjectInvitationsViewset(BaseViewSet):
|
|||||||
project_invitations = ProjectMemberInvite.objects.bulk_create(
|
project_invitations = ProjectMemberInvite.objects.bulk_create(
|
||||||
project_invitations, batch_size=10, ignore_conflicts=True
|
project_invitations, batch_size=10, ignore_conflicts=True
|
||||||
)
|
)
|
||||||
current_site = f"{request.scheme}://{request.get_host()}",
|
current_site = request.META.get('HTTP_ORIGIN')
|
||||||
|
|
||||||
# Send invitations
|
# Send invitations
|
||||||
for invitation in project_invitations:
|
for invitation in project_invitations:
|
||||||
|
@ -319,7 +319,7 @@ class WorkspaceInvitationsViewset(BaseViewSet):
|
|||||||
workspace_invitations, batch_size=10, ignore_conflicts=True
|
workspace_invitations, batch_size=10, ignore_conflicts=True
|
||||||
)
|
)
|
||||||
|
|
||||||
current_site = f"{request.scheme}://{request.get_host()}",
|
current_site = request.META.get('HTTP_ORIGIN')
|
||||||
|
|
||||||
# Send invitations
|
# Send invitations
|
||||||
for invitation in workspace_invitations:
|
for invitation in workspace_invitations:
|
||||||
|
@ -27,12 +27,6 @@ DEBUG = False
|
|||||||
# Allowed Hosts
|
# Allowed Hosts
|
||||||
ALLOWED_HOSTS = ["*"]
|
ALLOWED_HOSTS = ["*"]
|
||||||
|
|
||||||
# To access webhook
|
|
||||||
ENABLE_WEBHOOK = os.environ.get("ENABLE_WEBHOOK", "1") == "1"
|
|
||||||
|
|
||||||
# To access plane api through api tokens
|
|
||||||
ENABLE_API = os.environ.get("ENABLE_API", "1") == "1"
|
|
||||||
|
|
||||||
# Redirect if / is not present
|
# Redirect if / is not present
|
||||||
APPEND_SLASH = True
|
APPEND_SLASH = True
|
||||||
|
|
||||||
@ -120,7 +114,13 @@ CSRF_COOKIE_SECURE = True
|
|||||||
|
|
||||||
# CORS Settings
|
# CORS Settings
|
||||||
CORS_ALLOW_CREDENTIALS = True
|
CORS_ALLOW_CREDENTIALS = True
|
||||||
CORS_ALLOWED_ORIGINS = os.environ.get("CORS_ALLOWED_ORIGINS", "").split(",")
|
cors_origins_raw = os.environ.get("CORS_ALLOWED_ORIGINS", "")
|
||||||
|
# filter out empty strings
|
||||||
|
cors_allowed_origins = [origin.strip() for origin in cors_origins_raw.split(",") if origin.strip()]
|
||||||
|
if cors_allowed_origins:
|
||||||
|
CORS_ALLOWED_ORIGINS = cors_allowed_origins
|
||||||
|
else:
|
||||||
|
CORS_ALLOW_ALL_ORIGINS = True
|
||||||
|
|
||||||
# Application Settings
|
# Application Settings
|
||||||
WSGI_APPLICATION = "plane.wsgi.application"
|
WSGI_APPLICATION = "plane.wsgi.application"
|
||||||
@ -221,7 +221,9 @@ STORAGES = {
|
|||||||
"BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage",
|
"BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
STORAGES["default"] = {"BACKEND": "storages.backends.s3boto3.S3Boto3Storage"}
|
STORAGES["default"] = {
|
||||||
|
"BACKEND": "storages.backends.s3boto3.S3Boto3Storage",
|
||||||
|
}
|
||||||
AWS_ACCESS_KEY_ID = os.environ.get("AWS_ACCESS_KEY_ID", "access-key")
|
AWS_ACCESS_KEY_ID = os.environ.get("AWS_ACCESS_KEY_ID", "access-key")
|
||||||
AWS_SECRET_ACCESS_KEY = os.environ.get("AWS_SECRET_ACCESS_KEY", "secret-key")
|
AWS_SECRET_ACCESS_KEY = os.environ.get("AWS_SECRET_ACCESS_KEY", "secret-key")
|
||||||
AWS_STORAGE_BUCKET_NAME = os.environ.get("AWS_S3_BUCKET_NAME", "uploads")
|
AWS_STORAGE_BUCKET_NAME = os.environ.get("AWS_S3_BUCKET_NAME", "uploads")
|
||||||
@ -319,16 +321,5 @@ GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", False)
|
|||||||
ANALYTICS_SECRET_KEY = os.environ.get("ANALYTICS_SECRET_KEY", False)
|
ANALYTICS_SECRET_KEY = os.environ.get("ANALYTICS_SECRET_KEY", False)
|
||||||
ANALYTICS_BASE_API = os.environ.get("ANALYTICS_BASE_API", False)
|
ANALYTICS_BASE_API = os.environ.get("ANALYTICS_BASE_API", False)
|
||||||
|
|
||||||
# Open AI Settings
|
# Use Minio settings
|
||||||
OPENAI_API_BASE = os.environ.get("OPENAI_API_BASE", "https://api.openai.com/v1")
|
|
||||||
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", False)
|
|
||||||
GPT_ENGINE = os.environ.get("GPT_ENGINE", "gpt-3.5-turbo")
|
|
||||||
|
|
||||||
# Scout Settings
|
|
||||||
SCOUT_MONITOR = os.environ.get("SCOUT_MONITOR", False)
|
|
||||||
SCOUT_KEY = os.environ.get("SCOUT_KEY", "")
|
|
||||||
SCOUT_NAME = "Plane"
|
|
||||||
|
|
||||||
# Set the variable true if running in docker environment
|
|
||||||
DOCKERIZED = int(os.environ.get("DOCKERIZED", 1)) == 1
|
|
||||||
USE_MINIO = int(os.environ.get("USE_MINIO", 0)) == 1
|
USE_MINIO = int(os.environ.get("USE_MINIO", 0)) == 1
|
||||||
|
@ -3,10 +3,6 @@ from .common import * # noqa
|
|||||||
|
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
|
||||||
ALLOWED_HOSTS = [
|
|
||||||
"*",
|
|
||||||
]
|
|
||||||
|
|
||||||
# Debug Toolbar settings
|
# Debug Toolbar settings
|
||||||
INSTALLED_APPS += ("debug_toolbar",)
|
INSTALLED_APPS += ("debug_toolbar",)
|
||||||
MIDDLEWARE += ("debug_toolbar.middleware.DebugToolbarMiddleware",)
|
MIDDLEWARE += ("debug_toolbar.middleware.DebugToolbarMiddleware",)
|
||||||
@ -24,13 +20,9 @@ CACHES = {
|
|||||||
|
|
||||||
INTERNAL_IPS = ("127.0.0.1",)
|
INTERNAL_IPS = ("127.0.0.1",)
|
||||||
|
|
||||||
CORS_ORIGIN_ALLOW_ALL = True
|
|
||||||
|
|
||||||
MEDIA_URL = "/uploads/"
|
MEDIA_URL = "/uploads/"
|
||||||
MEDIA_ROOT = os.path.join(BASE_DIR, "uploads")
|
MEDIA_ROOT = os.path.join(BASE_DIR, "uploads")
|
||||||
|
|
||||||
# For local settings
|
|
||||||
CORS_ALLOW_ALL_ORIGINS = True
|
|
||||||
CORS_ALLOWED_ORIGINS = [
|
CORS_ALLOWED_ORIGINS = [
|
||||||
"http://localhost:3000",
|
"http://localhost:3000",
|
||||||
"http://127.0.0.1:3000",
|
"http://127.0.0.1:3000",
|
||||||
|
@ -11,3 +11,8 @@ INSTALLED_APPS += ("scout_apm.django",)
|
|||||||
|
|
||||||
# Honor the 'X-Forwarded-Proto' header for request.is_secure()
|
# Honor the 'X-Forwarded-Proto' header for request.is_secure()
|
||||||
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
|
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
|
||||||
|
|
||||||
|
# Scout Settings
|
||||||
|
SCOUT_MONITOR = os.environ.get("SCOUT_MONITOR", False)
|
||||||
|
SCOUT_KEY = os.environ.get("SCOUT_KEY", "")
|
||||||
|
SCOUT_NAME = "Plane"
|
||||||
|
@ -12,11 +12,10 @@ urlpatterns = [
|
|||||||
path("", TemplateView.as_view(template_name="index.html")),
|
path("", TemplateView.as_view(template_name="index.html")),
|
||||||
path("api/", include("plane.api.urls")),
|
path("api/", include("plane.api.urls")),
|
||||||
path("api/licenses/", include("plane.license.urls")),
|
path("api/licenses/", include("plane.license.urls")),
|
||||||
|
path("api/v1/", include("plane.proxy.urls")),
|
||||||
path("", include("plane.web.urls")),
|
path("", include("plane.web.urls")),
|
||||||
]
|
]
|
||||||
|
|
||||||
if settings.ENABLE_API:
|
|
||||||
urlpatterns += path("api/v1/", include("plane.proxy.urls")),
|
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
import debug_toolbar
|
import debug_toolbar
|
||||||
|
@ -9,12 +9,8 @@ x-app-env : &app-env
|
|||||||
- NEXT_PUBLIC_DEPLOY_URL=${NEXT_PUBLIC_DEPLOY_URL:-http://localhost/spaces}
|
- NEXT_PUBLIC_DEPLOY_URL=${NEXT_PUBLIC_DEPLOY_URL:-http://localhost/spaces}
|
||||||
- SENTRY_DSN=${SENTRY_DSN:-""}
|
- SENTRY_DSN=${SENTRY_DSN:-""}
|
||||||
- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-""}
|
- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-""}
|
||||||
- DOCKERIZED=${DOCKERIZED:-1}
|
- DOCKERIZED=${DOCKERIZED:-1} # deprecated
|
||||||
# BASE WEBHOOK
|
- CORS_ALLOWED_ORIGINS=${CORS_ALLOWED_ORIGINS:-""}
|
||||||
- ENABLE_WEBHOOK=${ENABLE_WEBHOOK:-1}
|
|
||||||
# BASE API
|
|
||||||
- ENABLE_API=${ENABLE_API:-1}
|
|
||||||
- CORS_ALLOWED_ORIGINS=${CORS_ALLOWED_ORIGINS:-http://localhost}
|
|
||||||
# Gunicorn Workers
|
# Gunicorn Workers
|
||||||
- GUNICORN_WORKERS=${GUNICORN_WORKERS:-2}
|
- GUNICORN_WORKERS=${GUNICORN_WORKERS:-2}
|
||||||
#DB SETTINGS
|
#DB SETTINGS
|
||||||
@ -37,7 +33,9 @@ x-app-env : &app-env
|
|||||||
- EMAIL_FROM=${EMAIL_FROM:-"Team Plane <team@mailer.plane.so>"}
|
- EMAIL_FROM=${EMAIL_FROM:-"Team Plane <team@mailer.plane.so>"}
|
||||||
- EMAIL_USE_TLS=${EMAIL_USE_TLS:-1}
|
- EMAIL_USE_TLS=${EMAIL_USE_TLS:-1}
|
||||||
- EMAIL_USE_SSL=${EMAIL_USE_SSL:-0}
|
- EMAIL_USE_SSL=${EMAIL_USE_SSL:-0}
|
||||||
# OPENAI SETTINGS
|
- DEFAULT_EMAIL=${DEFAULT_EMAIL:-captain@plane.so}
|
||||||
|
- DEFAULT_PASSWORD=${DEFAULT_PASSWORD:-password123}
|
||||||
|
# OPENAI SETTINGS - Deprecated can be configured through admin panel
|
||||||
- OPENAI_API_BASE=${OPENAI_API_BASE:-https://api.openai.com/v1}
|
- OPENAI_API_BASE=${OPENAI_API_BASE:-https://api.openai.com/v1}
|
||||||
- OPENAI_API_KEY=${OPENAI_API_KEY:-"sk-"}
|
- OPENAI_API_KEY=${OPENAI_API_KEY:-"sk-"}
|
||||||
- GPT_ENGINE=${GPT_ENGINE:-"gpt-3.5-turbo"}
|
- GPT_ENGINE=${GPT_ENGINE:-"gpt-3.5-turbo"}
|
||||||
|
@ -11,13 +11,9 @@ NEXT_PUBLIC_ENABLE_OAUTH=0
|
|||||||
NEXT_PUBLIC_DEPLOY_URL=http://localhost/spaces
|
NEXT_PUBLIC_DEPLOY_URL=http://localhost/spaces
|
||||||
SENTRY_DSN=""
|
SENTRY_DSN=""
|
||||||
GITHUB_CLIENT_SECRET=""
|
GITHUB_CLIENT_SECRET=""
|
||||||
DOCKERIZED=1
|
DOCKERIZED=1 # deprecated
|
||||||
CORS_ALLOWED_ORIGINS="http://localhost"
|
CORS_ALLOWED_ORIGINS=""
|
||||||
|
|
||||||
# Webhook
|
|
||||||
ENABLE_WEBHOOK=1
|
|
||||||
# API
|
|
||||||
ENABLE_API=1
|
|
||||||
|
|
||||||
#DB SETTINGS
|
#DB SETTINGS
|
||||||
PGHOST=plane-db
|
PGHOST=plane-db
|
||||||
@ -43,9 +39,9 @@ EMAIL_USE_TLS=1
|
|||||||
EMAIL_USE_SSL=0
|
EMAIL_USE_SSL=0
|
||||||
|
|
||||||
# OPENAI SETTINGS
|
# OPENAI SETTINGS
|
||||||
OPENAI_API_BASE=https://api.openai.com/v1
|
OPENAI_API_BASE=https://api.openai.com/v1 # deprecated
|
||||||
OPENAI_API_KEY="sk-"
|
OPENAI_API_KEY="sk-" # deprecated
|
||||||
GPT_ENGINE="gpt-3.5-turbo"
|
GPT_ENGINE="gpt-3.5-turbo" # deprecated
|
||||||
|
|
||||||
# LOGIN/SIGNUP SETTINGS
|
# LOGIN/SIGNUP SETTINGS
|
||||||
ENABLE_SIGNUP=1
|
ENABLE_SIGNUP=1
|
||||||
|
Loading…
Reference in New Issue
Block a user