[{"data":1,"prerenderedAt":444},["ShallowReactive",2],{"\u002Fdocs\u002Fself-hosting\u002Ffirst-run":3},{"id":4,"title":5,"body":6,"description":436,"extension":437,"meta":438,"navigation":439,"path":440,"seo":441,"stem":442,"__hash__":443},"docs\u002Fdocs\u002Fself-hosting\u002Ffirst-run.md","First Run & Admin Setup",{"type":7,"value":8,"toc":425},"minimark",[9,13,17,22,25,75,83,172,179,189,252,265,269,272,303,312,316,319,361,369,373,421],[10,11,5],"h1",{"id":12},"first-run-admin-setup",[14,15,16],"p",{},"Your instance is running and reachable over HTTPS. Now let's claim it.",[18,19,21],"h2",{"id":20},"the-initial-admin-account","The initial admin account",[14,23,24],{},"When the API starts with an empty database, it creates one administrator:",[26,27,28,41],"table",{},[29,30,31],"thead",{},[32,33,34,38],"tr",{},[35,36,37],"th",{},"Field",[35,39,40],{},"Value",[42,43,44,56,67],"tbody",{},[32,45,46,50],{},[47,48,49],"td",{},"Username",[47,51,52],{},[53,54,55],"code",{},"admin",[32,57,58,61],{},[47,59,60],{},"Email",[47,62,63,66],{},[53,64,65],{},"admin@delivr.local"," (placeholder — change it)",[32,68,69,72],{},[47,70,71],{},"Password",[47,73,74],{},"none — set it with a one-time link",[14,76,77,78,82],{},"Instead of printing a default password, Delivr generates a ",[79,80,81],"strong",{},"one-time password-reset link",". It's written to the API log and to a file in the config directory (readable only by its owner):",[84,85,86,139],"code-group",{},[87,88,94],"pre",{"className":89,"code":90,"filename":91,"language":92,"meta":93,"style":93},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo docker compose logs delivr-api | grep reset-password\nsudo cat .\u002Fconfig\u002Finitial_admin_password_reset_token.txt\n","Docker","bash","",[53,95,96,128],{"__ignoreMap":93},[97,98,101,105,109,112,115,118,122,125],"span",{"class":99,"line":100},"line",1,[97,102,104],{"class":103},"sBMFI","sudo",[97,106,108],{"class":107},"sfazB"," docker",[97,110,111],{"class":107}," compose",[97,113,114],{"class":107}," logs",[97,116,117],{"class":107}," delivr-api",[97,119,121],{"class":120},"sMK4o"," |",[97,123,124],{"class":103}," grep",[97,126,127],{"class":107}," reset-password\n",[97,129,131,133,136],{"class":99,"line":130},2,[97,132,104],{"class":103},[97,134,135],{"class":107}," cat",[97,137,138],{"class":107}," .\u002Fconfig\u002Finitial_admin_password_reset_token.txt\n",[87,140,143],{"className":89,"code":141,"filename":142,"language":92,"meta":93,"style":93},"sudo journalctl -u delivr-api | grep reset-password\nsudo cat \u002Fopt\u002Fdelivr\u002Fapi\u002Fconfig\u002Finitial_admin_password_reset_token.txt\n","systemd",[53,144,145,163],{"__ignoreMap":93},[97,146,147,149,152,155,157,159,161],{"class":99,"line":100},[97,148,104],{"class":103},[97,150,151],{"class":107}," journalctl",[97,153,154],{"class":107}," -u",[97,156,117],{"class":107},[97,158,121],{"class":120},[97,160,124],{"class":103},[97,162,127],{"class":107},[97,164,165,167,169],{"class":99,"line":130},[97,166,104],{"class":103},[97,168,135],{"class":107},[97,170,171],{"class":107}," \u002Fopt\u002Fdelivr\u002Fapi\u002Fconfig\u002Finitial_admin_password_reset_token.txt\n",[14,173,174,175,178],{},"The link looks like ",[53,176,177],{},"https:\u002F\u002Fmail.example.com\u002Fauth\u002Freset-password?token=…",".",[180,181,182],"warning",{},[14,183,184,185,188],{},"The link is valid for ",[79,186,187],{},"7 days"," and works once. Treat it like a password: anyone who has it can take over the admin account. Once you've used it, delete the file.",[190,191,193,198,203,207,217,221],"steps",{"level":192},"3",[194,195,197],"h3",{"id":196},"set-the-admin-password","Set the admin password",[14,199,200,201,178],{},"Open the link, choose a strong password, and sign in as ",[53,202,55],{},[194,204,206],{"id":205},"replace-the-placeholder-email-address","Replace the placeholder email address",[14,208,209,210,213,214,216],{},"Go to ",[79,211,212],{},"Settings → General"," and change the email address from ",[53,215,65],{}," to a real one (you'll confirm with your current password). Password-reset emails for the admin go to this address.",[194,218,220],{"id":219},"delete-the-setup-file","Delete the setup file",[87,222,224],{"className":89,"code":223,"language":92,"meta":93,"style":93},"sudo rm .\u002Fconfig\u002Finitial_admin_password_reset_token.txt                 # Docker\nsudo rm \u002Fopt\u002Fdelivr\u002Fapi\u002Fconfig\u002Finitial_admin_password_reset_token.txt   # systemd\n",[53,225,226,240],{"__ignoreMap":93},[97,227,228,230,233,236],{"class":99,"line":100},[97,229,104],{"class":103},[97,231,232],{"class":107}," rm",[97,234,235],{"class":107}," .\u002Fconfig\u002Finitial_admin_password_reset_token.txt",[97,237,239],{"class":238},"sHwdD","                 # Docker\n",[97,241,242,244,246,249],{"class":99,"line":130},[97,243,104],{"class":103},[97,245,232],{"class":107},[97,247,248],{"class":107}," \u002Fopt\u002Fdelivr\u002Fapi\u002Fconfig\u002Finitial_admin_password_reset_token.txt",[97,250,251],{"class":238},"   # systemd\n",[253,254,255],"tip",{},[14,256,257,260,261,264],{},[79,258,259],{},"Link expired before you used it?"," On a brand-new instance with no data yet, stop the API, delete the database file (",[53,262,263],{},"data\u002Fdb.sqlite","), and start again. Delivr creates a fresh admin account with a new link.",[18,266,268],{"id":267},"create-user-accounts","Create user accounts",[14,270,271],{},"Delivr is a multi-user instance. Administrators create accounts for everyone else:",[273,274,275,283,286,297],"ol",{},[276,277,278,279,282],"li",{},"Open ",[79,280,281],{},"Admin → Users"," in the sidebar.",[276,284,285],{},"Create a user with a username, display name, email address, and an initial password (at least 8 characters).",[276,287,288,289,292,293,296],{},"Choose the role: ",[79,290,291],{},"User"," for regular accounts, ",[79,294,295],{},"Admin"," for people who manage the instance.",[276,298,299,300,178],{},"Share the credentials securely. Users can change their password under ",[79,301,302],{},"Settings → Security",[14,304,305,306,311],{},"See ",[307,308,310],"a",{"href":309},"\u002Fdocs\u002Fguide\u002Fadministration","Administration"," for the full set of admin tools.",[18,313,315],{"id":314},"connect-the-first-mailbox","Connect the first mailbox",[14,317,318],{},"Each user connects their own mail accounts — Delivr doesn't need access to your mail server in advance.",[273,320,321,324,340],{},[276,322,323],{},"After signing in for the first time, Delivr walks you through a short onboarding.",[276,325,326,327,330,331,334,335,339],{},"Add a mail account with its ",[79,328,329],{},"IMAP"," (incoming) and ",[79,332,333],{},"SMTP"," (outgoing) settings. The ",[307,336,338],{"href":337},"\u002Fdocs\u002Fconfiguration\u002Fmail-providers","Mail Provider Settings"," page lists the values for popular providers.",[276,341,342,343,346,347,346,350,346,353,356,357,360],{},"Confirm which folders are your ",[79,344,345],{},"Sent",", ",[79,348,349],{},"Drafts",[79,351,352],{},"Trash",[79,354,355],{},"Spam",", and ",[79,358,359],{},"Archive"," folders. Delivr detects them automatically and asks you to check.",[14,362,363,364,368],{},"That's it — your inbox loads. The ",[307,365,367],{"href":366},"\u002Fdocs\u002Fguide\u002Fgetting-started","User Guide"," covers everything from there.",[18,370,372],{"id":371},"recommended-next-steps","Recommended next steps",[374,375,376,390,400,411],"ul",{},[276,377,378,381,382,389],{},[79,379,380],{},"Enable system email."," Configure the ",[307,383,385,388],{"href":384},"\u002Fdocs\u002Fconfiguration#system-email-smtp",[53,386,387],{},"DLA_SMTP_*"," variables"," so users can reset forgotten passwords themselves.",[276,391,392,395,396,178],{},[79,393,394],{},"Install the app."," Open Delivr on your phone and desktop and ",[307,397,399],{"href":398},"\u002Fdocs\u002Fguide\u002Fgetting-started#install-delivr-as-an-app","install it as a PWA",[276,401,402,405,406,410],{},[79,403,404],{},"Harden the instance."," Walk through the ",[307,407,409],{"href":408},"\u002Fdocs\u002Fself-hosting\u002Fhardening","Production Hardening"," checklist.",[276,412,413,416,417,178],{},[79,414,415],{},"Set up backups."," See ",[307,418,420],{"href":419},"\u002Fdocs\u002Fself-hosting\u002Fupgrading#backups","Updates & Backups",[422,423,424],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":93,"searchDepth":130,"depth":130,"links":426},[427,433,434,435],{"id":20,"depth":130,"text":21,"children":428},[429,431,432],{"id":196,"depth":430,"text":197},3,{"id":205,"depth":430,"text":206},{"id":219,"depth":430,"text":220},{"id":267,"depth":130,"text":268},{"id":314,"depth":130,"text":315},{"id":371,"depth":130,"text":372},"Claim the initial admin account, secure it, create users, and connect the first mailbox to your new Delivr instance.","md",{},{"title":5},"\u002Fdocs\u002Fself-hosting\u002Ffirst-run",{"title":5,"description":436},"docs\u002Fself-hosting\u002Ffirst-run","scgILsppBoFD8CWPzcHyTsURPSxDp9Glp-RpJznRaxg",1791069427474]