Wordpress hosting system for Handshake https://hnshosting.au
Go to file
Nathan Woodburn 6d28cf7431
All checks were successful
Build Docker / Build Bot (push) Successful in 23s
Build Docker / Build Master (push) Successful in 25s
main: Fixed newlines in worker file
2023-08-25 11:42:31 +10:00
.gitea/workflows actions: Fixed main branch detect 2023-08-24 18:35:41 +10:00
discord-bot bot: Updated site info instructions 2023-08-24 14:50:20 +10:00
master main: Fixed newlines in worker file 2023-08-25 11:42:31 +10:00
worker worker: Stop install script prompting to install kernel updates 2023-08-25 11:35:22 +10:00
.gitignore main: Added worker interactions 2023-08-16 16:59:57 +10:00
LICENSE.md Initial commit 2023-08-16 12:53:35 +10:00
README.md main: Cleaned up code 2023-08-24 17:18:24 +10:00

HNSHosting Wordpress

This is split into two parts. There is the master server which is the server that will be used to manage the worker servers. Then there is the worker server which is the server that will be used to host the wordpress site.

This is done to make it easier to manage multiple wordpress sites on multiple servers.

Overview

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.

Usage

After installing the master and discord bot you can use the following commands (as bot owner).

/addworker <ip> <name>              | add a worker to the master server pool (Make sure the master can access port 5000 on the worker, and don't allow anyone else to access it)
/listworkers                        | list all workers
/licence                            | Creates a licence key (valid for 1 wp site)

General commands (as anyone)

/createsite <domain> <licence key>  | Creates a wordpress site on a random worker server (uses up 1 licence key)
/siteinfo <domain>                  | Get info about a site (use after creating site to get TLSA and IP of the server)

Master server install

Docker is the easiest way to install the master server.

docker run -d -p 5000:5000 -e LICENCE-API=your-api-key -e WORKER_KEY=your-api-key --name hnshosting-master git.woodburn.au/nathanwoodburn/hnshosting-master:latest -v ./data:/data

You can also mount a docker volume to /data to store the files instead of mounting a host directory.

Alternatively you can install it manually. Set your .env file.

cd master
python3 -m pip install -r requirements.txt

Then to start the master api server

screen -dmS hnshosting-master python3 main.py

Stripe webhook

Create a new webhook endpoint on stripe and set the url to https://master-server-domain:5000/stripe-webhook (note: you need to add a https proxy to your master server if you want to use stripe) Add these environment variables to your master server

STRIPE_SECRET: your-stripe-secret-key
STRIPE_ENDPOINT_SECRET: your-stripe-endpoint-secret
SMTP_HOST: smtp-server
SMTP_PORT: smtp-port
SMTP_USER: smtp-user
SMTP_PASS: smtp-pass
SMTP_FROM: smtp-from (eg. HNSHosting <hosting@nathan.woodburn.au>) This is optional

Worker server install

Install prerequisites:

git clone https://git.woodburn.au/nathanwoodburn/hnshosting-wp.git
cd hnshosting-wp/worker
chmod +x install.sh
./install.sh

Then to start the worker api server

screen -dmS hnshosting-worker python3 main.py

Add worker to master server:

curl -X POST http://master-server-ip:5000/add-worker?worker=worker-name&ip=worker-server-ip -H "key: api-key"

Discord bot install

Docker install

docker run -d -e MASTER_IP=<MASTER SERVER IP> -e DISCORD_TOKEN=<YOUR-BOT-TOKEN> -e LICENCE_KEY=your-api-key -e WORKER_KEY=your-api-key --name hnshosting-bot git.woodburn.au/nathanwoodburn/hnshosting-bot:latest