Failed Challenge on ZoneMinder [Apache]

You are likely going to want to split your port 80 configuration file into two port 80 configuration files (one with ServerName biggszm.duckdns.org and the other with ServerName www.biggszm.duckdns.org) then change the ports of both to 8080. The reason for this is that certbot may get confused if only a ServerAlias were used while having two distinct port 443 VirtualHosts (which should also be in separate files).

I'll split the vhost leave it at port 80, but change my NAT to forward public 8080 to private 80

1 Like

That's a good solution too. :slightly_smiling_face:

Just to make sure. My current config is this:

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName www.biggszm.duckdns.org

        ServerAdmin webmaster@localhost
        DocumentRoot /usr/share/zoneminder/www

        # Remember to enable cgi mod (i.e. "a2enmod cgi").
        ScriptAlias /zm/cgi-bin "/usr/lib/zoneminder/cgi-bin"
        <Directory "/usr/lib/zoneminder/cgi-bin">
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            AllowOverride All
            Require all granted
        </Directory>


        # Order matters. This alias must come first.
        Alias /zm/cache /var/cache/zoneminder/cache
        <Directory /var/cache/zoneminder/cache>
            Options -Indexes +FollowSymLinks
            AllowOverride None
            <IfModule mod_authz_core.c>
                # Apache 2.4
                Require all granted
            </IfModule>
        </Directory>

        Alias /zm /usr/share/zoneminder/www
        <Directory /usr/share/zoneminder/www>
            Options -Indexes +FollowSymLinks
            <IfModule mod_dir.c>
                DirectoryIndex index.php
            </IfModule>
        </Directory>

        # For better visibility, the following directives have been migrated from the
        # default .htaccess files included with the CakePHP project.
        # Parameters not set here are inherited from the parent directive above.
        <Directory "/usr/share/zoneminder/www/api">
            RewriteEngine on
            RewriteRule ^$ app/webroot/ [L]
            RewriteRule (.*) app/webroot/$1 [L]
            RewriteBase /zm/api
        </Directory>

        <Directory "/usr/share/zoneminder/www/api/app">
            RewriteEngine on
            RewriteRule ^$ webroot/ [L]
            RewriteRule (.*) webroot/$1 [L]
            RewriteBase /zm/api
        </Directory>

        <Directory "/usr/share/zoneminder/www/api/app/webroot">
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^ index.php [L]
            RewriteBase /zm/api
        </Directory>


        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
RewriteCond %{SERVER_NAME} =biggszm.duckdns.org [OR]
RewriteCond %{SERVER_NAME} =www.biggszm.duckdns.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

You want me to get rid of these lines

ServerAlias biggszm.duckdns.org
RewriteCond %{SERVER_NAME} =biggszm.duckdns.org [OR]
RewriteCond %{SERVER_NAME} =www.biggszm.duckdns.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

And split the config like this:

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName www.biggszm.duckdns.org
        ServerAlias biggszm.duckdns.org

        ServerAdmin webmaster@localhost
        DocumentRoot /usr/share/zoneminder/www

        # Remember to enable cgi mod (i.e. "a2enmod cgi").
        ScriptAlias /zm/cgi-bin "/usr/lib/zoneminder/cgi-bin"
        <Directory "/usr/lib/zoneminder/cgi-bin">
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            AllowOverride All
            Require all granted
        </Directory>


        # Order matters. This alias must come first.
        Alias /zm/cache /var/cache/zoneminder/cache
        <Directory /var/cache/zoneminder/cache>
            Options -Indexes +FollowSymLinks
            AllowOverride None
            <IfModule mod_authz_core.c>
                # Apache 2.4
                Require all granted
            </IfModule>
        </Directory>

        Alias /zm /usr/share/zoneminder/www
        <Directory /usr/share/zoneminder/www>
            Options -Indexes +FollowSymLinks
            <IfModule mod_dir.c>
                DirectoryIndex index.php
            </IfModule>
        </Directory>

        # For better visibility, the following directives have been migrated from the
        # default .htaccess files included with the CakePHP project.
        # Parameters not set here are inherited from the parent directive above.
        <Directory "/usr/share/zoneminder/www/api">
            RewriteEngine on
            RewriteRule ^$ app/webroot/ [L]
            RewriteRule (.*) app/webroot/$1 [L]
            RewriteBase /zm/api
        </Directory>

        <Directory "/usr/share/zoneminder/www/api/app">
            RewriteEngine on
            RewriteRule ^$ webroot/ [L]
            RewriteRule (.*) webroot/$1 [L]
            RewriteBase /zm/api
        </Directory>

        <Directory "/usr/share/zoneminder/www/api/app/webroot">
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^ index.php [L]
            RewriteBase /zm/api
        </Directory>


        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

<VirtualHost *:80>
        ServerName biggszm.duckdns.org

        ServerAdmin webmaster@localhost
        DocumentRoot /usr/share/zoneminder/www

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine On
    RewriteRule ^/?(.*) https://www.biggszm.duckdns.org/$1
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
1 Like

Honestly, here's all you need:

for zm.conf:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName biggszm.duckdns.org

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Redirect permanent / https://biggszm.duckdns.org/
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName www.biggszm.duckdns.org

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Redirect permanent / https://www.biggszm.duckdns.org/
</VirtualHost>

for zm-le-ssl.conf:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName biggszm.duckdns.org

    DocumentRoot /usr/share/zoneminder/www

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # Remember to enable cgi mod (i.e. "a2enmod cgi").
    ScriptAlias /zm/cgi-bin "/usr/lib/zoneminder/cgi-bin"
    <Directory "/usr/lib/zoneminder/cgi-bin">
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        AllowOverride All
        Require all granted
    </Directory>

    # Order matters. This alias must come first.
    Alias /zm/cache /var/cache/zoneminder/cache
    <Directory /var/cache/zoneminder/cache>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        <IfModule mod_authz_core.c>
            # Apache 2.4
            Require all granted
        </IfModule>
    </Directory>

    Alias /zm /usr/share/zoneminder/www
    <Directory /usr/share/zoneminder/www>
        Options -Indexes +FollowSymLinks
        <IfModule mod_dir.c>
            DirectoryIndex index.php
        </IfModule>
    </Directory>

    # For better visibility, the following directives have been migrated from the
    # default .htaccess files included with the CakePHP project.
    # Parameters not set here are inherited from the parent directive above.
    <Directory "/usr/share/zoneminder/www/api">
          RewriteEngine on
          RewriteRule ^$ app/webroot/ [L]
          RewriteRule (.*) app/webroot/$1 [L]
          RewriteBase /zm/api
    </Directory>

    <Directory "/usr/share/zoneminder/www/api/app">
          RewriteEngine on
          RewriteRule ^$ webroot/ [L]
          RewriteRule (.*) webroot/$1 [L]
          RewriteBase /zm/api
    </Directory>

    <Directory "/usr/share/zoneminder/www/api/app/webroot">
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteRule ^ index.php [L]
          RewriteBase /zm/api
    </Directory>

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/biggszm.duckdns.org/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/biggszm.duckdns.org/privkey.pem
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName www.biggszm.duckdns.org

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile    /etc/letsencrypt/live/www.biggszm.duckdns.org/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.biggszm.duckdns.org/privkey.pem

    Redirect permanent / https://biggszm.duckdns.org/
</VirtualHost>
</IfModule>
1 Like

Nice, the http is redirecting to https now. Thanks @griffin and @rg305 for your patience and time. I really appreciate it!

3 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.