[{"data":1,"prerenderedAt":209},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fself-hosting\u002Feasypanel":3,"github-stars":206},{"id":4,"title":5,"body":6,"description":197,"extension":198,"meta":199,"navigation":200,"order":116,"path":201,"section":202,"seo":203,"stem":204,"__hash__":205},"docs\u002Fdocs\u002Fself-hosting\u002Feasypanel.md","EasyPanel",{"type":7,"value":8,"toc":190},"minimark",[9,14,24,29,37,41,57,61,68,96,100,103,150,164,168,171,186],[10,11,13],"h1",{"id":12},"deploy-on-easypanel","Deploy on EasyPanel",[15,16,17,23],"p",{},[18,19,5],"a",{"href":20,"rel":21},"https:\u002F\u002Feasypanel.io",[22],"nofollow"," gives you a UI over Docker with managed\ndomains and TLS. Clerq runs on it as two services: a Postgres database and the\npublished app image. The app migrates the database itself on first boot.",[25,26,28],"h2",{"id":27},"_1-create-a-project","1. Create a project",[15,30,31,32,36],{},"In EasyPanel, create a new project to hold both services (for example,\n",[33,34,35],"code",{},"clerq",").",[25,38,40],{"id":39},"_2-add-a-postgres-service","2. Add a Postgres service",[15,42,43,44,48,49,52,53,56],{},"Add a service from the ",[45,46,47],"strong",{},"Postgres"," template. Note the credentials and the\ninternal host EasyPanel assigns it (commonly the service name, e.g.\n",[33,50,51],{},"clerq_postgres",") - you will reference them in the app's ",[33,54,55],{},"DATABASE_URL",".",[25,58,60],{"id":59},"_3-add-the-app-service","3. Add the app service",[15,62,63,64,67],{},"Add an ",[45,65,66],{},"App"," service with:",[69,70,71,78,87],"ul",{},[72,73,74,77],"li",{},[45,75,76],{},"Source",": Docker image",[72,79,80,83,84],{},[45,81,82],{},"Image",": ",[33,85,86],{},"ghcr.io\u002Fpunterdigital\u002Fclerq:latest",[72,88,89,83,92,95],{},[45,90,91],{},"Port",[33,93,94],{},"3000"," (the proxy maps your domain to this)",[25,97,99],{"id":98},"_4-set-environment-variables","4. Set environment variables",[15,101,102],{},"On the app service, set:",[104,105,110],"pre",{"className":106,"code":107,"language":108,"meta":109,"style":109},"language-bash shiki shiki-themes github-dark","DATABASE_URL=postgresql:\u002F\u002Fpostgres:PASSWORD@clerq_postgres:5432\u002Fpostgres\nBETTER_AUTH_SECRET=a-32-char-random-secret\nBETTER_AUTH_URL=https:\u002F\u002Fclerq.your-domain.com\n","bash","",[33,111,112,128,139],{"__ignoreMap":109},[113,114,117,120,124],"span",{"class":115,"line":116},"line",1,[113,118,55],{"class":119},"s95oV",[113,121,123],{"class":122},"snl16","=",[113,125,127],{"class":126},"sU2Wk","postgresql:\u002F\u002Fpostgres:PASSWORD@clerq_postgres:5432\u002Fpostgres\n",[113,129,131,134,136],{"class":115,"line":130},2,[113,132,133],{"class":119},"BETTER_AUTH_SECRET",[113,135,123],{"class":122},[113,137,138],{"class":126},"a-32-char-random-secret\n",[113,140,142,145,147],{"class":115,"line":141},3,[113,143,144],{"class":119},"BETTER_AUTH_URL",[113,146,123],{"class":122},[113,148,149],{"class":126},"https:\u002F\u002Fclerq.your-domain.com\n",[15,151,152,153,155,156,158,159,163],{},"Use the Postgres host, user, password and database from step 2 in\n",[33,154,55],{},", and set ",[33,157,144],{}," to the domain you attach to the app\nservice. See\n",[18,160,162],{"href":161},"\u002Fdocs\u002Fself-hosting\u002Fenvironment-variables","Environment variables"," for the full\nlist (including optional Google sign-in).",[25,165,167],{"id":166},"_5-attach-a-domain-and-deploy","5. Attach a domain and deploy",[15,169,170],{},"Attach a domain to the app service (EasyPanel provisions TLS automatically),\nthen deploy. On first boot the container applies the database migrations and\nstarts serving. Open your domain and create your account.",[172,173,174],"blockquote",{},[15,175,176,177,181,182,56],{},"Upgrading later is a redeploy that pulls the newer image; migrations run\nagain on boot. Set up backups from\n",[18,178,180],{"href":179},"\u002Fdocs\u002Fself-hosting\u002Fbackups-and-upgrades","Backups & upgrades",", and review the\n",[18,183,185],{"href":184},"\u002Fdocs\u002Fself-hosting\u002Fproduction","production checklist",[187,188,189],"style",{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#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);}",{"title":109,"searchDepth":141,"depth":141,"links":191},[192,193,194,195,196],{"id":27,"depth":130,"text":28},{"id":39,"depth":130,"text":40},{"id":59,"depth":130,"text":60},{"id":98,"depth":130,"text":99},{"id":166,"depth":130,"text":167},"Deploy Clerq on EasyPanel - a Postgres service plus the published image, with TLS and domains handled for you.","md",{},true,"\u002Fdocs\u002Fself-hosting\u002Feasypanel","One-click deploy",{"title":5,"description":197},"docs\u002Fself-hosting\u002Feasypanel","yzexkesBcOlhM-ArPm-nTA-j2nMbWduO1pWl8Lvdpas",{"stars":207,"repo":208},0,"PunterDigital\u002Fclerq",1781535397977]