Deploying static apps
Having set up the StaticDeploy platform, you can now deploy your static apps on it.
Note: this guide assumes you have the staticdeploy service listening at
https://staticdeploy.$MY_DOMAIN/
Setting up the CLI
Apps are deployed using the StaticDeploy CLI, which you can install from npm:
npm install --global @staticdeploy/cli
# Or, if you prefer yarn
yarn global add @staticdeploy/cli
You need to provide the CLI the address of your StaticDeploy Management API, as well as a valid authentication token for making requests to it. You can do so by setting two environment variables:
export STATICDEPLOY_API_URL=https://staticdeploy.$MY_DOMAIN/api/
export STATICDEPLOY_API_TOKEN=my-jwt-auth-token
Deploying a static app
Deploying a static app is a two step process.
First, you need to create a bundle from the folder containing your static app.
You can do so with the bundle
command of the CLI, to which you also provide -
aside from the folder where your app is located - a name for the bundle, a tag,
a description, and the path of the fallback asset (which must exist in the
bundle):
staticdeploy bundle
--from my-static-app-folder
--name my-static-app
--tag master
--description "First bundle"
# If your fallback asset actually is /index.html, you can omit this option
# since it defaults to /index.html
--fallbackAssetPath /index.html
The command will package the static app into a tar.gz archive and upload it to the StaticDeploy platform, where it can now be deployed.
You can do so using the deploy
command of the CLI. The command takes three
arguments:
- a name for the app you want to deploy
- an entrypoint (i.e. a URL) where you want to deploy your app
- the name of the bundle that you wish to deploy to that entrypoint
staticdeploy deploy
--app my-static-app
--entrypoint my-static-app.com/
--bundle my-static-app:master
The command will deploy the latest bundle with name my-static-app
and tag
master
to the entrypoint my-static-app.com/
.
Pointing the DNS to StaticDeploy's static-server
Now that you've deployed your static app, when the staticdeploy service
receives requests for my-static-app.com/
, it will respond with the appropriate
file in the bundle you've deployed.
First though you need to make requests for my-static-app.com/
get to the
service, by pointing the DNS of my-static-app.com
to it.
Improving performances with a CDN
Maybe surprisingly given its name, StaticDeploy is not very efficient at serving static files: its main jobs are correctly routing requests and injecting configurations. It also doesn't serve content via HTTPS. This is by design, since StaticDeploy is supposed to be used - at least for production deployments - in combination with a CDN, a tool whose purpose is to optimize and secure serving static files.
Using a CDN with StaticDeploy is fairly simple: you just need to set your
staticdeploy service installation as the origin from which the CDN gets
the content, point the DNS of your app to the CDN, and configure the CDN to
pass-through the Host
header of requests
(headers other than Host
are also supported).