# Nginx reverse-proxy config for Mnemosyne. # Place in /etc/nginx/conf.d/ (RHEL/AlmaLinux) or /etc/nginx/sites-available/ (Debian/Ubuntu). # Replace mnemosyne.example.com with your actual subdomain. # Assumes Let's Encrypt cert managed by certbot. server { listen 80; server_name mnemosyne.example.com; # certbot will add a redirect here return 301 https://$host$request_uri; } server { listen 443 ssl; server_name mnemosyne.example.com; ssl_certificate /etc/letsencrypt/live/mnemosyne.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mnemosyne.example.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # Only expose the webhook path; deny everything else location /hook/ { proxy_pass http://127.0.0.1:8765; proxy_http_version 1.1; 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; # Forward Telegram's secret-token header proxy_pass_header X-Telegram-Bot-Api-Secret-Token; } location / { return 404; } }