mirror of https://github.com/perkeep/perkeep.git
82 lines
3.1 KiB
Markdown
82 lines
3.1 KiB
Markdown
# Publishing
|
|
|
|
Perkeep delegates publishing to the publisher server application, which
|
|
uses Go html templates (http://golang.org/pkg/text/template/) to publish
|
|
pages.
|
|
|
|
Resources for publishing, such as go templates, javascript and css files
|
|
should be placed in the application source directory - app/publisher/ - so
|
|
they can be served directly when using the dev server or automatically
|
|
embedded in production.
|
|
|
|
You should then specify the Go template to be used through the configuration
|
|
file. The CSS files are automatically all available to the app. For example,
|
|
there already is a go template (gallery.html), and css file (pics.css) that work
|
|
together to provide publishing for image galleries. The dev server config
|
|
(config/dev-server-config.json) already uses them. Here is how one would
|
|
configure publishing for an image gallery in the server config
|
|
($HOME/.config/camlistore/server-config.json):
|
|
|
|
"publish": {
|
|
"/pics/": {
|
|
"camliRoot": "mypics",
|
|
"cacheRoot": "/home/joe/var/camlistore/blobs/cache",
|
|
"goTemplate": "gallery.html"
|
|
}
|
|
}
|
|
|
|
For this to work you need a single permanode with an attribute "camliRoot"
|
|
set to "mypics" which will serve as the root node for publishing.
|
|
|
|
(See further settings for running behind a reverse proxy down below.)
|
|
|
|
Suppose you want to publish two permanodes as "foo" and "bar". The root node
|
|
needs the following atributes:
|
|
|
|
camliRoot = mypics // must match server-config.json
|
|
camilPath:foo = sha1-foo
|
|
camliPath:bar = sha1-bar
|
|
|
|
where sha1-foo (and sha1-bar) is either a permanode with some camliContent,
|
|
or a permanode with some camliMembers.
|
|
|
|
This will serve content at the publisher root http(s)://«camlihost:port»/pics/
|
|
but note that publisher hides the contents of the root path.
|
|
Keeping with the example above, it would serve
|
|
http(s)://«camlihost:port»/pics/foo and http(s)://«camlihost:port»/pics/bar .
|
|
|
|
The parameters for setting up the app's process ("listen", "backendURL", and
|
|
"apiHost") are derived from the Perkeep server's "listen", and "baseURL", but
|
|
should the need arise (e.g. with a proxy setup) they can be specified as well.
|
|
See [serverconfig.Publish](https://perkeep.org/pkg/types/serverconfig/#Publish)
|
|
type for the details.
|
|
|
|
If you want to provide your own (Go) template, see
|
|
[perkeep.org/pkg/publish](/pkg/publish) for the data structures and
|
|
functions available to the template.
|
|
|
|
## Running Perkeep (and publisher) behind a reverse proxy
|
|
|
|
When Perkeep is serving in HTTP mode behind a HTTPS reverse proxy,
|
|
further settings are necessary to set up communication between publisher and
|
|
the parent camlistored process.
|
|
|
|
The settings are:
|
|
|
|
* "listen" is the address publisher should listen on
|
|
* "apiHost" URL prefix for publisher to connect to camlistored
|
|
* "backendURL" URL for camlistored to reach publisher
|
|
|
|
Assuming camlistored is serving HTTP on port 3179, and we want the to run publisher
|
|
on port 3155, the following settings can be used:
|
|
|
|
"publish": {
|
|
"/pics/": {
|
|
"apiHost": "http://localhost:3179/",
|
|
"backendURL": "http://localhost:3155/",
|
|
"listen": ":3155",
|
|
... other settings from above ...
|
|
}
|
|
}
|
|
|