PageSourceSearch

https://dawarich.app/assets/js/3def9de4.dcdd433c.js

js dawarich.app collected 2026-10-03 22:14:12 UTC 11,509 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkdawarich_app=globalThis.webpackChunkdawarich_app||[]).push([[4327],{94534(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"self-hosting/introduction","title":"Self-Hosting Introduction","description":"Get started self-hosting Dawarich with Docker and Docker Compose, with manual setup instructions and a ready-to-copy prompt for an AI agent.","source":"@site/docs/self-hosting/introduction.md","sourceDirName":"self-hosting","slug":"/self-hosting/introduction","permalink":"/docs/self-hosting/introduction","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1,"title":"Self-Hosting Introduction","description":"Get started self-hosting Dawarich with Docker and Docker Compose, with manual setup instructions and a ready-to-copy prompt for an AI agent."},"sidebar":"tutorialSidebar","previous":{"title":"Kubernetes","permalink":"/docs/self-hosting/installation/kubernetes"},"next":{"title":"Configuration","permalink":"/docs/category/configuration"}}');var i=t(74848),r=t(28453);const s={sidebar_position:1,title:"Self-Hosting Introduction",description:"Get started self-hosting Dawarich with Docker and Docker Compose, with manual setup instructions and a ready-to-copy prompt for an AI agent."},a="Self-Hosting Introduction",c={},d=[{value:"What you'll need",id:"what-youll-need",level:3},{value:"Install with an AI agent",id:"install-with-an-ai-agent",level:2},{value:"Setup your Dawarich instance",id:"setup-your-dawarich-instance",level:2},{value:"Update your Dawarich instance",id:"update-your-dawarich-instance",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"self-hosting-introduction",children:"Self-Hosting Introduction"})}),"\n",(0,i.jsx)(n.p,{children:"Get your own Dawarich instance up and running in minutes."}),"\n",(0,i.jsx)(n.h3,{id:"what-youll-need",children:"What you'll need"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"A server running on AMD64 or ARM64 architecture. 2GB of RAM and more is recommended."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.docker.com/get-docker/",children:"Docker"})," version 20.10 or above:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Docker is a platform for developing, shipping, and running applications. It uses containerization technology to create and deploy applications."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.docker.com/compose/install/",children:"Docker Compose"})," version 1.29 or above:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Docker Compose is a tool for defining and running multi-container Docker applications."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"If you don't have a server or server provider yet, we prefer to use Hetzner and DigitalOcean."}),(0,i.jsxs)(n.p,{children:["You can use our ",(0,i.jsx)(n.a,{href:"https://hetzner.cloud/?ref=DQC5djwEU64f",children:"Hetzner"})," and ",(0,i.jsx)(n.a,{href:"https://m.do.co/c/5dcbfa133a56",children:"DigitalOcean"})," referral links. It will helps us to keep the project alive."]})]}),"\n",(0,i.jsx)(n.h2,{id:"install-with-an-ai-agent",children:"Install with an AI agent"}),"\n",(0,i.jsx)(n.p,{children:"Copy the prompt below into your AI coding agent. Run the agent on your server or give it SSH access through your usual SSH configuration. Tell it which server to use and whether you want to access Dawarich locally, over your private network, or through a public domain."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",metastring:'title="Dawarich installation prompt"',children:"Install a self-hosted Dawarich instance on my server using Docker Compose.\n\nRead the current official documentation before making changes:\n- https://dawarich.app/docs/self-hosting/introduction\n- https://dawarich.app/docs/self-hosting/environment-variables\n- https://dawarich.app/docs/self-hosting/configuration/reverse-proxy\n\n1. Establish the target server, installation directory, and intended access\n   URL from the context I provide. Ask for any missing details. Check the OS,\n   CPU architecture, available memory and disk space, Docker, Docker Compose,\n   and port availability. Install missing prerequisites using the official\n   Docker instructions for that OS.\n\n2. Check for an existing Dawarich installation before creating or changing\n   files. Preserve existing configuration, secrets, and volumes. If this is\n   an upgrade, follow the official update and backup guides first. Never\n   delete volumes or run `docker 
1compose down -v` to fix an installation.\n\n3. For a new installation, download the current official Compose file to\n   the installation directory:\n   https://raw.githubusercontent.com/Freika/dawarich/master/docker/docker-compose.yml\n   Use this file as the starting point and follow its architecture-specific\n   instructions when choosing the database image.\n\n4. Configure production mode and self-hosting. Generate a strong database\n   password and SECRET_KEY_BASE, keeping shared values consistent across\n   the database, web app, and worker. Store secrets in a restricted local\n   .env file, ensure Compose passes them to the relevant services, and do\n   not print them in the chat.\n\n5. Set APPLICATION_HOSTS to the intended hostnames or IP addresses without\n   protocols or ports. Match APPLICATION_PROTOCOL to the access URL.\n   Configure port bindings for the intended access method. For a public\n   domain, configure HTTPS using the reverse-proxy guide. Keep PostgreSQL\n   and Redis on the internal Docker network.\n\n6. Validate with `docker compose config --quiet`, then run\n   `docker compose pull` and `docker compose up -d` from the installation\n   directory. Allow time for first-start initialization.\n\n7. Check `docker compose ps` and relevant logs. Verify that the database,\n   Redis, web app, and worker are healthy and that the sign-in page responds\n   at the intended URL. Diagnose and fix any startup errors before declaring\n   success. State explicitly if a check could not be completed.\n\n8. Report the installation directory, access URL, service status, and the\n   commands to stop, start, update, and back up this instance. Include the\n   admin sign-in URL, login email, and password in the final report so I can\n   access the instance immediately. For a new installation, replace the\n   default account credentials with a strong password before making the\n   instance publicly accessible, and report the credentials actually set.\n   Verify that the account has administrator access. For an existing\n   installation, preserve its credentials; if the password is unknown,\n   explain how to reset it instead of inventing one.\n"})}),"\n",(0,i.jsx)(n.p,{children:"Prefer to install it yourself? Follow the steps below."}),"\n",(0,i.jsx)(n.h2,{id:"setup-your-dawarich-instance",children:"Setup your Dawarich instance"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Copy contents of the ",(0,i.jsx)(n.a,{href:"https://github.com/Freika/dawarich/blob/master/docker/docker-compose.yml",children:"docker-compose.yml"})," file to a file named ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," on your server."]}),"\n",(0,i.jsxs)(n.li,{children:["Move to the directory where you saved the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," file: ",(0,i.jsx)(n.code,{children:"cd /path/to/your/docker-compose.yml"})]}),"\n",(0,i.jsx)(n.li,{children:"Run the following command to start your Dawarich instance:"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,i.jsxs)(n.ol,{start:"4",children:["\n",(0,i.jsxs)(n.li,{children:["You're all set! Visit your Dawarich instance at ",(0,i.jsx)(n.code,{children:"http://localhost:3000"})," or ",(0,i.jsx)(n.code,{children:"http://<your-server-ip>:3000"}),". The default credentials are ",(0,i.jsx)(n.code,{children:"[email protected]"})," and ",(0,i.jsx)(n.code,{children:"safepassword"})]}),"\n"]}),"\n",(0,i.jsx)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/j6xNtSNzrwQ?si=9VFoYMdFl2jSTGWr",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:!0}),"\n",(0,i.jsx)(n.h2,{id:"update-your-dawarich-instance",children:"Update your Dawarich instance"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Move to the directory where you saved the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," file: ",(0,i.jsx)(n.code,{children:"cd /path/to/your/docker-compose.yml"})]}),"\n",(0,i.jsx)(n.li,{children:"Run the following commands to update your Dawarich instance:"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker 
1compose down # Stop the running instance\ndocker compose pull # Pull the latest image\ndocker compose up -d # Start the updated instance\n"})}),"\n",(0,i.jsxs)(n.ol,{start:"3",children:["\n",(0,i.jsx)(n.li,{children:"All done!"}),"\n"]}),"\n",(0,i.jsxs)(n.admonition,{type:"info",children:[(0,i.jsx)(n.p,{children:"After starting the application, you should have at least 4 running containers:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"dawarich_db"})," - PostgreSQL database"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"dawarich_redis"})," - Redis database"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"dawarich_sidekiq"})," - Sidekiq worker (for background jobs)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"dawarich_app"})," - Dawarich web application"]}),"\n"]}),(0,i.jsx)(n.p,{children:"Make sure all of them are running."})]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["If  you're running Dawarich on an ARM64 server check out the ",(0,i.jsx)(n.a,{href:"/docs/self-hosting/maintenance/moving-to-postgis",children:"Moving to PostGIS"})," guide to find suitable database images."]})}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.p,{children:["Although the ",(0,i.jsx)(n.code,{children:"docker"})," directory contains ",(0,i.jsx)(n.code,{children:"docker-compose.production.yml"})," file, it's not yet recommended to use. Use the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," file instead, with the ",(0,i.jsx)(n.code,{children:"production"})," environment."]})})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},28453(e,n,t){t.d(n,{R:()=>s,x:()=>a});var o=t(96540);const i={},r=o.createContext(i);function s(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.