Merge branch 'develop' into feature/gen-magic
[akkoma] / docs / installation / otp_en.md
index 338dfa7d086007b9fa26c19797b457c4e34723a9..32f04a9c452970433e86fd61c3f59461844a4087 100644 (file)
@@ -27,16 +27,19 @@ Other than things bundled in the OTP release Pleroma depends on:
 * PostgreSQL (also utilizes extensions in postgresql-contrib)
 * nginx (could be swapped with another reverse proxy but this guide covers only it)
 * certbot (for Let's Encrypt certificates, could be swapped with another ACME client, but this guide covers only it)
+* libmagic/file
 
-```sh tab="Alpine"
-echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories
-apk update
-apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot
-```
+=== "Alpine"
+    ```
+    echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories
+    apk update
+    apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot file-dev
+    ```
 
-```sh tab="Debian/Ubuntu"
-apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot
-```
+=== "Debian/Ubuntu"
+    ```
+    apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot libmagic-dev
+    ```
 
 ## Setup
 ### Configuring PostgreSQL
@@ -47,31 +50,35 @@ apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot
 
 RUM indexes are an alternative indexing scheme that is not included in PostgreSQL by default. You can read more about them on the [Configuration page](../configuration/cheatsheet.md#rum-indexing-for-full-text-search). They are completely optional and most of the time are not worth it, especially if you are running a single user instance (unless you absolutely need ordered search results).
 
-```sh tab="Alpine"
-apk add git build-base postgresql-dev
-git clone https://github.com/postgrespro/rum /tmp/rum
-cd /tmp/rum
-make USE_PGXS=1
-make USE_PGXS=1 install
-cd
-rm -r /tmp/rum
-```
-
-```sh tab="Debian/Ubuntu"
-# Available only on Buster/19.04
-apt install postgresql-11-rum
-```
+=== "Alpine"
+    ```
+    apk add git build-base postgresql-dev
+    git clone https://github.com/postgrespro/rum /tmp/rum
+    cd /tmp/rum
+    make USE_PGXS=1
+    make USE_PGXS=1 install
+    cd
+    rm -r /tmp/rum
+    ```
+
+=== "Debian/Ubuntu"
+    ```
+    # Available only on Buster/19.04
+    apt install postgresql-11-rum
+    ```
 
 #### (Optional) Performance configuration
 It is encouraged to check [Optimizing your PostgreSQL performance](../configuration/postgresql.md) document, for tips on PostgreSQL tuning.
 
-```sh tab="Alpine"
-rc-service postgresql restart
-```
+=== "Alpine"
+    ```
+    rc-service postgresql restart
+    ```
 
-```sh tab="Debian/Ubuntu"
-systemctl restart postgresql
-```
+=== "Debian/Ubuntu"
+    ```
+    systemctl restart postgresql
+    ```
 
 If you are using PostgreSQL 12 or higher, add this to your Ecto database configuration
 
@@ -121,9 +128,6 @@ chown -R pleroma /etc/pleroma
 # Run the config generator
 su pleroma -s $SHELL -lc "./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql"
 
-# Run the environment file generator.
-su pleroma -s $SHELL -lc "./bin/pleroma_ctl release_env gen"
-
 # Create the postgres database
 su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"
 
@@ -134,7 +138,7 @@ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
 # su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate --migrations-path priv/repo/optional_migrations/rum_indexing/"
 
 # Start the instance to verify that everything is working as expected
-su pleroma -s $SHELL -lc "export $(cat /opt/pleroma/config/pleroma.env); ./bin/pleroma daemon"
+su pleroma -s $SHELL -lc "./bin/pleroma daemon"
 
 # Wait for about 20 seconds and query the instance endpoint, if it shows your uri, name and email correctly, you are configured correctly
 sleep 20 && curl http://localhost:4000/api/v1/instance
@@ -154,14 +158,16 @@ certbot certonly --standalone --preferred-challenges http -d yourinstance.tld
 
 The location of nginx configs is dependent on the distro
 
-```sh tab="Alpine"
-cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/conf.d/pleroma.conf
-```
+=== "Alpine"
+    ```
+    cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/conf.d/pleroma.conf
+    ```
 
-```sh tab="Debian/Ubuntu"
-cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
-ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf
-```
+=== "Debian/Ubuntu"
+    ```
+    cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
+    ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf
+    ```
 
 If your distro does not have either of those you can append `include /etc/nginx/pleroma.conf` to the end of the http section in /etc/nginx/nginx.conf and
 ```sh
@@ -178,36 +184,39 @@ nginx -t
 ```
 #### Start nginx
 
-```sh tab="Alpine"
-rc-service nginx start
-```
+=== "Alpine"
+    ```
+    rc-service nginx start
+    ```
 
-```sh tab="Debian/Ubuntu"
-systemctl start nginx
-```
+=== "Debian/Ubuntu"
+    ```
+    systemctl start nginx
+    ```
 
 At this point if you open your (sub)domain in a browser you should see a 502 error, that's because Pleroma is not started yet.
 
 ### Setting up a system service
 
-```sh tab="Alpine"
-# Copy the service into a proper directory
-cp /opt/pleroma/installation/init.d/pleroma /etc/init.d/pleroma
+=== "Alpine"
+    ```
+    # Copy the service into a proper directory
+    cp /opt/pleroma/installation/init.d/pleroma /etc/init.d/pleroma
 
-# Start pleroma and enable it on boot
-rc-service pleroma start
-rc-update add pleroma
-```
+    # Start pleroma and enable it on boot
+    rc-service pleroma start
+    rc-update add pleroma
+    ```
 
-```sh tab="Debian/Ubuntu"
-# Copy the service into a proper directory
-cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
+=== "Debian/Ubuntu"
+    ```
+    # Copy the service into a proper directory
+    cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
 
-
-# Start pleroma and enable it on boot
-systemctl start pleroma
-systemctl enable pleroma
-```
+    # Start pleroma and enable it on boot
+    systemctl start pleroma
+    systemctl enable pleroma
+    ```
 
 If everything worked, you should see Pleroma-FE when visiting your domain. If that didn't happen, try reviewing the installation steps, starting Pleroma in the foreground and seeing if there are any errrors.
 
@@ -227,43 +236,45 @@ $EDITOR path-to-nginx-config
 nginx -t
 ```
 
-```sh tab="Alpine"
-# Restart nginx
-rc-service nginx restart
+=== "Alpine"
+    ```
+    # Restart nginx
+    rc-service nginx restart
 
-# Start the cron daemon and make it start on boot
-rc-service crond start
-rc-update add crond
+    # Start the cron daemon and make it start on boot
+    rc-service crond start
+    rc-update add crond
 
-# Ensure the webroot menthod and post hook is working
-certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --dry-run --post-hook 'rc-service nginx reload'
+    # Ensure the webroot menthod and post hook is working
+    certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --dry-run --post-hook 'rc-service nginx reload'
 
-# Add it to the daily cron
-echo '#!/bin/sh
-certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --post-hook "rc-service nginx reload"
-' > /etc/periodic/daily/renew-pleroma-cert
-chmod +x /etc/periodic/daily/renew-pleroma-cert
+    # Add it to the daily cron
+    echo '#!/bin/sh
+    certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --post-hook "rc-service nginx reload"
+    ' > /etc/periodic/daily/renew-pleroma-cert
+    chmod +x /etc/periodic/daily/renew-pleroma-cert
 
-# If everything worked the output should contain /etc/cron.daily/renew-pleroma-cert
-run-parts --test /etc/periodic/daily
-```
+    # If everything worked the output should contain /etc/cron.daily/renew-pleroma-cert
+    run-parts --test /etc/periodic/daily
+    ```
 
-```sh tab="Debian/Ubuntu"
-# Restart nginx
-systemctl restart nginx
+=== "Debian/Ubuntu"
+    ```
+    # Restart nginx
+    systemctl restart nginx
 
-# Ensure the webroot menthod and post hook is working
-certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --dry-run --post-hook 'systemctl reload nginx'
+    # Ensure the webroot menthod and post hook is working
+    certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --dry-run --post-hook 'systemctl reload nginx'
 
-# Add it to the daily cron
-echo '#!/bin/sh
-certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
-' > /etc/cron.daily/renew-pleroma-cert
-chmod +x /etc/cron.daily/renew-pleroma-cert
+    # Add it to the daily cron
+    echo '#!/bin/sh
+    certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
+    ' > /etc/cron.daily/renew-pleroma-cert
+    chmod +x /etc/cron.daily/renew-pleroma-cert
 
-# If everything worked the output should contain /etc/cron.daily/renew-pleroma-cert
-run-parts --test /etc/cron.daily
-```
+    # If everything worked the output should contain /etc/cron.daily/renew-pleroma-cert
+    run-parts --test /etc/cron.daily
+    ```
 
 ## Create your first user and set as admin
 ```sh
@@ -279,3 +290,4 @@ This will create an account withe the username of 'joeuser' with the email addre
 ## Questions
 
 Questions about the installation or didn’t it work as it should be, ask in [#pleroma:matrix.org](https://matrix.heldscal.la/#/room/#freenode_#pleroma:matrix.org) or IRC Channel **#pleroma** on **Freenode**.
+