Skip to content

Search docs

Search the Skiffly documentation

From localhost to the internet in 5 minutes

Your site works at http://localhost:3000 and you want a real link to send to people. What hosting is, why localhost only works on your computer, and the exact commands to put the project online with HTTPS.

http://localhost:3000 means "this computer, port 3000". The address works only on your machine, and only while the terminal with npm run dev stays open. To share the site you need a computer that is always on and reachable from the internet — a server — and an address that points to it. Hosting is renting that, and deploying is copying your project there and starting it.

On Skiffly the server, the HTTPS certificate and the address are set up for you. You bring the folder.

Before you start#

  • The project runs locally (npm run dev, npm start, python main.py …).
  • Node.js 20+ is installed (needed for the npx skiffly command, whatever your project is written in).
  • A Skiffly account — sign up free, no card.

Put it online#

Stop npm run dev (Ctrl+C) and, in the same project folder:

npx skiffly login     # connect this computer to your account (opens the browser)
npx skiffly init      # create a project for this folder
npx skiffly up --yes  # upload, build and start it — you see the build log
npx skiffly domain    # get the public address

The last command prints something like https://my-site-4f2a.skiffly.cloud. Open it on your phone: that is your site, on the internet, with HTTPS.

Change something and update the site#

Edit the code, check it locally, then:

npx skiffly up

The new version replaces the old one in about a minute. Want it to happen by itself? Put the project on GitHub and connect the repository in the dashboard (New service → GitHub repo) — every git push then deploys.

Things that work locally but not online#

LocallyOnline
a fixed port (app.listen(3000))listen on process.env.PORT (Python: os.environ["PORT"]); static sites need nothing
a .env file.env is not uploaded — set the values with npx skiffly variables set NAME=value or in the dashboard Variables tab, then npx skiffly up
localhost:5432 databasecreate a database in the project (New service → Template → PostgreSQL) and use DATABASE_URL
files saved to diskthe disk is reset on every deploy — attach a volume for uploads, or use a database
npm run devonline the production build runs (npm run build + npm start); make sure npm run build works locally first

Your own domain#

my-site-4f2a.skiffly.cloud is fine for testing and sharing. For mysite.com, see Buy a domain and connect it — two DNS records, HTTPS is automatic.

Costs#

  • Free plan: one app and one database, no card, your own domain included. Static sites never sleep; a server app sleeps after 10 minutes without visitors and wakes on the next visit (a few seconds).
  • Hobby — $5/month including $5 of usage: apps always on, as many as you need.

See Pricing for the details.