This Ansible role builds and installs a single Podman container that runs the Javascript code for Samourai Dojo. It is intended to be composed with separate roles for Podman, mysql, and web proxy. It can be backended by a nixbitcoin node, or any external node with the necessary configuration.
For node experts or developers only: Usage of this role implies complete personal accountability and you should never reach out to the Samourai team for support regarding it. This project has no relation to Samourai.
- nginx_conf (optional)
Use your favorite secret-store. As an example, you could use GNU pass:
pass generate -n SAMOURAI_DOJO_API
pass generate -n SAMOURAI_DOJO_ADMIN
pass generate -n SAMOURAI_DOJO_JWT
pass generate -n SAMOURAI_DOJO_MARIADB_PASSWORD
pass generate -n BITCOIND_DOJO_RPC_PASSWORD
Then source them into your local environment.
See the defaults for the role.
samourai_dojo_version: "1.20.0"
samourai_dojo_onion_service: "{{ lookup('ansible.builtin.env', 'SAMOURAI_DOJO_ONION') }}"
samourai_dojo_onion_port: 80
#onion_services_path: /opt/dojo # a globally readable/writable path where the hsv3 hostname will be copied (optional)
- hosts: dojo
roles:
- role: nginxinc.nginx_core.nginx
become: true
- role: fauust.mariadb
become: true
- role: alvistack.podman
become: true
- role: bleetube.dojo
tags: dojo
tasks:
- import_tasks: nginx_conf.yml
become: true
Have tor, bitcoind, and electrs running separately (e.g. nixbitcoin). And optionally whirlpool-cli.
For a working example, see bleetube/satstack.
systemctl --user status container-dojo.service
Configure samourai_dojo_version
and rerun the playbook.
ansible-playbook playbooks/samourai.yml --tags dojo
Mind any changes specifically to Node.js environment variables, and the Dojo install scripts (or wait for this role to document any extra upgrade steps).
See dojo-exporter
podman logs --follow dojo
podman inspect dojo | jq .[].Config.Env
ngrep -d lo port 80 -W byline