diff --git a/.gitignore b/.gitignore index ae85196..4cce985 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ !clickhouse/logs.xml !clickhouse/ipv4-only.xml !clickhouse/low-resources.xml +!clickhouse/default-profile-low-resources-overrides.xml !README.md !LICENSE !.gitignore diff --git a/README.md b/README.md index de17e33..596ba13 100644 --- a/README.md +++ b/README.md @@ -20,66 +20,67 @@ ### Quick start -1. Clone this repository: - - ```console - $ git clone -b v3.1.0 --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 - clickhouse/ - compose.yml - LICENSE - README.md - ``` - -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. - - Also ensure `$SECRET_KEY_BASE` is set to at least a **64-byte** string. - -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. +#### 1. Clone this repository + +```console +$ git clone -b v3.2.0 --single-branch https://github.com/plausible/community-edition plausible-ce +Cloning into 'plausible-ce'... + +$ cd plausible-ce + +$ ls -1 +clickhouse/ +compose.yml +LICENSE +README.md +``` + +#### 2. 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. + +Also ensure `$SECRET_KEY_BASE` is set to at least a **64-byte** string. + +> [!TIP] +> To evaluate CE locally, set `BASE_URL=http://localhost:8000` (or any other port on your system). + +#### 3. 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) + +> [!TIP] +> To evaluate CE locally, you only need to set `HTTP_PORT` and expose it on the system port from the previous step, e.g. for `BASE_URL=http://localhost:8000` and server `HTTP_PORT=80`, `ports` override should be `- 8000:80`. + +#### 4. Start the services with Docker Compose: + +```console +$ docker compose up -d +``` + +#### 5. Visit your instance at `$BASE_URL` and create the first user. > [!NOTE] > Plausible CE is funded by our cloud subscribers. diff --git a/clickhouse/default-profile-low-resources-overrides.xml b/clickhouse/default-profile-low-resources-overrides.xml new file mode 100644 index 0000000..20874e1 --- /dev/null +++ b/clickhouse/default-profile-low-resources-overrides.xml @@ -0,0 +1,19 @@ + + + + + + 1 + + 8192 + + 1 + + 0 + + 0 + + + diff --git a/clickhouse/low-resources.xml b/clickhouse/low-resources.xml index a75e843..7734a62 100644 --- a/clickhouse/low-resources.xml +++ b/clickhouse/low-resources.xml @@ -1,23 +1,4 @@ - - + 524288000 - - - - - 1 - - 8192 - - 1 - - 0 - - 0 - - diff --git a/compose.yml b/compose.yml index 8395c23..cc97bb2 100644 --- a/compose.yml +++ b/compose.yml @@ -20,9 +20,10 @@ services: # 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 - # This makes ClickHouse consume less resources, which is useful for small setups. + # The following configuration files make ClickHouse consume less resources, which is useful for small setups. # https://clickhouse.com/docs/en/operations/tips#using-less-than-16gb-of-ram - ./clickhouse/low-resources.xml:/etc/clickhouse-server/config.d/low-resources.xml:ro + - ./clickhouse/default-profile-low-resources-overrides.xml:/etc/clickhouse-server/users.d/default-profile-low-resources-overrides.xml:ro ulimits: nofile: soft: 262144 @@ -30,11 +31,15 @@ services: environment: - CLICKHOUSE_SKIP_USER_SETUP=1 healthcheck: - test: ["CMD-SHELL", "wget --no-verbose --tries=1 -O - http://127.0.0.1:8123/ping || exit 1"] + test: + [ + "CMD-SHELL", + "wget --no-verbose --tries=1 -O - http://127.0.0.1:8123/ping || exit 1", + ] start_period: 1m plausible: - image: ghcr.io/plausible/community-edition:v3.1.0 + image: ghcr.io/plausible/community-edition:v3.2.0 restart: always command: sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run" depends_on: