Joders 1c5300a6f4
All checks were successful
Deploy / deploy (push) Successful in 53s
Updated README with steps to fix current issue
SWAOS
2026-01-29 21:25:48 +00:00
2026-01-29 14:58:45 -06:00
2026-01-29 11:41:38 -06:00

QUICK EXPLANATION

In order for the system to properly function with all background workers, the deployment needs to be transferred to docker compose. This file explains the proccess. I do not have access to the VPS so I figured I would create a guide.

  • The reason the session is not working currently is because the API runs within docker compose and all the workers can not function (auth for example).

Deploy via Docker (Gitea Actions)

This document lists the changes needed to switch your deployment to Docker Compose so all services (api, web, scheduler, postgres, etc.) start automatically on deploy.


1) Replace the deploy workflow steps

Update .gitea/workflows/deploy.yml so it:

  • Pulls the repo on the VPS (or uses the runner workspace)
  • Builds and starts containers with Docker Compose
  • Runs migrations inside the running API container
  • Reloads Nginx (or Caddy)

Recommended deploy.yml (Docker-based):

name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: vps-host
    steps:
      - uses: actions/checkout@v4

      - name: Deploy with Docker Compose
        run: |
          # Adjust to your deployment directory
          APP_DIR=/opt/skymoney
          mkdir -p $APP_DIR

          # Sync repo contents to server folder
          rsync -a --delete ./ $APP_DIR/

          cd $APP_DIR

          # Build + start all services
          docker compose up -d --build

          # Run Prisma migrations inside API container
          docker compose exec -T api npx prisma migrate deploy

      - name: Reload Nginx
        run: sudo systemctl reload nginx

If you use Caddy instead of Nginx, replace the reload step accordingly.


2) Ensure docker-compose.yml is production-safe

Doublecheck these:

  • The API service exposes the correct port
  • The web service is either served by Nginx (static build) or a container
  • Scheduler/worker services are included

Example pattern:

services:
  api:
    build: ./api
    env_file:
      - ./.env
    ports:
      - "8080:8080"

  scheduler:
    build: ./api
    command: node dist/worker/rollover.js
    env_file:
      - ./.env

  web:
    build: ./web
    # or copy build output to nginx

3) Update Nginx upstream

Make sure your proxy matches the API port:

location /api/ {
  proxy_pass http://127.0.0.1:8080/;
}

4) Add Docker/Compose to VPS if missing

sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker

5) Update environment files

Your .env should exist at /opt/skymoney/.env and contain:

  • DATABASE_URL
  • JWT_SECRET (>=32 chars)
  • COOKIE_SECRET (>=32 chars)
  • CORS_ORIGIN
  • NODE_ENV=production

6) Verify after deploy

docker compose ps
curl -i http://127.0.0.1:8080/health

Optional: logs

docker compose logs -f api
docker compose logs -f scheduler

If you want, I can also adapt the deploy workflow to use docker compose pull + docker compose up without rebuilding every time, or split API/web deploys.

Description
No description provided
Readme 627 KiB
Languages
TypeScript 89.6%
CSS 6%
JavaScript 3.4%
Shell 0.6%
HTML 0.2%
Other 0.2%