- Fastify API・Node Worker・PostgreSQL・S3互換ストレージ構成
- ADP ZIPのマルチパートアップロードとManifest検証(パストラバーサル・ZIP爆弾等を拒否)
- manifest.json/signatureは再シリアライズせず元バイト列を保持
- Cloudflare風の運用向け管理ダッシュボード(shadcn/Radix・日本語UI・4ルート)
概要/Sources/アプリ/リリース + ルートランディングページ
- 汎用OIDC SSO・Workspace単位の認可・demo mode
- 匿名配布: /sources/{slug}/source.json, /artifacts/{releaseId}/manifest.json
- Docker Compose対応
57 lines
1.5 KiB
Markdown
57 lines
1.5 KiB
Markdown
# AltDock
|
|
|
|
AltDock is a self-hostable, multi-tenant hosting service for AltStore PAL
|
|
Alternative Distribution Packages (ADPs). Upload the original ADP ZIP, validate
|
|
its manifest and asset set, then publish a PAL-compatible Source JSON URL.
|
|
|
|
## Run locally without Docker
|
|
|
|
```bash
|
|
npm install
|
|
cp .env.example .env
|
|
npm run dev:api
|
|
```
|
|
|
|
With no `DATABASE_URL`, the API uses an in-memory store and local files under
|
|
`.data/storage`. Open the web app in another terminal:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The dashboard is at `http://localhost:3000` and the API is at
|
|
`http://localhost:4000`.
|
|
|
|
## Run the full stack
|
|
|
|
```bash
|
|
docker compose up
|
|
```
|
|
|
|
This starts PostgreSQL, MinIO, the API, the ADP worker, and the web app. The
|
|
MinIO console is available at `http://localhost:9001` with the credentials in
|
|
`docker-compose.yml`.
|
|
|
|
## Production identity
|
|
|
|
Set `AUTH_MODE=oidc` and configure `OIDC_ISSUER_URL`, `OIDC_CLIENT_ID`,
|
|
`OIDC_CLIENT_SECRET`, `OIDC_REDIRECT_URI`, and a random `SESSION_SECRET`. The
|
|
demo mode is intentionally enabled by default for local development only.
|
|
|
|
## ADP workflow
|
|
|
|
1. Submit the app for Notarization and download the completed ADP ZIP.
|
|
2. Upload the original ZIP to AltDock; do not prettify or rewrite its files.
|
|
3. Review the parsed bundle ID, Apple Item ID, version, build, and asset paths.
|
|
4. Publish the release and copy the Source URL into AltStore PAL.
|
|
|
|
Published artifacts are served at `/artifacts/{releaseId}/{relativePath}` and
|
|
the Source JSON is served at `/sources/{slug}/source.json`.
|
|
|
|
## Checks
|
|
|
|
```bash
|
|
npm run lint
|
|
npm test
|
|
```
|