# "Bare Metal" Installation
If Docker on your OS of choice is buggy or too slow, or you just want to run Nodewood directly on your machine, you absolutely can. In fact, a common way to run Nodewood in production is to just run it directly on a Virtual Machine, no Docker or anything.
First, you must make sure you have Node.js (opens new window) and Yarn (opens new window) installed, same as for running Nodewood in Docker. Next, you'll need to install Nodemon (opens new window), a process monitor that can watch files and restart processes when they change. Finally, you have to make sure you have PostgreSQL (opens new window) installed, or have access to a running PostgreSQL instance.
# Running the API
First, you'll need to make a couple small changes to your
DB_PASSto match your new PostgreSQL installation's configuration.
To run the API in development mode, just run
yarn dev-api from your project root. This is the same command that the Docker container runs.
To run the API in production mode, you can use Nodemon as above, but a more robust solution would involve setting up something like PM2 (opens new window), a process manager that can be configured via a config file and persists through machine restart.
# Running the UI
The API will serve any requests that are prefixed with
/app by rewriting to
/ui/dist/index.html, so all we need to do is build the UI into that folder.
For development mode, run
yarn build-ui --watch from your project root. This will compile assets into the
ui/dist folder and then watch UI files for changes, and then recompile as necessary.
For production, just run
yarn build-ui. This will also compile assets into the
ui/dist folder, but it will perform additional minification steps that make the process much longer, and it will not watch for updates, so you will need to manually trigger this every time your code changes.
# Accessing your installation
To access your installation, just go to
http://localhost in your browser. Note that this is NOT a secure ("https") URL, so certain third-party integrations (notably Stripe) may get grumpy. In order to get an
https URL working, you have a few options:
- Generate self-signed certificates and modify the
api.jsfile that the API uses to start, so that the server starts with those certificates. (opens new window)
- Use Nginx or some other server to serve the SSL certificates, and proxy the requests to your Node.js application. (opens new window) This is the approach the Docker solution uses internally, which is why you can use
httpsURLs out-of-the-box when you run Nodewood from Docker.