Sign inSign up

bewayio/hostcontrol

By bewayio

•Updated about 1 month ago

Self-hosted Docker deployment & domain management — simple alternative to Kubernetes/PaaS.

Image
Integration & delivery
Developer tools
Web servers
0

1.4K

bewayio/hostcontrol repository overview

⁠Beway Host Control

All-in-one self-hosted platform to deploy and manage Docker containers on your own server — a lightweight alternative to Kubernetes/PaaS for teams who want simple, predictable domain and deployment management without the operational overhead.

One image ships the full stack: frontend (Vite), backend API (Go), and nginx — all on a single exposed port.

⁠Quick start

curl -fsSL https://beway.io/install.sh | bash

Open http://your_ip:8081.

⁠First run

There's no admin bootstrapped through environment variables. On first start, as soon as no admin account exists yet in the database, the app automatically enables /install — a one-time setup wizard where you create the first admin (email + password) and confirm the Docker host's reachable IP address (used by containers to reach back to the host). Once that admin is created, /install locks itself out (409 already installed) and you're redirected to /login.

To protect this setup step on a publicly reachable host, set INSTALL_TOKEN — /install will then require that same value before creating the admin.

⁠What's inside the container

ServicePortDescription
nginxFRONTEND_PORT (8081)Serves the built frontend and proxies /api/ to the backend
APIBACKEND_PORT (8082)Go backend, bound to 127.0.0.1 only — not exposed directly

⁠Environment variables

Required — database (the image does not bundle a database):

VariableDescription
MYSQL_DSNFull DSN (recommended if the password has special characters)
or MYSQL_USER, MYSQL_PASSWORD, MYSQL_HOST, MYSQL_PORT, MYSQL_DATABASEIndividual fields to build the DSN

Required — object storage (avatars and deploy artifacts):

VariableDescription
MINIO_ENDPOINThost:port of a MinIO or S3-compatible endpoint
MINIO_ROOT_USER / MINIO_ACCESS_KEYAccess key
MINIO_ROOT_PASSWORD / MINIO_SECRET_KEYSecret key
MINIO_USE_SSLtrue/false, defaults to false

Recommended for production:

VariableDescription
JWT_SECRETSigning secret for session tokens
CREDENTIALS_ENCRYPTION_KEYBase64, 32 bytes (openssl rand -base64 32)
SERVER_KEY_SALTPer-installation salt

Ports and networking:

VariableDefaultDescription
FRONTEND_PORT8081nginx (UI)
BACKEND_PORT8082Go API, loopback only
APP_URL(empty)Public hostname when running behind Traefik

Other common options: INSTALL_TOKEN (require a token on the first-run /install setup, see below), DOCKER_HOST (mount the Docker socket to enable deploys), CORS_ORIGIN, TRAEFIK_ACME_CERT_RESOLVER / ACME_EMAIL (for automatic Let's Encrypt on a remote Traefik).

⁠Healthcheck

GET http://localhost:8081/health

⁠Tags

TagSource
latest / X.Y.ZLatest tagged release from main
X.Y.Z-developLatest build from develop
  • Full docs & API reference: https://beway.io/docs
  • Source & issues: private repository — support at [email protected]

Tag summary

Content type

Image

Digest

sha256:3897c76e3…

Size

66.2 MB

Last updated

about 1 month ago

docker pull bewayio/hostcontrol