Skip to content
Back to skills

Render

ASecurity

Deploys web applications on Render with automatic builds, managed databases, and zero-config SSL. Use when deploying web services, static sites, or setting up managed infrastructure.

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 10, 2026
devopstypescriptgobashsqlreactnextjsnodeexpressdockergit

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned September 10, 2026

npx -y skills add mgd34msu/goodvibes-gemini --skill render --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Render?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Render
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mgd34msu-render/badge)](https://www.skillsdirectory.com/skills/mgd34msu-render)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: render
description: Deploys web applications on Render with automatic builds, managed databases, and zero-config SSL. Use when deploying web services, static sites, or setting up managed infrastructure.
---

# Render

Cloud platform for deploying web services, static sites, and databases with automatic builds from Git.

## Quick Start

1. Connect GitHub/GitLab at render.com
2. Create new Web Service
3. Select repository
4. Render auto-detects framework
5. Deploy

## Service Types

### Web Service

Long-running HTTP servers:

```yaml
# render.yaml
services:
  - type: web
    name: api
    runtime: node
    buildCommand: npm install && npm run build
    startCommand: npm start
    envVars:
      - key: NODE_ENV
        value: production
```

### Static Site

Frontend applications:

```yaml
services:
  - type: web
    name: frontend
    runtime: static
    buildCommand: npm install && npm run build
    staticPublishPath: ./dist
```

### Background Worker

Non-HTTP processes:

```yaml
services:
  - type: worker
    name: worker
    runtime: node
    buildCommand: npm install && npm run build
    startCommand: npm run worker
```

### Cron Job

Scheduled tasks:

```yaml
services:
  - type: cron
    name: daily-cleanup
    runtime: node
    buildCommand: npm install
    startCommand: npm run cleanup
    schedule: "0 0 * * *"
```

## Configuration

### render.yaml (Blueprint)

```yaml
# render.yaml
services:
  - type: web
    name: my-app
    runtime: node
    region: oregon

    # Build
    buildCommand: npm ci && npm run build
    startCommand: npm start

    # Environment
    envVars:
      - key: NODE_ENV
        value: production
      - key: DATABASE_URL
        fromDatabase:
          name: mydb
          property: connectionString

    # Health check
    healthCheckPath: /health

    # Scaling
    plan: starter
    numInstances: 1

    # Auto-deploy
    autoDeploy: true

    # Branch
    branch: main

databases:
  - name: mydb
    plan: starter
    databaseName: myapp
    user: myuser

envVarGroups:
  - name: shared-settings
    envVars:
      - key: LOG_LEVEL
        value: info
```

### Environment Variables

```yaml
envVars:
  # Static value
  - key: API_KEY
    value: my-secret-key

  # Sync from group
  - key: LOG_LEVEL
    fromGroup: shared-settings

  # From database
  - key: DATABASE_URL
    fromDatabase:
      name: mydb
      property: connectionString

  # From service
  - key: API_URL
    fromService:
      name: api
      type: web
      property: host
```

## Node.js Deployment

### package.json

```json
{
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js"
  },
  "engines": {
    "node": "20"
  }
}
```

### Express/Fastify

```typescript
const port = process.env.PORT || 10000;

app.listen(port, '0.0.0.0', () => {
  console.log(`Server running on port ${port}`);
});
```

## Next.js Deployment

### Configuration

```yaml
services:
  - type: web
    name: nextjs-app
    runtime: node
    buildCommand: npm ci && npm run build
    startCommand: npm start
    envVars:
      - key: NODE_ENV
        value: production
```

Render auto-detects Next.js and configures appropriately.

## Static Site Deployment

### React/Vite

```yaml
services:
  - type: web
    name: react-app
    runtime: static
    buildCommand: npm ci && npm run build
    staticPublishPath: ./dist
    routes:
      - type: rewrite
        source: /*
        destination: /index.html
```

### Headers & Redirects

```yaml
services:
  - type: web
    name: static-site
    runtime: static
    staticPublishPath: ./dist
    headers:
      - path: /*
        name: X-Frame-Options
        value: DENY
    routes:
      - type: redirect
        source: /old-path
        destination: /new-path
        status: 301
```

## Databases

### PostgreSQL

```yaml
databases:
  - name: mydb
    plan: starter  # starter, standard, pro
    databaseName: myapp
    user: myuser
    region: oregon
```

### Redis

```yaml
services:
  - type: redis
    name: cache
    plan: starter
    maxmemoryPolicy: allkeys-lru
```

### Connection

```yaml
envVars:
  - key: DATABASE_URL
    fromDatabase:
      name: mydb
      property: connectionString

  - key: REDIS_URL
    fromService:
      name: cache
      type: redis
      property: connectionString
```

## Scaling

### Instance Types

| Plan | RAM | CPU |
|------|-----|-----|
| Free | 512 MB | Shared |
| Starter | 512 MB | 0.5 |
| Standard | 2 GB | 1 |
| Pro | 4 GB | 2 |
| Pro Plus | 8 GB | 4 |

### Horizontal Scaling

```yaml
services:
  - type: web
    name: api
    plan: standard
    numInstances: 3
```

### Auto-Scaling (Team plans)

Configure in dashboard:
- Min/max instances
- CPU/memory thresholds

## Custom Domains

1. Add domain in service settings
2. Configure DNS:

```
# A record
@ -> render IP

# CNAME for subdomain
www -> your-app.onrender.com
```

3. SSL certificate auto-provisioned

## Health Checks

```yaml
services:
  - type: web
    healthCheckPath: /health
```

```typescript
app.get('/health', (req, res) => {
  res.status(200).json({ status: 'ok' });
});
```

## Dockerfile Deployment

```yaml
services:
  - type: web
    name: docker-app
    runtime: docker
    dockerfilePath: ./Dockerfile
    dockerContext: .
```

```dockerfile
FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .
RUN npm run build

EXPOSE 10000

CMD ["node", "dist/index.js"]
```

## Preview Environments

Enable in service settings:
1. Pull Request Previews: On
2. Each PR gets unique URL
3. Auto-deleted on merge

## Monorepo Support

### Root Directory

```yaml
services:
  - type: web
    name: api
    rootDir: apps/api
    buildCommand: npm ci && npm run build
    startCommand: npm start
```

### Multiple Services

```yaml
services:
  - type: web
    name: web
    rootDir: apps/web
    buildCommand: npm ci && npm run build
    staticPublishPath: ./dist

  - type: web
    name: api
    rootDir: apps/api
    buildCommand: npm ci && npm run build
    startCommand: npm start
```

## Persistent Disk

```yaml
services:
  - type: web
    name: app
    disk:
      name: data
      mountPath: /data
      sizeGB: 10
```

## Private Services

Internal services not exposed to internet:

```yaml
services:
  - type: pserv  # Private service
    name: internal-api
    runtime: node
    buildCommand: npm ci && npm run build
    startCommand: npm start
```

Access via internal DNS: `internal-api:10000`

## CLI (Render CLI)

```bash
# Install
npm install -g @render/cli

# Login
render login

# Deploy
render deploy

# Logs
render logs --service my-app

# SSH
render ssh my-app
```

See [references/configuration.md](references/configuration.md) for complete render.yaml options.

Files in this skill

  • SKILL.md6.6 KB
  • references/configuration.md7.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.