mirror of
https://github.com/plausible/hosting.git
synced 2025-07-01 17:47:29 -05:00
Add PoC example
This commit is contained in:
@ -12,58 +12,70 @@
|
|||||||
* Setup
|
* Setup
|
||||||
|
|
||||||
#+NAME: create namespace
|
#+NAME: create namespace
|
||||||
#+begin_src shell :results silent
|
#+begin_src tmate :window plausible-setup
|
||||||
kubectl create ns plausible
|
kubectl create ns plausible
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: label the namespace
|
||||||
|
#+BEGIN_SRC tmate :window plausible-setup
|
||||||
|
kubectl label ns plausible cert-manager-tls=sync --overwrite
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
#+NAME: create the database secrets
|
#+NAME: create the database secrets
|
||||||
#+begin_src shell :results silent
|
#+begin_src tmate :window plausible-setup
|
||||||
kubectl -n plausible create secret generic postgres-configuration \
|
kubectl -n plausible create secret generic postgres-configuration \
|
||||||
--from-literal=POSTGRES_DB=plausible \
|
--from-literal=POSTGRES_DB=plausible \
|
||||||
--from-literal=POSTGRES_USER=plausible \
|
--from-literal=POSTGRES_USER=plausible \
|
||||||
--from-literal=POSTGRES_PASSWORD=plausible \
|
--from-literal=POSTGRES_PASSWORD=plausible \
|
||||||
--from-literal=PGUSER=plausible \
|
--from-literal=PGUSER=plausible \
|
||||||
--from-literal=PGPASSWORD=plausible \
|
--from-literal=PGPASSWORD=plausible \
|
||||||
--from-literal=PGDATABASE=plausible
|
--from-literal=PGDATABASE=plausible \
|
||||||
|
--dry-run=client \
|
||||||
|
-o yaml | kubectl apply -f -
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+NAME: install Postgres
|
#+NAME: install Postgres
|
||||||
#+begin_src shell :pwd ./ :results silent
|
#+begin_src tmate :window plausible-setup
|
||||||
kubectl -n plausible apply -f postgres.yaml
|
kubectl -n plausible apply -f postgres.yaml
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+NAME: create secrets
|
#+NAME: create secrets
|
||||||
#+begin_src shell :results silent
|
#+begin_src tmate :window plausible-setup
|
||||||
kubectl -n plausible create secret generic plausible \
|
kubectl -n plausible create secret generic plausible \
|
||||||
--from-literal=ADMIN_USER_EMAIL=myemail@example.com \
|
--from-literal=ADMIN_USER_EMAIL="$GIT_AUTHOR_EMAIL" \
|
||||||
--from-literal=ADMIN_USER_NAME="Example User" \
|
--from-literal=ADMIN_USER_NAME="$GIT_AUTHOR_NAME" \
|
||||||
--from-literal=ADMIN_USER_PWD="password" \
|
--from-literal=ADMIN_USER_PWD="password" \
|
||||||
--from-literal=SECRET_KEY_BASE="$(openssl rand -base64 64)" \
|
--from-literal=SECRET_KEY_BASE="$(openssl rand -base64 64)" \
|
||||||
--from-literal=DATABASE_URL="postgres://plausible:plausible@postgres/plausible?ssl=false" \
|
--from-literal=DATABASE_URL="postgres://plausible:plausible@postgres/plausible?ssl=false" \
|
||||||
--from-literal=CLICKHOUSE_DATABASE_URL=http://plausible-events-db:8123/plausible
|
--from-literal=CLICKHOUSE_DATABASE_URL=http://plausible-events-db:8123/plausible \
|
||||||
#+end_src
|
--dry-run=client \
|
||||||
|
-o yaml | kubectl apply -f -
|
||||||
#+NAME: apply the service
|
|
||||||
#+begin_src shell :results silent
|
|
||||||
kubectl -n plausible apply -f plausible-service.yaml
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+NAME: create configuration
|
#+NAME: create configuration
|
||||||
#+begin_src shell :results silent
|
#+begin_src tmate :window plausible-setup
|
||||||
kubectl -n plausible create configmap plausible \
|
kubectl -n plausible create configmap plausible \
|
||||||
--from-literal=BASE_URL=http://$(minikube ip):$(kubectl -n plausible get svc plausible -o=jsonpath='{.spec.ports[0].nodePort}')
|
--from-literal=BASE_URL=https://plausible.$SHARINGIO_PAIR_BASE_DNS_NAME \
|
||||||
|
--dry-run=client \
|
||||||
|
-o yaml | kubectl apply -f -
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+NAME: install Plausible
|
#+NAME: install Plausible
|
||||||
#+begin_src shell :results silent
|
#+begin_src tmate :window plausible-setup
|
||||||
kubectl -n plausible apply \
|
kubectl -n plausible apply \
|
||||||
-f event-data-persistentvolumeclaim.yaml \
|
-f event-data-persistentvolumeclaim.yaml \
|
||||||
-f mail-deployment.yaml \
|
-f mail-deployment.yaml \
|
||||||
-f plausible-deployment.yaml \
|
-f plausible-deployment.yaml \
|
||||||
-f plausible-events-db-deployment.yaml \
|
-f plausible-service.yaml \
|
||||||
-f plausible-events-db-service.yaml
|
-f plausible-ingress.yaml \
|
||||||
|
-f plausible-events-db-deployment.yaml \
|
||||||
|
-f plausible-events-db-service.yaml
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+BEGIN_SRC tmate :window plausible-setup
|
||||||
|
kubectl -n plausible exec -it statefulset/postgres -- psql -c "UPDATE users SET email_verified = true;"
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
* Notes and references
|
* Notes and references
|
||||||
- https://docs.plausible.io/self-hosting-configuration/
|
- https://docs.plausible.io/self-hosting-configuration/
|
||||||
- https://github.com/plausible/hosting/blob/c5146231aa0bf8d7a0da11370845e11a4973373e/docker-compose.yml
|
- https://github.com/plausible/hosting/blob/c5146231aa0bf8d7a0da11370845e11a4973373e/docker-compose.yml
|
||||||
|
@ -77,7 +77,7 @@ spec:
|
|||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
command:
|
command:
|
||||||
- bash
|
- sh
|
||||||
- -c
|
- -c
|
||||||
- /app/createdb.sh && /app/migrate.sh && /app/init-admin.sh
|
- /app/createdb.sh && /app/migrate.sh && /app/init-admin.sh
|
||||||
env:
|
env:
|
||||||
|
20
k8s-manifests/plausible-ingress.yaml
Normal file
20
k8s-manifests/plausible-ingress.yaml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: plausible
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: plausible.bobymcbobs-weekend.pair.sharing.io
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- backend:
|
||||||
|
service:
|
||||||
|
name: plausible
|
||||||
|
port:
|
||||||
|
number: 8000
|
||||||
|
path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- plausible.bobymcbobs-weekend.pair.sharing.io
|
||||||
|
secretName: letsencrypt-prod
|
@ -9,6 +9,5 @@ spec:
|
|||||||
- name: http
|
- name: http
|
||||||
port: 8000
|
port: 8000
|
||||||
targetPort: 8000
|
targetPort: 8000
|
||||||
type: NodePort
|
|
||||||
selector:
|
selector:
|
||||||
app: plausible
|
app: plausible
|
||||||
|
Reference in New Issue
Block a user