purge ldap authenticator (#92)
[akkoma] / docs / docs / installation / alpine_linux_en.md
1 # Installing on Alpine Linux
2
3 {! installation/otp_vs_from_source_source.include !}
4
5 ## Installation
6
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.
8
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.
12
13 {! installation/generic_dependencies.include !}
14
15 ### Prepare the system
16
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:
18
19 ```shell
20 awk 'NR==2' /etc/apk/repositories | sed 's/main/community/' | tee -a /etc/apk/repositories
21 ```
22
23 * Then update the system, if not already done:
24
25 ```shell
26 doas apk update
27 doas apk upgrade
28 ```
29
30 * Install some tools, which are needed later:
31
32 ```shell
33 doas apk add git build-base cmake file-dev
34 ```
35
36 ### Install Elixir and Erlang
37
38 * Install Erlang and Elixir:
39
40 ```shell
41 doas apk add erlang elixir
42 ```
43
44 ### Install PostgreSQL
45
46 * Install Postgresql server:
47
48 ```shell
49 doas apk add postgresql postgresql-contrib
50 ```
51
52 * Initialize database:
53
54 ```shell
55 doas rc-service postgresql start
56 ```
57
58 * Enable and start postgresql server:
59
60 ```shell
61 doas rc-update add postgresql
62 ```
63
64 ### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](../installation/optional/media_graphics_packages.md))
65
66 ```shell
67 doas apk add ffmpeg imagemagick exiftool
68 ```
69
70 ### Install AkkomaBE
71
72 * Add a new system user for the Akkoma service:
73
74 ```shell
75 doas addgroup akkoma
76 doas adduser -S -s /bin/false -h /opt/akkoma -H -G akkoma akkoma
77 ```
78
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.
80
81 * Git clone the AkkomaBE repository and make the Akkoma user the owner of the directory:
82
83 ```shell
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
87 ```
88
89 * Change to the new directory:
90
91 ```shell
92 cd /opt/akkoma
93 ```
94
95 * Install the dependencies for Akkoma and answer with `yes` if it asks you to install `Hex`:
96
97 ```shell
98 doas -u akkoma mix deps.get
99 ```
100
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`.
105
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):
107
108 ```shell
109 doas -u akkoma mv config/{generated_config.exs,prod.secret.exs}
110 ```
111
112 * The previous command creates also the file `config/setup_db.psql`, with which you can create the database:
113
114 ```shell
115 doas -u postgres psql -f config/setup_db.psql
116 ```
117
118 * Now run the database migration:
119
120 ```shell
121 doas -u akkoma env MIX_ENV=prod mix ecto.migrate
122 ```
123
124 * Now you can start Akkoma already
125
126 ```shell
127 doas -u akkoma env MIX_ENV=prod mix phx.server
128 ```
129
130 ### Finalize installation
131
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.
133
134 #### Nginx
135
136 * Install nginx, if not already done:
137
138 ```shell
139 doas apk add nginx
140 ```
141
142 * Setup your SSL cert, using your method of choice or certbot. If using certbot, first install it:
143
144 ```shell
145 doas apk add certbot
146 ```
147
148 and then set it up:
149
150 ```shell
151 doas mkdir -p /var/lib/letsencrypt/
152 doas certbot certonly --email <your@emailaddress> -d <yourdomain> --standalone
153 ```
154
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).
156
157 * Copy the example nginx configuration to the nginx folder
158
159 ```shell
160 doas cp /opt/akkoma/installation/nginx/akkoma.nginx /etc/nginx/conf.d/akkoma.conf
161 ```
162
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).
164
165 ```
166 server {
167 server_name your.domain;
168 listen 80;
169 ...
170 }
171
172 server {
173 server_name your.domain;
174 listen 443 ssl http2;
175 ...
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;
179 ...
180 }
181 ```
182
183 * Enable and start nginx:
184
185 ```shell
186 doas rc-update add nginx
187 doas rc-service nginx start
188 ```
189
190 If you need to renew the certificate in the future, uncomment the relevant location block in the nginx config and run:
191
192 ```shell
193 doas certbot certonly --email <your@emailaddress> -d <yourdomain> --webroot -w /var/lib/letsencrypt/
194 ```
195
196 #### OpenRC service
197
198 * Copy example service file:
199
200 ```shell
201 doas cp /opt/akkoma/installation/init.d/akkoma /etc/init.d/akkoma
202 ```
203
204 * Make sure to start it during the boot
205
206 ```shell
207 doas rc-update add akkoma
208 ```
209
210 #### Create your first user
211
212 If your instance is up and running, you can create your first user with administrative rights with the following task:
213
214 ```shell
215 doas -u akkoma env MIX_ENV=prod mix pleroma.user new <username> <your@emailaddress> --admin
216 ```
217
218 #### Further reading
219
220 {! installation/further_reading.include !}
221
222 {! support.include !}