2024-02-29 21:31:42 +02:00
|
|
|
import Config
|
|
|
|
|
2024-10-08 20:42:52 +02:00
|
|
|
transcode_backend = case System.get_env("MIX_TARGET") do
|
|
|
|
"nvidia" -> Membrane.ABRTranscoder.Backends.Nvidia
|
|
|
|
"xilinx" -> Membrane.ABRTranscoder.Backends.U30
|
|
|
|
_ -> nil
|
|
|
|
end
|
|
|
|
|
2024-10-11 02:04:37 +02:00
|
|
|
flame_backend = case System.get_env("FLAME_BACKEND") do
|
|
|
|
"fly" -> FLAME.FlyBackend
|
|
|
|
_ -> FLAME.LocalBackend
|
|
|
|
end
|
|
|
|
|
2024-09-29 00:20:52 +02:00
|
|
|
config :algora,
|
|
|
|
mode: :dev,
|
2024-10-11 02:58:26 +02:00
|
|
|
resume_rtmp: System.get_env("RESUME_RTMP", "false") == "true",
|
|
|
|
resume_rtmp_on_unpublish: System.get_env("RESUME_RTMP_ON_UNPUBLUSH", "false") == "true",
|
|
|
|
resume_rtmp_timeout: System.get_env("RESUME_RTMP_TIMEOUT", "3200"),
|
|
|
|
supports_h265: System.get_env("SUPPORTS_H265", "false") == "true",
|
2024-11-12 00:24:17 +02:00
|
|
|
transcode: (case System.get_env("TRANSCODE") do
|
|
|
|
"" -> nil
|
|
|
|
other -> other
|
|
|
|
end),
|
2024-11-04 00:52:09 +02:00
|
|
|
transcode_include_master: System.get_env("TRANSCODE_INCLUDE_MASTER", "false") == "true",
|
2024-10-09 03:29:32 +02:00
|
|
|
transcode_backend: transcode_backend,
|
|
|
|
rtmp_port: String.to_integer(System.get_env("RTMP_PORT", "9006"))
|
2024-05-01 22:34:05 +02:00
|
|
|
|
|
|
|
config :algora, :buckets,
|
|
|
|
media: System.get_env("BUCKET_MEDIA"),
|
|
|
|
ml: System.get_env("BUCKET_ML")
|
2024-02-29 21:31:42 +02:00
|
|
|
|
|
|
|
config :algora, :github,
|
|
|
|
client_id: System.get_env("GITHUB_CLIENT_ID"),
|
|
|
|
client_secret: System.get_env("GITHUB_CLIENT_SECRET")
|
|
|
|
|
2024-05-22 16:03:18 +02:00
|
|
|
config :algora, :restream,
|
|
|
|
client_id: System.get_env("RESTREAM_CLIENT_ID"),
|
|
|
|
client_secret: System.get_env("RESTREAM_CLIENT_SECRET")
|
|
|
|
|
2024-02-29 21:31:42 +02:00
|
|
|
config :algora, :event_sink, url: System.get_env("EVENT_SINK_URL")
|
|
|
|
|
2024-11-01 04:42:19 +02:00
|
|
|
config :algora, :flame,
|
|
|
|
backend: flame_backend,
|
|
|
|
min: String.to_integer(System.get_env("FLAME_MAX", "1")),
|
|
|
|
max: String.to_integer(System.get_env("FLAME_MAX", "1")),
|
|
|
|
max_concurrency: String.to_integer(System.get_env("FLAME_MAX_CONCURRENCY", "10")),
|
|
|
|
idle_shutdown_after: String.to_integer(System.get_env("FLAME_IDLE_SHUTDOWN_AFTER", "30")),
|
|
|
|
log: String.to_atom(System.get_env("FLAME_LOG", "debug"))
|
|
|
|
|
2024-02-29 21:31:42 +02:00
|
|
|
config :ex_aws,
|
|
|
|
# debug_requests: true,
|
|
|
|
json_codec: Jason,
|
|
|
|
access_key_id: System.get_env("AWS_ACCESS_KEY_ID"),
|
|
|
|
secret_access_key: System.get_env("AWS_SECRET_ACCESS_KEY")
|
|
|
|
|
|
|
|
config :ex_aws, :s3,
|
|
|
|
scheme: "https://",
|
|
|
|
host:
|
|
|
|
(with url when url != nil <- System.get_env("AWS_ENDPOINT_URL_S3"),
|
|
|
|
host <- URI.parse(url).host do
|
|
|
|
host
|
|
|
|
else
|
|
|
|
_ -> nil
|
|
|
|
end),
|
|
|
|
region: System.get_env("AWS_REGION")
|
|
|
|
|
2024-06-03 13:36:26 +02:00
|
|
|
config :ex_aws, :hackney_opts,
|
|
|
|
timeout: 300_000,
|
|
|
|
recv_timeout: 300_000
|
2024-06-02 16:13:41 +02:00
|
|
|
|
2024-02-29 21:31:42 +02:00
|
|
|
# Configure your database
|
|
|
|
config :algora, Algora.Repo,
|
|
|
|
url: System.get_env("DATABASE_URL"),
|
|
|
|
show_sensitive_data_on_connection_error: true,
|
2024-04-27 21:04:37 +02:00
|
|
|
pool_size: 10,
|
|
|
|
log: false
|
2024-02-29 21:31:42 +02:00
|
|
|
|
2024-03-11 20:55:17 +02:00
|
|
|
config :algora, Algora.Repo.Local,
|
2024-02-29 21:31:42 +02:00
|
|
|
url: System.get_env("DATABASE_URL"),
|
|
|
|
show_sensitive_data_on_connection_error: true,
|
|
|
|
pool_size: 10,
|
2024-04-27 21:04:37 +02:00
|
|
|
priv: "priv/repo",
|
|
|
|
log: false
|
2024-02-29 21:31:42 +02:00
|
|
|
|
|
|
|
# For development, we disable any cache and enable
|
|
|
|
# debugging and code reloading.
|
|
|
|
#
|
|
|
|
# The watchers configuration can be used to run external
|
|
|
|
# watchers to your application. For example, we use it
|
|
|
|
# with esbuild to bundle .js and .css sources.
|
|
|
|
config :algora, AlgoraWeb.Endpoint,
|
|
|
|
# Binding to loopback ipv4 address prevents access from other machines.
|
|
|
|
# Change to `ip: {0, 0, 0, 0}` to allow access from other machines.
|
2024-10-09 03:29:32 +02:00
|
|
|
http: [ip: {0, 0, 0, 0}, port: String.to_integer(System.get_env("PORT") || "4000") ],
|
2024-02-29 21:31:42 +02:00
|
|
|
debug_errors: true,
|
|
|
|
code_reloader: true,
|
|
|
|
check_origin: false,
|
|
|
|
watchers: [
|
2024-03-10 18:24:20 +02:00
|
|
|
esbuild: {Esbuild, :install_and_run, [:tv, ~w(--sourcemap=inline --watch)]},
|
|
|
|
tailwind: {Tailwind, :install_and_run, [:tv, ~w(--watch)]}
|
2024-02-29 21:31:42 +02:00
|
|
|
]
|
|
|
|
|
2024-04-12 14:59:50 +02:00
|
|
|
config :algora, AlgoraWeb.Embed.Endpoint,
|
|
|
|
# Binding to loopback ipv4 address prevents access from other machines.
|
|
|
|
# Change to `ip: {0, 0, 0, 0}` to allow access from other machines.
|
2024-10-09 03:29:32 +02:00
|
|
|
http: [ip: {0, 0, 0, 0}, port: String.to_integer(System.get_env("EMBED_PORT") || "4001")]
|
2024-04-12 14:59:50 +02:00
|
|
|
|
2024-02-29 21:31:42 +02:00
|
|
|
# ## SSL Support
|
|
|
|
#
|
|
|
|
# In order to use HTTPS in development, a self-signed
|
|
|
|
# certificate can be generated by running the following
|
|
|
|
# Mix task:
|
|
|
|
#
|
|
|
|
# mix phx.gen.cert
|
|
|
|
#
|
|
|
|
# Note that this task requires Erlang/OTP 20 or later.
|
|
|
|
# Run `mix help phx.gen.cert` for more information.
|
|
|
|
#
|
|
|
|
# The `http:` config above can be replaced with:
|
|
|
|
#
|
|
|
|
# https: [
|
|
|
|
# port: 4001,
|
|
|
|
# cipher_suite: :strong,
|
|
|
|
# keyfile: "priv/cert/selfsigned_key.pem",
|
|
|
|
# certfile: "priv/cert/selfsigned.pem"
|
|
|
|
# ],
|
|
|
|
#
|
|
|
|
# If desired, both `http:` and `https:` keys can be
|
|
|
|
# configured to run both http and https servers on
|
|
|
|
# different ports.
|
|
|
|
|
|
|
|
# Watch static and templates for browser reloading.
|
|
|
|
config :algora, AlgoraWeb.Endpoint,
|
|
|
|
live_reload: [
|
|
|
|
patterns: [
|
2024-09-20 17:09:59 +02:00
|
|
|
~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg|json)$",
|
2024-02-29 21:31:42 +02:00
|
|
|
~r"priv/gettext/.*(po)$",
|
|
|
|
~r"lib/algora_web/(live|views)/.*(ex)$",
|
|
|
|
~r"lib/algora_web/templates/.*(eex)$"
|
|
|
|
]
|
|
|
|
]
|
|
|
|
|
2024-05-26 21:24:39 +02:00
|
|
|
config :algora, :docs, url: "http://localhost:3000"
|
|
|
|
|
2024-02-29 21:31:42 +02:00
|
|
|
# Do not include metadata nor timestamps in development logs
|
|
|
|
config :logger, :console, format: "[$level] $message\n"
|
|
|
|
|
|
|
|
# Set a higher stacktrace during development. Avoid configuring such
|
|
|
|
# in production as building large stacktraces may be expensive.
|
|
|
|
config :phoenix, :stacktrace_depth, 20
|
|
|
|
|
|
|
|
# Initialize plugs at runtime for faster development compilation
|
|
|
|
config :phoenix, :plug_init_mode, :runtime
|
|
|
|
|
|
|
|
# Disable swoosh api client as it is only required for production adapters.
|
|
|
|
config :swoosh, :api_client, false
|
2024-05-26 21:24:39 +02:00
|
|
|
|
|
|
|
config :reverse_proxy_plug, :http_client, ReverseProxyPlug.HTTPClient.Adapters.HTTPoison
|