To configure and customize Skedler options such as port, external data store etc.,  you can edit reporting.yml.  This file is located in the $skedler_home folder.   This article discusses the various configuration options for Skedler.  


Deploy in an Air-gapped Environment

To deploy Skedler in an air-gapped environment, uncomment and configure the following parameters in reporting.yml.

isOfflineEnvironment: true
skedlerUsername: 'admin@skedler.com'
skedlerPassword: 'admin'

Use this username, password to login to skedler after successful installation.


Persist License in VM/Container Deployments

If a VM or container crashes, the Skedler license might not be persisted.  To persist and automatically activate on the restart, configure the following parameters.

licenseEmail: 'your email id'
licenseKey: 'your license key'


Bind Hostname & Customize Ports

To bind Skedler to a hostname or to customize the ports for Skedler services, customize the following parameters.

serverPort: 3006
redisPort: 6379
host: '127.0.0.1'


Customize Skedler Data & Log File Location

To customize the location of Skedler database and log files, customize the following parameters.

logFilesDir: '/var/opt/skedler-xg' 
databasePath: '/var/lib/skedler-xg'


Use Proxy such as Nginx

Customize the following parameters if you are using a proxy such as Nginx with Skedler. 

proxyBasePath: '/skedler'

Skedler uses websockets for communication. Make sure your reverse proxy server is configured to handle websockets. 


In Nginx, add the following:

server {    
    listen 80;    
    server_name 127.0.0.1; //server URL    
    location /skedler/ {          
          proxy_pass http://127.0.0.1:3000/;  
          proxy_http_version 1.1;       
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
          proxy_read_timeout 86400
          rewrite /skedler/(/.*) $1 break;
          } 
     }


Use MySQL as Skedler Datastore

SQLite is the default embedded database used for storing Skedler data.  However, if you'd like to use your own MySQL instance as the Skedler datastore, configure the following parameters.

databaseHost: 'localhost'
databasePort: 3306
accountDatabaseName: 'sks_accounts'
tenantDatabaseName: 'sks_tenant'
databaseUsername: 'admin'
databasePassword: 'skedler123'
dialect: 'mysql'

The following parameters are optional.

maxConn: 5
minConn: 0
connIdleTime: 10000
connAcquireTime: 10000

Upgrade from v4 to v5

Skedler v5 uses SQLite or MySQL as the datastore. Elasticsearch is no longer supported as a data store.  If you used Elasticsearch as the datastore for Skedler v4, during upgrade to v5, the data will migrated from Elasticsearch to either SQLite or MySQL.  Configure the following parameters to enable this migration.  

#Enter the database that you are using in Skedler Reports 4.x. Possible values are  ‘elasticsearch’, ‘mysql’, ‘sqlite'
migrationSourceDatasource: 'elasticsearch'  
oldSkedlerBasePath: 'Enter the absolute path to your Skedler Reports 4.x'


Uncomment and configure the following parameter only if you used SQLite as the datastore for Skedler v4.x.

migrationSourceDatastorePath: 'path to v4 SQLite database'


Uncomment and configure below parameters only if you used MySQL as the database in Skedler Reports 4.x.

migrationDatabaseHost: 'hostname'
migrationDatabasePort: port
migrationDatabaseName: 'databaseName'
migratoinDatabaseUsername: 'username'
migrationDatabasePassword: 'password'
migrationDialect: 'dialect'


Uncomment and configure below keys only if you used Elasticsearch as the database in Skedler Reports 4.x.

elasticsearchUrl: 'The elasticsearch url configured in Skedler v4.x'
skedlerIndex: '.skedler'
elasticsearchAuthType: 'xpack/searchguard'
skedlerElasticsearchUsername: 'username'
skedlerElasticsearchPassword: 'password'