portal/deps/dns_cluster
Mikael Hugo 35f29f42e3 feat: add flake.nix, .envrc, fix config (runtime.exs), deps compile clean
- flake.nix: Elixir 1.18.4 / OTP 27 / Node 22 dev shell
- .envrc: use flake
- config/config.exs: move fetch_env! to runtime.exs (compile-time safe)
- config/runtime.exs: all secrets loaded at runtime via env vars
- mix.lock: generated after mix deps.get
- All 3 apps compile cleanly

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-09 19:55:48 +02:00
..
lib feat: add flake.nix, .envrc, fix config (runtime.exs), deps compile clean 2026-05-09 19:55:48 +02:00
.formatter.exs feat: add flake.nix, .envrc, fix config (runtime.exs), deps compile clean 2026-05-09 19:55:48 +02:00
.hex feat: add flake.nix, .envrc, fix config (runtime.exs), deps compile clean 2026-05-09 19:55:48 +02:00
CHANGELOG.md feat: add flake.nix, .envrc, fix config (runtime.exs), deps compile clean 2026-05-09 19:55:48 +02:00
hex_metadata.config feat: add flake.nix, .envrc, fix config (runtime.exs), deps compile clean 2026-05-09 19:55:48 +02:00
LICENSE.md feat: add flake.nix, .envrc, fix config (runtime.exs), deps compile clean 2026-05-09 19:55:48 +02:00
mix.exs feat: add flake.nix, .envrc, fix config (runtime.exs), deps compile clean 2026-05-09 19:55:48 +02:00
README.md feat: add flake.nix, .envrc, fix config (runtime.exs), deps compile clean 2026-05-09 19:55:48 +02:00

DNSCluster

Simple DNS clustering for distributed Elixir nodes.

Installation

The package can be installed by adding dns_cluster to your list of dependencies in mix.exs:

def deps do
  [
    {:dns_cluster, "~> 0.1.1"}
  ]
end

Next, you can configure and start the cluster by adding it to your supervision tree in your application.ex:

children = [
  {Phoenix.PubSub, ...},
  {DNSCluster, query: Application.get_env(:my_app, :dns_cluster_query) || :ignore},
  MyAppWeb.Endpoint
]

If you are deploying with Elixir releases, the release must be set to support longnames and the node must be named. These can be set in your rel/env.sh.eex file:

#!/bin/sh
export RELEASE_DISTRIBUTION=name
export RELEASE_NODE="myapp@fully-qualified-host-or-ip"

By default, nodes from the same release will have the same cookie. If you want different applications or releases to connect to each other, then you must set the RELEASE_COOKIE, either in your deployment platform or inside rel/env.sh.eex:

#!/bin/sh
...
export RELEASE_COOKIE="my-app-cookie"