[{"data":1,"prerenderedAt":251},["ShallowReactive",2],{"doc:reference\u002Ftroubleshooting":3},{"title":4,"description":5,"url":6,"markdownPath":7,"file":8,"section":9,"sectionTitle":10,"html":11,"toc":12,"navigation":111,"previous":249,"next":250},"Troubleshooting","Known L4 error messages and problems during install, setup, updates, Docker, mail, files and compute, with what causes them and how to fix them.","\u002Fdocs\u002Freference\u002Ftroubleshooting","\u002Fdocs\u002Freference\u002Ftroubleshooting.md","docs\u002Freference\u002Ftroubleshooting.md","reference","Reference","\u003Cp>Find the message you see, or the symptom, and follow the fix. Error messages are quoted as the software prints them.\u003C\u002Fp>\n\u003Ch2 id=\"owner-setup\">\u003Ca class=\"heading-anchor\" href=\"#owner-setup\">Owner setup\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"this-setup-link-is-invalid-or-expired\">\u003Ca class=\"heading-anchor\" href=\"#this-setup-link-is-invalid-or-expired\">&quot;This setup link is invalid or expired&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The claim in the \u003Ccode>\u002Fsetup#claim=…\u003C\u002Fcode> link does not match the Server&#39;s setup token.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Cloudflare:\u003C\u002Fstrong> reconnect Cloudflare on the \u003Ca href=\"https:\u002F\u002Fllll.gg\u002Fcreate?tab=cloudflare\">Create page\u003C\u002Fa>, refresh your Servers and choose \u003Cstrong>Recover setup link\u003C\u002Fstrong>. Recovery works only while the Server has no Owner and no login Accounts. It never resets an existing Owner.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Docker, Coolify or celld:\u003C\u002Fstrong> use the exact \u003Ccode>SETUP_TOKEN\u003C\u002Fcode> value of the running deployment. It must be a random string of at least 32 characters; a shorter value is ignored by owner setup.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"server-setup-is-already-complete\">\u003Ca class=\"heading-anchor\" href=\"#server-setup-is-already-complete\">&quot;Server setup is already complete&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The Server already has an Owner. Sign in instead. A lost password can be reset with your \u003Ca href=\"\u002Fdocs\u002Fconcepts\u002Faccounts-members-roles#account\">recovery key\u003C\u002Fa>, if you saved one.\u003C\u002Fp>\n\u003Ch3 id=\"sign-in-or-setup-fails-on-the-address-you-opened\">\u003Ca class=\"heading-anchor\" href=\"#sign-in-or-setup-fails-on-the-address-you-opened\">Sign-in or setup fails on the address you opened\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>\u003Ccode>PUBLIC_ORIGIN\u003C\u002Fcode> must be exactly the origin you open in the browser. Cookies, links and the setup claim depend on it. Additional hostnames must be listed as aliases (\u003Ccode>LLLL_ORIGINS\u003C\u002Fcode>, \u003Ccode>llll domain add\u003C\u002Fcode>, or \u003Cstrong>Server settings → Deployment → Domain\u003C\u002Fstrong> on Cloudflare). A hostname that only happens to reach the Server is rejected for sessions and changes.\u003C\u002Fp>\n\u003Cp>A request rejected with &quot;Origin mismatch&quot; came from an address that is not one of the Server&#39;s listed origins. The message names the address the request came from and the Server&#39;s address. If they match, the reverse proxy changed the Host or scheme on the way to the Server.\u003C\u002Fp>\n\u003Ch2 id=\"vps-installer\">\u003Ca class=\"heading-anchor\" href=\"#vps-installer\">VPS installer\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cdiv class=\"table-wrap\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Message\u003C\u002Fth>\n\u003Cth>Fix\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>&quot;VPS releases currently support Linux amd64 only; ARM64 local development is separate.&quot;\u003C\u002Ftd>\n\u003Ctd>Use an amd64 VPS.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Supported VPS systems: Debian 12\u002F13 and Ubuntu 22.04\u002F24.04.&quot;\u003C\u002Ftd>\n\u003Ctd>Reinstall the VPS with a supported system.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;At least 2 GiB RAM is required.&quot; \u002F &quot;At least 5 GiB free disk space is required.&quot;\u003C\u002Ftd>\n\u003Ctd>Use a larger VPS or free space.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Snap Docker is unsupported; install Docker Engine from its official apt repository.&quot;\u003C\u002Ftd>\n\u003Ctd>Remove Snap Docker and install Docker Engine from Docker&#39;s apt repository, or let the installer do it on a clean machine.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Docker Engine &gt;= 24 must be running on the local system socket.&quot; \u002F &quot;Docker Compose &gt;= 2.24.4 is required.&quot;\u003C\u002Ftd>\n\u003Ctd>Upgrade Docker yourself; the installer never replaces an existing Docker.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;This is a prerelease. Review it and explicitly set LLLL_CHANNEL=prerelease.&quot;\u003C\u002Ftd>\n\u003Ctd>Add \u003Ccode>LLLL_CHANNEL=prerelease\u003C\u002Fcode>, or use a stable release.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;An existing Server has another version; use llll upgrade \u003Cversion>.&quot;\u003C\u002Ftd>\n\u003Ctd>Rerunning an installer only restarts the same version. Use \u003Ccode>sudo llll upgrade\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Downgrades or invalid versions are refused; restore a complete backup instead.&quot;\u003C\u002Ftd>\n\u003Ctd>Choose a newer version, or restore a backup.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Another installer\u002FCLI operation is running for this directory.&quot;\u003C\u002Ftd>\n\u003Ctd>Wait for the other \u003Ccode>llll\u003C\u002Fcode> command to finish.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;LLLL_DIR exists and is not an empty directory or a managed installation.&quot;\u003C\u002Ftd>\n\u003Ctd>Choose an empty directory, or remove the unrelated files.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Scheduled updates\u002Fbackups are not supported yet; use explicit llll upgrade and llll backup.&quot;\u003C\u002Ftd>\n\u003Ctd>Remove \u003Ccode>LLLL_AUTOUPDATE\u003C\u002Fcode> and \u003Ccode>LLLL_BACKUP_SCHEDULE\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Choose another primary before removing this address.&quot;\u003C\u002Ftd>\n\u003Ctd>Run \u003Ccode>llll domain primary &lt;other-hostname&gt;\u003C\u002Fcode> first.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;The address change did not pass its checks; the previous configuration was restored.&quot;\u003C\u002Ftd>\n\u003Ctd>Point the hostname&#39;s DNS at the VPS and make sure ports 80 and 443 are reachable, then retry.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Upgrade did not succeed; previous Server restored.&quot;\u003C\u002Ftd>\n\u003Ctd>The old version is running again. Check \u003Ccode>sudo llll logs\u003C\u002Fcode> before retrying.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>If an install stops before the Server is healthy, the private configuration is kept. Fix DNS, firewall or settings and rerun the same pinned script. Caddy needs correct DNS and reachable ports to get a certificate.\u003C\u002Fp>\n\u003Ch2 id=\"docker-compose-and-coolify\">\u003Ca class=\"heading-anchor\" href=\"#docker-compose-and-coolify\">Docker Compose and Coolify\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"the-container-stops-with-this-data-was-migrated-by-l4-x-image-y-is-older\">\u003Ca class=\"heading-anchor\" href=\"#the-container-stops-with-this-data-was-migrated-by-l4-x-image-y-is-older\">The container stops with &quot;this data was migrated by L4 X; image Y is older&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Migrations only go forward. Set an image at least as new as the version in the message (\u003Ccode>LLLL_IMAGE\u003C\u002Fcode> in Docker Compose, \u003Ccode>LLLL_VERSION\u003C\u002Fcode> in Coolify). To really go back, restore a backup.\u003C\u002Fp>\n\u003Ch3 id=\"bucket-init-fails-with-could-not-reach-or-create-s3cells\">\u003Ca class=\"heading-anchor\" href=\"#bucket-init-fails-with-could-not-reach-or-create-s3cells\">\u003Ccode>bucket-init\u003C\u002Fcode> fails with &quot;could not reach or create s3:\u002F\u002Fcells&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>RustFS is healthy but the host drops traffic between containers, typically legacy iptables with \u003Ccode>-P FORWARD DROP\u003C\u002Fcode>. Allow the Compose bridge, for example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">iptables -I DOCKER-USER -i br-&lt;id&gt; -j ACCEPT\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Make the rule persistent.\u003C\u002Fp>\n\u003Ch3 id=\"the-llll-container-exits-at-start\">\u003Ca class=\"heading-anchor\" href=\"#the-llll-container-exits-at-start\">The \u003Ccode>llll\u003C\u002Fcode> container exits at start\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The entrypoint checks its configuration first:\u003C\u002Fp>\n\u003Cdiv class=\"table-wrap\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Message\u003C\u002Fth>\n\u003Cth>Fix\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>&quot;llll: set AUTH_SECRET&quot; (or another name)\u003C\u002Ftd>\n\u003Ctd>Set the variable in \u003Ccode>.env\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;llll: AUTH_SECRET must be at least 32 characters&quot;\u003C\u002Ftd>\n\u003Ctd>Use \u003Ccode>openssl rand -hex 32\u003C\u002Fcode>. The same rule applies to \u003Ccode>SETUP_TOKEN\u003C\u002Fcode>, \u003Ccode>CLOUDFLARE_API_TOKEN\u003C\u002Fcode> and the inbound mail secrets.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;llll: CLOUDFLARE_ACCOUNT_ID must be 32 hex characters&quot;\u003C\u002Ftd>\n\u003Ctd>Copy the account ID from the Cloudflare dashboard, or leave it empty.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;llll: ADMIN_EMAIL must look like an email address&quot;\u003C\u002Ftd>\n\u003Ctd>Fix \u003Ccode>ADMIN_EMAIL\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;llll: RustFS did not answer at …&quot;\u003C\u002Ftd>\n\u003Ctd>Check that the \u003Ccode>rustfs\u003C\u002Fcode> service is healthy.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch3 id=\"waiting-for-the-celld-node-to-join-on-first-start\">\u003Ca class=\"heading-anchor\" href=\"#waiting-for-the-celld-node-to-join-on-first-start\">&quot;waiting for the celld node to join&quot; on first start\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>This is expected. Migrations apply as soon as the node registers. The container stays unhealthy until they finish, and the gateway starts after that.\u003C\u002Fp>\n\u003Ch3 id=\"the-server-restarts-after-node-lease-not-renewed-within-ttl\">\u003Ca class=\"heading-anchor\" href=\"#the-server-restarts-after-node-lease-not-renewed-within-ttl\">The Server restarts after &quot;node lease not renewed within TTL&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>A celld node that misses its lease renewal fences itself and exits. Compose and the Coolify template restart it automatically, after a short delay so the old lease can expire. If it happens often, check the machine&#39;s load and memory.\u003C\u002Fp>\n\u003Ch3 id=\"docker-does-not-come-back-after-a-reboot\">\u003Ca class=\"heading-anchor\" href=\"#docker-does-not-come-back-after-a-reboot\">Docker does not come back after a reboot\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>On hosts without systemd (containers, some minimal images), start \u003Ccode>dockerd\u003C\u002Fcode> yourself and arrange for it to start at boot. Compose restart policies apply only once Docker is running.\u003C\u002Fp>\n\u003Ch3 id=\"settings-says-updates-are-managed-outside-l4\">\u003Ca class=\"heading-anchor\" href=\"#settings-says-updates-are-managed-outside-l4\">Settings says &quot;Updates are managed outside L4&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>That is expected on a Docker or Coolify Server. Update by changing the image tag. See \u003Ca href=\"\u002Fdocs\u002Fself-host\u002Fdocker#update\">Docker Compose\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"cloudflare-updates\">\u003Ca class=\"heading-anchor\" href=\"#cloudflare-updates\">Cloudflare updates\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"the-update-stops-before-deployment-because-the-server-changed-during-backup\">\u003Ca class=\"heading-anchor\" href=\"#the-update-stops-before-deployment-because-the-server-changed-during-backup\">The update stops before deployment because the Server changed during backup\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The installer compares the backup with the live database and files. If they changed while the backup was made, it stops before uploading anything. Retry when the Server is less busy.\u003C\u002Fp>\n\u003Ch3 id=\"deployment-needs-verification\">\u003Ca class=\"heading-anchor\" href=\"#deployment-needs-verification\">&quot;Deployment needs verification&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>A failure happened after the upload started. Other updates are blocked until it is resolved. Reopen the update from \u003Cstrong>Server settings → Deployment → Updates\u003C\u002Fstrong> (\u003Cstrong>Check or resume on llll.gg\u003C\u002Fstrong>). The installer checks the Server&#39;s identity and health, and reruns the upload only if the target version is not installed yet.\u003C\u002Fp>\n\u003Ch3 id=\"settings-asks-you-to-reconnect-cloudflare\">\u003Ca class=\"heading-anchor\" href=\"#settings-asks-you-to-reconnect-cloudflare\">Settings asks you to reconnect Cloudflare\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The Cloudflare access kept on the Server stopped working, for example because it was revoked. Reconnect it in \u003Cstrong>Server settings → Deployment → Updates\u003C\u002Fstrong>, or update through the official installer.\u003C\u002Fp>\n\u003Ch3 id=\"a-self-update-fails-on-the-workers-free-plan\">\u003Ca class=\"heading-anchor\" href=\"#a-self-update-fails-on-the-workers-free-plan\">A self-update fails on the Workers Free plan\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>A Server updating itself uploads the release in one run, and the Free plan&#39;s subrequest budget is tight for large asset changes. This is a known limit.\u003C\u002Fp>\n\u003Ch3 id=\"a-03x-release-refuses-the-database\">\u003Ca class=\"heading-anchor\" href=\"#a-03x-release-refuses-the-database\">A 0.3.x release refuses the database\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>0.3.0 started the \u003Ccode>server-v2\u003C\u002Fcode> lineage. A 0.2.x database cannot be upgraded into it. Install a new Server for 0.3.x; the old one stays on its release.\u003C\u002Fp>\n\u003Ch2 id=\"files-and-secrets\">\u003Ca class=\"heading-anchor\" href=\"#files-and-secrets\">Files and secrets\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"file-storage-is-unavailable-ask-the-server-operator-to-configure-storage\">\u003Ca class=\"heading-anchor\" href=\"#file-storage-is-unavailable-ask-the-server-operator-to-configure-storage\">&quot;File storage is unavailable. Ask the Server operator to configure storage.&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The Server has no file storage. On Cloudflare, connect R2 in \u003Cstrong>Server settings → Storage\u003C\u002Fstrong>. On self-hosted Servers, check the storage configuration.\u003C\u002Fp>\n\u003Ch3 id=\"saved-secret-cannot-be-decrypted-replace-it\">\u003Ca class=\"heading-anchor\" href=\"#saved-secret-cannot-be-decrypted-replace-it\">&quot;Saved secret cannot be decrypted. Replace it.&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Backup settings show the same problem as &quot;Saved Secret Access Key cannot be decrypted. Replace it.&quot; The Server&#39;s \u003Ccode>AUTH_SECRET\u003C\u002Fcode> changed since the secret was saved. Enter the credential again, or restore the original \u003Ccode>AUTH_SECRET\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch2 id=\"mail\">\u003Ca class=\"heading-anchor\" href=\"#mail\">Mail\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"mail-is-rejected-with-unknown-l4-mailbox\">\u003Ca class=\"heading-anchor\" href=\"#mail-is-rejected-with-unknown-l4-mailbox\">Mail is rejected with &quot;Unknown L4 mailbox&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The recipient address has no Mailbox on this Server. Create the Mailbox first. Only enabled addresses in the Server&#39;s own Mailbox list receive mail.\u003C\u002Fp>\n\u003Ch3 id=\"inbound-mail-is-not-configured-self-hosted\">\u003Ca class=\"heading-anchor\" href=\"#inbound-mail-is-not-configured-self-hosted\">Inbound mail is not configured (self-hosted)\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Off Cloudflare, inbound mail needs a signed webhook: an Email Routing bridge (\u003Ccode>INBOUND_EMAIL_SECRET\u003C\u002Fcode>), Postmark, Mailgun or Amazon SES. Until one is set, the mail settings say inbound mail is not configured. Webhook timestamps more than five minutes from the Server&#39;s clock are rejected, so keep the clock in sync. See the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Finchidev\u002Fllll\u002Fblob\u002Fmain\u002Fdocs\u002Fself-host\u002Fcelld.md#inbound-mail\" rel=\"noopener\">celld reference\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"agents-calls-and-compute\">\u003Ca class=\"heading-anchor\" href=\"#agents-calls-and-compute\">Agents, calls and compute\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"agents-cannot-be-created\">\u003Ca class=\"heading-anchor\" href=\"#agents-cannot-be-created\">Agents cannot be created\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The Server has no model provider. Add one in \u003Cstrong>Server settings → Models\u003C\u002Fstrong>. On a self-hosted Server, a Cloudflare token or an OpenAI-compatible endpoint also works; see \u003Ca href=\"\u002Fdocs\u002Fself-host\u002Fdocker#optional-providers\">Optional providers\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3 id=\"the-call-button-is-disabled-on-a-self-hosted-server\">\u003Ca class=\"heading-anchor\" href=\"#the-call-button-is-disabled-on-a-self-hosted-server\">The call button is disabled on a self-hosted Server\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Calls use Cloudflare RealtimeKit. Off Cloudflare they need \u003Ccode>CLOUDFLARE_ACCOUNT_ID\u003C\u002Fcode> and \u003Ccode>CLOUDFLARE_API_TOKEN\u003C\u002Fcode>. Text chat keeps working without them.\u003C\u002Fp>\n\u003Ch3 id=\"no-compute-node-is-connected-repository-metadata-remains-available-coding-needs-a-node\">\u003Ca class=\"heading-anchor\" href=\"#no-compute-node-is-connected-repository-metadata-remains-available-coding-needs-a-node\">&quot;No Compute Node is connected. Repository metadata remains available; coding needs a Node.&quot;\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Add compute in \u003Cstrong>Server settings → Compute\u003C\u002Fstrong>. See \u003Ca href=\"\u002Fdocs\u002Fself-host\u002Fcompute-nodes\">Compute Nodes\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3 id=\"compute-node-setup-fails-on-a-vps\">\u003Ca class=\"heading-anchor\" href=\"#compute-node-setup-fails-on-a-vps\">Compute Node setup fails on a VPS\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cdiv class=\"table-wrap\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Message\u003C\u002Fth>\n\u003Cth>Fix\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>&quot;Compute Node needs 17 GiB free disk capacity for a 10 GiB Task workspace, its image and reserve for the Server.&quot;\u003C\u002Ftd>\n\u003Ctd>Free disk space or use a larger disk.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Factory needs 2 GiB available RAM, including reserve for the Server.&quot;\u003C\u002Ftd>\n\u003Ctd>Use a larger VPS.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Factory needs systemd as PID 1 (\u002Frun\u002Fsystemd\u002Fsystem) before it writes executor files.&quot;\u003C\u002Ftd>\n\u003Ctd>Add \u003Ccode>--no-systemd\u003C\u002Fcode> and start the Node yourself.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Docker shares the host kernel. Run llll factory enable --trust-shared-kernel only for trusted code\u002Fusers.&quot;\u003C\u002Ftd>\n\u003Ctd>Add \u003Ccode>--trust-shared-kernel\u003C\u002Fcode> if you trust the code and people on this VPS.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;The released image changed. Existing executor and source remain pinned.&quot;\u003C\u002Ftd>\n\u003Ctd>Export source, disable and revoke the Node in Settings, and pair a replacement for new Tasks.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>If only the compute step fails during a new install, the Server stays installed and the script prints the command to retry.\u003C\u002Fp>\n\u003Ch2 id=\"shell\">\u003Ca class=\"heading-anchor\" href=\"#shell\">Shell\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"a-server-disappeared-from-my-servers\">\u003Ca class=\"heading-anchor\" href=\"#a-server-disappeared-from-my-servers\">A Server disappeared from My servers\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>When a saved Server stops answering, llll.gg checks its address. Only Cloudflare&#39;s answer that no Worker serves that \u003Ccode>workers.dev\u003C\u002Fcode> address (error 1042) counts as deleted; the Shell then forgets it on this device and says so. Outages, timeouts and custom domains are never forgotten automatically. If the Server still exists, add it again from \u003Cstrong>Connect\u003C\u002Fstrong>.\u003C\u002Fp>\n",[13,17,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108],{"id":14,"text":15,"depth":16},"owner-setup","Owner setup",2,{"id":18,"text":19,"depth":20},"this-setup-link-is-invalid-or-expired","&quot;This setup link is invalid or expired&quot;",3,{"id":22,"text":23,"depth":20},"server-setup-is-already-complete","&quot;Server setup is already complete&quot;",{"id":25,"text":26,"depth":20},"sign-in-or-setup-fails-on-the-address-you-opened","Sign-in or setup fails on the address you opened",{"id":28,"text":29,"depth":16},"vps-installer","VPS installer",{"id":31,"text":32,"depth":16},"docker-compose-and-coolify","Docker Compose and Coolify",{"id":34,"text":35,"depth":20},"the-container-stops-with-this-data-was-migrated-by-l4-x-image-y-is-older","The container stops with &quot;this data was migrated by L4 X; image Y is older&quot;",{"id":37,"text":38,"depth":20},"bucket-init-fails-with-could-not-reach-or-create-s3cells","bucket-init fails with &quot;could not reach or create s3:\u002F\u002Fcells&quot;",{"id":40,"text":41,"depth":20},"the-llll-container-exits-at-start","The llll container exits at start",{"id":43,"text":44,"depth":20},"waiting-for-the-celld-node-to-join-on-first-start","&quot;waiting for the celld node to join&quot; on first start",{"id":46,"text":47,"depth":20},"the-server-restarts-after-node-lease-not-renewed-within-ttl","The Server restarts after &quot;node lease not renewed within TTL&quot;",{"id":49,"text":50,"depth":20},"docker-does-not-come-back-after-a-reboot","Docker does not come back after a reboot",{"id":52,"text":53,"depth":20},"settings-says-updates-are-managed-outside-l4","Settings says &quot;Updates are managed outside L4&quot;",{"id":55,"text":56,"depth":16},"cloudflare-updates","Cloudflare updates",{"id":58,"text":59,"depth":20},"the-update-stops-before-deployment-because-the-server-changed-during-backup","The update stops before deployment because the Server changed during backup",{"id":61,"text":62,"depth":20},"deployment-needs-verification","&quot;Deployment needs verification&quot;",{"id":64,"text":65,"depth":20},"settings-asks-you-to-reconnect-cloudflare","Settings asks you to reconnect Cloudflare",{"id":67,"text":68,"depth":20},"a-self-update-fails-on-the-workers-free-plan","A self-update fails on the Workers Free plan",{"id":70,"text":71,"depth":20},"a-03x-release-refuses-the-database","A 0.3.x release refuses the database",{"id":73,"text":74,"depth":16},"files-and-secrets","Files and secrets",{"id":76,"text":77,"depth":20},"file-storage-is-unavailable-ask-the-server-operator-to-configure-storage","&quot;File storage is unavailable. Ask the Server operator to configure storage.&quot;",{"id":79,"text":80,"depth":20},"saved-secret-cannot-be-decrypted-replace-it","&quot;Saved secret cannot be decrypted. Replace it.&quot;",{"id":82,"text":83,"depth":16},"mail","Mail",{"id":85,"text":86,"depth":20},"mail-is-rejected-with-unknown-l4-mailbox","Mail is rejected with &quot;Unknown L4 mailbox&quot;",{"id":88,"text":89,"depth":20},"inbound-mail-is-not-configured-self-hosted","Inbound mail is not configured (self-hosted)",{"id":91,"text":92,"depth":16},"agents-calls-and-compute","Agents, calls and compute",{"id":94,"text":95,"depth":20},"agents-cannot-be-created","Agents cannot be created",{"id":97,"text":98,"depth":20},"the-call-button-is-disabled-on-a-self-hosted-server","The call button is disabled on a self-hosted Server",{"id":100,"text":101,"depth":20},"no-compute-node-is-connected-repository-metadata-remains-available-coding-needs-a-node","&quot;No Compute Node is connected. Repository metadata remains available; coding needs a Node.&quot;",{"id":103,"text":104,"depth":20},"compute-node-setup-fails-on-a-vps","Compute Node setup fails on a VPS",{"id":106,"text":107,"depth":16},"shell","Shell",{"id":109,"text":110,"depth":20},"a-server-disappeared-from-my-servers","A Server disappeared from My servers",[112,137,165,181,200,222,243],{"id":113,"title":114,"pages":115},"get-started","Get started",[116,119,122,125,128,131,134],{"title":117,"url":118},"What is L4","\u002Fdocs\u002Fget-started\u002Fwhat-is-l4",{"title":120,"url":121},"Choose how to run your Server","\u002Fdocs\u002Fget-started\u002Fchoose-how-to-run",{"title":123,"url":124},"Create a Server on Cloudflare","\u002Fdocs\u002Fget-started\u002Fcreate-on-cloudflare",{"title":126,"url":127},"Install on a VPS","\u002Fdocs\u002Fget-started\u002Finstall-on-a-vps",{"title":129,"url":130},"Connect to a Server","\u002Fdocs\u002Fget-started\u002Fconnect-a-server",{"title":132,"url":133},"Invite your team","\u002Fdocs\u002Fget-started\u002Finvite-your-team",{"title":135,"url":136},"Create your first Agent","\u002Fdocs\u002Fget-started\u002Ffirst-agent",{"id":138,"title":139,"pages":140},"cloudflare","Cloudflare",[141,144,147,150,153,156,159,162],{"title":142,"url":143},"L4 on Cloudflare","\u002Fdocs\u002Fcloudflare\u002Foverview",{"title":145,"url":146},"Cloudflare access","\u002Fdocs\u002Fcloudflare\u002Faccess",{"title":148,"url":149},"Costs and limits","\u002Fdocs\u002Fcloudflare\u002Fcosts-and-limits",{"title":151,"url":152},"Custom domain","\u002Fdocs\u002Fcloudflare\u002Fcustom-domain",{"title":154,"url":155},"Mail on Cloudflare","\u002Fdocs\u002Fcloudflare\u002Fmail",{"title":157,"url":158},"Update a Cloudflare Server","\u002Fdocs\u002Fcloudflare\u002Fupdates",{"title":160,"url":161},"Backups on Cloudflare","\u002Fdocs\u002Fcloudflare\u002Fbackups",{"title":163,"url":164},"Remove a Cloudflare Server","\u002Fdocs\u002Fcloudflare\u002Fremove-a-server",{"id":166,"title":167,"pages":168},"self-host","Self-host",[169,172,175,178],{"title":170,"url":171},"Run a Server on a VPS","\u002Fdocs\u002Fself-host\u002Fvps",{"title":173,"url":174},"Run a Server with Docker Compose","\u002Fdocs\u002Fself-host\u002Fdocker",{"title":176,"url":177},"Run a Server on Coolify","\u002Fdocs\u002Fself-host\u002Fcoolify",{"title":179,"url":180},"Compute Nodes","\u002Fdocs\u002Fself-host\u002Fcompute-nodes",{"id":182,"title":183,"pages":184},"concepts","Concepts",[185,188,191,194,197],{"title":186,"url":187},"Servers and the Shell","\u002Fdocs\u002Fconcepts\u002Fserver-and-shell",{"title":189,"url":190},"Accounts, Members and Roles","\u002Fdocs\u002Fconcepts\u002Faccounts-members-roles",{"title":192,"url":193},"Agents, Tasks and Runs","\u002Fdocs\u002Fconcepts\u002Fagents-tasks-runs",{"title":195,"url":196},"Files and backups","\u002Fdocs\u002Fconcepts\u002Ffiles-and-backups",{"title":198,"url":199},"Releases and updates","\u002Fdocs\u002Fconcepts\u002Freleases-and-updates",{"id":201,"title":202,"pages":203},"agents","Agents and MCP",[204,207,210,213,216,219],{"title":205,"url":206},"Agents overview","\u002Fdocs\u002Fagents\u002Foverview",{"title":208,"url":209},"Models and Providers","\u002Fdocs\u002Fagents\u002Fmodels-and-providers",{"title":211,"url":212},"Connect an MCP client","\u002Fdocs\u002Fagents\u002Fmcp",{"title":214,"url":215},"External agents","\u002Fdocs\u002Fagents\u002Fexternal-agents",{"title":217,"url":218},"Repositories and code work","\u002Fdocs\u002Fagents\u002Frepositories",{"title":220,"url":221},"Schedules","\u002Fdocs\u002Fagents\u002Fschedules",{"id":223,"title":224,"pages":225},"guides","Guides",[226,229,232,234,237,240],{"title":227,"url":228},"Chat","\u002Fdocs\u002Fguides\u002Fchat",{"title":230,"url":231},"Projects and Tasks","\u002Fdocs\u002Fguides\u002Fprojects-and-tasks",{"title":83,"url":233},"\u002Fdocs\u002Fguides\u002Fmail",{"title":235,"url":236},"Calls and Live","\u002Fdocs\u002Fguides\u002Fcalls",{"title":238,"url":239},"Notifications","\u002Fdocs\u002Fguides\u002Fnotifications",{"title":241,"url":242},"Telegram","\u002Fdocs\u002Fguides\u002Ftelegram",{"id":9,"title":10,"pages":244},[245,248],{"title":246,"url":247},"Glossary","\u002Fdocs\u002Freference\u002Fglossary",{"title":4,"url":6},{"title":246,"url":247},null,1793304298675]