# System Requirements

The following list contains all the requirements that your system hast to fulfill to run saaster.\
For local development we strongly recommend the usage of the docker configuration that is provided by saaster.&#x20;

{% content-ref url="../development/local-development" %}
[local-development](https://docs.saaster.io/development/local-development)
{% endcontent-ref %}

### CFML Engine

Saaster requires the CFML engine [Lucee](http://lucee.org) 5.3.9+

### **Operating Systems**

Your Lucee engine can be installed on Linux, Mac or Windows.

### **Database Engines**

Saaster requires [MySQL 5.7](https://dev.mysql.com/downloads/mysql/5.7.html)

### Web Server

Saaster should run on all popular web servers. Saaster got tested with IIS and the [Tuckey servlet filter](http://tuckey.org/urlrewrite/). The chosen web server should support URL rewriting.

Example configuration:

{% tabs %}
{% tab title="IIS" %}

```xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                 <rule name="API" stopProcessing="true">
                    <match url="^/api/(.*)$" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="api/index.cfm/{R:1}" appendQueryString="true" />
                </rule>	
	        <rule name="SEF" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.cfm/{R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>		
    </system.webServer>
</configuration>

```

{% endtab %}

{% tab title=" Tuckey" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<urlrewrite>
    <rule>
        <name>Rewrite API</name>
	<from>^/api/(.+)$</from>
        <condition type="request-filename" operator="notdir"/>
        <condition type="request-filename" operator="notfile"/>
        <to type="passthrough" qsappend="true" >/api/index.cfm/$1</to>
    </rule>

    <rule>
        <name>Rewrite Main</name>
	<from>^/(.+)$</from>
	<condition type="request-uri" operator="notequal">/lucee/admin/server.cfm</condition>
	<condition type="request-uri" operator="notequal">/lucee/admin/web.cfm</condition>
        <condition type="request-uri" operator="notequal">/api/</condition>
	<condition type="request-uri" operator="notequal">/(index.cfm|robots.txt|osd.xml|flex2gateway|cfide|cfformgateway|railo-context|lucee|admin-context|modules/contentbox-dsncreator|modules/contentbox-installer|modules/contentbox|files|images|js|javascripts|css|styles|config).*</condition>
        <condition type="request-uri" operator="notequal">\.(bmp|gif|jpe?g|png|css|js|txt|xls|ico|swf|woff|ttf|otf)$</condition>
        <condition type="request-filename" operator="notdir"/>
        <condition type="request-filename" operator="notfile"/>
        <to type="passthrough" qsappend="true" >/index.cfm/$1</to>
    </rule>
</urlrewrite>

```

{% endtab %}
{% endtabs %}
