mirror of
https://github.com/ShaYmez/hblink3-docker-install.git
synced 2025-12-22 21:49:50 +13:00
Compare commits
76 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46c66c3913 | ||
|
|
198b1d1ad5 | ||
|
|
d99f64b52e | ||
|
|
9884186a99 | ||
|
|
2c3f988c6e | ||
|
|
484a12a8a4 | ||
|
|
b9496f3db8 | ||
|
|
a70c111ea2 | ||
|
|
6bb1c40f52 | ||
|
|
ac22b3dd4a | ||
|
|
9ecafe7959 | ||
|
|
73cceaf444 | ||
|
|
0246fe7c27 | ||
|
|
4a7d71c339 | ||
|
|
e277e1da53 | ||
|
|
56237a8557 | ||
|
|
707813d5f9 | ||
|
|
61cb04b17d | ||
|
|
626e500ef0 | ||
|
|
4fa32f6fc4 | ||
|
|
2860bda260 | ||
|
|
36c5e38e35 | ||
|
|
3a7c783d31 | ||
|
|
e0e6bc97e1 | ||
|
|
f7e9ef474f | ||
|
|
b685e1df1a | ||
|
|
4121f64576 | ||
|
|
a2a947a532 | ||
|
|
3a2cb08eff | ||
|
|
01c18b30fc | ||
|
|
41540e3d9e | ||
|
|
1424e5e8f0 | ||
|
|
7235442b54 | ||
|
|
1cca6057c4 | ||
|
|
da535e0f5c | ||
|
|
5db86268fb | ||
|
|
534fe8c480 | ||
|
|
5a9b990d24 | ||
|
|
5ac9ee2a09 | ||
|
|
593dec235c | ||
|
|
12a11f72c7 | ||
|
|
204001b1b4 | ||
|
|
8f4747caa2 | ||
|
|
47bb8f1d47 | ||
|
|
ae8308c7df | ||
|
|
d4e2bb5962 | ||
|
|
f404d6f413 | ||
|
|
d7f096ef32 | ||
|
|
804be3c33e | ||
|
|
fcc314a46d | ||
|
|
89ade8cf14 | ||
|
|
379ac8ad1a | ||
|
|
30f0f02132 | ||
|
|
b458ffc329 | ||
|
|
541a9bf45e | ||
|
|
4b0f43a902 | ||
|
|
8308b6254e | ||
|
|
9376c1d610 | ||
|
|
e928d910a4 | ||
|
|
c0e3d4e723 | ||
|
|
cc4a9cd3fe | ||
|
|
d2676f1219 | ||
|
|
cabdab8760 | ||
|
|
25e0a15419 | ||
|
|
960ac04d69 | ||
|
|
98bf52cbcc | ||
|
|
cf65a5e483 | ||
|
|
b46800d4d0 | ||
|
|
1cc3a544cf | ||
|
|
6745780e4c | ||
|
|
1e9149dcc6 | ||
|
|
f33a5a8f1c | ||
|
|
caacb071e0 | ||
|
|
9093f69f1e | ||
|
|
884876375a | ||
|
|
68696db0ac |
43
.gitignore
vendored
Normal file
43
.gitignore
vendored
Normal 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
175
CHANGELOG.md
Normal 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)*
|
||||
91
README.md
91
README.md
@ -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.
|
||||
|
||||

|
||||
|
||||
@ -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!
|
||||
|
||||

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

|
||||
|
||||
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,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
|
||||
|
||||
@ -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."
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
248
usr/local/sbin/uninstall
Executable 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
|
||||
@ -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 "*************************************************************************"
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user