logo

pleroma

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

alpine_linux_en.md (6936B)


  1. # Installing on Alpine Linux
  2. {! backend/installation/otp_vs_from_source_source.include !}
  3. ## Installation
  4. This guide is a step-by-step installation guide for Alpine Linux. The instructions were verified against Alpine v3.10 standard image. You might miss additional dependencies if you use `netboot` instead.
  5. It assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.linode.com/docs/tools-reference/custom-kernels-distros/install-alpine-linux-on-your-linode/#configuration). 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 -l <username> -s $SHELL -c 'command'` instead.
  6. {! backend/installation/generic_dependencies.include !}
  7. ### Prepare the system
  8. * The community repository must be enabled in `/etc/apk/repositories`. Depending on which version and mirror you use this looks like `http://alpine.42.fr/v3.10/community`. If you autogenerated the mirror during installation:
  9. ```shell
  10. awk 'NR==2' /etc/apk/repositories | sed 's/main/community/' | tee -a /etc/apk/repositories
  11. ```
  12. * Then update the system, if not already done:
  13. ```shell
  14. sudo apk update
  15. sudo apk upgrade
  16. ```
  17. * Install some tools, which are needed later:
  18. ```shell
  19. sudo apk add git build-base cmake file-dev
  20. ```
  21. ### Install Elixir and Erlang
  22. * Install Erlang and Elixir:
  23. ```shell
  24. sudo apk add erlang erlang-runtime-tools erlang-xmerl elixir
  25. ```
  26. * Install `erlang-eldap` if you want to enable ldap authenticator
  27. ```shell
  28. sudo apk add erlang-eldap
  29. ```
  30. ### Install PostgreSQL
  31. * Install Postgresql server:
  32. ```shell
  33. sudo apk add postgresql postgresql-contrib
  34. ```
  35. * Initialize database:
  36. ```shell
  37. sudo /etc/init.d/postgresql start
  38. ```
  39. * Enable and start postgresql server:
  40. ```shell
  41. sudo rc-update add postgresql
  42. ```
  43. ### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](../installation/optional/media_graphics_packages.md))
  44. ```shell
  45. sudo apk add ffmpeg imagemagick exiftool
  46. ```
  47. ### Install PleromaBE
  48. * Add a new system user for the Pleroma service:
  49. ```shell
  50. sudo addgroup pleroma
  51. sudo adduser -S -s /bin/false -h /opt/pleroma -H -G pleroma pleroma
  52. ```
  53. **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.
  54. * Git clone the PleromaBE repository and make the Pleroma user the owner of the directory:
  55. ```shell
  56. sudo mkdir -p /opt/pleroma
  57. sudo chown -R pleroma:pleroma /opt/pleroma
  58. sudo -Hu pleroma git clone -b stable https://git.pleroma.social/pleroma/pleroma /opt/pleroma
  59. ```
  60. * Change to the new directory:
  61. ```shell
  62. cd /opt/pleroma
  63. ```
  64. * Install the dependencies for Pleroma and answer with `yes` if it asks you to install `Hex`:
  65. ```shell
  66. sudo -Hu pleroma mix deps.get
  67. ```
  68. * Generate the configuration: `sudo -Hu pleroma MIX_ENV=prod mix pleroma.instance gen`
  69. * Answer with `yes` if it asks you to install `rebar3`.
  70. * This may take some time, because parts of pleroma get compiled first.
  71. * After that it will ask you a few questions about your instance and generates a configuration file in `config/generated_config.exs`.
  72. * 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):
  73. ```shell
  74. sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}
  75. ```
  76. * The previous command creates also the file `config/setup_db.psql`, with which you can create the database:
  77. ```shell
  78. sudo -Hu postgres psql -f config/setup_db.psql
  79. ```
  80. * Now run the database migration:
  81. ```shell
  82. sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate
  83. ```
  84. * Now you can start Pleroma already
  85. ```shell
  86. sudo -Hu pleroma MIX_ENV=prod mix phx.server
  87. ```
  88. ### Finalize installation
  89. 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 an OpenRC service file for Pleroma.
  90. #### Nginx
  91. * Install nginx, if not already done:
  92. ```shell
  93. sudo apk add nginx
  94. ```
  95. * Setup your SSL cert, using your method of choice or certbot. If using certbot, first install it:
  96. ```shell
  97. sudo apk add certbot
  98. ```
  99. and then set it up:
  100. ```shell
  101. sudo mkdir -p /var/lib/letsencrypt/
  102. sudo certbot certonly --email <your@emailaddress> -d <yourdomain> --standalone
  103. ```
  104. 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).
  105. * Copy the example nginx configuration to the nginx folder
  106. ```shell
  107. sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/conf.d/pleroma.conf
  108. ```
  109. * Before starting nginx edit the configuration and change it to your needs. You must change change `server_name` and the paths to the certificates. You can use `nano` (install with `apk add nano` if missing).
  110. ```
  111. server {
  112. server_name your.domain;
  113. listen 80;
  114. ...
  115. }
  116. server {
  117. server_name your.domain;
  118. listen 443 ssl http2;
  119. ...
  120. ssl_trusted_certificate /etc/letsencrypt/live/your.domain/chain.pem;
  121. ssl_certificate /etc/letsencrypt/live/your.domain/fullchain.pem;
  122. ssl_certificate_key /etc/letsencrypt/live/your.domain/privkey.pem;
  123. ...
  124. }
  125. ```
  126. * (Strongly recommended) serve media on another domain
  127. 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.
  128. * Enable and start nginx:
  129. ```shell
  130. sudo rc-update add nginx
  131. sudo service nginx start
  132. ```
  133. If you need to renew the certificate in the future, uncomment the relevant location block in the nginx config and run:
  134. ```shell
  135. sudo certbot certonly --email <your@emailaddress> -d <yourdomain> --webroot -w /var/lib/letsencrypt/
  136. ```
  137. #### OpenRC service
  138. * Copy example service file:
  139. ```shell
  140. sudo cp /opt/pleroma/installation/init.d/pleroma /etc/init.d/pleroma
  141. ```
  142. * Make sure to start it during the boot
  143. ```shell
  144. sudo rc-update add pleroma
  145. ```
  146. #### Create your first user
  147. If your instance is up and running, you can create your first user with administrative rights with the following task:
  148. ```shell
  149. sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new <username> <your@emailaddress> --admin
  150. ```
  151. #### Further reading
  152. {! backend/installation/further_reading.include !}
  153. ## Questions
  154. 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.