[{"data":1,"prerenderedAt":173},["ShallowReactive",2],{"doc:get-started\u002Finstall-on-a-vps":3},{"title":4,"description":5,"url":6,"markdownPath":7,"file":8,"section":9,"sectionTitle":10,"html":11,"toc":12,"navigation":32,"previous":171,"next":172},"Install on a VPS","Install an L4 Server on your own Debian or Ubuntu VPS with one command, then claim it as Owner.","\u002Fdocs\u002Fget-started\u002Finstall-on-a-vps","\u002Fdocs\u002Fget-started\u002Finstall-on-a-vps.md","docs\u002Fget-started\u002Finstall-on-a-vps.md","get-started","Get started","\u003Cp>The VPS installer runs one L4 Server on your machine with Docker Compose and HTTPS through Caddy. It installs a pinned, checksum-verified release and never builds source code on the VPS.\u003C\u002Fp>\n\u003Cp>This page is the short path. For operations, backups, restore and configuration, see \u003Ca href=\"\u002Fdocs\u002Fself-host\u002Fvps\">VPS\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"before-you-start\">\u003Ca class=\"heading-anchor\" href=\"#before-you-start\">Before you start\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>A dedicated \u003Cstrong>amd64\u003C\u002Fstrong> VPS with Debian 12 or 13, or Ubuntu 22.04 or 24.04, at least 2 GiB RAM and 5 GiB free disk.\u003C\u002Fli>\n\u003Cli>A \u003Cstrong>domain\u003C\u002Fstrong> whose A\u002FAAAA records point at the VPS. A domain is required; there is no fallback hostname.\u003C\u002Fli>\n\u003Cli>Inbound TCP ports \u003Cstrong>80\u003C\u002Fstrong> and \u003Cstrong>443\u003C\u002Fstrong> open.\u003C\u002Fli>\n\u003Cli>Root access (\u003Ccode>sudo\u003C\u002Fcode>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If Docker is missing, the installer installs Docker Engine and Compose from Docker&#39;s official repository. An existing Docker needs Engine 24 or newer and Compose 2.24.4 or newer; it is never replaced.\u003C\u002Fp>\n\u003Ch2 id=\"1-get-the-install-command\">\u003Ca class=\"heading-anchor\" href=\"#1-get-the-install-command\">1. Get the install command\u003C\u002Fa>\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Open \u003Ca href=\"https:\u002F\u002Fllll.gg\u002Fcreate?tab=vps\">llll.gg\u002Fcreate\u003C\u002Fa> and choose the \u003Cstrong>New on a VPS\u003C\u002Fstrong> tab.\u003C\u002Fli>\n\u003Cli>Enter \u003Cstrong>Server domain\u003C\u002Fstrong>, for example \u003Ccode>chat.example.com\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Enter \u003Cstrong>Owner email\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Optional: check \u003Cstrong>Let agents run code on this VPS\u003C\u002Fstrong> to add a compute node, then confirm \u003Cstrong>I trust the code and people using this VPS.\u003C\u002Fstrong> See \u003Ca href=\"\u002Fdocs\u002Fself-host\u002Fcompute-nodes\">Compute nodes\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Select \u003Cstrong>Copy\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cfigure class=\"doc-shot doc-shot-missing\">\u003Cdiv class=\"doc-shot-frame\" role=\"img\" aria-label=\"The New on a VPS tab with the Server domain and Owner email fields filled in and the generated install command with its Copy button\">\u003Cspan class=\"doc-shot-label\">Screenshot coming soon\u003C\u002Fspan>\u003Cspan class=\"doc-shot-alt\">The New on a VPS tab with the Server domain and Owner email fields filled in and the generated install command with its Copy button\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cfigcaption>Copy the install command\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003C\u002Fp>\n\u003Cp>The command looks like this:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">curl -fsSL https:\u002F\u002Fllll.gg\u002Finstall.sh | sudo env \\\n  LLLL_DOMAIN=&#39;chat.example.com&#39; \\\n  LLLL_ADMIN_EMAIL=&#39;you@example.com&#39; \\\n  bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"2-run-it-on-the-vps\">\u003Ca class=\"heading-anchor\" href=\"#2-run-it-on-the-vps\">2. Run it on the VPS\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Run the command on the VPS as root. The installer verifies the release, sets up the Server in \u003Ccode>\u002Fopt\u002Fllll\u003C\u002Fcode>, waits for HTTPS and checks that the Server answers at your domain.\u003C\u002Fp>\n\u003Cp>When it finishes, it prints a private link ending in \u003Ccode>\u002Fsetup#claim=…\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cblockquote class=\"callout callout-warning\">\u003Cp class=\"callout-title\">Warning\u003C\u002Fp>\u003Cp>The setup link is private. Anyone who has it can claim your Server before you do. Do not paste the terminal output into shared logs or chats.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"3-claim-the-server-as-owner\">\u003Ca class=\"heading-anchor\" href=\"#3-claim-the-server-as-owner\">3. Claim the Server as Owner\u003C\u002Fa>\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Open the printed link in your browser.\u003C\u002Fli>\n\u003Cli>Enter \u003Cstrong>Your name\u003C\u002Fstrong>, a \u003Cstrong>Password\u003C\u002Fstrong> and \u003Cstrong>Confirm password\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Select \u003Cstrong>Sign in as owner\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Then add the Server to your Shell if you want: see \u003Ca href=\"\u002Fdocs\u002Fget-started\u002Fconnect-a-server\">Connect to a Server\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"if-something-fails\">\u003Ca class=\"heading-anchor\" href=\"#if-something-fails\">If something fails\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Fix the cause, such as DNS or a closed port, and run the same command again. Rerunning the installer keeps the existing configuration, credentials and Server UUID.\u003C\u002Fp>\n\u003Cp>Check status and logs with:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">sudo llll status\nsudo llll logs\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"next-steps\">\u003Ca class=\"heading-anchor\" href=\"#next-steps\">Next steps\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fget-started\u002Finvite-your-team\">Invite your team\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fself-host\u002Fvps\">Back up, upgrade and add domains on the VPS\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n",[13,17,20,23,26,29],{"id":14,"text":15,"depth":16},"before-you-start","Before you start",2,{"id":18,"text":19,"depth":16},"1-get-the-install-command","1. Get the install command",{"id":21,"text":22,"depth":16},"2-run-it-on-the-vps","2. Run it on the VPS",{"id":24,"text":25,"depth":16},"3-claim-the-server-as-owner","3. Claim the Server as Owner",{"id":27,"text":28,"depth":16},"if-something-fails","If something fails",{"id":30,"text":31,"depth":16},"next-steps","Next steps",[33,54,82,98,117,139,161],{"id":9,"title":10,"pages":34},[35,38,41,44,45,48,51],{"title":36,"url":37},"What is L4","\u002Fdocs\u002Fget-started\u002Fwhat-is-l4",{"title":39,"url":40},"Choose how to run your Server","\u002Fdocs\u002Fget-started\u002Fchoose-how-to-run",{"title":42,"url":43},"Create a Server on Cloudflare","\u002Fdocs\u002Fget-started\u002Fcreate-on-cloudflare",{"title":4,"url":6},{"title":46,"url":47},"Connect to a Server","\u002Fdocs\u002Fget-started\u002Fconnect-a-server",{"title":49,"url":50},"Invite your team","\u002Fdocs\u002Fget-started\u002Finvite-your-team",{"title":52,"url":53},"Create your first Agent","\u002Fdocs\u002Fget-started\u002Ffirst-agent",{"id":55,"title":56,"pages":57},"cloudflare","Cloudflare",[58,61,64,67,70,73,76,79],{"title":59,"url":60},"L4 on Cloudflare","\u002Fdocs\u002Fcloudflare\u002Foverview",{"title":62,"url":63},"Cloudflare access","\u002Fdocs\u002Fcloudflare\u002Faccess",{"title":65,"url":66},"Costs and limits","\u002Fdocs\u002Fcloudflare\u002Fcosts-and-limits",{"title":68,"url":69},"Custom domain","\u002Fdocs\u002Fcloudflare\u002Fcustom-domain",{"title":71,"url":72},"Mail on Cloudflare","\u002Fdocs\u002Fcloudflare\u002Fmail",{"title":74,"url":75},"Update a Cloudflare Server","\u002Fdocs\u002Fcloudflare\u002Fupdates",{"title":77,"url":78},"Backups on Cloudflare","\u002Fdocs\u002Fcloudflare\u002Fbackups",{"title":80,"url":81},"Remove a Cloudflare Server","\u002Fdocs\u002Fcloudflare\u002Fremove-a-server",{"id":83,"title":84,"pages":85},"self-host","Self-host",[86,89,92,95],{"title":87,"url":88},"Run a Server on a VPS","\u002Fdocs\u002Fself-host\u002Fvps",{"title":90,"url":91},"Run a Server with Docker Compose","\u002Fdocs\u002Fself-host\u002Fdocker",{"title":93,"url":94},"Run a Server on Coolify","\u002Fdocs\u002Fself-host\u002Fcoolify",{"title":96,"url":97},"Compute Nodes","\u002Fdocs\u002Fself-host\u002Fcompute-nodes",{"id":99,"title":100,"pages":101},"concepts","Concepts",[102,105,108,111,114],{"title":103,"url":104},"Servers and the Shell","\u002Fdocs\u002Fconcepts\u002Fserver-and-shell",{"title":106,"url":107},"Accounts, Members and Roles","\u002Fdocs\u002Fconcepts\u002Faccounts-members-roles",{"title":109,"url":110},"Agents, Tasks and Runs","\u002Fdocs\u002Fconcepts\u002Fagents-tasks-runs",{"title":112,"url":113},"Files and backups","\u002Fdocs\u002Fconcepts\u002Ffiles-and-backups",{"title":115,"url":116},"Releases and updates","\u002Fdocs\u002Fconcepts\u002Freleases-and-updates",{"id":118,"title":119,"pages":120},"agents","Agents and MCP",[121,124,127,130,133,136],{"title":122,"url":123},"Agents overview","\u002Fdocs\u002Fagents\u002Foverview",{"title":125,"url":126},"Models and Providers","\u002Fdocs\u002Fagents\u002Fmodels-and-providers",{"title":128,"url":129},"Connect an MCP client","\u002Fdocs\u002Fagents\u002Fmcp",{"title":131,"url":132},"External agents","\u002Fdocs\u002Fagents\u002Fexternal-agents",{"title":134,"url":135},"Repositories and code work","\u002Fdocs\u002Fagents\u002Frepositories",{"title":137,"url":138},"Schedules","\u002Fdocs\u002Fagents\u002Fschedules",{"id":140,"title":141,"pages":142},"guides","Guides",[143,146,149,152,155,158],{"title":144,"url":145},"Chat","\u002Fdocs\u002Fguides\u002Fchat",{"title":147,"url":148},"Projects and Tasks","\u002Fdocs\u002Fguides\u002Fprojects-and-tasks",{"title":150,"url":151},"Mail","\u002Fdocs\u002Fguides\u002Fmail",{"title":153,"url":154},"Calls and Live","\u002Fdocs\u002Fguides\u002Fcalls",{"title":156,"url":157},"Notifications","\u002Fdocs\u002Fguides\u002Fnotifications",{"title":159,"url":160},"Telegram","\u002Fdocs\u002Fguides\u002Ftelegram",{"id":162,"title":163,"pages":164},"reference","Reference",[165,168],{"title":166,"url":167},"Glossary","\u002Fdocs\u002Freference\u002Fglossary",{"title":169,"url":170},"Troubleshooting","\u002Fdocs\u002Freference\u002Ftroubleshooting",{"title":42,"url":43},{"title":46,"url":47},1793335825243]