1 # Installing on Alpine Linux
3 {! installation/otp_vs_from_source_source.include !}
7 This guide is a step-by-step installation guide for Alpine Linux. The instructions were verified against Alpine v3.16 standard image. You might miss additional dependencies if you use `netboot` instead.
9 As of Alpine Linux v3.16, `doas` is the preferred way of running privileged commands, which is what this guide will use.
10 If you are running an earlier version, replace `doas` with `sudo` (and use `sudo -Hu akkoma` instead of `doas -u akkoma`).
11 If you want to run this guide with root, ignore the `doas` at the beginning of the lines, unless it calls a user like `doas -u akkoma`; in this case, use `su -l <username> -s $SHELL -c 'command'` instead.
13 {! installation/generic_dependencies.include !}
15 ### Prepare the system
17 * The community repository must be enabled in `/etc/apk/repositories`. Depending on which version and mirror you use this looks like `https://dl-5.alpinelinux.org/alpine/v3.16/community`. If you autogenerated the mirror during installation:
20 awk 'NR==2' /etc/apk/repositories | sed 's/main/community/' | tee -a /etc/apk/repositories
23 * Then update the system, if not already done:
30 * Install some tools, which are needed later:
33 doas apk add git build-base cmake file-dev
36 ### Install Elixir and Erlang
38 * Install Erlang and Elixir:
41 doas apk add erlang elixir
44 * Install `erlang-eldap` if you want to enable ldap authenticator
47 doas apk add erlang-eldap
50 ### Install PostgreSQL
52 * Install Postgresql server:
55 doas apk add postgresql postgresql-contrib
58 * Initialize database:
61 doas rc-service postgresql start
64 * Enable and start postgresql server:
67 doas rc-update add postgresql
70 ### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](../installation/optional/media_graphics_packages.md))
73 doas apk add ffmpeg imagemagick exiftool
78 * Add a new system user for the Akkoma service:
82 doas adduser -S -s /bin/false -h /opt/akkoma -H -G akkoma akkoma
85 **Note**: To execute a single command as the Akkoma system user, use `doas -u akkoma command`. You can also switch to a shell by using `doas -su akkoma`. If you don’t have and want `doas` on your system, you can use `su` as root user (UID 0) for a single command by using `su -l akkoma -s $SHELL -c 'command'` and `su -l akkoma -s $SHELL` for starting a shell.
87 * Git clone the AkkomaBE repository and make the Akkoma user the owner of the directory:
90 doas mkdir -p /opt/akkoma
91 doas chown -R akkoma:akkoma /opt/akkoma
92 doas -u akkoma git clone https://akkoma.dev/AkkomaGang/akkoma.git /opt/akkoma
95 * Change to the new directory:
101 * Install the dependencies for Akkoma and answer with `yes` if it asks you to install `Hex`:
104 doas -u akkoma mix deps.get
107 * Generate the configuration: `doas -u akkoma env MIX_ENV=prod mix pleroma.instance gen`
108 * Answer with `yes` if it asks you to install `rebar3`.
109 * This may take some time, because parts of akkoma get compiled first.
110 * After that it will ask you a few questions about your instance and generates a configuration file in `config/generated_config.exs`.
112 * Check the configuration and if all looks right, rename it, so Akkoma will load it (`prod.secret.exs` for productive instance, `dev.secret.exs` for development instances):
115 doas -u akkoma mv config/{generated_config.exs,prod.secret.exs}
118 * The previous command creates also the file `config/setup_db.psql`, with which you can create the database:
121 doas -u postgres psql -f config/setup_db.psql
124 * Now run the database migration:
127 doas -u akkoma env MIX_ENV=prod mix ecto.migrate
130 * Now you can start Akkoma already
133 doas -u akkoma env MIX_ENV=prod mix phx.server
136 ### Finalize installation
138 If you want to open your newly installed instance to the world, you should run nginx or some other webserver/proxy in front of Akkoma and you should consider to create an OpenRC service file for Akkoma.
142 * Install nginx, if not already done:
148 * Setup your SSL cert, using your method of choice or certbot. If using certbot, first install it:
157 doas mkdir -p /var/lib/letsencrypt/
158 doas certbot certonly --email <your@emailaddress> -d <yourdomain> --standalone
161 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).
163 * Copy the example nginx configuration to the nginx folder
166 doas cp /opt/akkoma/installation/nginx/akkoma.nginx /etc/nginx/conf.d/akkoma.conf
169 * 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).
173 server_name your.domain;
179 server_name your.domain;
180 listen 443 ssl http2;
182 ssl_trusted_certificate /etc/letsencrypt/live/your.domain/chain.pem;
183 ssl_certificate /etc/letsencrypt/live/your.domain/fullchain.pem;
184 ssl_certificate_key /etc/letsencrypt/live/your.domain/privkey.pem;
189 * Enable and start nginx:
192 doas rc-update add nginx
193 doas rc-service nginx start
196 If you need to renew the certificate in the future, uncomment the relevant location block in the nginx config and run:
199 doas certbot certonly --email <your@emailaddress> -d <yourdomain> --webroot -w /var/lib/letsencrypt/
204 * Copy example service file:
207 doas cp /opt/akkoma/installation/init.d/akkoma /etc/init.d/akkoma
210 * Make sure to start it during the boot
213 doas rc-update add akkoma
216 #### Create your first user
218 If your instance is up and running, you can create your first user with administrative rights with the following task:
221 doas -u akkoma env MIX_ENV=prod mix pleroma.user new <username> <your@emailaddress> --admin
226 {! installation/further_reading.include !}
228 {! support.include !}