Files
SkyMoney/README.md
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

148 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 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):**
```yaml
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:
```yaml
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
```bash
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
```bash
docker compose ps
curl -i http://127.0.0.1:8080/health
```
---
## Optional: logs
```bash
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.