Pinafore compatibility
Hi!
I'm trying to use https://pinafore.social with Pleroma and it mostly work. Mostly.
There are a couple of things that I found that doesn't work properly:
- Image sizing: Pinafore uses the meta field inside attachments to properly size the images and prevent layout recalculations after image loads (Link to attachments info in Mastodon Client API). Pleroma isn't returning this metadata with the attachments, so a proper image sizing in Pinafore is missing for Pleroma instances (right now, it fallbacks to 300x200 always).
-
Realtime events: Pinafore tries to connect to the endpoint
wss://pleroma.instance/api/v1/streaming?stream=user&access_token=zr9XAk2oWZjeIY8qO3MMA9JJwG9Y_oCvoAnZkvVdUII%3D
(This is the realaccess_token
being provided. Maybe that helps.). The Mastodon Streaming API (which is part of the Client API) describes this endpoint right here. The connection returns403 Forbidden
.
My Pinafore instance have the following configuration in prod.secret.exs
with MIX_ENV=prod
(security tokens and real address removed).
# Pleroma instance configuration
# NOTE: This file should not be committed to a repo or otherwise made public
# without removing sensitive information.
use Mix.Config
config :pleroma, Pleroma.Web.Endpoint,
url: [host: "pleroma.instance", scheme: "https", port: 443],
secret_key_base: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
config :pleroma, :instance,
name: "pleroma test",
email: "example@example.com",
limit: 5000,
registrations_open: true,
dedupe_media: false
config :pleroma, :media_proxy,
enabled: false,
redirect_on_failure: true
#base_url: "https://cache.pleroma.social"
config :pleroma, Pleroma.Repo,
adapter: Ecto.Adapters.Postgres,
username: "pleroma",
password: "pleroma",
database: "pleroma_dev",
hostname: "db",
pool_size: 10
# Configure web push notifications
config :web_push_encryption, :vapid_details,
subject: "mailto:example@example.com",
public_key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
private_key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Enable Strict-Transport-Security once SSL is working:
# config :pleroma, :http_security,
# sts: true
# Configure S3 support if desired.
# The public S3 endpoint is different depending on region and provider,
# consult your S3 provider's documentation for details on what to use.
#
# config :pleroma, Pleroma.Uploaders.S3,
# bucket: "some-bucket",
# public_endpoint: "https://s3.amazonaws.com"
#
# Configure S3 credentials:
# config :ex_aws, :s3,
# access_key_id: "xxxxxxxxxxxxx",
# secret_access_key: "yyyyyyyyyyyy",
# region: "us-east-1",
# scheme: "https://"
#
# For using third-party S3 clones like wasabi, also do:
# config :ex_aws, :s3,
# host: "s3.wasabisys.com"
# Configure Openstack Swift support if desired.
#
# Many openstack deployments are different, so config is left very open with
# no assumptions made on which provider you're using. This should allow very
# wide support without needing separate handlers for OVH, Rackspace, etc.
#
# config :pleroma, Pleroma.Uploaders.Swift,
# container: "some-container",
# username: "api-username-yyyy",
# password: "api-key-xxxx",
# tenant_id: "<openstack-project/tenant-id>",
# auth_url: "https://keystone-endpoint.provider.com",
# storage_url: "https://swift-endpoint.prodider.com/v1/AUTH_<tenant>/<container>",
# object_url: "https://cdn-endpoint.provider.com/<container>"
#
The server is inside a Docker container and behind a Caddy proxy with the following configuration:
https://pleroma.instance {
tls example@example.com
proxy / 127.0.0.1:4000 {
transparent
websocket
}
}
The server works perfectly with the Pleroma's UI, including the websocket functionality (bottom right chat) all over HTTPS/WSS.
Thanks in advance for your efforts :)