Last updated: 3/17/2026
This plan details the end-to-end CI/CD pipeline for Voidline
Meet:
- Tag-based deployments from your GitHub monorepo
- Automatic building and releasing of Electron desktop app and
backend
- VPS backend deployment via Docker Compose using SSH
- Static assets published to GitHub Pages
- Extensible with notifications, alternate CDNs, and future test/stage
deploys
vX.X.X) to main branch.pnpm electron:build and
electron-builder (unsigned for now)..exe and update assets to GitHub
Releases for auto-update and downloads..exe to your VPS for direct
distribution.Dockerfile.meet to repo root, update Compose to
point to new path.git pull or clone).secrets.env from injected secrets.meet service..ppk to OpenSSH, upload public key to
VPS ~/.ssh/authorized_keys, put private in GitHub
Secrets./out (or build
output dir) to gh-pages branch using actions-gh-pages.https://<username>.github.io/<repo>/ or custom
domain.secrets.env and/or injects into Docker
Compose.A single workflow, e.g. .github/workflows/release.yml
triggers on tag push:
name: Release & Deploy
on:
push:
tags:
- 'v*.*.*'
jobs:
build-desktop:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 9
- run: pnpm install
- run: pnpm electron:build
- run: pnpm electron-builder --publish always
build-static:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pnpm install
- run: pnpm build:web
- uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./packages/meet-core/out
deploy-backend:
needs: [build-desktop, build-static]
runs-on: ubuntu-latest
steps:
- uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.VPS_HOST }}
username: spellsever
key: ${{ secrets.VPS_DEPLOY_KEY }}
passphrase: ${{ secrets.VPS_DEPLOY_KEY_PASSPHRASE }}
script: |
cd ~/stoat/stoat
git pull origin main
echo "${{ secrets.LIVEKIT_SECRETS_ENV }}" > secrets.env
sudo docker builder prune -f
sudo DOCKER_BUILDKIT=1 docker compose build meet
sudo docker compose up -d meet
# Optionally: upload .exe to VPS via SCP (see references below)
# Optionally: add notifications to Discord/email (see resources)Dockerfile.meet to repo, and update
Compose..ppk to OpenSSH
.pem.~/.ssh/authorized_keys for deploy
user on VPS..ppk to OpenSSH key; consider a dedicated
deploy user for production security.Dockerfile.meet to the repo and update Compose
pathing.secrets.env
contents..github/workflows/release.yml based on the above
template.