The documentation is in the repository

Twenty-six files live in docs/, versioned with the code they describe and reviewed in the same pull requests that change the behaviour. This page indexes the twenty-four that answer questions people actually ask. The rest are internal engineering notes, and the whole set is one click from the repository.

A running site, then the docs you need

1 · install
curl -LO https://github.com/RustCFML/RustCFML/releases/latest/download/rustcfml-linux-x86_64
chmod +x rustcfml-linux-x86_64
sudo mv rustcfml-linux-x86_64 /usr/local/bin/rustcfml
2 · a page
<cfset name = "world">
<cfoutput>Hello, #name#!</cfoutput>
3 · serve
rustcfml --serve . --port 8500
open http://localhost:8500/index.cfm

The four things everybody looks up first

Configuration is a file, not a console. Secrets come from the environment, so nothing sensitive is ever committed.

A datasource

Add it to .cfconfig.json beside your web root, or to this.datasources in Application.cfc.

.cfconfig.json
{
  "datasources": {
    "app": {
      "type":     "PostgreSQL",
      "host":     "db.internal",
      "port":     5432,
      "database": "appdb",
      "username": "{env:DB_USER}",
      "password": "{env:DB_PASSWORD}"
    }
  }
}
Clean URLs

Drop a rewrite file in the document root. Regex, backreferences, conditions and last="true" all behave the way Tuckey documented.

urlrewrite.xml
<urlrewrite>
  <rule>
    <from>^/([a-z][a-z0-9-]*)/?$</from>
    <to last="true">/$1.cfm</to>
  </rule>
</urlrewrite>
Sessions

On by default and in process. Move them to Memcached, or let nodes discover each other, without touching a line of application code.

Application.cfc
component {
    this.name              = "MyApp";
    this.sessionManagement = true;
    this.sessionTimeout    = createTimeSpan( 0, 8, 0, 0 );
    this.sessioncookie     = {
          secure  = true
        , httpOnly = true
        , samesite = "Lax"
    };
}
Deploy it

Production mode plus a Unix socket behind nginx is the whole deployment story for most applications. For containers, the official image makes a good base.

Dockerfile
FROM ghcr.io/rustcfml/rustcfml:v0.742.2
COPY --chown=nonroot:nonroot webroot/ /srv/app/
# only if the app ships .rcx extensions:
RUN rustcfml-warm-extensions

Before you plan a migration, read Known Issues. It lists the silent no-ops and the places where behaviour diverges from Lucee by choice. It is the shortest document in the repository that will save you the most time. docs/known-issues.md