Repository Setup

Connect your source code and detect runtime settings automatically.

When you click New Service, the form is split into focused sections. Complete them from top to bottom, then review the monthly estimate and deploy.

Project and host

Project Name is the label shown on the Dashboard. Host Name becomes your public subdomain, for example flask-test.mhserver.dpdns.org. Host names must start with a letter and use only lowercase letters, numbers, and hyphens.

Repository and branch

Paste a GitHub repository URL and choose the branch to deploy. If the repository is private, the form shows a GitHub connect row. After connecting, Mapherix can fetch private branches and deploy using the connected token.

Public repositories can usually be analyzed and deployed from the URL alone. Private repositories require GitHub OAuth so Mapherix can verify access, read branch and commit metadata, download the selected source snapshot, and show deployment history.

Auto detect
Use Auto detect after entering a repository URL. Mapherix inspects the project and can fill runtime, port, build command, and start command when the project structure is recognizable.

Private repository checklist

  • Click Connect when the GitHub prompt appears.
  • Authorize access to the account or organization that owns the repository.
  • Return to Mapherix and fetch branches again if the branch list was empty before connecting.
  • Reconnect GitHub if private commit history, branches, or redeploy actions stop loading.

Runtime and commands

Choose the runtime that matches the app. The Build Command prepares dependencies or production assets. The Start Command launches the server process. The Port must match the port your app listens on.

Node.js (Express, React, Next.js)

bash
# Build Command
npm install && npm run build

# Start Command
npm start

# Express apps should listen on:
0.0.0.0:$PORT or 0.0.0.0:3000

Python (FastAPI, Flask)

bash
# Build Command
pip install -r requirements.txt

# Start Command
python app.py

# FastAPI example start command
uvicorn main:app --host 0.0.0.0 --port 8000
Port Binding
Ensure you tell Mapherix which Port your application is listening on (commonly 3000 or 8000). We handle routing external traffic to this internal port.
Start command note
The start command should run the production server, not a one-time script. If the command exits immediately, the deployment can finish building but the service will not stay online.

Database configuration

Database support is optional. The default database setting is None, which is best for APIs, bots, static dashboards, or services that use an external database provider. Enable database provisioning only when your app needs MongoDB, PostgreSQL, or MySQL.

After enabling a database, choose the database type and confirm its port. PostgreSQL and MySQL also support database username, password, database name, and permission fields. The default permission is admin so the application can create and manage the tables it needs during first deployment.

  • None: No database is provisioned or attached.
  • MongoDB: Use for document data and Mongo connection strings.
  • PostgreSQL: Use for relational data; provide user, password, database name, and port.
  • MySQL: Use for relational data; provide user, password, database name, and port.
env
# Common database environment variable examples
DATABASE_URL=postgresql://admin:password@host:5432/app_database
MYSQL_URL=mysql://admin:password@host:3306/app_database
MONGODB_URI=mongodb://host:27017/app_database

Persistent directory

Enable persistent directory backup when your app writes files that should survive redeploys, such as uploads or data/files. Enter a relative folder path inside your project.

Encrypted secrets

Add environment variables manually or upload a .env file. Blank secret rows are not shown by default; click Add Variable when you need to add one.