Collabora Installation - Virtualhost and redirecting issues

I have had an owncloud instance for years, then nextcloud for several years.
I set it and forget it …works great when I dont F*it up.
I am not an adept coder, so please be patient with my newbness.

Well recently I tried to get collabora installed for use in nextcloud and now its all borked up.

There is one standalone pc; Collabora was installed as a docker container as per instructions here: https://nextcloud.com/collaboraonline/ . Environment is Debian Stretch. Used LetsEncrypt for the certificated.
Initially tried to have collabora point to officelinuxpd2.my_dyanamic_dns_domain.org with nextcloud being on linuxpd2.my_dyanamic_dns_domain.org

Currently I am getting error “The page isnt redirecting properly” when trying to get to nextcloud.

I panicked and tried redid the letsencrypt cert for just my nextcloud.
That didnt help. I dont want to jump into more mistakes.
I figure that it is simple to fix, but my lack of experience is goofing me up.
I think I may have initially faulted in a couple of instances, thus the following questions:

Question 1
in the instructions https://nextcloud.com/collaboraonline/ it says to make a virtualhost; was that supposed to be a separte.conf file in that is placed in /etc/apache2/sites-enabled or was it supposed to be a modification of an existing .conf file?

Question 2
when using lets encrypt there is a question " Please choose whether or not ro redirect HTTP traffic to HTTPS, removing http access: (1) no redirect. make no further changes to the webserver configuration or (2) make all request redirect to secure https access… "
I selected option (1).

I figure I may be able to run thru the steps again undoing any stupid mistakes on my part.

I look toward any responses to help me get back up…
Thanks for your time
quinn

some objective evidence of trying to fix:
the docker installation:

jason@linuxpd2 : ~ $ sudo apt-get install docker-ce=5:19.03.5~3-0~debian-stretch docker-ce-cli=5:19.03.5~3-0~debian-stretch containerd.io
Reading package lists… Done
Building dependency tree
Reading state information… Done
containerd.io is already the newest version (1.2.10-3).
docker-ce-cli is already the newest version (5:19.03.5~3-0~debian-stretch).
docker-ce is already the newest version (5:19.03.5~3-0~debian-stretch).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Install the collabora online server:

docker run -t -d -p 127.0.0.1:9980:9980 -e ‘domain=officelinuxpd2\.my_dyanamic_dns_domain\.
org’ --restart always --cap-add MKNOD collabora/code

jason@linuxpd2 : ~ $ su
Password:
root@linuxpd2:/home/jason# docker pull collabora/code
Using default tag: latest
latest: Pulling from collabora/code
18d680d61657: Pull complete
0addb6fece63: Pull complete
78e58219b215: Pull complete
eb6959a66df2: Pull complete
cc2d744ceb4d: Pull complete
f67604632f97: Pull complete
aae5a975dee7: Pull complete
Digest: sha256:a309ee235d4e9d66c69462f2b73fcedd70d67bf07c
Status: Downloaded newer image for collabora/code:latest
docker.io/collabora/code:latest
root@linuxpd2:/home/jason# docker run -t -d -p 127.0.0.1:9980:9980 -e ‘domain=officelinuxpd2\.my_dyanamic_dns_domain\.org’ --restart always --cap-add MKNOD collabora/code
31dcfc23930abecc897726288bdd9c
root@linuxpd2:/home/jason#

Install the apache reverse proxy (already had apache2 installed)

root@linuxpd2:/home/jason# a2enmod proxy
Enabling module proxy.
root@linuxpd2:/home/jason# a2enmod proxy_wstunnel
Considering dependency proxy for proxy_wstunnel:
Module proxy already enabled
Enabling module proxy_wstunnel.
root@linuxpd2:/home/jason# a2enmod proxy_http
Considering dependency proxy for proxy_http:
Module proxy already enabled
Enabling module proxy_http.
root@linuxpd2:/home/jason# a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled
root@linuxpd2:/home/jason#

root@linuxpd2:/home/jason# systemctl restart apache2

I used letsencrypt certbot:

jason@linuxpd2:~$ sudo certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache

Which names would you like to activate HTTPS for?


1: linuxpd2.my_dyanamic_dns_domain.org
2: officelinuxpd2.my_dyanamic_dns_domain.org


Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter ‘c’ to cancel):


You have an existing certificate that contains a portion of the domains you
requested (ref: /etc/letsencrypt/renewal/officelinuxpd2.my_dyanamic_dns_domain.org.conf)

It contains these names: officelinuxpd2.my_dyanamic_dns_domain.org

You requested these names for the new certificate: linuxpd2.my_dyanamic_dns_domain.org,
officelinuxpd2.my_dyanamic_dns_domain.org.

Do you want to expand and replace this existing certificate with the new
certificate?


(E)xpand/©ancel: E
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for linuxpd2.my_dyanamic_dns_domain.org
http-01 challenge for officelinuxpd2.my_dyanamic_dns_domain.org
Waiting for verification…
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/apache2/sites-enabled/000-default-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-enabled/000-default-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.


1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.


Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel): 1


Your existing certificate has been successfully renewed, and the new certificate
has been installed.

The new certificate covers the following domains: //linuxpd2.my_dyanamic_dns_domain.org
and //officelinuxpd2.my_dyanamic_dns_domain.org


IMPORTANT NOTES:

  • Congratulations! Your certificate and chain have been saved at:
    /etc/letsencrypt/live/officelinuxpd2.my_dyanamic_dns_domain.org/fullchain.pem

    Your key file has been saved at:
    /etc/letsencrypt/live/officelinuxpd2.my_dyanamic_dns_domain.org/privkey.pem
    Your cert will expire on 2020-05-0. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the “certonly” option. To non-interactively renew all of
    your certificates, run “certbot renew” - If you like Certbot, please consider supporting our work by:

    Donating to ISRG / Let’s Encrypt:
    Donating to EFF:

jason@linuxpd2:~$ sudo service apache2 restart

I am confused to as what is going on in the /etc/apache2/sites-enabled
or how i was suppossed to modify the virtual host.
I thought I had to create a new one that is why i made the officelinuxpd2.conf
but at this point I am lost. Below is a image of the folder and the content of each file:

image

000-default-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
	# 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.example.com
    # -----------20170716 initial setup adders:
   ServerName linuxpd2.my_dyanamic_dns_domain.org
   Redirect permanent //linuxpd2.my_dyanamic_dns_domain.org/
    # ---------- end initial setup adders -----------
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

	# 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


ServerAlias officelinuxpd2.my_dyanamic_dns_domain.org
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/officelinuxpd2.my_dyanamic_dns_domain.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/officelinuxpd2.my_dyanamic_dns_domain.org/privkey.pem
</VirtualHost>
</IfModule>





000-default.conf
<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.example.com
    # -----------20170716 initial setup adders:
    ServerName linuxpd2.my_dyanamic_dns_domain.org
    Redirect permanent / linuxpd2.my_dyanamic_dns_domain.org/
    # ---------- end initial setup adders -----------
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

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

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




**default-ssl.conf**
<IfModule mod_ssl.c>
	<VirtualHost _default_:443>
		ServerAdmin webmaster@localhost

		DocumentRoot /var/www/html
        # 20170716 initial installation of nextcloud updates are below
        ServerName linuxpd2.my_dyanamic_dns_domain.org
         <IfModule mod_headers.c>
            Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
        </IfModule>
        #----------- end updates---------------------
		# 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

		#   SSL Engine Switch:
		#   Enable/Disable SSL for this virtual host.
		SSLEngine on

		#   A self-signed (snakeoil) certificate can be created by installing
		#   the ssl-cert package. See
		#   /usr/share/doc/apache2/README.Debian.gz for more info.
		#   If both key and certificate are stored in the same file, only the
		#   SSLCertificateFile directive is needed.

		#   Server Certificate Chain:
		#   Point SSLCertificateChainFile at a file containing the
		#   concatenation of PEM encoded CA certificates which form the
		#   certificate chain for the server certificate. Alternatively
		#   the referenced file can be the same as SSLCertificateFile
		#   when the CA certificates are directly appended to the server
		#   certificate for convinience.
		#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt

		#   Certificate Authority (CA):
		#   Set the CA certificate verification path where to find CA
		#   certificates for client authentication or alternatively one
		#   huge file containing all of them (file must be PEM encoded)
		#   Note: Inside SSLCACertificatePath you need hash symlinks
		#		 to point to the certificate files. Use the provided
		#		 Makefile to update the hash symlinks after changes.
		#SSLCACertificatePath /etc/ssl/certs/
		#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt

		#   Certificate Revocation Lists (CRL):
		#   Set the CA revocation path where to find CA CRLs for client
		#   authentication or alternatively one huge file containing all
		#   of them (file must be PEM encoded)
		#   Note: Inside SSLCARevocationPath you need hash symlinks
		#		 to point to the certificate files. Use the provided
		#		 Makefile to update the hash symlinks after changes.
		#SSLCARevocationPath /etc/apache2/ssl.crl/
		#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl

		#   Client Authentication (Type):
		#   Client certificate verification type and depth.  Types are
		#   none, optional, require and optional_no_ca.  Depth is a
		#   number which specifies how deeply to verify the certificate
		#   issuer chain before deciding the certificate is not valid.
		#SSLVerifyClient require
		#SSLVerifyDepth  10

		#   SSL Engine Options:
		#   Set various options for the SSL engine.
		#   o FakeBasicAuth:
		#	 Translate the client X.509 into a Basic Authorisation.  This means that
		#	 the standard Auth/DBMAuth methods can be used for access control.  The
		#	 user name is the `one line' version of the client's X.509 certificate.
		#	 Note that no password is obtained from the user. Every entry in the user
		#	 file needs this password: `xxj31ZMTZzkVA'.
		#   o ExportCertData:
		#	 This exports two additional environment variables: SSL_CLIENT_CERT and
		#	 SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
		#	 server (always existing) and the client (only existing when client
		#	 authentication is used). This can be used to import the certificates
		#	 into CGI scripts.
		#   o StdEnvVars:
		#	 This exports the standard SSL/TLS related `SSL_*' environment variables.
		#	 Per default this exportation is switched off for performance reasons,
		#	 because the extraction step is an expensive operation and is usually
		#	 useless for serving static content. So one usually enables the
		#	 exportation for CGI and SSI requests only.
		#   o OptRenegotiate:
		#	 This enables optimized SSL connection renegotiation handling when SSL
		#	 directives are used in per-directory context.
		#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
		<FilesMatch "\.(cgi|shtml|phtml|php)$">
				SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
				SSLOptions +StdEnvVars
		</Directory>

		#   SSL Protocol Adjustments:
		#   The safe and default but still SSL/TLS standard compliant shutdown
		#   approach is that mod_ssl sends the close notify alert but doesn't wait for
		#   the close notify alert from client. When you need a different shutdown
		#   approach you can use one of the following variables:
		#   o ssl-unclean-shutdown:
		#	 This forces an unclean shutdown when the connection is closed, i.e. no
		#	 SSL close notify alert is send or allowed to received.  This violates
		#	 the SSL/TLS standard but is needed for some brain-dead browsers. Use
		#	 this when you receive I/O errors because of the standard approach where
		#	 mod_ssl sends the close notify alert.
		#   o ssl-accurate-shutdown:
		#	 This forces an accurate shutdown when the connection is closed, i.e. a
		#	 SSL close notify alert is send and mod_ssl waits for the close notify
		#	 alert of the client. This is 100% SSL/TLS standard compliant, but in
		#	 practice often causes hanging connections with brain-dead browsers. Use
		#	 this only for browsers where you know that their SSL implementation
		#	 works correctly.
		#   Notice: Most problems of broken clients are also related to the HTTP
		#   keep-alive facility, so you usually additionally want to disable
		#   keep-alive for those clients, too. Use variable "nokeepalive" for this.
		#   Similarly, one has to force some clients to use HTTP/1.0 to workaround
		#   their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
		#   "force-response-1.0" for this.
		# BrowserMatch "MSIE [2-6]" \
		#		nokeepalive ssl-unclean-shutdown \
		#		downgrade-1.0 force-response-1.0

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

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

nextcloud.conf
Alias /nextcloud “/var/www/nextcloud/”

<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Satisfy Any

Dav off

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud

officelinuxpd2.conf
VirtualHost *:443>
ServerName officelinuxpd2.my_dyanamic_dns_domain.org:443

# SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/officelinuxpd2.my_dyanamic_dns_domain.org/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/officelinuxpd2.my_dyanamic_dns_domain.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/officelinuxpd2.my_dyanamic_dns_domain.org/privkey.pem
SSLProtocol             all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-G
 SSLHonorCipherOrder >> the rest is the same as the collabora link  

Any suggestions would be great

currently i am getting the error: The page isn’t redirecting properly

thank you for your time
qu1nnThis text will be hidden

I would advise to disable all sites and the re-enable and get them working again them one by one. Beginning with the nextcould one.

You say you have a redirect problem. Could this be the cause?:

    ServerName linuxpd2.my_dyanamic_dns_domain.org
    Redirect permanent / linuxpd2.my_dyanamic_dns_domain.org/

It seems to redirect to itself.

after sweating it i figured that i would just delete the most recent files ;
000-default-le-ssl.conf from both
/etc/apache2/sites-available and
/etc/apache2/sites-enabled

along with the officelinuxpd2.conf that were modified 2/2/2020.


then i did a
sudo systemctl restart apache2

and now i am back up and running… at least nextcloud is.

So now how in the world do I add the virtualhost in apache2?
per the collabora instructions:


is it a new *.conf or is it a modification of some of the existing *.conf files?

thank you for your time
qu1nn