Manual Deployment
General deployment instructions for a hardware or cloud services environment
For automated deployment on AWS, see Ansible deployment.
Check your environment is prepared with General Requirements and Database Storage Requirements.
BlockScout requires a full archive node in order to import every state change for every address on the target network. For client specific settings related to a node running parity or geth, please see Client Settings.
For testing purposes, instead of an archive node, a test Ethereum client can be used. For instance, ganache-cli

Deployment Steps

1) git clone https://github.com/poanetwork/blockscout
2) cd blockscout
3) Provide DB URL: export DATABASE_URL=postgresql://user:[email protected]:5432/blockscout
  • Linux: Update the database username and password configuration
  • Mac: Use logged-in user name and empty password
  • Optional: Change credentials in apps/explorer/config/test.exs for test env
Example usage: Changing the default Postgres port from localhost:5432 if Boxen is installed.
4) Generate a new secret_key_base for the DB by setting a corresponding ENV var: export SECRET_KEY_BASE=VTIB3uHDNbvrY0+60ZWgUoUBKDn9ppLR8MI4CpRz4/qLyEFs54ktJfaNT6Z221No
In order to generate a new secret_key_base run mix phx.gen.secret
5) If you have deployed previously, remove static assets from the previous build mix phx.digest.clean.
6) Set other environment variables as needed.
CLI Example:
1
export ETHEREUM_JSONRPC_VARIANT=parity
2
export ETHEREUM_JSONRPC_HTTP_URL=http://localhost:8545
3
export DATABASE_URL=postgresql://...
4
export COIN=DAI
5
export ...
Copied!
The ETHEREUM_JSONRPC_VARIANT will vary depending on your client (parity, geth etc). More information on client settings.
7) Install Mix dependencies, compile them and compile the application:mix do deps.get, local.rebar --force, deps.compile, compile
8) If not already running, start Postgres: pg_ctl -D /usr/local/var/postgres start
To check postgres status: pg_isready
9) Create and migrate database mix do ecto.create, ecto.migrate
If you in dev environment and have run the application previously with the different blockchain, drop the previous database mix do ecto.drop, ecto.create, ecto.migrate Be careful since it will delete all data from the DB. Don't execute it on production if you don't want to lose all the data!
10) Install Node.js dependencies
  • cd apps/block_scout_web/assets; npm install && node_modules/webpack/bin/webpack.js --mode production; cd -
  • cd apps/explorer && npm install; cd -
11) Build static assets for deployment mix phx.digest
12) Enable HTTPS in development. The Phoenix server only runs with HTTPS.
  • cd apps/block_scout_web; mix phx.gen.cert blockscout blockscout.local; cd -
  • Add blockscout and blockscout.local to your /etc/hosts
1
127.0.0.1 localhost blockscout blockscout.local
2
3
255.255.255.255 broadcasthost
4
5
::1 localhost blockscout blockscout.local
Copied!
If using Chrome, Enable chrome://flags/#allow-insecure-localhost
13) Return to the root directory and start the Phoenix Server. mix phx.server

Last modified 3mo ago
Export as PDF
Copy link