Skip to content

Instantly share code, notes, and snippets.

@jjesusfilho
Last active April 22, 2020 23:04
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jjesusfilho/7b7001745cbb8f7b1ad36e7bfe5d43e8 to your computer and use it in GitHub Desktop.
Save jjesusfilho/7b7001745cbb8f7b1ad36e7bfe5d43e8 to your computer and use it in GitHub Desktop.
Instalação do R, Rstudio-server, shiny-server, nginx, ssl e autenticação do usuário do shinyapp no Ubuntu 18.04.
# Instalar o R
## Assegure-se de que o lsb-release está instalado:
apt-get update && apt-get install -y lsb-release && apt-get clean all
## Remova pacotes que já não são necessários
apt --autoremove
## Adicione o endereço do repositório do cran ao sources.list:
sudo echo "deb https://cloud.r-project.org/bin/linux/ubuntu `lsb_release -cs`-cran35/" | sudo tee -a /etc/apt/sources.list
## Adiciona a chave
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
sudo apt-get update
sudo apt-get install -y r-base r-base-dev
## Instalando Java
sudo apt-get install -y default-jre
sudo apt-get install -y default-jdk
## Atualiza onde o R deve encontra arquivos java.
sudo R CMD javareconf
## Instalando Rjava
Rscript -e 'install.packages("Rjava")'
## Instala tesseract, caso você queira aplicar ocr e ler textos em imagens(pdf/png..)
sudo apt install libtesseract-dev libleptonica-dev
sudo apt-get install tesseract-ocr-eng
sudo apt-get install tesseract-ocr-por
## Instala o libpopler, caso você queira ler textos em pdf
sudo add-apt-repository -y ppa:cran/poppler
sudo apt update upgrade
sudo sudo apt-get install -y libpoppler-cpp-dev
## Instalando o rstudio-server
sudo apt-get install gdebi-core
wget https://download2.rstudio.org/server/trusty/amd64/rstudio-server-1.2.5033-amd64.deb
sudo gdebi rstudio-server-1.2.5033-amd64.deb
## Instalando Tidyverse e companhia
sudo apt install libssl-dev
sudo apt install libcurl4-openssl-dev
sudo apt install libxml2-dev
Rscript -e 'install.packages(c("tidyverse,"xml2")'
## Instalando o Shiny-server
sudo su - \
-c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""
wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.5.5.872-amd64.deb
sudo gdebi shiny-server-1.5.5.872-amd64.deb
# Aqui, geralmente comento (#) a linha do /etc/R/Renviron que especifica a biblioteca do usário,
## para que o usuário shiny possa usar os pacotes instalados por mim.
## Instalando o nginx
sudo apt-get update
sudo apt-get install nginx
## Configurando o SSL
## O certbot client automatiza todos os passos para aquisição de certificado ssl.
add-apt-repository ppa:certbot/certbot
apt-get update
## Instalar o certbot
apt-get install python-certbot-nginx
## Adicionar o ip ou domínio ao server_name
vim /etc/nginx/sites-available/default
## Verificar se está tudo ok
nginx -t
## Reiniciar o nginx
systemctl reload nginx
## Autorizar portas via ufw
ufw allow ssh ## Fazer isso antes de habilitar o firewall.
## Agora podemos habilitar o firewall
ufw enable
## Agora autorizar o ngnix-full, ou seja, portas 443 e 80.
ufw allow 'Nginx Full'
## Feito isto, se você tentar acessar o rstudio e o shiny, não será possível porque estas portas
## foram bloqueadas. O passo agora é emitir o certificado.
## O SSL encrypt não emite certificado para IP, somente para domínio.
## Vamos registrar um domínio
## Ir para o seguinte endereço, criar um domínio gratuito e apontar para o Digital Ocean
https://my.freenom.com/
## Criar um registro no Digital Ocean para o domínio e direcioná-lo para o ip
## Adicionar o domínio à configuração do Nginx
nano /etc/nginx/sites-available/default
## Solicitar a certificação
certbot --nginx -d datathon.ml -d www.datathon.ml
## Adicionar o proxy-reverso para o rstudio e o shiny-server no seguinte arquivo:
vim /etc/nginx/sites-available/default
### isso deve ser adicionado em qualquer parte abaixo do html.index...
location /rstudio/ {
proxy_pass http://127.0.0.1:8787/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /shiny/ {
rewrite ^/shiny/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:3838/;
proxy_redirect / $scheme://$http_host/shiny/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 20d;
proxy_buffering off;
}
## adicionar
location ~ /.well-known {
allow all;
}
## Para que o nginx-server funcione, vc tem de adicionar a seguinte diretiva no arquivo `/etc/nginx/nginx.conf`
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
## Aumentando o tamanho máximo dos arquivos carregados
### O Rstudio permite que você faça upload de arquivos ou pastas zipadas por meio da aba upload. No entanto, o nginx
### limita o tamanho dos uploas a 100M. Se aumentar, acrescente a seguinte diretiva no arquivo `/etc/nginx/nginx.conf`
http {
...
client_max_body_size 100M;
}
## Segurança extra
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
## Cria usuários
useradd -m jose
passwd jose
addgroup usuarios
## Adiciona usuário ao grupo
usermod -a -G usuarios jose
sudo chown -R :usuarios /usr/local/lib/R/site-library
sudo chmod -R g+w /usr/local/lib/R/site-library
sudo chmod -R o-x /usr/local/lib/R/site-library
## Faça o mesmo com shiny
sudo chown -R :usuarios /srv/shiny-server
sudo chmod -R g+w /srv/shiny-server
sudo chmod -R o-x /srv/shiny-server
## Backup a configuração do nginx
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default2
## Caso queira instalar o openblas, siga o seguinte tutorial:
https://csantill.github.io/RPerformanceWBLAS/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment