Files
picpeak/docs/migration-to-org.md
T
Paul Nothaft b9e42591f5 docs: the retired registry path freezes, it does not stop serving (#995)
Closes #985.

README and migration-to-org.md both claimed the old path 'is no longer served'.
It is served — ghcr.io/the-luap/picpeak/backend:latest returns a complete image,
created 2026-05-27, label version: main. The registry responds normally; it just
never receives anything new.

That inaccuracy is what generates reports like #982. Told the path is not
served, an operator runs docker compose pull, watches it succeed, runs docker
rmi and pulls again, watches that succeed too, and concludes the problem lies
somewhere other than their image path. Nothing reports an error anywhere; the
only symptom is an update notice that never resolves.

Say what actually happens — the path freezes rather than failing — and add a
self-diagnosis via docker image inspect on both paths, with the 2026-05-27 date
and the 'main' version label as the tells. MigrationBanner's wording is left
alone: 'no longer being updated' was accurate.

This is the delivery mechanism for #985. There is no in-app channel:
MigrationBanner shipped a month after the freeze, the #993 update-check notice
cannot fire on installs running their own frozen backend, and the changelog
modal that renders release notes shipped two days after the freeze. What reaches
these operators is GitHub, and the GHCR page for the retired package — which
renders this README through the images' own org.opencontainers.image.source
label, so the fix propagates to the dead path's own page automatically.
2026-08-04 17:30:18 +02:00

120 lines
4.0 KiB
Markdown

# Migration: PicPeak moved to its own GitHub organization
PicPeak's repository moved from the maintainer's personal handle to a dedicated
GitHub organization. This is a one-time, operator-facing change. The software
itself is unchanged; only the URLs you pull images from have moved.
## TL;DR — what changed and what you need to do
| | Before | After |
|---|---|---|
| **Repository URL** | `github.com/the-luap/picpeak` | `github.com/PicPeak/picpeak` |
| **Docker images** | `ghcr.io/the-luap/picpeak/{backend,frontend}` | `ghcr.io/picpeak/picpeak/{backend,frontend}` |
| **Branches (active dev)** | `beta` | `main` |
| **Branches (stable channel)** | `main` | `stable` |
**Action required**: update your `docker-compose.yml` to pull from
`ghcr.io/picpeak/picpeak/{backend,frontend}`.
## The old path does not fail — it freezes
This is the part that catches people out. `ghcr.io/the-luap/picpeak/*` **still
serves**; it simply stopped receiving new images on 2026-05-27. So:
- `docker compose pull` succeeds.
- `docker rmi <image>` followed by a fresh pull succeeds.
- You get byte-identical layers every time, because the tag never moves again.
Nothing anywhere reports an error. The only visible symptom is that PicPeak keeps
telling you an update is available and the update never arrives — which reads
like a broken download rather than a retired registry path.
### Am I affected?
```bash
docker image inspect ghcr.io/the-luap/picpeak/backend:latest \
--format '{{.Created}} {{index .Config.Labels "org.opencontainers.image.version"}}'
```
A `Created` date of `2026-05-27` (or a `version` of `main` rather than a `v3.x.y`
tag) means you are on the retired path. Compare against the current image:
```bash
docker image inspect ghcr.io/picpeak/picpeak/backend:latest --format '{{.Created}}'
```
If your compose file still references `the-luap`, the fix below is all you need —
there is nothing wrong with your install.
## Why this changed
The repo lived under a personal GitHub handle since the project began. Moving to
an organization is a one-time housekeeping step that:
- Separates the project's identity from any individual maintainer's account.
- Lets the project add additional maintainers later without re-transferring.
- Matches the convention every other open-source project uses for branch names
(`main` = active development, `stable` = curated production channel).
## docker-compose.yml — exact edit
Find these two lines:
```yaml
image: ghcr.io/the-luap/picpeak/backend:${PICPEAK_CHANNEL:-stable}
# ...
image: ghcr.io/the-luap/picpeak/frontend:${PICPEAK_CHANNEL:-stable}
```
Replace with:
```yaml
image: ghcr.io/picpeak/picpeak/backend:${PICPEAK_CHANNEL:-stable}
# ...
image: ghcr.io/picpeak/picpeak/frontend:${PICPEAK_CHANNEL:-stable}
```
Then:
```bash
docker compose pull
docker compose up -d
```
That's it. No data migration, no config changes, no database changes.
## What auto-redirects (you don't have to change)
GitHub redirects the old repo URL indefinitely, so these all keep working:
- Browser links to `github.com/the-luap/picpeak/...` (issues, PRs, files)
- `git clone https://github.com/the-luap/picpeak.git`
- GitHub API calls to `api.github.com/repos/the-luap/picpeak/...`
Worth updating to the canonical `PicPeak/picpeak` form when convenient, but
nothing breaks if you don't.
## What does NOT auto-redirect
- **GHCR image paths.** `ghcr.io/the-luap/picpeak/*` returns **404** — you must
update your compose file.
## Branch rename
The active-development branch was renamed from `beta``main`, and the previous
`main` (stable channel) was renamed to `stable`. This matches the convention
every other open-source project uses.
If you're a contributor:
- **Feature PRs**: target `main`.
- **Bugfix PRs**: target `main`. If the fix also needs to ship to current stable
users, open a separate small PR against `stable`.
If you're an operator: ignore. Branch names don't affect pulls.
## Got stuck?
Open an issue at https://github.com/PicPeak/picpeak/issues with the error
message and we'll help.