add MMDL task management service deployment
- Add MMDL (Manage My Damn Life) task and calendar management service - Configure NextAuth with Authentik OIDC integration - Use MySQL 8.0 with proper authentication plugin - Include Glance dashboard integration - Add to main docker deployment pipeline 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
798d35be16
commit
1280bba7ff
@ -170,3 +170,7 @@
|
|||||||
- name: Install manyfold
|
- name: Install manyfold
|
||||||
import_tasks: manyfold.yml
|
import_tasks: manyfold.yml
|
||||||
tags: manyfold
|
tags: manyfold
|
||||||
|
|
||||||
|
- name: Install mmdl
|
||||||
|
import_tasks: mmdl.yml
|
||||||
|
tags: mmdl
|
25
roles/docker/tasks/mmdl.yml
Normal file
25
roles/docker/tasks/mmdl.yml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
- name: Create mmdl directories
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
loop:
|
||||||
|
- /opt/stacks/mmdl
|
||||||
|
- /opt/stacks/mmdl/data
|
||||||
|
- /opt/stacks/mmdl/mysql
|
||||||
|
|
||||||
|
- name: Template mmdl environment file
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: mmdl-env.j2
|
||||||
|
dest: /opt/stacks/mmdl/.env.local
|
||||||
|
|
||||||
|
- name: Template mmdl compose file
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: mmdl-compose.yml.j2
|
||||||
|
dest: /opt/stacks/mmdl/compose.yml
|
||||||
|
|
||||||
|
- name: Deploy mmdl stack
|
||||||
|
community.docker.docker_compose_v2:
|
||||||
|
project_src: /opt/stacks/mmdl
|
||||||
|
files:
|
||||||
|
- compose.yml
|
45
roles/docker/templates/mmdl-compose.yml.j2
Normal file
45
roles/docker/templates/mmdl-compose.yml.j2
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
services:
|
||||||
|
mmdl:
|
||||||
|
image: intriin/mmdl:latest
|
||||||
|
container_name: mmdl
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- mmdl_db
|
||||||
|
env_file:
|
||||||
|
- .env.local
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
- "auth.thesatelliteoflove.com:172.20.0.5"
|
||||||
|
labels:
|
||||||
|
glance.name: MMDL
|
||||||
|
glance.icon: si:task
|
||||||
|
glance.url: https://tasks.thesatelliteoflove.com/
|
||||||
|
glance.description: Task and calendar management
|
||||||
|
glance.id: mmdl
|
||||||
|
|
||||||
|
mmdl_db:
|
||||||
|
image: mysql:8.0
|
||||||
|
container_name: mmdl_db
|
||||||
|
restart: unless-stopped
|
||||||
|
command: --default-authentication-plugin=mysql_native_password
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: mmdl
|
||||||
|
MYSQL_USER: mmdl
|
||||||
|
MYSQL_PASSWORD: "{{ vault_mmdl_mysql_password }}"
|
||||||
|
MYSQL_ROOT_PASSWORD: "{{ vault_mmdl_mysql_root_password }}"
|
||||||
|
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
||||||
|
MYSQL_ROOT_HOST: "%"
|
||||||
|
volumes:
|
||||||
|
- mmdl_db:/var/lib/mysql
|
||||||
|
labels:
|
||||||
|
glance.parent: mmdl
|
||||||
|
glance.name: DB
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mmdl_db:
|
||||||
|
driver: local
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
external: true
|
||||||
|
name: lava
|
41
roles/docker/templates/mmdl-env.j2
Normal file
41
roles/docker/templates/mmdl-env.j2
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Database Configuration
|
||||||
|
DB_HOST=mmdl_db
|
||||||
|
DB_USER=mmdl
|
||||||
|
DB_PASS={{ vault_mmdl_mysql_password }}
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_DIALECT=mysql
|
||||||
|
DB_CHARSET=utf8mb4
|
||||||
|
DB_NAME=mmdl
|
||||||
|
|
||||||
|
# Encryption
|
||||||
|
AES_PASSWORD={{ vault_mmdl_aes_password }}
|
||||||
|
|
||||||
|
# SMTP Settings
|
||||||
|
SMTP_HOST=smtp.resend.com
|
||||||
|
SMTP_USERNAME=resend
|
||||||
|
SMTP_PASSWORD={{ resend_key }}
|
||||||
|
SMTP_FROM=tasks@updates.thesatelliteoflove.com
|
||||||
|
SMTP_PORT=587
|
||||||
|
SMTP_SECURE=true
|
||||||
|
|
||||||
|
# Authentication
|
||||||
|
USE_NEXT_AUTH=true
|
||||||
|
NEXTAUTH_URL=https://tasks.thesatelliteoflove.com
|
||||||
|
NEXTAUTH_SECRET={{ vault_mmdl_nextauth_secret }}
|
||||||
|
|
||||||
|
# Authentik OIDC Configuration
|
||||||
|
AUTHENTIK_ISSUER=https://auth.thesatelliteoflove.com/application/o/mmdl
|
||||||
|
AUTHENTIK_CLIENT_ID={{ vault_mmdl_oidc_client_id }}
|
||||||
|
AUTHENTIK_CLIENT_SECRET={{ vault_mmdl_oidc_client_secret }}
|
||||||
|
|
||||||
|
# User and Session Management
|
||||||
|
ALLOW_USER_REGISTRATION=false
|
||||||
|
MAX_CONCURRENT_LOGINS=3
|
||||||
|
OTP_VALIDITY_PERIOD=300
|
||||||
|
SESSION_VALIDITY_PERIOD=30
|
||||||
|
|
||||||
|
# Application Settings
|
||||||
|
API_URL=https://tasks.thesatelliteoflove.com
|
||||||
|
DEBUG_MODE=false
|
||||||
|
TEST_MODE=false
|
||||||
|
SUBTASK_RECURSION_DEPTH=5
|
Loading…
x
Reference in New Issue
Block a user