Compare commits

..

No commits in common. "b56ece2216588ac427451659e845fa615a50a131" and "0383b47b8e1dcd37161e0f3b1e9fb3ffbcfc09ad" have entirely different histories.

5 changed files with 24 additions and 40 deletions

View File

@ -11,14 +11,6 @@ The master server will be used to manage the worker servers.
The worker servers will be used to host the wordpress sites.
The bot will be used to provide an easier way to manage the master server.
![Overview of system](assets/overview.png)
| Legend | Description |
| --- | --- |
| Red Connections | Secured by VPN or over LAN ONLY. (NOT API SECURED) |
| Yellow Connections | HTTP/HTTPS public traffic |
## Usage
After installing the master and discord bot you can use the following commands (as bot owner).
@ -82,14 +74,12 @@ cd hnshosting-wp/worker
chmod +x install.sh
./install.sh
```
Just press enter when it shows any prompts.
Start the worker api server using
Then to start the worker api server
```sh
screen -dmS hnshosting-worker python3 main.py
```
Add worker to master server pool:
Add worker to master server:
```sh
curl -X POST http://master-server-ip:5000/add-worker?worker=worker-name&ip=worker-server-ip -H "key: api-key"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

View File

@ -168,23 +168,17 @@ def list_workers():
for worker in workers:
# Check worker status
if not worker.__contains__(':'):
continue
return jsonify({'error': 'No workers available', 'success': 'false'})
online=True
resp=requests.get("http://"+worker.split(':')[1].strip('\n') + ":5000/status",timeout=2)
if (resp.status_code != 200):
online=False
worker_list.append({'worker': worker.split(':')[0],'ip': worker.split(':')[1].strip('\n'), 'online': online, 'sites': 0, 'status': 'offline'})
worker_list.append({'worker': worker.split(':')[0],'ip': worker.split(':')[1].strip('\n'), 'online': online, 'sites': 0, 'ready': 0})
continue
sites = resp.json()['num_sites']
availability = resp.json()['availability']
if availability == True:
worker_list.append({'worker': worker.split(':')[0],'ip': worker.split(':')[1].strip('\n'), 'online': online, 'sites': sites, 'status': 'ready'})
else:
worker_list.append({'worker': worker.split(':')[0],'ip': worker.split(':')[1].strip('\n'), 'online': online, 'sites': sites, 'status': 'full'})
worker_list.append({'worker': worker.split(':')[0],'ip': worker.split(':')[1].strip('\n'), 'online': online, 'sites': sites, 'ready': 1})
if len(worker_list) == 0:
return jsonify({'error': 'No workers available', 'success': 'false'})
return jsonify({'success': 'true', 'workers': worker_list})
@app.route('/site-info', methods=['GET'])

View File

@ -2,28 +2,23 @@
# Initial install for all prerequisites for the project.
# This makes it quicker to get each site up and running.
# Stop kernel prompts
export DEBIAN_FRONTEND=noninteractive
export NEEDRESTART_MODE=a
echo "Dpkg::Options { \"--force-confdef\"; \"--force-confold\"; };" | sudo tee /etc/apt/apt.conf.d/local
KERNEL_VERSION=$(uname -r)
sudo apt-mark hold linux-image-generic linux-headers-generic linux-generic linux-image-$KERNEL_VERSION linux-headers-$KERNEL_VERSION
# Update the system
sudo apt update && sudo apt upgrade -y
# Install Docker
sudo apt install apt-transport-https ca-certificates curl software-properties-common python3-pip nginx -y
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/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/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce docker-compose -y
sudo apt install docker-ce -y
sudo apt install docker-compose -y
# Install NGINX
sudo apt install nginx -y
# Install python prerequisites
sudo apt install python3-pip -y
python3 -m pip install -r requirements.txt
cp .env.example .env
chmod +x wp.sh tlsa.sh
# Pull docker images to save time later
docker pull mysql:5.7 &
docker pull wordpress:latest &
wait

View File

@ -67,11 +67,16 @@ def ping():
return 'pong'
def get_sites_count():
# Get number of files in nginx/sites
dir = os.listdir('/etc/nginx/sites-available')
num_Sites = len(dir) - 1
# If file doesn't exist, create it
try:
sites_file = open('sites.txt', 'r')
except FileNotFoundError:
sites_file = open('sites.txt', 'w')
sites_file.close()
sites_file = open('sites.txt', 'r')
print(sites_file.readlines())
# Return number of lines in file
return num_Sites
return len(sites_file.readlines())
def site_exists(domain):
# If file doesn't exist, create it