Looking at discourse source code is there some way to get a dev install to bind to a custom ip or public ip?
Looking at discourse source code is there some way to get a dev install to bind to a custom ip or public ip?
Yes, you can bind a Discourse development installation to a custom IP address or public IP. This is typically controlled via your web server or the configuration of the Discourse app itself.
For Discourse running in development mode via the Rails server, you can specify the IP address it binds to when you start the server. By default, it binds to localhost
Here’s how you can do it:
Start the Rails server with a custom IP:
You can specify the IP address and port when you start the Rails server by using the -b
(bind) option:
bundle exec rails server -b 0.0.0.0 -p 3000
Replace 0.0.0.0
with the custom IP address you want to bind to. The 0.0.0.0
address binds it to all available IP addresses on the host machine.
Updating configuration:
Sometimes, you might want to update the Discourse configuration files to set the IP address.
If you want to check the exact configuration options available in the source code, I can look up the specific configuration files within the Discourse repository. Let me know if you want me to retrieve details from specific files.
ok but search the source code there may be a custom ENV var for it…
Searched for 'bind address' in discourse/discourse
Searched for 'bind IP' in discourse/discourse
It appears that the Discourse repository includes a relevant environment variable named UNICORN_BIND_ALL
, which is used in the unicorn
configuration. You can use this environment variable to control the IP address that the Unicorn server binds to. Here are the details:
File: config/unicorn.conf.rb
Code Snippet:
listen ENV["UNICORN_LISTENER"] || "#{(ENV["UNICORN_BIND_ALL"] ? "" : "127.0.0.1:")}#{(ENV["UNICORN_PORT"] || 3000).to_i}"
File: bin/docker/boot_dev
Code Snippet:
-v "$SOURCE_DIR:/src:delegated" \
-e UNICORN_BIND_ALL=true \
$mount_plugin_symlinks \
To bind Discourse to all available IP addresses or a specific IP address, you can set the UNICORN_BIND_ALL
environment variable to true
. Here’s how you could do it:
Bind to All IP Addresses:
export UNICORN_BIND_ALL=true
Specify a Custom IP Address:
If you want to bind to a specific IP address, set the UNICORN_LISTENER
environment variable instead. For example, to bind to the IP address 192.168.1.100
on port 3000
:
export UNICORN_LISTENER="192.168.1.100:3000"
After setting the appropriate environment variable, you can start the Unicorn server normally:
bundle exec rails server -b 0.0.0.0 -p 3000
Setting these environment variables ensures the Unicorn web server component in Discourse will bind to the desired IP address.
Hmmm what about ember cli? can you quote the relevant code as well?
Searched for 'EMBER_CLI' in discourse/discourse
Searched for 'ember server' in discourse/discourse
Searched for 'cli' in discourse/discourse
The search results show various usages and configurations for ember-cli
, but nothing directly related to setting a custom IP address. However, there’s enough information to infer how you can specify custom IP settings for the Ember CLI server in a Discourse development setup.
Here are a few relevant snippets and explanations:
bin/ember-cli
bin/ember-cli
exec "yarn -s --cwd #{YARN_DIR} run ember #{command} --help"
package.json
package.json
"scripts": {
"dev": "concurrently \\\"bin/ember-cli server --environment=development\\\" \\\"RAILS_ENV=development bin/rails server\\\"",
}
To run the Ember CLI server and bind it to a specific IP address, you can pass it as an argument when you start the server. Here’s how:
bin/ember-cli --address 0.0.0.0 --port 4200
Replace 0.0.0.0
with the specific IP address you want to bind to.
For a development environment, you can start both Rails and Ember CLI servers concurrently, ensuring both are accessible from the desired IP:
concurrently "bin/ember-cli --environment=development --address 0.0.0.0 --port 4200" "RAILS_ENV=development bin/rails server -b 0.0.0.0 -p 3000"
The concurrently
command is configured in your package.json
to run both servers simultaneously.
These adjustments should allow you to bind the Ember CLI and Rails server to specific or public IP addresses, making them accessible from other machines on the network.