This was so intimidating that I'm just recording what I did so I can remember. Thanks to Conan Lai @letmelol for onsite assistance and this Mopsled blog from 2015, which you should really read instead of my post which only details the terminal commands I used.
Getting started
(For more info See "NFSN Configuration" in Mopsled's post)
- Make a NearlyFreeSpeech account.
- Create a password
- Create a RSA key if you don't have one, run
ssh-keygen
, which generates a public and private key. You'll need the public one - Go to Profile > Add SSH
- To copy your public key, run
pbcopy < ~/.ssh/id_rsa.pub
in the terminal - Paste your key into the input box, and click Add SSH Key
Preparing my app
My app is a Vue-cli with express server: At this point I had the front end in a different folder than the backend. Two different projects with two package.jsons!
- In my front-end project, compile the build into a /dist or /build folder
with
npm run build
- Copy and paste the folder into my server side project folder (express app)
- In my
app.js
, addapp.use(express.static ('dist/'))
to point the backend at my public directory
Optional: In package.json
, I could add a script to run the app run.sh
Deploying
(Also refer to Project Setup)
ssh to my server to get in
ssh username_websiteNickName>@ssh.phx.nearlyfreespeech.net
-
To "upload" all your files to the server, copy everything into
home/protected/
by running:rsync -av ./ username_websitenickname@ssh.phx.nearlyfreespeech.net:/home/protected
./
indicates "everything in this folder" as the local path, andusername_websitenickname@ssh.phx.nearlyfreespeech.net:/home/protected
is the remote path.
Alternately, I could use scp -r ./ username_websiteNickname@ssh.phx. nearlyfreespeech.net:/home/protected
Remember to keep a space between local and destination paths.
Apparently rsync is really cool because it only updates what's changed/new in your files.
Make It Live
- See ["Configure NearlyFreeSpeech.net Daemon" and "Configure Proxy"] on Mopsled's post(http://www.mopsled.com/2015/run-nodejs-on-nearlyfreespeechnet/)
HELP: Getting a TLS certificate
Being the tutorial smartass I think I am, I thought I could create my own TLS certificate after reading this gist thread by running tls.sh
in /home/protected
. I was wrong. Now this task keeps running and I get an email everyday about how it failed. Does anyone know what I can do to enable https
properly?
UPDATE:
In a total duhh moment I found that scheduled tasks are listed in the GUI.
I went to Sites, and on the left hand side I found a sidebar listing "Scheduled Tasks" where the tls.setup task was listed, with a "Remove" button to the right hand side.