all repos — mcp-news @ 28abd7cf538d00250da1385604fc5df9e4208a8d

personal mcp server for news

Corrige permissao do banco no container: volume nomeado com dona appuser (resolve unable to open database file)
Pablo Murad pablo@pablomurad.com
Sat, 08 Aug 2026 15:40:32 -0300
commit

28abd7cf538d00250da1385604fc5df9e4208a8d

parent

bb8ad8824932d4663aca2688614a06dd5c6e301e

3 files changed, 8 insertions(+), 3 deletions(-)

jump to
M DockerfileDockerfile

@@ -18,6 +18,9 @@ # Código + um feeds.json padrão (o deploy sobrescreve montando o seu por cima).

COPY *.py ./ COPY feeds.json ./feeds.json +# Pasta do banco pertencente ao appuser (o volume nomeado herda essa dona). +RUN mkdir -p /data && chown appuser:appuser /data + USER appuser EXPOSE 17631
M README.mdREADME.md

@@ -24,10 +24,9 @@ Rodar com Docker:

cp .env.example .env (edite o .env e defina NEWS_MCP_TOKEN) - mkdir -p data docker compose up -d --build -A porta fica presa em 127.0.0.1:17631, atras de um proxy reverso (nginx) com HTTPS. O nginx deve repassar todas as rotas (proxy_pass para 127.0.0.1:17631), nao so /mcp, porque o OAuth usa /authorize, /token, /register e /.well-known. O banco fica em ./data/news.db e persiste. Editar o feeds.json vale na proxima coleta, sem rebuild. +A porta fica presa em 127.0.0.1:17631, atras de um proxy reverso (nginx) com HTTPS. O nginx deve repassar todas as rotas (proxy_pass para 127.0.0.1:17631), nao so /mcp, porque o OAuth usa /authorize, /token, /register e /.well-known. O banco fica num volume Docker (newsdata) e persiste; o container roda como usuario nao-root e o volume ja nasce com a dona certa. Editar o feeds.json vale na proxima coleta, sem rebuild. Configuracao pelo .env: NEWS_MCP_TOKEN, NEWS_MCP_PORT, POLL_INTERVAL_MIN, RETENTION_DAYS, NEWS_MCP_ISSUER_URL, NEWS_MCP_AUTH_PASSWORD.
M docker-compose.ymldocker-compose.yml

@@ -14,7 +14,7 @@ ports:

# 127.0.0.1 → só o nginx (mesma máquina) alcança. NUNCA use 0.0.0.0 aqui. - "127.0.0.1:17631:17631" volumes: - - ./data:/data # banco persistente (news.db + WAL) + - newsdata:/data # banco persistente (news.db + WAL) - ./feeds.json:/app/feeds.json:ro # edite as fontes sem rebuild restart: unless-stopped # ── Endurecimento ──

@@ -25,3 +25,6 @@ cap_drop:

- ALL security_opt: - no-new-privileges:true + +volumes: + newsdata: