# SkullOS mirror root

このディレクトリは `MIRROR_LAYOUT.ja.md` に沿った SkullOS pacman mirror です。

## Binary repository

pacman が読む repository はここです。

```text
skullos/os/x86_64/
```

SkullOS 側の `/etc/pacman.conf` は次の形を想定します。

```ini
[skullos]
Server = https://mirror.skullos.c30.life/$repo/os/$arch
```

ローカルで試す場合:

```sh
docker compose -f compose.yml -f compose.local.yml up -d mirror
```

QEMU user network から試す場合は SkullOS 側を一時的にこうします。

```ini
[skullos]
Server = http://10.0.2.2:8080/$repo/os/$arch
```

## Current package

- `linux-skullos-7.0.2-1-x86_64.pkg.tar.zst`
- `skull-shell-0.1.0.r7.gd1c6715-1-x86_64.pkg.tar.zst`

DB は `repo-add` で生成済みです。

```text
skullos.db
skullos.db.tar.zst
skullos.files
skullos.files.tar.zst
```

package を追加または差し替えたら、次を実行してください。

```sh
./scripts/update-repo.sh
```

## Docker + Caddy + cloudflared

Cloudflare Tunnel で公開する場合は、Cloudflare Zero Trust で tunnel token を作って `.env` に入れます。

```sh
cp .env.example .env
$EDITOR .env
docker compose --env-file .env up -d
```

この構成では Caddy は host port を公開せず、Docker network 内だけで `mirror:80` として待ち受けます。`cloudflared` も Docker container として起動し、その `mirror:80` へ接続します。

Cloudflare 側の public hostname の service は次の向きにしてください。

```text
http://mirror:80
```

ローカルでも browser/curl で確認したい場合だけ、local override を重ねます。

```sh
docker compose --env-file .env -f compose.yml -f compose.local.yml up -d mirror
curl -I http://127.0.0.1:8080/skullos/os/x86_64/skullos.db.tar.zst
```

## Source availability

GPL/LGPL などへの対応と再現性のため、対応する source/build recipe は `sources/` に置いています。

```text
sources/skull-shell/
sources/linux/
sources/manifests/
```

今回の構築内容は `sources/manifests/skullos-2026-04-30-source-manifest.txt` を見てください。
