Slide index
This micro service enables you to upload pdf slides (e.g. lecture slides) and query them.
Setup
Pull the image. Replace the version number. If unknown look up the latest version here: https://hub.docker.com/r/fwelter/elastic-search-middleware
docker pull fwelter/elastic-search-middleware:<VERSION_NUMBER>
Run the image. Adjust the ports according to your setup. Most likly the containers needs to be put behind an nginx or another webserver to ensure SSL encryption (see below for instructions).
sudo docker run -p 8080:5000 \
--env EXTERNAL_HOST=<YOUR_EXTERNAL_DOMAIN_OR_ENDPOINT> \
-v /home/<YOURUSER>/slide-index/img_cache:/app/img_cache \
-v /home/<YOURUSER>/slide-index/index:/app/index \
-v /home/<YOURUSER>/slide-index/slides:/app/slides \
-dit \
fwelter/wilps_slide_index:<VERSION_NUMBER>
The volume mounts are optional. If left out the container will start without content on every restart.
Nginx
Most often nginx ist available via the package eco system, e.g.
sudo apt update
sudo apt install nginx
Make sure that the domain name is set up in the configuration e.g. /etc/nginx/sites-available/default
The configuration needs to contain a line like server_name example.com www.example.com
;
Most likely the directive server_name
is present and only the domain names need to be added.
SSL certificates
Install certbot and request SSL certificates.
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo certbot --nginx -d example.com
More details can be found here: https://www.digitalocean.com/community/tutorials/how-to-set-up-let-s-encrypt-with-nginx-server-blocks-on-ubuntu-16-04
Setup the reverse proxy
Setup a reverse proxy in your nginx config (e.g. /etc/nginx/sites-available/default
)
If the slide index is hosted with a suffix (e.g. <YOUR_DOMAIN>/slide-index/search
) make sure
to adjust the environment variable, which set during the container start.
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_buffering off;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
}