Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Like Vercel, but open source and for all languages.

License

NotificationsYou must be signed in to change notification settings

hunvreus/devpush

Repository files navigation

An open-source and self-hostable alternative to Vercel, Render, Netlify and the likes. It allows you to build and deploy any app (Python, Node.js, PHP, ...) with zero-downtime updates, real-time logs, team management, customizable environments and domains, etc.

A screenshot of a deployment in /dev/push.

Key features

  • Git-based deployments: Push to deploy from GitHub with zero-downtime rollouts and instant rollback.
  • Multi-language support: Python, Node.js, PHP... basically anything that can run on Docker.
  • Environment management: Multiple environments with branch mapping and encrypted environment variables.
  • Real-time monitoring: Live and searchable build and runtime logs.
  • Team collaboration: Role-based access control with team invitations and permissions.
  • Custom domains: Support for custom domain and automatic Let's Encrypt SSL certificates.
  • Self-hosted and open source: Run on your own servers, MIT licensed.

Prerequisites

  • Server: Ubuntu 20.04+ or Debian 11+ with SSH access and sudo privileges. AHetzner CPX31 works well.
  • DNS: We recommendCloudflare.
  • GitHub account: You'll create a GitHub App for login and repository access.
  • Email provider: AResend account for login emails and invitations.

Quickstart

⚠️ Supported on Ubuntu/Debian. Other distros may work but aren't officially supported (yet).

  1. Install on a fresh server:
curl -fsSL https://install.devpu.sh| sudo bash
  1. Create a GitHub App atdevpu.sh/docs/guides/create-github-app

  2. Configure by editing/var/lib/devpush/.env with your GitHub App credentials and domains.

  3. Set DNS:

    • Aexample.com → server IP (app hostname)
    • A*.example.com → server IP (deployments)
  4. Start the service:

sudo systemctl start devpush.service

For more information, including manual installation or updates, refer tothe documentation.

Development

Prerequisites: Docker and Docker Compose v2+. On macOS,Colima works well as an alternative to Docker Desktop.

git clone https://github.com/hunvreus/devpush.gitcd devpushmkdir -p datacp .env.dev.example data/.env# Edit data/.env with your GitHub App credentials

Start the stack:

./scripts/start.sh

The stack auto-detects development mode on macOS and enables hot reloading. Data is stored in./data/.

Key scripts:

  • ./scripts/start.sh /stop.sh /restart.sh — manage the stack
  • ./scripts/compose.sh logs -f app — view logs
  • ./scripts/db-generate.sh — create database migration
  • ./scripts/clean.sh — remove all Docker resources and data

SeeARCHITECTURE.md for codebase structure.

Documentation

Seedevpu.sh/docs for installation, configuration, and usage. For technical details, seeARCHITECTURE.md.

Support the project

Scripts

ScriptWhat it does
scripts/backup.shCreate backup of data directory, database, and code metadata (--output <file>,--verbose)
scripts/build-runners.shBuild runner images (--no-cache,--image <name>)
scripts/clean.shStop stack and remove all Docker resources and data (--keep-docker,--keep-data,--yes)
scripts/compose.shDocker compose wrapper with correct files/env (--)
scripts/db-generate.shGenerate Alembic migration (prompts for message)
scripts/db-migrate.shApply Alembic migrations (--timeout <sec>)
scripts/install.shServer setup: Docker, user, clone repo, .env, systemd (--repo <url>,--ref <ref>,--yes,--no-telemetry,--verbose)
scripts/restart.shRestart services (--no-migrate)
scripts/restore.shRestore from backup archive (--archive <file>,--no-db,--no-data,--no-code,--no-restart,--no-backup,--remove-runners,--timeout <sec>,--yes,--verbose)
scripts/start.shStart stack (--no-migrate,--timeout <sec>,--verbose)
scripts/status.shShow stack status
scripts/stop.shStop services (--hard)
scripts/uninstall.shUninstall from server (--yes,--skip-backup,--no-telemetry,--verbose)
scripts/update.shUpdate by tag (--ref <tag>,--all,--full,--components <csv>,--no-migrate,--no-telemetry,--yes,--verbose)

Environment variables

VariableDescription
SECRET_KEYApp secret for sessions/CSRF. Auto-generated by install.sh.
ENCRYPTION_KEYFernet key for encrypting secrets. Auto-generated by install.sh.
POSTGRES_PASSWORDPostgreSQL password. Auto-generated by install.sh.
SERVICE_UIDContainer user UID. Auto-set to match host user.
SERVICE_GIDContainer user GID. Auto-set to match host user.
SERVER_IPPublic IP of the server. Auto-detected by install.sh.
CERT_CHALLENGE_PROVIDERACME challenge provider:default (HTTP-01) orcloudflare,route53,gcloud,digitalocean,azure (DNS-01). Default:default.
GITHUB_APP_IDGitHub App ID.
GITHUB_APP_NAMEGitHub App name.
GITHUB_APP_PRIVATE_KEYGitHub App private key (PEM format, use\n for newlines).
GITHUB_APP_WEBHOOK_SECRETGitHub webhook secret.
GITHUB_APP_CLIENT_IDGitHub OAuth client ID.
GITHUB_APP_CLIENT_SECRETGitHub OAuth client secret.
APP_HOSTNAMEDomain for the app (e.g.,example.com).
DEPLOY_DOMAINDomain for deployments (wildcard root). No default—set explicitly (e.g.,deploy.example.com).
LE_EMAILEmail for Let's Encrypt notifications.
EMAIL_SENDER_ADDRESSEmail sender for invites/login.
RESEND_API_KEYAPI key forResend.
GOOGLE_CLIENT_IDGoogle OAuth client ID (optional).
GOOGLE_CLIENT_SECRETGoogle OAuth client secret (optional).
APP_NAMEDisplay name. Default:/dev/push.
APP_DESCRIPTIONApp description.
EMAIL_SENDER_NAMESender display name. Default:/dev/push.
POSTGRES_DBDatabase name. Default:devpush.
POSTGRES_USERDatabase user. Default:devpush-app.
REDIS_URLRedis URL. Default:redis://redis:6379.
DOCKER_HOSTDocker API. Default:tcp://docker-proxy:2375.
DATA_DIRData directory. Default:/var/lib/devpush.
APP_DIRCode directory. Default:/opt/devpush.
DEFAULT_CPUSDefault CPU limit per deployment. No limit if not provided.
MAX_CPUSMaximum allowed CPU override per project. Used only whenDEFAULT_CPUS is set. Required to let user customize CPU.
DEFAULT_MEMORY_MBDefault memory limit (MB) per deployment. No limit if not provided.
MAX_MEMORY_MBMaximum allowed memory override per project. Used only whenDEFAULT_MEMORY_MB is set. Required to let user customize memory.
JOB_TIMEOUTJob timeout (seconds). Default:320.
DEPLOYMENT_TIMEOUTDeployment timeout (seconds). Default:300.
LOG_LEVELLogging level. Default:WARNING.

License

MIT


[8]ページ先頭

©2009-2025 Movatter.jp