Allmon is the standard web-based monitoring and management for the AllStarLink application. Allmon3 is the next generation of the venerable Allmon2 that is rewritten for performance, scalability, and responsiveness.
Allmon3 features and functionality shall be governed by the following guidelines:
- Use of modern web responsive design for usability on all device form factors and screen sizes
- Clear separation between long-running tasks and client-based display updates
- Permit reduced workload on potentially slow repeater site links by cleanly supporting the ability to run only the pollers on the device controlling the repeater and run the dashboard in the cloud; easy prevention of unnecessary web traffic, spidering, etc.
- Prioritization of the common use cases of AllStarLink for feature enhancements
All code of Allmon3 not otherwise licensed (e.g., Bootstrap, etc.) is licensed under the GNU Affero General Public License v3. The choice of the AGPLv3 promotes giving back to the amateur radio and ASL communities.
Allmon3 is only supported on Debian 10, Debian 11, and Debian 12 (or the Raspbian/Raspberry Pi OS equivalent - e.g. "Raspbian 11"). Note that these directions will change with the 1.0 release when all packages are properly available through the ASL Debian repository.
- Install dependencies:
apt install -y apache2 python3-websockets python3-argon2 python3-aiohttp python3-aiohttp-session
- Install Allmon3
wget https://github.com/AllStarLink/Allmon3/releases/download/t_rel_1_2_0/allmon3_1.2.0-1.bookworm_all.deb
dpkg -i allmon3_1.2.0-1.bookworm_all.deb
- Enable the Debian 11
bullseye-backports
package repositorty:
gpg --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9
gpg --keyserver keyserver.ubuntu.com --recv-keys 6ED0E7B82643E131
gpg --export 0E98404D386FA1D9 | sudo apt-key add -
gpg --export 6ED0E7B82643E131 | sudo apt-key add -
echo "deb https://deb.debian.org/debian bullseye-backports main" > /etc/apt/sources.list.d/bullseye-backports.list
apt update
- Install the dependencies
apt install -y apache2 python3-argon2
apt install -y -t bullseye-backports python3-websockets python3-aiohttp python3-aiohttp-session
- Install Allmon3
wget https://github.com/AllStarLink/Allmon3/releases/download/t_rel_1_2_0/allmon3_1.2.0-1.bullseye_all.deb
dpkg -i allmon3_1.2.0-1.bullseye_all.deb
- Enable the Debian 10
buster-backports
package repository:
gpg --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
gpg --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
gpg --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9
gpg --keyserver keyserver.ubuntu.com --recv-keys 6ED0E7B82643E131
gpg --export 04EE7237B7D453EC | sudo apt-key add -
gpg --export 648ACFD622F3D138 | sudo apt-key add -
gpg --export 0E98404D386FA1D9 | sudo apt-key add -
gpg --export 6ED0E7B82643E131 | sudo apt-key add -
echo "deb https://deb.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/buster-backports.list
apt update
- Install the dependendencies
apt install -y apache2 python3-argon2
apt install -y -t buster-backports python3-async-timeout python3-attr python3-multidict python3-yarl python3-pip
- Install Python modules using PIP3
apt remove python3-aiohttp python3-websockets
pip3 install aiohttp
pip3 install aiohttp_session
pip3 install websockets
- Update the CA Certificate chain since Debian 10 is out of support
apt install ca-certificates
update-ca-certificates --fresh
- Install Allmon3 (debian10 version)
wget https://github.com/AllStarLink/Allmon3/releases/download/t_rel_1_2_0/allmon3_1.2.0-1.buster_all.deb
dpkg -i allmon3_1.2.0-1.buster_all.deb
-
Edit
/etc/allmon3/allmon3.ini
for the basic node configuration as explained in the file. -
Edit
/etc/allmon3/web.ini
as desired. -
Set a password for the default user allmon3:
allmon3-passwd allmon3
- Enable and restart the services
systemctl enable allmon3
systemctl restart allmon3
- Open your web browser to the IP or hostname - for example: http://192.0.2.10/allmon3/
The stock configuration files are always available at /usr/share/doc/allmon3/
for recovery and documentation.
Edit /etc/allmon3/allmon3.ini
for at least one ASL AMI interface.
Here's an example for monitoring three ASL Nodes:
[50815]
host=172.17.16.36
user=admin
pass=password
[460180]
host=172.17.16.217
user=admin
pass=password
[48496]
host=208.167.248.86
user=admin
pass=password
voter=y
votertitle=Megavoter
After changing allmon3.ini
the service allmon3
must be restarted - systemctl restart allmon3
.
Usernames and passwords are stored in /etc/allmon3/users
.
The default-configured username and password combination is allmon3 / password
.
You must change this.
Allmon3's user database is managed by allmon3-passwd
. Adding a new user
or editing an existing user is the same command. If the user does not exist,
it will be added. If the user does exist, the password will be updated.
To add or edit a user's password:
$ allmon3-passwd allmon3
Enter the password for allmon3: password
Confirm the password for allmon3: password
$
That's all there is to it. The /etc/allmon3/users
file is readable to see that the
Argon2 hash changed for the user.
Deleting a user is simply adding the --delete
flag to the command:
$ allmon3-passwd --delete allmon3
After changing a user password, the allmon3 damon must be reloaded
with systemctl reload allmon3
.
Allmon3 implements a lightweight access control system to restrict commands
from certain users to certain nodes. Restrictions are configured in
/etc/allmon3/user-restrictions
. Given that the average use case is
all users have similar access, the access control is implemented in
a named-restrictions model for least configuration complexity.
The logic is as follows when checking the restricted access list:
-
If the user is not listed in
user-restrictions
at all than the user is permitted commands on all configured nodes. -
If the user is listed in
user-restrictions
and is listed as restricted to the node being commanded, the user is permitted to issue the command. -
If the user is listed in
user-restrictions
but the node is not listed for that user, the user is prohibited from issuing the command.
The format of the user-restrictions
file is:
user1 | NODE[,NODE,NODE...]
user2 | NODE
Lines beginning with # are comments.
Allmon3 has multiple configuration files to consider:
-
/etc/allmon3/web.ini
- Has four configuration sections - web, syscmds, node-overrides, and voter-titles. The web section has the basic customizations for the Allmon3 site. The syscmds section defines the templates in the "system commands" menu. Add or remove as desired. The token@
will be expanded into the selected node on which to execute the command. The node-overrides section can be used to override information from the ASL database. The voter-titles section is used to set display names for voters. -
/etc/allmon3/custom.css
- Certain CSS customizations to change colors in the application. Follows standard CSS rules and syntax. -
/etc/allmon3/menu.ini
- Allows for the customization of the Allmon3 web menu. By default, the menu is a list of all nodes found inallmon3.ini
. Cutomized menus can be configured as described inmenu.ini.example
.
Nginx can be used instead of Apache. Instead of using the apache2
package, install nginx
using the above directions. After configuring
nginx, edit /etc/nginx/sites-available/default
(or your preferred site
configuration) and add an include
directive within the appropriate
server { }
configuration block. For example:
server {
listen 80 default_server;
[... other stuff ...]
include /etc/allmon3/nginx.conf;
[... other stuff ...]
}
Installation from source no longer supported in the general use case.
However, in general, make install
should yield a working system.