Merge branch 'salmon-native-keys' into 'develop'
[akkoma] / README.md
1 # Pleroma
2
3 ## About Pleroma
4
5 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.
6
7 For clients it supports both the [GNU Social API with Qvitter extensions](https://twitter-api.readthedocs.io/en/latest/index.html) and the [Mastodon client API](https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md).
8
9 Mobile clients that are known to work well:
10
11 * Twidere
12 * Tusky
13 * Pawoo (Android + iOS)
14 * Subway Tooter
15 * Amaroq (iOS)
16 * Tootdon (Android + iOS)
17
18 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.
19
20 ## Installation
21
22 ### Dependencies
23
24 * Postgresql version 9.6 or newer
25 * Elixir version 1.4 or newer
26 * Build-essential tools
27
28 ### Configuration
29
30 * Run `mix deps.get` to install elixir dependencies.
31
32 * Run `mix generate_config`. This will ask you a few questions about your instance and generate a configuration file in `config/generated_config.exs`. Check that and copy it to either `config/dev.secret.exs` or `config/prod.secret.exs`.
33
34 * Configure your database settings in `{dev,prod}.secret.exs` and either create the database with psql or run `mix ecto.create`.
35
36 * Run `mix ecto.migrate` to run the database migrations. You will have to do this again after certain updates.
37
38 * 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 like `localhost:4000`, your configuration is probably wrong, unless you are running a local development setup.
39
40 * 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/
41 On Debian you can use `certbot` package and command to manage letsencrypt certificates.
42
43 * [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/`.
44
45 ## Running
46
47 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.
48
49 ### As systemd service (with provided .service file)
50 Running `service pleroma start`
51 Logs can be watched by using `journalctl -fu pleroma.service`
52
53 ### Standalone/run by other means
54 Run `mix phx.server` in repository's root, it will output log into stdout/stderr