WordPress is one of the most popular content management systems (CMS) on the market, powering over 40% of all websites on the internet.
One of the major advantages of WordPress is its open source nature.
As an open source platform, WordPress provides users with a high level of flexibility and control over their websites. This allows developers to create custom themes and plugins that can be easily integrated into the WordPress ecosystem.
WordPress’s theme ecosystem is particularly noteworthy. With thousands of themes available, users can choose from a wide range of options to create a unique and visually appealing website.
These themes can be customized further to meet specific needs, providing endless possibilities for website design.
Why Wordpress?
-
🌟 User-Friendly: WordPress is known for its user-friendly interface and ease of use. With a wide range of templates, plugins, and customization options available, users can create a website with little to no technical expertise.
-
🛠️ Customization: With thousands of themes and plugins available, WordPress provides endless customization options for users. From basic blogs to complex e-commerce sites, WordPress can be tailored to fit any need.
-
🔍 SEO-Friendly: WordPress is designed with SEO in mind, making it easier for websites to rank higher in search engine results pages (SERPs). With built-in SEO tools and plugins, WordPress makes it simple for users to optimize their content for search engines.
You should be aware also of this before using Wordpress as CMS 🙀
-
Security: WordPress’s popularity makes it a target for hackers, and vulnerabilities in the software and plugins can put websites at risk.
-
Maintenance: WordPress requires ongoing maintenance, including updates to the core software and plugins, to ensure optimal performance and security.
-
Performance: WordPress can be slow to load, particularly for sites with a lot of plugins or customizations. This can impact user experience and site performance.
The WordPress Project
- The Wordpress Site
- The Wordpress Source Code at Github
- License: GNU ❤️
SelfHosting Wordpress
Pre-Requisites!! Just Get Docker 🐋👇
Important step and quite recommended for any SelfHosting Project - Get Docker Installed
It will be one command, this one, if you are in Linux:
apt-get update && sudo apt-get upgrade && curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh && docker version
And install also Docker-compose with:
apt install docker-compose -y
WordPress with Docker Compose
version: '3.3'
services:
db:
image: hypriot/rpi-mysql
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wpsite
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- '8088:80'
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: password
networks:
- wpsite
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- '8087:80'
restart: always
volumes: ['./:/var/www/html']
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
networks:
- wpsite
networks:
wpsite:
volumes:
db_data:
WordPress with NGINX and Docker Compose
If you are interested to exposed the service to the internet, you will want to run uptime kuma behind a NGINX proxy. Follow this steps:
- Step 1: create your separate NGINX proxy manager docker container instance as covered in this post.
- Step 2: use this docker-compose file that will make available the Wordpress service on the NGINX network automatically:
version: '3.3'
services:
db:
image: mariadb:latest #hypriot/rpi-mysql #x86/ARM Compatible
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wpsite
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- '8088:80'
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: password
networks:
- wpsite
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- '8087:80'
restart: always
volumes: ['./:/var/www/html']
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
networks:
- wpsite
- nginx_default
networks:
wpsite:
nginx_default:
external: true
volumes:
db_data:
IMPORTANT: make sure to change the default passwords in the configuration file before deploying and exposing it to the internet.
- Step 3: Finish the setup in NGINX UI as covered in its guide.
FAQ
Other F/OSS Wordpress Alternatives
- Ghost
Privacy Respectful Web Analytics for Wordpress
- Umami
- Matomo
- Plausible
How to Deploy Nginx Proxy Manager
If you are interested in deploying a separated NGINX instance with Docker, I already created a guide for that here.