How to setup Virtualhosts properly for Wordpress Multisite from One Click Wordpress setup with Letsencrypt

November 16, 2017 282 views
WordPress One-Click Install Apps Apache Let's Encrypt LAMP Stack DigitalOcean DigitalOcean Articles Linux Basics Quickstart Ubuntu 16.04

Wordpress multisite runs great on Digital Ocean's One Click Wordpress install setup.
However problems happen when trying to add Letsencrypt to the installation for each domain the multisite uses. The typical multisite setup uses subdirectories for each subsite. This is done by wordpress and works fine with stock virtual host settings created by the One Click install from Digital Ocean.
However, certbot doesn't like this and expects a virtualhost to be declared/setup in apache for each domain in your Wordpress Multisite site list.
After googling, all examples I see don't use the same language/code examples in the sites-available as Digital Ocean's one click setup uses. Here's what Digital Ocean creates with the setup:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        <Directory /var/www/html/>
            Options FollowSymLinks
            AllowOverride All
            Require all granted

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME}
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]


RewriteCond %{SERVER_NAME}

is confusing as tutorials on virtualhosts in Ubuntu 16.04 doesn't cover this code line.

So... for this situation... which is not currently covered in the Letsencrypt or Wordpress tutorials on Digital Ocean... what is the proper way to add in the domains in apache ALL for the same installation folder ( /var/www/html ) so that Letsencrypt Certbot will install additional domain certificates properly?

Help would be most appreciated. thank you.

Expanding a single certificate is also not recommended for unrelated domains from what I've gathered in tutorials.

1 Answer

Answer given at the letsencrypt support forums

Basically, each domain needs it's OWN .conf file as well as each file having the Servername declared. Then after system linking into sites-enabled and an apache2 restart, certbot will install the additional certificates properly. See the thread at letsencrypt for more details.

Have another answer? Share your knowledge.