From 81ba7decf1bc36bae01fa987b47c07a310412305 Mon Sep 17 00:00:00 2001 From: barry Date: Tue, 13 Feb 2024 16:09:10 -0600 Subject: [PATCH] Working on clightning... --- hosts | 2 +- roles/apps/handlers/main.yml | 5 ++ roles/apps/tasks/clightning.yml | 40 ++++++++++++ roles/apps/tasks/main.yml | 3 + .../templates/clightning/Containerfile.j2 | 63 ++++++++++--------- roles/apps/templates/clightning/build.sh.j2 | 10 +++ .../clightning/clightning-node.container.j2 | 23 +++++++ 7 files changed, 115 insertions(+), 31 deletions(-) create mode 100644 roles/apps/tasks/clightning.yml create mode 100644 roles/apps/templates/clightning/build.sh.j2 create mode 100644 roles/apps/templates/clightning/clightning-node.container.j2 diff --git a/hosts b/hosts index 618a334..ebb0138 100644 --- a/hosts +++ b/hosts @@ -22,7 +22,7 @@ zerotier_network= [n0xb0x:vars] hostname=n0xb0x -app_list=['bitcoin.yml','electrs.yml','docs.yml'] +app_list=['bitcoin.yml','electrs.yml','clightning.yml','docs.yml'] ansible_user=n0xb0x ansible_password=n0xb0x #registry_url=git.boxxy.net/b0xxer/ diff --git a/roles/apps/handlers/main.yml b/roles/apps/handlers/main.yml index 7292fa6..2eb56e7 100644 --- a/roles/apps/handlers/main.yml +++ b/roles/apps/handlers/main.yml @@ -17,6 +17,11 @@ chdir: ~/Containers/electrs cmd: ./build.sh +- name: rebuild_clightning + ansible.builtin.shell: + chdir: ~/Containers/clightning + cmd: ./build.sh + - name: rebuild_docs ansible.builtin.shell: chdir: ~/Containers/docs diff --git a/roles/apps/tasks/clightning.yml b/roles/apps/tasks/clightning.yml new file mode 100644 index 0000000..2bcaf99 --- /dev/null +++ b/roles/apps/tasks/clightning.yml @@ -0,0 +1,40 @@ +--- +# tasks file for build +# +- name: clightning - Create .clightning dir + ansible.builtin.file: + path: ~/.clightning + state: directory + +- name: clightning - Copy clightning-node.container file + ansible.builtin.template: + src: clightning/clightning-node.container.j2 + dest: /home/{{ ansible_user }}/.config/containers/systemd/clightning-node.container + notify: reload_systemctl + +- name: clightning - Create Containers/bitcoin Dir + ansible.builtin.file: + path: ~/Containers/clightning + recurse: true + state: directory + notify: rebuild_clightning + +- name: clightning - Copy Containerfile Template + ansible.builtin.template: + src: clightning/Containerfile.j2 + dest: ~/Containers/clightning/Containerfile + notify: rebuild_clightning + +- name: clightning - Copy entrypoint.sh + ansible.builtin.copy: + src: clightning/entrypoint.sh + dest: ~/Containers/clightning/entrypoint.sh + +- name: clightning - Copy build script + ansible.builtin.template: + src: clightning/build.sh.j2 + dest: ~/Containers/clightning/build.sh + mode: '0700' + notify: rebuild_clightning + + diff --git a/roles/apps/tasks/main.yml b/roles/apps/tasks/main.yml index e2ec13e..fce680f 100644 --- a/roles/apps/tasks/main.yml +++ b/roles/apps/tasks/main.yml @@ -1,5 +1,8 @@ --- +#- name: Test app-list for exclusions / conflicts +# msg: test + - name: Install apps ansible.builtin.include_tasks: file: "{{ item }}" diff --git a/roles/apps/templates/clightning/Containerfile.j2 b/roles/apps/templates/clightning/Containerfile.j2 index 5db80c8..ad89344 100644 --- a/roles/apps/templates/clightning/Containerfile.j2 +++ b/roles/apps/templates/clightning/Containerfile.j2 @@ -1,45 +1,48 @@ -FROM docker.io/almalinux/9-minimal:latest as build +FROM docker.io/almalinux/9-base:latest AS builder -RUN microdnf update -y && microdnf install -y ca-certificates \ +ARG BVERSION={{bitcoin_version}} +ARG CLVERSION={{clightning_version}} +ARG BITCOIN_CORE_SIGNATURE=71A3B16735405025D447E8F274810B012346C9A6 + +# Update and Build clightning +RUN dnf update -y && dnf install -y epel-release \ + && dnf install -y automake autoconf python3-mako libtool clang gettext git \ + gmp-devel libsq3-devel python3-devel python3-pip python3-setuptools net-tools valgrind wget zlib-devel libsodium-devel \ + && dnf clean all \ + && git clone https://github.com/ElementsProject/lightning.git && cd lightning && git checkout v$CLVERSION && ./configure && make && make install + +# Download and verify bitcoin + +RUN mkdir /tmp/bitcoin && cd /tmp/bitcoin +RUN gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys ${BITCOIN_CORE_SIGNATURE} \ + && gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys F4FC70F07310028424EFC20A8E4256593F177720 \ + && wget https://bitcoincore.org/bin/bitcoin-core-${BVERSION}/SHA256SUMS.asc \ + && wget https://bitcoincore.org/bin/bitcoin-core-${BVERSION}/SHA256SUMS \ + && wget https://bitcoincore.org/bin/bitcoin-core-${BVERSION}/bitcoin-${BVERSION}-x86_64-linux-gnu.tar.gz \ + && gpg --verify --status-fd 1 --verify SHA256SUMS.asc SHA256SUMS 2>/dev/null | grep "VALIDSIG" \ + && sha256sum --ignore-missing --check SHA256SUMS \ + && tar -xzvf bitcoin-${BVERSION}-x86_64-linux-gnu.tar.gz --strip=1 -C /usr/local + + +FROM docker.io/almalinux/9-base:latest + +RUN dnf update -y && dnf install -y ca-certificates \ gnupg2 \ libatomic \ wget \ tar \ gzip \ - && microdnf clean all && rm -fr /tmp/* /var/tmp/* + shadow-utils \ + python3 \ + && dnf clean all && rm -fr /tmp/* /var/tmp/* -ARG BVERSION={{bitcoin_version}} -ARG CLVERSION={{clightning_version}} -ARG CLPLATFORM={{clightning_platform}} -ARG BITCOIN_CORE_SIGNATURE=71A3B16735405025D447E8F274810B012346C9A6 -RUN mkdir /tmp/bitcoin && cd /tmp/bitcoin \ - && gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys ${BITCOIN_CORE_SIGNATURE} \ - && wget https://bitcoincore.org/bin/bitcoin-core-${BVERSION}/SHA256SUMS.asc \ - https://bitcoincore.org/bin/bitcoin-core-${BVERSION}/SHA256SUMS \ - https://bitcoincore.org/bin/bitcoin-core-${BVERSION}/bitcoin-${BVERSION}-x86_64-linux-gnu.tar.gz \ - && gpg --verify --status-fd 1 --verify SHA256SUMS.asc SHA256SUMS 2>/dev/null | grep "^\[GNUPG:\] VALIDSIG.*${BITCOIN_CORE_SIGNATURE}\$" \ - && sha256sum --ignore-missing --check SHA256SUMS \ - && tar -xzvf bitcoin-${BVERSION}-x86_64-linux-gnu.tar.gz --strip=1 -C / \ - && rm -v /bin/test_bitcoin /bin/bitcoin-qt /bin/bitcoind \ - && mkdir /tmp/clightning && cd /tmp/clightning \ - && wget https://raw.githubusercontent.com/ElementsProject/lightning/master/contrib/keys/cdecker.txt \ - && wget https://raw.githubusercontent.com/ElementsProject/lightning/master/contrib/keys/rustyrussell.txt \ - && gpg --import cdecker.txt rustyrussell.txt \ - && wget https://github.com/ElementsProject/lightning/releases/download/v${CLVERSION}/clightning-v${CLVERSION}-${CLPLATFORM}.tar.gz \ - && wget https://https://github.com/ElementsProject/lightning/releases/download/v${CLVERSION}/SHA256SUMS \ - && wget https://github.com/ElementsProject/lightning/releases/download/v${CLVERSION}/SHA256SUMS.asc \ - && gpg --verify --status-fd 1 --verify SHA256SUMS.asc SHA256SUMS 2>/dev/null | grep "^\[GNUPG:\].VALIDSIG" \ - && sha256sum --ignore-missing --check SHA256SUMS \ - && tar -xzvf clightning-v${CLVERSION}-${CLPLATFORM}.tar.gz -C / +COPY --from=builder /usr/local/ /usr/local/ -COPY entrypoint.sh /entrypoint.sh +COPY ./entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh EXPOSE 9735 9835 ENTRYPOINT ["/entrypoint.sh"] - -CMD ["lightningd"] - diff --git a/roles/apps/templates/clightning/build.sh.j2 b/roles/apps/templates/clightning/build.sh.j2 new file mode 100644 index 0000000..cc5c28d --- /dev/null +++ b/roles/apps/templates/clightning/build.sh.j2 @@ -0,0 +1,10 @@ +#! /bin/sh +# +# build.sh +# Copyright (C) 2024 barry +# +# Distributed under terms of the MIT license. +# + + +echo 0 diff --git a/roles/apps/templates/clightning/clightning-node.container.j2 b/roles/apps/templates/clightning/clightning-node.container.j2 new file mode 100644 index 0000000..44d1de1 --- /dev/null +++ b/roles/apps/templates/clightning/clightning-node.container.j2 @@ -0,0 +1,23 @@ +[Unit] +Description=Core Lightning Server + +[Container] +Image={{ registry_url }}/clightning:{{ clightning_version }} +PodmanArgs=--pod bitcoin-pod +Exec=--rpcuser={{bitcoin_rpcuser}} --rpcpassword={{bitcoin_rpcpassword}} + +# Use volume +Volume=/home/{{ansible_user}}/.bitcoin:/data/.bitcoin:ro,Z +Volume=/home/{{ansible_user}}/.lightning:/data/.lightning:Z + +[Service] +# Restart service when sleep finishes +Restart=always +# Extend Timeout to allow time to pull the image +TimeoutStartSec=900 +# ExecStartPre flag and other systemd commands can go here, see systemd.unit(5) man page. +# ExecStartPre=/usr/share/mincontainer/setup.sh + +[Install] +# Start by default on boot +WantedBy=multi-user.target default.target