forked from github/plane
Merge pull request #833 from kylewlacy/self-hosting-tweaks
Add a few more options for self-hosting
This commit is contained in:
commit
20162050c3
@ -3,15 +3,19 @@ DJANGO_SETTINGS_MODULE="plane.settings.production"
|
|||||||
DATABASE_URL=postgres://plane:xyzzyspoon@db:5432/plane
|
DATABASE_URL=postgres://plane:xyzzyspoon@db:5432/plane
|
||||||
# Cache
|
# Cache
|
||||||
REDIS_URL=redis://redis:6379/
|
REDIS_URL=redis://redis:6379/
|
||||||
# SMPT
|
# SMTP
|
||||||
EMAIL_HOST=""
|
EMAIL_HOST=""
|
||||||
EMAIL_HOST_USER=""
|
EMAIL_HOST_USER=""
|
||||||
EMAIL_HOST_PASSWORD=""
|
EMAIL_HOST_PASSWORD=""
|
||||||
# AWS
|
EMAIL_PORT="587"
|
||||||
|
EMAIL_USE_TLS="1"
|
||||||
|
EMAIL_FROM="Team Plane <team@mailer.plane.so>"
|
||||||
|
# AWS
|
||||||
AWS_REGION=""
|
AWS_REGION=""
|
||||||
AWS_ACCESS_KEY_ID=""
|
AWS_ACCESS_KEY_ID=""
|
||||||
AWS_SECRET_ACCESS_KEY=""
|
AWS_SECRET_ACCESS_KEY=""
|
||||||
AWS_S3_BUCKET_NAME=""
|
AWS_S3_BUCKET_NAME=""
|
||||||
|
AWS_S3_ENDPOINT_URL=""
|
||||||
# FE
|
# FE
|
||||||
WEB_URL="localhost/"
|
WEB_URL="localhost/"
|
||||||
# OAUTH
|
# OAUTH
|
||||||
@ -21,4 +25,4 @@ DISABLE_COLLECTSTATIC=1
|
|||||||
DOCKERIZED=1
|
DOCKERIZED=1
|
||||||
# GPT Envs
|
# GPT Envs
|
||||||
OPENAI_API_KEY=0
|
OPENAI_API_KEY=0
|
||||||
GPT_ENGINE=0
|
GPT_ENGINE=0
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.utils.html import strip_tags
|
from django.utils.html import strip_tags
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
# Third party imports
|
# Third party imports
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
@ -20,7 +21,7 @@ def email_verification(first_name, email, token, current_site):
|
|||||||
realtivelink = "/request-email-verification/" + "?token=" + str(token)
|
realtivelink = "/request-email-verification/" + "?token=" + str(token)
|
||||||
abs_url = "http://" + current_site + realtivelink
|
abs_url = "http://" + current_site + realtivelink
|
||||||
|
|
||||||
from_email_string = f"Team Plane <team@mailer.plane.so>"
|
from_email_string = settings.EMAIL_FROM
|
||||||
|
|
||||||
subject = f"Verify your Email!"
|
subject = f"Verify your Email!"
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.utils.html import strip_tags
|
from django.utils.html import strip_tags
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
# Third party imports
|
# Third party imports
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
@ -18,7 +19,7 @@ def forgot_password(first_name, email, uidb64, token, current_site):
|
|||||||
realtivelink = f"/email-verify/?uidb64={uidb64}&token={token}/"
|
realtivelink = f"/email-verify/?uidb64={uidb64}&token={token}/"
|
||||||
abs_url = "http://" + current_site + realtivelink
|
abs_url = "http://" + current_site + realtivelink
|
||||||
|
|
||||||
from_email_string = f"Team Plane <team@mailer.plane.so>"
|
from_email_string = settings.EMAIL_FROM
|
||||||
|
|
||||||
subject = f"Verify your Email!"
|
subject = f"Verify your Email!"
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.utils.html import strip_tags
|
from django.utils.html import strip_tags
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
# Third party imports
|
# Third party imports
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
@ -14,7 +15,7 @@ def magic_link(email, key, token, current_site):
|
|||||||
realtivelink = f"/magic-sign-in/?password={token}&key={key}"
|
realtivelink = f"/magic-sign-in/?password={token}&key={key}"
|
||||||
abs_url = "http://" + current_site + realtivelink
|
abs_url = "http://" + current_site + realtivelink
|
||||||
|
|
||||||
from_email_string = f"Team Plane <team@mailer.plane.so>"
|
from_email_string = settings.EMAIL_FROM
|
||||||
|
|
||||||
subject = f"Login for Plane"
|
subject = f"Login for Plane"
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.utils.html import strip_tags
|
from django.utils.html import strip_tags
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
# Third party imports
|
# Third party imports
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
@ -22,7 +23,7 @@ def project_invitation(email, project_id, token, current_site):
|
|||||||
relativelink = f"/project-member-invitation/{project_member_invite.id}"
|
relativelink = f"/project-member-invitation/{project_member_invite.id}"
|
||||||
abs_url = "http://" + current_site + relativelink
|
abs_url = "http://" + current_site + relativelink
|
||||||
|
|
||||||
from_email_string = f"Team Plane <team@mailer.plane.so>"
|
from_email_string = settings.EMAIL_FROM
|
||||||
|
|
||||||
subject = f"{project.created_by.first_name or project.created_by.email} invited you to join {project.name} on Plane"
|
subject = f"{project.created_by.first_name or project.created_by.email} invited you to join {project.name} on Plane"
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ def workspace_invitation(email, workspace_id, token, current_site, invitor):
|
|||||||
)
|
)
|
||||||
abs_url = "http://" + current_site + realtivelink
|
abs_url = "http://" + current_site + realtivelink
|
||||||
|
|
||||||
from_email_string = f"Team Plane <team@mailer.plane.so>"
|
from_email_string = settings.EMAIL_FROM
|
||||||
|
|
||||||
subject = f"{invitor or email} invited you to join {workspace.name} on Plane"
|
subject = f"{invitor or email} invited you to join {workspace.name} on Plane"
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ def send_welcome_email(sender, instance, created, **kwargs):
|
|||||||
if created and not instance.is_bot:
|
if created and not instance.is_bot:
|
||||||
first_name = instance.first_name.capitalize()
|
first_name = instance.first_name.capitalize()
|
||||||
to_email = instance.email
|
to_email = instance.email
|
||||||
from_email_string = f"Team Plane <team@mailer.plane.so>"
|
from_email_string = settings.EMAIL_FROM
|
||||||
|
|
||||||
subject = f"Welcome to Plane ✈️!"
|
subject = f"Welcome to Plane ✈️!"
|
||||||
|
|
||||||
|
@ -174,11 +174,12 @@ EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
|
|||||||
# Host for sending e-mail.
|
# Host for sending e-mail.
|
||||||
EMAIL_HOST = os.environ.get("EMAIL_HOST")
|
EMAIL_HOST = os.environ.get("EMAIL_HOST")
|
||||||
# Port for sending e-mail.
|
# Port for sending e-mail.
|
||||||
EMAIL_PORT = 587
|
EMAIL_PORT = int(os.environ.get("EMAIL_PORT", 587))
|
||||||
# Optional SMTP authentication information for EMAIL_HOST.
|
# Optional SMTP authentication information for EMAIL_HOST.
|
||||||
EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER")
|
EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER")
|
||||||
EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD")
|
EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD")
|
||||||
EMAIL_USE_TLS = True
|
EMAIL_USE_TLS = os.environ.get("EMAIL_USE_TLS", "1") == "1"
|
||||||
|
EMAIL_FROM = os.environ.get("EMAIL_FROM", "Team Plane <team@mailer.plane.so>")
|
||||||
|
|
||||||
|
|
||||||
SIMPLE_JWT = {
|
SIMPLE_JWT = {
|
||||||
@ -210,4 +211,4 @@ SIMPLE_JWT = {
|
|||||||
|
|
||||||
CELERY_TIMEZONE = TIME_ZONE
|
CELERY_TIMEZONE = TIME_ZONE
|
||||||
CELERY_TASK_SERIALIZER = 'json'
|
CELERY_TASK_SERIALIZER = 'json'
|
||||||
CELERY_ACCEPT_CONTENT = ['application/json']
|
CELERY_ACCEPT_CONTENT = ['application/json']
|
||||||
|
@ -105,7 +105,7 @@ if (
|
|||||||
AWS_S3_ADDRESSING_STYLE = "auto"
|
AWS_S3_ADDRESSING_STYLE = "auto"
|
||||||
|
|
||||||
# The full URL to the S3 endpoint. Leave blank to use the default region URL.
|
# The full URL to the S3 endpoint. Leave blank to use the default region URL.
|
||||||
AWS_S3_ENDPOINT_URL = ""
|
AWS_S3_ENDPOINT_URL = os.environ.get("AWS_S3_ENDPOINT_URL", "")
|
||||||
|
|
||||||
# A prefix to be applied to every stored file. This will be joined to every filename using the "/" separator.
|
# A prefix to be applied to every stored file. This will be joined to every filename using the "/" separator.
|
||||||
AWS_S3_KEY_PREFIX = ""
|
AWS_S3_KEY_PREFIX = ""
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Replace with your instance Public IP
|
# Replace with your instance Public IP
|
||||||
# NEXT_PUBLIC_API_BASE_URL = "http://localhost"
|
# NEXT_PUBLIC_API_BASE_URL = "http://localhost"
|
||||||
|
NEXT_PUBLIC_EXTRA_IMAGE_DOMAINS=
|
||||||
NEXT_PUBLIC_GOOGLE_CLIENTID=""
|
NEXT_PUBLIC_GOOGLE_CLIENTID=""
|
||||||
NEXT_PUBLIC_GITHUB_APP_NAME=""
|
NEXT_PUBLIC_GITHUB_APP_NAME=""
|
||||||
NEXT_PUBLIC_GITHUB_ID=""
|
NEXT_PUBLIC_GITHUB_ID=""
|
||||||
@ -7,4 +8,4 @@ NEXT_PUBLIC_SENTRY_DSN=""
|
|||||||
NEXT_PUBLIC_ENABLE_OAUTH=0
|
NEXT_PUBLIC_ENABLE_OAUTH=0
|
||||||
NEXT_PUBLIC_ENABLE_SENTRY=0
|
NEXT_PUBLIC_ENABLE_SENTRY=0
|
||||||
NEXT_PUBLIC_ENABLE_SESSION_RECORDER=0
|
NEXT_PUBLIC_ENABLE_SESSION_RECORDER=0
|
||||||
NEXT_PUBLIC_TRACK_EVENTS=0
|
NEXT_PUBLIC_TRACK_EVENTS=0
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
const { withSentryConfig } = require("@sentry/nextjs");
|
const { withSentryConfig } = require("@sentry/nextjs");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
const extraImageDomains = (process.env.NEXT_PUBLIC_EXTRA_IMAGE_DOMAINS ?? "").split(",").filter((domain) => domain.length > 0);
|
||||||
|
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
reactStrictMode: false,
|
reactStrictMode: false,
|
||||||
@ -11,6 +12,7 @@ const nextConfig = {
|
|||||||
"planefs.s3.amazonaws.com",
|
"planefs.s3.amazonaws.com",
|
||||||
"images.unsplash.com",
|
"images.unsplash.com",
|
||||||
"avatars.githubusercontent.com",
|
"avatars.githubusercontent.com",
|
||||||
|
...extraImageDomains,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
output: "standalone",
|
output: "standalone",
|
||||||
|
Loading…
Reference in New Issue
Block a user