1dfa2c0a04
Developed in a separate session; committed here alongside the calendar work
that shares this repository's migration journal.
A person can now see their own Plex link, their Watch Now slots and their watch
history at /profile. The same panel is published in two further forms so that
accounts.sticknife.com on charon can carry it as one section of a wider
sticknife profile, next to the other services' sections.
- watch_history (0024) records what has been played, keyed on the Plex
history id so a re-sync cannot duplicate a row. Partial unique index,
because that id is null for anything entered by hand.
- plex_accounts.is_server_owner (0025) marks the one account whose viewing
the server files under local account 1 rather than under its plex.tv id.
- The embed carries its own layout, origin allowlist and a frame-height
reporter, so the host page can size it without guessing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
63 lines
3.0 KiB
Bash
63 lines
3.0 KiB
Bash
# ampelos-dashboard
|
|
#
|
|
# Copy to .env.local and fill in. Next.js loads .env.local automatically from
|
|
# the working directory, which is what ampelos.service sets. Never commit it.
|
|
|
|
# --- database -------------------------------------------------------------
|
|
# This repository owns the schema. ampelos-agent reads the same database with
|
|
# raw SQL and holds no copy of it, so a rename here needs `npm run check:schema`
|
|
# run over there.
|
|
DATABASE_URL=postgres://user:password@mimir/ampelos
|
|
|
|
# --- sign-in --------------------------------------------------------------
|
|
# AUTH_URL is this app's own address. The ISSUER is Authentik's, and the two
|
|
# are unrelated -- moving the identity provider does not change AUTH_URL.
|
|
AUTH_URL=https://ampelos.sticknife.com
|
|
|
|
# Must match the "issuer" field in the provider's own discovery document
|
|
# exactly, trailing slash included, or the sign-in fails validation even though
|
|
# the host answers. Check with:
|
|
# curl -s https://<host>/application/o/<slug>/.well-known/openid-configuration
|
|
AUTHENTIK_ISSUER=https://charon.sticknife.com/application/o/ampelos/
|
|
AUTHENTIK_CLIENT_ID=
|
|
AUTHENTIK_CLIENT_SECRET=
|
|
|
|
# --- ampelos-agent --------------------------------------------------------
|
|
# Where the indexer listens, for the manual search and grab panel. The
|
|
# automatic acquisition loop does not go through here.
|
|
AMPELOS_INDEXER_URL=http://127.0.0.1:8081
|
|
AMPELOS_AGENT_TIMEOUT_SECONDS=30
|
|
# Shared with ampelos-agent, in both directions: the satellites POST to
|
|
# /api/agents/* with it, and this app sends it to the indexer. Same value in
|
|
# both repositories' environments, in neither's history.
|
|
AMPELOS_AGENT_TOKEN=
|
|
|
|
# --- the sticknife-wide profile -------------------------------------------
|
|
# accounts.sticknife.com shows an Ampelos section in its own profile page, by
|
|
# framing /embed/profile and/or reading /api/profile. See PROFILE-INTEGRATION.md.
|
|
#
|
|
# Which origins may frame /embed/* and call /api/profile from a browser.
|
|
# Comma-separated ORIGINS, scheme included -- a bare hostname is silently
|
|
# ignored by the CSP parser and never matches a CORS Origin header. Everything
|
|
# outside /embed is frame-ancestors 'none' regardless of what is set here.
|
|
AMPELOS_EMBED_ANCESTORS=https://accounts.sticknife.com
|
|
#
|
|
# Optional, and OFF unless set. Lets charon render the panel SERVER-side, where
|
|
# there is no browser to carry a session cookie: it presents this as a bearer
|
|
# token and names the user with ?email= or ?userId=.
|
|
#
|
|
# That is a full read of anybody's profile, watch history included. It is
|
|
# deliberately NOT AMPELOS_AGENT_TOKEN -- that one is deployed to every
|
|
# satellite host, and a leaked herald script should not also hand over
|
|
# everyone's viewing. Leave it unset if charon only ever iframes the panel.
|
|
AMPELOS_PROFILE_API_TOKEN=
|
|
|
|
# --- external services ----------------------------------------------------
|
|
MOVIEDB_API=
|
|
PLEX_URL=
|
|
PLEX_PORT=32400
|
|
PLEX_AUTH_TOKEN=
|
|
PLEX_MACHINE_IDENTIFIER=
|
|
# Read-only here: the dashboard shows queue state, the agent does the grabbing.
|
|
QBT_URL=http://localhost:8080
|