Skip to content

How to deploy with rpm?

[1] RPM Install

Go to https://github.com/nguyenvinhlinh/Mining-Rig-Monitor/releases/tag/v1.0.0 and download mining-rig-monitor-1.0.0-1.fc40.x86_64.rpm.

cd ~/Downloads/
wget https://github.com/nguyenvinhlinh/Mining-Rig-Monitor/releases/download/v1.0.0/mining-rig-monitor-1.0.0-1.fc40.x86_64.rpm

Install .rpm file with dnf.

dnf install ~/Downloads/mining-rig-monitor-1.0.0-1.fc40.x86_64.rpm

Total size: 9.6 M
Installed size: 128 M
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                      1/1
  Installing       : mining-rig-monitor-1.0.0-1.fc40.x86_64                                                                                                                                                                               1/1
  Running scriptlet: mining-rig-monitor-1.0.0-1.fc40.x86_64                                                                                                                                                                               1/1

Installed:
  mining-rig-monitor-1.0.0-1.fc40.x86_64

Complete!

Check /opt/mining_rig_monitor for more details. Running dnf install do copy files to /opt/mining_rig_monitor.

[2] 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

[3] 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

[4] 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

[5] Start systemd service named mining_rig_monitor

systemctl enable --now mining_rig_monitor

[6] 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

[7] How to migrate database while deploy with RPM?

To migrate database, you need to run /opt/mining_rig_monitor/bin/migrate. But keep in mind that, you will need - SECRET_KEY_BASE - DATABASE_URL

These two variables can be found in /etc/mining_rig_monitor/mining_rig_monitor.env (see step [3]).

export SECRET_KEY_BASE=XXX
export DATABASE_URL=XXX
/opt/mining_rig_monitor/bin/migrate