Skip to content

How to deploy manually?

[1] Copy from release directory prod/rel/mining_rig_monitor to /opt/mining_rig_monitor.

$ cp ./mining_rig_monitor/_build/prod/rel/mining_rig_monitor /opt/ -rfv

[2] Directory structure of/opt/mining_rig_monitor:

➜ mining_rig_monitor (milestone-1-cleanup) ✗ tree -L 1 /opt/mining_rig_monitor
/opt/mining_rig_monitor
├── bin
├── erts-15.0
├── lib
└── releases

[3] Create a postgresql database with (Docker/Compose/Dbeaver...)

[4] Test run with script before working with systemd service.

export SECRET_KEY_BASE=Mc5oIum6N8aeNdjghwfJQYVE2OQncnqBkCCyaXdA1X/puugR99VvcSuvAqOoGYdW
export DATABASE_URL=ecto://USER:PASS@HOST/database
export PORT=4000
export PHX_HOST=127.0.0.1

# To migrate db
/opt/mining_rig_monitor/bin/migrate

# To start server
/opt/mining_rig_monitor/bin/server
...
00:07:32.076 [notice]     :alarm_handler: {:set, {:system_memory_high_watermark, []}}
00:07:32.090 [info] [AsicMinerOperationalIndex] started.
00:07:32.090 [info] [AsicMinerOperationalIndex][broadcast_operational_data] after 5 seconds
00:07:32.090 [info] [AsicMinerOperationalIndex][nillify_offline_miner] after 5 seconds
00:07:32.100 [info] Running MiningRigMonitorWeb.Endpoint with Bandit 1.5.5 at :::4000 (http)
00:07:32.101 [info] Access MiningRigMonitorWeb.Endpoint at https://127.0.0.1
00:07:35.656 [info] CONNECTED TO Phoenix.LiveView.Socket in 73µs
...


# To stop server
/opt/mining_rig_monitor/bin/mining_rig_monitor stop

[5] Create systemd service /etc/systemd/system/mining_rig_monitor.service

[Unit]
Description=Mining Rig Monitor
After=network.target

[Service]
WorkingDirectory=/opt/mining_rig_monitor
EnvironmentFile=/etc/mining_rig_monitor/mining_rig_monitor.env
ExecStart=/opt/mining_rig_monitor/bin/server
ExecStop=/opt/mining_rig_monitor/bin/mining_rig_monitor stop
User=nguyenvinhlinh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

[6] Create environment file /etc/mining_rig_monitor/mining_rig_monitor.env

SECRET_KEY_BASE=
DATABASE_URL=ecto://USER:PASS@HOST/database
PORT=4000
PHX_HOST=127.0.0.1

Regarding PHX_HOST, modify it to match domain/ip which web browser calling. if not, there will be an error.

[error] Could not check origin for Phoenix.Socket transport.
Origin of the request: http://192.168.1.9:4000
This happens when you are attempting a socket connection to
a different host than the one configured in your config/
files. For example, in development the host is configured
to "localhost" but you may be trying to access it from
"127.0.0.1". To fix this issue, you may either:
  1. update [url: [host: ...]] to your actual host in the
     config file for your current environment (recommended)
  2. pass the :check_origin option when configuring your
     endpoint or when configuring the transport in your
     UserSocket module, explicitly outlining which origins
     are allowed:
        check_origin: ["https://example.com",
                       "//another.com:888", "//other.com"]

and Run systemctl daemon-reload

[7] Start systemd service named mining_rig_monitor

systemctl enable --now mining_rig_monitor

[8] To view log

➜ ~ journalctl -f -u mining_rig_monitor.service
server[1361153]: 00:31:18.061 [info] [AsicMinerOperationalIndex][broadcast_operational_data] Starting.
server[1361153]: 00:31:19.063 [info] [AsicMinerOperationalIndex][broadcast_operational_data] Starting.
server[1361153]: 00:31:20.065 [info] [AsicMinerOperationalIndex][broadcast_operational_data] Starting.
server[1361153]: 00:31:21.067 [info] [AsicMinerOperationalIndex][broadcast_operational_data] Starting.
server[1361153]: 00:31:22.069 [info] [AsicMinerOperationalIndex][broadcast_operational_data] Starting.
server[1361153]: 00:31:23.071 [info] [AsicMinerOperationalIndex][broadcast_operational_data] Starting.
server[1361153]: 00:31:23.754 [info] [AsicMinerOperationalIndex][nillify_offline_miner] Starting.

Now, you can visit http://127.0.0.1:4000.

Login page

To create account, please check Release Commands Page