aboutsummaryrefslogtreecommitdiff
path: root/docs/installation/migrating_from_source_otp_en.md
diff options
context:
space:
mode:
authordcc <dcc@logografos.com>2023-09-02 00:52:52 -0700
committerdcc <dcc@logografos.com>2023-09-02 00:52:52 -0700
commit3a4773c3c2bd0bbef244eb519b07208da9108e49 (patch)
tree973567a6f3abb37bfb0f785b1cad14ed55840ef5 /docs/installation/migrating_from_source_otp_en.md
downloadanni-3a4773c3c2bd0bbef244eb519b07208da9108e49.tar.gz
anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.tar.bz2
anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.zip
First
Diffstat (limited to 'docs/installation/migrating_from_source_otp_en.md')
-rw-r--r--docs/installation/migrating_from_source_otp_en.md143
1 files changed, 143 insertions, 0 deletions
diff --git a/docs/installation/migrating_from_source_otp_en.md b/docs/installation/migrating_from_source_otp_en.md
new file mode 100644
index 0000000..f6f2340
--- /dev/null
+++ b/docs/installation/migrating_from_source_otp_en.md
@@ -0,0 +1,143 @@
+# Switching a from-source install to OTP releases
+
+{! backend/installation/otp_vs_from_source.include !}
+
+In this guide we cover how you can migrate from a from source installation to one using OTP releases.
+
+## Pre-requisites
+You will be running commands as root. If you aren't root already, please elevate your privileges by executing `sudo su`/`su`.
+
+The system needs to have `curl` and `unzip` installed for downloading and unpacking release builds.
+
+=== "Alpine"
+ ```sh
+ apk add curl unzip
+ ```
+
+=== "Debian/Ubuntu"
+ ```sh
+ apt install curl unzip
+ ```
+
+## Moving content out of the application directory
+When using OTP releases the application directory changes with every version so it would be a bother to keep content there (and also dangerous unless `--no-rm` option is used when updating). Fortunately almost all paths in Pleroma are configurable, so it is possible to move them out of there.
+
+Pleroma should be stopped before proceeding.
+
+### Moving uploads/custom public files directory
+
+```sh
+# Create uploads directory and set proper permissions (skip if using a remote uploader)
+# Note: It does not have to be `/var/lib/pleroma/uploads`, you can configure it to be something else later
+mkdir -p /var/lib/pleroma/uploads
+chown -R pleroma /var/lib/pleroma
+
+# Create custom public files directory
+# Note: It does not have to be `/var/lib/pleroma/static`, you can configure it to be something else later
+mkdir -p /var/lib/pleroma/static
+chown -R pleroma /var/lib/pleroma
+
+# If you use the local uploader with default settings your uploads should be located in `~pleroma/uploads`
+mv ~pleroma/uploads/* /var/lib/pleroma/uploads
+
+# If you have created the custom public files directory with default settings it should be located in `~pleroma/instance/static`
+mv ~pleroma/instance/static /var/lib/pleroma/static
+```
+
+### Moving emoji
+Assuming you have all emojis in subdirectories of `priv/static/emoji` moving them can be done with
+```sh
+mkdir /var/lib/pleroma/static/emoji
+ls -d ~pleroma/priv/static/emoji/*/ | xargs -i sh -c 'mv "{}" "/var/lib/pleroma/static/emoji/$(basename {})"'
+```
+
+But, if for some reason you have custom emojis in the root directory you should copy the whole directory instead.
+```sh
+mv ~pleroma/priv/static/emoji /var/lib/pleroma/static/emoji
+```
+and then copy custom emojis to `/var/lib/pleroma/static/emoji/custom`.
+
+This is needed because storing custom emojis in the root directory is deprecated, but if you just move them to `/var/lib/pleroma/static/emoji/custom` it will break emoji urls on old posts.
+
+Note that globs have been replaced with `pack_extensions`, so if your emojis are not in png/gif you should [modify the default value](../configuration/cheatsheet.md#emoji).
+
+### Moving the config
+```sh
+# Create the config directory
+# The default path for Pleroma config is /etc/pleroma/config.exs
+# but it can be set via PLEROMA_CONFIG_PATH environment variable
+mkdir -p /etc/pleroma
+
+# Move the config file
+mv ~pleroma/config/prod.secret.exs /etc/pleroma/config.exs
+
+# Change `use Mix.Config` at the top to `import Config`
+$EDITOR /etc/pleroma/config.exs
+```
+## Installing the release
+Before proceeding, get the flavour from [Detecting flavour](otp_en.md#detecting-flavour) section in OTP installation guide.
+```sh
+# Delete all files in pleroma user's directory
+rm -r ~pleroma/*
+
+# Set the flavour environment variable to the string you got in Detecting flavour section.
+# For example if the flavour is `amd64-musl` the command will be
+export FLAVOUR="amd64-musl"
+
+# Clone the release build into a temporary directory and unpack it
+# Replace `stable` with `unstable` if you want to run the unstable branch
+su pleroma -s $SHELL -lc "
+curl 'https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=$FLAVOUR' -o /tmp/pleroma.zip
+unzip /tmp/pleroma.zip -d /tmp/
+"
+
+# Move the release to the home directory and delete temporary files
+su pleroma -s $SHELL -lc "
+mv /tmp/release/* ~pleroma/
+rmdir /tmp/release
+rm /tmp/pleroma.zip
+"
+
+# Start the instance to verify that everything is working as expected
+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
+
+# Stop the instance
+su pleroma -s $SHELL -lc "./bin/pleroma stop"
+```
+
+## Setting up a system service
+OTP releases have different service files than from-source installs so they need to be copied over again.
+
+**Warning:** The service files assume pleroma user's home directory is `/opt/pleroma`, please make sure all paths fit your installation.
+
+=== "Alpine"
+ ```sh
+ # Copy the service into a proper directory
+ cp -f ~pleroma/installation/init.d/pleroma /etc/init.d/pleroma
+
+ # Start pleroma
+ rc-service pleroma start
+ ```
+
+=== "Debian/Ubuntu"
+ ```sh
+ # Copy the service into a proper directory
+ cp ~pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
+
+ # Reload service files
+ systemctl daemon-reload
+
+ # Reenable pleroma to start on boot
+ systemctl reenable pleroma
+
+ # Start pleroma
+ systemctl start pleroma
+ ```
+
+## Running mix tasks
+Refer to [Running mix tasks](otp_en.md#running-mix-tasks) section from OTP release installation guide.
+## Updating
+Refer to [Updating](otp_en.md#updating) section from OTP release installation guide.