Skip to content

Troubleshooting

Startup

"$NAME, which is unset" : An env:NAME secret has no value. Check .env and the environment: block in the compose file.

"no [provider.tor] or [provider.web] section" : Every [provider.*] section in policy.toml was deleted or commented out. At least one provider must be configured. See config/policy.example.toml for the available providers.

"no chat adapters are enabled" : Every section in adapters.toml is missing or has enabled = false. With none, there is no way to subscribe or open a room.

"room.json could not be read" : The state file is corrupt or was hand-edited into invalid JSON. The daemon clears it and starts fresh. If a party line was live at the time, its provider container may still be running; stop it by hand with docker compose down in the transport directory.

Rooms

Host gets "warming the line" and nothing else : The provider hook failed or timed out. docker compose logs partylinepagerd carries the hook's stderr. Common causes: checkout dir wrong inside the container, Docker socket not mounted, Tor needing longer than BOOTSTRAP_TIMEOUT, or a transport compose file missing command: ["relay"] (without it, partyline.sh blocks on a confirmation prompt when run detached).

Bot ignores web (or tor) completely : That command has no [provider.*] section, so it's not a command on this instance. --check lists the commands that exist. help never offers one that doesn't.

web room answers "the line would not come up" : Room URL failed validation. The logs name the reason. Usually: base_url in policy doesn't match the hook's output, path or static_slug has a character outside [A-Za-z0-9_/-], or a custom hook emitted an invalid path.

Test the hook directly:

docker compose run --rm \
  --entrypoint /opt/partylinepager/hooks/provider-web.sh \
  -e PARTYLINEPAGER_WEB_BASE_URL=https://your.host \
  -e PARTYLINEPAGER_WEB_PATH=join \
  -e PARTYLINEPAGER_WEB_STATIC_SLUG= \
  partylinepagerd

Web room link still works after it closed : Expected. The TTL frees the instance to open the next room; it cannot end a call hosted on someone else's server.

Subscribers

Nobody received the broadcast : partylinepagerctl who and check for active. Pending subscribers receive nothing. So do subscribers inside their quiet window, silently and by design.

Quiet hours are not silencing anything : They need a timezone. status shows Timezone: unset when that is the problem. The bot refuses to guess an offset rather than wake somebody at 3am.

Lifecycle

Room outlived a daemon restart : Expected. On startup the daemon re-arms the TTL if the room is still live, and runs the teardown hook if it is not.

Command sent while the daemon was down got no response : Expected for Telegram and Mastodon: the backlog is confirmed but not acted on. Send it again.