diff --git a/packages/projects-docs/pages/learn/environment/vm.mdx b/packages/projects-docs/pages/learn/environment/vm.mdx index d6713464..706cec18 100644 --- a/packages/projects-docs/pages/learn/environment/vm.mdx +++ b/packages/projects-docs/pages/learn/environment/vm.mdx @@ -1,6 +1,6 @@ --- title: VM Configuration & Persistence -description: The specs of our VMs and how we persist files. +description: The specs of CodeSandbox VMs and how we persist files. --- import { Callout } from 'nextra-theme-docs' @@ -8,23 +8,21 @@ import { Callout } from 'nextra-theme-docs' # Environment CodeSandbox repositories and Devboxes run on [virtual machines](https://codesandbox.io/blog/how-we-clone-a-running-vm-in-2-seconds). Each branch and Devbox gets its own virtual machine (VM). The size of the VM depends on the settings configured in the [workspace portal](https://codesandbox.io/t/vm_settings). -VM resource consist of vCPU, RAM and memory. The vCPU and RAM specs are grouped in VM tiers of various sizes. However, the memory is set according to the subscription. +VM resources consist of vCPU, RAM and storage. The vCPU and RAM specs are grouped in VM tiers of various sizes. However, the storage is set according to the subscription. | VM size | CPU | RAM | -| ------ | -------- | ------ | -| Nano | 2 cores | 4 GB | -| Micro | 4 cores | 8 GB | -| Small | 8 cores | 16 GB | -| Medium | 16 cores | 32 GB | -| Large | 32 cores | 64 GB | -| XLarge | 64 cores | 128 GB | - - -| Subscription | Memory | -| ------ | --------- | -| Free | 20 GB | -| Pro | 50 GB | - +| ------- | -------- | ------ | +| Nano | 2 cores | 4 GB | +| Micro | 4 cores | 8 GB | +| Small | 8 cores | 16 GB | +| Medium | 16 cores | 32 GB | +| Large | 32 cores | 64 GB | +| XLarge | 64 cores | 128 GB | + +| Subscription | Storage | +| ------------ | ------- | +| Free | 20 GB | +| Pro | 50 GB | If you require storage that goes beyond our Pro plan defaults, please select 'Pro Subscriptions' on our support form and [get in touch](https://codesandbox.io/support). Our team can adjust your limits to suit your project. @@ -38,25 +36,30 @@ Note that, the first time you import a project to CodeSandbox, it can take longe ## Persistence -Everything you save in `/project` is guaranteed to be persisted between reboots, hibernations and forks. Every file change outside of `/project` will usually be persisted, but there is a chance that those changes will be cleared. +We use [Dev Containers](https://codesandbox.io/docs/learn/environment/devcontainers) by default for all repositories and Devboxes. Your project is under `/workspaces/workspace` (the default workspace folder) and your home folder is under `/root`. Under the hood, the paths are in `/project`. + +The workspace folder is not always `/workspaces/workspace`; it depends on the Dev Container configuration. + +Everything in your workspace is guaranteed to persist between reboots, hibernations and forks. We persist the workspace folder and the Docker engine state, like images, volumes, etc. -Your project folder lives in `/project/`, your home folder lives in `/project/home/`. Your home folder is inaccessible for other users. +If your branch or Devbox has not been accessed for a certain period (explained below), we delete the contents of your workspace. However, we back up uncommitted changes to repositories and all code in Devboxes (other than the ones in `.gitignore`). This means that you will never lose your work, even if we delete the workspace folder after the standard period of inactivity. -If your project uses [Dev Containers](https://codesandbox.io/docs/learn/environment/devcontainers) (which is the default now), the paths differ a bit, as they are mounted inside the container. Your project is under `/workspaces/workspace`, and your home folder is under `/root`. Under the hood the paths are still in `/project` though. +Overall, we persist the workspace folder and some state in Docker (like volumes) for: -If your branch has not been accessed for 31 days, we delete the contents of `/project`. This means that the next time you start this branch again, we will reinitialize `/project` by doing a fresh clone. +- 8 days of inactivity for projects belonging to Free workspaces. +- 15 days of inactivity for projects belonging to Pro workspaces. -For any uncommitted work we make a backup. This backup is never deleted. All your uncommitted work is restored when you open a branch where the `/project` folder is deleted. This means that you will never lose your work, even if we delete `/project` after 31 days of inactivity. +In case your project has a database that needs to retain data across restarts, we recommend putting the data in a git ignored directory in the workspace or a named Docker volume. Memory snapshots (which allow instant resume of VMs) will be cleaned up after 7 to 31 days of inactivity. There is no lost work from cleaning up memory snapshots. ## Node Modules -The `node_modules` folder is globally ignored. You can override this behaviour by adding `!node_modules` in your own project `.gitignore` file. While this will add `node_modules` folders to git, they won't be displayed in the UI. +The `node_modules` folder is globally ignored. You can override this behavior by adding `!node_modules` in your own project `.gitignore` file. While this will add `node_modules` folders to git, they won't be displayed in the UI. ## Environment configuration -You can configure the environment of your VM with [Devcontainers](https://codesandbox.io/docs/learn/environment/devcontainers). To do this, create `.devcontainer/devcontainer.json` file in the root of the repository. After you've saved the file, you should be prompted with a notification to restart the container. +You can configure the environment of your VM with [Dev Containers](https://codesandbox.io/docs/learn/environment/devcontainers). To do this, create `.devcontainer/devcontainer.json` file in the root of the repository. After you've saved the file, you should be prompted with a notification to restart the container. ### Configuring NodeJS version @@ -69,11 +72,11 @@ For example, to update NodeJS to v18, you can either create or update a `.devcon } ``` -We're using [Devcontainers](https://codesandbox.io/docs/learn/environment/devcontainers) to configure the environment. +We're using [Dev Containers](https://codesandbox.io/docs/learn/environment/devcontainers) to configure the environment. ### Deno support -If we detect a `deno.json` file in your sandbox or repository during boot, we'll automatically enable the Deno LSP (which provides autocompletions) instead of the TypeScript LSP. You can also force this by creating a file called `.codesandbox/features.json` and inserting these contents: +If we detect a `deno.json` file in your Sandbox or repository during boot, we'll automatically enable the Deno LSP (which provides autocompletions) instead of the TypeScript LSP. You can also force this by creating a file called `.codesandbox/features.json` and inserting these contents: ```json {