mirror of
https://github.com/plausible/hosting.git
synced 2024-12-22 03:53:18 -06:00
v2.1.2
This commit is contained in:
commit
249b22d338
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
*
|
||||||
|
!compose.yml
|
||||||
|
!clickhouse/logs.xml
|
||||||
|
!clickhouse/ipv4-only.xml
|
||||||
|
!README.md
|
||||||
|
!.gitignore
|
88
README.md
Normal file
88
README.md
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
<p align="center">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/plausible/community-edition/blob/v2.1.1/images/logo_dark.svg" width="300">
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://github.com/plausible/community-edition/blob/v2.1.1/images/logo_light.svg" width="300">
|
||||||
|
<img src="https://github.com/plausible/community-edition/blob/v2.1.1/images/logo_light.svg" width="300">
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
A getting started guide to self-hosting <a href="https://plausible.io/blog/community-edition">Plausible Community Edition</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- **[Docker](https://docs.docker.com/engine/install/)** and **[Docker Compose](https://docs.docker.com/compose/install/)** must be installed on your machine.
|
||||||
|
- **CPU** must support **SSE 4.2** or **NEON** instruction set or higher (required by ClickHouse).
|
||||||
|
- At least **2 GB of RAM** is recommended for running ClickHouse and Plausible without fear of OOMs.
|
||||||
|
|
||||||
|
### Quick start
|
||||||
|
|
||||||
|
1. Clone this repository:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ git clone -b v2.1.2 --single-branch https://github.com/plausible/community-edition plausible-ce
|
||||||
|
Cloning into 'plausible-ce'...
|
||||||
|
remote: Enumerating objects: 13, done.
|
||||||
|
remote: Counting objects: 100% (10/10), done.
|
||||||
|
remote: Compressing objects: 100% (9/9), done.
|
||||||
|
remote: Total 13 (delta 0), reused 7 (delta 0), pack-reused 3 (from 1)
|
||||||
|
Receiving objects: 100% (13/13), done.
|
||||||
|
|
||||||
|
$ cd plausible-ce
|
||||||
|
|
||||||
|
$ ls -1
|
||||||
|
README.md
|
||||||
|
clickhouse/
|
||||||
|
compose.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Create and configure your [environment](https://docs.docker.com/compose/environment-variables/) file:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ touch .env
|
||||||
|
$ echo "BASE_URL=https://plausible.example.com" >> .env
|
||||||
|
$ echo "SECRET_KEY_BASE=$(openssl rand -base64 48)" >> .env
|
||||||
|
|
||||||
|
$ cat .env
|
||||||
|
BASE_URL=https://plausible.example.com
|
||||||
|
SECRET_KEY_BASE=As0fZsJlUpuFYSthRjT5Yflg/NlxkFKPRro72xMLXF8yInZ60s6xGGXYVqml+XN1
|
||||||
|
```
|
||||||
|
|
||||||
|
Make sure `$BASE_URL` is set to the actual domain where you plan to host the service. The domain must have a DNS entry pointing to your server for proper resolution and automatic Let's Encrypt TLS certificate issuance. More on that in the next step.
|
||||||
|
|
||||||
|
1. Expose Plausible server to the web with a [compose override file:](https://github.com/plausible/community-edition/wiki/compose-override)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ echo "HTTP_PORT=80" >> .env
|
||||||
|
$ echo "HTTPS_PORT=443" >> .env
|
||||||
|
|
||||||
|
$ cat > compose.override.yml << EOF
|
||||||
|
services:
|
||||||
|
plausible:
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Setting `HTTP_PORT=80` and `HTTPS_PORT=443` enables automatic Let's Encrypt TLS certificate issuance. You might want to choose different values if, for example, you plan to run Plausible behind [a reverse proxy.](https://github.com/plausible/community-edition/wiki/reverse-proxy)
|
||||||
|
|
||||||
|
1. Start the services with Docker Compose:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Visit your instance at `$BASE_URL` and create the first user.
|
||||||
|
|
||||||
|
### Wiki
|
||||||
|
|
||||||
|
For more information on installation, upgrades, configuration, and integrations please see our [wiki.](https://github.com/plausible/community-edition/wiki)
|
||||||
|
|
||||||
|
### Contact
|
||||||
|
|
||||||
|
- For release announcements please go to [GitHub releases.](https://github.com/plausible/analytics/releases)
|
||||||
|
- For a question or advice please go to [GitHub discussions.](https://github.com/plausible/analytics/discussions/categories/self-hosted-support)
|
3
clickhouse/ipv4-only.xml
Normal file
3
clickhouse/ipv4-only.xml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<clickhouse>
|
||||||
|
<listen_host>0.0.0.0</listen_host>
|
||||||
|
</clickhouse>
|
36
clickhouse/logs.xml
Normal file
36
clickhouse/logs.xml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<clickhouse>
|
||||||
|
<logger>
|
||||||
|
<level>warning</level>
|
||||||
|
<console>true</console>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<query_log replace="1">
|
||||||
|
<database>system</database>
|
||||||
|
<table>query_log</table>
|
||||||
|
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
||||||
|
<engine>
|
||||||
|
ENGINE = MergeTree
|
||||||
|
PARTITION BY event_date
|
||||||
|
ORDER BY (event_time)
|
||||||
|
TTL event_date + interval 30 day
|
||||||
|
SETTINGS ttl_only_drop_parts=1
|
||||||
|
</engine>
|
||||||
|
</query_log>
|
||||||
|
|
||||||
|
<metric_log>
|
||||||
|
<partition_by>event_date</partition_by>
|
||||||
|
<ttl>event_date + INTERVAL 30 DAY DELETE</ttl>
|
||||||
|
</metric_log>
|
||||||
|
|
||||||
|
<asynchronous_metric_log>
|
||||||
|
<partition_by>event_date</partition_by>
|
||||||
|
<ttl>event_date + INTERVAL 30 DAY DELETE</ttl>
|
||||||
|
</asynchronous_metric_log>
|
||||||
|
|
||||||
|
<!-- Stops unnecessary logging -->
|
||||||
|
<query_thread_log remove="remove" />
|
||||||
|
<text_log remove="remove" />
|
||||||
|
<trace_log remove="remove" />
|
||||||
|
<session_log remove="remove" />
|
||||||
|
<part_log remove="remove" />
|
||||||
|
</clickhouse>
|
90
compose.yml
Normal file
90
compose.yml
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
services:
|
||||||
|
plausible_db:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- db-data:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=postgres
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||||
|
start_interval: 2s
|
||||||
|
start_period: 1m
|
||||||
|
|
||||||
|
plausible_events_db:
|
||||||
|
image: clickhouse/clickhouse-server:24.3.3.102-alpine
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- event-data:/var/lib/clickhouse
|
||||||
|
- event-logs:/var/log/clickhouse-server
|
||||||
|
- ./clickhouse/logs.xml:/etc/clickhouse-server/config.d/logs.xml:ro
|
||||||
|
# This makes ClickHouse bind to IPv4 only, since Docker doesn't enable IPv6 in bridge networks by default.
|
||||||
|
# Fixes "Listen [::]:9000 failed: Address family for hostname not supported" warnings.
|
||||||
|
- ./clickhouse/ipv4-only.xml:/etc/clickhouse-server/config.d/ipv4-only.xml:ro
|
||||||
|
ulimits:
|
||||||
|
nofile:
|
||||||
|
soft: 262144
|
||||||
|
hard: 262144
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1"]
|
||||||
|
start_interval: 2s
|
||||||
|
start_period: 1m
|
||||||
|
|
||||||
|
plausible:
|
||||||
|
image: ghcr.io/plausible/community-edition:v2.1.2
|
||||||
|
restart: always
|
||||||
|
command: sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
|
||||||
|
depends_on:
|
||||||
|
plausible_db:
|
||||||
|
condition: service_healthy
|
||||||
|
plausible_events_db:
|
||||||
|
condition: service_healthy
|
||||||
|
volumes:
|
||||||
|
- plausible-data:/var/lib/plausible
|
||||||
|
ulimits:
|
||||||
|
nofile:
|
||||||
|
soft: 65535
|
||||||
|
hard: 65535
|
||||||
|
environment:
|
||||||
|
# required: https://github.com/plausible/community-edition/wiki/configuration#required
|
||||||
|
- BASE_URL=${BASE_URL}
|
||||||
|
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
|
||||||
|
# optional: https://github.com/plausible/community-edition/wiki/configuration#optional
|
||||||
|
# registration: https://github.com/plausible/community-edition/wiki/configuration#registration
|
||||||
|
- TOTP_VAULT_KEY
|
||||||
|
- DISABLE_REGISTRATION
|
||||||
|
- ENABLE_EMAIL_VERIFICATION
|
||||||
|
# web: https://github.com/plausible/community-edition/wiki/configuration#web
|
||||||
|
- HTTP_PORT
|
||||||
|
- HTTPS_PORT
|
||||||
|
# databases: https://github.com/plausible/community-edition/wiki/configuration#database
|
||||||
|
- DATABASE_URL
|
||||||
|
- CLICKHOUSE_DATABASE_URL
|
||||||
|
# Google: https://github.com/plausible/community-edition/wiki/configuration#google
|
||||||
|
- GOOGLE_CLIENT_ID
|
||||||
|
- GOOGLE_CLIENT_SECRET
|
||||||
|
# geolocation: https://github.com/plausible/community-edition/wiki/configuration#ip-geolocation
|
||||||
|
- IP_GEOLOCATION_DB
|
||||||
|
- GEONAMES_SOURCE_FILE
|
||||||
|
- MAXMIND_LICENSE_KEY
|
||||||
|
- MAXMIND_EDITION
|
||||||
|
# email: https://github.com/plausible/community-edition/wiki/configuration#email
|
||||||
|
- MAILER_ADAPTER
|
||||||
|
- MAILER_EMAIL
|
||||||
|
- MAILER_NAME
|
||||||
|
- SMTP_HOST_ADDR
|
||||||
|
- SMTP_HOST_PORT
|
||||||
|
- SMTP_USER_NAME
|
||||||
|
- SMTP_USER_PWD
|
||||||
|
- POSTMARK_API_KEY
|
||||||
|
- MAILGUN_API_KEY
|
||||||
|
- MAILGUN_DOMAIN
|
||||||
|
- MAILGUN_BASE_URI
|
||||||
|
- MANDRILL_API_KEY
|
||||||
|
- SENDGRID_API_KEY
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
db-data:
|
||||||
|
event-data:
|
||||||
|
event-logs:
|
||||||
|
plausible-data:
|
Loading…
Reference in New Issue
Block a user