AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Docker 서비스를 자체 VPS에 배포·관리·확장하는 오픈소스 플랫폼, 원클릭 설치·자동 HTTPS·실시간 토폴로지 캔버스
Open-source platform to deploy, manage, and scale Docker services on your own VPS. One-command install, automatic HTTPS, and a live topology canvas.
개발 도구Rust · SvelteGitHub @triandamai온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Shipyard is a self-hosted PaaS built on Docker Swarm and Rust. Deploy from Git or any image, roll back in one click, manage domains with auto-TLS, and monitor your entire cluster — from a dashboard that runs on your own server.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A self-hosted PaaS for deploying and managing containerized applications on your own infrastructure using Docker Swarm and Traefik.
Shipyard gives you a Heroku-like deployment experience on infrastructure you control. Connect your Git repositories, define your services, and Shipyard handles building images, routing traffic, and monitoring deployments — all from a visual topology canvas.README 전문 보기 ↗A self-hosted PaaS for deploying and managing containerized applications on your own infrastructure using Docker Swarm and Traefik.
Shipyard gives you a Heroku-like deployment experience on infrastructure you control. Connect your Git repositories, define your services, and Shipyard handles building images, routing traffic, and monitoring deployments — all from a visual topology canvas.
Key features:
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ Browser │───▶│ SvelteKit │───▶│ Rust/Axum │
│ │ │ (Frontend) │ │ (Backend) │
│ │◀───│ │◀───│ │
│ MQTT WS │ └──────────────┘ └──────┬───────┘
└─────────────┘ │
│ ┌───────┼───────┐
│ │ │ │
▼ ▼ ▼ ▼
┌──────────┐ ┌─────────┐ ┌───┐ ┌────────┐
│ rmqtt │ │Postgres │ │Git│ │Docker │
│ broker │ │ DB │ │ │ │Swarm │
└──────────┘ └─────────┘ └───┘ └────────┘
│
┌────▼────┐
│ Traefik │
└─────────┘
Backend crates (backend/crates/):
| Crate | Purpose |
|---|---|
api | Axum HTTP server, REST endpoints, deployment scheduler |
engine | Deployment execution, Docker image build/push |
db | SQLx migrations and query helpers |
docker | Docker API client wrapper |
docker_worker | Worker for Docker Swarm task polling |
git | Git clone/pull operations |
traefik | Traefik dynamic config generation |
mqtt_broker | MQTT client for publishing events |
common | Shared types, errors, config |
docker swarm init)curl -fsSL https://raw.githubusercontent.com/triandamai/shipyard/main/scripts/install.sh | bash
The installer will:
docker stack deployThe installer is idempotent — re-running it updates the deployment while preserving existing secrets.
All configuration lives in /opt/shipyard/.env after installation.
| Variable | Description |
|---|---|
DOMAIN | Your base domain (e.g. example.com) |
ACME_EMAIL | Email for Let's Encrypt TLS certificates |
SHIPYARD__AUTH__JWT_SECRET | JWT signing secret |
SHIPYARD__DATABASE__URL | PostgreSQL connection string |
SHIPYARD__MQTT__USERNAME | MQTT broker username (for backend) |
SHIPYARD__MQTT__PASSWORD | MQTT broker password (for backend) |
When adding a domain to a service, Shipyard auto-generates a subdomain:
<name>.<public-ip>.nip.io — resolves via nip.io wildcard DNS, no DNS config needed<name>.traefik.me — resolves to 127.0.0.1 via traefik.meReal-time events are delivered over MQTT WebSocket. The broker (rmqtt) is configured to require authentication:
| Image | Description |
|---|---|
triandamai827/shipyard-backend:latest | Rust API server |
triandamai827/shipyard-frontend:latest | SvelteKit frontend |
cd backend
cp .env.example .env # fill in DATABASE_URL etc.
cargo run -p api
cd frontend
cp .env.example .env
npm install
npm run dev
cd backend
cargo run -p db --bin migrate
Pull requests are welcome. For major changes, please open an issue first to discuss what you'd like to change.
git checkout -b feat/my-feature)MIT — Copyright (c) 2025 Trian