Skip to content

Commit

Permalink
Allow user to specify listen interface via LISTEN_IP.
Browse files Browse the repository at this point in the history
This enables safer deployments to allow localhost-only
or VPN-interface-only listening.
  • Loading branch information
nh2 committed Jan 13, 2022
1 parent 3f51515 commit 1a1cc12
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.


## Unreleased
- Added `LISTEN_IP` configuration parameter plausible/analytics#1189

### Added
- API route `PUT /api/v1/sites/goals` with form params `site_id`, `event_name` and/or `page_path`, and `goal_type` with supported types `event` and `page`
Expand Down
14 changes: 13 additions & 1 deletion config/runtime.exs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,18 @@ end

config_dir = System.get_env("CONFIG_DIR", "/run/secrets")

# Listen IP supports IPv4 and IPv6 addresses.
listen_ip = (
str = get_var_from_path_or_env(config_dir, "LISTEN_IP") || "0.0.0.0"
case :inet.parse_address(String.to_charlist(str)) do
{:ok, ip_addr} ->
ip_addr

{:error, reason} ->
raise "Invalid LISTEN_IP '#{str}' error: #{inspect(reason)}"
end
)

# System.get_env does not accept a non string default
port = get_var_from_path_or_env(config_dir, "PORT") || 8000

Expand Down Expand Up @@ -190,7 +202,7 @@ config :plausible, :selfhost,

config :plausible, PlausibleWeb.Endpoint,
url: [scheme: base_url.scheme, host: base_url.host, path: base_url.path, port: base_url.port],
http: [port: port, transport_options: [max_connections: :infinity]],
http: [port: port, ip: listen_ip, transport_options: [max_connections: :infinity]],
secret_key_base: secret_key_base

if is_nil(db_socket_dir) do
Expand Down

0 comments on commit 1a1cc12

Please sign in to comment.