Versia Server (formerly Lysand Server) is a federated social network server based on the Versia protocol. It is currently in beta phase, with basic federation and almost complete Mastodon API support.
- Privacy: Versia Server is designed to be as private as possible. Unnecessary data is not stored, and data that is stored is done so securely.
- Configurability: High configurability is a key feature of Versia Server. Almost every aspect of the server can be configured to suit your needs. If you feel like something is missing, please open an issue.
- Security: Versia Server is designed with security in mind. It is built with modern security practices and technologies, and is constantly updated to ensure the highest level of security.
- Performance: Efficiency and speed are a key focus of Versia Server. The design is non-monolithic, and is built to be as fast as possible.
- Mastodon API compatibility: Versia Server is designed to be compatible with the Mastodon API, with
glitch-soc
extensions.
- Monolithic design: Modularity and scaling is important to this project. This means that it is not a single, monolithic application, but rather a collection of smaller, more focused applications. (API layer, queue, database, frontend, etc.)
- Complexity: Both in code and in function, Versia Server should be as simple as possible. This does not mean adding no features or functionality, but rather that the features and functionality that are added should be well-written and easy to understand.
- Bloat: Versia Server should not be bloated with unnecessary features, packages, dependencies or code. It should be as lightweight as possible, while still being feature-rich.
- Versia 3.0 federation (partial)
- Hyper fast (thousands of HTTP requests per second)
- S3 or local media storage
- Deduplication of uploaded files
- Federation limits
- Configurable defaults
- Full regex-based filters for posts, users and media
- Custom emoji support
- Users can upload their own emojis for themselves
- Automatic image conversion to WebP or other formats
- Scripting-compatible CLI with JSON and CSV outputs
- Markdown support just about everywhere: posts, profiles, profile fields, etc. Code blocks, tables, and more are supported.
- Advanced moderation tools (work in progress)
- Fully compliant Mastodon API support (partial)
- Glitch-SOC extensions
- Full compatibility with many clients such as Megalodon
- Ability to use your own frontends
- Non-monolithic architecture, microservices can be hosted in infinite amounts on infinite servers
- Ability to use all your threads
- Support for SSO providers, as well as SSO-only registration.
- Fully written in TypeScript and thoroughly unit tested
- Automatic signed container builds for easy deployment
- Docker and Podman supported
- Invisible, Proof-of-Work local CAPTCHA for API requests
- Advanced Roles and Permissions API.
- HTTP proxy support
- Tor hidden service support
- Sentry logging support
- Ability to change the domain name in a single config change, without any database edits
You can visit social.lysand.org to see a live instance of Versia Server with Versia-FE.
Please see the installation guide for more information on how to install Versia.
Contributions are welcome! Please see the CONTRIBUTING.md file for more information.
The following extensions are currently supported or being worked on:
pub.versia:custom_emojis
: Custom emojispub.versia:polls
: Pollspub.versia:share
: Share
Versia Server implements the Mastodon API (as well as glitch-soc
extensions). The API is currently almost fully complete, with some fringe functionality still being worked on.
Working endpoints are:
-
/api/v1/accounts/:id/block
-
/api/v1/accounts/:id/follow
-
/api/v1/accounts/:id/followers
-
/api/v1/accounts/:id/following
-
/api/v1/accounts/:id/lists
-
/api/v1/accounts/:id/mute
-
/api/v1/accounts/:id/note
-
/api/v1/accounts/:id/pin
-
/api/v1/accounts/:id/remove_from_followers
-
/api/v1/accounts/:id/statuses
-
/api/v1/accounts/:id/unblock
-
/api/v1/accounts/:id/unfollow
-
/api/v1/accounts/:id/unmute
-
/api/v1/accounts/:id/unpin
-
/api/v1/accounts/:id
-
/api/v1/accounts/familiar_followers
-
/api/v1/accounts/relationships
-
/api/v1/accounts/update_credentials
-
/api/v1/accounts/verify_credentials
-
/api/v1/accounts
-
/api/v1/announcements/:id/dismiss
-
/api/v1/announcements/:id/reactions/:name
(PUT
,DELETE
) -
/api/v1/announcements
-
/api/v1/apps/verify_credentials
-
/api/v1/apps
-
/api/v1/blocks
-
/api/v1/conversations/:id/read
-
/api/v1/conversations/:id
-
/api/v1/conversations
-
/api/v1/custom_emojis
-
/api/v1/directory
-
/api/v1/domain_blocks
(GET
,POST
,DELETE
) -
/api/v1/endorsements
-
/api/v1/favourites
-
/api/v1/featured_tags/:id
(DELETE
) -
/api/v1/featured_tags/suggestions
-
/api/v1/featured_tags
(GET
,POST
) -
/api/v1/follow_requests/:account_id/authorize
-
/api/v1/follow_requests/:account_id/reject
-
/api/v1/follow_requests
-
/api/v1/follow_suggestions
-
/api/v1/followed_tags
-
/api/v1/instance/activity
-
/api/v1/instance/domain_blocks
-
/api/v1/instance/extended_description
-
/api/v1/instance/peers
-
/api/v1/instance/rules
-
/api/v1/instance
-
/api/v1/lists/:id/accounts
(GET
,POST
,DELETE
) -
/api/v1/lists/:id
(GET
,PUT
,DELETE
) -
/api/v1/lists
(GET
,POST
) -
/api/v1/markers
(GET
,POST
) -
/api/v1/media/:id
-
/api/v1/mutes
-
/api/v1/notifications/:id/dismiss
-
/api/v1/notifications/:id
-
/api/v1/notifications/clear
-
/api/v1/notifications
-
/api/v1/polls/:id/votes
-
/api/v1/polls/:id
-
/api/v1/preferences
-
/api/v1/profile/avatar
(DELETE
) -
/api/v1/profile/header
(DELETE
) -
/api/v1/reports
-
/api/v1/scheduled_statuses/:id
(GET
,PUT
,DELETE
) -
/api/v1/scheduled_statuses
-
/api/v1/statuses/:id/bookmark
-
/api/v1/statuses/:id/context
-
/api/v1/statuses/:id/favourite
-
/api/v1/statuses/:id/favourited_by
-
/api/v1/statuses/:id/history
-
/api/v1/statuses/:id/mute
-
/api/v1/statuses/:id/pin
-
/api/v1/statuses/:id/reblog
-
/api/v1/statuses/:id/reblogged_by
-
/api/v1/statuses/:id/source
-
/api/v1/statuses/:id/translate
-
/api/v1/statuses/:id/unbookmark
-
/api/v1/statuses/:id/unfavourite
-
/api/v1/statuses/:id/unmute
-
/api/v1/statuses/:id/unpin
-
/api/v1/statuses/:id/unreblog
-
/api/v1/statuses/:id
(GET
,DELETE
) -
/api/v1/statuses/:id
(PUT
) -
/api/v1/statuses
-
/api/v1/suggestions/:account_id
(DELETE
) -
/api/v1/tags/:id/follow
-
/api/v1/tags/:id/unfollow
-
/api/v1/tags/:id
-
/api/v1/timelines/home
-
/api/v1/timelines/list/:list_id
-
/api/v1/timelines/public
-
/api/v1/timelines/tag/:hashtag
-
/api/v1/trends/links
-
/api/v1/trends/statuses
-
/api/v1/trends/tags
-
/api/v2/filters/:filter_id/keywords
(GET
,POST
) -
/api/v2/filters/:filter_id/statuses
(GET
,POST
) -
/api/v2/filters/:id
(GET
,PUT
,DELETE
) -
/api/v2/filters/keywords/:id
(GET
,PUT
,DELETE
) -
/api/v2/filters/statuses/:id
(GET
,DELETE
) -
/api/v2/filters
(GET
,POST
) -
/api/v2/instance
-
/api/v2/media
-
/api/v2/search
-
/api/v2/suggestions
-
/oauth/authorize
-
/oauth/token
-
/oauth/revoke
- Admin API
- Announcements
- Polls
- Tags
- Lists
- Scheduled statuses
- WebSockets
- Push notifications
- Trends
- Suggestions
- Bookmarks
- Translation
- Reports
- Admin API
For Versia Server's own custom API, please see the API documentation.
This project is licensed under the AGPL-3.0-or-later.