src.nth.io/

summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2018-08-16 20:25:56 -0500
committerLuke Hoersten <[email protected]>2018-08-16 20:25:56 -0500
commit608c3aa2dd6a35d8fe434d60822314cc23bd4314 (patch)
tree3c3656929b8d26c42eb901f7274e24c033fed99c /roles
Initial commit.
Diffstat (limited to 'roles')
-rw-r--r--roles/pleroma/defaults/main.yaml5
-rw-r--r--roles/pleroma/tasks/main.yaml86
-rw-r--r--roles/pleroma/templates/dev.secret.exs.j226
-rw-r--r--roles/pleroma/templates/pleroma.service.j215
-rw-r--r--roles/pleroma/templates/setup_db.psql.j29
5 files changed, 141 insertions, 0 deletions
diff --git a/roles/pleroma/defaults/main.yaml b/roles/pleroma/defaults/main.yaml
new file mode 100644
index 0000000..e39ba8a
--- /dev/null
+++ b/roles/pleroma/defaults/main.yaml
@@ -0,0 +1,5 @@
+---
+
+pleroma_user: "pleroma"
+pleroma_instance_name: "{{pleroma_host}}"
+pleroma_admin_email: "admin@{{pleroma_host}}"
diff --git a/roles/pleroma/tasks/main.yaml b/roles/pleroma/tasks/main.yaml
new file mode 100644
index 0000000..9266e6d
--- /dev/null
+++ b/roles/pleroma/tasks/main.yaml
@@ -0,0 +1,86 @@
+---
+
+- name: add erland solutions key
+ become: yes
+ apt_key: "url=http://packages.erlang-solutions.com/debian/erlang_solutions.asc"
+
+- name: install erland solutions repo
+ become: yes
+ apt_repository: repo="deb http://binaries.erlang-solutions.com/debian bionic contrib"
+
+- name: update apt package cache
+ become: yes
+ apt: upgrade="dist" update_cache="yes" cache_valid_time="3600"
+
+- name: install extra apt packages
+ become: yes
+ apt: name="{{item}}"
+ with_items:
+ - "postgresql"
+ - "esl-erlang"
+ - "elixir"
+ - "build-essential"
+ - "git"
+
+- name: add users
+ become: yes
+ user: name="{{pleroma_user}}" shell="/bin/bash"
+
+- name: checkout plemora
+ become: yes
+ become_user: "{{pleroma_user}}"
+ git:
+ repo: "https://git.pleroma.social/pleroma/pleroma.git"
+ dest: "~{{pleroma_user}}/pleroma"
+ force: yes
+
+- name: update elixir dep
+ become: yes
+ become_user: "{{pleroma_user}}"
+ lineinfile:
+ path: "~{{pleroma_user}}/pleroma/mix.exs"
+ regexp: 'elixir: "~> 1.4",$'
+ line: 'elixir: "~> 1.7",'
+
+- name: install pleroma config files
+ template:
+ src: "{{item}}.j2"
+ dest: "~{{pleroma_user}}/pleroma/config/{{item}}"
+ owner: "{{pleroma_user}}"
+ group: "{{pleroma_user}}"
+ mode: "0775"
+ become: yes
+ become_user: "{{pleroma_user}}"
+ with_items:
+ - "setup_db.psql"
+ - "dev.secret.exs"
+
+- name: install pleroma psql
+ become: yes
+ become_user: "postgres"
+ command: "psql -f ~{{pleroma_user}}/pleroma/config/setup_db.psql"
+
+- name: migrate db
+ become: yes
+ become_user: "{{pleroma_user}}"
+ command: "{{item}}"
+ args:
+ chdir: "~{{pleroma_user}}/pleroma/"
+ with_items:
+ - "mix local.hex --force"
+ - "mix local.rebar --force"
+ - "mix deps.get"
+ - "mix ecto.migrate"
+
+- name: install pleroma systemd service
+ template:
+ src: "pleroma.service.j2"
+ dest: "/lib/systemd/system/pleroma.service"
+ owner: "{{pleroma_user}}"
+ group: "{{pleroma_user}}"
+ mode: "0770"
+ become: yes
+
+- name: enable pleroma systemd service
+ systemd: name="pleroma" enabled="yes" state="started"
+ become: yes
diff --git a/roles/pleroma/templates/dev.secret.exs.j2 b/roles/pleroma/templates/dev.secret.exs.j2
new file mode 100644
index 0000000..fee7ac8
--- /dev/null
+++ b/roles/pleroma/templates/dev.secret.exs.j2
@@ -0,0 +1,26 @@
+use Mix.Config
+
+config :pleroma, Pleroma.Web.Endpoint,
+ url: [host: "{{pleroma_host}}", scheme: "https", port: 443],
+ secret_key_base: "{{pleroma_secret_key}}"
+
+config :pleroma, :instance,
+ name: "{{pleroma_instance_name}}",
+ email: "{{pleroma_admin_email}}",
+ limit: 5000,
+ registrations_open: true,
+ dedupe_media: false
+
+config :pleroma, :media_proxy,
+ enabled: false,
+ redirect_on_failure: true
+ #base_url: "https://cache.pleroma.social"
+
+# Configure your database
+config :pleroma, Pleroma.Repo,
+ adapter: Ecto.Adapters.Postgres,
+ username: "{{pleroma_user}}",
+ password: "{{pleroma_db_passwd}}",
+ database: "{{pleroma_user}}",
+ hostname: "localhost",
+ pool_size: 10
diff --git a/roles/pleroma/templates/pleroma.service.j2 b/roles/pleroma/templates/pleroma.service.j2
new file mode 100644
index 0000000..ca6e662
--- /dev/null
+++ b/roles/pleroma/templates/pleroma.service.j2
@@ -0,0 +1,15 @@
+[Unit]
+Description=Pleroma social network
+After=network.target postgresql.service
+
+[Service]
+User={{pleroma_user}}
+WorkingDirectory=/home/{{pleroma_user}}/pleroma
+Environment="HOME=/home/{{pleroma_user}}"
+ExecStart=/usr/local/bin/mix phx.server
+ExecReload=/bin/kill $MAINPID
+KillMode=process
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/pleroma/templates/setup_db.psql.j2 b/roles/pleroma/templates/setup_db.psql.j2
new file mode 100644
index 0000000..de390c0
--- /dev/null
+++ b/roles/pleroma/templates/setup_db.psql.j2
@@ -0,0 +1,9 @@
+CREATE USER {{pleroma_user}} WITH ENCRYPTED PASSWORD '{{pleroma_db_passwd}}' CREATEDB;
+-- in case someone runs this second time accidentally
+ALTER USER {{pleroma_user}} WITH ENCRYPTED PASSWORD '{{pleroma_db_passwd}}' CREATEDB;
+CREATE DATABASE {{pleroma_user}};
+ALTER DATABASE {{pleroma_user}} OWNER TO {{pleroma_user}};
+\c {{pleroma_user}};
+--Extensions made by ecto.migrate that need superuser access
+CREATE EXTENSION IF NOT EXISTS citext;
+CREATE EXTENSION IF NOT EXISTS pg_trgm;