do_provision: Provision a DigitalOcean plumber server

View source: R/digital-ocean.R

do_provisionR Documentation

Provision a DigitalOcean plumber server

Description

Create (if required), install the necessary prerequisites, and deploy a sample plumber application on a DigitalOcean virtual machine. You may sign up for a Digital Ocean account here. You should configure an account ssh key with analogsea::key_create() prior to using this method. This command is idempotent, so feel free to run it on a single server multiple times.

Usage

do_provision(droplet, unstable = FALSE, example = TRUE, ...)

do_install_plumber(droplet, unstable, ...)

do_ip(droplet, path)

Arguments

droplet

The DigitalOcean droplet that you want to provision (see analogsea::droplet()).

unstable

If FALSE, will install plumber from CRAN. If TRUE, will install the unstable version of plumber from GitHub.

example

If TRUE, will deploy an example API named hello to the server on port 8000.

...

Arguments passed into the analogsea::droplet_create() function.

path

path to attach to the IP address before browsing. Should likely start with a / or : (as in ⁠:8080⁠), otherwise / will be added.

Details

Provisions a Ubuntu 20.04-x64 droplet with the following customizations:

  • A recent version of R installed

  • plumber installed globally in the system library

  • An example plumber API deployed at ⁠/var/plumber⁠

  • A systemd definition for the above plumber API which will ensure that the plumber API is started on machine boot and respawned if the R process ever crashes. On the server you can use commands like ⁠systemctl restart plumber⁠ to manage your API, or ⁠journalctl -u plumber⁠ to see the logs associated with your plumber process.

  • The 'nginx“ web server installed to route web traffic from port 80 (HTTP) to your plumber process.

  • ufw installed as a firewall to restrict access on the server. By default it only allows incoming traffic on port 22 (SSH) and port 80 (HTTP).

  • A 4GB swap file is created to ensure that machines with little RAM (the default) are able to get through the necessary R package compilations.

Value

The DigitalOcean droplet

The URL to be browsed

Note

Please see https://github.com/sckott/analogsea/issues/205 in case of an error by default do_provision and an error of "Error: Size is not available in this region.".

Examples

## Not run: 
  auth = try(analogsea::do_oauth())
  if (!inherits(auth, "try-error") &&
      inherits(auth, "request")) {
    analogsea::droplets()
    droplet = do_provision(region = "sfo3", example = FALSE)
    analogsea::droplets()
    analogsea::install_r_package(droplet, c("readr", "remotes"))
    do_deploy_api(droplet, "hello",
                  system.file("plumber", "10-welcome", package = "plumber"),
                  port=8000, forward=TRUE)
    if (interactive()) {
        utils::browseURL(do_ip(droplet, "/hello"))
    }
    analogsea::droplet_delete(droplet)
  }

## End(Not run)

meztez/plumberDeploy documentation built on July 16, 2024, 6:58 p.m.