Update Matomo Docker Konfiguration

This commit is contained in:
Lorenz Hilpert
2024-06-25 14:06:18 +02:00
parent e0ae79bc2a
commit 67cf380948
9 changed files with 17 additions and 12649 deletions

2
.gitignore vendored
View File

@@ -1,5 +1,7 @@
# See http://help.github.com/ignore-files/ for more about ignoring files. # See http://help.github.com/ignore-files/ for more about ignoring files.
.matomo
# compiled output # compiled output
/dist /dist
/tmp /tmp

View File

@@ -1,24 +0,0 @@
# This file is auto generated by Matomo, do not edit directly
# Please report any issue or improvement directly to the Matomo team.
# First, deny access to all files in this directory
<Files "*">
<IfModule mod_version.c>
<IfVersion < 2.4>
Order Deny,Allow
Deny from All
</IfVersion>
<IfVersion >= 2.4>
Require all denied
</IfVersion>
</IfModule>
<IfModule !mod_version.c>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from All
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</IfModule>
</Files>

View File

@@ -1,80 +0,0 @@
; <?php exit; ?> DO NOT REMOVE THIS LINE
; file automatically generated or modified by Matomo; you can manually override the default values in global.ini.php by redefining them in this file.
[database]
host = "db"
username = "matomo"
password = "95a79f96da8344e49c3e10c7f3ef3f60"
dbname = "matomo"
tables_prefix = "matomo_"
charset = "utf8mb4"
[General]
salt = "39e9934fb5c1a4128492dae16fe3b7dc"
trusted_hosts[] = "localhost:8080"
[PluginsInstalled]
PluginsInstalled[] = "Diagnostics"
PluginsInstalled[] = "Login"
PluginsInstalled[] = "CoreAdminHome"
PluginsInstalled[] = "UsersManager"
PluginsInstalled[] = "SitesManager"
PluginsInstalled[] = "Installation"
PluginsInstalled[] = "Monolog"
PluginsInstalled[] = "Intl"
PluginsInstalled[] = "JsTrackerInstallCheck"
PluginsInstalled[] = "CoreVue"
PluginsInstalled[] = "CorePluginsAdmin"
PluginsInstalled[] = "CoreHome"
PluginsInstalled[] = "WebsiteMeasurable"
PluginsInstalled[] = "IntranetMeasurable"
PluginsInstalled[] = "CoreVisualizations"
PluginsInstalled[] = "Proxy"
PluginsInstalled[] = "API"
PluginsInstalled[] = "Widgetize"
PluginsInstalled[] = "Transitions"
PluginsInstalled[] = "LanguagesManager"
PluginsInstalled[] = "Actions"
PluginsInstalled[] = "Dashboard"
PluginsInstalled[] = "MultiSites"
PluginsInstalled[] = "Referrers"
PluginsInstalled[] = "UserLanguage"
PluginsInstalled[] = "DevicesDetection"
PluginsInstalled[] = "Goals"
PluginsInstalled[] = "Ecommerce"
PluginsInstalled[] = "SEO"
PluginsInstalled[] = "Events"
PluginsInstalled[] = "UserCountry"
PluginsInstalled[] = "GeoIp2"
PluginsInstalled[] = "VisitsSummary"
PluginsInstalled[] = "VisitFrequency"
PluginsInstalled[] = "VisitTime"
PluginsInstalled[] = "VisitorInterest"
PluginsInstalled[] = "RssWidget"
PluginsInstalled[] = "Feedback"
PluginsInstalled[] = "TwoFactorAuth"
PluginsInstalled[] = "CoreUpdater"
PluginsInstalled[] = "CoreConsole"
PluginsInstalled[] = "ScheduledReports"
PluginsInstalled[] = "UserCountryMap"
PluginsInstalled[] = "Live"
PluginsInstalled[] = "PrivacyManager"
PluginsInstalled[] = "ImageGraph"
PluginsInstalled[] = "Annotations"
PluginsInstalled[] = "MobileMessaging"
PluginsInstalled[] = "Overlay"
PluginsInstalled[] = "SegmentEditor"
PluginsInstalled[] = "Insights"
PluginsInstalled[] = "Morpheus"
PluginsInstalled[] = "Contents"
PluginsInstalled[] = "BulkTracking"
PluginsInstalled[] = "Resolution"
PluginsInstalled[] = "DevicePlugins"
PluginsInstalled[] = "Heartbeat"
PluginsInstalled[] = "Marketplace"
PluginsInstalled[] = "ProfessionalServices"
PluginsInstalled[] = "UserId"
PluginsInstalled[] = "CustomJsTracker"
PluginsInstalled[] = "Tour"
PluginsInstalled[] = "PagePerformance"
PluginsInstalled[] = "CustomDimensions"

View File

@@ -1,12 +0,0 @@
<?php
return array(
'Matomo\Cache\Backend' => Piwik\DI::autowire('Matomo\Cache\Backend\ArrayCache'),
'Piwik\Translation\Loader\LoaderInterface' => Piwik\DI::autowire('Piwik\Translation\Loader\LoaderCache')
->constructorParameter('loader', Piwik\DI::get('Piwik\Translation\Loader\DevelopmentLoader')),
'Piwik\Translation\Loader\DevelopmentLoader' => Piwik\DI::create()
->constructor(Piwik\DI::get('Piwik\Translation\Loader\JsonFileLoader')),
);

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,265 +0,0 @@
<?php
use Matomo\Cache\Eager;
use Piwik\SettingsServer;
return [
'path.root' => PIWIK_DOCUMENT_ROOT,
'path.misc.user' => 'misc/user/',
'path.tmp' => function (\Piwik\Container\Container $c) {
$root = PIWIK_USER_PATH;
// TODO remove that special case and instead have plugins override 'path.tmp' to add the instance id
if ($c->has('ini.General.instance_id')) {
$instanceId = $c->get('ini.General.instance_id');
$instanceId = $instanceId ? '/' . $instanceId : '';
} else {
$instanceId = '';
}
/** @var Piwik\Config\ $config */
$config = $c->get('Piwik\Config');
$general = $config->General;
$tmp = empty($general['tmp_path']) ? '/tmp' : $general['tmp_path'];
return $root . $tmp . $instanceId;
},
'path.tmp.templates' => Piwik\DI::string('{path.tmp}/templates_c'),
'path.cache' => Piwik\DI::string('{path.tmp}/cache/tracker/'),
'view.clearcompiledtemplates.enable' => true,
'twig.cache' => Piwik\DI::string('{path.tmp.templates}'),
'Matomo\Cache\Eager' => function (\Piwik\Container\Container $c) {
$backend = $c->get('Matomo\Cache\Backend');
$cacheId = $c->get('cache.eager.cache_id');
if (SettingsServer::isTrackerApiRequest()) {
$eventToPersist = 'Tracker.end';
$cacheId .= 'tracker';
} else {
$eventToPersist = 'Request.dispatch.end';
$cacheId .= 'ui';
}
$cache = new Eager($backend, $cacheId);
\Piwik\Piwik::addAction($eventToPersist, function () use ($cache) {
$cache->persistCacheIfNeeded(43200);
});
return $cache;
},
'Matomo\Cache\Backend' => function (\Piwik\Container\Container $c) {
// If Piwik is not installed yet, it's possible the tmp/ folder is not writable
// we prevent failing with an unclear message eg. coming from doctrine-cache
// by forcing to use a cache backend which always works ie. array
if (!\Piwik\SettingsPiwik::isMatomoInstalled()) {
$backend = 'array';
} else {
try {
$backend = $c->get('ini.Cache.backend');
} catch (\Piwik\Exception\DI\NotFoundException $ex) {
$backend = 'chained'; // happens if global.ini.php is not available
}
}
return \Piwik\Cache::buildBackend($backend);
},
'cache.eager.cache_id' => function () {
return 'eagercache-' . str_replace(['.', '-'], '', \Piwik\Version::VERSION) . '-';
},
/**
* A list of API query parameters that map to entity IDs, for example, `idGoal` for goals.
*
* If your plugin introduces new entities that can be fetched or manipulated by ID through
* API requests, you should add the query parameters that represent the new entity's IDs
* to this array.
*/
'entities.idNames' => Piwik\DI::add(['idGoal', 'idDimension']),
/**
* If your plugin uses custom query parameters in API requests (that is, query parameters not used
* by a core plugin), and you want to be able to use those query parameters in system tests, you
* will need to add them, via DI, to this array. Otherwise, in system tests, they will be
* silently ignored.
*
* Note: if the query parameter has been added to `'entities.idNames'`, it does not need to be added
* here as well.
*/
'DocumentationGenerator.customParameters' => [],
\Piwik\Log\LoggerInterface::class => Piwik\DI::create(\Piwik\Log\NullLogger::class),
'Piwik\Translation\Loader\LoaderInterface' => Piwik\DI::autowire('Piwik\Translation\Loader\LoaderCache')
->constructorParameter('loader', Piwik\DI::get('Piwik\Translation\Loader\JsonFileLoader')),
'DeviceDetector\Cache\Cache' => Piwik\DI::autowire('Piwik\DeviceDetector\DeviceDetectorCache')->constructor(86400),
// specify plugins to load on demand via DI config. mostly for tests.
'plugins.shouldLoadOnDemand' => [],
// allow users to override plugin hardcoded value and avoid loading on demand
'plugins.shouldNotLoadOnDemand' => [],
'observers.global' => [],
'dev.disable_plugin_update_checks' => false,
/**
* By setting this option to false, the check that the DB schema version matches the version of the source code will
* be no longer performed. Thus it allows you to execute for example a newer version of Matomo with an older Matomo
* database version. Please note disabling this setting is not recommended because often an older DB version is not
* compatible with newer source code.
* If you disable this setting, make sure to execute the updates after updating the source code. The setting can be
* useful if you want to update Matomo without any outage when you know the current source code update will still
* run fine for a short time while in the background the database updates are running.
*/
'EnableDbVersionCheck' => true,
'fileintegrity.ignore' => Piwik\DI::add([
'*.htaccess',
'*web.config',
'bootstrap.php',
'favicon.ico',
'robots.txt',
'.bowerrc',
'.lfsconfig',
'.phpstorm.meta.php',
'config/config.ini.php',
'config/config.php',
'config/common.ini.php',
'config/*.config.ini.php',
'config/manifest.inc.php',
'misc/*.dat',
'misc/*.dat.gz',
'misc/*.mmdb',
'misc/*.mmdb.gz',
'misc/*.bin',
'misc/user/*png',
'misc/user/*svg',
'misc/user/*js',
'misc/user/*/config.ini.php',
'misc/package',
'misc/package/WebAppGallery/*.xml',
'misc/package/WebAppGallery/install.sql',
'plugins/ImageGraph/fonts/unifont.ttf',
'plugins/*/config/tracker.php',
'plugins/*/config/config.php',
'vendor/autoload.php',
'vendor/composer/autoload_real.php',
'vendor/szymach/c-pchart/app/*',
'tmp/*',
// Search engine sites verification
'google*.html',
'BingSiteAuth.xml',
'yandex*.html',
// common files on shared hosters
'php.ini',
'.user.ini',
'error_log',
// Files below are not expected but they used to be present in older Piwik versions and may be still here
// As they are not going to cause any trouble we won't report them as 'File to delete'
'*.coveralls.yml',
'*.scrutinizer.yml',
'*.gitignore',
'*.gitkeep',
'*.gitmodules',
'*.gitattributes',
'*.git-blame-ignore-revs',
'*.bower.json',
'*.travis.yml',
]),
'Piwik\EventDispatcher' => Piwik\DI::autowire()->constructorParameter('observers', Piwik\DI::get('observers.global')),
'login.allowlist.ips' => function (\Piwik\Container\Container $c) {
/** @var Piwik\Config\ $config */
$config = $c->get('Piwik\Config');
$general = $config->General;
$ips = [];
if (!empty($general['login_allowlist_ip']) && is_array($general['login_allowlist_ip'])) {
$ips = $general['login_allowlist_ip'];
} elseif (!empty($general['login_whitelist_ip']) && is_array($general['login_whitelist_ip'])) {
// for BC
$ips = $general['login_whitelist_ip'];
}
$ipsResolved = [];
foreach ($ips as $ip) {
$ip = trim($ip);
if (filter_var($ip, FILTER_VALIDATE_IP) || \Matomo\Network\IPUtils::getIPRangeBounds($ip) !== null) {
$ipsResolved[] = $ip;
} else {
$lazyCache = \Piwik\Cache::getLazyCache();
$cacheKey = 'DNS.' . md5($ip);
$resolvedIps = $lazyCache->fetch($cacheKey);
if (!is_array($resolvedIps)) {
$resolvedIps = [];
$ipFromHost = @gethostbyname($ip);
if (!empty($ipFromHost) && $ipFromHost !== $ip) {
$resolvedIps[] = $ipFromHost;
}
if (function_exists('dns_get_record')) {
$entry = @dns_get_record($ip, DNS_AAAA);
if (
!empty($entry['0']['ipv6'])
&& filter_var($entry['0']['ipv6'], FILTER_VALIDATE_IP)
) {
$resolvedIps[] = $entry['0']['ipv6'];
}
}
$lazyCache->save($cacheKey, $resolvedIps, 30);
}
$ipsResolved = array_merge($ipsResolved, $resolvedIps);
}
}
return $ipsResolved;
},
/**
* This defines a list of hostnames Matomo's Http class will deny requests to. Wildcards (*) can be used in the
* beginning to match any subdomain level or in the end to match any tlds
*/
'http.blocklist.hosts' => [
'*.amazonaws.com',
],
'Piwik\Tracker\VisitorRecognizer' => Piwik\DI::autowire()
->constructorParameter('trustCookiesOnly', Piwik\DI::get('ini.Tracker.trust_visitors_cookies'))
->constructorParameter('visitStandardLength', Piwik\DI::get('ini.Tracker.visit_standard_length'))
->constructorParameter('lookbackNSecondsCustom', Piwik\DI::get('ini.Tracker.window_look_back_for_visitor')),
'Piwik\Tracker\Settings' => Piwik\DI::autowire()
->constructorParameter(
'isSameFingerprintsAcrossWebsites',
Piwik\DI::get('ini.Tracker.enable_fingerprinting_across_websites')
),
'archiving.performance.logger' => null,
\Piwik\CronArchive\Performance\Logger::class => Piwik\DI::autowire()
->constructorParameter('logger', Piwik\DI::get('archiving.performance.logger')),
\Piwik\Concurrency\LockBackend::class => \Piwik\DI::get(\Piwik\Concurrency\LockBackend\MySqlLockBackend::class),
\Piwik\Segment\SegmentsList::class => function () {
return \Piwik\Segment\SegmentsList::get();
}
];

View File

File diff suppressed because it is too large Load Diff

16
db.env
View File

@@ -1,11 +1,13 @@
MYSQL_PASSWORD= MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE=matomo MYSQL_DATABASE=matomo_db
MYSQL_USER=matomo MYSQL_USER=matomo
MARIADB_ROOT_PASSWORD=matomo MYSQL_PASSWORD=omotam
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true
MATOMO_DATABASE_HOST=db
MATOMO_DATABASE_ADAPTER=mysql MATOMO_DATABASE_ADAPTER=mysql
MATOMO_DATABASE_TABLES_PREFIX=matomo_ MATOMO_DATABASE_TABLES_PREFIX=matomo_
MATOMO_DATABASE_USERNAME=matomo MATOMO_DATABASE_USERNAME=matomo
MATOMO_DATABASE_PASSWORD= MATOMO_DATABASE_PASSWORD=omotam
MATOMO_DATABASE_DBNAME=matomo MATOMO_DATABASE_DBNAME=matomo_db
MARIADB_AUTO_UPGRADE=1
MARIADB_INITDB_SKIP_TZINFO=1

View File

@@ -1,25 +1,22 @@
services: services:
db: db:
image: mariadb:10.11 image: mariadb:latest
command: --max-allowed-packet=64MB command: --max-allowed-packet=64MB
restart: always restart: always
volumes: volumes:
- db:/var/lib/mysql:Z - db:/var/lib/mysql:Z
environment:
- MARIADB_AUTO_UPGRADE=1
- MARIADB_DISABLE_UPGRADE_BACKUP=1
env_file: env_file:
- ./db.env - ./db.env
app: app:
image: matomo image: matomo:latest
restart: always restart: always
depends_on:
- db
volumes: volumes:
- ./config:/var/www/html/config:z - ./.matomo/config:/var/www/html/config:z
- ./logs:/var/www/html/logs:z - ./.matomo/logs:/var/www/html/logs:z
- matomo:/var/www/html:z - matomo:/var/www/html:z
environment:
- MATOMO_DATABASE_HOST=db
env_file: env_file:
- ./db.env - ./db.env
ports: ports: