mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
PeerTube distributes video over WebRTC and the role proxies its tracker socket on purpose (templates/proxy.conf.j2:48, with a raised read timeout because peers ping every fifteen minutes). Tor carries no UDP and an onion client cannot hold peer connections, so an onion PeerTube is the app without the feature it exists for. What remained was plain HTTP video at Tor throughput, and a login path that only worked through a sed over the vendored dist of a third-party plugin.
That patch is gone with this change, along with PEERTUBE_OIDC_ALLOW_INSECURE_ISSUER, the variable that gated it, and both tor pins in meta/variants.yml. The root TODO entry describing it is removed too - it carried a three-step exit path (upstream MR, fork, delete) that no longer needs walking. The https-on-onion entry keeps its analysis and loses only the sentence that named peertube among the per-consumer workarounds.
The discovery gate stays. Failing the deploy when the plugin registered without building a client is not tor-specific and was the honest half of e64ed1cd9.
tor.enabled becomes a literal false rather than the block being deleted. Two lints define the contract: test_tor_contract requires every domain-serving role to declare the block, and test_sso_variant_requires_tor names a literal false as the first of three cases that may opt out of pinning the onion on with a reason. Deleting the block failed both; this is the language they specify.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
59 lines
2.9 KiB
Django/Jinja
59 lines
2.9 KiB
Django/Jinja
{% include 'roles/sys-svc-container/templates/env.j2' %}
|
|
|
|
POSTGRES_USER={{ lookup('database', application_id, 'username') }}
|
|
POSTGRES_PASSWORD={{ lookup('database', application_id, 'password') | dotenv_quote }}
|
|
POSTGRES_DB={{ lookup('database', application_id, 'name') }}
|
|
PEERTUBE_DB_USERNAME={{ lookup('database', application_id, 'username') }}
|
|
PEERTUBE_DB_PASSWORD={{ lookup('database', application_id, 'password') | dotenv_quote }}
|
|
PEERTUBE_DB_SSL=false
|
|
PEERTUBE_DB_HOSTNAME={{ lookup('database', application_id, 'host') }}
|
|
|
|
PEERTUBE_REDIS_HOSTNAME={{ lookup('engine', 'redis', application_id, 'host') }}
|
|
PEERTUBE_REDIS_PORT={{ lookup('engine', 'redis', application_id, 'port') }}
|
|
PEERTUBE_REDIS_AUTH={{ lookup('engine', 'redis', application_id, 'password') | dotenv_quote }}
|
|
|
|
PEERTUBE_WEBSERVER_HOSTNAME={{ lookup('domain',application_id) }}
|
|
PEERTUBE_WEBSERVER_HTTPS={{ lookup('tls', application_id, 'enabled') | string | lower }}
|
|
PEERTUBE_WEBSERVER_PORT={{ lookup('tls', application_id, 'ports.web') }}
|
|
PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback"]
|
|
|
|
{% if PEERTUBE_LIVE_ENABLED | bool %}
|
|
PEERTUBE_LIVE_ENABLED=true
|
|
PEERTUBE_LIVE_RTMP_ENABLED=true
|
|
PEERTUBE_LIVE_RTMP_PORT={{ PEERTUBE_RTMP_PORT }}
|
|
{% endif %}
|
|
|
|
PEERTUBE_SECRET={{ lookup('config', application_id, 'secrets.credentials.secret')}}
|
|
|
|
{% if lookup('objstore', application_id, 'enabled') | bool %}
|
|
{% set objstore_bucket = lookup('objstore', application_id, 'bucket') %}
|
|
{% set objstore_public_base = lookup('objstore', application_id, 'public_url') %}
|
|
PEERTUBE_OBJECT_STORAGE_ENABLED=true
|
|
PEERTUBE_OBJECT_STORAGE_ENDPOINT={{ lookup('objstore', application_id, 'url') }}
|
|
PEERTUBE_OBJECT_STORAGE_REGION={{ lookup('objstore', application_id, 'region') }}
|
|
PEERTUBE_OBJECT_STORAGE_FORCE_PATH_STYLE=true
|
|
PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC=public-read
|
|
PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE=private
|
|
PEERTUBE_OBJECT_STORAGE_CREDENTIALS_ACCESS_KEY_ID={{ lookup('objstore', application_id, 'access_key') }}
|
|
PEERTUBE_OBJECT_STORAGE_CREDENTIALS_SECRET_ACCESS_KEY={{ lookup('objstore', application_id, 'secret_key') | dotenv_quote }}
|
|
PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BUCKET_NAME={{ objstore_bucket }}
|
|
PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_PREFIX=web-videos/
|
|
PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BASE_URL={{ objstore_public_base }}
|
|
PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BUCKET_NAME={{ objstore_bucket }}
|
|
PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_PREFIX=streaming-playlists/
|
|
PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BASE_URL={{ objstore_public_base }}
|
|
{% endif %}
|
|
|
|
{% set email = lookup('email', application_id) %}
|
|
{% if email.enabled | bool %}
|
|
PEERTUBE_SMTP_USERNAME={{ email.username }}
|
|
PEERTUBE_SMTP_PASSWORD={{ email.password | dotenv_quote }}
|
|
PEERTUBE_SMTP_HOSTNAME={{ email.host }}
|
|
PEERTUBE_SMTP_PORT={{ email.port }}
|
|
PEERTUBE_SMTP_FROM={{ email['from'] }}
|
|
PEERTUBE_SMTP_TLS={{ email.tls | lower }}
|
|
PEERTUBE_SMTP_DISABLE_STARTTLS={{ 'false' if email.start_tls else 'true' }}
|
|
{% endif %}
|
|
|
|
PEERTUBE_ADMIN_EMAIL={{ email['from'] }}
|