Use the Servers tab
Add an app, choose development or production, and use the list and detail controls to keep it running.
On this page
What you see in Servers
Servers is the list of applications ForgeVPS manages on your selected machine. Each entry represents an app, not another VPS. Use this tab when you want a project to have its own start/stop controls, logs, environment settings, and web address.
The list is split into GitHub Deployments, Production Servers, and Dev Servers. Start with Add server; the first screen asks how you want to run the app. You do not need to create a new machine for every application.
Start with the project and existing servers
Select the intended machine. In Files, find or add your project folder; use Terminal to inspect its README and package scripts. Check Servers for an existing entry before creating another process for the same app.
Use the project's documented package manager and commands. A package script named start is not enough to classify an app as development or production; choose that explicitly in ForgeVPS.
pwd
ls
cat package.jsonThese examples are for a JavaScript project. Review the files locally; project files and logs can contain private information. Follow the project’s README for its dependency installation and database setup before registering the start command.
Choose a server type
- Development server: a preview or editing session, such as a project's dev script. These processes receive a higher Linux out-of-memory kill preference.
- Production server: an app serving real traffic. Choose this for production workloads even when their command uses npm or Bun.
- GitHub deployment: connect a repository for the hosted deployment flow, with installation, build, and start commands. This option is unavailable on self-hosted.
Development priority is a preference under memory pressure, not a hard memory limit or a guarantee that production can never be killed. Child processes inherit the launch preference; a process manager may restart a failed app. Keep sufficient memory available and investigate repeated failures.
Add and start a local project
- Open Servers → Add server and choose Development or Production.
- Choose the project directory with the directory picker, give the server a name, and enter the project's long-running start command.
- Install required dependencies and, for production, build the project as its instructions require. Registering a local server is not a substitute for those project-specific steps.
- Configure required environment variables in the server details. Keep database URLs and API keys out of source control and shared screenshots.
- Start the server and inspect its status and logs. Confirm its assigned port is listening and the application responds before adding a domain.
ForgeVPS supplies the assigned port through PORT. The app must read it or receive the equivalent supported command-line flag. Do not hardcode a different port or launch a second copy on the same port. A managed domain can proxy to a local listener; a direct preview from another machine also needs an externally reachable bind address and firewall access.
Domains and everyday controls
Open your server’s Domains tab, or the machine’s Domains page, to add a hostname and choose the app it should open. Point DNS to the machine and check the required web ports. Confirm both the application and HTTPS work before changing an existing production hostname.
- Start, stop, or restart a server from its list row. Restarting production can interrupt requests; confirm the intended target first.
- Rename changes the display name, not the underlying process identity or domain routing. Use the actual process name when inspecting it in a terminal.
- Memory usage is an estimate of process-tree resident memory. A missing reading is not zero; check status and connection errors.
- Use the Logs view for startup errors. Loading, empty output, and failed reads are different states; an empty log alone does not prove the app is healthy.
Open an app’s details
- Logs shows the running app’s output. Open it after starting the server or when the app returns an error.
- Env holds the app’s environment values, such as a database connection. Save changes, then restart a development/production server or redeploy a GitHub server for them to take effect.
- Domains is where you attach a web address to this particular app.
- Settings lets you change the display name. On a local server, changes to the working directory, command, or development/production mode use Save and restart.
- Deployments appears for GitHub servers and shows the history and build output of their releases.
For example, to update an app’s database connection, open that app → Env, change the variable your project reads, and save. Then restart that app from the server list and check its Logs. You do not need to restart the whole machine.
If the app will not start or respond
- Check the working directory and start command against the project's scripts. Look for missing dependencies, build output, or environment variables.
- For an address-in-use error, identify the process occupying the assigned port. Do not stop an unrelated service to clear it.
- If the process runs but the browser cannot connect, check the assigned port, bind address, domain target, DNS, and firewall rules.
- If the app stops or repeatedly restarts, inspect its logs and host memory. Explicitly development workloads are preferred for termination under memory pressure; reduce the workload before restarting it repeatedly.
pm2 list
ss -ltn
free -h
df -h /Run these checks in the managed machine's terminal. PM2 names may differ from display names. Avoid pm2 env, raw process dumps, or printing environment files into agent transcripts; they can expose secrets.