feat: add Kanboard project management service
- Add kanboard subdomain to domains.yml - Create Docker Compose template with SQLite backend and plugin store enabled - Add Ansible task for service deployment - Configure Caddy reverse proxy routing - Integrate with productivity services category 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		
							
								
								
									
										2
									
								
								dns.yml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dns.yml
									
									
									
									
									
								
							@@ -53,6 +53,8 @@
 | 
				
			|||||||
            ip: "152.53.36.98"
 | 
					            ip: "152.53.36.98"
 | 
				
			||||||
          - name: pdg
 | 
					          - name: pdg
 | 
				
			||||||
            ip: "152.53.36.98"
 | 
					            ip: "152.53.36.98"
 | 
				
			||||||
 | 
					          - name: kanboard
 | 
				
			||||||
 | 
					            ip: "152.53.36.98"
 | 
				
			||||||
      - name: nerder.land
 | 
					      - name: nerder.land
 | 
				
			||||||
        dns_records:
 | 
					        dns_records:
 | 
				
			||||||
          - name: "forms"
 | 
					          - name: "forms"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,7 @@ subdomains:
 | 
				
			|||||||
  bytestash: "snippets.{{ primary_domain }}"  # ByteStash code snippets
 | 
					  bytestash: "snippets.{{ primary_domain }}"  # ByteStash code snippets
 | 
				
			||||||
  gotify: "gotify.{{ primary_domain }}"  # Gotify notifications
 | 
					  gotify: "gotify.{{ primary_domain }}"  # Gotify notifications
 | 
				
			||||||
  gotify_assistant: "gotify-assistant.{{ primary_domain }}"  # iGotify iOS assistant
 | 
					  gotify_assistant: "gotify-assistant.{{ primary_domain }}"  # iGotify iOS assistant
 | 
				
			||||||
 | 
					  kanboard: "kanboard.{{ primary_domain }}"  # Kanboard project management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Email domains for notifications
 | 
					# Email domains for notifications
 | 
				
			||||||
email_domains:
 | 
					email_domains:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,6 +40,10 @@ tasks.thesatelliteoflove.com {
 | 
				
			|||||||
    reverse_proxy mmdl:3000
 | 
					    reverse_proxy mmdl:3000
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					kanboard.thesatelliteoflove.com {
 | 
				
			||||||
 | 
					    reverse_proxy kanboard:80
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
phlog.thesatelliteoflove.com {
 | 
					phlog.thesatelliteoflove.com {
 | 
				
			||||||
    reverse_proxy ghost-1-ghost-1:2368
 | 
					    reverse_proxy ghost-1-ghost-1:2368
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								roles/docker/tasks/productivity/kanboard.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								roles/docker/tasks/productivity/kanboard.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Create kanboard directories
 | 
				
			||||||
 | 
					  ansible.builtin.file:
 | 
				
			||||||
 | 
					    path: "{{ item }}"
 | 
				
			||||||
 | 
					    state: directory
 | 
				
			||||||
 | 
					  loop:
 | 
				
			||||||
 | 
					    - /opt/stacks/kanboard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Template kanboard compose file
 | 
				
			||||||
 | 
					  ansible.builtin.template:
 | 
				
			||||||
 | 
					    src: kanboard-compose.yml.j2
 | 
				
			||||||
 | 
					    dest: /opt/stacks/kanboard/compose.yml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Deploy kanboard stack
 | 
				
			||||||
 | 
					  community.docker.docker_compose_v2:
 | 
				
			||||||
 | 
					    project_src: /opt/stacks/kanboard
 | 
				
			||||||
 | 
					    files:
 | 
				
			||||||
 | 
					      - compose.yml
 | 
				
			||||||
@@ -32,3 +32,7 @@
 | 
				
			|||||||
- name: Install obsidian-livesync
 | 
					- name: Install obsidian-livesync
 | 
				
			||||||
  import_tasks: obsidian-livesync.yml
 | 
					  import_tasks: obsidian-livesync.yml
 | 
				
			||||||
  tags: obsidian-livesync
 | 
					  tags: obsidian-livesync
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Install kanboard
 | 
				
			||||||
 | 
					  import_tasks: kanboard.yml
 | 
				
			||||||
 | 
					  tags: kanboard
 | 
				
			||||||
							
								
								
									
										32
									
								
								roles/docker/templates/kanboard-compose.yml.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								roles/docker/templates/kanboard-compose.yml.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					services:
 | 
				
			||||||
 | 
					  kanboard:
 | 
				
			||||||
 | 
					    image: kanboard/kanboard:latest
 | 
				
			||||||
 | 
					    container_name: kanboard
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      - PLUGIN_INSTALLER=true
 | 
				
			||||||
 | 
					      - DB_DRIVER=sqlite
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - kanboard_data:/var/www/app/data
 | 
				
			||||||
 | 
					      - kanboard_plugins:/var/www/app/plugins
 | 
				
			||||||
 | 
					    extra_hosts:
 | 
				
			||||||
 | 
					      - "host.docker.internal:host-gateway"
 | 
				
			||||||
 | 
					      - "{{ subdomains.auth }}:{{ docker.hairpin_ip }}"
 | 
				
			||||||
 | 
					    labels:
 | 
				
			||||||
 | 
					      glance.name: Kanboard
 | 
				
			||||||
 | 
					      glance.icon: si:kanboard
 | 
				
			||||||
 | 
					      glance.url: https://{{ subdomains.kanboard }}/
 | 
				
			||||||
 | 
					      glance.description: Project management and Kanban boards
 | 
				
			||||||
 | 
					      glance.id: kanboard
 | 
				
			||||||
 | 
					      mag37.dockcheck.update: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					volumes:
 | 
				
			||||||
 | 
					  kanboard_data:
 | 
				
			||||||
 | 
					    driver: local
 | 
				
			||||||
 | 
					  kanboard_plugins:
 | 
				
			||||||
 | 
					    driver: local
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					networks:
 | 
				
			||||||
 | 
					  default:
 | 
				
			||||||
 | 
					    external: true
 | 
				
			||||||
 | 
					    name: {{ docker.network_name }}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user