logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

arch_linux_en.md (6551B)


  1. # Installing on Arch Linux
  2. {! backend/installation/otp_vs_from_source_source.include !}
  3. ## Installation
  4. This guide will assume that you have administrative rights, either as root or a user with [sudo permissions](https://wiki.archlinux.org/index.php/Sudo). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su <username> -s $SHELL -c 'command'` instead.
  5. ### Required packages
  6. * `postgresql`
  7. * `elixir`
  8. * `git`
  9. * `base-devel`
  10. * `cmake`
  11. * `file`
  12. #### Optional packages used in this guide
  13. * `nginx` (preferred, example configs for other reverse proxies can be found in the repo)
  14. * `certbot` (or any other ACME client for Let’s Encrypt certificates)
  15. * `ImageMagick`
  16. * `ffmpeg`
  17. * `exiftool`
  18. ### Prepare the system
  19. * First update the system, if not already done:
  20. ```shell
  21. sudo pacman -Syu
  22. ```
  23. * Install some of the above mentioned programs:
  24. ```shell
  25. sudo pacman -S git base-devel elixir cmake file
  26. ```
  27. ### Install PostgreSQL
  28. [Arch Wiki article](https://wiki.archlinux.org/index.php/PostgreSQL)
  29. * Install the `postgresql` package:
  30. ```shell
  31. sudo pacman -S postgresql
  32. ```
  33. * Initialize the database cluster:
  34. ```shell
  35. sudo -iu postgres initdb -D /var/lib/postgres/data
  36. ```
  37. * Start and enable the `postgresql.service`
  38. ```shell
  39. sudo systemctl enable --now postgresql.service
  40. ```
  41. ### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](../installation/optional/media_graphics_packages.md))
  42. ```shell
  43. sudo pacman -S ffmpeg imagemagick perl-image-exiftool
  44. ```
  45. ### Install PleromaBE
  46. * Add a new system user for the Pleroma service:
  47. ```shell
  48. sudo useradd -r -s /bin/false -m -d /var/lib/pleroma -U pleroma
  49. ```
  50. **Note**: To execute a single command as the Pleroma system user, use `sudo -Hu pleroma command`. You can also switch to a shell by using `sudo -Hu pleroma $SHELL`. If you don’t have and want `sudo` on your system, you can use `su` as root user (UID 0) for a single command by using `su -l pleroma -s $SHELL -c 'command'` and `su -l pleroma -s $SHELL` for starting a shell.
  51. * Git clone the PleromaBE repository and make the Pleroma user the owner of the directory:
  52. ```shell
  53. sudo mkdir -p /opt/pleroma
  54. sudo chown -R pleroma:pleroma /opt/pleroma
  55. sudo -Hu pleroma git clone -b stable https://git.pleroma.social/pleroma/pleroma /opt/pleroma
  56. ```
  57. * Change to the new directory:
  58. ```shell
  59. cd /opt/pleroma
  60. ```
  61. * Install the dependencies for Pleroma and answer with `yes` if it asks you to install `Hex`:
  62. ```shell
  63. sudo -Hu pleroma mix deps.get
  64. ```
  65. * Generate the configuration: `sudo -Hu pleroma MIX_ENV=prod mix pleroma.instance gen`
  66. * Answer with `yes` if it asks you to install `rebar3`.
  67. * This may take some time, because parts of pleroma get compiled first.
  68. * After that it will ask you a few questions about your instance and generates a configuration file in `config/generated_config.exs`.
  69. * Check the configuration and if all looks right, rename it, so Pleroma will load it (`prod.secret.exs` for productive instance, `dev.secret.exs` for development instances):
  70. ```shell
  71. sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}
  72. ```
  73. * The previous command creates also the file `config/setup_db.psql`, with which you can create the database:
  74. ```shell
  75. sudo -Hu postgres psql -f config/setup_db.psql
  76. ```
  77. * Now run the database migration:
  78. ```shell
  79. sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate
  80. ```
  81. * Now you can start Pleroma already
  82. ```shell
  83. sudo -Hu pleroma MIX_ENV=prod mix phx.server
  84. ```
  85. ### Finalize installation
  86. If you want to open your newly installed instance to the world, you should run nginx or some other webserver/proxy in front of Pleroma and you should consider to create a systemd service file for Pleroma.
  87. #### Nginx
  88. * Install nginx, if not already done:
  89. ```shell
  90. sudo pacman -S nginx
  91. ```
  92. * Create directories for available and enabled sites:
  93. ```shell
  94. sudo mkdir -p /etc/nginx/sites-{available,enabled}
  95. ```
  96. * Append the following line at the end of the `http` block in `/etc/nginx/nginx.conf`:
  97. ```Nginx
  98. include sites-enabled/*;
  99. ```
  100. * Setup your SSL cert, using your method of choice or certbot. If using certbot, first install it:
  101. ```shell
  102. sudo pacman -S certbot certbot-nginx
  103. ```
  104. and then set it up:
  105. ```shell
  106. sudo mkdir -p /var/lib/letsencrypt/
  107. sudo certbot certonly --email <your@emailaddress> -d <yourdomain> --standalone
  108. ```
  109. If that doesn’t work, make sure, that nginx is not already running. If it still doesn’t work, try setting up nginx first (change ssl “on” to “off” and try again).
  110. ---
  111. * Copy the example nginx configuration and activate it:
  112. ```shell
  113. sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.nginx
  114. sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx
  115. ```
  116. * Before starting nginx edit the configuration and change it to your needs (e.g. change servername, change cert paths)
  117. * (Strongly recommended) serve media on another domain
  118. Refer to the [Hardening your instance](../configuration/hardening.md) document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors.
  119. * Enable and start nginx:
  120. ```shell
  121. sudo systemctl enable --now nginx.service
  122. ```
  123. If you need to renew the certificate in the future, uncomment the relevant location block in the nginx config and run:
  124. ```shell
  125. sudo certbot certonly --email <your@emailaddress> -d <yourdomain> --webroot -w /var/lib/letsencrypt/
  126. ```
  127. #### Other webserver/proxies
  128. You can find example configurations for them in `/opt/pleroma/installation/`.
  129. #### Systemd service
  130. * Copy example service file
  131. ```shell
  132. sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
  133. ```
  134. * Edit the service file and make sure that all paths fit your installation
  135. * Enable and start `pleroma.service`:
  136. ```shell
  137. sudo systemctl enable --now pleroma.service
  138. ```
  139. #### Create your first user
  140. If your instance is up and running, you can create your first user with administrative rights with the following task:
  141. ```shell
  142. sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new <username> <your@emailaddress> --admin
  143. ```
  144. #### Further reading
  145. {! backend/installation/further_reading.include !}
  146. ## Questions
  147. Questions about the installation or didn’t it work as it should be, ask in [#pleroma:libera.chat](https://matrix.to/#/#pleroma:libera.chat) via Matrix or **#pleroma** on **libera.chat** via IRC.