Build image / build (push) Successful in 3m18s
- Dockerfile bakes the app and every CSV in data/ into an nginx image - UI discovers data/*.csv via nginx JSON autoindex and offers a dropdown when there is more than one dataset - docker-entrypoint.d/40-basic-auth.sh creates .htpasswd from BASIC_AUTH_USER / BASIC_AUTH_PASSWORD(_FILE) and refuses to start without credentials; replaces set-password.sh - Gitea Actions workflow builds and pushes registry.traberph.de/public/interval_viz (latest, sha-*, semver) - Escape resets the chart zoom Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
875 B
Plaintext
38 lines
875 B
Plaintext
server {
|
|
listen 80;
|
|
server_name _;
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
server_tokens off;
|
|
charset utf-8;
|
|
|
|
gzip on;
|
|
gzip_comp_level 6;
|
|
gzip_types text/css text/csv application/javascript application/json;
|
|
|
|
auth_basic "Heatpump";
|
|
auth_basic_user_file /etc/nginx/.htpasswd;
|
|
|
|
location / {
|
|
try_files $uri $uri/ =404;
|
|
include /etc/nginx/security-headers.conf;
|
|
}
|
|
|
|
# data/ is listed as JSON so the UI can discover the CSV files
|
|
location /data/ {
|
|
autoindex on;
|
|
autoindex_format json;
|
|
default_type text/csv;
|
|
include /etc/nginx/security-headers.conf;
|
|
}
|
|
|
|
# unauthenticated liveness probe for the container healthcheck
|
|
location = /healthz {
|
|
auth_basic off;
|
|
access_log off;
|
|
default_type text/plain;
|
|
return 200 "ok\n";
|
|
}
|
|
}
|