src.nth.io/

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin/build/defaults/main.yaml7
-rw-r--r--bin/build/tasks/main.yaml37
-rw-r--r--bin/server/defaults/main.yaml4
-rw-r--r--bin/server/handlers/main.yaml5
-rw-r--r--bin/server/tasks/main.yaml24
-rw-r--r--bin/server/templates/[email protected]11
-rw-r--r--bin/server/templates/nginx.conf.j230
7 files changed, 118 insertions, 0 deletions
diff --git a/bin/build/defaults/main.yaml b/bin/build/defaults/main.yaml
new file mode 100644
index 0000000..06e07d9
--- /dev/null
+++ b/bin/build/defaults/main.yaml
@@ -0,0 +1,7 @@
+---
+
+bin_version: "2.0.1"
+# https://github.com/w4/bin/releases
+bin_tar: "https://github.com/w4/bin/archive/refs/tags/v{{bin_version}}.tar.gz"
+bin_build_dir: "/tmp/bin-{{bin_version}}"
+bin_srv_dir: "/var/www/build/"
diff --git a/bin/build/tasks/main.yaml b/bin/build/tasks/main.yaml
new file mode 100644
index 0000000..44c722e
--- /dev/null
+++ b/bin/build/tasks/main.yaml
@@ -0,0 +1,37 @@
+---
+
+- name: install cargo
+ become: yes
+ apt: name="cargo"
+
+- name: unarchive bin
+ unarchive:
+ remote_src: yes
+ src: "{{bin_tar}}"
+ dest: "/tmp/"
+ creates: "{{bin_build_dir}}"
+
+- name: check if bin build exists
+ stat:
+ path: "{{bin_build_dir}}/target/release/bin"
+ register: build_file
+
+- name: build bin
+ command: "cargo build --release"
+ args:
+ chdir: "{{bin_build_dir}}"
+ when: not build_file.stat.exists
+
+- name: create build server dir
+ become: yes
+ file:
+ path: "{{bin_srv_dir}}"
+ mode: "0755"
+ state: "directory"
+
+- name: copy bin to build server dir
+ become: yes
+ copy:
+ remote_src: yes
+ src: "{{bin_build_dir}}/target/release/bin"
+ dest: "{{bin_srv_dir}}/bin"
diff --git a/bin/server/defaults/main.yaml b/bin/server/defaults/main.yaml
new file mode 100644
index 0000000..4862a99
--- /dev/null
+++ b/bin/server/defaults/main.yaml
@@ -0,0 +1,4 @@
+---
+
+bin_user: "pastebin"
+bin_port: 8820
diff --git a/bin/server/handlers/main.yaml b/bin/server/handlers/main.yaml
new file mode 100644
index 0000000..a5d6c7c
--- /dev/null
+++ b/bin/server/handlers/main.yaml
@@ -0,0 +1,5 @@
+---
+
+- name: restart service
+ become: yes
+ systemd: name="bin@{{bin_port}}.service" state="restarted" daemon_reload="yes"
diff --git a/bin/server/tasks/main.yaml b/bin/server/tasks/main.yaml
new file mode 100644
index 0000000..2b7634e
--- /dev/null
+++ b/bin/server/tasks/main.yaml
@@ -0,0 +1,24 @@
+---
+
+- name: add bin user
+ become: yes
+ user: name="{{bin_user}}" shell="/bin/false" system="yes"
+
+- name: install bin binary
+ become: yes
+ get_url:
+ url: "{{bin_url}}"
+ dest: "/usr/local/bin/bin"
+ mode: "0755"
+ notify: restart service
+
+- name: install systemd service
+ become: yes
+ template:
+ dest: "/lib/systemd/system/[email protected]"
+ notify: restart service
+
+- name: ensure service is started
+ become: yes
+ systemd: name="bin@{{bin_port}}.service" enabled="yes" state="started"
diff --git a/bin/server/templates/[email protected] b/bin/server/templates/[email protected]
new file mode 100644
index 0000000..697bb79
--- /dev/null
+++ b/bin/server/templates/[email protected]
@@ -0,0 +1,11 @@
+[Unit]
+Description=Bin pastebin server bound on port %i
+After=syslog.target network.target
+
+[Service]
+ExecStart=/usr/local/bin/bin 127.0.0.1:%i --buffer-size 10 --max-paste-size 16kB
+Restart=always
+User={{bin_user}}
+
+[Install]
+WantedBy=multi-user.target
diff --git a/bin/server/templates/nginx.conf.j2 b/bin/server/templates/nginx.conf.j2
new file mode 100644
index 0000000..e07be7e
--- /dev/null
+++ b/bin/server/templates/nginx.conf.j2
@@ -0,0 +1,30 @@
+server {
+ listen 80;
+ listen [::]:80;
+ server_name {{nginx_server_name}};
+ return 301 https://$host$request_uri;
+}
+
+server {
+ listen 443 ssl http2;
+ # listen [::]:443 ssl ipv6only=on;
+ server_name {{nginx_server_name}};
+
+ ssl_certificate {{nginx_ssl_cert}};
+ ssl_certificate_key {{nginx_ssl_privkey}};
+ include /etc/letsencrypt/options-ssl-nginx.conf;
+ ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
+ ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
+ ssl_stapling on;
+ ssl_stapling_verify on;
+
+ location / {
+ proxy_pass http://127.0.0.1:{{nginx_proxy_port}};
+ proxy_redirect off;
+ proxy_set_header Host $host;
+ 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 $scheme;
+ }
+}