nginx container to proxy and some visual tweaks

This commit is contained in:
2025-11-30 23:32:53 -08:00
parent 96e874239a
commit 4096f7165c
7 changed files with 78 additions and 12 deletions

View File

@ -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.

View File

@ -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%;">';

View File

@ -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
View 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/;
}
}

View File

@ -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>

View File

@ -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:

View File

@ -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
ports:
- 172.17.0.1:6379:6379
network_mode: bridge
restart: always
nginx_proxy:
container_name: nginx_proxy
image: nginx:latest
ports:
- 172.17.0.1:6379:6379
- "80:80"
volumes:
- ./proxy/nginx.conf:/etc/nginx/conf.d/default.conf
network_mode: bridge
restart: always
depends_on:
- web_dash
- ws_node