- Overview
- Module Description - What the module does and why it is useful
- Setup - The basics of getting started with etherpad
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
This module installs and configures etherpad(-lite). It's inspired by existing etherpad modules on the Forge, but attempts to "do it right™".
- This module depends on puppet-nodejs
- It also depends on puppetlabs-vcsrepo, and hence git
- It will setup a service using the system's preferred init
- When running installDeps.sh, this module requires all the usual build tools, development packages and headers as any other (complex) npm install
- When running on ubuntu OS, it will setup apt sources for nodejs with puppetlabs-apt.
This module requires a database. With no database available, it will use DirtyDB as fallback. This is not intended for production use.
For a migration from DirtyDB, please consult this blog post
On Ubuntu system, as soft dependency, you will need to ensure that puppetlabs-apt version 4.4.0 or above is installed.
Before to installation, a target database should exist. Please consult the documentation of puppetlabs-postgresql, or puppetlabs-mysql for how to create those.
The basic usage is:
include ::etherpad
note that this will use the local DirtyDB and is not recommended beyond basic testing. For production setups, use:
class { 'etherpad':
ensure => 'present',
database_type => 'mysql',
database_name => 'etherpad',
database_user => 'etherpad',
database_password => '37h3rp4d',
users => {
admin => {
password => 's3cr3t',
is_admin => true,
},
user => {
password => 'secret',
is_admin => false,
},
},
}
The etherpad module installs and configures etherpad. This class is the entry point for the module and the configuration point.
Ensure the presence (present
, latest
) or absence (absent
) of etherpad.
This can also be set to a specific version (or SHA1 hash). By default, we
install from the branch develop
, in order to cater for newer versions of
Nodejs. absent
will completely remove the software, its dependencies, and the
users and groups.
Type | Default |
---|---|
String | present |
Name under which the service will be known.
Type | Default |
---|---|
String | etherpad |
Ensure whether the service is running or stopped. If you're passing absent
to
ensure
, please also pass stopped
to service_ensure
.
Type | Default |
---|---|
Enum['running', 'stopped'] | running |
Which service provider
to use. By default this is taken from stdlib's $::service_provider
fact.
Currently only upstart
and systemd
are supported!
Type | Default |
---|---|
Optional[String] | $::service_provider |
Whether to manage the user & group under which etherpad will be running.
Type | Default |
---|---|
Boolean | true |
Whether to manage the dependency of the abiword package.
Type | Default |
---|---|
Boolean | false |
Absolute Path to the abiword binary.
Type | Default |
---|---|
String | /usr/bin/abiword |
Whether to manage the dependency of the tidy package.
Type | Default |
---|---|
Boolean | false |
Absolute Path to the abiword binary.
Type | Default |
---|---|
String | /usr/bin/abiword |
The user and group under which etherpad will be running.
Type | Default |
---|---|
String | etherpad |
Absolute Path of the etherpad installation.
Type | Default |
---|---|
String | /opt/etherpad |
URL to the git source of etherpad.
Type | Default |
---|---|
String | 'https://github.com/ether/etherpad-lite.git' |
The type of database that etherpad should use. In case of mysql
or postgres
,
you'll also have to set the options below.
Type | Default |
---|---|
Enum[dirty , mysql , sqlite , postgres ] |
dirty |
Host on which the database is running.
Type | Default |
---|---|
String | localhost |
User (or role) to use, when connecting to the database.
Type | Default |
---|---|
String | etherpad |
Name of database to connect to.
Type | Default |
---|---|
String | etherpad |
Password to use when connecting to database.
Type | Default |
---|---|
String | etherpad |
IP on which etherpad will be listening. The default, undef
, turns into
null
, and hence NodeJS' default of "all interfaces".
Type | Default |
---|---|
String | undef |
Port on which etherpad will be listening.
Type | Default |
---|---|
Integer | 9001 |
This value should be set if etherpad is running behind a proxy.
Type | Default |
---|---|
Boolean | false |
How long clients may use served JavaScript code (in seconds).
Type | Default |
---|---|
Integer | 21600 |
Whether to minify the delivered JavaScript and CSS.
Type | Default |
---|---|
Boolean | true |
Users must have a session to access pads. This effectively allows only group pads to be accessed.
Type | Default |
---|---|
Boolean | false |
Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads.
Type | Default |
---|---|
Boolean | false |
This setting is used if you require authentication of all users.
Note: /admin
always requires authentication.
Type | Default |
---|---|
Boolean | false |
Require authorization by a module, or a user with is_admin set, see below.
Type | Default |
---|---|
Boolean | false |
Merge default ldapauth options to final config of ep_ldapauth plugin. If set to 'false' it can be used to omit default searchDN and searchPWD for anonymous ldap access.
Type | Default |
---|---|
Boolean | true |
Manage etherpad's plugins.
Type | Default |
---|---|
Hash[Pattern['ep_*'], Variant[Boolean, Undef]] | {} |
Existing two kinds of plugins:
- Simple plugins : Supported plugins that does not modify
settings.json
. - Advanced plugins : Supported plugins that accept configuration parameters in
settings.json
.
Keys in plugins_list
must be default plugins name.
Values in plugins_list
can be:
undef
: Install any simple plugins or advanced plugins with its default configuration.true
: Install advanced plugins with provided configuration by class attributs. See beelow detailed section about each plugin.false
: Uninstall any plugins.
List of all plugins is avalable at https://static.etherpad.org/plugins.html
Plugin name | Supported |
---|---|
ep_button_link |
YES |
ep_ldapauth |
YES |
ep_mypads |
YES |
All simple plugins | YES |
If the plugin is not supported, it will be installed but whitout configuration.
Examples :
class { 'etherpad':
ensure => 'present',
database_type => 'mysql',
database_name => 'etherpad',
database_user => 'etherpad',
database_password => '37h3rp4d',
users => {
admin => {
password => 's3cr3t',
is_admin => true,
},
user => {
password => 'secret',
is_admin => false,
},
},
plugins_list => {
ep_button_link => true,
ep_align => undef,
ep_ldapauth => false,
},
}
In this case ep_button_link
will be installed with the configuration in settings.json
, ep_align
will be just installed and ep_ldapauth
will be uninstalled.
class { 'etherpad':
ensure => 'present',
database_type => 'mysql',
database_name => 'etherpad',
database_user => 'etherpad',
database_password => '37h3rp4d',
plugins_list => {
ep_button_link => true,
ep_align => undef,
ep_mypads => true,
},
mypads => {
searchBase => 'cn=users,cn=accounts,dc=example,dc=com',
url => 'ldaps://ipa.example.com:636',
bindDN => 'uid=binduser,cn=sysaccounts,cn=etc,dc=example,dc=com',
bindCredentials => 'bindpassword',
searchFilter => '(memberOf=cn=etherpad_users,cn=groups,cn=accounts,dc=example,dc=com)'
},
ep_local_admin_login => 'my_ep_adminuser',
ep_local_admin_pwd => 'my_ep_adminsecret',
}
In this case ep_button_link
and ep_mypads
will be installed with some configurations in settings.json
, ep_align
will be just installed without configuration.
Manage the configuration of ep_button_link
.
Type | Default |
---|---|
Type | 'https://www.npmjs.com/package/ep_button_link' |
Manage the configuration of ep_ldapauth
.
Type | Default |
---|---|
Type | 'https://www.npmjs.com/package/ep_ldapauth' |
Manage the configuration of ep_mypads
.
Type | Default |
---|---|
Type | 'https://www.npmjs.com/package/ep_mypads' or 'https://git.framasoft.org/framasoft/Etherpad/ep_mypads/wikis/use-ldap-authentication' |
Name of your instance
Type | Default |
---|---|
Optional[String] | undef |
The default text of a pad.
Type | Default |
---|---|
String | Welcome to etherpad! |
Enable/disable logging to a file.
Type | Default |
---|---|
Boolean | false |
Specify the file to log to, if logconfig_file is enabled.
Type | Default |
---|---|
Optional[String] | undef |
The maximum logfile size (megabytes) before rotating the log file.
Type | Default |
---|---|
Optional[Integer] | undef |
The number of logfiles to keep after rotation.
Type | Default |
---|---|
Optional[Integer] | undef |
Only log a specific category.
Type | Default |
---|---|
Optional[String] | undef |
Configure users in settings.json. If both 'users' and 'ldapauth' are set only the latter one will be put into settings.json.
Type | Default |
---|---|
Optional[Hash] | undef |
Configure pad options in settings.json.
Type | Default |
---|---|
Struct | noColors => false , showControls => true , showChat => true , showLineNumbers => true , useMonospaceFont => false , userName => false , userColor => false , rtl => false , alwaysShowChat => false , chatAndUsers => false , lang => en-gb |
Currently, only upstart and systemd are supported as Service providers. More support is highly welcomed.
Please see CONTRIBUTING.md for how to contribute patches!