Skip to content

HashNuke/wordpress-deploy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

wordpress-deploy

Install | Deploy a site | Configuration options | FAQs

Deploy wordpress sites to $5 servers in a few minutes


Use this to setup blogs for your family or landing pages for your side-projects. (Hint: Gutenberg editor Full Site Editing is ๐Ÿ”ฅ)

  • ๐Ÿ˜ Easy to configure
  • ๐Ÿ’ฐ Budget-friendly setup. Stuff as many sites as you can on your $5 server.
  • โ™ป๏ธ Automated weekly backups by email + daily backups on server (docs)
  • ๐Ÿ’ช Firewall protection with ufw
  • โšก๏ธ Pre-installs WP Super Cache for speed optimization
  • ๐Ÿงช Tested on DigitalOcean
  • โ›‘ Wordpress update email alerts
  • ๐Ÿ‘ฎโ€โ™€๏ธ Server monitoring with email alerts (๐Ÿ‘จโ€๐Ÿ’ป Coming soon)

You still need to enable disk backups with your cloud provider.

Install

Install python3 and clone this repository.

git clone https://github.com/HashNuke/wordpress-deploy.git wordpress-deploy
cd wordpress-deploy

# ๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡ Start a python virtual environment
python3 -m venv venv && source venv/bin/activate
# ๐Ÿ‘†๐Ÿ‘†๐Ÿ‘† Ensure to run the above command.

# Install ansible. This project only needs ansible.
# Else your terminal will not find the "ansible-playbook" command.
pip3 install ansible

Deploy a site

Please follow the same order of instructions to avoid issues.

[Step-1] Create a server with Ubuntu 22.04 (LTS) on your cloud provider

Ensure to choose SSH key as the authentication method and add the SSH key to your local SSH key agent.

ssh-add ~/.ssh/mykey

[Step-2] Add DNS records for domain/subdomains

  • Domain/subdomain for the website.
  • Domain/subdomain for email notifications (backup emails, alerts, etc). Add an A-record for this.

These two can be the same domain/subdomain.

[Step-3] Create a config file for the site

cp sites/sample.yml path/to/mysite.yml

The sample config file has details about configuration options. Give it a read.

[Step-4] Deploy

Now let's deploy this site the server example.com. You can also use an IP address like 1.2.3.4

PLEASE do not ignore the comma. Notice the value is "example.com," in the command below.

ansible-playbook setup.yml \
-i "example.com," \
--extra-vars @/path/to/mysite.yml

๐Ÿ‘‰ Login credentials + New site checklist ๐Ÿ˜ƒ

The wordpress admin user will receive an email with login credentials for the admin user. This email also includes a checklist for your new site.

[IMPORTANT] If you do not find this email in your inbox, please check your spam folder. And if you still do not find it then check the instructions below the screenshot.

Post-install email with instructions

Find default password for admin user

If you do not get an email after setting up a new site, then you can still access the password for the admin user. The default password is stored as a file on the server.

Assuming your site_name is "mysite", your default wordpress admin password can be found at the following path on the server.

/sites/mysite/config/default-password

More documentation

License

Copyright (C) from 2022 till date: Akash Manohar John
Check the LICENSE file for more info.

About

๐Ÿ” Secure and ๐Ÿค‘ budget-friendly Wordpress setup for your digital garden ๐Ÿก

Topics

Resources

License

Stars

Watchers

Forks