matomo-bin
The source is a prebuilt tarball from the official project's build domain (builds.matomo.org), which is plausibly project-owned; the package installs static web files and performs standard relocations, with no execution of remote code or obfuscated payloads.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The source is a prebuilt tarball from the official project's build domain (builds.matomo.org), which is plausibly project-owned; the package installs static web files and performs standard relocations, with no execution of remote code or obfuscated payloads.
1 higher static finding superseded - not the current verdict (shown for transparency)
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:24
"https://builds.matomo.org/${_pkgname}-${pkgver}.tar.gz"
PKGBUILD
1 offending line(s) highlighted# Maintainer: Martin Rys <https://rys.rs/contact>
# Contributor: Chris Morgan <me@chrismorgan.info>
# Contributor: Carsten Feuls <archlinux dot carstenfeuls dot de>
# Contributor: Nils Czernia <nils at czserver dot de>
pkgname=matomo-bin
_pkgname=matomo
pkgver=5.14.2
pkgrel=1
pkgdesc="A real-time web analytics platform"
arch=("any")
url="https://matomo.org/"
license=("GPL-3.0-or-later")
depends=("php" "php-gd")
replaces=("piwik")
conflicts=("matomo")
provides=("matomo")
optdepends=(
"mariadb: Database server"
"python: Log importer script"
"geoipupdate: GeoIP database")
install="${_pkgname}.install"
source=(
"https://builds.matomo.org/${_pkgname}-${pkgver}.tar.gz"
"https://builds.matomo.org/${_pkgname}-${pkgver}.tar.gz.asc")
backup=("usr/share/webapps/${_pkgname}/piwik.js" "usr/share/webapps/${_pkgname}/matomo.js")
sha256sums=('769982163c1677cfd23490f20daffbaa6d0d39b32844399dbfbacba2457fefb7'
'SKIP')
validpgpkeys=("F529A27008477483777FC23D63BB30D0E5D2C749")
package() {
install -d "${pkgdir}/usr/share/webapps"
cp -r "${srcdir}/${_pkgname}" "${pkgdir}/usr/share/webapps/${_pkgname}"
# Some extensions want to append to piwik.js (matomo.js from 3.8.0 onwards),
# so we reluctantly let them.
chmod g+w "${pkgdir}/usr/share/webapps/${_pkgname}/piwik.js"
chmod g+w "${pkgdir}/usr/share/webapps/${_pkgname}/matomo.js"
# While installing matomo, it insists on being able to write to the config directory,
# because it creates config.ini.php. After it’s installed, you can make it read-only,
# e.g. by `chown -R root:http /etc/webapps/${_pkgname}`
install -d "${pkgdir}/etc/webapps"
mv "${pkgdir}/usr/share/webapps/${_pkgname}/config" "${pkgdir}/etc/webapps/${_pkgname}"
ln -s "/etc/webapps/${_pkgname}" "${pkgdir}/usr/share/webapps/matomo/config"
# matomo uses this tmp dir for writing its own data;
# but it belongs in /var rather than /usr.
rmdir "${pkgdir}/usr/share/webapps/matomo/tmp"
install -dm700 "${pkgdir}/var/lib/webapps/matomo/tmp"
ln -s "/var/lib/webapps/matomo/tmp" "${pkgdir}/usr/share/webapps/matomo/tmp"
# Installing or upgrading non-core plugins requires write access to plugins/;
# we could try g+w on the directory and try to restrict core plugins, but
# then you’ve got mixed ownership (anything it creates will be http:http
# instead of root:http) which is nasty. Another approach is to put `plugins`
# in /var/lib with core plugins *actually* in /usr/share and symlinked back;
# but that’s getting too clever for my sanity at present: this is all getting
# rather bothersome; I’m tired of messing around with PHP apps that are
# ill-designed for hardening and not designed for use in the scope of a
# system package manager. So for now at least, we’re just going to leave it
# as it is, chown the whole plugins directory in matomo.install, and wash our
# hands of it.
# GeoLite2-City.mmdb is provided by geoipupdate, which is optdepends.
# See /etc/GeoIP.conf and make sure to enable geoipupdate's timer
# Keep in mind it takes a while before a newly generated license becomes active
# I figure a dead symlink should be safe if the DB is missing.
ln -s "/var/lib/GeoIP/GeoLite2-City.mmdb" "${pkgdir}/usr/share/webapps/matomo/misc"
}
Changes since previous scan
--- PKGBUILD @ 2026-06-19 19:07+++ PKGBUILD @ 2026-10-30 00:29@@ -5,7 +5,7 @@ pkgname=matomo-bin _pkgname=matomo-pkgver=5.11.2+pkgver=5.14.2 pkgrel=1 pkgdesc="A real-time web analytics platform" arch=("any")@@ -24,7 +24,7 @@ "https://builds.matomo.org/${_pkgname}-${pkgver}.tar.gz" "https://builds.matomo.org/${_pkgname}-${pkgver}.tar.gz.asc") backup=("usr/share/webapps/${_pkgname}/piwik.js" "usr/share/webapps/${_pkgname}/matomo.js")-sha256sums=('ceb9c6111fabce8541efea22548bd30c602e4067b825fc29fbc6b2b6229b56f1'+sha256sums=('769982163c1677cfd23490f20daffbaa6d0d39b32844399dbfbacba2457fefb7' 'SKIP') validpgpkeys=("F529A27008477483777FC23D63BB30D0E5D2C749")Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 23:54:04 | Medium | 1 |
| 2026-06-19 19:07:35 | Clean | 2 |
| 2026-06-18 17:53:10 | Clean | 2 |
| 2026-06-18 16:11:54 | Medium | 1 |