diff --git a/prox-server-setup.yml b/prox-server-setup.yml index 8683538..d8e47b3 100755 --- a/prox-server-setup.yml +++ b/prox-server-setup.yml @@ -95,37 +95,6 @@ path: /etc/nginx/sites-available/ state: directory - # Ensure all NGinx site configurations are updated/enabled - - name: Ensure all NGinx site configurations are updated - template: - src: proxy_resources/etc/nginx/sites-available/git.domain - dest: "/etc/nginx/sites-available/{{ item }}.{{ domain_name }}" - loop: - - git - - mail - - searxng - - nextcloud - - chat - - invidious - - name: Ensure all NGinx site configurations are enabled - ansible.builtin.file: - src: "/etc/nginx/sites-available/{{ item }}.{{ domain_name }}" - dest: "/etc/nginx/sites-enabled/{{ item }}.{{ domain_name }}" - state: link - loop: - - git - - mail - - searxng - - nextcloud - - chat - - invidious - - - name: Enable NGinx - ansible.builtin.systemd: - name: nginx - enabled: yes - state: started - # Experimental NGinx Email Proxy # - name: Ensure Email Proxy Authentication Server is updated # ansible.builtin.template: @@ -136,10 +105,6 @@ # template: # src: proxy_resources/etc/haproxy/haproxy.cfg # dest: "/etc/haproxy/haproxy.cfg" - #- name: Enable HAProxy - # ansible.builtin.systemd: - # name: haproxy - # state: started - name: Reset doas configuration back to default become: yes diff --git a/proxy_resources/etc/nginx/sites-available/mail.domain b/proxy_resources/etc/nginx/sites-available/mail.domain deleted file mode 100755 index 683e3f9..0000000 --- a/proxy_resources/etc/nginx/sites-available/mail.domain +++ /dev/null @@ -1,15 +0,0 @@ -# {{ ansible_managed }} -# Frontend proxy to do SSL certificate authentication on backend etc - -server { - listen 80; - listen [::]:80; - - server_name mail.{{ domain_name }}; - - location / { - proxy_pass http://10.0.0.2; - include proxy_params; - } - -} diff --git a/services/service_git/ansible.cfg b/services/service_git/ansible.cfg index c36ea5d..b46bfad 100755 --- a/services/service_git/ansible.cfg +++ b/services/service_git/ansible.cfg @@ -1,5 +1,5 @@ [defaults] -inventory = hosts +inventory = ../../hosts [privilege_escalation] become_method=doas diff --git a/proxy_resources/etc/nginx/sites-available/git.domain b/services/service_git/proxy_resources/etc/nginx/sites-available/git.domain similarity index 100% rename from proxy_resources/etc/nginx/sites-available/git.domain rename to services/service_git/proxy_resources/etc/nginx/sites-available/git.domain diff --git a/services/service_invidious/ansible.cfg b/services/service_invidious/ansible.cfg new file mode 100755 index 0000000..b46bfad --- /dev/null +++ b/services/service_invidious/ansible.cfg @@ -0,0 +1,6 @@ +[defaults] +inventory = ../../hosts + +[privilege_escalation] +become_method=doas +become_ask_pass=True diff --git a/proxy_resources/etc/nginx/sites-available/invidious.domain b/services/service_invidious/proxy_resources/etc/nginx/sites-available/invidious.domain similarity index 100% rename from proxy_resources/etc/nginx/sites-available/invidious.domain rename to services/service_invidious/proxy_resources/etc/nginx/sites-available/invidious.domain diff --git a/services/service_mail/ansible.cfg b/services/service_mail/ansible.cfg index c36ea5d..b46bfad 100755 --- a/services/service_mail/ansible.cfg +++ b/services/service_mail/ansible.cfg @@ -1,5 +1,5 @@ [defaults] -inventory = hosts +inventory = ../../hosts [privilege_escalation] become_method=doas diff --git a/services/service_mail/ansible_resources/hosts b/services/service_mail/ansible_resources/hosts deleted file mode 100755 index ddde437..0000000 --- a/services/service_mail/ansible_resources/hosts +++ /dev/null @@ -1,6 +0,0 @@ -# {{ ansible_managed }} - -all: - hosts: - {{ proxy_server_hostname }}: - {{ proxy_server_hostname }}-defaultport: diff --git a/services/service_mail/ansible_resources/prox-deploy-service.yml b/services/service_mail/ansible_resources/prox-deploy-service.yml deleted file mode 100755 index 0f1d78d..0000000 --- a/services/service_mail/ansible_resources/prox-deploy-service.yml +++ /dev/null @@ -1,41 +0,0 @@ -# Ansible managed - -- hosts: {{ proxy_server_hostname }} - become: 'yes' - vars: - ansible_become_method: doas - tasks: - - name: Temporarily disable doas pass prompt as doas persist does not work within scripts - replace: - path: /etc/doas.conf - regexp: 'persist' - replace: 'nopass' - - - name: Copy haproxy reverse proxy configuration to proxy - ansible.builtin.template: - src: "proxy_resources/etc/haproxy/haproxy.cfg" - dest: "/etc/haproxy/haproxy.cfg" - owner: cspark-dev - group: cspark-dev - - name: Enable HAProxy - ansible.builtin.systemd: - name: haproxy - state: started - - - name: Fetch SSL certificates - become: yes - synchronize: - src: /etc/letsencrypt/ - dest: "data/certbot/certs" - mode: pull - rsync_path: doas rsync - - - name: Switch back to doas persist - replace: - path: /etc/doas.conf - regexp: 'nopass' - replace: 'persist' - - - name: Debug Finish message - debug: - msg: Ansible playbook has finished! diff --git a/services/service_mail/prox-server-ansible-playbooks-generate.yml b/services/service_mail/prox-server-ansible-playbooks-generate.yml deleted file mode 100755 index 841ec90..0000000 --- a/services/service_mail/prox-server-ansible-playbooks-generate.yml +++ /dev/null @@ -1,13 +0,0 @@ -- hosts: localhost - tasks: - - name: Generate proxy server playbooks - template: - src: "ansible_resources/{{ item }}" - dest: "{{ item }}" - mode: '0777' - loop: - - hosts - - prox-deploy-service.yml - - name: Debug Finish message - debug: - msg: Ansible playbook has finished! diff --git a/services/service_matrix/ansible.cfg b/services/service_matrix/ansible.cfg new file mode 100755 index 0000000..c36ea5d --- /dev/null +++ b/services/service_matrix/ansible.cfg @@ -0,0 +1,6 @@ +[defaults] +inventory = hosts + +[privilege_escalation] +become_method=doas +become_ask_pass=True diff --git a/services/service_matrix/deploy-service.yml b/services/service_matrix/deploy-service.yml new file mode 100755 index 0000000..cb07cee --- /dev/null +++ b/services/service_matrix/deploy-service.yml @@ -0,0 +1,25 @@ +- hosts: localhost + become: 'yes' + vars: + ansible_become_method: doas + tasks: + - name: Create necessary directories + ansible.builtin.file: + path: "{{ item }}" + owner: service_git + group: service_git + state: directory + loop: + - "{{ services_directory }}/service_git/postgres-data" + - name: Copy docker compose config and other git files + ansible.builtin.template: + src: "{{ item }}" + dest: "{{ services_directory }}/service_git/{{ item }}" + owner: service_git + group: service_git + loop: + - docker-compose.yml + + - name: Debug Finish message + debug: + msg: Ansible playbook has finished! diff --git a/services/service_matrix/docker-compose.yml b/services/service_matrix/docker-compose.yml new file mode 100644 index 0000000..7362d91 --- /dev/null +++ b/services/service_matrix/docker-compose.yml @@ -0,0 +1,79 @@ +version: "3" +services: + + # Gluetun is used to connect container to VPN + forgejo-gluetun: + image: qmcgaw/gluetun + cap_add: + - NET_ADMIN + environment: + - VPN_SERVICE_PROVIDER=custom + - VPN_TYPE=wireguard + - VPN_ENDPOINT_IP={{ proxy_server_ip }} + - VPN_ENDPOINT_PORT={{ proxy_server_vpn_port }} + - WIREGUARD_PUBLIC_KEY={{ vpn_server_pubkey }} + - WIREGUARD_PRIVATE_KEY={{ git_service_privkey }} + - WIREGUARD_ADDRESSES=10.0.0.3/32 + - FIREWALL_VPN_INPUT_PORTS=3000,22,222,5432 + ports: + - "3000:3000" + - "222:22" + networks: + forgejo: + deploy: + limits: + cpus: '0.10' + memory: 512M + + forgejo: + image: codeberg.org/forgejo/forgejo:1.21 + network_mode: "service:forgejo-gluetun" + environment: + # Service git UID and GID + - USER_UID=1006 + - USER_GID=1007 + + - FORGEJO__database__DB_TYPE=postgres + - FORGEJO__database__HOST=11.1.0.22:5432 + - FORGEJO__database__NAME=forgejo + - FORGEJO__database__USER=forgejo + - FORGEJO__database__PASSWD={{ service_git_postgres_pass }} + restart: always + volumes: + - ./forgejo-data:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + deploy: + limits: + cpus: '0.25' + memory: 512M + depends_on: + - forgejo-db + + forgejo-db: + image: postgres:16-alpine + restart: always + environment: + - POSTGRES_DB=forgejo + - POSTGRES_USER=forgejo + - POSTGRES_PASSWORD={{ service_git_postgres_pass }} + volumes: + - ./postgres-data:/var/lib/postgresql/data + networks: + forgejo: + ipv4_address: 11.1.0.22 + deploy: + limits: + cpus: '0.10' + memory: 128M + +networks: + forgejo: + driver: bridge + driver_opts: + com.docker.network.bridge.name: forgejo + # com.docker.network.driver.enable_ip_masquerade: 0 + ipam: + config: + - subnet: 11.1.0.0/16 + # gateway: 11.5.0.1 diff --git a/services/service_matrix/matrix-genconfig.sh b/services/service_matrix/matrix-genconfig.sh new file mode 100644 index 0000000..a3bd21d --- /dev/null +++ b/services/service_matrix/matrix-genconfig.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +docker run -it --rm \ + --mount type=bind,src=./generated-data,dst=/data \ + -e SYNAPSE_SERVER_NAME=my.matrix.host \ + -e SYNAPSE_REPORT_STATS=yes \ + matrixdotorg/synapse:latest generate diff --git a/services/service_matrix/servicesecrets.example b/services/service_matrix/servicesecrets.example new file mode 100755 index 0000000..be1c9ab --- /dev/null +++ b/services/service_matrix/servicesecrets.example @@ -0,0 +1,2 @@ +# Example service secrets for git docker service, to be encrypted with ansible vault and called servicesecrets.enc +service_git_postgres_pass: *** diff --git a/services/service_nextcloud/ansible.cfg b/services/service_nextcloud/ansible.cfg new file mode 100755 index 0000000..b46bfad --- /dev/null +++ b/services/service_nextcloud/ansible.cfg @@ -0,0 +1,6 @@ +[defaults] +inventory = ../../hosts + +[privilege_escalation] +become_method=doas +become_ask_pass=True diff --git a/proxy_resources/etc/nginx/sites-available/nextcloud.domain b/services/service_nextcloud/proxy_resources/etc/nginx/sites-available/nextcloud.domain similarity index 100% rename from proxy_resources/etc/nginx/sites-available/nextcloud.domain rename to services/service_nextcloud/proxy_resources/etc/nginx/sites-available/nextcloud.domain diff --git a/services/service_searxng/ansible.cfg b/services/service_searxng/ansible.cfg new file mode 100755 index 0000000..b46bfad --- /dev/null +++ b/services/service_searxng/ansible.cfg @@ -0,0 +1,6 @@ +[defaults] +inventory = ../../hosts + +[privilege_escalation] +become_method=doas +become_ask_pass=True diff --git a/proxy_resources/etc/nginx/sites-available/searxng.domain b/services/service_searxng/proxy_resources/etc/nginx/sites-available/searxng.domain similarity index 100% rename from proxy_resources/etc/nginx/sites-available/searxng.domain rename to services/service_searxng/proxy_resources/etc/nginx/sites-available/searxng.domain