From 99b1b78cfc00d4393c909badbaaf6ab569ce8b70 Mon Sep 17 00:00:00 2001
From: h <9pfs@amcforum.wiki>
Date: Wed, 12 Mar 2025 16:27:36 -0700
Subject: [PATCH] Add initial working state

---
 deploy.yml       | 62 ++++++++++++++++++++++++++++++++++++++++++++++++
 inventory.yml    |  3 +++
 vencloud.service | 15 ++++++++++++
 3 files changed, 80 insertions(+)
 create mode 100644 deploy.yml
 create mode 100644 inventory.yml
 create mode 100644 vencloud.service

diff --git a/deploy.yml b/deploy.yml
new file mode 100644
index 0000000..a5182ca
--- /dev/null
+++ b/deploy.yml
@@ -0,0 +1,62 @@
+- name: Deploy vencloud
+  hosts: all
+  remote_user: root
+  tasks:
+    - name: Set architecture specific variables
+      set_fact:
+        arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
+    - name: Create vencloud user
+      ansible.builtin.user:
+        name: vencloud
+        system: true
+        comment: vencloud service user
+        shell: /usr/bin/bash
+    - name: Install dependencies
+      ansible.builtin.package:
+        name: sudo,git
+        state: present
+    - name: Clone vencloud repository
+      ansible.builtin.git:
+        repo: 'https://github.com/vencord/vencloud'
+        dest: /home/vencloud/vencloud
+      become: true
+      become_user: vencloud
+    - name: Download golang
+      ansible.builtin.get_url:
+        url: https://go.dev/dl/go1.24.1.linux-{{arch}}.tar.gz
+        dest: /home/vencloud/golang.tar.gz
+        checksum: sha256:cb2396bae64183cdccf81a9a6df0aea3bce9511fc21469fb89a0c00470088073
+      become: true
+      become_user: vencloud
+      register: golang_download
+    - name: Delete old golang
+      ansible.builtin.file:
+        path: /home/vencloud/go
+        state: absent
+      when: golang_download.changed
+      become: true
+      become_user: vencloud
+    - name: Extract golang
+      ansible.builtin.unarchive:
+        src: /tmp/golang.tar.gz
+        dest: /home/vencloud
+        remote_src: true
+      when: golang_download.changed
+      become: true
+      become_user: vencloud
+    - name: Build vencloud
+      ansible.builtin.command:
+        cmd: /home/vencloud/go/bin/go build -o backend
+        chdir: /home/vencloud/vencloud
+      become: true
+      become_user: vencloud
+    - name: Upload systemd service file
+      ansible.builtin.copy:
+        src: vencloud.service
+        dest: /etc/systemd/system/vencloud.service
+    - name: Restart vencloud
+      ansible.builtin.systemd:
+        name: vencloud
+        state: restarted
+        enabled: true
+        daemon_reload: true
\ No newline at end of file
diff --git a/inventory.yml b/inventory.yml
new file mode 100644
index 0000000..f176bf3
--- /dev/null
+++ b/inventory.yml
@@ -0,0 +1,3 @@
+all:
+  hosts:
+    vencloud:
diff --git a/vencloud.service b/vencloud.service
new file mode 100644
index 0000000..c26af2f
--- /dev/null
+++ b/vencloud.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Vencord cloud settings server
+After=network-online.target
+ConditionPathExists=/home/vencloud/vencloud/.env
+
+[Service]
+ExecStart=/home/vencloud/vencloud/backend
+User=vencloud
+ProtectHome=read-only
+ProtectSystem=strict
+NoNewPrivileges=true
+EnvironmentFile=/home/vencloud/vencloud/.env
+
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file