Creating Documentation
One of the goals of the LibreNMS project is to enable users to get all of the help they need from our documentation.
The documentation uses the markdown markup language and is generated with mkdocs. To edit or create markdown you only need a text editor, but it is recommended to build your docs before submitting, in order to check them visually. The section on this page has instructions for this step.
Writing docs
When you are adding a new feature or extension, we need to have full documentation to go along with it. It's quite simple to do this:
- Find the relevant directory to store your new document in, General, Support and Extensions are the most likely choices.
- Think of a descriptive name that's not too long, it should match what they may be looking for or describes the feature.
- Add the new document into the
nav
section ofmkdocs.yml
if it needs to appear in the table of contents - Ensure the first line contains:
source: path/to/file.md
- don't include the initialdoc/
. - In the body of the document, be descriptive but keep things simple. Some tips:
- If the document could cover different distros like CentOS and Ubuntu please try and include the information for them all. If that's not possible then at least put a placeholder in asking for contributions.
- Ensure you use the correct formatting for
commands
andcode blocks
by wrapping one liners in backticks or blocks in ```. - Put content into sub-headings where possible to organise the content.
- If you rename a file, please add a redirect for the old file in
mkdocs.yml
like so:- redirects: redirect_maps: 'old/page.md': 'new/page.md'
Please ensure you add the document to the relevant section within pages
of mkdocs.yml
so that it's in the correct menu and is built. Forgetting this step will result in your document never seeing the light of day :)
Formatting docs
Our docs are based on Markdown using mkdocs which adheres to markdown specs and nothing more, because of that we also import a couple of extra libraries:
- pymdownx.tasklist
- pymdownx.tilde
This means you can use:
~~strikethrough~~
to performstrikethrough-
- [X] List items
- Url's can be made
[like this](https://www.librenms.org)
like this - Code can be placed in `` for single line or ``` for multiline.
#
Can be used for main headings which translates to a<h1>
tag, increasing the#
's will increase the hX tags.###
Can be used for sub-headings which will appear in the TOC to the left.- Settings should be prefixed with
!!! setting "<webui setting path>"
Building docs
This is achieved with mkdocs
, a python package.
- Install the required packages.
pip install mkdocs mkdocs-exclude mkdocs-material mkdocs-macros-plugin mkdocs-minify-plugin mkdocs-redirects
-u librenms
-
A configuration file for building LibreNMS docs is already included in the distribution:
/opt/librenms/mkdocs.yml
. The various configuration directives are documented here. -
Build from the librenms base directory:
cd /opt/librenms
. -
Building is simple:
mkdocs build
This will output all the documentation in html format to /opt/librenms/out
(this folder will be ignored from any commits).
Viewing docs
mkdocs includes it's own light-weight webserver for this purpose.
Viewing is as simple as running the following command:
$ mkdocs serve
INFO - Building documentation...
<..>
INFO - Documentation built in 12.54 seconds
<..>
INFO - Serving on http://127.0.0.1:8000
<..>
INFO - Start watching changes
Now you will find the complete set of LibreNMS documentation by opening your browser to localhost:8000
.
Note it is not necessary to build
before viewing as the serve
command will do this for you. Also the server will update the documents it is serving whenever changes to the markdown are made, such as in another terminal.
Viewing docs from another machine
By default the server will only listen for connections from the local machine. If you are building on a different machine you can use the following directive to listen on all interfaces:
mkdocs serve --dev-addr=0.0.0.0:8000
WARNING: this is not a secure webserver, do this at your own risk, with appropriate host security and do not leave the server running.