2021-10-19 19:28:25 +00:00
|
|
|
import Config
|
2020-07-05 17:26:26 +00:00
|
|
|
|
2020-07-24 22:10:50 +00:00
|
|
|
# For production, don't forget to configure the url host
|
|
|
|
# to something meaningful, Phoenix uses this information
|
|
|
|
# when generating URLs.
|
|
|
|
#
|
|
|
|
# Note we also include the path to a cache manifest
|
2020-07-29 17:07:36 +00:00
|
|
|
# containing the digested version of static files. This
|
|
|
|
# manifest is generated by the `mix phx.digest` task,
|
|
|
|
# which you should run after static files are built and
|
|
|
|
# before starting your production server.
|
|
|
|
|
2021-01-07 21:53:17 +00:00
|
|
|
secret_key_base = System.get_env("SECRET_KEY_BASE")
|
2021-05-06 17:21:32 +00:00
|
|
|
signing_salt = System.get_env("LIVE_VIEW_SIGNING_SALT")
|
2020-07-24 22:10:50 +00:00
|
|
|
|
2021-01-07 21:53:17 +00:00
|
|
|
[
|
2021-03-19 19:32:18 +00:00
|
|
|
{:admin, Legendary.Admin, false},
|
2021-01-07 21:53:17 +00:00
|
|
|
{:app, AppWeb, true},
|
2021-03-19 19:32:18 +00:00
|
|
|
{:content, ContentWeb, false},
|
|
|
|
{:core, Legendary.CoreWeb, false},
|
2021-10-19 19:28:25 +00:00
|
|
|
{:object_storage, Legendary.ObjectStorageWeb, false}
|
2021-01-07 21:53:17 +00:00
|
|
|
]
|
|
|
|
|> Enum.map(fn {otp_app, module, start_server} ->
|
|
|
|
endpoint = Module.concat(module, "Endpoint")
|
2021-01-08 18:47:00 +00:00
|
|
|
extra_opts =
|
|
|
|
if start_server do
|
|
|
|
[cache_static_manifest: "priv/static/cache_manifest.json"]
|
|
|
|
else
|
|
|
|
[]
|
|
|
|
end
|
2020-07-05 17:26:26 +00:00
|
|
|
|
2021-10-19 19:28:25 +00:00
|
|
|
config otp_app,
|
|
|
|
endpoint,
|
|
|
|
[
|
|
|
|
url: [host: "example.com", port: 80],
|
|
|
|
http: [
|
|
|
|
port: String.to_integer(System.get_env("PORT") || "4000"),
|
|
|
|
transport_options: [socket_opts: [:inet6]]
|
|
|
|
],
|
|
|
|
secret_key_base: secret_key_base,
|
|
|
|
pubsub_server: App.PubSub,
|
|
|
|
live_view: [signing_salt: signing_salt],
|
|
|
|
server: start_server
|
|
|
|
] ++ extra_opts
|
2021-01-07 21:53:17 +00:00
|
|
|
end)
|
|
|
|
|
|
|
|
# ## Using releases (Elixir v1.9+)
|
|
|
|
#
|
|
|
|
# If you are doing OTP releases, you need to instruct Phoenix
|
|
|
|
# to start each relevant endpoint:
|
|
|
|
#
|
2021-03-19 19:32:18 +00:00
|
|
|
# config :admin, Legendary.Admin.Endpoint, server: true
|
2021-01-07 21:53:17 +00:00
|
|
|
#
|
|
|
|
# Then you can assemble a release by calling `mix release`.
|
|
|
|
# See `mix help release` for more information.
|
|
|
|
|
|
|
|
database_url = System.get_env("DATABASE_URL")
|
|
|
|
|
|
|
|
[
|
2021-03-19 19:32:18 +00:00
|
|
|
{:admin, Legendary.Admin.Repo},
|
2021-01-07 21:53:17 +00:00
|
|
|
{:app, App.Repo},
|
2021-03-19 19:32:18 +00:00
|
|
|
{:content, Legendary.Content.Repo},
|
2021-10-19 19:28:25 +00:00
|
|
|
{:core, Legendary.Core.Repo},
|
|
|
|
{:object_storage, Legendary.ObjectStorage.Repo}
|
2021-01-07 21:53:17 +00:00
|
|
|
]
|
|
|
|
|> Enum.map(fn {otp_app, repo} ->
|
|
|
|
config otp_app, repo,
|
|
|
|
url: database_url,
|
|
|
|
pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")
|
|
|
|
end)
|
|
|
|
|
2021-05-14 21:16:17 +00:00
|
|
|
config :core, Legendary.CoreMailer,
|
|
|
|
adapter: Bamboo.SMTPAdapter,
|
|
|
|
server: {:system, "SMTP_HOST"},
|
|
|
|
hostname: {:system, "HOSTNAME"},
|
|
|
|
port: 25,
|
|
|
|
username: {:system, "SMTP_USERNAME"},
|
|
|
|
password: {:system, "SMTP_PASSWORD"},
|
|
|
|
tls: :if_available,
|
2021-07-02 18:33:26 +00:00
|
|
|
allowed_tls_versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"],
|
2021-05-14 21:16:17 +00:00
|
|
|
ssl: false,
|
|
|
|
retries: 1,
|
|
|
|
no_mx_lookups: false,
|
|
|
|
auth: :always
|
|
|
|
|
2021-05-28 17:38:37 +00:00
|
|
|
config :core, email_from: System.get_env("EMAIL_FROM")
|
|
|
|
|
|
|
|
config :libcluster,
|
|
|
|
topologies: [
|
|
|
|
kubernetes: [
|
|
|
|
strategy: Elixir.Cluster.Strategy.Kubernetes,
|
|
|
|
config: [
|
|
|
|
mode: :ip,
|
|
|
|
kubernetes_ip_lookup_mode: :pods,
|
|
|
|
kubernetes_node_basename: System.get_env("NAME", "legendary"),
|
|
|
|
kubernetes_selector: "app=#{System.get_env("NAME", "legendary")}",
|
|
|
|
kubernetes_namespace: System.get_env("NAMESPACE", "legendary"),
|
2021-10-19 19:28:25 +00:00
|
|
|
polling_interval: 10_000
|
|
|
|
]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
|
|
|
|
# Use this configuration to use Waffle with our internal object storage engine
|
|
|
|
# that simulates S3
|
|
|
|
config :waffle,
|
|
|
|
storage: Waffle.Storage.S3,
|
2021-10-19 19:53:39 +00:00
|
|
|
bucket: "uploads",
|
2021-10-19 19:28:25 +00:00
|
|
|
asset_host: "https://#{System.get_env("HOSTNAME")}"
|
|
|
|
|
|
|
|
config :object_storage,
|
|
|
|
bucket_name: "uploads"
|
|
|
|
|
|
|
|
config :ex_aws,
|
|
|
|
access_key_id: {:system, "OBJECT_STORAGE_ACCESS_KEY_ID"},
|
|
|
|
secret_access_key: {:system, "OBJECT_STORAGE_SECRET_ACCESS_KEY"}
|
|
|
|
|
|
|
|
config :ex_aws, :s3,
|
|
|
|
scheme: "https://",
|
|
|
|
host: {:system, "HOSTNAME"}
|
|
|
|
|
2021-05-28 17:38:37 +00:00
|
|
|
|
2021-01-07 21:53:17 +00:00
|
|
|
# ## Using releases (Elixir v1.9+)
|
|
|
|
#
|
|
|
|
# If you are doing OTP releases, you need to instruct Phoenix
|
|
|
|
# to start each relevant endpoint:
|
|
|
|
#
|
2021-03-19 19:32:18 +00:00
|
|
|
# config :auth_web, Legendary.AuthWeb.Endpoint, server: true
|
2021-01-07 21:53:17 +00:00
|
|
|
#
|
|
|
|
# Then you can assemble a release by calling `mix release`.
|
|
|
|
# See `mix help release` for more information.
|
2020-09-30 20:56:22 +00:00
|
|
|
|
2020-07-05 17:26:26 +00:00
|
|
|
# ## SSL Support
|
|
|
|
#
|
|
|
|
# To get SSL working, you will need to add the `https` key
|
|
|
|
# to the previous section and set your `:url` port to 443:
|
|
|
|
#
|
2021-03-19 19:32:18 +00:00
|
|
|
# config :content, Legendary.Content.Endpoint,
|
2020-07-05 17:26:26 +00:00
|
|
|
# ...
|
|
|
|
# url: [host: "example.com", port: 443],
|
|
|
|
# https: [
|
|
|
|
# port: 443,
|
|
|
|
# cipher_suite: :strong,
|
|
|
|
# keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
|
|
|
|
# certfile: System.get_env("SOME_APP_SSL_CERT_PATH"),
|
|
|
|
# transport_options: [socket_opts: [:inet6]]
|
|
|
|
# ]
|
|
|
|
#
|
|
|
|
# The `cipher_suite` is set to `:strong` to support only the
|
|
|
|
# latest and more secure SSL ciphers. This means old browsers
|
|
|
|
# and clients may not be supported. You can set it to
|
|
|
|
# `:compatible` for wider support.
|
|
|
|
#
|
|
|
|
# `:keyfile` and `:certfile` expect an absolute path to the key
|
|
|
|
# and cert in disk or a relative path inside priv, for example
|
|
|
|
# "priv/ssl/server.key". For all supported SSL configuration
|
|
|
|
# options, see https://hexdocs.pm/plug/Plug.SSL.html#configure/1
|
|
|
|
#
|
|
|
|
# We also recommend setting `force_ssl` in your endpoint, ensuring
|
|
|
|
# no data is ever sent via http, always redirecting to https:
|
|
|
|
#
|
2021-03-19 19:32:18 +00:00
|
|
|
# config :content, Legendary.Content.Endpoint,
|
2020-07-05 17:26:26 +00:00
|
|
|
# force_ssl: [hsts: true]
|
|
|
|
#
|
|
|
|
# Check `Plug.SSL` for all available options in `force_ssl`.
|