This program offers the possibility of provisioning clients. This includes, for example: The announcement of software updates. Registration of new users. Saving telemetry data that the clients send to the server. The data is stored in a PostgreSQL database. The source code can of course be customized to store the data in a different way.
For more information, see the configuration options (at the end of the program files). Everything else is briefly documented there. After the first start this configuration will be created as default config in the corresponding file.
- Compatible with all Reticulum managed apps (Communicator which is another project that is not part of this github)
- Announcement of the server and software versions
- User registration
- Collection of telemetry data
- Storage of data in PostgreSQL, ...
It should currently be considered beta software and still work in progress.
All core features are implemented and functioning, but additions will probably occur as real-world use is explored.
There may be errors or the compatibility after an update is no longer guaranteed.
The full documentation is not yet available. Due to lack of time I can also not say when this will be further processed.
- Install all required prerequisites. (Default Reticulum installation. Only necessary if reticulum is not yet installed.)
apt update apt upgrade apt install python3-pip pip install pip --upgrade reboot pip3 install rns pip3 install pyserial netifaces
- Download the files an folders from this repository.
https://github.com/SebastianObi/RNS-Tools/tree/main/rns_server_provisioning
- Install all required prerequisites.
pip install -r requirements.txt
- Change the Reticulum configuration to suit your needs and use-case.
nano /.reticulum/config
- Make it executable with the following command
chmod +x main.py
- Start it
./main.py
- After the first start edit the configuration file to suit your needs and use-case. The file location is displayed.
- Example minimal configuration (override of the default config
config.cfg
). These are the most relevant settings that need to be adjusted. All other settings are inconfig.cfg
nano /root/.rns_server_provisioning/config.cfg.owr
- Start it again. Finished!
./main.py
- Create a service file.
nano /etc/systemd/system/rns_server_provisioning.service
- Copy and edit the following content to your own needs.
[Unit] Description=rns_server_provisioning After=multi-user.target [Service] # ExecStartPre=/bin/sleep 10 Type=simple Restart=always RestartSec=3 User=root Group=root ExecStart=/root/rns_server_provisioning/main.py [Install] WantedBy=multi-user.target
- Enable the service.
systemctl enable rns_server_provisioning
- Start the service.
systemctl start rns_server_provisioning
systemctl start rns_server_provisioning
systemctl stop rns_server_provisioning
systemctl enable rns_server_provisioning
systemctl disable rns_server_provisioning
- Run the program with a different configuration path.
./main.py -p /root/.rns_server_provisioning_2nd ./main.py -p /root/.rns_server_provisioning_3nd
- With a manual start via the console, the own RNS address is displayed:
[] ............................................................................... [] RNS - Address: <801f48d54bc71cb3e0886944832aaf8d> [] ...............................................................................`
- This address is also annouced at startup in the default setting.
- This provisioning server address must be added to the clients.
- Now the software can be used.
usage: main.py [-h] [-p PATH] [-pr PATH_RNS] [-pl PATH_LOG] [-l LOGLEVEL] [-s] [-i] [--exampleconfig] [--exampleconfigoverride]
RNS Server Provisioning - Provisioning for RNS based apps
optional arguments:
-h, --help show this help message and exit
-p PATH, --path PATH Path to alternative config directory
-pr PATH_RNS, --path_rns PATH_RNS
Path to alternative Reticulum config directory
-pl PATH_LOG, --path_log PATH_LOG
Path to alternative log directory
-l LOGLEVEL, --loglevel LOGLEVEL
-s, --service Running as a service and should log to file
-i, --install Check and install requirements.
--exampleconfig Print verbose configuration example to stdout and exit
--exampleconfigoverride
Print verbose configuration example to stdout and exit
You should read the Installation manual
section. There everything is explained briefly. Just work through everything from top to bottom :)