Add GoAccess metrics dashboard with WebSocket support

- Add GoAccess package to Docker container
- Create GoAccess startup script with real-time HTML generation
- Add metrics.ralsina.me server block with authentication
- Configure WebSocket proxy for live metrics updates
- Add password protection with .htpasswd
- Fix WebSocket URL to use proper HTTPS endpoint
- Update all server blocks to listen on 0.0.0.0:8080 for Fly.io compatibility

Co-Authored-By: z.ai LGM 4.5 <noreply@z.ai>
This commit is contained in:
2025-10-03 10:53:26 -03:00
parent 493c5528ce
commit 7b5ce1a5e8
6 changed files with 136 additions and 12 deletions

View File

@@ -1,3 +1,4 @@
# Map for CORS
map $upstream_http_access_control_allow_origin $allow_origin {
'' "*";
}
@@ -24,7 +25,7 @@ map $http_user_agent $is_unknown_ua {
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name faaso-prod.ralsina.me;
@@ -47,7 +48,7 @@ server {
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name tocry-demo.ralsina.me;
@@ -70,7 +71,7 @@ server {
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name grafito-demo.ralsina.me;
@@ -93,7 +94,7 @@ server {
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name code.ralsina.me;
@@ -120,7 +121,7 @@ server {
}
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name home.ralsina.me;
@@ -159,7 +160,7 @@ server {
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name links.ralsina.me;
@@ -184,7 +185,7 @@ server {
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name git.ralsina.me;
@@ -209,7 +210,7 @@ server {
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name gotify.ralsina.me;
@@ -253,7 +254,7 @@ server {
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name faas.ralsina.me;
@@ -276,7 +277,7 @@ server {
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name snips.ralsina.me;
@@ -294,7 +295,50 @@ server {
}
server {
listen 8080;
listen 0.0.0.0:8080;
listen [::]:8080;
server_name metrics.ralsina.me;
auth_basic "Metrics Dashboard - Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
# Serve static HTML directly
location / {
root /usr/share/nginx/html/goaccess;
try_files /index.html @goaccess;
}
location @goaccess {
proxy_pass http://127.0.0.1:7890;
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_set_header X-Forwarded-Proto $scheme;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
# WebSocket endpoint for GoAccess
location /ws {
proxy_pass http://127.0.0.1:7890;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
}
}
server {
listen 0.0.0.0:8080;
listen [::]:8080;
server_name covers.ralsina.me;