diff --git a/installation.md b/installation.md
new file mode 100644
index 0000000..03ce565
--- /dev/null
+++ b/installation.md
@@ -0,0 +1,196 @@
+# Installation
+
+## Debian/Ubuntu
+
+Dependencies:
+
+- php >= 5.6
+- rsvg-convert
+- pdftk
+- imagemagick
+- potrace
+- ghostcript
+
+Installing dependencies:
+```
+sudo aptitude install php librsvg2-bin pdftk imagemagick potrace ghostscript locales
+```
+
+Getting the source code:
+
+```
+git clone https://github.com/24eme/signaturepdf.git
+```
+
+To run it:
+
+```
+php -S localhost:8000 -t public
+```
+
+#### PHP Configuration
+
+```
+upload_max_filesize = 24M # Maximum size of the PDF file to sign
+post_max_size = 24M # Maximum size of the PDF file to sign
+max_file_uploads = 201 # Maximum number of pages in the PDF, here 200 pages + the original PDF
+```
+
+#### Apache Configuration
+
+```
+DocumentRoot /path/to/signaturepdf/public
+
+ Require all granted
+ FallbackResource /index.php
+ php_value max_file_uploads 201
+ php_value upload_max_filesize 24M
+ php_value post_max_size 24M
+
+```
+
+
+## Deploy with Docker
+
+### Building the image
+
+```bash
+docker build -t signaturepdf .
+```
+
+### Running a container
+
+```bash
+docker run -d --name=signaturepdf -p 8080:80 signaturepdf
+```
+
+[localhost:8080](http://localhost:8080)
+
+### Configuration
+
+The following variables can be used to configure the deployment:
+
+| Variable | description | exemple | defaut |
+|------------------------|-----------------------------------------------------------------------|----------------------------------|-------------|
+| `SERVERNAME` | Deployment URL | `pdf.24eme.fr` | localhost |
+| `UPLOAD_MAX_FILESIZE` | Maximum size of the PDF file to sign | 48M | 24M |
+| `POST_MAX_SIZE` | Maximum size of the PDF file to sign | 48M | 24M |
+| `MAX_FILE_UPLOADS` | Maximum number of pages in the PDF, here 200 pages + the original PDF | 401 | 201 |
+| `PDF_STORAGE_PATH` | Path where uploaded PDF files can be stored | /data | /data |
+| `DISABLE_ORGANIZATION` | Disable the Organize route | true | false |
+| `PDF_DEMO_LINK` | Show, hide, or change the demo PDF link | false, `link` or `relative path` | true |
+| `DEFAULT_LANGUAGE` | Default language for the application | en_US.UTF-8 | fr_FR.UTF-8 |
+
+```bash
+docker run -d --name=signaturepdf -p 8080:80 -e SERVERNAME=pdf.example.org -e UPLOAD_MAX_FILESIZE=48M -e POST_MAX_SIZE=48M -e MAX_FILE_UPLOADS=401 -e PDF_STORAGE_PATH=/data signaturepdf
+```
+
+
+## Alpine
+
+Here is a script to install the solution on Linux Alpine (tested with version 3.15).
+Remember to edit the "domain" variable at the beginning of the script to match the URL it will be called with.
+
+The main components are:
+
+- php 8 + php-fpm
+- Nginx
+- pdftk ("manual" installation requiring openjdk8)
+- imagick
+- potrace
+- librsvg
+- ghostscript
+
+What the script does:
+
+- Installs dependencies
+- Configures php and php-fpm
+- Configures Nginx
+- Configures the config.ini
+- Clones the repo
+
+```
+#!/bin/sh
+
+domain='sign.example.com'
+
+apk update
+apk add bash nginx git php8 php8-fpm php8-session php8-gd php8-fileinfo openjdk8 imagemagick potrace librsvg
+
+cd /tmp
+wget https://gitlab.com/pdftk-java/pdftk/-/jobs/924565145/artifacts/raw/build/libs/pdftk-all.jar
+mv pdftk-all.jar pdftk.jar
+
+cat <>pdftk
+#!/usr/bin/env bash
+/usr/bin/java -jar "\$0.jar" "\$@"
+EOF
+
+chmod 775 pdftk*
+mv pdftk* /usr/bin
+
+sed -i 's/user = nobody/user = nginx/g' /etc/php8/php-fpm.d/www.conf
+sed -i 's/;listen.owner = nginx/listen.owner = nginx/g' /etc/php8/php-fpm.d/www.conf
+
+sed -i 's/post_max_size = 8M/post_max_size = 50M/g' /etc/php8/php.ini
+sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 50M/g' /etc/php8/php.ini
+sed -i 's/max_file_uploads = 20 /max_file_uploads = 300/g' /etc/php8/php.ini
+
+service php-fpm8 restart
+
+cd /var/www
+git clone https://github.com/24eme/signaturepdf.git
+
+cat <>/etc/nginx/http.d/signaturepdf.conf
+server {
+
+ listen 80 default_server;
+ listen [::]:80 default_server;
+
+ server_name ${domain};
+
+ client_max_body_size 0;
+
+ root /var/www/signaturepdf/public/;
+
+ index index.php index.html;
+
+ location / {
+ # URLs to attempt, including pretty ones.
+ try_files \$uri \$uri/ /index.php?\$query_string;
+ }
+
+ location ~ [^/]\.php(/|$) {
+ root /var/www/signaturepdf/public/;
+
+ fastcgi_split_path_info ^(.+\.php)(/.+)$;
+ fastcgi_index index.php;
+ include fastcgi_params;
+
+ fastcgi_buffer_size 128k;
+ fastcgi_buffers 128 128k;
+ fastcgi_param PATH_INFO \$fastcgi_path_info;
+ fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
+ fastcgi_pass 127.0.0.1:9000;
+
+ }
+
+}
+EOF
+
+rm /etc/nginx/http.d/default.conf
+rm -R /var/www/localhost
+
+service nginx restart
+
+rc-update add nginx
+rc-update add php-fpm8
+
+mkdir /var/www/signaturepdf/tmp
+chown nginx /var/www/signaturepdf/tmp
+
+cat <>/var/www/signaturepdf/config/config.ini
+PDF_STORAGE_PATH=/var/www/signaturepdf/tmp
+EOF
+```
+