mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-08-08 00:39:50 +00:00
Add Collabora configuration guide and NullProofValidator class
A new document detailing the configuration steps for enabling Collabora in development has been added. This includes setting up ngrok and configuring both the Collabora and Symfony servers. Furthermore, a new class, NullProofValidator, has been created for validation during the development process. This class always returns true, making it useful for debugging purposes.
This commit is contained in:
parent
1b16d4fe3b
commit
2feea24c41
125
docs/source/installation/enable-collabora-for-dev.rst
Normal file
125
docs/source/installation/enable-collabora-for-dev.rst
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
|
||||||
|
Enable CODE for development
|
||||||
|
===========================
|
||||||
|
|
||||||
|
For editing a document, there must be a way to communicate between the collabora server and the symfony server, in
|
||||||
|
both direction. The domain name should also be the same for collabora server and for the browser which access to the
|
||||||
|
online editor.
|
||||||
|
|
||||||
|
Using ngrok (or other http tunnel)
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
One can configure a tunnel server to expose your local install to the web, and access to your local server using the
|
||||||
|
tunnel url.
|
||||||
|
|
||||||
|
Start ngrok
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
This can be achieve using `ngrok <https://ngrok.com/>`_.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The configuration of ngrok is outside of the scope of this document. Refers to the ngrok's documentation.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# ensuring that your server is running through http and port 8000
|
||||||
|
ngrok http 8000
|
||||||
|
# then open the link given by the ngrok utility and you should reach your app
|
||||||
|
|
||||||
|
At this step, ensure that you can reach your local app using the ngrok url.
|
||||||
|
|
||||||
|
Configure Collabora
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The collabora server must be executed online and configure to access to your ngrok installation. Ensure that the aliasgroup
|
||||||
|
exists for your ngrok application (`See the CODE documentation: <https://sdk.collaboraonline.com/docs/installation/Configuration.html#multihost-configuration>`_).
|
||||||
|
|
||||||
|
Configure your app
|
||||||
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Set the :code:`EDITOR_SERVER` variable to point to your collabora server, this should be done in your :code:`.env.local` file.
|
||||||
|
|
||||||
|
At this point, everything must be fine. In case of errors, watch the log from your collabora server, use the `profiler <https://symfony.com/doc/current/profiler.html>`_
|
||||||
|
to debug the requests.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
In case of error while validating proof (you'll see those message in the collabora's logs), you can temporarily disable
|
||||||
|
the proof validation adding this code snippet in `config/services.yaml`:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
when@dev:
|
||||||
|
# add only in dev environment, to avoid security problems
|
||||||
|
services:
|
||||||
|
ChampsLibres\WopiLib\Contract\Service\ProofValidatorInterface:
|
||||||
|
# this class will always validate proof
|
||||||
|
alias: Chill\WopiBundle\Service\Wopi\NullProofValidator
|
||||||
|
|
||||||
|
With a local CODE image
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
This configuration is not sure, and must be refined. The documentation does not seems to be entirely valid.
|
||||||
|
|
||||||
|
Use a local domain name and https for your app
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Use the proxy feature from embedded symfony server to run your app. `See the dedicated doc <https://symfony.com/doc/current/setup/symfony_server.html#local-domain-names>`
|
||||||
|
|
||||||
|
Configure also the `https certificate <https://symfony.com/doc/current/setup/symfony_server.html#enabling-tls>`_
|
||||||
|
|
||||||
|
In this example, your local domain name will be :code:`my-domain` and the url will be :code:`https://my-domain.wip`.
|
||||||
|
|
||||||
|
Ensure that the proxy is running.
|
||||||
|
|
||||||
|
Create a certificate database for collabora
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Collabora must validate your certificate generated by symfony console. For that, you need `to create a NSS database <https://sdk.collaboraonline.com/docs/installation/Configuration.html#validating-digital-signatures>`
|
||||||
|
and configure collabora to use it.
|
||||||
|
|
||||||
|
At first, export the certificate for symfony development. Use the graphical interface from your browser to get the
|
||||||
|
certificate as a PEM file.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# create your database in a custom directory
|
||||||
|
mkdir /path/to/your/directory
|
||||||
|
certutil -N -d /path/to/your/directory
|
||||||
|
cat /path/to/your/ca.crt | certutil -d . -A symfony -t -t C,P,C,u,w -a
|
||||||
|
|
||||||
|
Launch CODE properly configured
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
collabora:
|
||||||
|
image: collabora/code:latest
|
||||||
|
environment:
|
||||||
|
- SLEEPFORDEBUGGER=0
|
||||||
|
- DONT_GEN_SSL_CERT="True"
|
||||||
|
# add path to the database
|
||||||
|
- extra_params=--o:ssl.enable=false --o:ssl.termination=false --o:logging.level=7 -o:certificates.database_path=/etc/custom-certificates/nss-database
|
||||||
|
- username=admin
|
||||||
|
- password=admin
|
||||||
|
- dictionaries=en_US
|
||||||
|
- aliasgroup1=https://my-domain.wip
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:9980:9980"
|
||||||
|
volumes:
|
||||||
|
- "/path/to/your/directory/nss-database:/etc/custom-certificates/nss-database"
|
||||||
|
extra_hosts:
|
||||||
|
- "my-domain.wip:host-gateway"
|
||||||
|
|
||||||
|
Configure your app
|
||||||
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Into your :code:`.env.local` file:
|
||||||
|
|
||||||
|
.. code-block:: env
|
||||||
|
|
||||||
|
EDITOR_SERVER=http://${COLLABORA_HOST}:${COLLABORA_PORT}
|
||||||
|
|
||||||
|
At this step, you should be able to edit a document through collabora.
|
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Chill is a software for social workers
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Chill\WopiBundle\Service\Wopi;
|
||||||
|
|
||||||
|
use ChampsLibres\WopiLib\Contract\Service\ProofValidatorInterface;
|
||||||
|
use Psr\Http\Message\RequestInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a proof validator for WOPI services which always return true.
|
||||||
|
*
|
||||||
|
* Useful for debugging purposes.
|
||||||
|
*/
|
||||||
|
final readonly class NullProofValidator implements ProofValidatorInterface
|
||||||
|
{
|
||||||
|
public function isValid(RequestInterface $request): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user