This vignette provides information on how to host the
FossilShinyApp
on a web server.
Specifically, while we’ll only look at serving the app on
Debian 11
, this guide can easily be adapted for any
Linux
based web server and for any app for that
matter.
This guide will assume you know basic bash
commands and
have already setup a ssh
connection to your web server.
Let’s start by installing all the dependencies we’ll need to compile
and run our shiny web server. Connect via ssh
to your web
server and install the following packages.
Some dependencies used by FossilSim
require a rather
recent version of R
. At the time of making this, on
debian bullseye
, you need a newer version of R rather than
the one supplied by the advanced packaging tool apt
.
This means we’ll need to add a PPA
in order to get a more
recent version of R
as to fully support the
FossilSim
package, which we obviously need.
First open the file at /etc/apt/sources.list
to add the
R
PPA
to your sources list:
Add the line
deb http://cloud.r-project.org/bin/linux/debian bullseye-cran40/
as shown below to add the PPA
.
If you are using a different distro
, you can use https://CRAN.R-project.org/bin/linux/ to find the right
PPA
.
Your source file should look like this:
# deb http://mirrors.online.net/debian bullseye main
deb http://mirrors.online.net/debian bullseye main non-free contrib
deb-src http://mirrors.online.net/debian bullseye main non-free contrib
deb http://security.debian.org/debian-security bullseye-security main contrib n>
deb-src http://security.debian.org/debian-security bullseye-security main contr>
# R 4.2.0
deb http://cloud.r-project.org/bin/linux/debian bullseye-cran40/
Then press CTRL+X
to quit and Y
to
save.
Finally, you can install R
.
You can verify your R
version by using the
R
command.
These are the dependencies you’ll need to build shiny server.
Depending on your distribution they may already be pre-installed.
Python 3.6+
, pre-installed on
Debian 11
.Use which python3
to verify it is installed. You should
get something like /usr/bin/python3
if it’s correctly
installed.
cmake
Use sudo apt-get install cmake
.
gcc
Should be pre-installed. Author’s note: we need
gcc 4.8
or newer which means you cannot use this
guide with aDebian 9<
server.
g++
Should be pre-installed.
git
Use sudo apt-get install git
.
Any R
packages used by the app needs to be installed for
all users. This means we need to install both the shiny package and the
FossilSim
package for all users.
Note: most of this part is referenced from
here.
Once all of the prerequisites have been satisfied, you can use the
following commands to download and install Shiny Server.
# Clone the repository from GitHub
git clone https://github.com/rstudio/shiny-server.git
# Get into a temporary directory in which we'll build the project
cd shiny-server
mkdir tmp
cd tmp
# Install our private copy of Node.js
../external/node/install-node.sh
# Add the bin directory to the path so we can reference node
DIR=`pwd`
PATH=$DIR/../bin:$PATH
# Use cmake to prepare the make step. Modify the "--DCMAKE_INSTALL_PREFIX"
# if you wish the install the software at a different location.
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../
# Get an error here? Check the "How do I set the cmake Python version?" question below
# Compile native code and install npm dependencies
make
mkdir ../build
(cd .. && ./bin/npm install)
# Install the software at the predefined location
sudo make install
# Install default config file
sudo mkdir -p /etc/shiny-server
sudo cp ../config/default.config /etc/shiny-server/shiny-server.conf
# Place a shortcut to the shiny-server executable in /usr/bin
sudo ln -s /usr/local/shiny-server/bin/shiny-server /usr/bin/shiny-server
# Create shiny user. On some systems, you may need to specify the full path to 'useradd'
sudo useradd -r -m shiny
# Create log, config, and application directories
sudo mkdir -p /var/log/shiny-server
sudo mkdir -p /srv/shiny-server
sudo mkdir -p /var/lib/shiny-server
sudo chown shiny /var/log/shiny-server
sudo mkdir -p /etc/shiny-server
# I added this command
sudo chown shiny:shiny /var/lib/shiny-server/
The /srv/shiny-server
directory is where we house our
apps. I recommend creating a new directory:
/srv/shiny-server/FossilSimShinyApp/
.
Then, you can grab the app.R
file, the
/www/
folder and the /R/
folder from
here
and copy them to /srv/shiny-server/FossilSimShinyApp/
.
By default, Shiny Server is set to use port
3838. Author’s note: I have no idea why they
chose this port.
You’ll need to open the port.
If you are using uncomplicated firewall, you can run the command:
sudo ufw allow 3838
Furthermore you can change the port used in
/etc/shiny-server/shiny-server.conf
.
As you probably noticed, during the installation, we created a new user called shiny. We’ll use this user to start and stop our shiny operations.
Let’s start our shiny server. First, log in as shiny.
If you’ve followed everything correctly, you should be able to start the shiny server by typing:
[2022-05-10T13:56:44.320] [INFO] shiny-server - Shiny Server v1.5.19.0 (Node.js v16.14.0)
[2022-05-10T13:56:44.324] [INFO] shiny-server - Using config file "/etc/shiny-server/shiny-server.conf"
[2022-05-10T13:56:44.435] [INFO] shiny-server - Starting listener on http://[::]:3838
You should then be able to access your app using any web browser and going to the following web address: