diff --git a/.github/workflows/ci-cd-web-desktop.yml b/.github/workflows/ci-cd-web-desktop.yml index 3296b69..7b0cb86 100644 --- a/.github/workflows/ci-cd-web-desktop.yml +++ b/.github/workflows/ci-cd-web-desktop.yml @@ -216,6 +216,28 @@ jobs: "$EFFECTIVE_APP_DIR"/ "$DEST"/ echo "Published build to: $DEST" + - name: Ensure SQLite volume ownership (sistema_db) + run: | + set -e + VOLUME_NAME="sistema_sistema_db" + if ! docker volume inspect "$VOLUME_NAME" >/dev/null 2>&1; then + echo "Volume $VOLUME_NAME não encontrado; pulando ajuste de permissões" + exit 0 + fi + echo "Ajustando permissões em $VOLUME_NAME..." + docker run --rm -v "$VOLUME_NAME":/data alpine:3 sh -lc ' + set -e + chown -R 1000:1000 /data 2>/dev/null || true + chmod -R ug+rwX /data 2>/dev/null || true + if [ ! -e /data/db.sqlite ]; then + touch /data/db.sqlite + chown 1000:1000 /data/db.sqlite 2>/dev/null || true + chmod 660 /data/db.sqlite 2>/dev/null || true + fi + ls -ld /data && ls -l /data/db.sqlite + ' + echo "Permissões do volume ajustadas com sucesso" + - name: Swarm deploy (stack.yml) run: | cd "$EFFECTIVE_APP_DIR" diff --git a/docs/OPERACAO-PRODUCAO.md b/docs/OPERACAO-PRODUCAO.md index b23a61b..29c3bc2 100644 --- a/docs/OPERACAO-PRODUCAO.md +++ b/docs/OPERACAO-PRODUCAO.md @@ -33,6 +33,7 @@ Nota: este documento foi substituído por `docs/operations.md` e permanece aqui - Verifique CORS/credenciais (`Access-Control-Allow-Credentials: true`). - Garante que estamos usando `cookies.set` para aplicar todos os cookies da Better Auth. - Refaça o handshake (feche reabra o desktop). Opcional: renomeie `EBWebView` para limpar cookies no Windows. +4. Se o app desktop exibir `Falha no registro (500)` com `attempt to write a readonly database`, o volume `sistema_sistema_db` ficou com permissões incorretas (SQLite não consegue gravar). Rode `docker run --rm -v sistema_sistema_db:/data alpine:3 sh -lc 'chown -R 1000:1000 /data && chmod -R ug+rwX /data'` ou simplesmente dispare um deploy (o workflow CI agora corrige as permissões antes de publicar). ## Requisitos - VPS com Docker/Swarm e Traefik já em execução na rede externa `traefik_public`.