- generic - link "Skip to content" [ref=e1] - banner - heading "Navigation Menu" [level=2, ref=e2] - generic - link "Homepage" [ref=e5] - navigation "Global" [ref=e12] - list - listitem [level=1] - generic - button "Platform" [expanded=false, ref=e50] - listitem [level=1] - generic - button "Solutions" [expanded=false, ref=e51] - listitem [level=1] - generic - button "Resources" [expanded=false, ref=e52] - listitem [level=1] - generic - button "Open Source" [expanded=false, ref=e53] - listitem [level=1] - generic - button "Enterprise" [expanded=false, ref=e54] - listitem [level=1] - link "Pricing" [ref=e42] - generic - button "Search or jump to…" [ref=e13] - link "Sign in" [ref=e14] - link "Sign up" [ref=e8] - button "Appearance settings" [expanded=false, ref=e9] - main - generic - link "owlchester" [ref=e3] - StaticText "/" - strong - link "kanka" [ref=e6] - StaticText "Public" - list - listitem [level=1] - link "You must be signed in to change notification settings" [ref=e15] - StaticText "Notifications" - listitem [level=1] - link "Fork 86" [ref=e16] - StaticText "Fork " - StaticText "86" - listitem [level=1] - link "You must be signed in to star a repository" [ref=e17] - StaticText " Star " - StaticText "346" - navigation "Repository" [ref=e4] - list - listitem [level=1] - link "Code" [ref=e18] - StaticText "Code" - listitem [level=1] - link "Pull requests 10" [ref=e19] - StaticText "Pull requests" - StaticText "10" - listitem [level=1] - link "Actions" [ref=e20] - StaticText "Actions" - listitem [level=1] - link "Security and quality" [ref=e21] - StaticText "Security and quality" - listitem [level=1] - link "Insights" [ref=e22] - StaticText "Insights" - generic [ref=e7] clickable [onclick] - generic [ref=e10] focusable [tabindex] - generic - generic - heading "Collapse file tree" [level=2, ref=e33] - button "Collapse file tree" [expanded=true, ref=e43] - heading "Files" [level=2, ref=e34] - button "develop branch" [expanded=false, ref=e35] - StaticText "develop" - generic - button "Search this repository ( forward slash )" [ref=e44] - generic [ref=e36] clickable [onclick] - combobox "Go to file" [expanded=false, ref=e45] - generic - generic [ref=e46] clickable [onclick] - navigation "File Tree Navigation" [ref=e55] - tree "Files" - treeitem ".claude" [level=1, expanded=false, ref=e117] - generic [ref=e164] clickable [cursor:pointer] - generic [ref=e211] clickable [cursor:pointer, onclick] - generic - StaticText ".claude" - treeitem ".github" [level=1, expanded=false, ref=e118] - generic [ref=e165] clickable [cursor:pointer] - generic [ref=e212] clickable [cursor:pointer, onclick] - generic - StaticText ".github" - treeitem ".mariadb" [level=1, expanded=false, ref=e119] - generic [ref=e166] clickable [cursor:pointer] - generic [ref=e213] clickable [cursor:pointer, onclick] - generic - StaticText ".mariadb" - treeitem ".nginx" [level=1, expanded=false, ref=e120] - generic [ref=e167] clickable [cursor:pointer] - generic [ref=e214] clickable [cursor:pointer, onclick] - generic - StaticText ".nginx" - treeitem "app" [level=1, expanded=false, ref=e121] - generic [ref=e168] clickable [cursor:pointer] - generic [ref=e215] clickable [cursor:pointer, onclick] - generic - StaticText "app" - treeitem "bootstrap" [level=1, expanded=false, ref=e122] - generic [ref=e169] clickable [cursor:pointer] - generic [ref=e216] clickable [cursor:pointer, onclick] - generic - StaticText "bootstrap" - treeitem "config" [level=1, expanded=false, ref=e123] - generic [ref=e170] clickable [cursor:pointer] - generic [ref=e217] clickable [cursor:pointer, onclick] - generic - StaticText "config" - treeitem "database" [level=1, expanded=false, ref=e124] - generic [ref=e171] clickable [cursor:pointer] - generic [ref=e218] clickable [cursor:pointer, onclick] - generic - StaticText "database" - treeitem "docker" [level=1, expanded=false, ref=e125] - generic [ref=e172] clickable [cursor:pointer] - generic [ref=e219] clickable [cursor:pointer, onclick] - generic - StaticText "docker" - treeitem "docs" [level=1, expanded=true, ref=e126] - generic [ref=e173] clickable [cursor:pointer] - generic [ref=e220] clickable [cursor:pointer, onclick] - generic - StaticText "docs" - group - treeitem "api" [level=2, expanded=false, ref=e221] - generic [ref=e238] clickable [cursor:pointer] - generic [ref=e249] clickable [cursor:pointer, onclick] - treeitem "specs" [level=2, expanded=false, ref=e222] - generic [ref=e239] clickable [cursor:pointer] - generic [ref=e250] clickable [cursor:pointer, onclick] - treeitem "superpowers" [level=2, expanded=false, ref=e223] - generic [ref=e240] clickable [cursor:pointer] - generic [ref=e251] clickable [cursor:pointer, onclick] - treeitem "assets.md" [level=2, ref=e224] - generic [ref=e241] clickable [cursor:pointer] - treeitem "contributing.md" [level=2, ref=e225] - generic [ref=e242] clickable [cursor:pointer] - treeitem "debugging.md" [level=2, ref=e226] - generic [ref=e243] clickable [cursor:pointer] - treeitem "meilisearch.md" [level=2, ref=e227] - generic [ref=e244] clickable [cursor:pointer] - treeitem "running.md" [level=2, ref=e228] - generic [ref=e245] clickable [cursor:pointer] - treeitem "translating.md" [level=2, ref=e229] - generic [ref=e246] clickable [cursor:pointer] - treeitem "updating.md" [level=2, ref=e230] - generic [ref=e247] clickable [cursor:pointer] - treeitem "websockets.md" [level=2, ref=e231] - generic [ref=e248] clickable [cursor:pointer] - treeitem "lang" [level=1, expanded=false, ref=e127] - generic [ref=e174] clickable [cursor:pointer] - generic [ref=e232] clickable [cursor:pointer, onclick] - treeitem "public" [level=1, expanded=false, ref=e128] - generic [ref=e175] clickable [cursor:pointer] - generic [ref=e233] clickable [cursor:pointer, onclick] - treeitem "resources" [level=1, expanded=false, ref=e129] - generic [ref=e176] clickable [cursor:pointer] - generic [ref=e234] clickable [cursor:pointer, onclick] - treeitem "routes" [level=1, expanded=false, ref=e130] - generic [ref=e177] clickable [cursor:pointer] - generic [ref=e235] clickable [cursor:pointer, onclick] - treeitem "storage" [level=1, expanded=false, ref=e131] - generic [ref=e178] clickable [cursor:pointer] - generic [ref=e236] clickable [cursor:pointer, onclick] - treeitem "tests" [level=1, expanded=false, ref=e132] - generic [ref=e179] clickable [cursor:pointer] - generic [ref=e237] clickable [cursor:pointer, onclick] - treeitem ".dockerignore" [level=1, ref=e133] - generic [ref=e180] clickable [cursor:pointer] - treeitem ".editorconfig" [level=1, ref=e134] - generic [ref=e181] clickable [cursor:pointer] - treeitem ".env.example" [level=1, ref=e135] - generic [ref=e182] clickable [cursor:pointer] - treeitem ".env.testing" [level=1, ref=e136] - generic [ref=e183] clickable [cursor:pointer] - treeitem ".gitattributes" [level=1, ref=e137] - generic [ref=e184] clickable [cursor:pointer] - treeitem ".gitignore" [level=1, ref=e138] - generic [ref=e185] clickable [cursor:pointer] - treeitem ".jshintrc" [level=1, ref=e139] - generic [ref=e186] clickable [cursor:pointer] - treeitem ".mcp.json" [level=1, ref=e140] - generic [ref=e187] clickable [cursor:pointer] - treeitem [level=1, ref=e141] - generic [ref=e188] clickable [cursor:pointer] - treeitem [level=1, ref=e142] - generic [ref=e189] clickable [cursor:pointer] - treeitem [level=1, ref=e143] - generic [ref=e190] clickable [cursor:pointer] - treeitem [level=1, ref=e144] - generic [ref=e191] clickable [cursor:pointer] - treeitem [level=1, ref=e145] - generic [ref=e192] clickable [cursor:pointer] - treeitem [level=1, ref=e146] - generic [ref=e193] clickable [cursor:pointer] - treeitem [level=1, ref=e147] - generic [ref=e194] clickable [cursor:pointer] - treeitem [level=1, ref=e148] - generic [ref=e195] clickable [cursor:pointer] - treeitem [level=1, ref=e149] - generic [ref=e196] clickable [cursor:pointer] - treeitem [level=1, ref=e150] - generic [ref=e197] clickable [cursor:pointer] - treeitem [level=1, ref=e151] - generic [ref=e198] clickable [cursor:pointer] - treeitem [level=1, ref=e152] - generic [ref=e199] clickable [cursor:pointer] - treeitem [level=1, ref=e153] - generic [ref=e200] clickable [cursor:pointer] - treeitem [level=1, ref=e154] - generic [ref=e201] clickable [cursor:pointer] - treeitem [level=1, ref=e155] - generic [ref=e202] clickable [cursor:pointer] - treeitem [level=1, ref=e156] - generic [ref=e203] clickable [cursor:pointer] - treeitem [level=1, ref=e157] - generic [ref=e204] clickable [cursor:pointer] - treeitem [level=1, ref=e158] - generic [ref=e205] clickable [cursor:pointer] - treeitem [level=1, ref=e159] - generic [ref=e206] clickable [cursor:pointer] - treeitem [level=1, ref=e160] - generic [ref=e207] clickable [cursor:pointer] - treeitem [level=1, ref=e161] - generic [ref=e208] clickable [cursor:pointer] - treeitem [level=1, ref=e162] - generic [ref=e209] clickable [cursor:pointer] - treeitem [level=1, ref=e163] - generic [ref=e210] clickable [cursor:pointer] - slider "Draggable pane splitter" [ref=e37]: 320 - generic [ref=e11] focusable [tabindex] - navigation "Breadcrumbs" [ref=e29] - heading "Breadcrumbs" [level=2, ref=e38] - list - listitem [level=1] - link "kanka" [ref=e56] - listitem [level=1] - link "docs" [ref=e57] - heading "running.md" [level=1, ref=e39] - button "Copy path" [ref=e30] - button "More file actions" [expanded=false, ref=e31] - heading "Latest commit" [level=2, ref=e23] - image "author" - StaticText "Jay Payne" - link "Updates and metrics" [ref=e24] - link "Commit afb0003" [ref=e25] - StaticText "afb0003" - StaticText "·" - StaticText "4 months ago" - heading "History" [level=2, ref=e26] - link "History" [ref=e27] - StaticText "History" - generic - generic - heading "File metadata and controls" [level=2, ref=e40] - list "File view" - listitem [level=1] - button "Preview" [ref=e58] - listitem [level=1] - button "Code" [ref=e59] - listitem [level=1] - button "Blame" [ref=e60] - StaticText "145 lines (96 loc) · 6.33 KB" - link "Raw" [ref=e47] - StaticText "Raw" - generic - button "Copy raw file" [ref=e48] - generic - button "Download raw file" [ref=e49] - button "Outline" [ref=e41] - region "running.md" [ref=e28] - generic [ref=e32] clickable [onclick] - article - generic - heading "💻 Running Kanka" [level=1, ref=e61] - link "Permalink: 💻 Running Kanka" [ref=e62] - paragraph - StaticText "Kanka is a dockerized self-hosted PHP application." - blockquote - paragraph - paragraph - paragraph - generic - heading "Differences compared to kanka.io" [level=2, ref=e63] - link "Permalink: Differences compared to kanka.io" [ref=e64] - paragraph - StaticText "These developer docker instances are quite different from " - link "kanka.io" [ref=e65] - StaticText " that we've listed below." - list - listitem [level=1] - listitem [level=1] - listitem [level=1] - listitem [level=1] - listitem [level=1] - listitem [level=1] - listitem [level=1] - generic - heading "Docker" [level=2, ref=e66] - link "Permalink: Docker" [ref=e67] - paragraph - StaticText "Kanka is set up to run with Docker and " - link "Laravel Sail" [ref=e68] - StaticText ". It comes with several machines." - list - listitem [level=1] - listitem [level=1] - link "Mariadb" [ref=e107] - listitem [level=1] - link "Redis" [ref=e108] - listitem [level=1] - link "minIO" [ref=e109] - listitem [level=1] - link "Thumbor" [ref=e110] - listitem [level=1] - link "Mailpit" [ref=e111] - generic - heading "Prerequisite" [level=3, ref=e69] - link "Permalink: Prerequisite" [ref=e70] - paragraph - StaticText "Kanka has minimal hardware requirements and can run adequately on a €4/month Hetzner virtual machine. The machine will need the following software to run Kanka:" - list - listitem [level=1] - link "Docker" [ref=e112] - listitem [level=1] - link "Github CLI" [ref=e113] - paragraph - StaticText "This GitHub repository needs to be Cloned (" - code - StaticText ") on your local machine. All commands are to be executed in the Kanka folder." - paragraph - StaticText "When on Linux, Docker needs to run with your user and not with sudo! This is important for file permissions to properly work. To set up docker to run with your user, " - link "follow these instructions" [ref=e71] - StaticText "." - generic - heading "Installation" [level=2, ref=e72] - link "Permalink: Installation" [ref=e73] - generic - heading "1. Checkout the project" [level=3, ref=e74] - link "Permalink: 1. Checkout the project" [ref=e75] - paragraph - StaticText "Checkout Kanka on your local machine" - generic - StaticText "gh repo clone owlchester/kanka" - button "Copy code to clipboard" [ref=e76] - paragraph - StaticText "or" - generic - StaticText "git clone https://github.com/owlchester/kanka.git" - button "Copy code to clipboard" [ref=e77] - generic - heading "2. Configure the database" [level=3, ref=e78] - link "Permalink: 2. Configure the database" [ref=e79] - paragraph - StaticText "Once the project has finished downloading, copy the " - code - StaticText " file and save it under " - code - StaticText " at the root of your new Kanka installation. This file contains all the configuration settings to run Kanka, like the database details, the project's name, options for max file upload sizes, etc." - blockquote - paragraph - paragraph - paragraph - StaticText "Optionally, if you want to change some configs, edit the new " - code - StaticText " file. In most cases, you don't need to touch anything." - generic - heading "3. Installing dependencies" [level=3, ref=e80] - link "Permalink: 3. Installing dependencies" [ref=e81] - paragraph - StaticText "Run the following command to install all the dependencies needed by Kanka. This command will start up a small docker to install everything through " - link "composer" [ref=e82] - StaticText "." - generic - generic - button "Copy code to clipboard" [ref=e83] - generic - heading "Easier life" [level=4, ref=e84] - link "Permalink: Easier life" [ref=e85] - paragraph - StaticText "To make your life easier, we recommend setting an alias to the " - code - StaticText " command." - generic - generic - button "Copy code to clipboard" [ref=e86] - paragraph - StaticText "Otherwise, whenever this setup mentions a sail command, replace it with " - code - StaticText "." - generic - heading "4. Run docker" [level=3, ref=e87] - link "Permalink: 4. Run docker" [ref=e88] - paragraph - StaticText "Everything should now be ready to run all those docker images. Passing the " - code - StaticText " parameter starts it in the background." - generic - StaticText "sail up -d" - button "Copy code to clipboard" [ref=e89] - generic - heading "5. Bucket setup" [level=3, ref=e90] - link "Permalink: 5. Bucket setup" [ref=e91] - blockquote - paragraph - paragraph - StaticText "Image uploading in the app is stored on a " - emphasis - StaticText " service. This mimics the amazon S3 storage, and makes it easier to handle images rather than hosting them directly in the docker responsible for PHP." - paragraph - StaticText "First, go to " - link "localhost:9000" [ref=e92] - StaticText ". This is where your files will be stored. Login with " - code - StaticText " as the user and " - code - StaticText " as the password." - paragraph - StaticText "Create a new bucket called " - code - StaticText ". This will redirect you to the new " - code - StaticText " bucket. Click on the top right cogwheel icon to access the bucket's config interface. On this page, change the " - code - StaticText " from " - code - StaticText " to " - code - StaticText ". Without this, uploaded file won't be visible in the browser." - paragraph - StaticText "Next up, create a second bucket called " - code - StaticText ". Same as before, go back and set it's " - code - StaticText " from " - code - StaticText " to " - code - StaticText ". This bucket will contain your thumbnails." - generic - heading "6. Run the installer" [level=3, ref=e93] - link "Permalink: 6. Run the installer" [ref=e94] - paragraph - StaticText "Now that the bucket is set up, go back to your console run the following commands. This will take care of setting up Kanka's database with all the boilerplate content to make it work." - generic - StaticText "sail artisan kanka:install" - button "Copy code to clipboard" [ref=e95] - paragraph - StaticText "Lastly, set up the full-text search engine with the following line." - generic - StaticText "sail artisan setup:meilisearch" - button "Copy code to clipboard" [ref=e96] - generic - heading "Next up" [level=2, ref=e97] - link "Permalink: Next up" [ref=e98] - paragraph - StaticText "Your local development instance of Kanka is now ready to go! Navigate to " - link "localhost:8081" [ref=e99] - StaticText ", and you should see the Kanka application and be able to create an account." - paragraph - StaticText "We recommend making an alias in your " - code - StaticText " file to point " - code - StaticText " to your localhost, so what (kanka.test:8081)[" - link "http://kanka.test:8081" [ref=e100] - StaticText "] also works." - paragraph - StaticText "Here are a few extra resources:" - list - listitem [level=1] - link "documentation" [ref=e114] - listitem [level=1] - link "debugging" [ref=e115] - listitem [level=1] - link "update" [ref=e116] - generic - heading "Shutting down" [level=3, ref=e101] - link "Permalink: Shutting down" [ref=e102] - paragraph - generic - button "Copy code to clipboard" [ref=e103] - generic - heading "Sharing your local Kanka" [level=3, ref=e104] - link "Permalink: Sharing your local Kanka" [ref=e105] - paragraph - link "official documentation" [ref=e106]