let port = 5984; certloc = "/var/lib/acme/fi33.buzz"; in { services = { couchdb = { enable = true; databaseDir = "/srv/couchdb"; viewIndexDir = "/srv/couchdb"; configFile = "/srv/couchdb"; inherit port; extraConfig = { chttpd = { require_valid_user = true; enable_cors = true; max_http_request_size = 4294967296; }; chttpd_auth.require_valid_user = true; httpd = { WWW-Authenticate = ''Basic realm="couchdb"''; enable_cors = true; }; couchdb.max_document_size = 50000000; cors = { credentials = true; origins = '' app://obsidian.md,capacitor://localhost,http://localhost,https://localhost,capacitor://couchdb.fi33.buzz,http://couchdb.fi33.buzz,https://couchdb.fi33.buzz ''; }; }; }; caddy.virtualHosts."couchdb.fi33.buzz".extraConfig = '' forward_auth unix//run/tailscale-nginx-auth/tailscale-nginx-auth.sock { uri /auth header_up Remote-Addr {remote_host} header_up Remote-Port {remote_port} header_up Original-URI {uri} copy_headers { Tailscale-User>X-Webauth-User Tailscale-Name>X-Webauth-Name Tailscale-Login>X-Webauth-Login Tailscale-Tailnet>X-Webauth-Tailnet Tailscale-Profile-Picture>X-Webauth-Profile-Picture } } reverse_proxy localhost:${toString port} tls ${certloc}/cert.pem ${certloc}/key.pem { protocols tls1.3 } ''; }; }