From f49a3d0983c22443c99375250dac857214194e3e Mon Sep 17 00:00:00 2001 From: Thomas Cenni <33039107+thomascenni@users.noreply.github.com> Date: Thu, 29 Oct 2020 23:41:37 -0300 Subject: [PATCH] Adding Plausible Analytics. (#292) * Adding Plausible Analytics. * Prettify YAML. * Update plausible.yml Removed :ro ignored by Caprover. Added list of docker images used by the app. --- public/v4/apps/plausible.yml | 136 ++++++++++++++++++++++++++++++++++ public/v4/logos/plausible.png | Bin 0 -> 14118 bytes 2 files changed, 136 insertions(+) create mode 100644 public/v4/apps/plausible.yml create mode 100644 public/v4/logos/plausible.png diff --git a/public/v4/apps/plausible.yml b/public/v4/apps/plausible.yml new file mode 100644 index 0000000..cd7d02a --- /dev/null +++ b/public/v4/apps/plausible.yml @@ -0,0 +1,136 @@ +captainVersion: 4 + +services: + $$cap_appname-mail: + image: bytemark/smtp + restart: always + environment: + RELAY_HOST: $$cap_RELAY_HOST + RELAY_PORT: $$cap_RELAY_PORT + RELAY_USERNAME: $$cap_RELAY_USERNAME + RELAY_PASSWORD: $$cap_RELAY_PASSWORD + caproverExtra: + notExposeAsWebApp: "true" + + $$cap_appname-postgres: + image: postgres:12-alpine + volumes: + - $$cap_appname-postgres-data:/var/lib/postgresql/data + environment: + POSTGRES_USER: plausible + POSTGRES_PASSWORD: $$cap_POSTGRES_PASSWORD + caproverExtra: + notExposeAsWebApp: "true" + + $$cap_appname-clickhouse: + image: yandex/clickhouse-server:20.8.5.45 + volumes: + - $$cap_appname-clickhouse-data:/var/lib/clickhouse + caproverExtra: + notExposeAsWebApp: "true" + + $$cap_appname-geoip: + image: maxmindinc/geoipupdate:v4.5 + environment: + GEOIPUPDATE_ACCOUNT_ID: $$cap_GEOIPUPDATE_ACCOUNT_ID + GEOIPUPDATE_LICENSE_KEY: $$cap_GEOIPUPDATE_LICENSE_KEY + GEOIPUPDATE_EDITION_IDS: GeoLite2-Country + GEOIPUPDATE_FREQUENCY: 168 + volumes: + - $$cap_appname-geoip-data:/usr/share/GeoIP + + $$cap_appname: + depends_on: + - $$cap_appname-postgres + - $$cap_appname-clickhouse + - $$cap_appname-mail + caproverExtra: + containerHttpPort: "8000" + dockerfileLines: + - FROM plausible/analytics:v1.1.1 + - CMD ["sh", "-c", "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"] + environment: + ADMIN_USER_EMAIL: $$cap_ADMIN_USER_EMAIL + ADMIN_USER_NAME: $$cap_ADMIN_USER_NAME + ADMIN_USER_PWD: $$cap_ADMIN_USER_PWD + BASE_URL: http://$$cap_appname.$$cap_root_domain + DATABASE_URL: postgres://plausible:$$cap_POSTGRES_PASSWORD@srv-captain--$$cap_appname-postgres:5432/plausible + CLICKHOUSE_DATABASE_URL: http://srv-captain--$$cap_appname-clickhouse:8123/plausible + SECRET_KEY_BASE: $$cap_gen_random_hex(64) + SIGNING_SALT: $$cap_gen_random_hex(24) + DISABLE_REGISTRATION: "true" + DISABLE_SUBSCRIPTION: "true" + MAILER_EMAIL: $$cap_RELAY_USERNAME + SMTP_HOST_ADDR: srv-captain--$$cap_appname-mail + SMTP_HOST_PORT: "25" + GEOLITE2_COUNTRY_DB: "/geoip/GeoLite2-Country.mmdb" + volumes: + - $$cap_appname-geoip-data:/geoip + +caproverOneClickApp: + variables: + - defaultValue: "admin@example.com" + description: This is the admin email. Please change it. + id: $$cap_ADMIN_USER_EMAIL + label: ADMIN_USER_EMAIL + validRegex: /^([^\s^\/])+$/ + - defaultValue: "admin" + description: This is the admin username. Please change it. + id: $$cap_ADMIN_USER_NAME + label: ADMIN_USER_NAME + validRegex: /^([^\s^\/])+$/ + - defaultValue: "password" + description: This is the admin password. Please change it. + id: $$cap_ADMIN_USER_PWD + label: ADMIN_USER_PWD + validRegex: /^([^\s^\/])+$/ + - defaultValue: "plausible" + description: This is the PostgreSQL password for user 'plausible'. Please change it. + id: $$cap_POSTGRES_PASSWORD + label: POSTGRES_PASSWORD + validRegex: /^([^\s^\/])+$/ + - defaultValue: "smtp.mailgun.org" + description: This is the SMTP host for sending email. Use Mailgun or whatever other service. + id: $$cap_RELAY_HOST + label: RELAY_HOST + validRegex: /^([^\s^\/])+$/ + - defaultValue: "587" + description: This is the port for the SMTP host. Please change it if needed. + id: $$cap_RELAY_PORT + label: RELAY_PORT + validRegex: /^([^\s^\/])+$/ + - description: This is the username for logging into the SMTP host. Please change it according to your host. + id: $$cap_RELAY_USERNAME + label: RELAY_USERNAME + validRegex: /^([^\s^\/])+$/ + - description: This is the password for logging into the SMTP host. Please change it according to your host. + id: $$cap_RELAY_PASSWORD + label: RELAY_PASSWORD + validRegex: /^([^\s^\/])+$/ + - description: Provide your own ACCOUNT_ID, you can sign-up at https://www.maxmind.com/en/geoip2-services-and-databases + id: $$cap_GEOIPUPDATE_ACCOUNT_ID + label: GEOIPUPDATE_ACCOUNT_ID + validRegex: /^([^\s^\/])+$/ + - description: Provide the corresponding License Key for your own ACCOUNT_ID. + id: $$cap_GEOIPUPDATE_LICENSE_KEY + label: GEOIPUPDATE_LICENSE_KEY + validRegex: /^([^\s^\/])+$/ + instructions: + start: >- + Plausible is a lightweight and open-source website analytics tool. + It doesn’t use cookies and is fully compliant with GDPR, CCPA and PECR. Made and hosted in the EU. + This one click app uses the: + - official image from https://hub.docker.com/r/plausible/analytics + - https://hub.docker.com/r/bytemark/smtp, that allows linked containers to send outgoing email + - official PostgreSQL image based on Alpine Linux + - ClickHouse image https://hub.docker.com/r/yandex/clickhouse-server, an open-source column-oriented database + - official image from https://hub.docker.com/r/maxmindinc/geoipupdate, the well known MaxMind GeoIP Update Tool. + end: >- + Plausible.io is deployed and available as $$cap_appname. + In case you add a new domain to your application, remember to set the environment variable BASE_URL accordingly. + + IMPORTANT: It will take up to 2 minutes for Plausible to be ready. Before that, you might see 502 error page. + displayName: Plausible + isOfficial: false + description: Plausible is a lightweight and open-source website analytics tool. + documentation: Taken from https://plausible.io/. diff --git a/public/v4/logos/plausible.png b/public/v4/logos/plausible.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d76ad88fa769cbd47ef1b953298e188cbb1f70 GIT binary patch literal 14118 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 literal 0 HcmV?d00001