A fork of AkkomaGang/akkoma
Find a file
Oneric d635a39141 api: return error when replying to already deleted post
Of course the aprent post might still be deleted after the reply was
already created, but in this case the reply will still show up as a
reply and be federated as a reply with a reference to the parent post.
If the parent was already deleted before the reply gets created however
it used to be indistinguishable from a root post both in Masto API and
ActivityPub.

From a UX perspective, users likely will like to know if the post
they’re replying to no longer exists by the time they finished writing.
The natural language error will show up in akkoma-fe without clearing
the post form, meaning users can decide to discard the reply or copy it
to post as a new root post. It seems sensibly to for other clients to
behave like this too, but so far no more clients were actually tested.

Furthermore, this used to allow replying to all sorts of activities not
just posts which was rather non-sensical (and after all processsing
steps turned into a reply to the object referenced by the activity).
In particular this allowed replying to an user object by specifying the
db ID of a follow request activity (if the latter was somehow obtained).

Note: empty-string in_reply_to parameters are explicitly ignored since
45ebc8dd9a to workaround one buggy client;
see: https://git.pleroma.social/pleroma/pleroma/-/issues/355.
It’s not clear if this workaround is still necessary,
but it is preserved by this commit.

Resolves: https://akkoma.dev/AkkomaGang/akkoma/issues/522
2025-11-06 15:58:40 +01:00
.gitea/issue_template Update '.gitea/issue_template/feat.yml' 2022-12-12 04:26:43 +00:00
.woodpecker ci: drop unused conditions 2025-08-24 00:00:00 +00:00
benchmarks Use keyed lists for pagination with foreign id 2025-10-09 00:00:00 +00:00
ci drop back to 1.14/OTP25 2025-03-02 13:04:10 +00:00
config config: revert to HTTP1-only for outgoing requests 2025-10-10 00:00:00 +00:00
diagnostic-tools add diagnostic script 2024-06-10 15:10:47 +01:00
docker-resources Update docker compose commands to Compose V2 2023-06-18 01:37:40 -04:00
docs docs: fix multi-paragraph list items 2025-11-02 00:00:00 +00:00
installation telemetry: expose count of currently pending jobs per queue 2025-10-03 00:00:00 +00:00
lib api: return error when replying to already deleted post 2025-11-06 15:58:40 +01:00
priv Merge pull request 'Preserve mastodon-style quote-fallback marker' (#977) from mastodon-quotes into develop 2025-10-24 21:51:49 +00:00
rel Disable busy waits in the default OTP vm.args configuration. 2024-02-17 13:21:56 +01:00
restarter fix_flaky_transfer_task_test.exs (#237) 2022-11-01 14:31:29 +00:00
scripts document prometheus 2022-12-16 10:24:36 +00:00
test api: return error when replying to already deleted post 2025-11-06 15:58:40 +01:00
uploads fix issues with the uploads directory 2019-04-28 06:43:00 +02:00
.credo.exs Move Consistency.FileLocation to ./test 2020-10-13 19:57:45 +02:00
.dockerignore Docker builds (#231) 2022-10-16 19:25:54 +00:00
.formatter.exs add a snapshot test for api prefixes 2025-02-23 16:51:48 +00:00
.gitattributes Don't treat js/css as binary in git anymore 2022-12-23 18:03:14 +00:00
.gitignore Add docker override file to docs and gitignore 2023-08-07 13:09:04 -04:00
.mailmap Add myself to .mailmap 2021-02-15 13:19:44 +03:00
AGPL-3 LICENSE → AGPL-3 2019-04-01 00:31:21 +02:00
CC-BY-4.0 Add a copy of CC-BY-4.0 to the repo 2020-09-06 11:38:38 +03:00
CC-BY-SA-4.0 CC-BY-SA-4.0: Add a copy of the CC-BY-SA-4.0 license 2019-04-01 00:30:21 +02:00
CHANGELOG.md Treat known quotes and replies as such even if parent unavailable 2025-10-13 10:26:57 +00:00
CODE_OF_CONDUCT.md add code of conduct (#129) 2022-08-03 10:55:11 +00:00
COPYING Remove reference to city.jpg in COPYING 2022-11-25 07:29:50 +00:00
docker-compose.yml Merge pull request 'Add docker override file to docs and gitignore' (#621) from norm/akkoma:docker-compose-override into develop 2024-04-12 18:50:25 +00:00
docker-entrypoint.sh Fix busywait on docker-entrypoint script 2024-08-20 19:29:11 -03:00
Dockerfile Bump builds to OTP26 2023-08-09 14:39:28 +01:00
FEDERATION.md Fix grammatical errors after code review 2025-04-30 11:52:07 +02:00
mix.exs bump version 2025-10-13 11:01:10 +01:00
mix.lock mix: point to AkkomaGang repo 2025-06-07 20:27:58 +02:00
README.md readme: drop mention of YunoHost package 2025-02-14 22:10:25 +01:00
SECURITY.md Update notes on security exploit handling 2024-03-04 17:50:19 +01:00
SIGNING_KEY.pub 2022.09 stable release chores (#206) 2022-09-10 14:44:17 +00:00

akkoma

a smallish microblogging platform, aka the cooler pleroma

English OK 日本語OK

About

This is a fork of Pleroma, which is a microblogging server software that can federate (= exchange messages with) other servers that support ActivityPub. What that means is that you can host a server for yourself or your friends and stay in control of your online identity, but still exchange messages with people on larger servers. Akkoma will federate with all servers that implement ActivityPub, like Friendica, GNU Social, Hubzilla, Mastodon, Misskey, Peertube, and Pixelfed.

Akkoma is written in Elixir and uses PostgreSQL for data storage.

For clients it supports the Mastodon client API with Pleroma extensions (see the API section on https://docs.akkoma.dev/stable/).

Differences with Pleroma

Akkoma is a faster-paced fork, it has a varied and potentially experimental feature set tailored specifically to the corner of the fediverse inhabited by the project creator and contributors.

This should not be considered a one-for-one match with pleroma; it is more opinionated in many ways, and has a smaller community (which is good or bad depending on your view)

For example, Akkoma has:

  • Custom Emoji reactions (compatible with misskey)
  • Misskey-flavoured markdown support
  • Elasticsearch and Meilisearch support for search
  • Mastodon frontend (Glitch-Soc and Fedibird flavours) support
  • Automatic post translation via DeepL or LibreTranslate
  • A multitude of heavy modifications to the Pleroma Frontend (Pleroma-FE)
  • The "bubble" concept, in which instance administrators can choose closely-related instances to make a "community of communities", so to say

And takes a more opinionated stance on issues like Domain blocks, which are enforced far more on Akkoma.

Take a look at the Changelog if you want a full list of recent changes, everything since 3.0 has been Akkoma.

Installation

If you are running Linux (glibc or musl) on x86, the recommended way to install Akkoma is by using OTP releases. OTP releases are as close as you can get to binary releases with Erlang/Elixir. The release is self-contained, and provides everything needed to boot it. The installation instructions are available here.

From Source

If your platform is not supported, or you just want to be able to edit the source code easily, you may install Akkoma from source.

Docker

Docker installation is supported via this setup

Compilation Troubleshooting

If you ever encounter compilation issues during the updating of Akkoma, you can try these commands and see if they fix things:

  • mix deps.clean --all
  • mix local.rebar
  • mix local.hex
  • rm -r _build

Documentation