## Changes ### Identity Provider (Authentik) - ✅ Deployed Authentik 2025.10.3 as identity provider - ✅ Configured automatic bootstrap with admin account (akadmin) - ✅ Fixed OIDC provider creation with correct redirect_uris format - ✅ Added automated OAuth2/OIDC provider configuration for Nextcloud - ✅ API-driven provider setup eliminates manual configuration ### Nextcloud Configuration - ✅ Fixed reverse proxy header configuration (trusted_proxies) - ✅ Added missing database indices (fs_storage_path_prefix) - ✅ Ran mimetype migrations for proper file type handling - ✅ Verified PHP upload limits (16GB upload_max_filesize) - ✅ Configured OIDC integration with Authentik - ✅ "Login with Authentik" button auto-configured ### Automation Scripts - ✅ Added deploy-client.sh for automated client deployment - ✅ Added rebuild-client.sh for infrastructure rebuild - ✅ Added destroy-client.sh for cleanup - ✅ Full deployment now takes ~10-15 minutes end-to-end ### Documentation - ✅ Updated README with automated deployment instructions - ✅ Added SSO automation workflow documentation - ✅ Added automation status tracking - ✅ Updated project reference with Authentik details ### Technical Fixes - Fixed Authentik API redirect_uris format (requires list of dicts with matching_mode) - Fixed Nextcloud OIDC command (user_oidc:provider not user_oidc:provider:add) - Fixed file lookup in Ansible (changed to slurp for remote files) - Updated Traefik to v3.6 for Docker API 1.44 compatibility - Improved error handling in app installation tasks ## Security - All credentials stored in SOPS-encrypted secrets - Trusted proxy configuration prevents IP spoofing - Bootstrap tokens auto-generated and secured ## Result Fully automated SSO deployment - no manual configuration required! 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
43 lines
1.2 KiB
YAML
43 lines
1.2 KiB
YAML
---
|
|
# Docker Compose setup for Authentik
|
|
|
|
- name: Create Authentik configuration directory
|
|
file:
|
|
path: "{{ authentik_config_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Create Authentik internal network
|
|
community.docker.docker_network:
|
|
name: "{{ authentik_network }}"
|
|
driver: bridge
|
|
internal: yes
|
|
|
|
- name: Deploy Authentik Docker Compose configuration
|
|
template:
|
|
src: docker-compose.authentik.yml.j2
|
|
dest: "{{ authentik_config_dir }}/docker-compose.yml"
|
|
mode: '0644'
|
|
notify: Restart Authentik
|
|
|
|
- name: Start Authentik services
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ authentik_config_dir }}"
|
|
state: present
|
|
|
|
- name: Wait for Authentik database to be ready
|
|
community.docker.docker_container_info:
|
|
name: authentik-db
|
|
register: db_container
|
|
until: db_container.container.State.Health.Status == "healthy"
|
|
retries: 30
|
|
delay: 5
|
|
changed_when: false
|
|
|
|
- name: Wait for Authentik server to be healthy (via docker)
|
|
shell: "docker exec authentik-server curl -s -o /dev/null -w '%{http_code}' http://localhost:9000/"
|
|
register: authentik_health
|
|
until: authentik_health.stdout in ['200', '302']
|
|
retries: 30
|
|
delay: 10
|
|
changed_when: false
|