/
/
/
1---
2# ========================================
3# NGINX REVERSE PROXY MANAGER DEPLOYMENT
4# ========================================
5# Deploys Nginx Proxy Manager with MariaDB backend
6# Provides web UI for reverse proxy configuration
7
8- name: "Display Nginx Proxy Manager deployment information"
9 ansible.builtin.debug:
10 msg:
11 - "Deploying Nginx Proxy Manager service"
12 - "Service: {{ connectivity_nginx_proxy_service_name }}"
13 - "Admin Port: {{ connectivity_nginx_proxy_admin_port }}"
14 - "HTTP Port: {{ connectivity_nginx_proxy_http_port }}"
15 - "HTTPS Port: {{ connectivity_nginx_proxy_https_port }}"
16 - "Database enabled: {{ connectivity_nginx_proxy_db_enabled }}"
17 tags: [nginx-proxy]
18
19- name: "Create Nginx Proxy Manager data directories"
20 ansible.builtin.file:
21 path: "{{ connectivity_docker_base_path }}/nginx-proxy/{{ item }}"
22 state: directory
23 owner: "{{ connectivity_docker_owner }}"
24 group: "{{ connectivity_docker_group }}"
25 mode: "0755"
26 loop:
27 - data
28 - letsencrypt
29 - database
30 tags: [nginx-proxy, directories]
31
32- name: "Create Nginx Proxy Manager Docker Compose file"
33 ansible.builtin.template:
34 src: nginx-proxy-compose.yml.j2
35 dest: "{{ connectivity_docker_base_path }}/nginx-proxy/docker-compose.yml"
36 owner: "{{ connectivity_docker_owner }}"
37 group: "{{ connectivity_docker_group }}"
38 mode: "0644"
39 notify: restart nginx-proxy
40 tags: [nginx-proxy, compose]
41
42- name: "Create Nginx Proxy Manager environment file"
43 ansible.builtin.template:
44 src: nginx-proxy.env.j2
45 dest: "{{ connectivity_docker_base_path }}/nginx-proxy/.env"
46 owner: "{{ connectivity_docker_owner }}"
47 group: "{{ connectivity_docker_group }}"
48 mode: "0600" # Secure environment file with DB credentials
49 notify: restart nginx-proxy
50 tags: [nginx-proxy, config, secrets]
51
52- name: "Create Nginx Proxy Manager custom configuration"
53 ansible.builtin.template:
54 src: nginx-proxy-custom.conf.j2
55 dest: "{{ connectivity_docker_base_path }}/nginx-proxy/data/nginx/custom.conf"
56 owner: "{{ connectivity_docker_owner }}"
57 group: "{{ connectivity_docker_group }}"
58 mode: "0644"
59 notify: restart nginx-proxy
60 tags: [nginx-proxy, config]
61
62
63- name: "Start Nginx Proxy Manager database (if enabled)"
64 community.docker.docker_compose:
65 project_src: "{{ connectivity_docker_base_path }}/nginx-proxy"
66 services:
67 - "{{ connectivity_nginx_proxy_db_container_name }}"
68 pull: yes
69 state: present
70 when: nginx_proxy_db_enabled | default(true)
71 tags: [nginx-proxy, database]
72
73- name: "Wait for database to be ready"
74 ansible.builtin.wait_for:
75 port: 3306
76 host: 127.0.0.1
77 delay: 10
78 timeout: 60
79 when: nginx_proxy_db_enabled | default(true)
80 tags: [nginx-proxy, database]
81
82- name: "Start Nginx Proxy Manager service"
83 community.docker.docker_compose:
84 project_src: "{{ connectivity_docker_base_path }}/nginx-proxy"
85 pull: yes
86 state: present
87 tags: [nginx-proxy, service]
88
89- name: "Wait for Nginx Proxy Manager to be ready"
90 ansible.builtin.wait_for:
91 port: "{{ connectivity_nginx_proxy_admin_port }}"
92 host: "{{ ansible_default_ipv4.address }}"
93 delay: 15
94 timeout: 120
95 tags: [nginx-proxy, health]
96
97- name: "Verify Nginx Proxy Manager container is running"
98 community.docker.docker_container_info:
99 name: "{{ connectivity_nginx_proxy_container_name }}"
100 register: connectivity_nginx_proxy_container_status
101 tags: [nginx-proxy, verify]
102
103- name: "Verify Nginx Proxy Manager database container is running"
104 community.docker.docker_container_info:
105 name: "{{ connectivity_nginx_proxy_db_container_name }}"
106 register: connectivity_nginx_proxy_db_status
107 when: nginx_proxy_db_enabled | default(true)
108 tags: [nginx-proxy, verify]
109
110- name: "Display Nginx Proxy Manager service status"
111 ansible.builtin.debug:
112 msg:
113 - "Nginx Proxy Manager deployed successfully"
114 - "Container status: {{ connectivity_nginx_proxy_container_status.container.State.Status | default('Unknown') }}"
115 - "Database status: {{ connectivity_nginx_proxy_db_status.container.State.Status | default('Disabled') }}"
116 - "Admin UI: http://{{ ansible_default_ipv4.address }}:{{ connectivity_nginx_proxy_admin_port }}"
117 - "HTTP Proxy: {{ ansible_default_ipv4.address }}:{{ connectivity_nginx_proxy_http_port }}"
118 - "HTTPS Proxy: {{ ansible_default_ipv4.address }}:{{ connectivity_nginx_proxy_https_port }}"
119 - ""
120 - "Default login credentials:"
121 - "Email: [email protected]"
122 - "Password: changeme"
123 - "â ï¸ Change default credentials immediately!"
124 - ""
125 - "Next steps:"
126 - "1. Login and change default credentials"
127 - "2. Configure SSL certificates"
128 - "3. Add proxy hosts for your services"
129 tags: [nginx-proxy, info]
130
131
132- name: "Label Nginx Proxy Manager containers for connectivity service group"
133 community.docker.docker_container:
134 name: "{{ item.name }}"
135 labels:
136 com.connectivity.service: "nginx-proxy"
137 com.connectivity.type: "{{ item.type }}"
138 com.connectivity.port: "{{ item.port }}"
139 state: started
140 recreate: no
141 loop:
142 - { name: "{{ connectivity_nginx_proxy_container_name }}", type: "proxy", port: "{{ connectivity_nginx_proxy_admin_port }}" }
143 - { name: "{{ connectivity_nginx_proxy_db_container_name }}", type: "database", port: "3306" }
144 when: item.name in (ansible_facts.docker_containers | default([]))
145 tags: [nginx-proxy, labels]