Compare commits

...

76 Commits

Author SHA1 Message Date
M0VUB
46c66c3913
Update CHANGELOG for version 1.5.1 release
Updated version date for release 1.5.1 and noted changes regarding Python package management.
2025-12-14 02:03:07 +00:00
M0VUB
198b1d1ad5
Merge pull request #16 from ShaYmez/copilot/prepare-for-stable-release
Prepare v1.5.1 stable release with Docker upstream 2.0.2
2025-12-14 02:02:17 +00:00
copilot-swe-agent[bot]
d99f64b52e Add .gitignore and fix uninstall script executable permissions for release compliance
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-14 01:52:40 +00:00
copilot-swe-agent[bot]
9884186a99 Update version to 1.5.1 and prepare stable release
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-14 01:49:58 +00:00
copilot-swe-agent[bot]
2c3f988c6e Initial plan 2025-12-14 01:46:59 +00:00
M0VUB
484a12a8a4
Refine README content and formatting
Updated README to enhance clarity and correct formatting issues.
2025-12-14 01:30:18 +00:00
M0VUB
b9496f3db8
Improve README formatting for important notes
Updated the README to improve formatting and clarity.
2025-12-14 01:25:07 +00:00
M0VUB
a70c111ea2
Update README to emphasize destructive nature of installer
Clarified that the installer is destructive and should be used on a fresh installation.
2025-12-14 01:24:24 +00:00
M0VUB
6bb1c40f52
Update alpine version 2025-12-14 01:21:41 +00:00
M0VUB
ac22b3dd4a
Merge pull request #15 from ShaYmez/copilot/update-installer-for-docker
Modernize installer: Docker Compose v2, Ubuntu support, unified approach
2025-12-14 00:52:03 +00:00
copilot-swe-agent[bot]
9ecafe7959 Add Ubuntu 22.04 and 24.04 LTS support, remove Ubuntu 20.04
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-14 00:46:17 +00:00
copilot-swe-agent[bot]
73cceaf444 Simplify installer for modern approach - remove version-specific duplications
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-14 00:41:08 +00:00
copilot-swe-agent[bot]
0246fe7c27 Fix grammar: 'Your running' to 'You're running'
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-14 00:38:08 +00:00
copilot-swe-agent[bot]
4a7d71c339 Clean up remaining Debian 10 references in comments
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-14 00:36:35 +00:00
copilot-swe-agent[bot]
e277e1da53 Fix remaining Debian 10 reference in README
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-14 00:35:28 +00:00
copilot-swe-agent[bot]
56237a8557 Update installer to always use Docker Compose v2 for Debian 11-13
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-14 00:34:19 +00:00
copilot-swe-agent[bot]
707813d5f9 Initial plan 2025-12-14 00:30:38 +00:00
M0VUB
61cb04b17d
Merge pull request #14 from ShaYmez/copilot/add-pyproject-toml-file
Replace --break-system-packages with virtual environments for Debian 12+
2025-12-13 22:18:31 +00:00
copilot-swe-agent[bot]
626e500ef0 Improve error handling and robustness based on second code review
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 22:13:06 +00:00
copilot-swe-agent[bot]
4fa32f6fc4 Address code review feedback: fix redundant checks and improve robustness
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 22:10:43 +00:00
copilot-swe-agent[bot]
2860bda260 Update documentation for modern Python virtual environment approach
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 22:08:26 +00:00
copilot-swe-agent[bot]
36c5e38e35 Modernize Python package installation using virtual environments for Debian 12+
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 22:06:53 +00:00
copilot-swe-agent[bot]
3a7c783d31 Initial plan 2025-12-13 22:02:25 +00:00
M0VUB
e0e6bc97e1
Merge pull request #13 from ShaYmez/copilot/fix-pip-installation-issues
Fix pip installation error handling and Debian 12+ compatibility
2025-12-13 21:43:43 +00:00
copilot-swe-agent[bot]
f7e9ef474f Fix indentation consistency in pip installation section
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 21:37:04 +00:00
copilot-swe-agent[bot]
b685e1df1a Enhance pip installation with better error handling and consistency
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 21:34:53 +00:00
copilot-swe-agent[bot]
4121f64576 Initial plan 2025-12-13 21:30:59 +00:00
M0VUB
a2a947a532
Update Docker upstream repo version to 2.0.2 2025-12-13 20:38:28 +00:00
M0VUB
3a2cb08eff
Update HBMonv2 configuration file for production 2025-12-13 19:23:13 +00:00
M0VUB
01c18b30fc
Merge pull request #12 from ShaYmez/copilot/fix-docker-compose-command-not-found
Fix docker-compose command not found on Debian 12+ with docker-compose-plugin
2025-12-13 02:59:22 +00:00
copilot-swe-agent[bot]
41540e3d9e Add clarifying comments to address code review feedback
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 02:56:24 +00:00
copilot-swe-agent[bot]
1424e5e8f0 Improve wrapper creation: check cat exit status directly and add skip message
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 02:54:25 +00:00
copilot-swe-agent[bot]
7235442b54 Simplify error check for wrapper creation to only use file existence test
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 02:51:58 +00:00
copilot-swe-agent[bot]
1cca6057c4 Add error handling for docker-compose wrapper creation
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 02:49:34 +00:00
copilot-swe-agent[bot]
da535e0f5c Fix docker-compose command not found by creating wrapper for docker-compose-plugin
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 02:48:12 +00:00
copilot-swe-agent[bot]
5db86268fb Initial plan 2025-12-13 02:44:59 +00:00
M0VUB
534fe8c480
Merge pull request #11 from ShaYmez/copilot/check-debian-13-support
Verify Debian 13 (Trixie) compatibility and add version 1.5.0 release
2025-12-13 02:31:55 +00:00
copilot-swe-agent[bot]
5a9b990d24 Fix repository references in CHANGELOG for clarity
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 02:29:41 +00:00
copilot-swe-agent[bot]
5ac9ee2a09 Add version 1.5.0 with CHANGELOG and Debian 13 verification
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 02:28:25 +00:00
copilot-swe-agent[bot]
593dec235c Initial plan 2025-12-13 02:17:20 +00:00
M0VUB
12a11f72c7
Merge pull request #10 from ShaYmez/copilot/update-support-email-address
Update contact email from support@gb7nr.co.uk to shane@freestar.network
2025-12-13 01:52:57 +00:00
copilot-swe-agent[bot]
204001b1b4 Update email address from support@gb7nr.co.uk to shane@freestar.network in all script files
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 01:51:05 +00:00
copilot-swe-agent[bot]
8f4747caa2 Initial plan 2025-12-13 01:48:18 +00:00
M0VUB
47bb8f1d47
Update copyright email address in script 2025-12-13 01:46:31 +00:00
M0VUB
ae8308c7df
Merge pull request #9 from ShaYmez/copilot/refactor-initial-setup
Refactor sbin scripts to V2.0 and enable path-independent installation
2025-12-13 01:44:55 +00:00
copilot-swe-agent[bot]
d4e2bb5962 Update all sbin scripts to V2.0 and make installer path-independent
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 01:36:40 +00:00
copilot-swe-agent[bot]
f404d6f413 Initial plan 2025-12-13 01:29:31 +00:00
M0VUB
d7f096ef32
Update version information in hblink3 installer script 2025-12-13 01:26:05 +00:00
M0VUB
804be3c33e
Merge pull request #8 from ShaYmez/copilot/refactor-installation-process
Add Debian 13 support, uninstall functionality, and refactor installation logic
2025-12-13 01:21:48 +00:00
copilot-swe-agent[bot]
fcc314a46d Address code review feedback: fix typo, menu height, and refactor pip helper
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 01:16:43 +00:00
copilot-swe-agent[bot]
89ade8cf14 Add pip installation handling for Debian 12+ restrictions
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 01:13:59 +00:00
copilot-swe-agent[bot]
379ac8ad1a Add Debian 13 support, uninstall functionality, and refactor install script
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-12-13 01:11:47 +00:00
copilot-swe-agent[bot]
30f0f02132 Initial plan 2025-12-13 01:06:07 +00:00
M0VUB
b458ffc329
Merge pull request #7 from ShaYmez/copilot/check-install-run-errors
Fix typos and add error handling for external IP detection
2025-11-20 02:12:58 +00:00
copilot-swe-agent[bot]
541a9bf45e Fix multiple typos in README documentation
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-11-20 02:07:44 +00:00
copilot-swe-agent[bot]
4b0f43a902 Fix typos and add error handling for curl command
Co-authored-by: ShaYmez <76499782+ShaYmez@users.noreply.github.com>
2025-11-20 02:06:31 +00:00
copilot-swe-agent[bot]
8308b6254e Initial plan 2025-11-20 02:02:33 +00:00
M0VUB
9376c1d610
Update hblink3-docker-install.sh
Versioning
2024-11-13 23:36:20 +00:00
M0VUB
e928d910a4
Update hblink3-docker-install.sh
Update version 14062024 - Debian 10/11 only1
2024-06-14 00:37:33 +01:00
M0VUB
c0e3d4e723
Update README.md
Stable - Debian 10 / 11 support only!!!
2024-06-14 00:23:58 +01:00
M0VUB
cc4a9cd3fe
Update README.md 2024-06-14 00:03:56 +01:00
M0VUB
d2676f1219
Update hblink3-docker-install.sh
Revert script to stable
2024-06-13 23:55:48 +01:00
M0VUB
cabdab8760
Update README.md 2024-06-13 23:46:44 +01:00
M0VUB
25e0a15419
Update hblink3-docker-install.sh
try using config externally
2024-06-13 23:36:57 +01:00
M0VUB
960ac04d69
Update hblink3-docker-install.sh
dash html
2024-06-13 23:29:09 +01:00
M0VUB
98bf52cbcc
Update hblink3-docker-install.sh
HBMonv2 re-compiled and re-built, upgrading script to suit
2024-06-13 23:22:36 +01:00
M0VUB
cf65a5e483
Update hblink3-docker-install.sh
Upgrade to v3
2024-06-13 21:48:22 +01:00
M0VUB
b46800d4d0
Update hblink3-docker-install.sh
Upgrade to RYMonv3
2024-06-13 21:45:59 +01:00
M0VUB
1cc3a544cf
Update hblink3-docker-install.sh
Start introducing new dashboard configuration
2024-06-13 21:26:04 +01:00
M0VUB
6745780e4c
Update hblink3-docker-install.sh
Commit to start dash upgrade
2024-06-13 20:23:42 +01:00
ShaYmez
1e9149dcc6 v2 2024-02-27 22:32:36 +00:00
M0VUB
f33a5a8f1c
Update README.md
1.0.1
2024-02-27 00:10:24 +00:00
M0VUB
caacb071e0
Update hblink3-docker-install.sh
1.0.1 revert bookworm support for now
2024-02-27 00:07:54 +00:00
M0VUB
9093f69f1e
Update hblink3-docker-install.sh
Revert support for bookworm
2024-02-27 00:07:13 +00:00
ShaYmez
884876375a develpment branch for new dev 2024-02-26 21:21:13 +00:00
ShaYmez
68696db0ac Stable release version 1.0.0 (Without dockerised HBMonv2) 2024-02-26 21:07:22 +00:00
14 changed files with 939 additions and 198 deletions

43
.gitignore vendored Normal file
View File

@ -0,0 +1,43 @@
# Temporary files
*.tmp
*.swp
*.swo
*~
.DS_Store
# Log files
*.log
# Backup files
*.bak
*.backup
# IDE and editor files
.vscode/
.idea/
*.sublime-*
# Python bytecode
__pycache__/
*.py[cod]
*$py.class
*.so
# Virtual environments
venv/
env/
ENV/
# Distribution / packaging
dist/
build/
*.egg-info/
# Test and coverage
.coverage
htmlcov/
.pytest_cache/
# Local development files
.env
.env.local

175
CHANGELOG.md Normal file
View File

@ -0,0 +1,175 @@
# Changelog
All notable changes to the hblink3-docker-install project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.5.1] - 2025-12-14
### Changed
- **BREAKING CHANGE - Modern Python Package Management**: For Debian 12+ (Bookworm/Trixie), HBMonv2 now uses a Python virtual environment instead of system-wide package installation
- HBMonv2 Python dependencies installed in isolated virtual environment at `/opt/HBMonv2/venv` for Debian 12+
- pip_install helper function now uses virtual environment for Debian 12+ (PEP 668 compliant)
- systemd service file automatically configured to use virtual environment Python interpreter for Debian 12+
- Added python3-venv to system dependencies for Debian 12+
- Enhanced pip_install helper function with comprehensive error handling and user feedback
- Added proper error checking after all pip package installations
- Improved error messages to help users diagnose installation failures
- Added directory verification before installing from requirements.txt
- Changed deprecated --force flag to --force-reinstall for attrs package installation
### Fixed
- **Resolved externally-managed-environment errors on Debian 12/13** by using virtual environments instead of --break-system-packages flag
- **Resolved package conflicts with system-installed cryptography** by isolating Python packages in virtual environment
- Silent pip installation failures now properly reported to users
- Missing requirements.txt file now handled gracefully with warning instead of silent failure
- pip installation errors now cause the installer to exit with proper error messages
### Technical Details
- Debian 10-11: Continues to use standard system-wide pip installation (backward compatible)
- Debian 12+: Uses modern virtual environment approach following PEP 668 standards
- Virtual environment is automatically activated during installation
- pip is upgraded within the virtual environment for latest features
### Release Information
- Docker upstream repository version: 2.0.2
- Docker version: alpine-3.20
- Installer version: 1.5.1 (14122024)
- Full Debian 11, 12, 13 and Ubuntu 22.04, 24.04 LTS support confirmed
## [1.5.0] - 2024-12-13
### Verified
- Full Debian 13 (Trixie) support confirmed working (33/33 tests passed)
- Upstream repository compatibility verified:
- hblink3: https://github.com/ShaYmez/hblink3 (accessible, recently updated for Debian compatibility)
- HBMonv2: https://github.com/ShaYmez/HBMonv2 (accessible, all dependencies compatible)
- pip installation with --break-system-packages flag working correctly for Debian 12+
- docker-compose-plugin installation working correctly for Debian 12+
- All control scripts validated (syntax and functionality)
- Version detection logic confirmed for Debian 13
- Documentation accurately references Debian 13 (Trixie) support
### Added
- CHANGELOG.md to track project changes and releases
## [1.4.0] - 2024-12-13
### Note
This version corresponds to installer version 13122025
### Added
- Debian 13 (Trixie) support
- Docker version alpine-3.18 compatibility
- Enhanced pip installation handling for Debian 12+ with PEP 668 compliance
- docker-compose-plugin support for modern Debian versions
- Fallback mechanism for docker-compose installation from GitHub releases
### Changed
- Updated installer to handle Debian 12 and 13 with --break-system-packages pip flag
- Improved docker-compose installation logic for newer Debian versions
- Enhanced version detection and branching logic
### Fixed
- pip installation issues on Debian 12+ due to externally-managed-environment restrictions
## [Previous] - Earlier Releases
### Supported
- Debian 10 (Buster) support
- Debian 11 (Bullseye) support
- Debian 12 (Bookworm) support
- Ubuntu 20.04 support
- Multi-architecture Docker builds (x86_64, armv6/7, aarch64, ppc64)
### Features
- Complete HBlink3 server installation via Docker
- HBMonv2 dashboard integration
- Built-in Parrot functionality (configurable)
- Automatic JSON file downloads (RadioID database)
- systemd service management
- Control scripts for easy management:
- hblink-menu (interactive menu system)
- hblink-start/stop/restart
- hblink-update (Docker image updates)
- hblink-flush (service cleanup)
- hblink-uninstall (complete removal)
- hblink-initial-setup (first-time configuration)
- hblink-upgrade (future upgrades)
- Apache2 web server integration
- Automated cron jobs for log management
- Comprehensive logging to /var/log/hblink
### Installation Components
- Docker CE from official Docker repository
- docker-compose or docker-compose-plugin (version-dependent)
- Python 3 with required dependencies
- HBlink3 from https://github.com/ShaYmez/hblink3
- HBMonv2 from https://github.com/ShaYmez/HBMonv2
- Apache2 with PHP support
- systemd service files
### Security
- Proper file permissions (755/777) on critical directories
- Container user separation (UID 54000)
- Docker userland-proxy disabled for performance
- Root privilege checks before installation
### Documentation
- Comprehensive README.md with installation instructions
- Support for Debian 10, 11, 12, and 13 (Trixie)
- Port forwarding documentation
- Parrot feature configuration guide
- Uninstallation instructions
## Repository Information
### Upstream Dependencies
- **HBlink3:** https://github.com/ShaYmez/hblink3
- **HBMonv2:** https://github.com/ShaYmez/HBMonv2
### Compatibility Matrix
| Debian Version | Status | Notes |
|---------------|---------|-------|
| Debian 10 (Buster) | ✅ Supported | Uses standard apt packages |
| Debian 11 (Bullseye) | ✅ Supported | Uses standard apt packages |
| Debian 12 (Bookworm) | ✅ Supported | Uses docker-compose-plugin and --break-system-packages |
| Debian 13 (Trixie) | ✅ Supported | Uses docker-compose-plugin and --break-system-packages |
| Ubuntu 20.04 | ✅ Supported | Tested and working |
### Architecture Support
- x86_64 (64-bit Intel/AMD)
- armv6/armv7 (Raspberry Pi and similar)
- aarch64 (ARM 64-bit)
- ppc64 (PowerPC 64-bit)
- Additional architectures via Docker multi-arch support
## Maintenance Notes
### Known Issues
- None currently reported for Debian 13 support
### Upgrade Path
- Users can upgrade from any Debian 10/11/12 installation to Debian 13
- Existing configurations are preserved during system upgrades
- Use `hblink-update` to pull latest Docker images after OS upgrade
### Testing
- All installations should be performed on clean systems
- Destructive installer - not recommended for systems with existing software
- Minimum requirements: 1 core, 512MB RAM, adequate disk space
## Contributing
For bugs, features, or support, please visit:
- Main Repository: https://github.com/ShaYmez/hblink3-docker-install
- HBlink3 Repository: https://github.com/ShaYmez/hblink3
- HBMonv2 Repository: https://github.com/ShaYmez/HBMonv2
- Official HBlink3 Upstream: https://github.com/HBLink-org/hblink3
## Credits
- **Maintainer:** Shane Daley - M0VUB (M0VUB)
- **Contact:** shane@freestar.network
- **Dashboard:** HBMonv2 by Weldek SP2ONG
- **License:** GNU General Public License v3.0
---
*For detailed installation instructions, see [README.md](README.md)*

View File

@ -1,6 +1,12 @@
# HBlink3 Docker Installer
Version 20230806 STABLE!
This is a multi-arch docker installer for HBlink3 and HBmonV2 combined for Debian 10 / 11
Debian 11 / 12 / 13 and Ubuntu 22.04 / 24.04 LTS Support!!
=======
This is a multi-arch docker installer for HBlink3 and HBMonv2 combined for Debian 11, 12, 13 and Ubuntu 22.04, 24.04 LTS.
**Important:** Destructive Installer!
This is a destructive installer and is recommended to be built on a freshly installed machine running Debian 11, 12, 13 or Ubuntu 22.04, 24.04 LTS.
**Note:** Debian 12 (Bookworm) and 13 (Trixie) along with Ubuntu 22.04 and 24.04 LTS are fully supported with proper PEP 668 compliant Python package management using virtual environments. HBMonv2 now runs in an isolated Python virtual environment. See [CHANGELOG.md](CHANGELOG.md) for version history and updates.
![HBlink](img/HBLINK_logoV1.png "HBlink")
@ -12,20 +18,19 @@ Parrot is built into this install (Default disabled, see below how to enable the
Docker container pre-built for multi-arch!
* x86_64
* armv6 / armv7
* aarch64
* arm64
* ppc64
* lots more!
This installer builds the entire server! It includes all of the dependencies needed to run HBlink3 within docker via docker-compose. The install also includes
HBMonv2 which is a dashboard designed for HBlink3 by SP2ONG! This runs side by side, but at this time runs on the host machine. HBMonv2 is controlled by a system unit file which runs the python code on the host.
This installer builds the entire HBlink server! It includes all of the dependencies needed to run HBlink3 within docker via docker-compose. The install also includes HBMonv2, which is a dashboard designed for HBlink3 by SP2ONG, re-factored by M0VUB. This runs side by side, but at this time runs on the host machine using Systemd. HBMonv2 is controlled by a system unit file which runs the python code on the host.
This installer includes all the usual libs and packages including docker, apache2, php and python3. It is recommended that you
install this on a 'clean machine'. The script is destructive and is not designed to be used on an exisiting machine! YOU HAVE
BEEN WARNED!
install this on a 'clean machine'. The script is destructive and is not designed to be used on an exisiting machine that has other software on it! YOU HAVE BEEN WARNED!
### Prerequisite
System must be dabian 10 or 11. It is advisable to run HBlink on the latest debian platform. This script has been tested on most architectures but the system requires, at a minimum, 1 core, 512mbmb of ram, the required spec to run docker and additional procceses! The system must be up-to-date and have Git installed. You can install Git from the CLI.
The host system must be running Debian 11, 12, 13 or Ubuntu 22.04, 24.04 LTS. **Debian 10 and Ubuntu 20.04 are no longer supported** due to the requirement for Docker Compose v2 and modern Python package management. The installer has been tested on these OS versions and works on most architectures. The system requires, at a minimum; 1 core, 512mb of ram, the required spec to run docker and additional processes! The system must be up-to-date and have Git installed. You can install Git from the CLI.
**Docker Compose v2:** This installer exclusively uses Docker Compose v2 from the official Docker repositories. The docker-compose-plugin package is automatically installed, providing the `docker compose` command (note the space). A compatibility wrapper is also created to support the legacy `docker-compose` command (with hyphen) for backward compatibility with existing scripts.
Note* If you get Locale error(s) (LC_CTYPE=UTF-8, which is wrong) can happen when you login over ssh from a Mac to a linux box, and your terminal automatically sets environment variables. There's a checkbox for that. Uncheck it, and you're good to go.
@ -34,31 +39,31 @@ Make sure your system is up-to-date and pull Git from the apt repo.
apt-get install -y git
```
### Installation
1. Have preferably a clean Dabian 10 or 11 system. Make sure your system is up to date with the latest apt repository database. You must be super user "root" to run this installer successfully.
1. Preferably a clean Debian 11, 12, 13 or Ubuntu 22.04, 24.04 LTS system. **Debian 10 and Ubuntu 20.04 are no longer supported.** Make sure your system is up to date with the latest apt repository database. You must be super user "root" to run this installer successfully.
```sh
apt update
sudo su
```
2. It is very important that the installer runs from the /opt directory! We will then want to get this repository and clone it to the /opt directory.
2. Clone this repository to any directory of your choice. The installer will work from any location!
```sh
cd /opt
git clone https://github.com/ShaYmez/hblink3-docker-install
```
3. Now cd in to the cloned repo and execute the install script. No need to chmod as permissions are already satisfied.
**Note:** While you can clone to any directory, `/opt` is still recommended for consistency.
3. Now enter into the cloned repo and execute the install script. No need to chmod as permissions are already satisfied.
```sh
cd hblink3-docker-install
./hblink3-docker-install.sh
```
4. follow the install and any prompts! It it will prompt you for kernel updates if neccassary.
5. Once the installation is complete it is recommended to reboot the machine.
4. Follow the install and any prompts! It will prompt you for kernel updates if necessary.
5. Once the installation is complete you will be presented with the first time run menu. Edit your config or exit to complete setup.
### New Menu System released with this installer!
![New HBlink Menu System](img/HBLINK_menu.png "HBlink-menu")
6. Once the installation is complete you will be guided to the Setup Menu. To interact with this menu follow the on-screen
instructions! Set up and configure your system with the new menu system! Once finihsed hit 'Finish Setup & Exit' to exit out of the
setup menu. Dont forget to reboot your machine!
instructions! Set up and configure your system with the new menu system! Once finished hit 'Finish Setup & Exit' to exit out of the setup menu.
7. To enter the HBlink control menu, type the command
```sh
@ -71,21 +76,45 @@ hblink-stop
hblink-restart
hblink-flush
hblink-update
hblink-uninstall
```
### Uninstallation
To completely remove HBlink3 and all its components from your system, you can use the uninstall script:
```sh
hblink-uninstall
```
or
```sh
hblink-menu
```
Then select option 11 "Uninstall HBlink3"
The uninstall script will:
- Stop all HBlink3 services (Docker containers and HBMonv2)
- Remove Docker containers and HBlink images
- Remove systemd service files
- Remove cron jobs
- Remove control scripts from /usr/local/sbin
- Backup configurations to /root/hblink3-backup-[timestamp]
- Remove installation directories (/etc/hblink3, /opt/HBMonv2, /var/log/hblink)
- Restore default Apache index page
**Note:** Docker, Apache2, PHP, and other system packages will NOT be removed during uninstallation.
9. To interact with HBlink3 manually using docker you need to enter the HBlink3 directory
```sh
cd /etc/hblink3
```
10. You can only interact with HBlink3 in this directory. Use the following commands to interact with the installation. We use
docker-compose to run the docker container!
10. You can only interact with HBlink3 in this directory. Use the following commands to interact with the installation. This installer uses Docker Compose v2 (docker-compose-plugin):
```sh
docker-compose up -d
docker-compose down
docker-compose restart
docker-compose pull
docker compose up -d # Start containers (Docker Compose v2)
docker compose down # Stop containers
docker compose restart # Restart containers
docker compose pull # Update images
sudo nano docker-compose.yml
```
**Note:** The legacy `docker-compose` command (with hyphen) also works via a compatibility wrapper that forwards to `docker compose`, but using `docker compose` (with space) is recommended as the official Docker Compose v2 syntax.
11. Edit your configuration before deployment!
```sh
nano hblink.cfg
@ -104,7 +133,7 @@ systemctl start|stop|restart|status hbmon
![New HBMonv2 Banner](img/HBLINK_logoV2.png "HBMonv2")
Within this installtion includes the new HBMonv2 by Weldek SP2ONG
Within this installation includes the new HBMonv2 by Weldek SP2ONG
* Better dashboard for monitoring per page
* Python build
* Websocket connection to web interface
@ -112,6 +141,16 @@ Within this installtion includes the new HBMonv2 by Weldek SP2ONG
* Includes lastheard database with auto cron installed
* Includes talkgroup html editable page
### Technical Details - Python Package Management
The installer uses modern Python package management following PEP 668 standards for all supported OS versions:
- HBMonv2 runs in an isolated Python virtual environment at `/opt/HBMonv2/venv`
- All Python dependencies are installed within this virtual environment, avoiding system-wide package conflicts
- The systemd service automatically uses the virtual environment's Python interpreter
- This approach eliminates "externally-managed-environment" errors and conflicts with system packages
This ensures clean, maintainable installations that follow modern Python best practices across all supported Debian and Ubuntu versions.
## Easy Installation And Upgrade
The installation can be upgraded either by the use of a future scripts or by manually backing up your configuration and re-running the install script. Also the ability and really cool feature of docker-compose is that its easy to update the container with fresh images! Run by a simple command. Make sure you are in the /etc/hblink3 dir.
```sh
@ -150,7 +189,7 @@ nano /etc/hblink3/hblink.cfg
```
Scroll down to the ```[Parrot]``` stanza and edit ```ENABLED: True``` to enable.
Next we have put an example rule in rules.py. Remove the ```#``` hashes to enable routing of the parrot.
'''sh
```sh
nano /etc/hblink3/rules.py
```
Ctrl X and hit save!
@ -158,7 +197,7 @@ Once done save this and enter the the HBlink control menu
```sh
hblink-menu
```
Select option 4 "Update HBlinlk / Docker
Select option 4 "Update HBlink / Docker
Watch the terminal for any errors while bringing up the project! You can use the parrot on TG9999 (Default) or edit for your own tastes!
### Postrequisite

1
VERSION Normal file
View File

@ -0,0 +1 @@
1.5.1

View File

@ -1,9 +1,11 @@
#!/bin/bash
# Docker version alpine-3.17
# Version 20230806 hblink3-docker-installer
# Docker version alpine-3.20
# Version 1.5.1 (14122024) hblink3-docker-installer
# Docker upstream repo version 2.0.2
# Release: Stable Release - Python Virtual Environment Support
#
##################################################################################
# Copyright (C) 2021-2023 Shane Daley, M0VUB aka ShaYmez. <support@gb7nr.co.uk>
# Copyright (C) 2021-2025 Shane Daley, M0VUB aka ShaYmez. <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -20,18 +22,19 @@
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
##################################################################################
#
# A tool to install HBlink3 Docker with Debian / Ubuntu support.
# This essentially is a HBlink3 server fully installed with dashboard / SSL ready to go.
# Step 1: Install Debian 10 or 11 or Ubuntu 20.04 onwards.. and make sure it has internet and is up to date.
# A tool to install HBlink3 Docker with Debian 11, 12, 13 and Ubuntu 22.04, 24.04 LTS support.
# This essentially is a HBlink3 server fully installed with dashboard ready to go.
# Step 1: Install Debian 11, 12, 13 or Ubuntu 22.04, 24.04 LTS and make sure it has internet and is up to date.
# Step 2: Run this script on the computer.
# Step 4: Reboot after installation.
# This is a docker version and you can use the following comands to control / maintain your server
# Step 3: Reboot after installation.
# This is a docker version and you can use the following commands to control / maintain your server
# cd /etc/hblink3
# docker-compose up -d (starts the hblink3 docker container)
# docker-compose down (shuts down the hblink container and stops the service)
# docker-compose pull (updates the container to the latest docker image)
# docker compose up -d (starts the hblink3 docker container) - Note: uses Docker Compose v2
# docker compose down (shuts down the hblink container and stops the service)
# docker compose pull (updates the container to the latest docker image)
# For backward compatibility, docker-compose (with hyphen) is also supported via a wrapper script
# systemctl |stop|start|restart|status hbmon (controls the HBMonv2 dash service)
# logs can be found in var/log/hblink or docker comand "docker container logs hblink"
# logs can be found in var/log/hblink or docker command "docker container logs hblink"
#Lets begin-------------------------------------------------------------------------------------------------
if [ "$EUID" -ne 0 ];
then
@ -39,28 +42,57 @@ then
echo "You Must be root to run this script!!"
exit 1
fi
if [ ! -e "/etc/debian_version" ]
then
echo ""
echo "This script is only tested in Debian 9,10 & 11 repo only."
exit 0
# Detect OS type and version
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
OS_VERSION=$VERSION_ID
else
echo "ERROR: Cannot detect operating system"
exit 1
fi
# Check for supported OS
if [ "$OS" != "debian" ] && [ "$OS" != "ubuntu" ]; then
echo ""
echo "ERROR: This script only supports Debian and Ubuntu distributions"
echo "Detected OS: $OS"
exit 1
fi
# Validate Ubuntu versions
if [ "$OS" = "ubuntu" ]; then
if [ "$OS_VERSION" != "22.04" ] && [ "$OS_VERSION" != "24.04" ]; then
echo ""
echo "ERROR: Only Ubuntu 22.04 LTS and 24.04 LTS are supported"
echo "Detected Ubuntu version: $OS_VERSION"
exit 1
fi
echo "Detected: Ubuntu $OS_VERSION LTS"
fi
# Validate Debian versions
if [ "$OS" = "debian" ]; then
VERSION=$(sed 's/\..*//' /etc/debian_version)
if [ "$VERSION" != "11" ] && [ "$VERSION" != "12" ] && [ "$VERSION" != "13" ]; then
echo ""
echo "ERROR: Only Debian 11, 12, and 13 are supported"
echo "Detected Debian version: $VERSION"
exit 1
fi
echo "Detected: Debian $VERSION"
fi
DIRDIR=$(pwd)
LOCAL_IP=$(ip a | grep inet | grep "eth0\|en" | awk '{print $2}' | tr '/' ' ' | awk '{print $1}')
EXTERNAL_IP=$(curl https://ipecho.net/plain)
EXTERNAL_IP=$(curl -s --connect-timeout 5 https://ipecho.net/plain 2>/dev/null || echo "Unable to detect")
ARC=$(lscpu | grep Arch | awk '{print $2}')
VERSION=$(sed 's/\..*//' /etc/debian_version)
ARMv7l=https://get.docker.com | sh
ARMv8l=https://get.docker.com | sh
X32=https://get.docker.com | sh
X64=https://get.docker.com | sh
INSDIR=/opt/tmp/
HBLINKTMP=/opt/tmp/hblink3
HBMONDIR=/opt/HBMonv2/
HBDIR=/etc/hblink3/
DEP="wget curl git sudo python3 python3-dev python3-pip libffi-dev libssl-dev conntrack sed cargo apache2 php snapd figlet ca-certificates gnupg lsb-release"
DEP1="wget curl git sudo python3 python3-dev python3-pip libffi-dev libssl-dev conntrack sed cargo apache2 php snapd figlet ca-certificates gnupg lsb-release"
DEP2="wget sudo curl git python3 python3-dev python3-pip libffi-dev libssl-dev conntrack sed cargo apache2 php php-mysqli snapd figlet ca-certificates gnupg lsb-release"
DEP="wget curl git sudo python3 python3-dev python3-pip python3-venv libffi-dev libssl-dev conntrack sed cargo apache2 php snapd figlet ca-certificates gnupg lsb-release"
HBGITREPO=https://github.com/ShaYmez/hblink3.git
HBGITMONREPO=https://github.com/ShaYmez/HBMonv2.git
echo ""
@ -68,92 +100,146 @@ echo "--------------------------------------------------------------------------
echo "Downloading and installing required software & dependencies....."
echo "------------------------------------------------------------------------------"
if [ $VERSION = 10 ];
then
apt-get update
apt-get install -y $DEP
sleep 2
apt-get remove docker docker-engine docker.io containerd runc
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
apt-get install -y docker-compose
systemctl enable docker
systemctl start docker
figlet "docker.io"
echo Set userland-proxy to false...
echo '{ "userland-proxy": false}' > /etc/docker/daemon.json
elif [ $VERSION = 11 ];
then
apt-get update
apt-get install -y $DEP
sleep 2
apt-get remove docker docker-engine docker.io containerd runc
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
apt-get install -y docker-compose
systemctl enable docker
systemctl start docker
figlet "docker.io"
echo Set userland-proxy to false...
echo '{ "userland-proxy": false}' > /etc/docker/daemon.json
elif [ $VERSION = 12 ];
then
apt-get update
apt-get install -y $DEP2
sleep 2
apt-get remove docker docker-engine docker.io containerd runc
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
apt-get install -y docker-compose
systemctl enable docker
systemctl start docker
figlet "docker.io"
echo Set userland-proxy to false...
echo '{ "userland-proxy": false}' > /etc/docker/daemon.json
elif [ $VERSION = bookworm/sid ];
then
apt-get update
apt-get install -y $DEP2
sleep 2
apt-get remove docker docker-engine docker.io containerd runc
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
apt-get install -y docker-compose
systemctl enable docker
systemctl start docker
figlet "docker.io"
echo Set userland-proxy to false...
echo '{ "userland-proxy": false}' > /etc/docker/daemon.json
install_docker_and_dependencies() {
echo "Installing Docker and dependencies..."
# Install base dependencies (python3-venv is included for all versions for consistency)
echo "Installing dependencies..."
apt-get update
apt-get install -y $DEP
sleep 2
# Remove old Docker versions if present
echo "Removing old Docker versions if present..."
apt-get remove docker docker-engine docker.io containerd runc docker-compose 2>/dev/null || true
# Determine Docker repository URL based on OS
if [ "$OS" = "ubuntu" ]; then
DOCKER_REPO_URL="https://download.docker.com/linux/ubuntu"
echo "Configuring Docker repository for Ubuntu..."
else
DOCKER_REPO_URL="https://download.docker.com/linux/debian"
echo "Configuring Docker repository for Debian..."
fi
# Add Docker GPG key
echo "Adding Docker GPG key..."
curl -fsSL ${DOCKER_REPO_URL}/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
if [ ! -f /usr/share/keyrings/docker-archive-keyring.gpg ]; then
echo "ERROR: Failed to download Docker GPG key"
exit 1
fi
# Add Docker repository
echo "Adding Docker repository..."
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] ${DOCKER_REPO_URL} \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker Engine from official Docker repositories
echo "Installing Docker Engine from official Docker repositories..."
apt-get update
if ! apt-get install -y docker-ce docker-ce-cli containerd.io; then
echo "ERROR: Failed to install Docker Engine"
echo "Please check your internet connection and Debian version compatibility"
exit 1
fi
# Verify Docker is installed
if ! command -v docker &> /dev/null; then
echo "ERROR: Docker installation failed - docker command not found"
exit 1
fi
# Install Docker Compose v2 plugin from official Docker repositories
echo "Installing Docker Compose v2 plugin from official Docker repositories..."
if ! apt-get install -y docker-compose-plugin; then
echo "ERROR: Failed to install docker-compose-plugin from Docker repositories"
echo "This installer only supports Docker Compose v2"
exit 1
fi
# Verify Docker Compose v2 is installed
if ! docker compose version &> /dev/null; then
echo "ERROR: Docker Compose v2 installation failed - 'docker compose' command not working"
exit 1
fi
# Create wrapper script for backward compatibility with docker-compose command
# This allows existing scripts using 'docker-compose' to work with 'docker compose'
echo "Creating docker-compose wrapper for backward compatibility..."
if [ ! -f /usr/local/bin/docker-compose ]; then
if cat > /usr/local/bin/docker-compose << 'EOF'
#!/bin/sh
# Wrapper script to provide docker-compose command using docker compose plugin
exec docker compose "$@"
EOF
then
chmod +x /usr/local/bin/docker-compose
echo "docker-compose wrapper created successfully"
else
echo "ERROR: Failed to create docker-compose wrapper script"
exit 1
fi
else
echo "docker-compose command already exists at /usr/local/bin/docker-compose"
fi
# Verify the wrapper works
if ! /usr/local/bin/docker-compose version &> /dev/null; then
echo "ERROR: docker-compose wrapper verification failed"
exit 1
fi
# Enable and start Docker
echo "Enabling and starting Docker service..."
systemctl enable docker
systemctl start docker
# Verify Docker service is running
if ! systemctl is-active --quiet docker; then
echo "ERROR: Docker service failed to start"
exit 1
fi
figlet "docker.io"
echo "Set userland-proxy to false..."
echo '{ "userland-proxy": false}' > /etc/docker/daemon.json
systemctl restart docker
sleep 2
}
# Run Docker installation for supported OS versions
if [ "$OS" = "debian" ]; then
if [ "$VERSION" = "11" ] || [ "$VERSION" = "12" ] || [ "$VERSION" = "13" ]; then
echo "Installing for Debian $VERSION with Docker Compose v2..."
install_docker_and_dependencies
elif [ "$VERSION" = "10" ]; then
echo "ERROR: Debian 10 is no longer supported by this installer"
echo "This installer now requires Debian 11, 12, or 13 for Docker Compose v2 support"
echo "Please upgrade your system to Debian 11 or later"
exit 1
else
echo "-------------------------------------------------------------------------------------------"
echo "Operating system not supported! Please check you are running Debian 11, 12, or 13. Exiting....."
echo "-------------------------------------------------------------------------------------------"
exit 0
fi
elif [ "$OS" = "ubuntu" ]; then
if [ "$OS_VERSION" = "22.04" ] || [ "$OS_VERSION" = "24.04" ]; then
echo "Installing for Ubuntu $OS_VERSION LTS with Docker Compose v2..."
install_docker_and_dependencies
else
echo "-------------------------------------------------------------------------------------------"
echo "Operating system not supported! Please check you are running Ubuntu 22.04 or 24.04 LTS. Exiting....."
echo "-------------------------------------------------------------------------------------------"
exit 0
fi
else
echo "-------------------------------------------------------------------------------------------"
echo "Operating system not supported! Please check your configuration or upgrade. Exiting....."
echo "Operating system not supported! Exiting....."
echo "-------------------------------------------------------------------------------------------"
exit 0
fi
@ -161,7 +247,7 @@ echo "Done."
echo "------------------------------------------------------------------------------"
echo "Installing control scripts /usr/local/sbin....."
echo "------------------------------------------------------------------------------"
cd /opt/hblink3-docker-install/usr/local/sbin
cd "$DIRDIR/usr/local/sbin"
cp -p menu /usr/local/sbin/hblink-menu
cp -p flush /usr/local/sbin/hblink-flush
cp -p update /usr/local/sbin/hblink-update
@ -170,6 +256,7 @@ echo "--------------------------------------------------------------------------
cp -p start /usr/local/sbin/hblink-start
cp -p restart /usr/local/sbin/hblink-restart
cp -p initial-setup /usr/local/sbin/hblink-initial-setup
cp -p uninstall /usr/local/sbin/hblink-uninstall
if [ -e /usr/local/sbin/hblink-menu ]
then
echo "----------------------------------------------------------------------------------------------"
@ -190,6 +277,11 @@ fi
chmod 755 /usr/local/sbin/hblink-start
chmod 755 /usr/local/sbin/hblink-restart
chmod 755 /usr/local/sbin/hblink-initial-setup
chmod 755 /usr/local/sbin/hblink-uninstall
# Save installer directory path for re-installation
mkdir -p /etc/hblink3
echo "$DIRDIR" > /etc/hblink3/.installer_path
chmod 644 /etc/hblink3/.installer_path
echo "Done."
echo "------------------------------------------------------------------------------"
@ -220,44 +312,150 @@ echo "--------------------------------------------------------------------------
echo "Installing HBMonv2 configuration....."
echo "------------------------------------------------------------------------------"
sleep 2
pip3 install setuptools wheel
pip3 install -r requirements.txt
pip3 install attrs --force
echo Install /opt/HBMonv2/config.py ...
# Helper function to install pip packages in virtual environment
pip_install() {
local args="$@"
echo "Installing Python packages: $args"
if [ -z "$VIRTUAL_ENV" ]; then
echo "ERROR: Virtual environment not activated"
return 1
fi
if pip3 install $args; then
echo "Successfully installed: $args"
return 0
else
echo "ERROR: Failed to install: $args"
return 1
fi
}
echo "Installing Python dependencies..."
cd $HBMONDIR
# Create and use a virtual environment (modern approach for all Debian versions)
echo "Creating Python virtual environment..."
# Create virtual environment
if [ ! -d "$HBMONDIR/venv" ]; then
python3 -m venv "$HBMONDIR/venv" || { echo "ERROR: Failed to create virtual environment"; exit 1; }
echo "Virtual environment created successfully at $HBMONDIR/venv"
else
echo "Virtual environment already exists at $HBMONDIR/venv"
fi
# Activate virtual environment
source "$HBMONDIR/venv/bin/activate" || { echo "ERROR: Failed to activate virtual environment"; exit 1; }
# Verify activation by checking VIRTUAL_ENV is set
if [ -z "$VIRTUAL_ENV" ]; then
echo "ERROR: Virtual environment activation failed - VIRTUAL_ENV not set"
exit 1
fi
echo "Virtual environment activated"
# Upgrade pip in the virtual environment
if ! pip3 install --upgrade pip; then
echo "WARNING: Failed to upgrade pip in virtual environment, continuing with existing version..."
fi
# Install setuptools and wheel first
if ! pip_install setuptools wheel; then
echo "ERROR: Failed to install setuptools and wheel"
echo "Please check your internet connection and Python installation"
exit 1
fi
# Check if requirements.txt exists before trying to install
if [ -f requirements.txt ]; then
if ! pip_install -r requirements.txt; then
echo "ERROR: Failed to install packages from requirements.txt"
echo "This may be due to network issues or missing system dependencies"
exit 1
fi
else
echo "WARNING: requirements.txt not found in $HBMONDIR"
echo "Continuing installation without requirements.txt dependencies..."
fi
# Install attrs with --force flag (note: --force is deprecated, using --force-reinstall)
if ! pip_install attrs --force-reinstall; then
echo "WARNING: Failed to install attrs with --force-reinstall, trying without force..."
if ! pip_install attrs; then
echo "ERROR: Failed to install attrs package"
exit 1
fi
fi
echo Install /opt/HBMonv2/config.py ...
cat << EOF > /opt/HBMonv2/config.py
CONFIG_INC = True # Include HBlink stats
HOMEBREW_INC = True # Display Homebrew Peers status
LASTHEARD_INC = True # Display lastheard table on main page
BRIDGES_INC = False # Display Bridge status and button
EMPTY_MASTERS = False # Display Enable (True) or DISABLE (False) empty masters in status
#
HBLINK_IP = '127.0.0.1' # HBlink's IP Address
HBLINK_PORT = 4321 # HBlink's TCP reporting socket
FREQUENCY = 10 # Frequency to push updates to web clients
CLIENT_TIMEOUT = 0 # Clients are timed out after this many seconds, 0 to disable
###############################################################################
# HBMonv2 Configuration File Example
# Copyright (C) 2013-2018 Cortney T. Buffington, N0MJS n0mjs@me.com
# Copyright (C) 2025 Shane aka, ShaYmez <shane@freestar.network>
###############################################################################
# Generally you don't need to use this but
# if you don't want to show in lastherad received traffic from OBP link put NETWORK ID
# for example: "260210,260211,260212"
OPB_FILTER = ""
# ---- FEATURE TOGGLES --------------------------------------------------------
CONFIG_INC = True # Include HBlink stats
HOMEBREW_INC = True # Display Homebrew Peers status
LASTHEARD_INC = True # Display lastheard table on main page
BRIDGES_INC = False # Display Bridge status and button
EMPTY_MASTERS = False # Enable (True) or Disable (False) empty masters in status
# Files and stuff for loading alias files for mapping numbers to names
PATH = './' # MUST END IN '/'
PEER_FILE = 'peer_ids.json' # Will auto-download
SUBSCRIBER_FILE = 'subscriber_ids.json' # Will auto-download
# ---- CONNECTION SETTINGS ----------------------------------------------------
HBLINK_IP = '127.0.0.1' # HBlink's IP Address
HBLINK_PORT = 4321 # HBlink's TCP reporting socket
FREQUENCY = 10 # Frequency (secs) to push updates to web clients
CLIENT_TIMEOUT = 0 # Timeout clients after N secs (0=disable)
# ---- NETWORK FILTERING ------------------------------------------------------
# To hide in lastheard: provide comma-separated NETWORK IDs
# Example: "260210,260211,260212"
OPB_FILTER = ""
# ---- ALIAS FILES AND PATHS --------------------------------------------------
PATH = './' # Base path (MUST END IN '/')
PEER_FILE = 'peer_ids.json' # Auto-download
SUBSCRIBER_FILE = 'subscriber_ids.json' # Auto-download
TGID_FILE = 'talkgroup_ids.json' # User provided
LOCAL_SUB_FILE = 'local_subscriber_ids.json' # User provided (optional, leave '' if you don't use it)
LOCAL_PEER_FILE = 'local_peer_ids.json' # User provided (optional, leave '' if you don't use it)
LOCAL_TGID_FILE = 'local_talkgroup_ids.json' # User provided (optional, leave '' if you don't use it)
FILE_RELOAD = 14 # Number of days before we reload DMR-MARC database files
LOCAL_SUB_FILE = 'local_subscriber_ids.json' # Optional, user provided ('' if not used)
LOCAL_PEER_FILE = 'local_peer_ids.json' # Optional, user provided ('' if not used)
LOCAL_TGID_FILE = 'local_talkgroup_ids.json' # Optional, user provided ('' if not used)
FILE_RELOAD = 14 # Days before reloading MARC files
# ---- ALIAS DOWNLOAD URLS ----------------------------------------------------
PEER_URL = 'https://radioid.net/static/rptrs.json'
SUBSCRIBER_URL = 'https://radioid.net/static/users.json'
# Settings for log files
LOG_PATH = './log/' # MUST END IN '/'
# ---- LOGGING SETTINGS -------------------------------------------------------
LOG_PATH = './log/' # MUST END IN '/'
LOG_NAME = 'hbmon.log'
###############################################################################
# END OF CONFIGURATION FILE
###############################################################################
EOF
cp utils/hbmon.service /lib/systemd/system/
# Update the service file to use virtual environment (for all Debian versions)
echo "Updating hbmon.service to use virtual environment..."
# Update ExecStart to use venv Python (only if not already using venv)
if ! grep -q "$HBMONDIR/venv/bin/python3" /lib/systemd/system/hbmon.service; then
# Replace common Python interpreter paths with venv path
sed -i "s|ExecStart=/usr/bin/python3|ExecStart=$HBMONDIR/venv/bin/python3|g" /lib/systemd/system/hbmon.service
sed -i "s|ExecStart=python3 |ExecStart=$HBMONDIR/venv/bin/python3 |g" /lib/systemd/system/hbmon.service
# Verify the service file was updated correctly
if grep -q "ExecStart=$HBMONDIR/venv/bin/python3" /lib/systemd/system/hbmon.service; then
echo "Service file updated to use virtual environment"
else
echo "WARNING: Service file update may not have completed correctly"
echo "Please manually verify /lib/systemd/system/hbmon.service uses $HBMONDIR/venv/bin/python3"
fi
else
echo "Service file already configured to use virtual environment"
fi
cp utils/lastheard /etc/cron.daily/
chmod +x /etc/cron.daily/lastheard
echo ""
@ -740,7 +938,7 @@ echo "Starting HBlink....."
cd $HBDIR
docker-compose up -d
sleep 5
figlet "HBlink Master"
figlet "HBlink3"
sleep 3
docker container logs hblink
echo "Done."
@ -748,7 +946,7 @@ sleep 2
echo "Starting HBmon....."
systemctl enable hbmon
systemctl start hbmon
figlet "HBMonV2"
figlet "HBMonv2"
echo ""
echo ""
clear
@ -759,6 +957,7 @@ figlet "WhipTAIL'"
hblink-initial-setup
sleep 1
echo "Done."
sleep 2
echo ""
echo ""
echo "*************************************************************************"
@ -774,7 +973,7 @@ echo " You will need to edit your config and then run the following command "
echo ""
echo " Type 'hblink-menu' for main menu "
echo " Use the menu to edit your server / config "
echo " Refur to the official HBlink Repo for more documentation "
echo " Refer to the official HBlink Repo for more documentation "
echo " https://github.com/HBLink-org/hblink3 "
echo ""
echo " Check out the docker installer of HBlink3 here "
@ -782,15 +981,32 @@ echo " https://github.com/ShaYmez/hblink3-docker-install "
echo ""
echo " Your IP address is $LOCAL_IP "
echo ""
echo " Your running on $ARC with Debian $VERSION "
if [ "$OS" = "ubuntu" ]; then
echo " You're running on $ARC with Ubuntu $OS_VERSION LTS "
else
echo " You're running on $ARC with Debian $VERSION "
fi
echo ""
echo "------------------------------------------------------------------------------"
echo " Installed Versions "
echo "------------------------------------------------------------------------------"
echo "Docker version:"
docker --version
echo ""
echo "Docker Compose version:"
docker compose version
echo ""
echo "Note: This installation uses Docker Compose v2 (docker compose command)"
echo " The legacy docker-compose v1 is not supported"
echo "------------------------------------------------------------------------------"
echo ""
echo " Thanks for using this script. "
echo " Copyright © 2023 Shane Daley - M0VUB "
echo " More information can be found @ https://freestar.network/development "
echo " Copyright © 2025 Shane Daley - M0VUB "
echo " More information can be found @ https://github.com/shaymez/ "
echo ""
echo "*************************************************************************"
echo ""
echo ""
sleep 1
echo "Please reboot your machine! Thanks for using the HBlink Docker Installer!"
echo "Thanks for using the HBlink Docker Installer!"
exit

View File

@ -1,11 +1,12 @@
#!/bin/bash
# HBLINK3 DOCKER CONTROL SCRIPTS V1.9
# HBLINK3 DOCKER CONTROL SCRIPTS V2.0
# Version 13122025
# This script written by Shane Daley M0VUB. The script gracefully shuts down services while services are cleaned and logs are truncated.
# We can also add items in this script for future use like updates or further log trims.
# Add to the cron tab for auto execution
# Copyright (C) 2020 Shane P, Daley M0VUB <support@gb7nr.co.uk>
# Copyright (C) 2020-2025 Shane P. Daley M0VUB <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -87,7 +88,7 @@ echo "Flushing network tracking table....."
conntrack -F
sleep 1
echo "Starting Dasdhboard....."
echo "Starting Dashboard....."
systemctl restart hbmon
figlet "HBMonv2"
echo "Done."

View File

@ -1,11 +1,12 @@
#!/bin/bash
# HBLINK3 DOCKER CONTROL SCRIPTS V1.9
# HBLINK3 DOCKER CONTROL SCRIPTS V2.0
# Version 13122025
# This script written by Shane Daley M0VUB. The script gracefully shuts down services while services are cleaned and logs are truncated.
# We can also add items in this script for future use like updates or further log trims.
# Add to the cron tab for auto execution
# Copyright (C) 2020 Shane P, Daley M0VUB <support@gb7nr.co.uk>
# Copyright (C) 2020-2025 Shane P. Daley M0VUB <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -19,7 +20,7 @@
# Initial Setup MENU system.....
while : ; do
menuopt=$(whiptail --title "INTIAL SETUP - HBLINK3 DOCKER 1.9PL" --menu "Select option by using the up and down arrows on your keyboard. Once selected please press enter:" 23 56 13 \
menuopt=$(whiptail --title "INITIAL SETUP - HBLINK3 DOCKER V2.0" --menu "Select option by using the up and down arrows on your keyboard. Once selected please press enter:" 23 56 13 \
1 " Re-Install " \
2 " Bash Shell (Type 'exit' to return to menu) " \
3 " Edit HBlink Config " \
@ -38,7 +39,15 @@ fi
# Action
case $menuopt in
1)
sudo /opt/hblink3-docker-install/hblink3-docker-install.sh ;;
# Read installer path from saved location, fallback to default if not found
INSTALLER_PATH=$(cat /etc/hblink3/.installer_path 2>/dev/null || echo "/opt/hblink3-docker-install")
if [ -f "$INSTALLER_PATH/hblink3-docker-install.sh" ]; then
sudo "$INSTALLER_PATH/hblink3-docker-install.sh"
else
echo "Error: Installer not found at $INSTALLER_PATH"
echo "Please ensure the installer directory still exists."
read -p "Press Enter to continue..."
fi ;;
2)
sudo /usr/bin/bash ;;
3)

View File

@ -1,11 +1,12 @@
#!/bin/bash
# HBLINK3 DOCKER CONTROL SCRIPTS V1.9
# HBLINK3 DOCKER CONTROL SCRIPTS V2.0
# Version 13122025
# This script written by Shane Daley M0VUB. The script gracefully shuts down services while services are cleaned and logs are truncated.
# We can also add items in this script for future use like updates or further log trims.
# Add to the cron tab for auto execution
# Copyright (C) 2020 Shane P, Daley M0VUB <support@gb7nr.co.uk>
# Copyright (C) 2020-2025 Shane P. Daley M0VUB <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -19,7 +20,7 @@
# Main MENU system.....
while : ; do
menuopt=$(whiptail --title "HBlink3 Control Version 1.9PL" --menu "Select option by using the up and down arrows on your keyboard. Once selected please press enter:" 23 56 13 \
menuopt=$(whiptail --title "HBlink3 Control Version 2.0" --menu "Select option by using the up and down arrows on your keyboard. Once selected please press enter:" 24 56 14 \
1 " Stop HBlink " \
2 " Start HBlink " \
3 " Restart HBlink " \
@ -30,8 +31,9 @@ menuopt=$(whiptail --title "HBlink3 Control Version 1.9PL" --menu "Select option
8 " Edit Dashboard Config " \
9 " Full Upgrade OBPMaster " \
10 " System Update / apt update " \
11 " Reboot Entire Server " \
12 " Shutdown Entire Server " 3>&1 1>&2 2>&3)
11 " Uninstall HBlink3 " \
12 " Reboot Entire Server " \
13 " Shutdown Entire Server " 3>&1 1>&2 2>&3)
exitstatus=$?
# Back-end HBlink3 menu
if [ $exitstatus = 0 ]; then
@ -62,8 +64,10 @@ sudo /usr/local/sbin/hblink-upgrade ;;
10)
sudo apt-get update -y && sudo apt-get upgrade ;;
11)
sudo reboot ;;
sudo /usr/local/sbin/hblink-uninstall ;;
12)
sudo reboot ;;
13)
sudo shutdown now ;
esac
done

View File

@ -1,11 +1,12 @@
#!/bin/bash
# HBLINK3 DOCKER CONTROL SCRIPTS V1.9
# HBLINK3 DOCKER CONTROL SCRIPTS V2.0
# Version 13122025
# This script written by Shane Daley M0VUB. The script gracefully shuts down services while services are cleaned and logs are truncated.
# We can also add items in this script for future use like updates or further log trims.
# Add to the cron tab for auto execution
# Copyright (C) 2020 Shane P, Daley M0VUB <support@gb7nr.co.uk>
# Copyright (C) 2020-2025 Shane P. Daley M0VUB <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

View File

@ -1,11 +1,12 @@
#!/bin/bash
# HBLINK3 DOCKER CONTROL SCRIPTS V1.9
# HBLINK3 DOCKER CONTROL SCRIPTS V2.0
# Version 13122025
# This script written by Shane Daley M0VUB. The script gracefully shuts down services while services are cleaned and logs are truncated.
# We can also add items in this script for future use like updates or further log trims.
# Add to the cron tab for auto execution
# Copyright (C) 2020 Shane P, Daley M0VUB <support@gb7nr.co.uk>
# Copyright (C) 2020-2025 Shane P. Daley M0VUB <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

View File

@ -1,11 +1,12 @@
#!/bin/bash
# HBLINK3 DOCKER CONTROL SCRIPTS V1.9
# HBLINK3 DOCKER CONTROL SCRIPTS V2.0
# Version 13122025
# This script written by Shane Daley M0VUB. The script gracefully shuts down services while services are cleaned and logs are truncated.
# We can also add items in this script for future use like updates or further log trims.
# Add to the cron tab for auto execution
# Copyright (C) 2020 Shane P, Daley M0VUB <support@gb7nr.co.uk>
# Copyright (C) 2020-2025 Shane P. Daley M0VUB <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

248
usr/local/sbin/uninstall Executable file
View File

@ -0,0 +1,248 @@
#!/bin/bash
# HBLINK3 DOCKER UNINSTALL SCRIPT V2.0
# Version 13122025
# This script written by Shane Daley M0VUB.
# This script gracefully removes HBlink3 installation and all related components.
# Copyright (C) 2020-2025 Shane P. Daley M0VUB <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# Root check
if [ "$EUID" -ne 0 ];
then
echo ""
echo "You Must be root to run this script!!"
exit 1
fi
clear
echo "*************************************************************************"
echo ""
echo " HBlink3 Docker Installation Uninstaller "
echo ""
echo "*************************************************************************"
echo ""
echo "WARNING: This will remove ALL HBlink3 components including:"
echo " - HBlink3 Docker containers and images"
echo " - HBMonv2 Dashboard"
echo " - Configuration files (/etc/hblink3)"
echo " - Log files (/var/log/hblink)"
echo " - Control scripts (/usr/local/sbin/hblink-*)"
echo " - Systemd services"
echo " - Cron jobs"
echo ""
echo "NOTE: Docker, Apache2, PHP, and system packages will NOT be removed."
echo ""
read -p "Are you sure you want to continue? (yes/no): " confirm
if [ "$confirm" != "yes" ]; then
echo "Uninstall cancelled."
exit 0
fi
echo ""
echo "Starting uninstallation process..."
echo ""
# Stop services
echo "------------------------------------------------------------------------------"
echo "Stopping HBlink3 services..."
echo "------------------------------------------------------------------------------"
if [ -d "/etc/hblink3" ]; then
cd /etc/hblink3
if [ -f "docker-compose.yml" ]; then
echo "Stopping HBlink3 Docker container..."
docker-compose down 2>/dev/null || true
fi
fi
if systemctl is-active --quiet hbmon; then
echo "Stopping HBMonv2 service..."
systemctl stop hbmon
fi
if systemctl is-enabled --quiet hbmon 2>/dev/null; then
echo "Disabling HBMonv2 service..."
systemctl disable hbmon
fi
# Remove Docker containers and images
echo ""
echo "------------------------------------------------------------------------------"
echo "Removing HBlink3 Docker containers and images..."
echo "------------------------------------------------------------------------------"
if [ -x "$(command -v docker)" ]; then
# Remove hblink container if it exists
if docker ps -a | grep -q hblink; then
echo "Removing hblink container..."
docker rm -f hblink 2>/dev/null || true
fi
# Remove hblink images
hblink_images=$(docker images | grep -i hblink | awk '{print $3}')
if [ ! -z "$hblink_images" ]; then
echo "Removing HBlink Docker images..."
docker rmi -f $hblink_images 2>/dev/null || true
fi
fi
# Remove systemd service files
echo ""
echo "------------------------------------------------------------------------------"
echo "Removing systemd service files..."
echo "------------------------------------------------------------------------------"
if [ -f "/lib/systemd/system/hbmon.service" ]; then
echo "Removing hbmon.service..."
rm -f /lib/systemd/system/hbmon.service
systemctl daemon-reload
fi
# Remove cron jobs
echo ""
echo "------------------------------------------------------------------------------"
echo "Removing cron jobs..."
echo "------------------------------------------------------------------------------"
if [ -f "/etc/cron.daily/lastheard" ]; then
echo "Removing lastheard cron job..."
rm -f /etc/cron.daily/lastheard
fi
# Remove control scripts
echo ""
echo "------------------------------------------------------------------------------"
echo "Removing control scripts..."
echo "------------------------------------------------------------------------------"
echo "Removing HBlink control scripts from /usr/local/sbin..."
rm -f /usr/local/sbin/hblink-menu
rm -f /usr/local/sbin/hblink-flush
rm -f /usr/local/sbin/hblink-update
rm -f /usr/local/sbin/hblink-upgrade
rm -f /usr/local/sbin/hblink-stop
rm -f /usr/local/sbin/hblink-start
rm -f /usr/local/sbin/hblink-restart
rm -f /usr/local/sbin/hblink-initial-setup
rm -f /usr/local/sbin/hblink-uninstall
# Backup configurations before removal
echo ""
echo "------------------------------------------------------------------------------"
echo "Creating backup of configuration files..."
echo "------------------------------------------------------------------------------"
backup_dir="/root/hblink3-backup-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$backup_dir"
if [ -d "/etc/hblink3" ]; then
echo "Backing up /etc/hblink3 to $backup_dir..."
cp -r /etc/hblink3 "$backup_dir/" 2>/dev/null || true
fi
if [ -d "/opt/HBMonv2" ]; then
echo "Backing up /opt/HBMonv2/config.py to $backup_dir..."
mkdir -p "$backup_dir/HBMonv2"
cp /opt/HBMonv2/config.py "$backup_dir/HBMonv2/" 2>/dev/null || true
fi
# Remove directories
echo ""
echo "------------------------------------------------------------------------------"
echo "Removing installation directories..."
echo "------------------------------------------------------------------------------"
if [ -d "/etc/hblink3" ]; then
echo "Removing /etc/hblink3..."
rm -rf /etc/hblink3
fi
if [ -d "/opt/HBMonv2" ]; then
echo "Removing /opt/HBMonv2..."
rm -rf /opt/HBMonv2
fi
if [ -d "/var/log/hblink" ]; then
echo "Removing /var/log/hblink..."
rm -rf /var/log/hblink
fi
if [ -d "/opt/tmp" ]; then
echo "Removing /opt/tmp..."
rm -rf /opt/tmp
fi
# Restore default Apache index
echo ""
echo "------------------------------------------------------------------------------"
echo "Restoring default Apache index page..."
echo "------------------------------------------------------------------------------"
if [ -f "/var/www/html/index_APACHE.html" ]; then
echo "Restoring original index.html..."
cd /var/www/html
rm -f index.html
mv index_APACHE.html index.html 2>/dev/null || true
fi
# Remove HBMonv2 dashboard files
if [ -f "/var/www/html/info.php" ]; then
echo "Removing HBMonv2 dashboard files from /var/www/html..."
# Remove only HBMonv2 specific files, not entire www directory
cd /var/www/html
rm -f info.php lastheard.php talkgroups.php *.js 2>/dev/null || true
rm -rf css/ fonts/ img/ include/ scripts/ 2>/dev/null || true
fi
# Final cleanup
echo ""
echo "------------------------------------------------------------------------------"
echo "Final cleanup..."
echo "------------------------------------------------------------------------------"
# Restart Apache to apply changes
if systemctl is-active --quiet apache2; then
echo "Restarting Apache2..."
systemctl restart apache2
fi
echo ""
echo "*************************************************************************"
echo ""
echo " HBlink3 Uninstallation Complete! "
echo ""
echo " All HBlink3 components have been removed from your system. "
echo ""
echo " Configuration backups saved to: $backup_dir"
echo ""
echo " The following were NOT removed (if you want to remove them manually): "
echo " - Docker (docker-ce, docker-ce-cli, containerd.io) "
echo " - Docker Compose "
echo " - Apache2 "
echo " - PHP and PHP modules "
echo " - Python3 and pip3 "
echo " - System packages (git, curl, wget, etc.) "
echo ""
echo " To remove Docker completely, run: "
echo " apt-get remove docker-ce docker-ce-cli containerd.io docker-compose "
echo " rm -rf /var/lib/docker "
echo ""
echo "*************************************************************************"
echo ""
echo "Thank you for using HBlink3 Docker Installer!"
echo ""
exit 0

View File

@ -1,11 +1,12 @@
#!/bin/bash
# HBLINK3 DOCKER CONTROL SCRIPTS V1.9
# HBLINK3 DOCKER CONTROL SCRIPTS V2.0
# Version 1.5.0 (13122025)
# This script written by Shane Daley M0VUB. The script gracefully shuts down services while services are cleaned and logs are truncated.
# We can also add items in this script for future use like updates or further log trims.
# Add to the cron tab for auto execution
# Copyright (C) 2020 Shane P, Daley M0VUB <support@gb7nr.co.uk>
# Copyright (C) 2020-2025 Shane P. Daley M0VUB <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -19,7 +20,7 @@
# Update containers / service clean/truncate/ and restart of services..
LOCAL_IP=$(ip a | grep inet | grep "ens18\|en" | awk '{print $2}' | tr '/' ' ' | awk '{print $1}')
LOCAL_IP=$(ip a | grep inet | grep "eth0\|en" | awk '{print $2}' | tr '/' ' ' | awk '{print $1}')
ARC=$(lscpu | grep Arch | awk '{print $2}')
VERSION=$(sed 's/\..*//' /etc/debian_version)
@ -57,7 +58,7 @@ echo " You will need to edit your config and then run the following command "
echo ""
echo " Type 'hblink-menu' for main menu "
echo " Use the menu to edit your server / config "
echo " Refur to the official HBlink Repo for more documentation "
echo " Refer to the official HBlink Repo for more documentation "
echo " https://github.com/HBLink-org/hblink3 "
echo ""
echo " Check out the docker installer of HBlink3 here "
@ -68,7 +69,7 @@ echo ""
echo " Your running on $ARC with Debian $VERSION "
echo ""
echo " Thanks for using this script. "
echo " Copyright © 2023 Shane Daley - M0VUB "
echo " Copyright © 2025 Shane Daley - M0VUB "
echo " More information can be found @ https://freestar.network/development "
echo ""
echo "*************************************************************************"

View File

@ -1,11 +1,12 @@
#!/bin/bash
# HBLINK3 DOCKER CONTROL SCRIPTS V1.9
# HBLINK3 DOCKER CONTROL SCRIPTS V2.0
# Version 1.5.0 (13122025)
# This script written by Shane Daley M0VUB. The script gracefully shuts down services while services are cleaned and logs are truncated.
# We can also add items in this script for future use like updates or further log trims.
# Add to the cron tab for auto execution
# Copyright (C) 2020 Shane P, Daley M0VUB <support@gb7nr.co.uk>
# Copyright (C) 2020-2025 Shane P. Daley M0VUB <shane@freestar.network>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by