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 PostgreSQL
46 * Install Postgresql server:
49 doas apk add postgresql postgresql-contrib
52 * Initialize database:
55 doas rc-service postgresql start
58 * Enable and start postgresql server:
61 doas rc-update add postgresql
64 ### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](../installation/optional/media_graphics_packages.md))
67 doas apk add ffmpeg imagemagick exiftool
72 * Add a new system user for the Akkoma service:
76 doas adduser -S -s /bin/false -h /opt/akkoma -H -G akkoma akkoma
79 **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.
81 * Git clone the AkkomaBE repository and make the Akkoma user the owner of the directory:
84 doas mkdir -p /opt/akkoma
85 doas chown -R akkoma:akkoma /opt/akkoma
86 doas -u akkoma git clone https://akkoma.dev/AkkomaGang/akkoma.git /opt/akkoma
89 * Change to the new directory:
95 * Install the dependencies for Akkoma and answer with `yes` if it asks you to install `Hex`:
98 doas -u akkoma mix deps.get
101 * Generate the configuration: `doas -u akkoma env MIX_ENV=prod mix pleroma.instance gen`
102 * Answer with `yes` if it asks you to install `rebar3`.
103 * This may take some time, because parts of akkoma get compiled first.
104 * After that it will ask you a few questions about your instance and generates a configuration file in `config/generated_config.exs`.
106 * 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):
109 doas -u akkoma mv config/{generated_config.exs,prod.secret.exs}
112 * The previous command creates also the file `config/setup_db.psql`, with which you can create the database:
115 doas -u postgres psql -f config/setup_db.psql
118 * Now run the database migration:
121 doas -u akkoma env MIX_ENV=prod mix ecto.migrate
124 * Now you can start Akkoma already
127 doas -u akkoma env MIX_ENV=prod mix phx.server
130 ### Finalize installation
132 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.
136 * Install nginx, if not already done:
142 * Setup your SSL cert, using your method of choice or certbot. If using certbot, first install it:
151 doas mkdir -p /var/lib/letsencrypt/
152 doas certbot certonly --email <your@emailaddress> -d <yourdomain> --standalone
155 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).
157 * Copy the example nginx configuration to the nginx folder
160 doas cp /opt/akkoma/installation/nginx/akkoma.nginx /etc/nginx/conf.d/akkoma.conf
163 * 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).
167 server_name your.domain;
173 server_name your.domain;
174 listen 443 ssl http2;
176 ssl_trusted_certificate /etc/letsencrypt/live/your.domain/chain.pem;
177 ssl_certificate /etc/letsencrypt/live/your.domain/fullchain.pem;
178 ssl_certificate_key /etc/letsencrypt/live/your.domain/privkey.pem;
183 * Enable and start nginx:
186 doas rc-update add nginx
187 doas rc-service nginx start
190 If you need to renew the certificate in the future, uncomment the relevant location block in the nginx config and run:
193 doas certbot certonly --email <your@emailaddress> -d <yourdomain> --webroot -w /var/lib/letsencrypt/
198 * Copy example service file:
201 doas cp /opt/akkoma/installation/init.d/akkoma /etc/init.d/akkoma
204 * Make sure to start it during the boot
207 doas rc-update add akkoma
210 #### Create your first user
212 If your instance is up and running, you can create your first user with administrative rights with the following task:
215 doas -u akkoma env MIX_ENV=prod mix pleroma.user new <username> <your@emailaddress> --admin
220 {! installation/further_reading.include !}
222 {! support.include !}