forked from ungleich-public/cdist-contrib
Add a type for wikijs.
This commit is contained in:
parent
f4375dbbb9
commit
0e4bc443e2
9 changed files with 189 additions and 0 deletions
34
type/__wikijs/files/config.yml.sh
Executable file
34
type/__wikijs/files/config.yml.sh
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -ne 1 ];
|
||||||
|
then
|
||||||
|
echo "You have to give me the database password as an argument:"
|
||||||
|
echo "on some systems, anyone can read env(1)."
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
port: 80
|
||||||
|
db:
|
||||||
|
type: postgres
|
||||||
|
host: localhost
|
||||||
|
port: 5432
|
||||||
|
user: ${DB_USER:?}
|
||||||
|
pass: $1
|
||||||
|
db: ${DB_NAME:?}
|
||||||
|
ssl: false
|
||||||
|
ssl:
|
||||||
|
enabled: ${SSL}
|
||||||
|
port: 443
|
||||||
|
provider: letsencrypt
|
||||||
|
domain: ${__target_host:?}
|
||||||
|
subscriberEmail: ${LE_EMAIL:?}
|
||||||
|
pool:
|
||||||
|
min: 2
|
||||||
|
max: 10
|
||||||
|
bindIP: 0.0.0.0
|
||||||
|
logLevel: warn
|
||||||
|
offline: false
|
||||||
|
ha: false
|
||||||
|
dataPath: ./data
|
||||||
|
EOF
|
10
type/__wikijs/files/wikijs-openrc
Normal file
10
type/__wikijs/files/wikijs-openrc
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/sbin/openrc-run
|
||||||
|
|
||||||
|
command='/usr/bin/node'
|
||||||
|
command_args='server'
|
||||||
|
command_background=true
|
||||||
|
description="Run wiki.js"
|
||||||
|
directory='/var/wiki'
|
||||||
|
error_log=/var/log/"$RC_SVCNAME".err
|
||||||
|
output_log=/var/log/"$RC_SVCNAME".log
|
||||||
|
pidfile="/run/$RC_SVCNAME.pid"
|
25
type/__wikijs/gencode-remote
Normal file
25
type/__wikijs/gencode-remote
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Check for installation
|
||||||
|
cat << EOF
|
||||||
|
if [ -f '/var/wiki/LICENSE' ];
|
||||||
|
then
|
||||||
|
# Assume everything is done already.
|
||||||
|
exit 0;
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Download and copy source
|
||||||
|
cat << EOF
|
||||||
|
TMPDIR=\$(mktemp -d)
|
||||||
|
cd \$TMPDIR || exit 1
|
||||||
|
wget https://github.com/Requarks/wiki/releases/download/2.4.107/wiki-js.tar.gz
|
||||||
|
tar xf wiki-js.tar.gz -C /var/wiki
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Install deps and launch
|
||||||
|
cat << EOF
|
||||||
|
cd /var/wiki || exit 1
|
||||||
|
npm install
|
||||||
|
service start wikijs
|
||||||
|
EOF
|
55
type/__wikijs/man.rst
Normal file
55
type/__wikijs/man.rst
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
cdist-type__wikijs(7)
|
||||||
|
========================
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
cdist-type__wikijs - Deploy the wiki.js software.
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
See wiki.js.org for more information. This type deploys with a postgresql
|
||||||
|
database, since it is the upstream recommended for production, and they seem to
|
||||||
|
strongly suggest that in thenext releases, they will not support anything else.
|
||||||
|
|
||||||
|
Currently, this type servers wikijs as standalone, listening on ports 80 and
|
||||||
|
443, and with a service file for OpenRC. Feel free to contribute a
|
||||||
|
generalisation if you require one.
|
||||||
|
|
||||||
|
REQUIRED PARAMETERS
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
database-password
|
||||||
|
The password to the PSQL database.
|
||||||
|
|
||||||
|
OPTIONAL PARAMETERS
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
database
|
||||||
|
The name of the PSQL database to connect to. If omitted, then 'wikijs' is
|
||||||
|
used.
|
||||||
|
|
||||||
|
database-user
|
||||||
|
The name of the PSQL database user to connec as. If omitted, then 'wikijs' is
|
||||||
|
used.
|
||||||
|
|
||||||
|
letsencrypt-mail
|
||||||
|
If the SSL parameter is passed, then we setup wikijs to automatically obtain
|
||||||
|
certificates: this is the email used to sign up to a LE account.
|
||||||
|
|
||||||
|
BOOLEAN PARAMETERS
|
||||||
|
------------------
|
||||||
|
|
||||||
|
ssl
|
||||||
|
Whether or not to enable the wikijs automatic obtention of LE certificates.
|
||||||
|
|
||||||
|
AUTHORS
|
||||||
|
-------
|
||||||
|
Joachim Desroches <joachim.desroches@epfl.ch>
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
-------
|
||||||
|
Copyright \(C) 2020 Joachim Desroches. You can redistribute it
|
||||||
|
and/or modify it under the terms of the GNU General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the
|
||||||
|
License, or (at your option) any later version.
|
60
type/__wikijs/manifest
Normal file
60
type/__wikijs/manifest
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
os="$(cat "${__global:?}"/explorer/os)"
|
||||||
|
|
||||||
|
case "$os" in
|
||||||
|
alpine)
|
||||||
|
:
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "This type has no implementation for $os. Aborting." >&2;
|
||||||
|
exit 1;
|
||||||
|
esac
|
||||||
|
|
||||||
|
DB_USER=wikijs
|
||||||
|
if [ -f "${__object:?}/parameter/database-user" ];
|
||||||
|
then
|
||||||
|
DB_USER="$(cat "${__object:?}/parameter/database-user")"
|
||||||
|
fi
|
||||||
|
export DB_USER
|
||||||
|
|
||||||
|
DB_NAME=wikijs
|
||||||
|
if [ -f "${__object:?}/parameter/database" ];
|
||||||
|
then
|
||||||
|
DB_NAME="$(cat "${__object:?}/parameter/database")"
|
||||||
|
fi
|
||||||
|
export DB_NAME
|
||||||
|
|
||||||
|
SSL=false
|
||||||
|
if [ -f "${__object:?}/parameter/ssl" ];
|
||||||
|
then
|
||||||
|
SSL=true
|
||||||
|
fi
|
||||||
|
export SSL
|
||||||
|
|
||||||
|
if ! [ "$SSL" = "false" ];
|
||||||
|
then
|
||||||
|
if [ -f "${__object:?}/parameter/letsencrypt-mail" ];
|
||||||
|
then
|
||||||
|
LE_EMAIL="$(cat "${__object:?}/parameter/letsencrypt-mail")"
|
||||||
|
export LE_EMAIL
|
||||||
|
else
|
||||||
|
echo "You must specify an email account if you request SSL."
|
||||||
|
echo "Hit me."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
db_pass="$(cat "${__object:?}/parameter/database-password")"
|
||||||
|
|
||||||
|
__package nodejs
|
||||||
|
__package nghttp2-dev # Required for some reason, else a symbol is missing
|
||||||
|
__package npm
|
||||||
|
__directory /var/wiki/
|
||||||
|
__file /etc/init.d/wikijs --source "${__files:?}/files/wikijs-openrc"
|
||||||
|
require='__file/etc/init.d/wikijs' __start_on_boot wikijs
|
||||||
|
|
||||||
|
mkdir -p "${__object:?}/files"
|
||||||
|
"${__type:?}/files/config.yml.sh" "$db_pass" > "${__object:?}/files/config.yml"
|
||||||
|
require='__directory/var/wiki' \
|
||||||
|
__file /var/wiki/config.yml --source "${__object:?}/files/config.yml"
|
1
type/__wikijs/parameter/boolean
Normal file
1
type/__wikijs/parameter/boolean
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ssl
|
3
type/__wikijs/parameter/optional
Normal file
3
type/__wikijs/parameter/optional
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
database
|
||||||
|
database-user
|
||||||
|
letsencrypt-mail
|
1
type/__wikijs/parameter/required
Normal file
1
type/__wikijs/parameter/required
Normal file
|
@ -0,0 +1 @@
|
||||||
|
database-password
|
0
type/__wikijs/singleton
Normal file
0
type/__wikijs/singleton
Normal file
Loading…
Reference in a new issue