Add gpodder-rs setup

This commit is contained in:
2025-09-27 01:15:39 -05:00
parent 64ea7cb6e6
commit 865c02a3a4
2 changed files with 37 additions and 16 deletions

View File

@@ -30,6 +30,8 @@ networks:
external: false
gitea:
external: false
gpodder:
external: false
services:
web:
image: "nginx"
@@ -50,6 +52,7 @@ services:
- jellyfin-int
- auth
- gitea
- gpodder
depends_on:
- jellyfin
- ollama-webui
@@ -57,6 +60,7 @@ services:
- authelia
- qbittorrent
- gitea
- gpodder
logging: &logging
options:
max-size: "50m"
@@ -144,6 +148,13 @@ services:
logging: *logging
depends_on:
- gitea
gpodder:
image: gitea.loadingm.xyz/the10thwiz/gpodder-rs:latest
networks:
- gpodder
volumes:
- /data/gpodder:/data
logging: *logging
# calibre:
# image: "linuxserver/calibre-web"
# 5d-diplomacy-frontend:

View File

@@ -48,23 +48,33 @@ server {
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
ssl_trusted_certificate /etc/letsencrypt/live/loadingm.xyz/chain.pem;
root /data/site;
# Security / XSS Mitigation Headers
add_header X-Content-Type-Options "nosniff";
location /hosted {
index index.html;
autoindex on;
# Permissions policy. May cause issues with some clients
add_header Permissions-Policy "accelerometer=(), ambient-light-sensor=(), battery=(), bluetooth=(), camera=(), clipboard-read=(), display-capture=(), document-domain=(), encrypted-media=(), gamepad=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), interest-cohort=(), keyboard-map=(), local-fonts=(), magnetometer=(), microphone=(), payment=(), publickey-credentials-get=(), serial=(), sync-xhr=(), usb=(), xr-spatial-tracking=()" always;
# Content Security Policy
# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
# Enforces https content and restricts JS/CSS to origin
# External Javascript (such as cast_sender.js for Chromecast) must be whitelisted.
add_header Content-Security-Policy "default-src https: data: blob: ; img-src 'self' https://* ; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://www.gstatic.com https://www.youtube.com blob:; worker-src 'self' blob:; connect-src 'self'; object-src 'none'; frame-ancestors 'self'; font-src 'self'";
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# Proxy main karakeep traffic
proxy_pass http://gpodder: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_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
# Disable buffering when the nginx proxy gets very resource heavy upon streaming
proxy_buffering off;
}
}