---
title: "Installation"
manual: "Opinion"
version: "main"
permalink: "https://docs.typo3.org/permalink/vkemeter/opinion:installation@main"
source: "Installation/Index.rst"
rendered: "2026-10-23T14:21:05+00:00"
---

# Installation {#installation}

## Install with Composer {#installation-composer}

```bash
composer require vkemeter/opinion
```

## Install from the TER {#installation-ter}

Without Composer, install the extension from the
[TYPO3 Extension Repository](https://extensions.typo3.org/extension/opinion)
in **Admin Tools > Extensions**. Activating it creates the table and
the screenshot storage, the next section is not needed then.

> [!WARNING]
> Without Composer, the TYPO3 `var/` directory is `typo3temp/var/`
> inside the web root, and the screenshots are stored in
> `typo3temp/var/opinion/`. The `.htaccess` shipped with TYPO3 denies
> access to `typo3temp/var/` on Apache; on other web servers such as
> nginx, deny it in the server configuration.

## Set up the extension {#installation-setup}

```bash
vendor/bin/typo3 extension:setup
```

This creates

-   the table `tx_opinion_feedback` for the feedback records,
-   the file storage "Opinion screenshots" with the base path `var/opinion/`.

Afterwards configure at least the email recipients, see
[Extension configuration](https://docs.typo3.org/permalink/vkemeter/opinion:configuration-extension@main).

## Screenshot storage {#installation-storage}

Screenshots are stored in a local, non-public file storage below
`var/opinion/` in the project root, outside the web root. The storage is
configured relative to the public path (`../var/opinion/`), so it stays valid
when a deployment switches the release directory. As the path is inside the
project root, no entry in `$GLOBALS['TYPO3_CONF_VARS']['BE']['lockRootPath']`
is needed.

## Deployment {#installation-deployment}

`var/opinion/` must survive deployments. Configure it as a shared and
writable directory of your deployment tool, for example with Deployer:

**deploy.php**

```php
add('shared_dirs', ['var/opinion']);
add('writable_dirs', ['var/opinion']);
```

## Frontend: enable the admin panel {#installation-admin-panel}

The frontend entry point lives in the admin panel, which has to be shown for
the user:

-   The site set **Opinion: editor feedback** (`vkemeter/opinion`)
    sets `config.admPanel = 1`. Add it to the site, in the site configuration
    or in `config/sites/<site>/config.yaml`:

    **config/sites/\<site>/config.yaml**

    ```yaml
    dependencies:
      - vkemeter/opinion
    ```

    The site setting **Show the admin panel**
    (`opinion.adminPanel.enable`, default on) switches it off again for a
    single site. Without the set, add `config.admPanel = 1` to the TypoScript
    of the site yourself.
-   User TSconfig with at least one enabled admin panel module. Administrators
    get `admPanel.enable.all = 1` from the core, other users need for example:

    ```typoscript
    admPanel.enable.opinion = 1
    ```

    Site sets cannot provide user TSconfig, so this and
    [options.opinion.enable](https://docs.typo3.org/permalink/vkemeter/opinion:configuration-access@main) stay in the user or
    group records.
