First of all, what the heck is Demyx?
Demyx is a Docker image that automates and manages WordPress installations. Traefik for reverse proxy with Lets Encrypt SSL/TLS. WordPress sites are powered by NGINX, PHP, and MariaDB.https://demyx.sh
Step 1. DigitalOcean
Now that’s out of the way, this article will show you a step-by-step guide on how to use Demyx. I’ve tested this briefly on Debian, Ubuntu, and CentOS; all works fine but CentOS needs some minor tweaks. I have Alpine Linux on all my servers so of course it 100% works. I’ll be using DigitalOcean for this guide, using their pre-made Docker droplet in the marketplace running Ubuntu 18.04 x64.
Step 2. No-IP
For this guide, I will also be using a free DNS service called No-IP. Great for demos, testing, and personal use if you don’t have a domain. Create your hostname and make sure you point the IP to your server. You can create up to 3 hostnames on the free plan.
Step 3. Install
Run this command to run the install script. It will download all the necessary Docker images that Demyx uses. After it downloads the images, please fill out the prompts. After you install, you will be chrooted into the Demyx container, you will see my own MOTD (Message of the Day).
bash -c "$(curl -fsSL https://demyx.sh/install)"
Step 4. WordPress
Demyx is preconfigured to always use HTTPS but since this is a demo using a subdomain, with no control on the Top Level Domain (TLD), it’s not possible to use SSL. We will be passing the
--ssl=false flag. The MOTD shows two options you can use, for this example, I will be using a regular WordPress install. Don’t know what Bedrock is? Visit their site: https://roots.io/bedrock/.
# Command executed on the host OS demyx cmd run demyx.ddns.net --ssl=false # Command executed inside demyx demyx run demyx.ddns.net --ssl=false
After the site installs, you will be presented with a table of useful information. To see all of the site’s settings/variables:
demyx info demyx.ddns.net --all.
Step 5. Congratulations
YAY! You made your first Demyx app! Notice how we didn’t touch a single Docker command? That’s because it was to make my life easier and now it can make yours a little better too!
Step 6. Multiples
Now, we need to add our other hostnames to No-IP and then create them in Demyx. Demyx also supports IP address as the “domain” during runtime.
Step 7. Bonus
But wait, there’s more! Demyx comes packed with features that’s available in the help menu. I will be showing you some notable ones.
ctop is htop, but for containers! If you look at the screenshot, you can see all running containers. The ctop binary is included in the Demyx image.
# Command executed on the host OS demyx sh ctop # Command executed inside demyx ctop
code-server and browser-sync
Demyx has a feature that will turn a WordPress site into development mode. Meaning, it will turn off opcache and spin up code-server and browser-sync containers. Password auto generates every time the code-server container runs.
# Command executed on the host OS demyx cmd config demyx.ddns.net --dev # Command executed inside demyx demyx config demyx.ddns.net --dev
Demyx comes shipped with phpMyAdmin that’s auto configured when running
demyx config demyx.ddns.net --pma.
# Command executed on the host OS demyx cmd config demyx.ddns.net --pma # Command executed inside demyx demyx config demyx.ddns.net --pma
Demyx comes with a preconfigured OpenSSH image that has root and password authentication disabled. Only accessible via public key.
# Command executed on the host OS demyx cmd config demyx.ddns.net --sftp # Command executed inside demyx demyx config demyx.ddns.net --sftp
Step 8. Conclusion
Demyx has a bunch of features that’s too long to list in this article so feel free to explore the help menu. If you have anymore questions, then please come join me in my channel at Freenode: #demyx.Buy me a coffee Become a Patron!