# Pigallery 2 man page pigallery2 uses [typeconfig](https://github.com/bpatrik/typeconfig) for configuration `npm start -- --help` prints the following: ``` Usage: [options] Meta cli options: --help prints this manual --config-path sets the config file location --config-attachState prints the value state (default, readonly, volatile, etc..) to the config file --config-attachDesc prints description to the config file --config-rewrite-cli updates the config file with the options from cli switches --config-rewrite-env updates the config file with the options from environmental variables --config-string-enum enums are stored as string in the config file (instead of numbers) --config-save-if-not-exist creates config file if not exist --config-save-and-exist creates config file and terminates can be configured through the configuration file, cli switches and environmental variables. All settings are case sensitive. Example for setting config MyConf through cli: ' --MyConf=5' and through env variable: 'SET MyConf=5' . Default values can be also overwritten by prefixing the options with 'default-', like ' --default-MyConf=5' and 'SET default-MyConf=5' App CLI options: --Server-sessionSecret (default: []) --Server-port (default: 80) --Server-host (default: '0.0.0.0') --Server-Media-folder Images are loaded from this folder (read permission required) (default: 'demo/images') --Server-Media-tempFolder Thumbnails, coverted photos, videos will be stored here (write permission required) (default: 'demo/tmp') --Server-Media-photoProcessingLibrary (default: 'sharp') --Server-Media-Video-transcoding-bitRate (default: 5242880) --Server-Media-Video-transcoding-resolution (default: 720) --Server-Media-Video-transcoding-fps (default: 25) --Server-Media-Video-transcoding-codec (default: 'libx264') --Server-Media-Video-transcoding-format (default: 'mp4') --Server-Media-Photo-Converting-onTheFly Converts photos on the fly, when they are requested. (default: true) --Server-Media-Photo-Converting-resolution (default: 1080) --Server-Media-Thumbnail-qualityPriority if true, photos will have better quality. (default: true) --Server-Media-Thumbnail-personFaceMargin (default: 0.6) --Server-Threading-enabled App can run on multiple thread (default: true) --Server-Threading-thumbnailThreads Number of threads that are used to generate thumbnails. If 0, number of 'CPU cores -1' threads will be used. (default: 0) --Server-Database-type (default: 'sqlite') --Server-Database-dbFolder (default: 'db') --Server-Database-mysql-host (default: 'localhost') --Server-Database-mysql-port (default: 3306) --Server-Database-mysql-database (default: 'pigallery2') --Server-Database-mysql-username (default: '') --Server-Database-mysql-password (default: '') --Server-Sharing-updateTimeout (default: 300000) --Server-sessionTimeout unit: ms (default: 604800000) --Server-Indexing-folderPreviewSize (default: 2) --Server-Indexing-cachedFolderTimeout (default: 3600000) --Server-Indexing-reIndexingSensitivity (default: 'low') --Server-Indexing-excludeFolderList If an entry starts with '/' it is treated as an absolute path. If it doesn't start with '/' but contains a '/', the path is relative to the image directory. If it doesn't contain a '/', any folder with this name will be excluded. (default: []) --Server-Indexing-excludeFileList Any folder that contains a file with this name will be excluded from indexing. (default: []) --Server-photoMetadataSize only this many bites will be loaded when scanning photo for metadata (default: 524288) --Server-Duplicates-listingLimit (default: 1000) --Server-Log-level (default: 'info') --Server-Log-sqlLevel (default: 'error') --Server-Jobs-maxSavedProgress Job history size (default: 10) --Server-Jobs-scheduled (default: [{"name":"Indexing","jobName":"Indexing","config":{},"allowParallelRun":false,"trigger":{"type":1}},{"name":"Thumbnail Generation","jobName":"Thumbnail Generation","config":{"sizes":[240]},"allowParallelRun":false,"trigger":{"type":4,"afterScheduleName":"Indexing"}},{"name":"Photo Converting","jobName":"Photo Converting","config":{},"allowParallelRun":false,"trigger":{"type":4,"afterScheduleName":"Thumbnail Generation"}},{"name":"Video Converting","jobName":"Video Converting","config":{},"allowParallelRun":false,"trigger":{"type":4,"afterScheduleName":"Photo Converting"}},{"name":"Temp Folder Cleaning","jobName":"Temp Folder Cleaning","config":{},"allowParallelRun":false,"trigger":{"type":4,"afterScheduleName":"Video Converting"}}]) --Client-applicationTitle (default: 'PiGallery 2') --Client-publicUrl (default: '') --Client-urlBase (default: '') --Client-Search-enabled (default: true) --Client-Search-instantSearchEnabled (default: true) --Client-Search-InstantSearchTimeout (default: 3000) --Client-Search-instantSearchCacheTimeout (default: 3600000) --Client-Search-searchCacheTimeout (default: 3600000) --Client-Search-AutoComplete-enabled (default: true) --Client-Search-AutoComplete-maxItemsPerCategory (default: 5) --Client-Search-AutoComplete-cacheTimeout (default: 3600000) --Client-Sharing-enabled (default: true) --Client-Sharing-passwordProtected (default: true) --Client-Map-enabled (default: true) --Client-Map-useImageMarkers (default: true) --Client-Map-mapProvider (default: 'OpenStreetMap') --Client-Map-mapboxAccessToken (default: '') --Client-Map-customLayers (default: [{"name":"street","url":""}]) --Client-RandomPhoto-enabled (default: true) --Client-Other-enableCache (default: true) --Client-Other-enableOnScrollRendering (default: true) --Client-Other-defaultPhotoSortingMethod (default: 'ascDate') --Client-Other-enableOnScrollThumbnailPrioritising (default: true) --Client-Other-NavBar-showItemCount (default: true) --Client-Other-captionFirstNaming (default: false) --Client-authenticationRequired (default: true) --Client-unAuthenticatedUserRole (default: 'Admin') --Client-Media-Thumbnail-iconSize (default: 45) --Client-Media-Thumbnail-personThumbnailSize (default: 200) --Client-Media-Thumbnail-thumbnailSizes (default: [240,480]) --Client-Media-Video-enabled (default: true) --Client-Media-Photo-Converting-enabled (default: true) --Client-MetaFile-enabled (default: true) --Client-Faces-enabled (default: true) --Client-Faces-keywordsToPersons (default: true) --Client-Faces-writeAccessMinRole (default: 'Admin') Environmental variables: Server-sessionSecret (default: []) Server-port (default: 80) PORT same as Server-port Server-host (default: '0.0.0.0') Server-Media-folder Images are loaded from this folder (read permission required) (default: 'demo/images') Server-Media-tempFolder Thumbnails, coverted photos, videos will be stored here (write permission required) (default: 'demo/tmp') Server-Media-photoProcessingLibrary (default: 'sharp') Server-Media-Video-transcoding-bitRate (default: 5242880) Server-Media-Video-transcoding-resolution (default: 720) Server-Media-Video-transcoding-fps (default: 25) Server-Media-Video-transcoding-codec (default: 'libx264') Server-Media-Video-transcoding-format (default: 'mp4') Server-Media-Photo-Converting-onTheFly Converts photos on the fly, when they are requested. (default: true) Server-Media-Photo-Converting-resolution (default: 1080) Server-Media-Thumbnail-qualityPriority if true, photos will have better quality. (default: true) Server-Media-Thumbnail-personFaceMargin (default: 0.6) Server-Threading-enabled App can run on multiple thread (default: true) Server-Threading-thumbnailThreads Number of threads that are used to generate thumbnails. If 0, number of 'CPU cores -1' threads will be used. (default: 0) Server-Database-type (default: 'sqlite') Server-Database-dbFolder (default: 'db') Server-Database-mysql-host (default: 'localhost') MYSQL_HOST same as Server-Database-mysql-host Server-Database-mysql-port (default: 3306) MYSQL_PORT same as Server-Database-mysql-port Server-Database-mysql-database (default: 'pigallery2') MYSQL_DATABASE same as Server-Database-mysql-database Server-Database-mysql-username (default: '') MYSQL_USERNAME same as Server-Database-mysql-username Server-Database-mysql-password (default: '') MYSQL_PASSWORD same as Server-Database-mysql-password Server-Sharing-updateTimeout (default: 300000) Server-sessionTimeout unit: ms (default: 604800000) Server-Indexing-folderPreviewSize (default: 2) Server-Indexing-cachedFolderTimeout (default: 3600000) Server-Indexing-reIndexingSensitivity (default: 'low') Server-Indexing-excludeFolderList If an entry starts with '/' it is treated as an absolute path. If it doesn't start with '/' but contains a '/', the path is relative to the image directory. If it doesn't contain a '/', any folder with this name will be excluded. (default: []) Server-Indexing-excludeFileList Any folder that contains a file with this name will be excluded from indexing. (default: []) Server-photoMetadataSize only this many bites will be loaded when scanning photo for metadata (default: 524288) Server-Duplicates-listingLimit (default: 1000) Server-Log-level (default: 'info') Server-Log-sqlLevel (default: 'error') Server-Jobs-maxSavedProgress Job history size (default: 10) Server-Jobs-scheduled (default: [{"name":"Indexing","jobName":"Indexing","config":{},"allowParallelRun":false,"trigger":{"type":1}},{"name":"Thumbnail Generation","jobName":"Thumbnail Generation","config":{"sizes":[240]},"allowParallelRun":false,"trigger":{"type":4,"afterScheduleName":"Indexing"}},{"name":"Photo Converting","jobName":"Photo Converting","config":{},"allowParallelRun":false,"trigger":{"type":4,"afterScheduleName":"Thumbnail Generation"}},{"name":"Video Converting","jobName":"Video Converting","config":{},"allowParallelRun":false,"trigger":{"type":4,"afterScheduleName":"Photo Converting"}},{"name":"Temp Folder Cleaning","jobName":"Temp Folder Cleaning","config":{},"allowParallelRun":false,"trigger":{"type":4,"afterScheduleName":"Video Converting"}}]) Client-applicationTitle (default: 'PiGallery 2') Client-publicUrl (default: '') Client-urlBase (default: '') Client-Search-enabled (default: true) Client-Search-instantSearchEnabled (default: true) Client-Search-InstantSearchTimeout (default: 3000) Client-Search-instantSearchCacheTimeout (default: 3600000) Client-Search-searchCacheTimeout (default: 3600000) Client-Search-AutoComplete-enabled (default: true) Client-Search-AutoComplete-maxItemsPerCategory (default: 5) Client-Search-AutoComplete-cacheTimeout (default: 3600000) Client-Sharing-enabled (default: true) Client-Sharing-passwordProtected (default: true) Client-Map-enabled (default: true) Client-Map-useImageMarkers (default: true) Client-Map-mapProvider (default: 'OpenStreetMap') Client-Map-mapboxAccessToken (default: '') Client-Map-customLayers (default: [{"name":"street","url":""}]) Client-RandomPhoto-enabled (default: true) Client-Other-enableCache (default: true) Client-Other-enableOnScrollRendering (default: true) Client-Other-defaultPhotoSortingMethod (default: 'ascDate') Client-Other-enableOnScrollThumbnailPrioritising (default: true) Client-Other-NavBar-showItemCount (default: true) Client-Other-captionFirstNaming (default: false) Client-authenticationRequired (default: true) Client-unAuthenticatedUserRole (default: 'Admin') Client-Media-Thumbnail-iconSize (default: 45) Client-Media-Thumbnail-personThumbnailSize (default: 200) Client-Media-Thumbnail-thumbnailSizes (default: [240,480]) Client-Media-Video-enabled (default: true) Client-Media-Photo-Converting-enabled (default: true) Client-MetaFile-enabled (default: true) Client-Faces-enabled (default: true) Client-Faces-keywordsToPersons (default: true) Client-Faces-writeAccessMinRole (default: 'Admin') ``` ### `config.json` sample: ```json { "Server": { "sessionSecret": [], "port": 80, "host": "0.0.0.0", "Media": { "//[folder]": "Images are loaded from this folder (read permission required)", "folder": "demo/images", "//[tempFolder]": "Thumbnails, coverted photos, videos will be stored here (write permission required)", "tempFolder": "demo/tmp", "photoProcessingLibrary": "sharp", "Video": { "transcoding": { "bitRate": 5242880, "resolution": 720, "fps": 25, "codec": "libx264", "format": "mp4" } }, "Photo": { "Converting": { "//[onTheFly]": "Converts photos on the fly, when they are requested.", "onTheFly": true, "resolution": 1080 } }, "Thumbnail": { "//[qualityPriority]": "if true, photos will have better quality.", "qualityPriority": true, "personFaceMargin": 0.6 } }, "Threading": { "//[enabled]": "App can run on multiple thread", "enabled": true, "//[thumbnailThreads]": "Number of threads that are used to generate thumbnails. If 0, number of 'CPU cores -1' threads will be used.", "thumbnailThreads": 0 }, "Database": { "type": "sqlite", "dbFolder": "db", "mysql": { "host": "localhost", "port": 3306, "database": "pigallery2", "username": "", "password": "" } }, "Sharing": { "updateTimeout": 300000 }, "//[sessionTimeout]": "unit: ms", "sessionTimeout": 604800000, "Indexing": { "folderPreviewSize": 2, "cachedFolderTimeout": 3600000, "reIndexingSensitivity": "low", "//[excludeFolderList]": "If an entry starts with '/' it is treated as an absolute path. If it doesn't start with '/' but contains a '/', the path is relative to the image directory. If it doesn't contain a '/', any folder with this name will be excluded.", "excludeFolderList": [], "//[excludeFileList]": "Any folder that contains a file with this name will be excluded from indexing.", "excludeFileList": [] }, "//[photoMetadataSize]": "only this many bites will be loaded when scanning photo for metadata", "photoMetadataSize": 524288, "Duplicates": { "listingLimit": 1000 }, "Log": { "level": "info", "sqlLevel": "error" }, "Jobs": { "//[maxSavedProgress]": "Job history size", "maxSavedProgress": 10, "scheduled": [ { "name": "Indexing", "jobName": "Indexing", "config": {}, "allowParallelRun": false, "trigger": { "type": "never" } }, { "name": "Thumbnail Generation", "jobName": "Thumbnail Generation", "config": { "sizes": [ 240 ] }, "allowParallelRun": false, "trigger": { "type": "after", "afterScheduleName": "Indexing" } }, { "name": "Photo Converting", "jobName": "Photo Converting", "config": {}, "allowParallelRun": false, "trigger": { "type": "after", "afterScheduleName": "Thumbnail Generation" } }, { "name": "Video Converting", "jobName": "Video Converting", "config": {}, "allowParallelRun": false, "trigger": { "type": "after", "afterScheduleName": "Photo Converting" } }, { "name": "Temp Folder Cleaning", "jobName": "Temp Folder Cleaning", "config": {}, "allowParallelRun": false, "trigger": { "type": "after", "afterScheduleName": "Video Converting" } } ] } }, "Client": { "applicationTitle": "PiGallery 2", "publicUrl": "", "urlBase": "", "Search": { "enabled": true, "instantSearchEnabled": true, "InstantSearchTimeout": 3000, "instantSearchCacheTimeout": 3600000, "searchCacheTimeout": 3600000, "AutoComplete": { "enabled": true, "maxItemsPerCategory": 5, "cacheTimeout": 3600000 } }, "Sharing": { "enabled": true, "passwordProtected": true }, "Map": { "enabled": true, "useImageMarkers": true, "mapProvider": "OpenStreetMap", "mapboxAccessToken": "", "customLayers": [ { "name": "street", "url": "" } ] }, "RandomPhoto": { "enabled": true }, "Other": { "enableCache": true, "enableOnScrollRendering": true, "defaultPhotoSortingMethod": "ascDate", "enableOnScrollThumbnailPrioritising": true, "NavBar": { "showItemCount": true }, "captionFirstNaming": false }, "authenticationRequired": true, "unAuthenticatedUserRole": "Admin", "Media": { "Thumbnail": { "iconSize": 45, "personThumbnailSize": 200, "thumbnailSizes": [ 240, 480 ] }, "Video": { "enabled": true }, "Photo": { "Converting": { "enabled": true } } }, "MetaFile": { "enabled": true }, "Faces": { "enabled": true, "keywordsToPersons": true, "writeAccessMinRole": "Admin" } } }```