misstodon

爱发电 GitHub go.mod Go version Build images License

Misskey Mastodon-compatible APIs, Getting my Misskey instance to work in Elk

[!IMPORTANT]
Thank you for your interest and support for this project, which aims to make the Misskey API compatible with Mastodon clients. However, I have recently lost interest in Misskey and have decided to no longer actively maintain this project. In a twist of fate, my misskey.moe account has also been deleted recently—talk about a sign!

If the community is interested in continuing this project, feel free to fork it and take it to new heights!

Please be aware that due to the lack of maintenance, there may be unresolved issues or compatibility problems in the project.

Demo

Elk: https://elk.zone/misstodon.aika.dev/public
Elk: https://elk.zone/mt_misskey_moe.aika.dev/public
Phanpy: https://phanpy.social/#/mt_misskey_io.aika.dev/p

How to Use

[!WARNING]
aika.dev is a demonstration site and may not guarantee high availability. We recommend self-hosting for greater control.

The simplest usage method is to specify the instance address using a domain name prefix.

  1. Replace underscores (“_”) in the domain name with double underscores (“__”).
  2. Replace dots (“.”) in the domain name with underscores (“_”).
  3. Prepend “mt_” to the modified string.
  4. Append “.aika.dev” to the modified string.

When processing misskey.io according to the described steps, it will be transformed into the result: mt_misskey_io.aika.dev.

curl --request GET --url 'https://mt_misskey_io.aika.dev/nodeinfo/2.0' | jq .

Self-Hosting with Default Instance Configuration

Edit the ‘config.toml’ file, and within the “[proxy]” section, modify the “fallback_server” field. For example:

[proxy]
fallback_server = "misskey.io"

If you are deploying using Docker Compose, you can specify the default instance by modifying the ‘docker-compose.yml’ file. Look for the ‘MISSTODON_FALLBACK_SERVER’ field within the Docker Compose configuration and set it to the desired default instance.

Instance Specification via Query Parameter

curl --request GET --url 'https://misstodon.aika.dev/nodeinfo/2.0?server=misskey.io' | jq .

Instance Specification via Header

curl --request GET --url https://misstodon.aika.dev/nodeinfo/2.0 --header 'x-proxy-server: misskey.io' | jq .

Running your own instance

The simplest way is to use Docker Compose. Download the docker-compose.yml file to your local machine. Customize it to your needs, particularly by changing the “MISSTODON_FALLBACK_SERVER” in the “environment” to your preferred Misskey instance domain. Afterward, run the following command:

docker-compose up -d

[!IMPORTANT]
For security and privacy, we strongly discourage using HTTP directly. Instead, consider configuring a TLS certificate or utilizing Misstodon’s AutoTLS feature for enhanced security.

Roadmap

- [x] .well-known - [x] `GET` /.well-known/host-meta - [x] `GET` /.well-known/webfinger - [x] `GET` /.well-known/nodeinfo - [x] `GET` /.well-known/change-password - [x] Nodeinfo - [x] `GET` /nodeinfo/2.0 - [ ] Auth - [x] `GET` /oauth/authorize - [x] `POST` /oauth/token - [x] `POST` /api/v1/apps - [ ] `GET` /api/v1/apps/verify_credentials - [x] Instance - [x] `GET` /api/v1/instance - [x] `GET` /api/v1/custom_emojis - [ ] Accounts - [x] `GET` /api/v1/accounts/lookup - [x] `GET` /api/v1/accounts/:user_id - [x] `GET` /api/v1/accounts/verify_credentials - [ ] `PATCH` /api/v1/accounts/update_credentials - [x] `GET` /api/v1/accounts/relationships - [ ] `GET` /api/v1/accounts/:user_id/statuses - [x] `GET` /api/v1/accounts/:user_id/following - [x] `GET` /api/v1/accounts/:user_id/followers - [x] `POST` /api/v1/accounts/:user_id/follow - [x] `POST` /api/v1/accounts/:user_id/unfollow - [x] `GET` /api/v1/follow_requests - [x] `POST` /api/v1/accounts/:user_id/mute - [x] `POST` /api/v1/accounts/:user_id/unmute - [x] `GET` /api/v1/bookmarks - [x] `GET` /api/v1/favourites - [ ] `GET` /api/v1/preferences - [ ] Statuses - [x] `POST` /api/v1/statuses - [x] `GET` /api/v1/statuses/:status_id - [x] `DELETE` /api/v1/statuses/:status_id - [x] `GET` /api/v1/statuses/:status_id/context - [x] `POST` /api/v1/statuses/:status_id/reblog - [x] `POST` /api/v1/statuses/:status_id/favourite - [x] `POST` /api/v1/statuses/:status_id/unfavourite - [x] `POST` /api/v1/statuses/:status_id/bookmark - [x] `POST` /api/v1/statuses/:status_id/unbookmark - [ ] `GET` /api/v1/statuses/:status_id/favourited_by - [ ] `GET` /api/v1/statuses/:status_id/reblogged_by - [x] Timelines - [x] `GET` /api/v1/timelines/home - [x] `GET` /api/v1/timelines/public - [x] `GET` /api/v1/timelines/tag/:hashtag - [ ] `WS` /api/v1/streaming - [ ] Notifications - [x] `GET` /api/v1/notifications - [ ] `POST` /api/v1/push/subscription - [ ] `GET` /api/v1/push/subscription - [ ] `PUT` /api/v1/push/subscription - [ ] `DELETE` /api/v1/push/subscription - [ ] Search - [ ] `GET` /api/v2/search - [ ] Conversations - [ ] `GET` /api/v1/conversations - [ ] `DELETE` /api/v1/conversations/:id - [ ] `POST` /api/v1/conversations/:id/read - [x] Trends - [x] `GET` /api/v1/trends/statuses - [x] `GET` /api/v1/trends/tags - [x] Media - [x] `POST` /api/v1/media - [x] `POST` /api/v2/media

Information for Developers

Contributing Information about contributing to this project.

Sponsors

Sponsors

Contributors

Contributors