This commit is contained in:
jokob-sk
2025-09-14 10:51:26 +10:00
10 changed files with 172 additions and 102 deletions

View File

@@ -7,49 +7,69 @@ To download and install NetAlertX on the hardware/server directly use the `curl`
> >
> 🙏 Looking for maintainers for this installation method 🙂 Current community volunteers: > 🙏 Looking for maintainers for this installation method 🙂 Current community volunteers:
> - [slammingprogramming](https://github.com/slammingprogramming) > - [slammingprogramming](https://github.com/slammingprogramming)
> - [ingoratsdorf](https://github.com/ingoratsdorf)
> >
> There is no guarantee that the install script or any other script will gracefully handle other installed software. > There is no guarantee that the install script or any other script will gracefully handle other installed software.
> Data loss is a possibility, **it is recommended to install NetAlertX using the supplied Docker image**. > Data loss is a possibility, **it is recommended to install NetAlertX using the supplied Docker image**.
A warning to the installation method below: Piping to bash is [controversial](https://pi-hole.net/2016/07/25/curling-and-piping-to-bash) and may > [!WARNING]
> A warning to the installation method below: Piping to bash is [controversial](https://pi-hole.net/2016/07/25/curling-and-piping-to-bash) and may
be dangerous, as you cannot see the code that's about to be executed on your system. be dangerous, as you cannot see the code that's about to be executed on your system.
Alternatively you can download the installation script `install/install.debian.sh` from the repository and check the code yourself (beware other scripts are If you trust this repo, you can download the install script via one of the methods (curl/wget) below and it will fo its best to install NetAlertX on your system.
downloaded too - only from this repo).
Alternatively you can download the installation script from the repository and check the code yourself.
NetAlertX will be installed in `/app` and run on port number `20211`. NetAlertX will be installed in `/app` and run on port number `20211`.
Some facts about what and where something will be changed/installed by the HW install setup (may not contain everything!): Some facts about what and where something will be changed/installed by the HW install setup (may not contain everything!):
- dependencies will be installed from the respective system repos
- required python modules will be installed
- `/app` directory will be deleted and newly created - `/app` directory will be deleted and newly created
- `/app` will contain the whole repository (downloaded by `install/install.debian.sh`) - `/app` will contain the whole repository (downloaded by the install script)
- The default NGINX site `/etc/nginx/sites-enabled/default` will be disabled (sym-link deleted or backed up to `sites-available`) - The default NGINX site `/etc/nginx/sites-enabled/default` will be disabled (sym-link deleted or backed up to `sites-available`)
- `/var/www/html/netalertx` directory will be deleted and newly created - `/var/www/html/netalertx` directory will be deleted and newly created
- `/etc/nginx/conf.d/netalertx.conf` will be sym-linked to `/app/install/netalertx.debian.conf` - `/etc/nginx/conf.d/netalertx.conf` will be sym-linked to the appropriate installer location (depending on your system installer script)
- Some files (IEEE device vendors info, ...) will be created in the directory where the installation script is executed - Some files (IEEE device vendors info, ...) will be created in the directory where the installation script is executed
## Limitations ## Limitations
- No system service is provided. NetAlertX must be started using `/app/install/start.debian.sh`. - No system service is provided. NetAlertX must be started using `/app/install/<system>/start.<system>.sh`.
- No checks for other running software is done. - No checks for other running software is done.
- Only tested to work on Debian Bookworm (Debian 12). - Only tested to work on the system listed in the install directory.
- **EXPERIMENTAL** and not recommended way to install NetAlertX. - **EXPERIMENTAL** and not recommended way to install NetAlertX.
## 📥 Installation via CURL
> [!TIP] > [!TIP]
> If the below fails try grabbing and installing one of the [previous releases](https://github.com/jokob-sk/NetAlertX/releases) and run the installation from the zip package. > If the below fails try grabbing and installing one of the [previous releases](https://github.com/jokob-sk/NetAlertX/releases) and run the installation from the zip package.
```bash These commands will download the `install.debian12.sh` script from the GitHub repository, make it executable with `chmod`, and then run it using `./install.debian12.sh`.
curl -o install.debian.sh https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/install/install.debian.sh && sudo chmod +x install.debian.sh && sudo ./install.debian.sh
```
## 📥 Installation via WGET
```bash
wget https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/install/install.debian.sh -O install.debian.sh && sudo chmod +x install.debian.sh && sudo ./install.debian.sh
```
These commands will download the `install.debian.sh` script from the GitHub repository, make it executable with `chmod`, and then run it using `./install.debian.sh`.
Make sure you have the necessary permissions to execute the script. Make sure you have the necessary permissions to execute the script.
## 📥 Debian 12 (Bookworm)
### Installation via curl
```bash
curl -o install.debian12.sh https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/install/debian12/install.debian12.sh && sudo chmod +x install.debian12.sh && sudo ./install.debian12.sh
```
### Installation via wget
```bash
wget https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/install/debian12/install.debian12.sh -O install.debian12.sh && sudo chmod +x install.debian12.sh && sudo ./install.debian12.sh
```
## 📥 Ubuntu 24 (Noble Numbat)
### Installation via curl
```bash
curl -o install.ubuntu24.sh https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/install/ubuntu24/install.ubuntu24.sh && sudo chmod +x install.ubuntu24.sh && sudo ./install.ubuntu24.sh
```
### Installation via wget
```bash
wget https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/install/ubuntu24/install.ubuntu24.sh -O install.ubuntu24.sh && sudo chmod +x install.ubuntu24.sh && sudo ./install.ubuntu24.sh
```

View File

@@ -2,9 +2,13 @@
> Submitted by amazing [cvc90](https://github.com/cvc90) 🙏 > Submitted by amazing [cvc90](https://github.com/cvc90) 🙏
> [!NOTE] > [!NOTE]
> There are 2 NGINX files for NetAlertX, one for the bare-metal Debian install (`netalertx.debian.conf`), and one for the docker container (`netalertx.template.conf`). Both can be found in the [install](https://github.com/jokob-sk/NetAlertX/tree/main/install) folder. Map, or use, the one appropriate for your setup. > There are various NGINX config files for NetAlertX, some for the bare-metal install, currently Debian 12 and Ubuntu 24 (`netalertx.conf`), and one for the docker container (`netalertx.template.conf`).
>
> The first one you can find in the respective bare metal installer folder `/app/install/\<system\>/netalertx.conf`.
> The docker one can be found in the [install](https://github.com/jokob-sk/NetAlertX/tree/main/install) folder. Map, or use, the one appropriate for your setup.
<br/>
## NGINX HTTP Configuration (Direct Path) ## NGINX HTTP Configuration (Direct Path)
@@ -26,9 +30,11 @@
`nginx -s reload` or `systemctl restart nginx` `nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at http://netalertx/ 4. Check your config with `nginx -t`. If there are any issues, it will tell you.
<br> 5. Once NGINX restarts, you should be able to access the proxy website at http://netalertx/
<br/>
## NGINX HTTP Configuration (Sub Path) ## NGINX HTTP Configuration (Sub Path)
@@ -50,13 +56,15 @@
} }
``` ```
3. Activate the new website by running the following command: 3. Check your config with `nginx -t`. If there are any issues, it will tell you.
4. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx` `nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at http://netalertx/netalertx/ 5. Once NGINX restarts, you should be able to access the proxy website at http://netalertx/netalertx/
<br> <br/>
## NGINX HTTP Configuration (Sub Path) with module ngx_http_sub_module ## NGINX HTTP Configuration (Sub Path) with module ngx_http_sub_module
@@ -86,13 +94,15 @@
} }
``` ```
3. Activate the new website by running the following command: 3. Check your config with `nginx -t`. If there are any issues, it will tell you.
4. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx` `nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at http://netalertx/netalertx/ 5. Once NGINX restarts, you should be able to access the proxy website at http://netalertx/netalertx/
<br> <br/>
**NGINX HTTPS Configuration (Direct Path)** **NGINX HTTPS Configuration (Direct Path)**
@@ -113,13 +123,15 @@
} }
``` ```
3. Activate the new website by running the following command: 3. Check your config with `nginx -t`. If there are any issues, it will tell you.
4. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx` `nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at https://netalertx/ 5. Once NGINX restarts, you should be able to access the proxy website at https://netalertx/
<br> <br/>
**NGINX HTTPS Configuration (Sub Path)** **NGINX HTTPS Configuration (Sub Path)**
@@ -143,13 +155,15 @@
} }
``` ```
3. Activate the new website by running the following command: 3. Check your config with `nginx -t`. If there are any issues, it will tell you.
4. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx` `nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at https://netalertx/netalertx/ 5. Once NGINX restarts, you should be able to access the proxy website at https://netalertx/netalertx/
<br> <br/>
## NGINX HTTPS Configuration (Sub Path) with module ngx_http_sub_module ## NGINX HTTPS Configuration (Sub Path) with module ngx_http_sub_module
@@ -181,13 +195,15 @@
} }
``` ```
3. Activate the new website by running the following command: 3. Check your config with `nginx -t`. If there are any issues, it will tell you.
4. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx` `nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at https://netalertx/netalertx/ 5. Once NGINX restarts, you should be able to access the proxy website at https://netalertx/netalertx/
<br> <br/>
## Apache HTTP Configuration (Direct Path) ## Apache HTTP Configuration (Direct Path)
@@ -204,13 +220,15 @@
</VirtualHost> </VirtualHost>
``` ```
3. Activate the new website by running the following command: 3. Check your config with `httpd -t` (or `apache2ctl -t` on Debian/Ubuntu). If there are any issues, it will tell you.
4. Activate the new website by running the following command:
`a2ensite netalertx` or `service apache2 reload` `a2ensite netalertx` or `service apache2 reload`
4. Once Apache restarts, you should be able to access the proxy website at http://netalertx/ 5. Once Apache restarts, you should be able to access the proxy website at http://netalertx/
<br> <br/>
## Apache HTTP Configuration (Sub Path) ## Apache HTTP Configuration (Sub Path)
@@ -229,13 +247,15 @@
</VirtualHost> </VirtualHost>
``` ```
3. Activate the new website by running the following command: 3. Check your config with `httpd -t` (or `apache2ctl -t` on Debian/Ubuntu). If there are any issues, it will tell you.
4. Activate the new website by running the following command:
`a2ensite netalertx` or `service apache2 reload` `a2ensite netalertx` or `service apache2 reload`
4. Once Apache restarts, you should be able to access the proxy website at http://netalertx/ 5. Once Apache restarts, you should be able to access the proxy website at http://netalertx/
<br> <br/>
## Apache HTTPS Configuration (Direct Path) ## Apache HTTPS Configuration (Direct Path)
@@ -255,13 +275,15 @@
</VirtualHost> </VirtualHost>
``` ```
3. Activate the new website by running the following command: 3. Check your config with `httpd -t` (or `apache2ctl -t` on Debian/Ubuntu). If there are any issues, it will tell you.
4. Activate the new website by running the following command:
`a2ensite netalertx` or `service apache2 reload` `a2ensite netalertx` or `service apache2 reload`
4. Once Apache restarts, you should be able to access the proxy website at https://netalertx/ 5. Once Apache restarts, you should be able to access the proxy website at https://netalertx/
<br> <br/>
## Apache HTTPS Configuration (Sub Path) ## Apache HTTPS Configuration (Sub Path)
@@ -283,11 +305,15 @@
</VirtualHost> </VirtualHost>
``` ```
3. Activate the new website by running the following command: 3. Check your config with `httpd -t` (or `apache2ctl -t` on Debian/Ubuntu). If there are any issues, it will tell you.
4. Activate the new website by running the following command:
`a2ensite netalertx` or `service apache2 reload` `a2ensite netalertx` or `service apache2 reload`
4. Once Apache restarts, you should be able to access the proxy website at https://netalertx/netalertx/ 5. Once Apache restarts, you should be able to access the proxy website at https://netalertx/netalertx/
<br/>
## Reverse proxy example by using LinuxServer's SWAG container. ## Reverse proxy example by using LinuxServer's SWAG container.
@@ -349,12 +375,13 @@ location ^~ /netalertx/ {
} }
``` ```
<br/>
## Traefik ## Traefik
> Submitted by [Isegrimm](https://github.com/Isegrimm) 🙏 (based on this [discussion](https://github.com/jokob-sk/NetAlertX/discussions/449#discussioncomment-7281442)) > Submitted by [Isegrimm](https://github.com/Isegrimm) 🙏 (based on this [discussion](https://github.com/jokob-sk/NetAlertX/discussions/449#discussioncomment-7281442))
Asuming the user already has a working Traefik setup, this is what's needed to make NetAlertX work at a URL like www.domain.com/netalertx/. Assuming the user already has a working Traefik setup, this is what's needed to make NetAlertX work at a URL like www.domain.com/netalertx/.
Note: Everything in these configs assumes '**www.domain.com**' as your domainname and '**section31**' as an arbitrary name for your certificate setup. You will have to substitute these with your own. Note: Everything in these configs assumes '**www.domain.com**' as your domainname and '**section31**' as an arbitrary name for your certificate setup. You will have to substitute these with your own.
@@ -480,4 +507,3 @@ docker run -d --rm --network=host \
ghcr.io/jokob-sk/netalertx:latest ghcr.io/jokob-sk/netalertx:latest
``` ```

View File

@@ -198,7 +198,7 @@
<?= lang("DevDetail_Nmap_buttonSkipDiscovery_text") ?> <?= lang("DevDetail_Nmap_buttonSkipDiscovery_text") ?>
</li> </li>
<li> <li>
<a onclick="setCache('activeMaintenanceTab', 'tab_Logging_id')" href="/maintenance.php#tab_Logging"> <a onclick="setCache('activeMaintenanceTab', 'tab_Logging_id')" href="maintenance.php#tab_Logging">
<?= lang("DevDetail_Nmap_resultsLink") ?> <?= lang("DevDetail_Nmap_resultsLink") ?>
</a> </a>
</li> </li>

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# 🛑 Important: This is only used for the bare-metal install 🛑 # 🛑 Important: This is only used for the bare-metal install 🛑
# Update /install/start.debian.sh in most cases is preferred # Update /install/start.debian12.sh in most cases is preferred
echo "---------------------------------------------------------" echo "---------------------------------------------------------"
echo "[INSTALL] Run install.debian.sh" echo "[INSTALL] Run install.debian12.sh"
echo "---------------------------------------------------------" echo "---------------------------------------------------------"
# Set environment variables # Set environment variables
@@ -35,4 +35,5 @@ if [ ! -f $INSTALL_DIR/front/buildtimestamp.txt ]; then
fi fi
# Start NetAlertX # Start NetAlertX
"$INSTALL_DIR/install/start.debian.sh" chmod +x "$INSTALL_DIR/install/debian12/start.debian12.sh"
"$INSTALL_DIR/install/debian12/start.debian12.sh"

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
echo "---------------------------------------------------------" echo "---------------------------------------------------------"
echo "[INSTALL] Run install_dependencies.debian.sh" echo "[INSTALL] Run install_dependencies.debian12.sh"
echo "---------------------------------------------------------" echo "---------------------------------------------------------"
# ❗ IMPORTANT - if you modify this file modify the root Dockerfile as well ❗ # ❗ IMPORTANT - if you modify this file modify the root Dockerfile as well ❗
@@ -23,7 +23,7 @@ sudo apt-get install nginx nginx-core mtr php-fpm php8.2-fpm php-cli php8.2 php8
sudo phpenmod -v 8.2 sqlite3 sudo phpenmod -v 8.2 sqlite3
# setup virtual python environment so we can use pip3 to install packages # setup virtual python environment so we can use pip3 to install packages
apt-get install python3.11-venv -y apt-get install python3-venv -y
python3 -m venv myenv python3 -m venv myenv
source myenv/bin/activate source myenv/bin/activate
@@ -31,4 +31,3 @@ update-alternatives --install /usr/bin/python python /usr/bin/python3 10
# install packages thru pip3 # install packages thru pip3
pip3 install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask flask-cors unifi-sm-api tplink-omada-client wakeonlan pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros yattag git+https://github.com/foreign-sub/aiofreepybox.git pip3 install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask flask-cors unifi-sm-api tplink-omada-client wakeonlan pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros yattag git+https://github.com/foreign-sub/aiofreepybox.git

View File

@@ -14,7 +14,7 @@ server {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_connect_timeout 75; fastcgi_connect_timeout 75;
fastcgi_send_timeout 600; fastcgi_send_timeout 600;
fastcgi_read_timeout 600; fastcgi_read_timeout 600;
} }
} }

View File

@@ -1,16 +1,18 @@
#!/usr/bin/env bash #!/usr/bin/env bash
echo "---------------------------------------------------------" echo "---------------------------------------------------------"
echo "[INSTALL] Run start.debian.sh" echo "[INSTALL] Run start.debian12.sh"
echo "---------------------------------------------------------" echo "---------------------------------------------------------"
echo
echo "This script will set up and start NetAlertX on your Debian12 system."
INSTALL_DIR=/app # Specify the installation directory here INSTALL_DIR=/app # Specify the installation directory here
# DO NOT CHANGE ANYTHING BELOW THIS LINE! # DO NOT CHANGE ANYTHING BELOW THIS LINE!
INSTALLER_DIR=$INSTALL_DIR/install/debian12
CONF_FILE=app.conf CONF_FILE=app.conf
DB_FILE=app.db DB_FILE=app.db
NGINX_CONF_FILE=netalertx.debian.conf NGINX_CONF_FILE=netalertx.conf
WEB_UI_DIR=/var/www/html/netalertx WEB_UI_DIR=/var/www/html/netalertx
NGINX_CONFIG_FILE=/etc/nginx/conf.d/$NGINX_CONF_FILE NGINX_CONFIG_FILE=/etc/nginx/conf.d/$NGINX_CONF_FILE
OUI_FILE="/usr/share/arp-scan/ieee-oui.txt" # Define the path to ieee-oui.txt and ieee-iab.txt OUI_FILE="/usr/share/arp-scan/ieee-oui.txt" # Define the path to ieee-oui.txt and ieee-iab.txt
@@ -34,12 +36,26 @@ if [[ $EUID -ne 0 ]]; then
exit 1 exit 1
fi fi
# Run setup scripts
echo "[INSTALL] Run setup scripts"
"${INSTALL_PATH}/install/install_dependencies.debian.sh" # if modifying this file transfer the changes into the root Dockerfile.debian as well!
echo "[INSTALL] Setup NGINX" echo "---------------------------------------------------------"
echo "[INSTALL] Installing dependencies"
echo "---------------------------------------------------------"
echo
"${INSTALLER_DIR}/install_dependencies.debian12.sh" # if modifying this file transfer the changes into the root Dockerfile.debian as well!
echo "---------------------------------------------------------"
echo "[INSTALL] Installing NGINX and setting up the web server"
echo "---------------------------------------------------------"
echo
echo "[INSTALL] Stopping any NGINX web server"
service nginx stop 2>/dev/null
pkill -f "python ${INSTALL_DIR}/server" 2>/dev/null
echo "[INSTALL] Updating the existing installation..."
# Remove default NGINX site if it is symlinked, or backup it otherwise # Remove default NGINX site if it is symlinked, or backup it otherwise
if [ -L /etc/nginx/sites-enabled/default ] ; then if [ -L /etc/nginx/sites-enabled/default ] ; then
@@ -52,19 +68,17 @@ fi
# Clear existing directories and files # Clear existing directories and files
if [ -d $WEB_UI_DIR ]; then if [ -d $WEB_UI_DIR ]; then
echo "Removing existing NetAlertX web-UI" echo "[INSTALL] Removing existing NetAlertX web-UI"
sudo rm -R $WEB_UI_DIR rm -R $WEB_UI_DIR
fi fi
if [ -f $NGINX_CONFIG_FILE ]; then echo "[INSTALL] Removing existing NetAlertX NGINX config"
echo "Removing existing NetAlertX NGINX config" rm "$NGINX_CONFIG_FILE" 2>/dev/null || true
sudo rm $NGINX_CONFIG_FILE
fi
# create symbolic link to the install directory # create symbolic link to the install directory
ln -s $INSTALL_PATH/front $WEB_UI_DIR ln -s $INSTALL_PATH/front $WEB_UI_DIR
# create symbolic link to NGINX configuration coming with NetAlertX # create symbolic link to NGINX configuration coming with NetAlertX
sudo ln -s "${INSTALL_PATH}/install/netalertx.debian.conf" /etc/nginx/conf.d/$NGINX_CONF_FILE sudo ln -s "${INSTALL_PATH}/install/debian12/netalertx.conf" /etc/nginx/conf.d/$NGINX_CONF_FILE
# Use user-supplied port if set # Use user-supplied port if set
if [ -n "${PORT}" ]; then if [ -n "${PORT}" ]; then
@@ -108,7 +122,6 @@ echo "[INSTALL] Fixing file permissions"
chown root:www-data "${INSTALL_DIR}"/api/user_notifications.json chown root:www-data "${INSTALL_DIR}"/api/user_notifications.json
echo "[INSTALL] Fixing WEB_UI_DIR: ${WEB_UI_DIR}" echo "[INSTALL] Fixing WEB_UI_DIR: ${WEB_UI_DIR}"
chmod -R a+rwx $WEB_UI_DIR chmod -R a+rwx $WEB_UI_DIR
echo "[INSTALL] Fixing INSTALL_DIR: ${INSTALL_DIR}" echo "[INSTALL] Fixing INSTALL_DIR: ${INSTALL_DIR}"
@@ -151,6 +164,7 @@ fi
# start PHP # start PHP
/etc/init.d/php8.2-fpm start /etc/init.d/php8.2-fpm start
nginx -t || { echo "[INSTALL] nginx config test failed"; exit 1; }
/etc/init.d/nginx start /etc/init.d/nginx start
# Start Nginx and your application to start at boot (if needed) # Start Nginx and your application to start at boot (if needed)

View File

@@ -14,6 +14,7 @@ echo "---------------------------------------------------------"
# Set environment variables # Set environment variables
INSTALL_DIR=/app # Specify the installation directory here INSTALL_DIR=/app # Specify the installation directory here
INSTALLER_DIR=$INSTALL_DIR/install/ubuntu24
# Check if script is run as root # Check if script is run as root
if [[ $EUID -ne 0 ]]; then if [[ $EUID -ne 0 ]]; then
@@ -36,10 +37,12 @@ apt-get install -y git
if [ -d "$INSTALL_DIR" ]; then if [ -d "$INSTALL_DIR" ]; then
echo "The installation directory exists. Removing it to ensure a clean install." echo "The installation directory exists. Removing it to ensure a clean install."
echo "Are you sure you want to continue? This will delete all existing files in $INSTALL_DIR." echo "Are you sure you want to continue? This will delete all existing files in $INSTALL_DIR."
echo "This will include ALL YOUR SETTINGS AND DATABASE! (if there are any)"
echo
echo "Type:" echo "Type:"
echo " - 'install' to continue" echo " - 'install' to continue and DELETE ALL!"
echo " - 'update' to just update from GIT" echo " - 'update' to just update from GIT (keeps your db and settings)"
echo " - 'start' to do nothing, leave install as-is" echo " - 'start' to do nothing, leave install as-is (just run the start script)"
if [ "$1" == "install" ] || [ "$1" == "update" ] || [ "$1" == "start" ]; then if [ "$1" == "install" ] || [ "$1" == "update" ] || [ "$1" == "start" ]; then
confirmation=$1 confirmation=$1
else else
@@ -52,9 +55,9 @@ if [ -d "$INSTALL_DIR" ]; then
# Stop nginx if running # Stop nginx if running
if command -v systemctl >/dev/null 2>&1 && systemctl list-units --type=service | grep -q nginx; then if command -v systemctl >/dev/null 2>&1 && systemctl list-units --type=service | grep -q nginx; then
systemctl stop nginx 2>/dev/null systemctl stop nginx 2>/dev/null
elif command -v service >/dev/null 2>&1; then elif command -v service >/dev/null 2>&1; then
service nginx stop 2>/dev/null service nginx stop 2>/dev/null
fi fi
# Kill running NetAlertX server processes in this INSTALL_DIR # Kill running NetAlertX server processes in this INSTALL_DIR
@@ -73,14 +76,10 @@ if [ -d "$INSTALL_DIR" ]; then
echo "INSTALL_DIR is not set, is root, or is invalid. Aborting for safety." echo "INSTALL_DIR is not set, is root, or is invalid. Aborting for safety."
exit 1 exit 1
fi fi
else
echo "INSTALL_DIR is not set or is root. Aborting for safety."
exit 1
fi
elif [ "$confirmation" == "update" ]; then elif [ "$confirmation" == "update" ]; then
echo "Updating the existing installation..." echo "Updating the existing installation..."
service nginx stop 2>/dev/null service nginx stop 2>/dev/null
pkill -f "python ${INSTALL_DIR}/server" 2>/dev/null pkill -f "python ${INSTALL_DIR}/server" 2>/dev/null
cd "$INSTALL_DIR" || { echo "Failed to change directory to $INSTALL_DIR"; exit 1; } cd "$INSTALL_DIR" || { echo "Failed to change directory to $INSTALL_DIR"; exit 1; }
git pull git pull
elif [ "$confirmation" == "start" ]; then elif [ "$confirmation" == "start" ]; then
@@ -101,5 +100,6 @@ fi
# Start NetAlertX # Start NetAlertX
# This is where we setup the virtual environment and install dependencies # This is where we setup the virtual environment and install dependencies
cd "$INSTALL_DIR/install/ubuntu" || { echo "Failed to change directory to $INSTALL_DIR/install/ubuntu"; exit 1; } cd "$INSTALLER_DIR" || { echo "Failed to change directory to $INSTALLER_DIR"; exit 1; }
"$INSTALL_DIR/install/ubuntu/start.ubuntu.sh" chmod +x "$INSTALLER_DIR/start.ubuntu24.sh"
"$INSTALLER_DIR/start.ubuntu24.sh"

View File

@@ -4,15 +4,16 @@ echo "---------------------------------------------------------"
echo "[INSTALL]" echo "[INSTALL]"
echo "---------------------------------------------------------" echo "---------------------------------------------------------"
echo echo
echo "This script will set up and start NetAlertX on your Ubuntu system." echo "This script will set up and start NetAlertX on your Ubuntu24 system."
# Specify the installation directory here # Specify the installation directory here
INSTALL_DIR=/app INSTALL_DIR=/app
# DO NOT CHANGE ANYTHING BELOW THIS LINE! # DO NOT CHANGE ANYTHING BELOW THIS LINE!
INSTALLER_DIR=$INSTALL_DIR/install/ubuntu24
CONF_FILE=app.conf CONF_FILE=app.conf
DB_FILE=app.db DB_FILE=app.db
NGINX_CONF_FILE=netalertx.ubuntu.conf NGINX_CONF_FILE=netalertx.conf
WEB_UI_DIR=/var/www/html/netalertx WEB_UI_DIR=/var/www/html/netalertx
NGINX_CONFIG_FILE=/etc/nginx/conf.d/$NGINX_CONF_FILE NGINX_CONFIG_FILE=/etc/nginx/conf.d/$NGINX_CONF_FILE
OUI_FILE="/usr/share/arp-scan/ieee-oui.txt" # Define the path to ieee-oui.txt and ieee-iab.txt OUI_FILE="/usr/share/arp-scan/ieee-oui.txt" # Define the path to ieee-oui.txt and ieee-iab.txt
@@ -58,7 +59,7 @@ phpenmod -v ${PHPVERSION} sqlite3
update-alternatives --install /usr/bin/python python /usr/bin/python3 10 update-alternatives --install /usr/bin/python python /usr/bin/python3 10
cd $INSTALL_DIR/install/ubuntu || { echo "Failed to change directory to $INSTALL_DIR/install/ubuntu"; exit 1; } cd $INSTALLER_DIR || { echo "Failed to change directory to $INSTALLER_DIR"; exit 1; }
# setup virtual python environment so we can use pip3 to install packages # setup virtual python environment so we can use pip3 to install packages
apt-get install python3-venv -y apt-get install python3-venv -y
@@ -102,7 +103,7 @@ rm "$NGINX_CONFIG_FILE" 2>/dev/null || true
# create symbolic link to the install directory # create symbolic link to the install directory
ln -s $INSTALL_PATH/front $WEB_UI_DIR ln -s $INSTALL_PATH/front $WEB_UI_DIR
# create symbolic link to NGINX configuration coming with NetAlertX # create symbolic link to NGINX configuration coming with NetAlertX
ln -s "${INSTALL_PATH}/install/ubuntu/$NGINX_CONF_FILE" $NGINX_CONFIG_FILE ln -s "${INSTALLER_DIR}/$NGINX_CONF_FILE" $NGINX_CONFIG_FILE
# Use user-supplied port if set # Use user-supplied port if set
if [ -n "${PORT}" ]; then if [ -n "${PORT}" ]; then
@@ -137,22 +138,31 @@ else
fi fi
fi fi
# create log and api mounts echo "---------------------------------------------------------"
echo "[INSTALL] Create log and api mounts" echo "[INSTALL] Create log and api mounts"
mkdir -p "${INSTALL_DIR}/log" "${INSTALL_DIR}/api" echo "---------------------------------------------------------"
umount "${INSTALL_DIR}/log" 2>/dev/null || true echo
umount "${INSTALL_DIR}/api" 2>/dev/null || true
mount -t tmpfs -o size=32m,noexec,nosuid,nodev tmpfs "${INSTALL_DIR}/log"
mount -t tmpfs -o size=16m,noexec,nosuid,nodev tmpfs "${INSTALL_DIR}/api"
# Create an empty log files
# Create the execution_queue.log file if it doesn't exist echo "[INSTALL] Cleaning up old mounts if any"
umount "${INSTALL_DIR}/log"
umount "${INSTALL_DIR}/api"
echo "[INSTALL] Creating log and api folders if they don't exist"
mkdir -p "${INSTALL_DIR}/log" "${INSTALL_DIR}/api"
echo "[INSTALL] Mounting log and api folders as tmpfs"
mount -t tmpfs -o noexec,nosuid,nodev tmpfs "${INSTALL_DIR}/log"
mount -t tmpfs -o noexec,nosuid,nodev tmpfs "${INSTALL_DIR}/api"
# Create log files if they don't exist
echo "[INSTALL] Creating log files if they don't exist"
touch "${INSTALL_DIR}"/log/{app.log,execution_queue.log,app_front.log,app.php_errors.log,stderr.log,stdout.log,db_is_locked.log} touch "${INSTALL_DIR}"/log/{app.log,execution_queue.log,app_front.log,app.php_errors.log,stderr.log,stdout.log,db_is_locked.log}
touch "${INSTALL_DIR}"/api/user_notifications.json touch "${INSTALL_DIR}"/api/user_notifications.json
# Create plugins sub-directory if it doesn't exist in case a custom log folder is used # Create plugins sub-directory if it doesn't exist in case a custom log folder is used
mkdir -p "${INSTALL_DIR}"/log/plugins mkdir -p "${INSTALL_DIR}"/log/plugins
# Fixing file permissions # Fixing file permissions
echo "[INSTALL] Fixing file permissions" echo "[INSTALL] Fixing file permissions"
chown root:www-data "${INSTALL_DIR}"/api/user_notifications.json chown root:www-data "${INSTALL_DIR}"/api/user_notifications.json