Overview ▹
Overview ▾
Package serverconfig provides types related to the server configuration file.
Index
Package files
type App
type App struct { // Listen is the address (of the form host|ip:port) on which the app // will listen. It defines CAMLI_APP_LISTEN. // If empty, the default is the concatenation of the Perkeep server's // Listen host part, and a random port. Listen string `json:"listen,omitempty"` // BackendURL is the URL of the application's process, always ending in a // trailing slash. It is the URL that the app handler will proxy to when // getting requests for the concerned app. // If empty, the default is the concatenation of the Perkeep server's BaseURL // scheme, the Perkeep server's BaseURL host part, and the port of Listen. BackendURL string `json:"backendURL,omitempty"` // APIHost is URL prefix of the Perkeep server which the app should // use to make API calls. It defines CAMLI_API_HOST. // If empty, the default is the Perkeep server's BaseURL, with a // trailing slash appended. APIHost string `json:"apiHost,omitempty"` // HTTPSCert is the path to the HTTPS certificate file. If not set, and // Perkeep is using HTTPS, the app should try to use Perkeep's Let's // Encrypt cache (assuming it runs on the same host). HTTPSCert string `json:"httpsCert,omitempty"` HTTPSKey string `json:"httpsKey,omitempty"` // path to the HTTPS key file. }
App holds the common configuration values for apps and the app handler. See https://perkeep.org/doc/app-environment
type Config
type Config struct { Auth string `json:"auth"` // auth scheme and values (ex: userpass:foo:bar). BaseURL string `json:"baseURL,omitempty"` // Base URL the server advertises. For when behind a proxy. Listen string `json:"listen"` // address (of the form host|ip:port) on which the server will listen on. Identity string `json:"identity"` // GPG identity. IdentitySecretRing string `json:"identitySecretRing"` // path to the secret ring file. // alternative source tree, to override the embedded ui and/or closure resources. // If non empty, the ui files will be expected at // sourceRoot + "/server/perkeepd/ui" and the closure library at // sourceRoot + "/clients/web/embed/closure/lib" // Also used by the publish handler. SourceRoot string `json:"sourceRoot,omitempty"` // OwnerName is the full name of this Perkeep instance. Currently unused. OwnerName string `json:"ownerName,omitempty"` // Blob storage. MemoryStorage bool `json:"memoryStorage,omitempty"` // do not store anything (blobs or queues) on localdisk, use memory instead. BlobPath string `json:"blobPath,omitempty"` // path to the directory containing the blobs. PackBlobs bool `json:"packBlobs,omitempty"` // use "diskpacked" instead of the default filestorage. (exclusive with PackRelated) PackRelated bool `json:"packRelated,omitempty"` // use "blobpacked" instead of the default storage (exclusive with PackBlobs) S3 string `json:"s3,omitempty"` // Amazon S3 credentials: access_key_id:secret_access_key:bucket[/optional/dir][:hostname]. B2 string `json:"b2,omitempty"` // Backblaze B2 credentials: account_id:application_key:bucket[/optional/dir]. GoogleCloudStorage string `json:"googlecloudstorage,omitempty"` // Google Cloud credentials: clientId:clientSecret:refreshToken:bucket[/optional/dir] or ":bucket[/optional/dir/]" for auto on GCE GoogleDrive string `json:"googledrive,omitempty"` // Google Drive credentials: clientId:clientSecret:refreshToken:parentId. ShareHandler bool `json:"shareHandler,omitempty"` // enable the share handler. If true, and shareHandlerPath is empty then shareHandlerPath will default to "/share/" when generating the low-level config. ShareHandlerPath string `json:"shareHandlerPath,omitempty"` // URL prefix for the share handler. If set, overrides shareHandler. // HTTPS. HTTPS bool `json:"https,omitempty"` // enable HTTPS. HTTPSCert string `json:"httpsCert,omitempty"` // path to the HTTPS certificate file. HTTPSKey string `json:"httpsKey,omitempty"` // path to the HTTPS key file. // Index. RunIndex invertedBool `json:"runIndex,omitempty"` // if logically false: no search, no UI, etc. CopyIndexToMemory invertedBool `json:"copyIndexToMemory,omitempty"` // copy disk-based index to memory on start-up. MemoryIndex bool `json:"memoryIndex,omitempty"` // use memory-only indexer. // DBName is the optional name of the index database for MySQL, PostgreSQL, MongoDB. // If empty, DBUnique is used as part of the database name. DBName string `json:"dbname,omitempty"` // DBUnique optionally provides a unique value to differentiate databases on a // DBMS shared by multiple Perkeep instances. It should not contain spaces or // punctuation. If empty, Identity is used instead. If the latter is absent, the // current username (provided by the operating system) is used instead. For the // index database, DBName takes priority. DBUnique string `json:"dbUnique,omitempty"` LevelDB string `json:"levelDB,omitempty"` // path to the levelDB directory, for indexing with github.com/syndtr/goleveldb. KVFile string `json:"kvIndexFile,omitempty"` // path to the kv file, for indexing with modernc.org/kv. MySQL string `json:"mysql,omitempty"` // MySQL credentials (username@host:password), for indexing with MySQL. Mongo string `json:"mongo,omitempty"` // MongoDB credentials ([username:password@]host), for indexing with MongoDB. PostgreSQL string `json:"postgres,omitempty"` // PostgreSQL credentials (username@host:password), for indexing with PostgreSQL. SQLite string `json:"sqlite,omitempty"` // path to the SQLite file, for indexing with SQLite. ReplicateTo []interface{} `json:"replicateTo,omitempty"` // NOOP for now. // Publish maps a URL prefix path used as a root for published paths (a.k.a. a camliRoot path), to the configuration of the publish handler that serves all the published paths under this root. Publish map[string]*Publish `json:"publish,omitempty"` ScanCab *ScanCab `json:"scancab,omitempty"` // Scanning cabinet app configuration. // TODO(mpl): map of importers instead? Flickr string `json:"flickr,omitempty"` // flicker importer. Picasa string `json:"picasa,omitempty"` // picasa importer. Instapaper string `json:"instapaper,omitempty"` // instapaper importer. }
Config holds the values from the JSON (high-level) server config file that is exposed to users (and is by default at osutil.UserServerConfigPath). From this simpler configuration, a complete, low-level one, is generated by serverinit.genLowLevelConfig, and used to configure the various Perkeep components.
type Owner
type Owner struct { // Identity is the GPG identifier of the user. // It should be 16-characters hex (e.g. "2931A67C26F5ABDA") Identity string `json:"identity"` // SecringFile is the go4.org/wkfs path to the GPG secret ring file. SecringFile string `json:"secring"` }
Owner holds the search handler's owner configuration.
type Publish
type Publish struct { // Program is the server app program to run as the publisher. // Defaults to "publisher". Program string `json:"program"` *App // Common apps and app handler configuration. // CamliRoot value that defines our root permanode for this // publisher. The root permanode is used as the root for all the // paths served by this publisher. CamliRoot string `json:"camliRoot"` // GoTemplate is the name of the Go template file used by this // publisher to represent the data. This file should live in // app/publisher/. GoTemplate string `json:"goTemplate"` // CacheRoot is the path that will be used as the root for the // caching blobserver (for images). No caching if empty. // An example value is Config.BlobPath + "/cache". CacheRoot string `json:"cacheRoot,omitempty"` // SourceRoot optionally defines the directory where to look for some resources // such as HTML templates, as well as javascript, and CSS files. The // default is to use the resources embedded in the publisher binary, found // in the publisher app source directory. SourceRoot string `json:"sourceRoot,omitempty"` }
Publish holds the server configuration values specific to a publisher, i.e. to a publish prefix.
type ScanCab
type ScanCab struct { // Program is the server app program to run as the scanning cabinet. // Defaults to "scanningcabinet". Program string `json:"program"` // Prefix is the URL path prefix where the scanning cabinet app handler is mounted // on Perkeep. // It always ends with a trailing slash. Examples: "/scancab/", "/scanning/". Prefix string `json:"prefix"` // Auth is the authentication scheme and values to access the app. // It defaults to the server config auth. // Common uses are HTTP basic auth: "userpass:foo:bar", or no authentication: // "none". See https://perkeep.org/pkg/auth for other schemes. Auth string `json:"auth"` // App is for the common apps and app handler configuration. *App }
ScanCab holds the server configuration values specific to a scanning cabinet app. Please note that the scanning cabinet app is still experimental and is subject to change.