Start a server from a one-click app
Create an instance with WordPress, Gitea, Grafana, PostgreSQL, Redis or another app installed at the first boot. Choose the app and a plan, save the generated passwords, and finish the app's own setup.
A one-click app is a server that comes with an app already set up. Pick the app when you create an instance, and Nextify installs it at the first boot, opens the ports it needs and generates its passwords. Apps are installed directly on Ubuntu, without containers, so you run and update them like any other server. You pay only for the instance.
This article covers:
- Creating an instance from an app
- Passwords: saved once
- After the install
- Doing it through the API
1. Create an instance from an app
- In the portal, open Instances → Create instance. Or open the app list on the website and click Start with under the app.
- Under Start from an app, click the app. It shows what it installs, how much memory it needs and which ports it opens.
- Fill in the app's Settings if it has any (PostgreSQL, for example, asks for a database name). The defaults are fine to start with.
- Choose the region, a plan and your SSH keys as usual. Plans with less memory than the app needs are greyed out. Only Ubuntu and Debian images can be chosen.
- Click Create instance.
An app replaces the startup script and Deploy from Git: an instance has one of the three. An app cannot be installed on an instance restored from a snapshot.
The apps on offer today:
| App | What it is | Opens |
|---|---|---|
| WordPress | Website and blog platform (nginx, PHP and MariaDB) | Port 80 |
| Gitea | Self-hosted Git service | Port 3000 |
| Grafana | Dashboards for your metrics | Port 3000 |
| Uptime Kuma | Uptime monitoring with a status page | Port 3001 |
| n8n | Workflow automation | Port 5678 |
| Node-RED | Flow-based automation | Port 1880 |
| PostgreSQL | Database | Private network only |
| Redis | In-memory data store | Private network only |
The app list always shows the current catalog, with the memory each app needs.
2. Passwords: saved once
Right after you click Create instance, the portal shows the passwords Nextify generated for the app, for example the WordPress database password or the Grafana admin password.
Save them right away. They are not shown again. Use the Copy buttons, put them in your password manager, then tick I have saved these credentials to go on to the instance.
If you lose one, it is still inside the server: log in with SSH and read /etc/nextify/env (root only):
sudo cat /etc/nextify/env
The instance's Setup & environment tab lists the same variables as secrets. You can replace a secret there, but not read it.
3. After the install
The install runs at the first boot and usually takes a few minutes. The Setup & environment tab on the instance's page shows its output (the setup log), and says when it has finished.
The dialog after create shows the app's next step, with the instance's public IP address filled in once it has one. Usually that is: open http://<the instance's IP> and finish the app's own setup, such as creating the admin account. Do that right away, before anyone else does.
Good to know:
- The app's public ports are opened through security groups named
app-tcp-<port>, added to the instance. SSH on port 22 stays open as on any instance. - PostgreSQL and Redis open no public port. Reach them from your other instances on the same private network, at the instance's private IP.
- For HTTPS, put a load balancer with a certificate in front of the app, or install certbot on the server.
- The server is yours: update the app with
aptor its own updater, like any other server. Each server also has/root/NEXTIFY-APP.txtwith how to log in and what to do next. - Anyone can read the script an app runs, before creating anything:
GET /v1/apps/{slug}in the API.
4. Through the API
List the apps with GET /v1/apps (no token needed), then send app to POST /v1/instances:
curl -sS -X POST https://api.nextifynow.com/v1/instances \
-H "Authorization: Bearer $NEXTIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"name": "db-1", "machine_type": "sm1.s1-1", "region": "us-west-1", "image": "ubuntu-24.04",
"app": {"slug": "postgresql", "inputs": {"APP_DB": "shop"}}}'
The answer's app.credentials holds the generated passwords, in this answer only, and app.next_step says what to do next. The answers to know: 422 plan_too_small (choose a plan with more memory), 422 invalid_input (an app setting is not valid) and 422 image_not_supported (use Ubuntu or Debian). The API documentation has a complete example.