Configure your app to write uploads to the mounted directory. Preserve existing files when the app starts.Create a test upload, restart the app, and confirm that the app can still read the file.
Set public: true for a volume that the owner can browse through the file manager. Omit public or set it to false to keep the volume private.The public field controls owner file-manager access. It does not publish files to the internet.For a specific editable settings file, use configuration files. You can expose that editor while keeping the volume private.See the storage reference for field and volume validation rules.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Zenith","description":"Use the Zenith CLI to prepare apps, test temporary deployments, and publish on Zenith Hosting.","colors":{"primary":"#5D45B6","light":"#8668DC","dark":"#9275DD"},"logo":{"light":"https://mintcdn.com/zenith-hosting/1Iaf63Z3n_Oc8RCE/assets/wordmark.svg?fit=max\u0026auto=format\u0026n=1Iaf63Z3n_Oc8RCE\u0026q=85\u0026s=4abfa32b5a206e2019e8095d5773d4b7","dark":"https://mintcdn.com/zenith-hosting/1Iaf63Z3n_Oc8RCE/assets/wordmark.svg?fit=max\u0026auto=format\u0026n=1Iaf63Z3n_Oc8RCE\u0026q=85\u0026s=4abfa32b5a206e2019e8095d5773d4b7","href":"https://zenith.hosting"},"favicon":"https://mintcdn.com/zenith-hosting/1Iaf63Z3n_Oc8RCE/favicon.svg?fit=max\u0026auto=format\u0026n=1Iaf63Z3n_Oc8RCE\u0026q=85\u0026s=603cf4507335ed184417c99e658f88d1","appearance":{"default":"system","strict":false},"background":{"color":{"light":"#FFFFFF","dark":"#111113"}},"navbar":{"links":[{"href":"https://github.com/zenith-hosting","label":"GitHub"}],"primary":{"type":"button","label":"Get started","href":"/content/quickstart"}},"footer":{"socials":{"github":"https://github.com/zenith-hosting"}},"styling":{"codeblocks":{"theme":{"light":"github-light-default","dark":"vitesse-black"}},"latex":false},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"markdown":{"instructions":["Start with https://docs.zenith.hosting/content/quickstart.md. Use NO_COLOR=1 for plain CLI output in non-interactive agent sessions. Run without a TTY and supply explicit template and publishing inputs; NO_COLOR does not bypass prompts or authorization.","For temporary deployments, read https://docs.zenith.hosting/content/up.md. For publishing and review, read https://docs.zenith.hosting/content/publish.md. A preview uploads local files; publishing uses a pinned public GitHub commit.","Before creating, changing, or approving zenith-compose.yml, read https://docs.zenith.hosting/llms.txt, then read https://docs.zenith.hosting/content/zenith-compose.md and the complete public schema at https://docs.zenith.hosting/content/zenith-compose-reference.md. Generate only documented fields and follow their validation and completion checks.","Before creating, changing, publishing, or verifying a container image for Zenith, read https://docs.zenith.hosting/content/containerise.md.","Treat these live Markdown pages as the source of truth instead of relying on memory or a copied Zenith Compose specification.","Do not push commits, submit an app, merge pull requests, publish container images, or change registry visibility unless the user explicitly authorizes that external action. Do not bypass browser OAuth, GitHub connection, or Developer Agreement acceptance."]},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"zenith-hosting","hasAudioNarration":false,"actualSubdomain":"zenith-hosting","customDomains":["docs.zenith.hosting"],"gitSource":{"type":"github","owner":"zenith-hosting","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad9af8dbad04a2f7e31de03","collectionId":"ba094d68-8f8c-4b63-8c6a-845f4a965e85","liveDeploymentHistoryId":"6ad9af8dbad04a2f7e31de03","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ad9af8dbad04a2f7e31de03","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"App integrations","count":6},{"language":"default","tag":"App configuration","count":4},{"language":"default","tag":"CLI workflow","count":2},{"language":"default","tag":"Start here","count":2},{"language":"default","tag":"Sign in with Zenith","count":1},{"language":"default","tag":"zenith-compose.yml","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@font-face{font-family:\"Satoshi\";src:url(\"/assets/fonts/satoshi-400.woff2\") format(\"woff2\");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:\"Satoshi\";src:url(\"/assets/fonts/satoshi-500.woff2\") format(\"woff2\");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:\"Satoshi\";src:url(\"/assets/fonts/satoshi-700.woff2\") format(\"woff2\");font-style:normal;font-weight:700;font-display:swap}@font-face{font-family:\"Stack Sans Headline\";src:url(\"/assets/fonts/stack-sans-headline.woff2\") format(\"woff2\");font-style:normal;font-weight:200 700;font-display:swap}@font-face{font-family:\"Spline Sans Mono\";src:url(\"/assets/fonts/spline-sans-mono-latin.woff2\") format(\"woff2\");font-style:normal;font-weight:300 700;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,\n U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,\n U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}@font-face{font-family:\"Spline Sans Mono\";src:url(\"/assets/fonts/spline-sans-mono-latin-ext.woff2\") format(\"woff2\");font-style:normal;font-weight:300 700;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,\n U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,\n U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,\n U+A720-A7FF}:root{--zenith-purple: oklch(0.48 0.17 288);--zenith-purple-bright: oklch(0.575 0.17 292);--zenith-purple-wash: oklch(0.94 0.024 293);--zenith-canvas: oklch(0.972 0.003 290);--zenith-surface: oklch(1 0 0);--zenith-field: oklch(0.98 0.003 290);--zenith-edge: oklch(0.918 0.004 290);--zenith-ink: oklch(0.145 0.008 290);--zenith-muted: oklch(0.505 0.008 290);--zenith-cta-bg: #5d45b6;--zenith-cta-ink: white}html.dark{--zenith-purple: oklch(0.745 0.135 292);--zenith-purple-bright: oklch(0.79 0.12 292);--zenith-purple-wash: oklch(0.275 0.055 292);--zenith-canvas: oklch(0.155 0.006 290);--zenith-surface: oklch(0.17 0.006 290);--zenith-field: oklch(0.215 0.008 290);--zenith-edge: oklch(0.285 0.01 290);--zenith-ink: oklch(0.945 0.008 290);--zenith-muted: oklch(0.715 0.012 290);--zenith-cta-bg: #694cbd;--zenith-cta-ink: white}html{color-scheme:light;background:var(--zenith-surface)}html.dark{color-scheme:dark}body{color:var(--zenith-ink);background:var(--zenith-surface);font-family:\"Satoshi\", ui-sans-serif, sans-serif;font-kerning:normal;font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6,#page-title{color:var(--zenith-ink);font-family:\"Stack Sans Headline\", \"Satoshi\", ui-sans-serif, sans-serif;text-wrap:balance}code,pre,kbd,samp{font-family:\"Spline Sans Mono\", ui-monospace, monospace}::selection{background:color-mix(in oklab, var(--zenith-purple-bright) 22%, transparent)}#navbar-transition{border-color:var(--zenith-edge);background:color-mix(in oklab, var(--zenith-surface) 94%, transparent)}#navbar .nav-logo img{width:auto;height:2rem}html.dark a[href=\"https://zenith.hosting\"] img{filter:brightness(1.65) saturate(0.78)}#search-bar-entry{border-radius:0.75rem;background:var(--zenith-field);box-shadow:0 0 0 1px var(--zenith-edge)}#sidebar,#sidebar-content{border-right:1px solid var(--zenith-edge);background:var(--zenith-surface)}#sidebar a[aria-current=\"page\"]{color:var(--zenith-purple);background:color-mix(in oklab, var(--zenith-purple-wash) 60%, var(--zenith-surface))}#content-container{color:var(--zenith-ink)}#content-container p,#content-container li,#content-container td{line-height:1.55}#content-container a:not([class]){color:var(--zenith-purple)}#content-container :not(pre)>code{border-color:var(--zenith-edge);background:var(--zenith-field)}#topbar-cta-button a>span:first-child{border-radius:0.75rem;background:var(--zenith-cta-bg)!important}#topbar-cta-button a>div,#topbar-cta-button a>div span,#topbar-cta-button a>div svg{color:var(--zenith-cta-ink)!important}#footer{border-color:var(--zenith-edge)}html.dark #content-container{color:var(--zenith-ink)}html.dark #content-container p,html.dark #content-container li,html.dark #content-container td,html.dark #content-container th{color:color-mix(in oklab, var(--zenith-ink) 88%, var(--zenith-muted))}html.dark #content-container hr,html.dark #content-container table,html.dark #content-container th,html.dark #content-container td{border-color:var(--zenith-edge)}#footer a[href*=\"utm_campaign=poweredBy\"]{display:none!important}body>div[role=\"status\"][aria-live=\"polite\"].fixed.z-999{display:none!important}@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}"}],"page":{"pagePath":"content/persistent-storage","slug":"/content/persistent-storage","pageMetadata":{"title":"Store app data and expose files","sidebarTitle":"Persistent storage and files","description":"Mount durable app data and choose which volumes owners can access through the file manager.","href":"/content/persistent-storage"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Mount durable app data and choose which volumes owners can access through the file manager.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Mount a named volume where your app writes data that must survive restarts. Add `,_jsx(_components.code,{children:`x-zenith.storage`}),` metadata to describe that volume to Zenith.`]}),`\n`,_jsx(Heading,{level:`2`,id:`declare-and-mount-the-volume`,children:`Declare and mount the volume`}),`\n`,_jsxs(_components.p,{children:[`Add these blocks to your existing manifest. Replace `,_jsx(_components.code,{children:`app`}),` with your service name and `,_jsx(_components.code,{children:`/app/uploads`}),` with its data directory.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Keep database files, indexes, and credentials private. The following example enables owner file-manager access for uploaded files.`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default vitesse-black`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#000`,color:`#1f2328`,\"--shiki-dark\":`#dbd7cacc`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:`x-zenith`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:` storage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:` uploads`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:` volume`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#C98A7D`},children:` app_uploads`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:` label`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#C98A7D`},children:` Uploaded files`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:` description`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#C98A7D`},children:` Images and documents uploaded by app users.`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:` public`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4D9375`},children:` true`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:`services`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:` app`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:` volumes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:` -`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#C98A7D`},children:` app_uploads:/app/uploads`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:`volumes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#B8A965`},children:` app_uploads`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#444444`},children:`:`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`keep-app-data-across-restarts`,children:`Keep app data across restarts`}),`\n`,_jsx(_components.p,{children:`Configure your app to write uploads to the mounted directory. Preserve existing files when the app starts.`}),`\n`,_jsx(_components.p,{children:`Create a test upload, restart the app, and confirm that the app can still read the file.`}),`\n`,_jsx(Heading,{level:`2`,id:`choose-which-files-owners-can-access`,children:`Choose which files owners can access`}),`\n`,_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`public: true`}),` for a volume that the owner can browse through the file manager. Omit `,_jsx(_components.code,{children:`public`}),` or set it to `,_jsx(_components.code,{children:`false`}),` to keep the volume private.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`public`}),` field controls owner file-manager access. It does not publish files to the internet.`]}),`\n`,_jsxs(_components.p,{children:[`For a specific editable settings file, use `,_jsx(_components.a,{href:`/content/configuration-files`,children:`configuration files`}),`. You can expose that editor while keeping the volume private.`]}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsxs(_components.a,{href:`/content/zenith-compose-reference#storage`,children:[_jsx(_components.code,{children:`storage`}),` reference`]}),` for field and volume validation rules.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light-default","dark":"vitesse-black"}},"config":{},"pageMetadata":{"title":"Store app data and expose files","sidebarTitle":"Persistent storage and files","description":"Mount durable app data and choose which volumes owners can access through the file manager.","href":"/content/persistent-storage"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Declare and mount the volume","slug":"declare-and-mount-the-volume","depth":2,"children":[]},{"title":"Keep app data across restarts","slug":"keep-app-data-across-restarts","depth":2,"children":[]},{"title":"Choose which files owners can access","slug":"choose-which-files-owners-can-access","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"zenith-hosting","siteName":"Zenith","title":"Store app data and expose files - Zenith","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T06:26:42.678Z","originalFileLocation":"content/persistent-storage.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Mount durable app data and choose which volumes owners can access through the file manager.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Zenith\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Store app data and expose files - Zenith\">\u003cmeta data-mint-head property=\"og:description\" content=\"Mount durable app data and choose which volumes owners can access through the file manager.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Zenith\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.zenith.hosting/content/persistent-storage\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://zenith-hosting.mintlify.site/_mintlify/api/og/v2?division=App+integrations\u0026amp;title=Store+app+data+and+expose+files\u0026amp;description=Mount+durable+app+data+and+choose+which+volumes+owners+can+access+through+the+file+manager.\u0026amp;theme=bea2dd65243df29746aefac5\u0026amp;signature=d87a558d9720f5657a24ce2f985f5439021ceb3b8abdcdcc789705de5df9b989\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Store app data and expose files - Zenith\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Mount durable app data and choose which volumes owners can access through the file manager.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://zenith-hosting.mintlify.site/_mintlify/api/og/v2?division=App+integrations\u0026amp;title=Store+app+data+and+expose+files\u0026amp;description=Mount+durable+app+data+and+choose+which+volumes+owners+can+access+through+the+file+manager.\u0026amp;theme=bea2dd65243df29746aefac5\u0026amp;signature=d87a558d9720f5657a24ce2f985f5439021ceb3b8abdcdcc789705de5df9b989\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/zenith-hosting/15Dl96z5TYB9iHUH/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Zenith\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5D45B6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.zenith.hosting/content/persistent-storage\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/content/persistent-storage.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.zenith.hosting/#organization\",\"name\":\"Zenith\",\"url\":\"https://docs.zenith.hosting\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/zenith-hosting/1Iaf63Z3n_Oc8RCE/assets/wordmark.svg?fit=max\u0026auto=format\u0026n=1Iaf63Z3n_Oc8RCE\u0026q=85\u0026s=4abfa32b5a206e2019e8095d5773d4b7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.zenith.hosting#website\",\"name\":\"Zenith\",\"url\":\"https://docs.zenith.hosting\",\"publisher\":{\"@id\":\"https://docs.zenith.hosting/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.zenith.hosting/content/persistent-storage#webpage\",\"url\":\"https://docs.zenith.hosting/content/persistent-storage\",\"name\":\"Store app data and expose files\",\"description\":\"Mount durable app data and choose which volumes owners can access through the file manager.\",\"dateModified\":\"2026-10-22T06:26:42.678Z\",\"isPartOf\":{\"@id\":\"https://docs.zenith.hosting#website\"},\"breadcrumb\":{\"@id\":\"https://docs.zenith.hosting/content/persistent-storage#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.zenith.hosting/content/persistent-storage#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"App integrations\",\"item\":\"https://docs.zenith.hosting/content/smtp-email\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Store app data and expose files\",\"item\":\"https://docs.zenith.hosting/content/persistent-storage\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.zenith.hosting/content/persistent-storage#article\",\"headline\":\"Store app data and expose files\",\"name\":\"Store app data and expose files\",\"description\":\"Mount durable app data and choose which volumes owners can access through the file manager.\",\"url\":\"https://docs.zenith.hosting/content/persistent-storage\",\"mainEntityOfPage\":{\"@id\":\"https://docs.zenith.hosting/content/persistent-storage#webpage\"},\"dateModified\":\"2026-10-22T06:26:42.678Z\",\"publisher\":{\"@id\":\"https://docs.zenith.hosting/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.zenith.hosting#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Zenith\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Zenith","nav":{"global":null,"pages":[{"group":"Start here","pages":[{"title":"Build, test, and publish with Zenith","mode":"wide","href":"/index"},{"title":"Get started with the CLI","sidebarTitle":"Quickstart","href":"/content/quickstart"}]},{"group":"CLI workflow","pages":[{"title":"Test with zenith up","sidebarTitle":"Temporary deployments","href":"/content/up"},{"title":"Publish with zenith publish","sidebarTitle":"Publish your app","href":"/content/publish"}]},{"group":"App configuration","pages":[{"title":"Prepare your container","href":"/content/containerise"},{"group":"zenith-compose.yml","root":{"title":"Create a zenith-compose.yml","href":"/content/zenith-compose"},"pages":[{"title":"zenith-compose.yml reference","sidebarTitle":"Reference","href":"/content/zenith-compose-reference"}]},{"title":"Configure environment variables and secrets","sidebarTitle":"Environment variables and secrets","href":"/content/environment-variables"},{"title":"Mount static configuration files","sidebarTitle":"Static configuration files","href":"/content/static-configuration"}]},{"group":"App integrations","pages":[{"title":"Send email with SMTP","sidebarTitle":"SMTP email","href":"/content/smtp-email"},{"group":"Sign in with Zenith","root":{"title":"Add Sign in with Zenith","sidebarTitle":"Sign in with Zenith","href":"/content/sign-in-with-zenith"},"pages":[{"title":"Sign in with Zenith reference","sidebarTitle":"Reference","href":"/content/sign-in-with-zenith-reference"}]},{"title":"Protect an app with forward authentication","sidebarTitle":"Forward authentication","href":"/content/forward-authentication"},{"title":"Configure public URLs and domains","sidebarTitle":"Public URLs and domains","description":"Expose HTTP endpoints and configure app base URLs, allowed hosts, and verified custom domains.","href":"/content/public-urls"},{"title":"Store app data and expose files","sidebarTitle":"Persistent storage and files","href":"/content/persistent-storage"},{"title":"Expose configuration files","description":"Let users edit your app's configuration files in Zenith.","href":"/content/configuration-files"}]}]},"basePath":"","title":"Store app data and expose files - Zenith","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":[],"chunks":[]}