215 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			215 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Installing on Alpine Linux
 | ||
| ## Installation
 | ||
| 
 | ||
| This guide is a step-by-step installation guide for Alpine Linux. It also 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.
 | ||
| 
 | ||
| ### Required packages
 | ||
| 
 | ||
| * `postgresql`
 | ||
| * `elixir`
 | ||
| * `erlang`
 | ||
| * `erlang-parsetools`
 | ||
| * `erlang-xmerl`
 | ||
| * `git`
 | ||
| * Development Tools
 | ||
| 
 | ||
| #### Optional packages used in this guide
 | ||
| 
 | ||
| * `nginx` (preferred, example configs for other reverse proxies can be found in the repo)
 | ||
| * `certbot` (or any other ACME client for Let’s Encrypt certificates)
 | ||
| 
 | ||
| ### Prepare the system
 | ||
| 
 | ||
| * First make sure to have the community repository enabled:
 | ||
| 
 | ||
| ```shell
 | ||
| echo "https://nl.alpinelinux.org/alpine/latest-stable/community" | sudo tee -a /etc/apk/repository
 | ||
| ```
 | ||
| 
 | ||
| * Then update the system, if not already done:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo apk update
 | ||
| sudo apk upgrade
 | ||
| ```
 | ||
| 
 | ||
| * Install some tools, which are needed later:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo apk add git build-base
 | ||
| ```
 | ||
| 
 | ||
| ### Install Elixir and Erlang
 | ||
| 
 | ||
| * Install Erlang and Elixir:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo apk add erlang erlang-runtime-tools erlang-xmerl elixir
 | ||
| ```
 | ||
| 
 | ||
| * Install `erlang-eldap` if you want to enable ldap authenticator
 | ||
| 
 | ||
| ```shell
 | ||
| sudo apk add erlang-eldap
 | ||
| ```
 | ||
| ### Install PostgreSQL
 | ||
| 
 | ||
| * Install Postgresql server:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo apk add postgresql postgresql-contrib
 | ||
| ```
 | ||
| 
 | ||
| * Initialize database:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo /etc/init.d/postgresql start
 | ||
| ```
 | ||
| 
 | ||
| * Enable and start postgresql server:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo rc-update add postgresql
 | ||
| ```
 | ||
| 
 | ||
| ### Install PleromaBE
 | ||
| 
 | ||
| * Add a new system user for the Pleroma service:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo adduser -S -s /bin/false -h /opt/pleroma -H pleroma
 | ||
| ```
 | ||
| 
 | ||
| **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.
 | ||
| 
 | ||
| * Git clone the PleromaBE repository and make the Pleroma user the owner of the directory:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo mkdir -p /opt/pleroma
 | ||
| sudo chown -R pleroma:pleroma /opt/pleroma
 | ||
| sudo -Hu pleroma git clone -b master https://git.pleroma.social/pleroma/pleroma /opt/pleroma
 | ||
| ```
 | ||
| 
 | ||
| * Change to the new directory:
 | ||
| 
 | ||
| ```shell
 | ||
| cd /opt/pleroma
 | ||
| ```
 | ||
| 
 | ||
| * Install the dependencies for Pleroma and answer with `yes` if it asks you to install `Hex`:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo -Hu pleroma mix deps.get
 | ||
| ```
 | ||
| 
 | ||
| * Generate the configuration: `sudo -Hu pleroma mix pleroma.instance gen`
 | ||
|   * Answer with `yes` if it asks you to install `rebar3`.
 | ||
|   * This may take some time, because parts of pleroma get compiled first.
 | ||
|   * After that it will ask you a few questions about your instance and generates a configuration file in `config/generated_config.exs`.
 | ||
| 
 | ||
| * 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):
 | ||
| 
 | ||
| ```shell
 | ||
| mv config/{generated_config.exs,prod.secret.exs}
 | ||
| ```
 | ||
| 
 | ||
| * The previous command creates also the file `config/setup_db.psql`, with which you can create the database:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo -Hu postgres psql -f config/setup_db.psql
 | ||
| ```
 | ||
| 
 | ||
| * Now run the database migration:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate
 | ||
| ```
 | ||
| 
 | ||
| * Now you can start Pleroma already
 | ||
| 
 | ||
| ```shell
 | ||
| sudo -Hu pleroma MIX_ENV=prod mix phx.server
 | ||
| ```
 | ||
| 
 | ||
| ### Finalize installation
 | ||
| 
 | ||
| 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.
 | ||
| 
 | ||
| #### Nginx
 | ||
| 
 | ||
| * Install nginx, if not already done:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo apk add nginx
 | ||
| ```
 | ||
| 
 | ||
| * Setup your SSL cert, using your method of choice or certbot. If using certbot, first install it:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo apk add certbot
 | ||
| ```
 | ||
| 
 | ||
| and then set it up:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo mkdir -p /var/lib/letsencrypt/
 | ||
| sudo certbot certonly --email <your@emailaddress> -d <yourdomain> --standalone
 | ||
| ```
 | ||
| 
 | ||
| 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).
 | ||
| 
 | ||
| * Copy the example nginx configuration to the nginx folder
 | ||
| 
 | ||
| ```shell
 | ||
| sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/conf.d/pleroma.conf
 | ||
| ```
 | ||
| 
 | ||
| * Before starting nginx edit the configuration and change it to your needs (e.g. change servername, change cert paths)
 | ||
| * Enable and start nginx:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo rc-update add nginx
 | ||
| sudo service nginx start
 | ||
| ```
 | ||
| 
 | ||
| If you need to renew the certificate in the future, uncomment the relevant location block in the nginx config and run:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo certbot certonly --email <your@emailaddress> -d <yourdomain> --webroot -w /var/lib/letsencrypt/
 | ||
| ```
 | ||
| 
 | ||
| #### OpenRC service
 | ||
| 
 | ||
| * Copy example service file:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo cp /opt/pleroma/installation/init.d/pleroma /etc/init.d/pleroma
 | ||
| ```
 | ||
| 
 | ||
| * Make sure to start it during the boot
 | ||
| 
 | ||
| ```shell
 | ||
| sudo rc-update add pleroma
 | ||
| ```
 | ||
| 
 | ||
| #### Create your first user
 | ||
| 
 | ||
| If your instance is up and running, you can create your first user with administrative rights with the following task:
 | ||
| 
 | ||
| ```shell
 | ||
| sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new <username> <your@emailaddress> --admin
 | ||
| ```
 | ||
| 
 | ||
| #### Further reading
 | ||
| 
 | ||
| * [Admin tasks](Admin tasks)
 | ||
| * [Backup your instance](Backup-your-instance)
 | ||
| * [Configuration tips](General tips for customizing pleroma fe)
 | ||
| * [Hardening your instance](Hardening-your-instance)
 | ||
| * [How to activate mediaproxy](How-to-activate-mediaproxy)
 | ||
| * [Small Pleroma-FE customizations](Small customizations)
 | ||
| * [Updating your instance](Updating-your-instance)
 | ||
| 
 | ||
| ## 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**.
 | 
