Owly Post
Self-hosted

Requirements

What you need before installing: hardware, Docker, ports, an LLM and optionally email

Hardware

RequirementDetail
MachineAny small box or VPS you already have, including a Raspberry Pi
ArchitectureThe published image is multi-arch: linux/amd64 and linux/arm64
MemoryNo minimum is published. The three containers are light; Postgres is the largest of them
DiskSmall. Article text is cleared after 30 days by default, so the database does not keep growing with full bodies

Software

RequirementDetail
DockerDocker Engine with the Compose plugin (docker compose, v2)
Node.jsOnly when running from source or running scripts on the host: Node 22 or newer. The image uses Node 24

Network and ports

PortServiceExposure
3000appPublished on the host; this is the web UI and API
5432postgresBound to 127.0.0.1 only, for host tooling such as pnpm migrate. Not reachable from outside

The app has no built-in authentication: it is single-user and ships without a login. Do not expose port 3000 directly to the internet. Put it behind a reverse proxy with authentication (nginx, Caddy or Traefik with basic auth or your SSO), or keep it on a private network or VPN such as Tailscale. When you do put it behind a proxy, set SITE_URL or ALLOWED_HOSTS; see Configuration.

An LLM

Summaries and digests are written by a language model. Pick one of three:

OptionWhat you needCost
Anthropic (default)An API key with API credits. A Claude subscription does not countA few cents a week at the default models
OpenAIAn API keySimilar
Ollama or another local serverThe server running on the Docker host, with models pulledNothing

Details per provider, including which models to pick, are on LLM providers.

Optional: email

Without email the digest is still readable in the app. To have it mailed, you need either a Resend API key (their free plan fits) or any SMTP server, such as your mail provider or a local relay. See Configuration.

On this page