ktor { deployment { port = 8087 # Uncomment this to enable SSL. If this is enabled, a certificate must be provided (see # security section below) # sslPort = 8889 } application { modules = [ com.ustadmobile.lib.rest.UmRestApplicationKt.umRestApplication ] } ustad { # dbmode can be singleton or virtualhost . If the dbmode is virtualhost, then multiple # instances can run using the same server. dbmode = singleton datadir = data ##Enables development mode which will enables CORS and allow to clear all tables devmode = "false" # The app download link for Android users. Users will be redirected here if they select # to download the app androidDownloadHref = "https://play.google.com/store/apps/details?id=com.toughra.ustadmobile" # Running the web version (app-react) using Cross Origin requests etc. can cause issues. # # Setting jsDevServer will forward all requests not expected to be handled by KTOR to # the given jsDevServer (e.g. acting as a reverse proxy). This is normally the server that # is started using # ./gradlew app-react:browserDevelopmentRun --continuous # # This makes it possible to use browserDevelopmentRun for fast compilation (e.g. no need # to build a production bundle) and avoid cross origin request permission issues. # # jsDevServer = "http://localhost:8080/" paths { # These are external commands that are required. Normally they will be automatically # detected in the path, and there is no need to specify them manually # If they are not in the path or default location, then specify them below # FFMPEG is used for media compression # ffmpeg = /usr/bin/ffmpeg # ffprobe = /usr/bin/ffprobe } } database { #Change to "org.postgresql.Driver" to use Postgres. Postgres is recommended for production #use driver = "org.sqlite.JDBC" # If you are using the virtualhost dbmode, then you will need to add the (hostname) # variable to the database url e.g. # url=jdbc:postgresql:///ustad_(hostname) # Any non alphanumeric characters in hostname (e.g. ., -, etc) will be replaced with _ # # If you are simply running a single instance (e.g. no virtual hosting), just enter the JDBC # database url here. # # For Sqlite: # jdbc:sqlite:path/to/file.sqlite?parameters # recommended parameters: journal_mode=WAL&synchronous=OFF&busy_timeout=30000&recursive_triggers=true # journal_mode and synchronous parameters improve performance ( https://sqlite.org/wal.html ) # busy_timeout is the time that SQLite will wait for a commit to finish # recursive_triggers are required to correctly execute progress trackers for ContentJobItem # For Postgres # jdbc:postgresql:///dbName url = "jdbc:sqlite:data/singleton/UmAppDatabase.sqlite?journal_mode=WAL&synchronous=OFF&busy_timeout=30000&recursive_triggers=true" # Enter the Postgres database username and password here if using Postgres. If using SQLite, # these can be left blank user = "" password = "" } # The database for Quartz is stored separately. Quartz is a library used to trigger timed tasks. # There is always one (and only one) quartz database, even when there are multiple virtual # servers. quartz { # Change to org.postgresql.Driver to use Postgres. SQLite is fine for Quartz for production # and testing use. driver = "org.sqlite.JDBC" url = "jdbc:sqlite:data/quartz.sqlite?journal_mode=WAL&synchronous=OFF&busy_timeout=30000" user = "" password = "" } security { # It is strongly recommended to configure SSL here so the app can use HTTP2. See INSTALL.md # for instructions. This applies even when the app is used behind a reverse proxy (because # HTTP2 defacto requires SSL). # ssl { # keyStore = /etc/letsencrypt/live/mydomain.com/keystore.jks # keyAlias = myalias # keyStorePassword = password # privateKeyPassword = password # } } } # # Sending email is required to allow parents to approve a registration for their child. # # mail { # user = "" # auth = "" # from = "" # # # These properties are as per the Jakarta mail property options: # # # # https://jakarta.ee/specifications/mail/1.6/apidocs/index.html?com/sun/mail/smtp/package-summary.html # # # smtp { # auth = "true" # host = "" # port = 587 # starttls { # enable = "true" # } # } # }