Networking: tips and tricks
https HTTPS
Any RStudio instance on a remote server is accessed over an unencrypted http by default (though RStudio encrypts the password entered to log in through client-side javascript.) The easiest way to connect over a secure https connection is to use a reverse proxy server, such as Caddy. To establish an encrypted https connection, you must first have control of a registered domain name: https cannot be used when connecting directly to a given ip address. Once you have pointed your domain name at the ip address of the server, Caddy provides a quick way to get set up with https using LetsEncrypt certificates. Below is an example Caddyfile
specifying the necessary configuration, along with a docker-compose
file which sets up an RStudio server instance behind a separate container running caddy
. This approach also makes it easy to map ports to subdomains for cleaner-looking URLs:
Example site/Caddyfile
:
rstudio.example.com {
tls you@email.com
proxy / rstudio:8787 {
header_upstream Host {host}
}
}
Example docker-compose file:
version: '2'
services:
caddy:
image: joshix/caddy
links:
- rstudio
volumes:
- ./site/:/var/www/html
- ./.caddy/:/.caddy
ports:
- 80:80
- 443:443
restart: always
rstudio:
image: rocker/verse
env_file: .password
volumes:
- $HOME/students:/home/
restart: always
More details about the use of docker-compose and Caddy Server are found on their websites.
data_usage Monitoring
Linking database containers
Here is an example of a compose file that configures a Shiny Server that can connect to a database (PostgreSQL).
services:
db:
image: postgres:13
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- pgdata:/var/lib/postgresql/data
expose:
- 5432
shiny:
image: rocker/shiny-verse:4
restart: always
environment:
DB_HOST: db
DB_PORT: 5432
depends_on:
- db
volumes:
- ./app/app.R:/srv/shiny-server/app/app.R:ro
ports:
- 3838:3838
volumes:
pgdata: