> ## Documentation Index
> Fetch the complete documentation index at: https://docs.instapods.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

> Frequently asked questions about InstaPods.

## General

<AccordionGroup>
  <Accordion title="What is a pod?">
    A pod is a persistent Linux container running on InstaPods infrastructure. Think of it as a lightweight virtual server with its own filesystem, SSH access, and public URL. Unlike Docker containers, pods are persistent — all data survives restarts.
  </Accordion>

  <Accordion title="How long does it take to create a pod?">
    Pods are created in 1–2 seconds using pre-built images. If the warm pool is enabled in your region, creation can be nearly instant.
  </Accordion>

  <Accordion title="Can I run multiple apps in one pod?">
    Technically yes — a pod is a full Linux container, so you can run multiple processes. However, each pod is designed around a single preset (Static, PHP, Node.js, or Python). For multiple apps, we recommend separate pods.
  </Accordion>

  <Accordion title="Are pods ephemeral like Docker containers?">
    No. Pods are persistent containers — all files, installed packages, and configurations survive stop/start cycles. Your data is preserved unless you explicitly delete the pod.
  </Accordion>

  <Accordion title="What Linux distribution do pods use?">
    All pods run Ubuntu 24.04 LTS (Noble Numbat).
  </Accordion>

  <Accordion title="How large a file can visitors upload to my app?">
    512 MB per request. The proxy in front of every pod enforces that, so an upload larger than it is refused with a `413` before it ever reaches your app - your app's own limits apply on top.

    This is about requests to *your* app. Getting files into a pod through InstaPods is separate: the API accepts **100 MB per request**, so that's the ceiling for a single [`instapods files upload`](/ssh-and-files/file-management). [`files sync`](/cli/files) is not limited by it - it splits a directory into batches that fit and sends them in sequence. SSH and SFTP have no limit but your pod's disk.
  </Accordion>
</AccordionGroup>

## SSH & Access

<AccordionGroup>
  <Accordion title="How do I connect to my pod via SSH?">
    Each pod has a dedicated SSH port. Find it on the pod detail page or run `instapods pods get my-app`. Then connect:

    ```bash theme={null}
    ssh instapod@nbg1-1.instapods.app -p YOUR_PORT
    ```

    Or use the CLI shortcut: `instapods ssh my-app`
  </Accordion>

  <Accordion title="Can I use my own SSH key?">
    Yes. Add your public key at pod creation (`--ssh-key` flag), via the dashboard SSH tab, or with the CLI:

    ```bash theme={null}
    instapods ssh-keys add my-app
    ```
  </Accordion>

  <Accordion title="What user do I connect as?">
    Always connect as the `instapod` user. This is the non-root user that owns your application files.
  </Accordion>
</AccordionGroup>

## Services & Databases

<AccordionGroup>
  <Accordion title="Why can't I install services on the Launch plan?">
    Database services (MySQL, PostgreSQL, Redis) require additional memory and CPU. The Launch plan's resources (512 MB RAM, 1 vCPU) are too limited for reliable database operation. Upgrade to the Build plan or higher.
  </Accordion>

  <Accordion title="Can I access my database from outside the pod?">
    No. Database services listen on `localhost` only and are not accessible from the internet. This is a security measure. To access your database remotely, use SSH port forwarding:

    ```bash theme={null}
    ssh -L 3306:localhost:3306 instapod@host -p PORT
    ```
  </Accordion>

  <Accordion title="How do I back up my database?">
    SSH into your pod and use the database's native dump tool:

    ```bash theme={null}
    # MySQL
    mysqldump -u instapod -p instapod > backup.sql

    # PostgreSQL
    pg_dump -U instapod instapod > backup.sql
    ```

    Then download the dump file using SCP or the CLI.
  </Accordion>
</AccordionGroup>

## Billing

<AccordionGroup>
  <Accordion title="Is there a free trial?">
    Yes, in one place. If you connect the [InstaPods connector](/mcp/overview) to an AI assistant and ask it to deploy your code before you've added a card, you can be granted a **free trial pod**: a real Launch pod on a live HTTPS URL, deleted automatically after 90 minutes unless you keep it. Adding a payment method claims it - the pod keeps its name, URL and files, and nothing is charged that day. One per person, and 1-Click Apps aren't included. See [Free Trial Pod](/mcp/trial).

    Everywhere else - the dashboard, the CLI, the API - a payment method is required before your first pod.
  </Accordion>

  <Accordion title="What happens if my payment fails?">
    Your subscription enters a "past due" state with a 7-day grace period. During this time, existing pods keep running but you can't create new ones. After 7 days, pods are suspended. Pay the invoice to reactivate.

    Suspended pods are not kept indefinitely. At 28 days suspended you get a final notice naming the pods and the date, and 7 days after that they are deleted permanently. See the [full timeline](/dashboard/billing#if-it-stays-unpaid-the-pods-are-deleted).
  </Accordion>

  <Accordion title="Can I change plans?">
    Yes, upgrade or downgrade anytime. Resource changes (CPU, memory, disk) take effect immediately. Billing is prorated — you're charged for the time spent on each plan.
  </Accordion>

  <Accordion title="Do stopped pods cost money?">
    Currently, billing is per-plan (flat monthly rate), not per-usage. A stopped pod still counts toward your subscription. Delete the pod if you no longer need it.
  </Accordion>

  <Accordion title="How do I cancel my subscription?">
    Go to **Billing** → Danger Zone → **Cancel subscription**. Only the team owner can cancel, because it ends billing for the whole team.

    Delete every pod on the team first — the dashboard lists any that are still in the way and links to them. Stopping a pod is not enough: a stopped pod is still charged at its full plan rate, and only deleting it ends the charge.

    Cancelling stops billing immediately and you are not invoiced for the part-month already used. Your account, team, invoice history and any remaining credits stay exactly as they are, so there is nothing to re-sign-up for — deploying a pod again starts a new subscription automatically.
  </Accordion>

  <Accordion title="How do I close my account?">
    Delete it yourself from the account menu → **Account** → Danger Zone. It destroys every pod you own and cancels any subscription, permanently. Settle any unpaid invoice first. See [Account Settings](/dashboard/account-settings#deleting-your-account).
  </Accordion>
</AccordionGroup>

## Custom Domains

<AccordionGroup>
  <Accordion title="How many custom domains can I add?">
    Up to 5 custom domains per pod.
  </Accordion>

  <Accordion title="Do I get SSL for custom domains?">
    Yes. After DNS verification, an SSL certificate is automatically provisioned via Let's Encrypt.
  </Accordion>

  <Accordion title="Can I use a root domain (not a subdomain)?">
    Yes, if your DNS provider supports CNAME flattening (most modern providers do, including Cloudflare). Otherwise, use a subdomain like `app.example.com`.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.