Pleroma is an OStatus-compatible social networking server written in Elixir, compatible with GNU Social and Mastodon. It is high-performance and can run on small devices like a Raspberry Pi.
For clients it supports both the GNU Social API with Qvitter extensions and the Mastodon client API.
Mobile clients that are known to work well:
- Twidere
- Tusky
- Pawoo (Android + iOS)
- Subway Tooter
- Amaroq (iOS)
- Tootdon (Android + iOS)
No release has been made yet, but several servers have been online for months already. If you want to run your own server, feel free to contact us at @lain@pleroma.soykaf.com or in our dev chat at #pleroma on freenode or via matrix at https://matrix.heldscal.la/#/room/#freenode_#pleroma:matrix.org.
- Postgresql version 9.6 or newer
- Elixir version 1.4 or newer (you will also need erlang-dev, erlang-parsetools, erlang-xmerl packages)
- Build-essential tools
-
Run
mix deps.get
to install elixir dependencies. -
Run
mix generate_config
. This will ask you a few questions about your instance and generate a configuration file inconfig/generated_config.exs
. Check that and copy it to eitherconfig/dev.secret.exs
orconfig/prod.secret.exs
. It will also create aconfig/setup_db.psql
, which you need to run as PostgreSQL superuser (i.e.sudo su postgres -c "psql -f config/setup_db.psql"
). It will setup a pleroma db user, database and will setup needed extensions that need to be set up once as superuser. -
Run
mix ecto.migrate
to run the database migrations. You will have to do this again after certain updates. -
You can check if your instance is configured correctly by running it with
mix phx.server
and checking the instance info endpoint at/api/v1/instance
. If it shows your uri, name and email correctly, you are configured correctly. If it shows something likelocalhost:4000
, your configuration is probably wrong, unless you are running a local development setup. -
The common and convenient way for adding HTTPS is by using Nginx as a reverse proxy. You can look at example Nginx configuration in
installation/pleroma.nginx
. If you need TLS/SSL certificates for HTTPS, you can look get some for free with letsencrypt: https://letsencrypt.org/ On Debian you can usecertbot
package and command to manage letsencrypt certificates. -
[Not tested with system reboot yet!] You'll also want to set up Pleroma to be run as a systemd service. Example .service file can be found in
installation/pleroma.service
you can put it in/etc/systemd/system/
.
By default, it listens on port 4000 (TCP), so you can access it on http://localhost:4000/ (if you are on the same machine). In case of an error it will restart automatically.
Running service pleroma start
Logs can be watched by using journalctl -fu pleroma.service
Run mix phx.server
in repository's root, it will output log into stdout/stderr