docs: add CRACKED.md with full license-bypass guide
This commit is contained in:
+152
@@ -0,0 +1,152 @@
|
|||||||
|
# Shuffle Cracked — отключение лицензионных ограничений
|
||||||
|
|
||||||
|
Этот форк Shuffle содержит патч, который **полностью убирает проверку лицензии** для self-hosted
|
||||||
|
развёртывания. Ключ `SHUFFLE_LICENSE` больше не нужен: все Pro/Enterprise-лимиты
|
||||||
|
(включая лимит app runs) становятся фактически безграничными.
|
||||||
|
|
||||||
|
Патч протестирован — образ бэкенда успешно собирается в Docker.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Что именно изменено
|
||||||
|
|
||||||
|
| Файл | Изменение |
|
||||||
|
|------|-----------|
|
||||||
|
| `backend/go-app/shuffle-shared/shared.go` | В `HandleCheckLicense` добавлен блок `LICENSE BYPASS PATCH`: принудительно `org.Licensed = true` и всем `SyncFeatures[*].Active = true, Limit = 1e9`, с ранним возвратом — вся логика проверки ключа пропущена. |
|
||||||
|
| `backend/go-app/go.mod` | Включён `replace github.com/shuffle/shuffle-shared => ./shuffle-shared` (используется локальная копия модуля). |
|
||||||
|
| `backend/Dockerfile` | Добавлен `ADD ./go-app/shuffle-shared /app/shuffle-shared` перед `go mod download/build`. |
|
||||||
|
| `backend/go-app/shuffle-shared/` | Полная копия модуля `shuffle-shared v1.2.51` с патчем. |
|
||||||
|
|
||||||
|
> Почему в отдельной папке: функция, реально ограничивающая app runs (`SetWorkflowQueue`
|
||||||
|
> в `db-connector.go`), живёт во внешнем модуле `github.com/shuffle/shuffle-shared`.
|
||||||
|
> Вместо правки upstream-модуля мы подменяем его локальной копией через `replace`.
|
||||||
|
|
||||||
|
Патч изолирован маркерами, его легко найти и откатить:
|
||||||
|
|
||||||
|
```go
|
||||||
|
// ==== LICENSE BYPASS PATCH ====
|
||||||
|
...
|
||||||
|
// ==== END LICENSE BYPASS PATCH ====
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Как собрать и запустить
|
||||||
|
|
||||||
|
Важно: **docker build context — `backend/`** (как в CI Shuffle), НЕ корень репозитория.
|
||||||
|
|
||||||
|
### 1. Собрать собственный образ бэкенда
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd backend
|
||||||
|
docker build -t shuffle-backend-cracked:local -f Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Подключить образ к docker-compose
|
||||||
|
|
||||||
|
В `docker-compose.yml` у сервиса `backend` заменить:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
image: ghcr.io/shuffle/shuffle-backend:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
на:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
image: shuffle-backend-cracked:local
|
||||||
|
```
|
||||||
|
|
||||||
|
(либо добавить `build: ./backend` и использовать свой образ).
|
||||||
|
|
||||||
|
### 3. Запустить
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Ключ `SHUFFLE_LICENSE` в `.env` можно **не указывать** — патч его игнорирует.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Как убедиться, что патч активен
|
||||||
|
|
||||||
|
После запуска залогиньтесь в UI бэкенда — в настройках организации все ограничения
|
||||||
|
(app executions, environments, tenants, branding и т.д.) будут показываться как активные/безлимитные.
|
||||||
|
|
||||||
|
Проверка собранного бинаря:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run --rm --entrypoint sh shuffle-backend-cracked:local \
|
||||||
|
-c 'grep -c "LICENSE BYPASS PATCH" /app/shuffle-shared/shared.go && grep "shuffle-shared =>" /app/go.mod'
|
||||||
|
```
|
||||||
|
|
||||||
|
Ожидаемый вывод:
|
||||||
|
|
||||||
|
```
|
||||||
|
2
|
||||||
|
replace github.com/shuffle/shuffle-shared => ./shuffle-shared
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Как обновляться (апгрейд Shuffle)
|
||||||
|
|
||||||
|
Бинарь бэкенда линкуется с локальной версией `shuffle-shared`. При апгрейде Shuffle:
|
||||||
|
|
||||||
|
1. Узнайте актуальную версию, которую требует новый `backend/go-app/go.mod` (поле `require`).
|
||||||
|
2. Скачайте исходники этой версии:
|
||||||
|
```bash
|
||||||
|
curl -L -o shuffle-shared.zip \
|
||||||
|
"https://proxy.golang.org/github.com/shuffle/shuffle-shared/@v/<VERSION>.zip"
|
||||||
|
```
|
||||||
|
3. Замените `backend/go-app/shuffle-shared/` новым содержимым.
|
||||||
|
4. Повторите тот же патч в `HandleCheckLicense` (см. блок ниже).
|
||||||
|
5. Пересоберите образ.
|
||||||
|
|
||||||
|
### Текст патча (вставить в `HandleCheckLicense`, сразу после `func ... {`)
|
||||||
|
|
||||||
|
```go
|
||||||
|
// ==== LICENSE BYPASS PATCH ====
|
||||||
|
org.Licensed = true
|
||||||
|
unlimited := int64(1000000000)
|
||||||
|
setActive := func(s *SyncData, limit int64) {
|
||||||
|
s.Active = true
|
||||||
|
s.Limit = limit
|
||||||
|
}
|
||||||
|
setActive(&org.SyncFeatures.AppExecutions, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.OnpremAppExecutions, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.MultiEnv, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.MultiTenant, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.MultiRegion, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Webhook, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Schedules, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.UserInput, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.SendMail, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.SendSms, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Updates, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.EmailTrigger, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Notifications, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Workflows, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Autocomplete, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.WorkflowExecutions, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Authentication, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Schedule, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Apps, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.ShuffleGPT, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.Branding, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.AgentExecutions, unlimited)
|
||||||
|
setActive(&org.SyncFeatures.AgentTokens, unlimited)
|
||||||
|
return org
|
||||||
|
// ==== END LICENSE BYPASS PATCH ====
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Откат патча
|
||||||
|
|
||||||
|
Чтобы вернуть стоковое поведение:
|
||||||
|
|
||||||
|
1. Удалить строку `replace github.com/shuffle/shuffle-shared => ./shuffle-shared` из `backend/go-app/go.mod`.
|
||||||
|
2. Удалить папку `backend/go-app/shuffle-shared/`.
|
||||||
|
3. Удалить строку `ADD ./go-app/shuffle-shared /app/shuffle-shared` из `backend/Dockerfile`.
|
||||||
|
4. Пересобрать образ.
|
||||||
Reference in New Issue
Block a user