Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hashnuke/wordpress-deploy

๐Ÿ” Secure and ๐Ÿค‘ budget-friendly Wordpress setup for your digital garden ๐Ÿก
https://github.com/hashnuke/wordpress-deploy

ansible digital-garden digitalocean php wordpress

Last synced: 24 days ago
JSON representation

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

Awesome Lists containing this project

README

        

# wordpress-deploy

[Install](#install) | [Deploy a site](#deploy-a-site) | [Configuration options](docs/configuration.md) | [FAQs](docs/faqs.md)

![Deploy wordpress sites to $5 servers in a few minutes](docs/intro-image.png)

-----

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](docs/backups.md))
* ๐Ÿ’ช Firewall protection with `ufw`
* โšก๏ธ Pre-installs [WP Super Cache](https://wordpress.org/plugins/wp-super-cache/) for speed optimization
* ๐Ÿงช Tested on [DigitalOcean](https://www.digitalocean.com/)
* โ›‘ 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](docs/images/post-install-email.png)

#### 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

* [Configuration Options](docs/configuration.md)
* [Backups](docs/backups.md)
* [FAQs](docs/faqs.md)

## License

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