mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-06-28 09:16:55 +00:00
Fix https://github.com/donaldzou/WGDashboard/issues/723 and more
This commit is contained in:
parent
72a52f5cd6
commit
4926ee5117
@ -7,7 +7,7 @@ trap 'stop_service' SIGTERM
|
|||||||
|
|
||||||
stop_service() {
|
stop_service() {
|
||||||
echo "[WGDashboard] Stopping WGDashboard..."
|
echo "[WGDashboard] Stopping WGDashboard..."
|
||||||
bash ./wgd.sh stop
|
/bin/bash ./wgd.sh stop
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,51 +18,68 @@ ensure_installation() {
|
|||||||
# When using a custom directory to store the files, this part moves over and makes sure the installation continues.
|
# When using a custom directory to store the files, this part moves over and makes sure the installation continues.
|
||||||
echo "Quick-installing..."
|
echo "Quick-installing..."
|
||||||
|
|
||||||
|
# Make the wgd.sh script executable.
|
||||||
chmod +x "${WGDASH}"/src/wgd.sh
|
chmod +x "${WGDASH}"/src/wgd.sh
|
||||||
cd "${WGDASH}"/src || exit
|
cd "${WGDASH}"/src || exit
|
||||||
|
|
||||||
|
# Github issue: https://github.com/donaldzou/WGDashboard/issues/723
|
||||||
|
echo "Checking for stale pids..."
|
||||||
|
if [[ -f ${WGDASH}/src/gunicorn.pid ]]; then
|
||||||
|
echo "Found stale pid, removing..."
|
||||||
|
rm ${WGDASH}/src/gunicorn.pid
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Removing clear shell command from the wgd.sh script to enhance docker logging.
|
||||||
echo "Removing clear command from wgd.sh for better Docker logging."
|
echo "Removing clear command from wgd.sh for better Docker logging."
|
||||||
sed -i '/clear/d' ./wgd.sh
|
sed -i '/clear/d' ./wgd.sh
|
||||||
|
|
||||||
|
# Create the databases directory if it does not exist yet.
|
||||||
if [ ! -d "/data/db" ]; then
|
if [ ! -d "/data/db" ]; then
|
||||||
echo "Creating database dir"
|
echo "Creating database dir"
|
||||||
mkdir /data/db
|
mkdir /data/db
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Linking the database on the persistent directory location to where WGDashboard expects.
|
||||||
if [ ! -d "${WGDASH}/src/db" ]; then
|
if [ ! -d "${WGDASH}/src/db" ]; then
|
||||||
ln -s /data/db "${WGDASH}/src/db"
|
ln -s /data/db "${WGDASH}/src/db"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Create the wg-dashboard.ini file if it does not exist yet.
|
||||||
if [ ! -f "${config_file}" ]; then
|
if [ ! -f "${config_file}" ]; then
|
||||||
echo "Creating wg-dashboard.ini file"
|
echo "Creating wg-dashboard.ini file"
|
||||||
touch "${config_file}"
|
touch "${config_file}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Link the wg-dashboard.ini file from the persistent directory to where WGDashboard expects it.
|
||||||
if [ ! -f "${WGDASH}/src/wg-dashboard.ini" ]; then
|
if [ ! -f "${WGDASH}/src/wg-dashboard.ini" ]; then
|
||||||
ln -s "${config_file}" "${WGDASH}/src/wg-dashboard.ini"
|
ln -s "${config_file}" "${WGDASH}/src/wg-dashboard.ini"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Create the Python virtual environment.
|
||||||
python3 -m venv "${WGDASH}"/src/venv
|
python3 -m venv "${WGDASH}"/src/venv
|
||||||
. "${WGDASH}/src/venv/bin/activate"
|
. "${WGDASH}/src/venv/bin/activate"
|
||||||
|
|
||||||
|
# Due to this pip dependency being available as a system package we can just move it to the venv.
|
||||||
echo "Moving PIP dependency from ephemerality to runtime environment: psutil"
|
echo "Moving PIP dependency from ephemerality to runtime environment: psutil"
|
||||||
mv /usr/lib/python3.12/site-packages/psutil* "${WGDASH}"/src/venv/lib/python3.12/site-packages
|
mv /usr/lib/python3.12/site-packages/psutil* "${WGDASH}"/src/venv/lib/python3.12/site-packages
|
||||||
|
|
||||||
|
# Due to this pip dependency being available as a system package we can just move it to the venv.
|
||||||
echo "Moving PIP dependency from ephemerality to runtime environment: bcrypt"
|
echo "Moving PIP dependency from ephemerality to runtime environment: bcrypt"
|
||||||
mv /usr/lib/python3.12/site-packages/bcrypt* "${WGDASH}"/src/venv/lib/python3.12/site-packages
|
mv /usr/lib/python3.12/site-packages/bcrypt* "${WGDASH}"/src/venv/lib/python3.12/site-packages
|
||||||
|
|
||||||
./wgd.sh install
|
# Use the bash interpreter to install WGDashboard according to the wgd.sh script.
|
||||||
|
/bin/bash ./wgd.sh install
|
||||||
|
|
||||||
echo "Looks like the installation succeeded. Moving on."
|
echo "Looks like the installation succeeded. Moving on."
|
||||||
|
|
||||||
# This first step is to ensure the wg0.conf file exists, and if not, then its copied over from the ephemeral container storage.
|
# This first step is to ensure the wg0.conf file exists, and if not, then its copied over from the ephemeral container storage.
|
||||||
# This is done so WGDashboard it works out of the box
|
# This is done so WGDashboard it works out of the box, it also sets a randomly generated private key.
|
||||||
|
|
||||||
if [ ! -f "/etc/wireguard/wg0.conf" ]; then
|
if [ ! -f "/etc/wireguard/wg0.conf" ]; then
|
||||||
echo "Standard wg0 Configuration file not found, grabbing template."
|
echo "Standard wg0 Configuration file not found, grabbing template."
|
||||||
cp -a "/configs/wg0.conf.template" "/etc/wireguard/wg0.conf"
|
cp -a "/configs/wg0.conf.template" "/etc/wireguard/wg0.conf"
|
||||||
|
|
||||||
echo "Setting a secure private key." # SORRY 4 BE4 - Daan
|
echo "Setting a secure private key."
|
||||||
|
|
||||||
local privateKey
|
local privateKey
|
||||||
privateKey=$(wg genkey)
|
privateKey=$(wg genkey)
|
||||||
@ -106,6 +123,7 @@ set_envvars() {
|
|||||||
sed -i "s/^peer_global_dns = .*/peer_global_dns = ${global_dns}/" "${config_file}"
|
sed -i "s/^peer_global_dns = .*/peer_global_dns = ${global_dns}/" "${config_file}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Checking the current set public IP and changing it if it has changed.
|
||||||
current_public_ip=$(grep "remote_endpoint = " "${config_file}" | awk '{print $NF}')
|
current_public_ip=$(grep "remote_endpoint = " "${config_file}" | awk '{print $NF}')
|
||||||
if [ "${public_ip}" == "" ]; then
|
if [ "${public_ip}" == "" ]; then
|
||||||
default_ip=$(curl -s ifconfig.me)
|
default_ip=$(curl -s ifconfig.me)
|
||||||
@ -118,6 +136,7 @@ set_envvars() {
|
|||||||
echo "Public-IP is correct, moving on."
|
echo "Public-IP is correct, moving on."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Checking the current WGDashboard web port and changing if needed.
|
||||||
current_wgd_port=$(grep "app_port = " "${config_file}" | awk '{print $NF}')
|
current_wgd_port=$(grep "app_port = " "${config_file}" | awk '{print $NF}')
|
||||||
if [ "${current_wgd_port}" == "${wgd_port}" ]; then
|
if [ "${current_wgd_port}" == "${wgd_port}" ]; then
|
||||||
echo "Current WGD port is set correctly, moving on."
|
echo "Current WGD port is set correctly, moving on."
|
||||||
@ -131,11 +150,18 @@ set_envvars() {
|
|||||||
start_core() {
|
start_core() {
|
||||||
printf "\n---------------------- STARTING CORE -----------------------\n"
|
printf "\n---------------------- STARTING CORE -----------------------\n"
|
||||||
|
|
||||||
|
# Due to some instances complaining about this, making sure its there every time.
|
||||||
|
mkdir -p /dev/net
|
||||||
|
mknod /dev/net/tun c 10 200
|
||||||
|
chmod 600 /dev/net/tun
|
||||||
|
|
||||||
|
# Actually starting WGDashboard
|
||||||
echo "Activating Python venv and executing the WireGuard Dashboard service."
|
echo "Activating Python venv and executing the WireGuard Dashboard service."
|
||||||
bash ./wgd.sh start
|
/bin/bash ./wgd.sh start
|
||||||
}
|
}
|
||||||
|
|
||||||
ensure_blocking() {
|
ensure_blocking() {
|
||||||
|
# Wait a second before continuing, to give the python program some time to get ready.
|
||||||
sleep 1s
|
sleep 1s
|
||||||
echo -e "\nEnsuring container continuation."
|
echo -e "\nEnsuring container continuation."
|
||||||
|
|
||||||
@ -147,9 +173,12 @@ ensure_blocking() {
|
|||||||
# Only tail the logs if they are found
|
# Only tail the logs if they are found
|
||||||
if [ -n "$latestErrLog" ]; then
|
if [ -n "$latestErrLog" ]; then
|
||||||
tail -f "$latestErrLog" &
|
tail -f "$latestErrLog" &
|
||||||
|
|
||||||
|
# Wait for the tail process to end.
|
||||||
wait $!
|
wait $!
|
||||||
else
|
else
|
||||||
echo "No log files found to tail. Something went wrong, exiting..."
|
echo "No log files found to tail. Something went wrong, exiting..."
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user