mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-12-23 00:26:30 +00:00
Merge remote-tracking branch 'origin/develop' into webfinger-fix
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
commit
28e5e65676
365 changed files with 3208 additions and 872 deletions
|
@ -1,11 +1,13 @@
|
|||
image: git.pleroma.social:5050/pleroma/pleroma/ci-base
|
||||
|
||||
variables: &global_variables
|
||||
# Only used for the release
|
||||
ELIXIR_VER: 1.12.3
|
||||
POSTGRES_DB: pleroma_test
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
DB_HOST: postgres
|
||||
DB_PORT: 5432
|
||||
DB_PORT: "5432"
|
||||
MIX_ENV: test
|
||||
|
||||
workflow:
|
||||
|
@ -152,22 +154,6 @@ unit-testing-erratic:
|
|||
- mix ecto.migrate
|
||||
- mix test --only=erratic
|
||||
|
||||
# Removed to fix CI issue. In this early state it wasn't adding much value anyway.
|
||||
# TODO Fix and reinstate federated testing
|
||||
# federated-testing:
|
||||
# stage: test
|
||||
# cache: *testing_cache_policy
|
||||
# services:
|
||||
# - name: minibikini/postgres-with-rum:12
|
||||
# alias: postgres
|
||||
# command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
|
||||
# script:
|
||||
# - mix deps.get
|
||||
# - mix ecto.create
|
||||
# - mix ecto.migrate
|
||||
# - epmd -daemon
|
||||
# - mix test --trace --only federated
|
||||
|
||||
unit-testing-rum:
|
||||
extends:
|
||||
- .build_changes_policy
|
||||
|
@ -175,7 +161,7 @@ unit-testing-rum:
|
|||
stage: test
|
||||
cache: *testing_cache_policy
|
||||
services:
|
||||
- name: minibikini/postgres-with-rum:12
|
||||
- name: git.pleroma.social:5050/pleroma/pleroma/postgres-with-rum-13
|
||||
alias: postgres
|
||||
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
|
||||
variables:
|
||||
|
@ -189,7 +175,7 @@ unit-testing-rum:
|
|||
|
||||
lint:
|
||||
extends: .build_changes_policy
|
||||
image: ¤t_elixir elixir:1.12-alpine
|
||||
image: ¤t_elixir elixir:1.13-alpine
|
||||
stage: test
|
||||
cache: *testing_cache_policy
|
||||
before_script: ¤t_bfr_script
|
||||
|
@ -294,7 +280,7 @@ stop_review_app:
|
|||
|
||||
amd64:
|
||||
stage: release
|
||||
image: elixir:1.11.4
|
||||
image: elixir:$ELIXIR_VER
|
||||
only: &release-only
|
||||
- stable@pleroma/pleroma
|
||||
- develop@pleroma/pleroma
|
||||
|
@ -318,8 +304,9 @@ amd64:
|
|||
- deps
|
||||
variables: &release-variables
|
||||
MIX_ENV: prod
|
||||
VIX_COMPILATION_MODE: PLATFORM_PROVIDED_LIBVIPS
|
||||
before_script: &before-release
|
||||
- apt-get update && apt-get install -y cmake libmagic-dev
|
||||
- apt-get update && apt-get install -y cmake libmagic-dev libvips-dev erlang-dev
|
||||
- echo "import Config" > config/prod.secret.exs
|
||||
- mix local.hex --force
|
||||
- mix local.rebar --force
|
||||
|
@ -334,13 +321,13 @@ amd64-musl:
|
|||
stage: release
|
||||
artifacts: *release-artifacts
|
||||
only: *release-only
|
||||
image: elixir:1.11.4-alpine
|
||||
image: elixir:$ELIXIR_VER-alpine
|
||||
tags:
|
||||
- amd64
|
||||
cache: *release-cache
|
||||
variables: *release-variables
|
||||
before_script: &before-release-musl
|
||||
- apk add git build-base cmake file-dev openssl
|
||||
- apk add git build-base cmake file-dev openssl vips-dev
|
||||
- echo "import Config" > config/prod.secret.exs
|
||||
- mix local.hex --force
|
||||
- mix local.rebar --force
|
||||
|
@ -352,7 +339,7 @@ arm:
|
|||
only: *release-only
|
||||
tags:
|
||||
- arm32-specified
|
||||
image: arm32v7/elixir:1.11.4
|
||||
image: arm32v7/elixir:$ELIXIR_VER
|
||||
cache: *release-cache
|
||||
variables: *release-variables
|
||||
before_script: *before-release
|
||||
|
@ -364,7 +351,7 @@ arm-musl:
|
|||
only: *release-only
|
||||
tags:
|
||||
- arm32-specified
|
||||
image: arm32v7/elixir:1.11.4-alpine
|
||||
image: arm32v7/elixir:$ELIXIR_VER-alpine
|
||||
cache: *release-cache
|
||||
variables: *release-variables
|
||||
before_script: *before-release-musl
|
||||
|
@ -376,7 +363,7 @@ arm64:
|
|||
only: *release-only
|
||||
tags:
|
||||
- arm
|
||||
image: arm64v8/elixir:1.11.4
|
||||
image: arm64v8/elixir:$ELIXIR_VER
|
||||
cache: *release-cache
|
||||
variables: *release-variables
|
||||
before_script: *before-release
|
||||
|
@ -388,7 +375,7 @@ arm64-musl:
|
|||
only: *release-only
|
||||
tags:
|
||||
- arm
|
||||
image: arm64v8/elixir:1.11.4-alpine
|
||||
image: arm64v8/elixir:$ELIXIR_VER-alpine
|
||||
cache: *release-cache
|
||||
variables: *release-variables
|
||||
before_script: *before-release-musl
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
`<code>` can be anything, but we recommend using a more or less unique identifier to avoid collisions, such as the branch name.
|
||||
|
||||
`<type>` can be `add`, `remove`, `fix`, `security` or `skip`. `skip` is only used if there is no user-visible change in the MR (for example, only editing comments in the code). Otherwise, choose a type that corresponds to your change.
|
||||
`<type>` can be `add`, `change`, `remove`, `fix`, `security` or `skip`. `skip` is only used if there is no user-visible change in the MR (for example, only editing comments in the code). Otherwise, choose a type that corresponds to your change.
|
||||
|
||||
In the file, write the changelog entry. For example, if an MR adds group functionality, we can create a file named `group.add` and write `Add group functionality` in it.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
### Release checklist
|
||||
* [ ] Bump version in `mix.exs`
|
||||
* [ ] Compile a changelog
|
||||
* [ ] Compile a changelog with the `tools/collect-changelog` script
|
||||
* [ ] Create an MR with an announcement to pleroma.social
|
||||
#### post-merge
|
||||
* [ ] Tag the release on the merge commit
|
||||
|
|
1
.rgignore
Normal file
1
.rgignore
Normal file
|
@ -0,0 +1 @@
|
|||
priv/static
|
63
CHANGELOG.md
63
CHANGELOG.md
|
@ -4,19 +4,76 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
|
||||
## Unreleased
|
||||
|
||||
## 2.6.1
|
||||
### Changed
|
||||
- - Document maximum supported version of Erlang & Elixir
|
||||
|
||||
### Added
|
||||
- [docs] add frontends management documentation
|
||||
|
||||
### Fixed
|
||||
- TwitterAPI: Return proper error when healthcheck is disabled
|
||||
- Fix eblurhash and elixir-captcha not using system cflags
|
||||
|
||||
## 2.6.0
|
||||
### Security
|
||||
- Preload: Make generated JSON html-safe. It already was html safe because it only consists of config data that is base64 encoded, but this will keep it safe it that ever changes.
|
||||
- CommonAPI: Prevent users from accessing media of other users by creating a status with reused attachment ID
|
||||
- Disable XML entity resolution completely to fix a dos vulnerability
|
||||
|
||||
### Added
|
||||
- Support for Image activities, namely from Hubzilla
|
||||
- Add OAuth scope descriptions
|
||||
- Allow lang attribute in status text
|
||||
- OnlyMedia Upload Filter
|
||||
- Implement MRF policy to reject or delist according to emojis
|
||||
- (hardening) Add no_new_privs=yes to OpenRC service files
|
||||
- Implement quotes
|
||||
- Add unified streaming endpoint
|
||||
|
||||
### Fixed
|
||||
|
||||
- rel="me" was missing its cache
|
||||
- MediaProxy responses now return a sandbox CSP header
|
||||
- Filter context activities using Visibility.visible_for_user?
|
||||
- UploadedMedia: Add missing disposition_type to Content-Disposition
|
||||
- fix not being able to fetch flash file from remote instance
|
||||
- Fix abnormal behaviour when refetching a poll
|
||||
- Allow non-HTTP(s) URIs in "url" fields for compatibility with "FEP-fffd: Proxy Objects"
|
||||
- Fix opengraph and twitter card meta tags
|
||||
- ForceMentionsInContent: fix double mentions for Mastodon/Misskey posts
|
||||
- OEmbed HTML tags are now filtered
|
||||
- Restrict attachments to only uploaded files only
|
||||
- Fix error 404 when deleting status of a banned user
|
||||
- Fix config ownership in dockerfile to pass restriction test
|
||||
- Fix user fetch completely broken if featured collection is not in a supported form
|
||||
- Correctly handle the situation when a poll has both "anyOf" and "oneOf" but one of them being empty
|
||||
- Fix handling report from a deactivated user
|
||||
- Prevent using the .json format to bypass authorized fetch mode
|
||||
- Fix mentioning punycode domains when using Markdown
|
||||
- Show more informative errors when profile exceeds char limits
|
||||
|
||||
### Removed
|
||||
- BREAKING: Support for passwords generated with `crypt(3)` (Gnu Social migration artifact)
|
||||
- remove BBS/SSH feature, replaced by an external bridge.
|
||||
- Remove a few unused indexes.
|
||||
- Cleanup OStatus-era user upgrades and ap_enabled indicator
|
||||
- Deprecate Pleroma's audio scrobbling
|
||||
|
||||
## 2.5.4
|
||||
|
||||
## Security
|
||||
- Fix XML External Entity (XXE) loading vulnerability allowing to fetch arbitary files from the server's filesystem
|
||||
|
||||
## 2.5.3
|
||||
|
||||
### Security
|
||||
- Emoji pack loader sanitizes pack names
|
||||
- Reduced permissions of config files and directories, distros requiring greater permissions like group-read need to pre-create the directories
|
||||
|
||||
## 2.5.5
|
||||
|
||||
## Security
|
||||
- Prevent users from accessing media of other users by creating a status with reused attachment ID
|
||||
|
||||
## 2.5.4
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ARG ELIXIR_IMG=hexpm/elixir
|
||||
ARG ELIXIR_VER=1.11.4
|
||||
ARG ELIXIR_VER=1.12.3
|
||||
ARG ERLANG_VER=24.2.1
|
||||
ARG ALPINE_VER=3.17.0
|
||||
|
||||
|
@ -8,8 +8,9 @@ FROM ${ELIXIR_IMG}:${ELIXIR_VER}-erlang-${ERLANG_VER}-alpine-${ALPINE_VER} as bu
|
|||
COPY . .
|
||||
|
||||
ENV MIX_ENV=prod
|
||||
ENV VIX_COMPILATION_MODE=PLATFORM_PROVIDED_LIBVIPS
|
||||
|
||||
RUN apk add git gcc g++ musl-dev make cmake file-dev &&\
|
||||
RUN apk add git gcc g++ musl-dev make cmake file-dev vips-dev &&\
|
||||
echo "import Config" > config/prod.secret.exs &&\
|
||||
mix local.hex --force &&\
|
||||
mix local.rebar --force &&\
|
||||
|
@ -37,7 +38,7 @@ ARG HOME=/opt/pleroma
|
|||
ARG DATA=/var/lib/pleroma
|
||||
|
||||
RUN apk update &&\
|
||||
apk add exiftool ffmpeg imagemagick libmagic ncurses postgresql-client &&\
|
||||
apk add exiftool ffmpeg vips libmagic ncurses postgresql-client &&\
|
||||
adduser --system --shell /bin/false --home ${HOME} pleroma &&\
|
||||
mkdir -p ${DATA}/uploads &&\
|
||||
mkdir -p ${DATA}/static &&\
|
||||
|
|
|
@ -3,8 +3,20 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Mix.Tasks.Pleroma.Benchmark do
|
||||
import Mix.Pleroma
|
||||
@shortdoc "Benchmarks"
|
||||
@moduledoc """
|
||||
Benchmark tasks available:
|
||||
|
||||
adapters
|
||||
render_timeline
|
||||
search
|
||||
tag
|
||||
|
||||
MIX_ENV=benchmark mix pleroma.benchmark adapters
|
||||
"""
|
||||
|
||||
use Mix.Task
|
||||
import Mix.Pleroma
|
||||
|
||||
def run(["search"]) do
|
||||
start_pleroma()
|
||||
|
@ -63,7 +75,7 @@ defmodule Mix.Tasks.Pleroma.Benchmark do
|
|||
|
||||
Benchee.run(
|
||||
%{
|
||||
"Standart rendering" => fn activities ->
|
||||
"Standard rendering" => fn activities ->
|
||||
Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{
|
||||
activities: activities,
|
||||
for: user,
|
|
@ -1 +0,0 @@
|
|||
MediaProxy responses now return a sandbox CSP header
|
|
@ -1 +0,0 @@
|
|||
Filter context activities using Visibility.visible_for_user?
|
|
@ -1 +0,0 @@
|
|||
Add OAuth scope descriptions
|
|
@ -1 +0,0 @@
|
|||
remove BBS/SSH feature, replaced by an external bridge.
|
|
@ -1 +0,0 @@
|
|||
UploadedMedia: Add missing disposition_type to Content-Disposition
|
|
@ -1 +0,0 @@
|
|||
Remove a few unused indexes.
|
|
@ -1 +0,0 @@
|
|||
fix not being able to fetch flash file from remote instance
|
|
@ -1 +0,0 @@
|
|||
Cleanup OStatus-era user upgrades and ap_enabled indicator
|
|
@ -1 +0,0 @@
|
|||
Allow lang attribute in status text
|
|
@ -1 +0,0 @@
|
|||
Fix abnormal behaviour when refetching a poll
|
|
@ -1 +0,0 @@
|
|||
Allow non-HTTP(s) URIs in "url" fields for compatibility with "FEP-fffd: Proxy Objects"
|
|
@ -1 +0,0 @@
|
|||
Fix opengraph and twitter card meta tags
|
|
@ -1 +0,0 @@
|
|||
ForceMentionsInContent: fix double mentions for Mastodon/Misskey posts
|
|
@ -1 +0,0 @@
|
|||
OEmbed HTML tags are now filtered
|
|
@ -1 +0,0 @@
|
|||
OnlyMedia Upload Filter
|
1
changelog.d/3900.change
Normal file
1
changelog.d/3900.change
Normal file
|
@ -0,0 +1 @@
|
|||
Update to Phoenix 1.7
|
|
@ -1 +0,0 @@
|
|||
Preload: Make generated JSON html-safe. It already was html safe because it only consists of config data that is base64 encoded, but this will keep it safe it that ever changes.
|
1
changelog.d/3987.fix
Normal file
1
changelog.d/3987.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Remove checking ImageMagick's commands for Pleroma.Upload.Filter.AnalyzeMetadata
|
1
changelog.d/add-outbox.fix
Normal file
1
changelog.d/add-outbox.fix
Normal file
|
@ -0,0 +1 @@
|
|||
ap userview: add outbox field.
|
|
@ -1 +0,0 @@
|
|||
Fix XML External Entity (XXE) loading vulnerability allowing to fetch arbitary files from the server's filesystem
|
1
changelog.d/anonymous-exception-else.fix
Normal file
1
changelog.d/anonymous-exception-else.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix #strip_report_status_data
|
|
@ -1 +0,0 @@
|
|||
Restrict attachments to only uploaded files only
|
1
changelog.d/authorize-interaction.add
Normal file
1
changelog.d/authorize-interaction.add
Normal file
|
@ -0,0 +1 @@
|
|||
Support /authorize-interaction route used by Mastodon
|
1
changelog.d/bad_inbox_request.change
Normal file
1
changelog.d/bad_inbox_request.change
Normal file
|
@ -0,0 +1 @@
|
|||
Invalid activities delivered to the inbox will be rejected with a 400 Bad Request
|
1
changelog.d/blurhash.change
Normal file
1
changelog.d/blurhash.change
Normal file
|
@ -0,0 +1 @@
|
|||
Replace eblurhash with rinpatch_blurhash. This also removes a dependency on ImageMagick.
|
|
@ -1 +0,0 @@
|
|||
CommonAPI: Prevent users from accessing media of other users by creating a status with reused attachment ID
|
|
@ -1 +0,0 @@
|
|||
Fix error 404 when deleting status of a banned user
|
|
@ -1 +0,0 @@
|
|||
Deprecate Pleroma's audio scrobbling
|
1
changelog.d/deprecations.skip
Normal file
1
changelog.d/deprecations.skip
Normal file
|
@ -0,0 +1 @@
|
|||
|
1
changelog.d/digest_emails.fix
Normal file
1
changelog.d/digest_emails.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix the processing of email digest jobs.
|
|
@ -1 +0,0 @@
|
|||
Disable XML entity resolution completely to fix a dos vulnerability
|
|
@ -1 +0,0 @@
|
|||
- Fix config ownership in dockerfile to pass restriction test
|
1
changelog.d/docs-max-elixir-erlang.change
Normal file
1
changelog.d/docs-max-elixir-erlang.change
Normal file
|
@ -0,0 +1 @@
|
|||
- Document maximum supported version of Erlang & Elixir
|
|
@ -1 +0,0 @@
|
|||
Emoji pack loader sanitizes pack names
|
|
@ -1 +0,0 @@
|
|||
Implement MRF policy to reject or delist according to emojis
|
1
changelog.d/favicon.add
Normal file
1
changelog.d/favicon.add
Normal file
|
@ -0,0 +1 @@
|
|||
Add support for configuring favicon, embed favicon and PWA manifest in server-generated meta
|
|
@ -1 +0,0 @@
|
|||
Fix user fetch completely broken if featured collection is not in a supported form
|
1
changelog.d/federation_status-access.change
Normal file
1
changelog.d/federation_status-access.change
Normal file
|
@ -0,0 +1 @@
|
|||
- Make `/api/v1/pleroma/federation_status` publicly available
|
|
@ -1 +0,0 @@
|
|||
Correctly handle the situation when a poll has both "anyOf" and "oneOf" but one of them being empty
|
1
changelog.d/frontend-management.add
Normal file
1
changelog.d/frontend-management.add
Normal file
|
@ -0,0 +1 @@
|
|||
[docs] add frontends management documentation
|
|
@ -1 +0,0 @@
|
|||
Fix handling report from a deactivated user
|
1
changelog.d/healthcheck-disabled-error.fix
Normal file
1
changelog.d/healthcheck-disabled-error.fix
Normal file
|
@ -0,0 +1 @@
|
|||
TwitterAPI: Return proper error when healthcheck is disabled
|
1
changelog.d/instance-v2.add
Normal file
1
changelog.d/instance-v2.add
Normal file
|
@ -0,0 +1 @@
|
|||
Implement /api/v2/instance route
|
1
changelog.d/last_status_at.change
Normal file
1
changelog.d/last_status_at.change
Normal file
|
@ -0,0 +1 @@
|
|||
- Change AccountView `last_status_at` from a datetime to a date (as done in Mastodon 3.1.0)
|
1
changelog.d/meilisearch.add
Normal file
1
changelog.d/meilisearch.add
Normal file
|
@ -0,0 +1 @@
|
|||
Add meilisearch, make search engines pluggable
|
1
changelog.d/migration-fix.skip
Normal file
1
changelog.d/migration-fix.skip
Normal file
|
@ -0,0 +1 @@
|
|||
|
|
@ -1 +0,0 @@
|
|||
(hardening) Add no_new_privs=yes to OpenRC service files
|
1
changelog.d/opengraph-rich-media-proxy.add
Normal file
1
changelog.d/opengraph-rich-media-proxy.add
Normal file
|
@ -0,0 +1 @@
|
|||
Add media proxy to opengraph rich media cards
|
1
changelog.d/optimistic-inbox.change
Normal file
1
changelog.d/optimistic-inbox.change
Normal file
|
@ -0,0 +1 @@
|
|||
Optimistic Inbox reduces the processing overhead of incoming activities without instantly verifiable signatures.
|
|
@ -1 +0,0 @@
|
|||
- Reduced permissions of config files and directories, distros requiring greater permissions like group-read need to pre-create the directories
|
|
@ -1 +0,0 @@
|
|||
Prevent using the .json format to bypass authorized fetch mode
|
1
changelog.d/prioritize-direct-recipients.add
Normal file
1
changelog.d/prioritize-direct-recipients.add
Normal file
|
@ -0,0 +1 @@
|
|||
- Prioritize mentioned recipients (i.e., those that are not just followers) when federating.
|
1
changelog.d/promex.change
Normal file
1
changelog.d/promex.change
Normal file
|
@ -0,0 +1 @@
|
|||
Change the prometheus library to PromEx.
|
|
@ -1 +0,0 @@
|
|||
Fix mentioning punycode domains when using Markdown
|
|
@ -1 +0,0 @@
|
|||
Implement quotes
|
1
changelog.d/reachability.change
Normal file
1
changelog.d/reachability.change
Normal file
|
@ -0,0 +1 @@
|
|||
Reduce the reachability timestamp update to a single upsert query
|
1
changelog.d/scrobble-url.add
Normal file
1
changelog.d/scrobble-url.add
Normal file
|
@ -0,0 +1 @@
|
|||
Adds the capability to add a URL to a scrobble (optional field)
|
1
changelog.d/scrubbers-html4-GtS.add
Normal file
1
changelog.d/scrubbers-html4-GtS.add
Normal file
|
@ -0,0 +1 @@
|
|||
- scrubbers/default: Add more formatting elements from HTML4 / GoToSocial (acronym, bdo, big, cite, dfn, ins, kbd, q, samp, s, tt, var, wbr)
|
1
changelog.d/system-cflags.fix
Normal file
1
changelog.d/system-cflags.fix
Normal file
|
@ -0,0 +1 @@
|
|||
- Fix eblurhash and elixir-captcha not using system cflags
|
|
@ -1 +0,0 @@
|
|||
Add unified streaming endpoint
|
|
@ -1 +0,0 @@
|
|||
Show more informative errors when profile exceeds char limits
|
1
changelog.d/vips.change
Normal file
1
changelog.d/vips.change
Normal file
|
@ -0,0 +1 @@
|
|||
Change mediaproxy previews to use vips to generate thumbnails instead of ImageMagick
|
1
changelog.d/web_push.fix
Normal file
1
changelog.d/web_push.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix web push notifications not successfully delivering
|
|
@ -1,4 +1,4 @@
|
|||
FROM elixir:1.11.4
|
||||
FROM elixir:1.12.3
|
||||
|
||||
# Single RUN statement, otherwise intermediate images are created
|
||||
# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
|
||||
|
|
3
ci/postgres_rum/Dockerfile
Normal file
3
ci/postgres_rum/Dockerfile
Normal file
|
@ -0,0 +1,3 @@
|
|||
FROM postgres:13-bullseye
|
||||
|
||||
RUN apt-get update && apt-get install -y postgresql-13-rum/bullseye-pgdg
|
1
ci/postgres_rum/build_and_push.sh
Executable file
1
ci/postgres_rum/build_and_push.sh
Executable file
|
@ -0,0 +1 @@
|
|||
docker buildx build --platform linux/amd64,linux/arm64 -t git.pleroma.social:5050/pleroma/pleroma/postgres-with-rum-13:latest --push .
|
|
@ -14,7 +14,7 @@ config :pleroma, Pleroma.Captcha,
|
|||
method: Pleroma.Captcha.Mock
|
||||
|
||||
# Print only warnings and errors during test
|
||||
config :logger, level: :warn
|
||||
config :logger, level: :warning
|
||||
|
||||
config :pleroma, :auth, oauth_consumer_strategies: []
|
||||
|
||||
|
|
|
@ -110,17 +110,6 @@ config :pleroma, :uri_schemes,
|
|||
"xmpp"
|
||||
]
|
||||
|
||||
websocket_config = [
|
||||
path: "/websocket",
|
||||
serializer: [
|
||||
{Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"},
|
||||
{Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}
|
||||
],
|
||||
timeout: 60_000,
|
||||
transport_log: false,
|
||||
compress: false
|
||||
]
|
||||
|
||||
# Configures the endpoint
|
||||
config :pleroma, Pleroma.Web.Endpoint,
|
||||
url: [host: "localhost"],
|
||||
|
@ -130,10 +119,7 @@ config :pleroma, Pleroma.Web.Endpoint,
|
|||
{:_,
|
||||
[
|
||||
{"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []},
|
||||
{"/websocket", Phoenix.Endpoint.CowboyWebSocket,
|
||||
{Phoenix.Transports.WebSocket,
|
||||
{Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, websocket_config}}},
|
||||
{:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}}
|
||||
{:_, Plug.Cowboy.Handler, {Pleroma.Web.Endpoint, []}}
|
||||
]}
|
||||
]
|
||||
],
|
||||
|
@ -185,6 +171,7 @@ config :pleroma, :instance,
|
|||
short_description: "",
|
||||
background_image: "/images/city.jpg",
|
||||
instance_thumbnail: "/instance/thumbnail.jpeg",
|
||||
favicon: "/favicon.png",
|
||||
limit: 5_000,
|
||||
description_limit: 5_000,
|
||||
remote_limit: 100_000,
|
||||
|
@ -360,6 +347,8 @@ config :pleroma, :manifest,
|
|||
icons: [
|
||||
%{
|
||||
src: "/static/logo.svg",
|
||||
sizes: "144x144",
|
||||
purpose: "any",
|
||||
type: "image/svg+xml"
|
||||
}
|
||||
],
|
||||
|
@ -591,7 +580,8 @@ config :pleroma, Oban,
|
|||
remote_fetcher: 2,
|
||||
attachments_cleanup: 1,
|
||||
new_users_digest: 1,
|
||||
mute_expire: 5
|
||||
mute_expire: 5,
|
||||
search_indexing: 10
|
||||
],
|
||||
plugins: [Oban.Plugins.Pruner],
|
||||
crontab: [
|
||||
|
@ -602,7 +592,8 @@ config :pleroma, Oban,
|
|||
config :pleroma, :workers,
|
||||
retries: [
|
||||
federator_incoming: 5,
|
||||
federator_outgoing: 5
|
||||
federator_outgoing: 5,
|
||||
search_indexing: 2
|
||||
]
|
||||
|
||||
config :pleroma, Pleroma.Formatter,
|
||||
|
@ -660,12 +651,26 @@ config :pleroma, Pleroma.Emails.UserEmail,
|
|||
|
||||
config :pleroma, Pleroma.Emails.NewUsersDigestEmail, enabled: false
|
||||
|
||||
config :prometheus, Pleroma.Web.Endpoint.MetricsExporter,
|
||||
enabled: false,
|
||||
auth: false,
|
||||
ip_whitelist: [],
|
||||
path: "/api/pleroma/app_metrics",
|
||||
format: :text
|
||||
config :pleroma, Pleroma.PromEx,
|
||||
disabled: false,
|
||||
manual_metrics_start_delay: :no_delay,
|
||||
drop_metrics_groups: [],
|
||||
grafana: [
|
||||
host: System.get_env("GRAFANA_HOST", "http://localhost:3000"),
|
||||
auth_token: System.get_env("GRAFANA_TOKEN"),
|
||||
upload_dashboards_on_start: false,
|
||||
folder_name: "BEAM",
|
||||
annotate_app_lifecycle: true
|
||||
],
|
||||
metrics_server: [
|
||||
port: 4021,
|
||||
path: "/metrics",
|
||||
protocol: :http,
|
||||
pool_size: 5,
|
||||
cowboy_opts: [],
|
||||
auth_strategy: :none
|
||||
],
|
||||
datasource: "Prometheus"
|
||||
|
||||
config :pleroma, Pleroma.ScheduledActivity,
|
||||
daily_user_limit: 25,
|
||||
|
@ -889,11 +894,19 @@ config :pleroma, Pleroma.User.Backup,
|
|||
|
||||
config :pleroma, ConcurrentLimiter, [
|
||||
{Pleroma.Web.RichMedia.Helpers, [max_running: 5, max_waiting: 5]},
|
||||
{Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy, [max_running: 5, max_waiting: 5]}
|
||||
{Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy, [max_running: 5, max_waiting: 5]},
|
||||
{Pleroma.Search, [max_running: 30, max_waiting: 50]}
|
||||
]
|
||||
|
||||
config :pleroma, Pleroma.Web.WebFinger, domain: nil, update_nickname_on_user_fetch: true
|
||||
|
||||
config :pleroma, Pleroma.Search, module: Pleroma.Search.DatabaseSearch
|
||||
|
||||
config :pleroma, Pleroma.Search.Meilisearch,
|
||||
url: "http://127.0.0.1:7700/",
|
||||
private_key: nil,
|
||||
initial_indexing_chunk_size: 100_000
|
||||
|
||||
# Import environment specific config. This must remain at the bottom
|
||||
# of this file so it overrides the configuration defined above.
|
||||
import_config "#{Mix.env()}.exs"
|
||||
|
|
|
@ -987,6 +987,12 @@ config :pleroma, :config_description, [
|
|||
"The instance thumbnail can be any image that represents your instance and is used by some apps or services when they display information about your instance.",
|
||||
suggestions: ["/instance/thumbnail.jpeg"]
|
||||
},
|
||||
%{
|
||||
key: :favicon,
|
||||
type: {:string, :image},
|
||||
description: "Favicon of the instance",
|
||||
suggestions: ["/favicon.png"]
|
||||
},
|
||||
%{
|
||||
key: :show_reactions,
|
||||
type: :boolean,
|
||||
|
@ -1181,7 +1187,7 @@ config :pleroma, :config_description, [
|
|||
type: [:atom, :tuple, :module],
|
||||
description:
|
||||
"Where logs will be sent, :console - send logs to stdout, { ExSyslogger, :ex_syslogger } - to syslog, Quack.Logger - to Slack.",
|
||||
suggestions: [:console, {ExSyslogger, :ex_syslogger}, Quack.Logger]
|
||||
suggestions: [:console, {ExSyslogger, :ex_syslogger}]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1196,7 +1202,7 @@ config :pleroma, :config_description, [
|
|||
key: :level,
|
||||
type: {:dropdown, :atom},
|
||||
description: "Log level",
|
||||
suggestions: [:debug, :info, :warn, :error]
|
||||
suggestions: [:debug, :info, :warning, :error]
|
||||
},
|
||||
%{
|
||||
key: :ident,
|
||||
|
@ -1229,7 +1235,7 @@ config :pleroma, :config_description, [
|
|||
key: :level,
|
||||
type: {:dropdown, :atom},
|
||||
description: "Log level",
|
||||
suggestions: [:debug, :info, :warn, :error]
|
||||
suggestions: [:debug, :info, :warning, :error]
|
||||
},
|
||||
%{
|
||||
key: :format,
|
||||
|
@ -1931,7 +1937,7 @@ config :pleroma, :config_description, [
|
|||
key: :log,
|
||||
type: {:dropdown, :atom},
|
||||
description: "Logs verbose mode",
|
||||
suggestions: [false, :error, :warn, :info, :debug]
|
||||
suggestions: [false, :error, :warning, :info, :debug]
|
||||
},
|
||||
%{
|
||||
key: :queues,
|
||||
|
@ -3466,5 +3472,48 @@ config :pleroma, :config_description, [
|
|||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
%{
|
||||
group: :pleroma,
|
||||
key: Pleroma.Search,
|
||||
type: :group,
|
||||
description: "General search settings.",
|
||||
children: [
|
||||
%{
|
||||
key: :module,
|
||||
type: :keyword,
|
||||
description: "Selected search module.",
|
||||
suggestion: [Pleroma.Search.DatabaseSearch, Pleroma.Search.Meilisearch]
|
||||
}
|
||||
]
|
||||
},
|
||||
%{
|
||||
group: :pleroma,
|
||||
key: Pleroma.Search.Meilisearch,
|
||||
type: :group,
|
||||
description: "Meilisearch settings.",
|
||||
children: [
|
||||
%{
|
||||
key: :url,
|
||||
type: :string,
|
||||
description: "Meilisearch URL.",
|
||||
suggestion: ["http://127.0.0.1:7700/"]
|
||||
},
|
||||
%{
|
||||
key: :private_key,
|
||||
type: :string,
|
||||
description:
|
||||
"Private key for meilisearch authentication, or `nil` to disable private key authentication.",
|
||||
suggestion: [nil]
|
||||
},
|
||||
%{
|
||||
key: :initial_indexing_chunk_size,
|
||||
type: :int,
|
||||
description:
|
||||
"Amount of posts in a batch when running the initial indexing operation. Should probably not be more than 100000" <>
|
||||
" since there's a limit on maximum insert size",
|
||||
suggestion: [100_000]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
|
@ -16,7 +16,7 @@ config :pleroma, Pleroma.Captcha,
|
|||
|
||||
# Print only warnings and errors during test
|
||||
config :logger, :console,
|
||||
level: :warn,
|
||||
level: :warning,
|
||||
format: "\n[$level] $message\n"
|
||||
|
||||
config :pleroma, :auth, oauth_consumer_strategies: []
|
||||
|
@ -133,10 +133,35 @@ config :pleroma, :side_effects,
|
|||
ap_streamer: Pleroma.Web.ActivityPub.ActivityPubMock,
|
||||
logger: Pleroma.LoggerMock
|
||||
|
||||
config :pleroma, Pleroma.Search, module: Pleroma.Search.DatabaseSearch
|
||||
|
||||
config :pleroma, Pleroma.Search.Meilisearch, url: "http://127.0.0.1:7700/", private_key: nil
|
||||
|
||||
# Reduce recompilation time
|
||||
# https://dashbit.co/blog/speeding-up-re-compilation-of-elixir-projects
|
||||
config :phoenix, :plug_init_mode, :runtime
|
||||
|
||||
config :pleroma, :config_impl, Pleroma.UnstubbedConfigMock
|
||||
|
||||
config :pleroma, Pleroma.PromEx, disabled: true
|
||||
|
||||
# Mox definitions. Only read during compile time.
|
||||
config :pleroma, Pleroma.User.Backup, config_impl: Pleroma.UnstubbedConfigMock
|
||||
config :pleroma, Pleroma.Uploaders.S3, ex_aws_impl: Pleroma.Uploaders.S3.ExAwsMock
|
||||
config :pleroma, Pleroma.Uploaders.S3, config_impl: Pleroma.UnstubbedConfigMock
|
||||
config :pleroma, Pleroma.Upload, config_impl: Pleroma.UnstubbedConfigMock
|
||||
config :pleroma, Pleroma.ScheduledActivity, config_impl: Pleroma.UnstubbedConfigMock
|
||||
config :pleroma, Pleroma.Web.RichMedia.Helpers, config_impl: Pleroma.StaticStubbedConfigMock
|
||||
|
||||
peer_module =
|
||||
if String.to_integer(System.otp_release()) >= 25 do
|
||||
:peer
|
||||
else
|
||||
:slave
|
||||
end
|
||||
|
||||
config :pleroma, Pleroma.Cluster, peer_module: peer_module
|
||||
|
||||
if File.exists?("./config/test.secret.exs") do
|
||||
import_config "test.secret.exs"
|
||||
else
|
||||
|
|
71
docs/administration/frontends-management.md
Normal file
71
docs/administration/frontends-management.md
Normal file
|
@ -0,0 +1,71 @@
|
|||
# Managing installed frontends
|
||||
|
||||
Pleroma lets you install multiple frontends including multiple versions of same frontend. Right now it's only possible to switch which frontend is the default, but in the future it would be possible for user to select which frontend they prefer to use.
|
||||
|
||||
As of 2.6.0 there are two ways of managing frontends - through PleromaFE's Admin Dashboard (preferred, easier method) or through AdminFE (clunky but also works on versions older than 2.6.0).
|
||||
|
||||
!!! note
|
||||
Managing frontends through UI requires [in-database configuration](../configuration/howto_database_config.md) to be enabled (default on newer instances but might be off on older ones).
|
||||
|
||||
## How it works
|
||||
|
||||
When installing frontends, it creates a folder in [static directory](../configuration/static_dir.md) that follows this pattern: `/frontends/${front-end name}/${front-end version}/`, puts contents of the built frontend in there. Then when accessing the server backend checks what front-end name and version are set to be default and serves index.html and assets from appropriate path.
|
||||
|
||||
!!! warning
|
||||
|
||||
If you've been putting your frontend build directly into static dir as an antiquated way of serving custom frontend, this system will not work and will still serve the custom index.html you put in there. You can still serve custom frontend builds if you put your build into `/frontends/$name/$version` instead and set the "default frontend" fields appropriately.
|
||||
|
||||
Currently, there is no backup system, i.e. when installing `master` version it _will_ overwrite installed `master` version, for now if you want to keep previous version you should back it up manually, i.e. running `cp -r ./frontends/pleroma-fe/master ./frontends/pleroma-fe/master_old` in your static dir.
|
||||
|
||||
## Managing front-ends through Admin Dashboard
|
||||
|
||||
Open up Admin Dashboard (gauge icon in top bar, same as where link to AdminFE was),__
|
||||
![location of Admin Dashboard icon](../assets/admin_dash_location.png)
|
||||
switch to "Front-ends" tab.
|
||||
![screenshot of Front-ends tab](../assets/frontends_tab.png)
|
||||
This page is designed to be self-explanatory and easy to use, while avoiding issues and pitfalls of AdminFE, but it's also early in development, everything is subject to change.
|
||||
|
||||
!!! warning
|
||||
This goes without saying, but if you set default frontend to anything except >2.6.0 version of PleromaFE you'll lose the access to Admin Dashboard and will have to use AdminFE to get it back. See below on how to use AdminFE.
|
||||
|
||||
### Limitations
|
||||
|
||||
Currently the list of available for install frontends is essentially hard-coded in backend's configuration, each providing only one version, with exception for PleromaFE which overrides 'pleroma-fe' to also include `develop` version. There is no way to manually install build with a URL (coming soon) nor add more available frontends to the repository (it's broken).
|
||||
|
||||
There is also no way to tell if there is an update available or not, for now you should watch for [announcements](https://pleroma.social/announcements/) of new PleromaFE stable releases to see if there is new stable version. For `develop` version it's up to you whether you want to follow the development process or just reinstall it periodically hoping for new stuff.
|
||||
|
||||
## Using AdminFE to manage frontends
|
||||
|
||||
Access AdminFE either directly by going to `/pleroma/admin` of your instance or by opening Admin Dashboard and clicking the link at the bottom of the window
|
||||
![link to open old AdminFE](../assets/old_adminfe_link.png)
|
||||
|
||||
|
||||
Go to Settings -> Frontend.
|
||||
|
||||
### Installing front-ends
|
||||
|
||||
At the very top of the page there's a list of available frontends and button to install custom front-end
|
||||
|
||||
!!! tip
|
||||
Remember to click "Submit" in bottom right corner to save your changes!
|
||||
|
||||
!!! bug
|
||||
**Available Frontends** section lets you _install_ frontends but **NOT** update/reinstall them. It's only useful for installing a frontend once.
|
||||
|
||||
Due to aforementioned bug, preferred way of installing frontends in AdminFE is by clicking the "Install another frontend"
|
||||
![screenshot of admin-fe with instructions on how to install a frontend](../assets/way_to_install_frontends.png)
|
||||
and filling in the fields. Unfortunately AdminFE does not provide the raw data necessary for you to fill those fields, so your best bet is to see what backend returns in browser's devtools or refer to the [source code](https://git.pleroma.social/pleroma/pleroma/-/blob/develop/config/config.exs?ref_type=heads#L742-791). For the most part, only **Name**, **Ref** (i.e. version) and **Build URL** fields are required, although some frontends might also require **Build Directory** to work.
|
||||
|
||||
For pleroma-fe you can use either `master` or `develop` refs, or potentially any ref in GitLab that has artifacts for `build` job, but that's outside scope of this document.
|
||||
|
||||
### Selecting default frontend
|
||||
|
||||
Scroll page waaaaay down, search for "Frontends" section, subtitled "Installed frontends management", change the name and reference of the "Primary" frontend.
|
||||
![screenshot of admin-fe with instructions on how to install a frontend](../assets/primary_frontend_section.png)
|
||||
|
||||
|
||||
!!! danger
|
||||
If you change "Admin" frontend name/reference you risk losing access to AdminFE as well.
|
||||
|
||||
!!! warning
|
||||
Don't put anything into the "Available" section as it will break the list of available frontends completely, including the "add another frontend" button. If you accidentally put something in there, click the trashbin icon next to "Available" to reset it and restore the frontends list.
|
BIN
docs/assets/admin_dash_location.png
Normal file
BIN
docs/assets/admin_dash_location.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 KiB |
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue