gotosocial
change
commit c18b700342e3d3d5d571613b771952530eebe427
author Alpha Chen <alpha@kejadlen.dev>
date
parent bbe32813
diff --git a/lotus-land-story/gotosocial.yml b/lotus-land-story/gotosocial.yml
new file mode 100644
index 0000000..4e9c588
--- /dev/null
+++ b/lotus-land-story/gotosocial.yml
@@ -0,0 +1,58 @@
+# https://docs.gotosocial.org/en/latest/getting_started/installation/container/
+
+- name: Set up GoToSocial
+  hosts: lotus-land-story
+  vars_files:
+    - vars.yml
+  vars:
+    version: snapshot  # temporary, to get import/export functionality
+  tasks:
+
+    - name: Create working directory
+      ansible.builtin.file:
+        path: /mnt/lotus-land-story/gotosocial
+        state: directory
+        mode: "0755"
+
+    - name: Create data directory
+      ansible.builtin.file:
+        path: /mnt/lotus-land-story/gotosocial/data
+        state: directory
+        owner: 1000
+        group: 1000
+        mode: "0755"
+
+    # https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/docker-compose/docker-compose.yaml
+    - name: Run GoToSocial
+      community.docker.docker_container:
+        name: gotosocial
+        image: superseriousbusiness/gotosocial:{{ version }}
+        restart: true
+        restart_policy: unless-stopped
+        env:
+          GTS_HOST: hey.kejadlen.dev
+          GTS_LANDING_PAGE_USER: alpha
+          GTS_DB_TYPE: sqlite
+          GTS_DB_ADDRESS: /gotosocial/storage/sqlite.db
+          GTS_OIDC_ENABLED: "true"
+          GTS_OIDC_IDP_NAME: "Authelia"
+          GTS_OIDC_ISSUER: https://auth.kejadlen.dev
+          GTS_OIDC_CLIENT_ID: gotosocial
+          GTS_OIDC_CLIENT_SECRET: "{{ gotosocial.oidc_client_secret }}"
+          GTS_OIDC_ADMIN_GROUPS: admin
+          GTS_METRICS_ENABLED: "true"
+          GTS_METRICS_AUTH_ENABLED: "true"
+          GTS_METRICS_AUTH_USERNAME: "{{ prometheus.gotosocial.username }}"
+          GTS_METRICS_AUTH_PASSWORD: "{{ prometheus.gotosocial.password }}"
+          # GTS_ADVANCED_RATE_LIMIT_REQUESTS: "0"
+          TZ: UTC
+        volumes:
+          - /mnt/lotus-land-story/gotosocial/data:/gotosocial/storage
+        networks:
+          - name: lotus_land_story
+
+  handlers:
+    - name: Import restarts
+      ansible.builtin.import_tasks: restarts.yml
+
+# vim: ft=yaml.ansible
diff --git a/lotus-land-story/main.yml b/lotus-land-story/main.yml
index 3d1afcd..78da324 100644
--- a/lotus-land-story/main.yml
+++ b/lotus-land-story/main.yml
@@ -100,6 +100,7 @@
 - import_playbook: grafana.yml     # noqa: name[play]
 - import_playbook: loki.yml        # noqa: name[play]
 - import_playbook: miniflux.yml    # noqa: name[play]
+- import_playbook: gotosocial.yml  # noqa: name[play]
 
 - import_playbook: caddy.yml       # noqa: name[play]
 
diff --git a/lotus-land-story/templates/Caddyfile b/lotus-land-story/templates/Caddyfile
index 675f3a0..2a8af5b 100644
--- a/lotus-land-story/templates/Caddyfile
+++ b/lotus-land-story/templates/Caddyfile
@@ -137,4 +137,12 @@ logs.{{ domain }} {
 	reverse_proxy parseable:8000
 }
 
+hey.kejadlen.dev
+	reverse_proxy gotosocial:8080
+
+	handle /metrics {
+		respond 404
+	}
+}
+
 # vim: ts=4
diff --git a/lotus-land-story/templates/authelia_configuration.yml b/lotus-land-story/templates/authelia_configuration.yml
index cc98e63..ab277b9 100644
--- a/lotus-land-story/templates/authelia_configuration.yml
+++ b/lotus-land-story/templates/authelia_configuration.yml
@@ -62,6 +62,8 @@ identity_providers:
           {{ authelia.oidc_private_key | indent(10) }}
 
     clients:
+      # https://www.authelia.com/reference/guides/generating-secure-values/#generating-a-random-password-hash
+
       - client_id: grafana
         client_name: Grafana
         client_secret: $argon2id$v=19$m=65536,t=3,p=4$bHcAAorVdHuZzuz53WfAQA$x+pIDTo6SsGyY9JD4OZ7dT6pkEcPf8Yh6Yb7DXco8aQ
@@ -105,3 +107,15 @@ identity_providers:
           - openid
           - email
           - profile
+
+      - client_id: gotosocial
+        client_name: GoToSocial
+        client_secret: $argon2id$v=19$m=65536,t=3,p=4$4fkP2O3FYs26yKH/3WLuvQ$JHkaAA+b752/v7rtyhEzGwGutpSZR+7PSmz8psFb8BM
+        public: false
+        redirect_uris:
+          - https://hey.kejadlen.dev/auth/callback
+        scopes:
+          - openid
+          - email
+          - profile
+          - groups
diff --git a/lotus-land-story/templates/authelia_users_database.yml b/lotus-land-story/templates/authelia_users_database.yml
index c45394b..1d4f838 100644
--- a/lotus-land-story/templates/authelia_users_database.yml
+++ b/lotus-land-story/templates/authelia_users_database.yml
@@ -5,7 +5,7 @@ users:
     password: "$argon2id$v=19$m=65536,t=3,p=4$JHtyy/vVD+37neJUjy5Shw$6GODmDOXW/v7cfhqwuEp30bVSCWLT5R3OEe/Gi5FGX0" # yamllint disable-line rule:line-length
     email: alpha@kejadlen.dev
     groups:
-      - admins
+      - admin
       - family
   lydia:
     disabled: false
diff --git a/lotus-land-story/templates/prometheus.yml b/lotus-land-story/templates/prometheus.yml
index 87dbff4..dd5740b 100644
--- a/lotus-land-story/templates/prometheus.yml
+++ b/lotus-land-story/templates/prometheus.yml
@@ -70,4 +70,11 @@ scrape_configs:
     static_configs:
       - targets: ['paperless-ngx:5555']
 
-# vim: ft=yaml.ansible
+  - job_name: gotosocial
+    metrics_path: /metrics
+    scheme: http
+    basic_auth:
+      username: {{ prometheus.gotosocial.username }}
+      password: {{ prometheus.gotosocial.password }}
+    static_configs:
+      - targets: ['gotosocial:8080']