nginx container to proxy and some visual tweaks
This commit is contained in:
@ -4,7 +4,7 @@ When the GUI is not installed and it is requested, the terminal will auto login
|
||||
|
||||
The historical data is stored locally in a SQLite database which is managed by a Python Flask API. It can be viewed on a web dashboard at port 80.
|
||||
|
||||
There is a live dashboard of currently attched drives on port 3000. This will show all attached drives along with the health data for these drives. This uses a websocket to live-update the data. The catch is I haven't learned how to mix PHP and Node.js sites yet, thus the multiple ports. It sounds to me like the next part of this project is another web server container that is a proxy with both pages. That does not exist yet.
|
||||
The live dashboard is at the root, and the history is at /history, thanks nginx.
|
||||
|
||||
There may be issues with some of the status commands due to hardware differences. I have only found an issue when using the NanoPi devices and have included the corrected string. journalctl is your friend, get to know it.
|
||||
|
||||
|
||||
@ -29,11 +29,12 @@ function fetchSSDData() {
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<button onclick="window.location.reload();" class="title-button"><h1>SSD Health Dashboard</h1></button><p>
|
||||
This lists every disk ever scanned by this device.<br>
|
||||
|
||||
<?php
|
||||
echo "For a live dashboard, please visit <a href=http://{$_SERVER['HTTP_HOST']}:3000/>this link</a>.<p>";
|
||||
<button onclick="window.location.reload();" class="title-button"><h2>SSD Health Dashboard</h2></button><br>
|
||||
This is a historical list of every disk ever scanned by this device.<p>
|
||||
For a live dashboard, please visit <a href=/>home</a>.
|
||||
</div>
|
||||
<div class="container">
|
||||
<?php
|
||||
$ssdData = fetchSSDData(); // Fetch data from the API
|
||||
// Start the table
|
||||
echo '<table class="ssd-list" style="border-collapse:collapse;width:100%;">';
|
||||
|
||||
@ -16,12 +16,10 @@ body {
|
||||
background-color: #34495e;
|
||||
border: none;
|
||||
color: white;
|
||||
padding: 15px 32px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
margin: 4px 2px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
39
files/nginx/nginx.conf
Normal file
39
files/nginx/nginx.conf
Normal file
@ -0,0 +1,39 @@
|
||||
# nginx.conf
|
||||
# This file will be mounted into /etc/nginx/conf.d/default.conf inside the container
|
||||
|
||||
# Enable proxy buffers (optional but recommended)
|
||||
proxy_buffering on;
|
||||
proxy_buffers 16 16k;
|
||||
proxy_buffer_size 32k;
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# Proxy everything under "/" to the Node backend
|
||||
# --------------------------------------------------------------------
|
||||
location / {
|
||||
proxy_pass http://172.17.0.1:3000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# Proxy everything under "/history" to the Apache backend
|
||||
# --------------------------------------------------------------------
|
||||
location /history/ {
|
||||
proxy_pass http://172.17.0.1:8080/;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
|
||||
# Optional: If you want `/history` (without trailing slash) to be
|
||||
# redirected to `/history/`:
|
||||
location = /history {
|
||||
return 301 /history/;
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,6 +8,11 @@
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h2>Live Dashboard</h2>
|
||||
This dashboard shows the currently attached drives along with their health status.<p>
|
||||
For a history of all drives attached, you can visit <a href=/history>here</a>.
|
||||
</div>
|
||||
<div class="container">
|
||||
<h2>Attached Disks</h2>
|
||||
<div id="disk_table" class="column">Connecting…</div>
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
owner: root
|
||||
group: root
|
||||
|
||||
- name: drive history dashboard - copy files for docker container
|
||||
- name: drive history dashboard - copy files for history dashboard
|
||||
copy:
|
||||
src: "dashboard/"
|
||||
dest: "{{ service_control_web_folder }}/html"
|
||||
@ -24,6 +24,14 @@
|
||||
owner: root
|
||||
group: root
|
||||
|
||||
- name: drive history dashboard - copy files for proxy container
|
||||
copy:
|
||||
src: "nginx/"
|
||||
dest: "{{ service_control_web_folder }}/proxy"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: root
|
||||
|
||||
- name: websocket tasks
|
||||
when: not quick_refresh | bool
|
||||
block:
|
||||
|
||||
@ -4,7 +4,7 @@ services:
|
||||
container_name: web_dash
|
||||
image: php:8.0-apache
|
||||
ports:
|
||||
- 80:80
|
||||
- 172.17.0.1:8080:80
|
||||
volumes:
|
||||
- ./html:/var/www/html/
|
||||
network_mode: bridge
|
||||
@ -14,15 +14,30 @@ services:
|
||||
container_name: ws_node
|
||||
image: ws_node
|
||||
ports:
|
||||
- 3000:3000
|
||||
- 172.17.0.1:3000:3000
|
||||
network_mode: bridge
|
||||
restart: always
|
||||
depends_on:
|
||||
- redis
|
||||
|
||||
redis:
|
||||
container_name: redis
|
||||
image: redis:7-alpine
|
||||
network_mode: bridge
|
||||
restart: always
|
||||
ports:
|
||||
- 172.17.0.1:6379:6379
|
||||
network_mode: bridge
|
||||
restart: always
|
||||
|
||||
nginx_proxy:
|
||||
container_name: nginx_proxy
|
||||
image: nginx:latest
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- ./proxy/nginx.conf:/etc/nginx/conf.d/default.conf
|
||||
network_mode: bridge
|
||||
restart: always
|
||||
depends_on:
|
||||
- web_dash
|
||||
- ws_node
|
||||
|
||||
|
||||
Reference in New Issue
Block a user