| do_provision {plumberDeploy} | R 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  | 
| unstable | If  | 
| example | If  | 
| ... | Arguments passed into the  | 
| path | path to attach to the IP address before browsing.  Should likely
start with a  | 
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 plumberto manage your API, or- journalctl -u plumberto 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. 
-  ufwinstalled 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)