Merge branch 'config'

Changed files
+98
config
roles
knot
defaults
tasks
templates
+1
config/deploy.yaml
···
roles:
- geerlingguy.docker
···
roles:
- geerlingguy.docker
+
- knot
+9
config/roles/knot/defaults/main.yaml
···
···
+
---
+
knot_deploy_dir: "/opt/knot"
+
knot_uid: "1000"
+
knot_gid: "1000"
+
knot_image: "tngl/knot:v1.10.0-alpha"
+
knot_server_hostname: "example.com"
+
knot_server_owner: "did:plc:example"
+
knot_server_port: "443"
+
knot_enable_caddy: false # Set to true to enable Caddy reverse proxy
+52
config/roles/knot/tasks/main.yaml
···
···
+
---
+
- name: Install Python dependencies for Docker modules
+
ansible.builtin.apt:
+
name:
+
- python3-requests
+
- python3-docker
+
state: present
+
update_cache: false
+
+
- name: Create Knot deployment directory
+
ansible.builtin.file:
+
path: "{{ knot_deploy_dir }}"
+
state: directory
+
mode: "0755"
+
+
- name: Create Knot data directories
+
ansible.builtin.file:
+
path: "{{ knot_deploy_dir }}/{{ item }}"
+
state: directory
+
mode: "0755"
+
owner: "{{ knot_uid }}"
+
group: "{{ knot_gid }}"
+
loop:
+
- keys
+
- repositories
+
- server
+
- caddy_data
+
+
- name: Create docker-compose.yml for Knot
+
ansible.builtin.template:
+
src: docker-compose.yml.j2
+
dest: "{{ knot_deploy_dir }}/docker-compose.yml"
+
mode: "0644"
+
+
- name: Create .env file for Knot
+
ansible.builtin.template:
+
src: env.j2
+
dest: "{{ knot_deploy_dir }}/.env"
+
mode: "0600"
+
+
- name: Pull Knot Docker image
+
community.docker.docker_image:
+
name: "{{ knot_image }}"
+
source: pull
+
+
- name: Deploy Knot with docker-compose
+
community.docker.docker_compose_v2:
+
project_src: "{{ knot_deploy_dir }}"
+
state: present
+
pull: "always"
+
remove_orphans: true
+
profiles: "{{ knot_enable_caddy | ternary(['caddy'], []) }}"
+33
config/roles/knot/templates/docker-compose.yml.j2
···
···
+
services:
+
knot:
+
image: {{ knot_image }}
+
environment:
+
KNOT_SERVER_HOSTNAME: ${KNOT_SERVER_HOSTNAME}
+
KNOT_SERVER_OWNER: ${KNOT_SERVER_OWNER}
+
KNOT_SERVER_DB_PATH: /app/knotserver.db
+
KNOT_REPO_SCAN_PATH: /home/git/repositories
+
KNOT_SERVER_INTERNAL_LISTEN_ADDR: localhost:5444
+
volumes:
+
- ./keys:/etc/ssh/keys
+
- ./repositories:/home/git/repositories
+
- ./server:/app
+
ports:
+
- "5555:5555"
+
- "2222:22"
+
restart: always
+
frontend:
+
image: caddy:alpine
+
command: >
+
caddy
+
reverse-proxy
+
--from ${KNOT_SERVER_HOSTNAME}
+
--to knot:5555
+
depends_on:
+
- knot
+
ports:
+
- ${KNOT_SERVER_PORT:-443}:443
+
- ${KNOT_SERVER_PORT:-443}:443/udp
+
volumes:
+
- ./caddy_data:/data
+
restart: always
+
profiles: ["caddy"]
+3
config/roles/knot/templates/env.j2
···
···
+
KNOT_SERVER_HOSTNAME={{ knot_server_hostname }}
+
KNOT_SERVER_OWNER={{ knot_server_owner }}
+
KNOT_SERVER_PORT={{ knot_server_port }}