diff --git a/.github/workflows/grav_auto_deploy.yaml b/.github/workflows/grav_auto_deploy.yaml
new file mode 100644
index 000000000..26b1b37f0
--- /dev/null
+++ b/.github/workflows/grav_auto_deploy.yaml
@@ -0,0 +1,30 @@
+name: Hexo automatic deployment
+
+on:
+  push:
+    branches:
+    - main
+
+jobs:
+  hexo_deploy:
+    name: Grav automatic deployment
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@master
+    - uses: actions/setup-node@v3
+      with:
+        node-version: 20.17.0
+    - name: LXD deployment environment initialization
+      run: |
+        sudo snap install lxd
+        sudo lxd init --auto
+        sudo lxc remote add deploy direct.qhjack.top --password ${{secrets.LXD_PASSWORD}} --accept-certificate
+        sudo lxc remote switch deploy
+    - name: clear LXD cache
+      run: |
+        sudo lxc exec qhjack /usr/bin/clean_qhjack_web.fish
+    - name: Upload files to LXD on direct.qhjack.top
+      run: |
+        mkdir -p ../public/qhjack
+        cp -r * ../public/qhjack
+        sudo lxc file push -p -r ../public/qhjack qhjack/var/www/