summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--roles/wg_portal/defaults/main.yml1
-rw-r--r--roles/wg_portal/handlers/main.yml6
-rw-r--r--roles/wg_portal/meta/argument_specs.yml4
-rw-r--r--roles/wg_portal/tasks/main.yml26
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"