Files
pl8list-rewind/.env.example
T
nvrl 27225332fb Add opt-in pl8list connection with library sync, follows and resync
At sign-in users can choose to stay connected to pl8list on that device.
The pl8list session is then stored in the device's session row, encrypted
with XChaCha20-Poly1305 under a key derived from the device's local token
(only the browser has it) and a server key kept outside the database. It
is only decrypted during that device's own requests, re-encrypted when the
token rotates or pl8list sends a new cookie, and deleted when pl8list
rejects it.

Every sign-in now syncs the personal feed, saved tracks (imported as likes)
and saved artists (imported as follows). Connected devices resync on use
every six hours and push new likes and follows to the pl8list library with
addOnly, so nothing is ever removed there. Without the connection, the
resync button runs the email-code sign-in again.

Artists can be followed from each card (f); follows feed the ranker. The
account menu shows the sync state, resync and disconnect. Privacy policy,
export and account deletion cover the new data.
2026-11-01 12:36:00 +01:00

25 lines
1.0 KiB
Bash

# Optional overrides. Defaults work in Docker.
# HOST=127.0.0.1
# PORT=8790
# PL8_DB=/data/pl8list.db
# CACHE_DIR=/data/cache # audio segments and images, default: next to the DB
# CACHE_MAX_MB=2048
# Server half of the key for "stay connected" pl8list sessions. Default: a key file
# created next to the DB on first start. Keep it out of DB backups for an extra layer;
# changing it disconnects every device.
# LINK_KEY= # base64 of 32 random bytes: openssl rand -base64 32
# LINK_KEY_FILE=/data/link.key
# Set by compose.override.yaml when behind Traefik:
# TRUSTED_PROXY_HOPS=1 # proxies that append to X-Forwarded-For (TRUST_PROXY=1 also means 1)
# PUBLIC_ORIGIN=https://pl8.narl.io
# Only for plain-http development from another machine (drops Secure, __Host-, HSTS):
# INSECURE_COOKIES=1
# Impressum and privacy policy. Required for a public site in Germany.
# Separate address lines with "|".
IMPRESSUM_NAME=
IMPRESSUM_ADDRESS=
IMPRESSUM_EMAIL=
IMPRESSUM_PHONE=
HOSTING_PROVIDER=