Giter Site home page Giter Site logo

compgeniuses / ns8-stirling-pdf Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 2.0 244 KB

NEthserver 8 Stirling-PDF Module

License: GNU General Public License v3.0

Shell 8.68% Python 13.47% RobotFramework 2.21% JavaScript 6.60% Dockerfile 0.20% HTML 2.42% Vue 65.45% SCSS 0.96%

ns8-stirling-pdf's Introduction

ns8-stirlingpdf

This is a template module for [stirling pdf 8](https://github.com/compgeniuses/ns8-stirlingpdf

  1. 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!

  2. Clone the repository, enter the cloned directory and configure your GIT identity

  3. 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"
    
  4. Edit this README.md file, by replacing this section with your module description

  5. 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.

  6. Commit and push your local changes

Install

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": "Stilingpdf1", "image_name": "Stilingpdf", "image_url": "ghcr.io/nethserver/Stilingpdf:latest"}

Configure

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 application
  • http2https: 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 defined
  • security_initiallogin_password: define initial password

Default COnfig if enable login is enabled

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

Get the configuration

You can retrieve the configuration with

api-cli run get-configuration --agent module/stirlingpdf1

Update Module

You can retrieve the configuration with

api-cli run update-module --data '{"module_url":"ghcr.io/compgeniuses/stirlingpdf:latest","instances":["stirlingpdf1"],"force":true}'

Uninstall

To uninstall the instance:

remove-module --no-preserve stirlingpdf1

Smarthost setting discovery

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.

Debug

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
/ # 

Testing

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

UI translation

Translated with Weblate.

To setup the translation process:

ns8-stirling-pdf's People

Contributors

compgeniuses avatar kemboi22 avatar

Watchers

 avatar

ns8-stirling-pdf's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.