FILESYSTEM PERSISTENCE

Dedicated NVMe Volume at /app/data

Standard container filesystems reset when a new revision deploys. Cloudilio provides a persistent host mount at /app/data. Data placed in this directory survives application updates, restarts, and crashes.

How Persistent Storage Works

The execution node binds a dedicated host folder to /app/data inside the application container. The container process runs under user ID 1000. Cloudilio sets filesystem permissions to allow write access without root credentials.

DIRECTORY SEPARATION
/app (Ephemeral Workspace)
Contains source code, templates, and installed virtual environment packages. Cloudilio replaces this directory whenever you deploy a new commit or ZIP release.
/app/data (Durable Mount)
Contains databases (SQLite, DuckDB), user uploads, and persistent state files. Cloudilio retains this directory across every code revision.

SQLite Database Configuration Examples

Point your connection string to /app/data. Here are configurations for popular Python libraries:

1. Python Native sqlite3:
import os, sqlite3
db_dir = os.environ.get("APP_DATA_DIR", "/app/data")
db_path = os.path.join(db_dir, "production.db")
conn = sqlite3.connect(db_path)
2. SQLAlchemy URI:
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////app/data/app.db"
3. Django settings.py:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': '/app/data/db.sqlite3',
    }
}

Data Backups & Archival

Developers can export their complete persistent volume at any time. Navigate to your application overview page in the control panel and click Backup in the persistent storage card. Cloudilio packs the directory into a compressed .tar.gz archive and delivers the file directly through the browser.