Skip to content

Troubleshooting

This page is about an instance that is up and answering. A stack that will not come up at all is a different subject, and Startup failures has it: the two failures that never reach the application log, and the five lines that account for most first starts.

What you see What it is
Too many attempts. Try again in … The rate limit on the routes that check a secret: ten a minute, per address
Just refreshed: try again in n seconds The two-minute cooldown on a hand-made price refresh
… is unreachable right now. No value was made up An outside price source did not answer; nothing was invented in its place
The stored key is unreadable A provider key sealed under a SECRET_ENCRYPTION_KEY this instance no longer runs on
Code required, with a correct code Same cause, on your two-factor secret
403 on everything but reading You are on the demonstration account
This file is too large to be sent in one go (25 MB at most) An export bigger than the body limit

The sign-in answers, the application opens, and the first navigation lands on the sign-in page again with nothing anywhere saying why. That is COOKIE_SECURE=true meeting a cleartext address: the browser accepts the cookie on an HTTPS origin and throws it away on a plain one, localhost excepted. Go through the proxy, or set it to false while there is no HTTPS in front, as Behind a proxy explains.

One person’s mistyping locks out the house

Section titled “One person’s mistyping locks out the house”

The limit above is counted per address, and behind a reverse proxy every request arrives from the proxy, so the whole household shares one budget of ten. The same reading makes every session under Settings → Security show the same address. TRUSTED_PROXY_HOPS gives both the reader back, and Behind a proxy says what number to put there and why it is a promise rather than a setting.

Three different things look alike on a line. A refresh asked for twice waits out a two-minute cooldown and says how long is left. A source that is down is named, and no figure is invented in its place. A quote in another currency is stored and converted by nothing, so no total reads it and the currency is printed beside the line.

A line with no price at all is still a line: it is worth nothing until a price arrives, and the account counts it apart rather than folding a silent zero into a total. Holdings has both controls.

Two things a restored instance cannot open

Section titled “Two things a restored instance cannot open”

An instance restored under a different SECRET_ENCRYPTION_KEY holds a provider key and a two-factor secret it cannot read, and every figure beside them comes back. Restoring under another key walks out of both.

A restore is not atomic: it writes table after table, so an interrupted one leaves some tables back and some not, with no error page. Import the same file again: every row is matched on a natural key, so what landed is skipped and what did not is written. Restoring an export.

After an update a tab that was already open is served by its own service worker, out of cache, and a line at the bottom of the screen offers to reload. Take it: it refreshes the worker first, so what comes back is the new build. Updating an instance says when that offer cannot appear.

If none of this is your symptom, Getting help is where to report it.

Privacy