[{"data":1,"prerenderedAt":311},["ShallowReactive",2],{"nav-docs":3,"nav-api":60,"docs-troubleshooting":89},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,12,16,20,24,28,32,36,40,44,48,52,56],{"title":10,"path":6,"stem":11},"Installation","docs\u002Findex",{"title":13,"path":14,"stem":15},"Sending files","\u002Fdocs\u002Fsending-files","docs\u002F02.sending-files",{"title":17,"path":18,"stem":19},"Receiving files","\u002Fdocs\u002Freceiving-files","docs\u002F03.receiving-files",{"title":21,"path":22,"stem":23},"Passwords, galleries and backgrounds","\u002Fdocs\u002Fshare-options","docs\u002F04.share-options",{"title":25,"path":26,"stem":27},"Expiry and deletion","\u002Fdocs\u002Fexpiry","docs\u002F05.expiry",{"title":29,"path":30,"stem":31},"Users","\u002Fdocs\u002Fusers","docs\u002F06.users",{"title":33,"path":34,"stem":35},"Configuration","\u002Fdocs\u002Fconfiguration","docs\u002F07.configuration",{"title":37,"path":38,"stem":39},"Colours and branding","\u002Fdocs\u002Fcolors","docs\u002F08.colors",{"title":41,"path":42,"stem":43},"Docker","\u002Fdocs\u002Fdocker","docs\u002F09.docker",{"title":45,"path":46,"stem":47},"API keys","\u002Fdocs\u002Fapi-keys","docs\u002F10.api-keys",{"title":49,"path":50,"stem":51},"MCP server","\u002Fdocs\u002Fmcp-server","docs\u002F11.mcp-server",{"title":53,"path":54,"stem":55},"Troubleshooting","\u002Fdocs\u002Ftroubleshooting","docs\u002F12.troubleshooting",{"title":57,"path":58,"stem":59},"Contributing","\u002Fdocs\u002Fcontributing","docs\u002F13.contributing",[61],{"title":62,"path":63,"stem":64,"children":65},"Api","\u002Fapi","api",[66,69,73,77,81,85],{"title":67,"path":63,"stem":68},"REST API","api\u002Findex",{"title":70,"path":71,"stem":72},"Transfers","\u002Fapi\u002Ftransfers","api\u002F02.transfers",{"title":74,"path":75,"stem":76},"Uploading files","\u002Fapi\u002Fupload","api\u002F03.upload",{"title":78,"path":79,"stem":80},"Sending a transfer","\u002Fapi\u002Fsend","api\u002F04.send",{"title":82,"path":83,"stem":84},"Downloading","\u002Fapi\u002Fdownload","api\u002F05.download",{"title":86,"path":87,"stem":88},"Recipients","\u002Fapi\u002Frecipients","api\u002F06.recipients",{"id":90,"title":53,"body":91,"description":260,"extension":306,"meta":307,"navigation":308,"path":54,"seo":309,"stem":55,"__hash__":310},"docs\u002Fdocs\u002F12.troubleshooting.md",{"type":92,"value":93,"toc":295},"minimark",[94,98,103,116,120,135,138,142,148,152,195,199,213,217,224,227,231,250,254,276,291],[95,96,53],"h1",{"id":97},"troubleshooting",[99,100,102],"h2",{"id":101},"uploads-fail-at-a-certain-size","Uploads fail at a certain size",[104,105,106,107,111,112,115],"p",{},"Almost always the reverse proxy rather than the app. nginx defaults\n",[108,109,110],"code",{},"client_max_body_size"," to 1 MB and rejects the request before it reaches\nLokalTransfer. Raise it to match ",[108,113,114],{},"NUXT_MAX_FILE_SIZE_MB",", and raise the read\ntimeouts while you are there — a slow upload of a large file takes time.",[99,117,119],{"id":118},"sign-in-appears-to-do-nothing","Sign-in appears to do nothing",[104,121,122,123,126,127,130,131,134],{},"The session cookie is being discarded. It is marked ",[108,124,125],{},"secure"," when\n",[108,128,129],{},"NODE_ENV=production"," or when the request carries ",[108,132,133],{},"X-Forwarded-Proto: https",", so\na browser on HTTPS behind a proxy that does not forward the protocol will throw\nit away silently.",[104,136,137],{},"Configure the proxy to send that header.",[99,139,141],{"id":140},"links-in-e-mails-point-at-localhost","Links in e-mails point at localhost",[104,143,144,147],{},[108,145,146],{},"NUXT_APP_URL"," is still the default. Every download and magic link is built from\nit. Set it to the address recipients actually reach and restart.",[99,149,151],{"id":150},"the-interface-is-in-the-wrong-language","The interface is in the wrong language",[104,153,154,157,158,161,162,161,165,161,168,161,171,161,174,161,177,161,180,161,183,186,187,190,191,194],{},[108,155,156],{},"NUXT_LANGUAGE"," sets both the interface and outbound mail, and takes one of\n",[108,159,160],{},"en",", ",[108,163,164],{},"de",[108,166,167],{},"fr",[108,169,170],{},"es",[108,172,173],{},"it",[108,175,176],{},"nl",[108,178,179],{},"pl",[108,181,182],{},"uk",[108,184,185],{},"pt"," or ",[108,188,189],{},"cs"," — anything else\nfalls back to English. If only the mail changed, you are on a version before 0.1.2 — earlier builds reached only the\nserver-side half of that setting. Upgrade, or set ",[108,192,193],{},"NUXT_PUBLIC_LANGUAGE"," as\nwell.",[99,196,198],{"id":197},"self-signed-certificate-in-certificate-chain-at-startup","\"self-signed certificate in certificate chain\" at startup",[104,200,201,204,205,208,209,212],{},[108,202,203],{},"NUXT_MYSQL_SSL=true"," against a local MySQL, which presents a self-signed\ncertificate. Set it to ",[108,206,207],{},"false"," for a local database; keep it ",[108,210,211],{},"true"," only for a\nmanaged one that requires TLS.",[99,214,216],{"id":215},"expired-files-are-still-on-disk","Expired files are still on disk",[104,218,219,220,223],{},"The sweep runs every 15 minutes inside the app's own process. If the app is\ndeployed somewhere that starts a process per request, the timer never fires.\nRun it as a long-lived process — ",[108,221,222],{},"node .output\u002Fserver\u002Findex.mjs",", or the Docker\nimage.",[104,225,226],{},"Expiry itself still holds: an expired transfer is refused at download time\nregardless.",[99,228,230],{"id":229},"colours-are-ignored","Colours are ignored",[104,232,233,234,237,238,241,242,244,245,249],{},"The hex is unquoted in ",[108,235,236],{},".env",", so ",[108,239,240],{},"#"," started a comment and the value is empty.\nQuote it, or write the hex without the ",[108,243,240],{},". See ",[246,247,248],"a",{"href":38},"Colours",".",[99,251,253],{"id":252},"checking-the-instance","Checking the instance",[255,256,261],"pre",{"className":257,"code":258,"language":259,"meta":260,"style":260},"language-bash shiki shiki-themes github-light github-dark","curl https:\u002F\u002Ftransfer.example.com\u002Fapi\u002Fhealth\n","bash","",[108,262,263],{"__ignoreMap":260},[264,265,268,272],"span",{"class":266,"line":267},"line",1,[264,269,271],{"class":270},"sScJk","curl",[264,273,275],{"class":274},"sZZnC"," https:\u002F\u002Ftransfer.example.com\u002Fapi\u002Fhealth\n",[104,277,278,281,282,286,287,290],{},[108,279,280],{},"{\"status\":\"ok\"}"," means the app is up ",[283,284,285],"strong",{},"and"," the database is reachable. ",[108,288,289],{},"503","\nmeans it is not — which is the more useful answer than a process that is\nlistening but broken.",[292,293,294],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":260,"searchDepth":296,"depth":296,"links":297},2,[298,299,300,301,302,303,304,305],{"id":101,"depth":296,"text":102},{"id":118,"depth":296,"text":119},{"id":140,"depth":296,"text":141},{"id":150,"depth":296,"text":151},{"id":197,"depth":296,"text":198},{"id":215,"depth":296,"text":216},{"id":229,"depth":296,"text":230},{"id":252,"depth":296,"text":253},"md",{},true,{"title":53,"description":260},"stowUfiJElekdGuu4N6BxHfInI17OsMGYERnktiwcyY",1790104591923]