This is a template module for [stirling pdf 8](https://github.com/compgeniuses/ns8-stirlingpdf
-
Click on Use this template. Name your repo with
ns8-
prefix (e.g.ns8-mymodule
). Do not end your module name with a number, like!ns8-baaad2
-
Clone the repository, enter the cloned directory and configure your GIT identity
-
Rename some references inside the repo:
modulename=$(basename $(pwd) | sed 's/^ns8-//') git mv imageroot/systemd/user/stirlingpdf.service imageroot/systemd/user/${modulename}.service git mv tests/stirlingpdf.robot tests/${modulename}.robot sed -i "s/stirlingpdf/${modulename}/g" $(find .github/ * -type f) git commit -a -m "Repository initialization"
-
Edit this
README.md
file, by replacing this section with your module description -
Adjust
.github/workflows
to your needs.clean-registry.yml
might need the proper list of image names to work correctly. Unused workflows can be disabled from the GitHub Actions interface. -
Commit and push your local changes
Instantiate the module with:
add-module ghcr.io/compgeniuses/stirlingpdf:latest 1
The output of the command will return the instance name. Output example:
{"module_id": "kickstart1", "image_name": "kickstart", "image_url": "ghcr.io/nethserver/kickstart:latest"}
Let's assume that the mattermost instance is named stirlingpdf1
.
Launch configure-module
, by setting the following parameters:
host
: a fully qualified domain name for the applicationhttp2https
: enable or disable HTTP to HTTPS redirection (true/false)lets_encrypt
: enable or disable Let's Encrypt certificate (true/false)docker_enable_security
: Define if the app will have a password (true/false)security_enablelogin
: Define if the app will have a password (true/false)security_initiallogin_username
: define the initial username , if enable login is definedsecurity_initiallogin_password
: define initial password
USername: admin PAssword: stirling
Example:
api-cli run configure-module --agent module/stirlingpdf1 --data - <<EOF
{
"host": "stirlingpdf.domain.com",
"http2https": true,
"lets_encrypt": false
}
EOF
The above command will:
- start and configure the stirlingpdf instance
- configure a virtual host for trafik to access the instance
You can retrieve the configuration with
api-cli run get-configuration --agent module/stirlingpdf1
You can retrieve the configuration with
api-cli run update-module --data '{"module_url":"ghcr.io/compgeniuses/stirlingpdf:latest","instances":["stirlingpdf1"],"force":true}'
To uninstall the instance:
remove-module --no-preserve stirlingpdf1
Some configuration settings, like the smarthost setup, are not part of the
configure-module
action input: they are discovered by looking at some
Redis keys. To ensure the module is always up-to-date with the
centralized smarthost
setup every time
stirlingpdf starts, the command bin/discover-smarthost
runs and refreshes
the state/smarthost.env
file with fresh values from Redis.
Furthermore if smarthost setup is changed when stirlingpdf is already
running, the event handler events/smarthost-changed/10reload_services
restarts the main module service.
See also the systemd/user/stirlingpdf.service
file.
This setting discovery is just an example to understand how the module is expected to work: it can be rewritten or discarded completely.
some CLI are needed to debug
-
The module runs under an agent that initiate a lot of environment variables (in /home/stirlingpdf1/.config/state), it could be nice to verify them on the root terminal
runagent -m stirlingpdf1 env
-
you can become runagent for testing scripts and initiate all environment variables
runagent -m stirlingpdf1
the path become :
echo $PATH
/home/stirlingpdf1/.config/bin:/usr/local/agent/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/
- if you want to debug a container or see environment inside
runagent -m stirlingpdf1
podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d292c6ff28e9 localhost/podman-pause:4.6.1-1702418000 9 minutes ago Up 9 minutes 127.0.0.1:20015->80/tcp 80b8de25945f-infra
d8df02bf6f4a docker.io/library/mariadb:10.11.5 --character-set-s... 9 minutes ago Up 9 minutes 127.0.0.1:20015->80/tcp mariadb-app
9e58e5bd676f docker.io/library/nginx:stable-alpine3.17 nginx -g daemon o... 9 minutes ago Up 9 minutes 127.0.0.1:20015->80/tcp stirlingpdf-app
you can see what environment variable is inside the container
podman exec stirlingpdf-app env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
TERM=xterm
PKG_RELEASE=1
MARIADB_DB_HOST=127.0.0.1
MARIADB_DB_NAME=stirlingpdf
MARIADB_IMAGE=docker.io/mariadb:10.11.5
MARIADB_DB_TYPE=mysql
container=podman
NGINX_VERSION=1.24.0
NJS_VERSION=0.7.12
MARIADB_DB_USER=stirlingpdf
MARIADB_DB_PASSWORD=stirlingpdf
MARIADB_DB_PORT=3306
HOME=/root
you can run a shell inside the container
podman exec -ti stirlingpdf-app sh
/ #
Test the module using the test-module.sh
script:
./test-module.sh <NODE_ADDR> ghcr.io/compgeniuses/stirlingpdf:latest
The tests are made using Robot Framework
Translated with Weblate.
To setup the translation process:
- add GitHub Weblate app to your repository
- add your repository to [hosted.weblate.org]((https://hosted.weblate.org) or ask a compgeniuses developer to add it to ns8 Weblate project