src.nth.io/

summaryrefslogtreecommitdiff
path: root/nostr
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2023-07-22 15:50:36 -0500
committerLuke Hoersten <[email protected]>2023-07-22 15:50:36 -0500
commit58d6bb46618d2cfef3a2f381e46b5eba193d7270 (patch)
tree5c1cd5ac5f604508fb27808eff3b4154c9692de1 /nostr
parentd6454704216bfa4b4f6e8a250f057f2b0d543fa1 (diff)
Split out nostr install and build roles.
Diffstat (limited to 'nostr')
-rw-r--r--nostr/build/defaults/main.yaml6
-rw-r--r--nostr/build/tasks/main.yaml39
-rw-r--r--nostr/relayer/defaults/main.yaml9
-rw-r--r--nostr/relayer/files/relayer.service14
-rw-r--r--nostr/relayer/handlers/main.yaml5
-rw-r--r--nostr/relayer/tasks/main.yaml60
-rw-r--r--nostr/relayer/templates/relayer.env.j24
-rw-r--r--nostr/relayer/templates/setup_db.psql.j22
8 files changed, 139 insertions, 0 deletions
diff --git a/nostr/build/defaults/main.yaml b/nostr/build/defaults/main.yaml
new file mode 100644
index 0000000..ba456d0
--- /dev/null
+++ b/nostr/build/defaults/main.yaml
@@ -0,0 +1,6 @@
+---
+
+relayer_version: "2.0.0"
+# https://github.com/fiatjaf/relayer/releases
+relayer_tar: "https://github.com/fiatjaf/relayer/archive/refs/tags/v{{relayer_version}}.tar.gz"
+relayer_build_dir: "/tmp/relayer-{{relayer_version}}"
diff --git a/nostr/build/tasks/main.yaml b/nostr/build/tasks/main.yaml
new file mode 100644
index 0000000..8a7f229
--- /dev/null
+++ b/nostr/build/tasks/main.yaml
@@ -0,0 +1,39 @@
+---
+
+- name: install golang
+ become: yes
+ apt: name="golang-go"
+
+- name: unarchive nostr relayer
+ unarchive:
+ remote_src: yes
+ src: "{{relayer_tar}}"
+ dest: "/tmp/"
+ creates: "{{relayer_build_dir}}"
+
+- name: check if relayer build exists
+ stat:
+ path: "{{relayer_build_dir}}/whitelisted/whitelisted"
+ register: build_file
+
+- name: build relayer
+ command: "go build"
+ args:
+ chdir: "{{relayer_build_dir}}/whitelisted"
+ when: not build_file.stat.exists
+
+- name: create build server dir
+ become: yes
+ file:
+ path: "{{relayer_srv_dir}}"
+ mode: "0755"
+ state: "directory"
+ when: not build_file.stat.exists
+
+- name: copy bin to build server dir
+ become: yes
+ copy:
+ remote_src: yes
+ src: "{{relayer_build_dir}}/whitelisted/whitelisted"
+ dest: "{{relayer_srv_dir}}/nostr-relayer-whitelisted"
+ when: not build_file.stat.exists
diff --git a/nostr/relayer/defaults/main.yaml b/nostr/relayer/defaults/main.yaml
new file mode 100644
index 0000000..7d30aa6
--- /dev/null
+++ b/nostr/relayer/defaults/main.yaml
@@ -0,0 +1,9 @@
+---
+
+# https://github.com/fiatjaf/relayer/releases
+relayer_user: "relayer"
+relayer_pubkey: ""
+relayer_port: "7447"
+relayer_db: "relayer"
+relayer_db_user: "relayer"
+relayer_db_pass: "relayer"
diff --git a/nostr/relayer/files/relayer.service b/nostr/relayer/files/relayer.service
new file mode 100644
index 0000000..14da0aa
--- /dev/null
+++ b/nostr/relayer/files/relayer.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=relayer nostr relay
+Requires=network.target postgresql.service
+Before=nginx.service
+
+[Service]
+User=relayer
+EnvironmentFile=/etc/relayer/relayer.env
+
+ExecStart=/usr/local/bin/relayer
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/nostr/relayer/handlers/main.yaml b/nostr/relayer/handlers/main.yaml
new file mode 100644
index 0000000..c4e8dd6
--- /dev/null
+++ b/nostr/relayer/handlers/main.yaml
@@ -0,0 +1,5 @@
+---
+
+- name: restart relayer service
+ become: yes
+ systemd: name="relayer.service" state="restarted" daemon_reload="yes"
diff --git a/nostr/relayer/tasks/main.yaml b/nostr/relayer/tasks/main.yaml
new file mode 100644
index 0000000..5127793
--- /dev/null
+++ b/nostr/relayer/tasks/main.yaml
@@ -0,0 +1,60 @@
+---
+
+- name: add relayer user
+ become: yes
+ user: name="{{relayer_user}}" shell="/bin/false" create_home="false" system="yes"
+
+- name: install relayer systemd service
+ become: yes
+ copy:
+ src: "relayer.service"
+ dest: "/lib/systemd/system/relayer.service"
+ notify: restart relayer service
+
+- name: install relayer bin
+ become: yes
+ get_url:
+ url: "{{relayer_bin_url}}"
+ dest: "/usr/local/bin/relayer"
+ owner: "root"
+ group: "root"
+ mode: "0755"
+ notify: restart relayer service
+
+- name: create relayer dirs
+ become: yes
+ file:
+ path: "/etc/relayer"
+ owner: "root"
+ group: "root"
+ mode: "0755"
+ state: "directory"
+
+- name: install relayer config
+ become: yes
+ template:
+ src: "relayer.env.j2"
+ dest: "/etc/relayer/relayer.env"
+ owner: "root"
+ group: "root"
+ mode: "0600"
+ notify: restart relayer service
+
+- name: copy db schema file
+ become: yes
+ template:
+ src: "setup_db.psql.j2"
+ dest: "/tmp/setup_db_relayer.psql"
+ owner: "postgres"
+ group: "postgres"
+ mode: "0600"
+
+- name: install db schema psql
+ become: yes
+ become_user: "postgres"
+ command: "psql -f /tmp/setup_db_relayer.psql"
+ changed_when: false
+
+- name: ensure service is started
+ become: yes
+ systemd: name="relayer.service" enabled="yes" state="started"
diff --git a/nostr/relayer/templates/relayer.env.j2 b/nostr/relayer/templates/relayer.env.j2
new file mode 100644
index 0000000..9acacca
--- /dev/null
+++ b/nostr/relayer/templates/relayer.env.j2
@@ -0,0 +1,4 @@
+POSTGRESQL_DATABASE=postgres://{{relayer_db_user}}:{{relayer_db_pass}}@localhost:5432/{{relayer_db}}
+WHITELIST={{relayer_pubkey}}
+HOST=127.0.0.1
+PORT={{relayer_port}}
diff --git a/nostr/relayer/templates/setup_db.psql.j2 b/nostr/relayer/templates/setup_db.psql.j2
new file mode 100644
index 0000000..5284529
--- /dev/null
+++ b/nostr/relayer/templates/setup_db.psql.j2
@@ -0,0 +1,2 @@
+CREATE USER {{relayer_db_user}} WITH ENCRYPTED PASSWORD '{{relayer_db_pass}}';
+CREATE DATABASE {{relayer_db}} WITH OWNER {{relayer_db_user}};