diff options
| -rw-r--r-- | roles/wg_portal/defaults/main.yml | 1 | ||||
| -rw-r--r-- | roles/wg_portal/handlers/main.yml | 6 | ||||
| -rw-r--r-- | roles/wg_portal/meta/argument_specs.yml | 4 | ||||
| -rw-r--r-- | roles/wg_portal/tasks/main.yml | 26 |
4 files changed, 37 insertions, 0 deletions
diff --git a/roles/wg_portal/defaults/main.yml b/roles/wg_portal/defaults/main.yml index 7cf7d861..38f1bda7 100644 --- a/roles/wg_portal/defaults/main.yml +++ b/roles/wg_portal/defaults/main.yml @@ -2,3 +2,4 @@ wg_portal_version: "latest" wg_portal_port: "8080" wg_portal_password: "{{ ('changeme' | hash('sha256') | hash('sha256'))[:64] }}" +wg_portal_by_nginx: false diff --git a/roles/wg_portal/handlers/main.yml b/roles/wg_portal/handlers/main.yml index 86148648..244370d8 100644 --- a/roles/wg_portal/handlers/main.yml +++ b/roles/wg_portal/handlers/main.yml @@ -4,3 +4,9 @@ ansible.builtin.systemd_service: name: "wg-portal.service" state: "restarted" + +- name: "Restart nginx" + become: true + ansible.builtin.systemd_service: + name: "nginx" + state: "restarted" diff --git a/roles/wg_portal/meta/argument_specs.yml b/roles/wg_portal/meta/argument_specs.yml index 022a20e5..0cfa40d3 100644 --- a/roles/wg_portal/meta/argument_specs.yml +++ b/roles/wg_portal/meta/argument_specs.yml @@ -16,3 +16,7 @@ argument_specs: description: "Password hash for wg-portal authentication" type: "str" default: "{{ ('changeme' | hash('sha256') | hash('sha256'))[:64] }}" + wg_portal_by_nginx: + description: "Serve wg_portal behind nginx reverse proxy" + type: "bool" + default: false diff --git a/roles/wg_portal/tasks/main.yml b/roles/wg_portal/tasks/main.yml index 814f5f23..2b0eb3a7 100644 --- a/roles/wg_portal/tasks/main.yml +++ b/roles/wg_portal/tasks/main.yml @@ -83,3 +83,29 @@ group: "wg-portal" mode: "0640" notify: "Restart wg-portal" + +- name: "Create wg-portal nginx configurations" + become: true + when: wg_portal_by_nginx is defined and wg_portal_by_nginx != "" + ansible.builtin.copy: + content: | + location / { + proxy_pass http://127.0.0.1:{{ wg_portal_port }}/; + } + location /api/connections { + proxy_pass http://127.0.0.1:{{ wg_portal_port }}/api/connections; + } + location /api/status { + proxy_pass http://127.0.0.1:{{ wg_portal_port }}/api/status; + } + dest: "/etc/nginx/conf.d/wg-portal.conf" + owner: "root" + group: "root" + mode: "0644" + backup: true + # workaround issue: https://github.com/ansible/ansible/issues/9112 + # ref: https://serverfault.com/a/811520 + validate: > + bash -c 'echo "events { worker_connections 2; } http { server { include %s; } }" > /tmp/nginx.conf; + sudo nginx -T -c /tmp/nginx.conf; ec=$?; rm -f /tmp/nginx.conf; exit $ec' + notify: "Restart nginx" |
