From 081978670a553835d503b53b7b91a9b2dbb77080 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 5 Jan 2025 12:46:07 -0800 Subject: [PATCH] add whois --- create_service.sh | 29 ++++++++++------- deploy-whois.yml | 4 +++ inventory | 2 ++ .../nameservers/templates/db.simponic.xyz.j2 | 1 + .../files/ryo/http.whois.simponic.xyz.conf | 13 ++++++++ .../files/ryo/https.whois.simponic.xyz.conf | 32 +++++++++++++++++++ roles/whois/tasks/main.yml | 30 +++++++++++++++++ roles/whois/templates/docker-compose.yml.j2 | 16 ++++++++++ 8 files changed, 116 insertions(+), 11 deletions(-) create mode 100644 deploy-whois.yml create mode 100644 roles/webservers/files/ryo/http.whois.simponic.xyz.conf create mode 100644 roles/webservers/files/ryo/https.whois.simponic.xyz.conf create mode 100644 roles/whois/tasks/main.yml create mode 100644 roles/whois/templates/docker-compose.yml.j2 diff --git a/create_service.sh b/create_service.sh index acbdf5f..ee01e7d 100755 --- a/create_service.sh +++ b/create_service.sh @@ -2,18 +2,25 @@ set -e -DNS_ENDPOINT="https://hatecomputers.club/dns" -BIND_FILE="roles/nameservers/templates/db.simponic.xyz.j2" +prompt_with_default() { + local prompt_message="$1" + local default_value="$2" + read -p "$prompt_message [$default_value]: " input + echo "${input:-$default_value}" +} -SERVICE_TITLE="phoneof simponic." -SERVICE="phoneof" -SERVICE_PORT="6363" -SERVICE_REPO="git.simponic.xyz/simponic/$SERVICE" -SERVICE_ORIGIN="git@git.simponic.xyz:simponic/$SERVICE" -INTERNAL="no" -SERVICE_HOST="ryo" -PACKAGE_PATH="$HOME/git/simponic/$SERVICE" -HATECOMPUTERS_API_KEY="$(pbpaste)" +DNS_ENDPOINT=$(prompt_with_default "Enter DNS endpoint" "https://hatecomputers.club/dns") +BIND_FILE=$(prompt_with_default "Enter bind file path" "roles/nameservers/templates/db.simponic.xyz.j2") + +SERVICE_TITLE=$(prompt_with_default "Enter service title" "phoneof simponic.") +SERVICE=$(prompt_with_default "Enter service name" "phoneof") +SERVICE_PORT=$(prompt_with_default "Enter service port" "6363") +SERVICE_REPO=$(prompt_with_default "Enter service repository URL" "git.simponic.xyz/simponic/$SERVICE") +SERVICE_ORIGIN=$(prompt_with_default "Enter service origin URL" "git@git.simponic.xyz:simponic/$SERVICE") +INTERNAL=$(prompt_with_default "Is the service internal? (yes/no)" "no") +SERVICE_HOST=$(prompt_with_default "Enter service host" "ryo") +PACKAGE_PATH=$(prompt_with_default "Enter package path" "$HOME/git/simponic/$SERVICE") +HATECOMPUTERS_API_KEY=$(prompt_with_default "Enter hatecomputers API key (paste from clipboard)" "$(pbpaste)") function render_template() { diff --git a/deploy-whois.yml b/deploy-whois.yml new file mode 100644 index 0000000..35df72b --- /dev/null +++ b/deploy-whois.yml @@ -0,0 +1,4 @@ +- name: deploy whois + hosts: whois + roles: + - whois diff --git a/inventory b/inventory index 5bdcaa8..6182f0a 100644 --- a/inventory +++ b/inventory @@ -91,4 +91,6 @@ raspberrypi ansible_user=root ansible_connection=ssh ryo ansible_user=root ansible_connection=ssh [something] +ryo ansible_user=root ansible_connection=ssh +[whois] ryo ansible_user=root ansible_connection=ssh \ No newline at end of file diff --git a/roles/nameservers/templates/db.simponic.xyz.j2 b/roles/nameservers/templates/db.simponic.xyz.j2 index 2fba45f..fcec85d 100644 --- a/roles/nameservers/templates/db.simponic.xyz.j2 +++ b/roles/nameservers/templates/db.simponic.xyz.j2 @@ -27,6 +27,7 @@ simponic.xyz. 1 IN A 23.95.214.176 chesshbot.simponic.xyz. 1 IN A 129.123.76.14 ;; CNAME Records +whois.simponic.xyz. 43200 IN CNAME ryo.simponic.xyz. something.simponic.xyz. 43200 IN CNAME ryo.simponic.xyz. phoneof.simponic.xyz. 43200 IN CNAME ryo.simponic.xyz. secure.tunnel.simponic.xyz. 1 IN CNAME simponic.xyz. diff --git a/roles/webservers/files/ryo/http.whois.simponic.xyz.conf b/roles/webservers/files/ryo/http.whois.simponic.xyz.conf new file mode 100644 index 0000000..7dfc7c8 --- /dev/null +++ b/roles/webservers/files/ryo/http.whois.simponic.xyz.conf @@ -0,0 +1,13 @@ +server { + listen 80; + server_name whois.simponic.xyz; + + location /.well-known/acme-challenge { + root /var/www/letsencrypt; + try_files $uri $uri/ =404; + } + + location / { + rewrite ^ https://whois.simponic.xyz$request_uri? permanent; + } +} diff --git a/roles/webservers/files/ryo/https.whois.simponic.xyz.conf b/roles/webservers/files/ryo/https.whois.simponic.xyz.conf new file mode 100644 index 0000000..9f9a3c1 --- /dev/null +++ b/roles/webservers/files/ryo/https.whois.simponic.xyz.conf @@ -0,0 +1,32 @@ +server { + listen 443 ssl; + server_name whois.simponic.xyz; + + ssl_certificate /etc/letsencrypt/live/whois.simponic.xyz/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/whois.simponic.xyz/privkey.pem; + ssl_trusted_certificate /etc/letsencrypt/live/whois.simponic.xyz/fullchain.pem; + + ssl_session_cache shared:SSL:50m; + ssl_session_timeout 5m; + ssl_stapling on; + ssl_stapling_verify on; + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; + + ssl_dhparam /etc/nginx/dhparams.pem; + ssl_prefer_server_ciphers on; + + location / { + proxy_pass http://127.0.0.1:8466; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $server_name; + proxy_buffering off; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; + add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always; + } +} diff --git a/roles/whois/tasks/main.yml b/roles/whois/tasks/main.yml new file mode 100644 index 0000000..7b5923e --- /dev/null +++ b/roles/whois/tasks/main.yml @@ -0,0 +1,30 @@ +--- +- name: ensure whois docker/compose exist + file: + path: /etc/docker/compose/whois + state: directory + owner: root + group: root + mode: 0700 + +- name: ensure whois db exist + file: + path: /etc/docker/compose/whois/db + state: directory + owner: root + group: root + mode: 0777 + +- name: build whois docker-compose.yml.j2 + template: + src: ../templates/docker-compose.yml.j2 + dest: /etc/docker/compose/whois/docker-compose.yml + owner: root + group: root + mode: u=rw,g=r,o=r + +- name: daemon-reload and enable whois + ansible.builtin.systemd_service: + state: restarted + enabled: true + name: docker-compose@whois diff --git a/roles/whois/templates/docker-compose.yml.j2 b/roles/whois/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..4832672 --- /dev/null +++ b/roles/whois/templates/docker-compose.yml.j2 @@ -0,0 +1,16 @@ +version: "3" + +services: + api: + restart: always + image: git.simponic.xyz/simponic/whois + healthcheck: + test: ["CMD", "wget", "--spider", "http://localhost:8080/api/health"] + interval: 5s + timeout: 10s + retries: 5 + env_file: .env + volumes: + - ./db:/app/db + ports: + - "127.0.0.1:8466:8080"