Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions apps/fizzy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Fizzy

Fizzy 是 37signals 推出的 Kanban 项目管理工具,用于组织议题、想法和团队工作。
该应用包使用 Fizzy 官方 Docker 镜像,并将数据库、队列、缓存和附件统一保存在
安装实例的 `data` 目录中。

## 安装和首次登录

1. 选择一个未占用的 HTTP 端口。
2. 将 `BASE_URL` 设置为浏览器实际访问 Fizzy 的完整地址。
3. `SECRET_KEY_BASE` 由 1Panel 自动生成,安装后不要修改。
4. 必须填写可用的 SMTP 配置。Fizzy 的注册和登录通过电子邮件验证码完成,只有
邮件投递正常后用户才能完成登录。

## SMTP

Fizzy 自身后台不提供 SMTP 服务器配置页面。请在 1Panel 的 Fizzy 应用参数中填写
发件地址、SMTP 服务器和端口;用户名、密码和 TLS 选项按 SMTP 服务商要求填写。
这些 SMTP 设置以后仍可在 1Panel 中编辑,但每次修改后都必须重启应用;在邮件投递
恢复正常前,用户无法完成邮件验证码登录。

`SMTP_TLS=true` 仅用于要求隐式 TLS 的 SMTPS 服务器,通常使用端口 `465`。
大多数使用 STARTTLS 的服务器应保持 `SMTP_TLS=false`,通常使用端口 `587`。

## 域名和 HTTPS

直接通过 HTTP 端口访问时,请选择 HTTP 模式(`DISABLE_SSL=true`),并将
`BASE_URL` 设置为 `http://` 地址。

Fizzy 容器内部只提供 HTTP。若在 1Panel 网站中创建 HTTPS 反向代理并配置证书,
请在应用参数中选择 HTTPS 模式(`DISABLE_SSL=false`),将 `BASE_URL` 改为最终的
`https://` 地址(例如 `https://fizzy.example.com`),确认反向代理发送
`X-Forwarded-Proto`,然后重启应用。HTTPS 模式会启用 Rails 安全 Cookie、HSTS 和
HTTP 到 HTTPS 的重定向,因此容器的原始 HTTP 端口不再是正常访问路径。

## 数据和备份

所有持久化内容都位于安装实例的 `data` 目录,对应容器内的
`/rails/storage`。备份前建议停止应用,并完整备份该目录。恢复时应恢复完整目录
并保留 UID/GID `1000:1000` 的写权限。

## 版本说明

该应用使用 `ghcr.io/basecamp/fizzy:latest` 滚动镜像。上游更新可能在重新拉取
镜像后直接生效,因此升级前必须备份 `data` 目录。

## 许可证

Fizzy 的源代码采用 O’Saasy License。该许可证允许自托管、修改和分发,但限制将
Fizzy 作为竞争性的托管或 SaaS 服务提供。它不是 OSI 批准的标准开源许可证;
部署前请阅读上游 `LICENSE.md`。
61 changes: 61 additions & 0 deletions apps/fizzy/README_en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Fizzy

Fizzy is a Kanban project management tool from 37signals for organizing issues,
ideas, and team work. This package uses the official Fizzy Docker image and
stores its databases, queues, cache, and attachments in the installation's
`data` directory.

## Installation and first sign-in

1. Choose an unused HTTP port.
2. Set `BASE_URL` to the complete URL that browsers use to reach Fizzy.
3. 1Panel generates `SECRET_KEY_BASE`; do not change it after installation.
4. A working SMTP configuration is required. Fizzy uses email verification
codes for sign-up and sign-in, so users cannot complete email-code login
until mail delivery works.

## SMTP

Fizzy does not provide an SMTP server configuration page in its own
administration UI. In the Fizzy application parameters in 1Panel, enter the
sender address, SMTP server, and port; provide the username, password, and TLS
option as required by your SMTP provider. These settings may be edited later in
1Panel, but restart the application after every change; users cannot complete
email-code login until mail delivery works.

Set `SMTP_TLS=true` only for an SMTP server that requires implicit TLS, usually
on port `465`. Most servers using STARTTLS should keep `SMTP_TLS=false`, usually
on port `587`.

## Domain and HTTPS

For direct access through the HTTP port, select HTTP mode (`DISABLE_SSL=true`)
and set `BASE_URL` to an `http://` address.

The Fizzy container serves HTTP only. When deploying behind a 1Panel HTTPS
reverse proxy with a managed certificate, select HTTPS mode
(`DISABLE_SSL=false`), set `BASE_URL` to the final `https://` address (for
example, `https://fizzy.example.com`), ensure the proxy sends
`X-Forwarded-Proto`, and restart the application. HTTPS mode enables Rails
secure cookies, HSTS, and HTTP-to-HTTPS redirects, so the raw HTTP port is no
longer the normal access path.

## Data and backups

All persistent content is in the installation's `data` directory, mounted at
`/rails/storage` inside the container. Stop the application before a backup,
copy the complete directory, and preserve write access for UID/GID `1000:1000`
when restoring it.

## Version policy

This application uses the rolling image `ghcr.io/basecamp/fizzy:latest`.
Upstream changes can take effect after the image is pulled again, so back up the
`data` directory before updating.

## License

Fizzy's source is available under the O'Saasy License. It permits self-hosting,
modification, and distribution, but restricts offering Fizzy as a competing
hosted or SaaS service. It is not an OSI-approved open-source license; read the
upstream `LICENSE.md` before deployment.
34 changes: 34 additions & 0 deletions apps/fizzy/data.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Fizzy
tags:
- 实用工具
title: 可自托管的 Kanban 项目管理工具
description: 可自托管的 Kanban 项目管理工具
additionalProperties:
key: fizzy
name: Fizzy
tags:
- Tool
shortDescZh: 可自托管的 Kanban 项目管理工具
shortDescEn: A self-hosted Kanban project management tool
description:
en: A self-hosted Kanban project management tool
es-es: Una herramienta de gestión de proyectos Kanban autoalojada
fa: 'ابزار مدیریت پروژه کانبان خودمیزبان'
ja: セルフホスト型のカンバンプロジェクト管理ツール
ms: Alat pengurusan projek Kanban hos sendiri
pt-br: Uma ferramenta de gerenciamento de projetos Kanban auto-hospedada
ru: Самостоятельно размещаемый инструмент управления проектами Kanban
ko: 셀프 호스팅 Kanban 프로젝트 관리 도구
zh-Hant: 可自託管的 Kanban 專案管理工具
zh: 可自托管的 Kanban 项目管理工具
tr: Kendi sunucunuzda barındırabileceğiniz Kanban proje yönetim aracı
type: website
crossVersionUpdate: true
limit: 0
recommend: 0
website: https://fizzy.do/
github: https://github.com/basecamp/fizzy
document: https://github.com/basecamp/fizzy/blob/main/docs/docker-deployment.md
architectures:
- amd64
- arm64
205 changes: 205 additions & 0 deletions apps/fizzy/latest/data.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
additionalProperties:
formFields:
- default: 3000
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: HTTP Port
labelZh: HTTP 端口
label:
en: HTTP Port
es-es: Puerto HTTP
fa: 'پورت HTTP'
ja: HTTP ポート
ms: Port HTTP
pt-br: Porta HTTP
ru: HTTP-порт
ko: HTTP 포트
zh-Hant: HTTP 埠
zh: HTTP 端口
tr: HTTP Bağlantı Noktası
required: true
rule: paramPort
type: number
- default: http://localhost:3000
edit: true
envKey: BASE_URL
labelEn: Base URL
labelZh: 外部访问地址
label:
en: Base URL
es-es: URL base
fa: 'نشانی پایه'
ja: ベース URL
ms: URL Asas
pt-br: URL base
ru: Базовый URL
ko: 기본 URL
zh-Hant: 外部訪問地址
zh: 外部访问地址
tr: Temel URL
required: true
rule: paramHttp
type: text
- default: fizzy
envKey: SECRET_KEY_BASE
labelEn: Secret Key Base
labelZh: 加密密钥
label:
en: Secret Key Base
es-es: Clave secreta base
fa: 'کلید رمزنگاری پایه'
ja: シークレットキーベース
ms: Asas Kunci Rahsia
pt-br: Chave secreta base
ru: Базовый секретный ключ
ko: 기본 비밀 키
zh-Hant: 加密金鑰
zh: 加密密钥
tr: Temel Gizli Anahtar
random: true
required: true
type: password
- default: "true"
edit: true
envKey: DISABLE_SSL
labelEn: HTTPS Mode
labelZh: HTTPS 模式
label:
en: HTTPS Mode
es-es: Modo HTTPS
fa: 'حالت HTTPS'
ja: HTTPS モード
ms: Mod HTTPS
pt-br: Modo HTTPS
ru: Режим HTTPS
ko: HTTPS 모드
zh-Hant: HTTPS 模式
zh: HTTPS 模式
tr: HTTPS Modu
required: true
type: select
values:
- label: Direct HTTP (true)
value: "true"
- label: HTTPS Reverse Proxy (false)
value: "false"
- default: ""
edit: true
envKey: MAILER_FROM_ADDRESS
labelEn: Mail From Address
labelZh: 发件地址
label:
en: Mail From Address
es-es: Dirección del remitente
fa: 'نشانی فرستنده ایمیل'
ja: メール送信元アドレス
ms: Alamat Pengirim E-mel
pt-br: Endereço do remetente
ru: Адрес отправителя
ko: 메일 발신 주소
zh-Hant: 發件地址
zh: 发件地址
tr: Gönderen E-posta Adresi
required: true
type: text
- default: ""
edit: true
envKey: SMTP_ADDRESS
labelEn: SMTP Server
labelZh: SMTP 服务器
label:
en: SMTP Server
es-es: Servidor SMTP
fa: 'سرور SMTP'
ja: SMTP サーバー
ms: Pelayan SMTP
pt-br: Servidor SMTP
ru: SMTP-сервер
ko: SMTP 서버
zh-Hant: SMTP 伺服器
zh: SMTP 服务器
tr: SMTP Sunucusu
required: true
type: text
- default: 587
edit: true
envKey: SMTP_PORT
labelEn: SMTP Port
labelZh: SMTP 端口
label:
en: SMTP Port
es-es: Puerto SMTP
fa: 'پورت SMTP'
ja: SMTP ポート
ms: Port SMTP
pt-br: Porta SMTP
ru: SMTP-порт
ko: SMTP 포트
zh-Hant: SMTP 埠
zh: SMTP 端口
tr: SMTP Bağlantı Noktası
required: true
rule: paramPort
type: number
- default: ""
edit: true
envKey: SMTP_USERNAME
labelEn: SMTP Username
labelZh: SMTP 用户名
label:
en: SMTP Username
es-es: Usuario SMTP
fa: 'نام کاربری SMTP'
ja: SMTP ユーザー名
ms: Nama Pengguna SMTP
pt-br: Usuário SMTP
ru: Имя пользователя SMTP
ko: SMTP 사용자 이름
zh-Hant: SMTP 使用者名稱
zh: SMTP 用户名
tr: SMTP Kullanıcı Adı
required: false
type: text
- default: ""
edit: true
envKey: SMTP_PASSWORD
labelEn: SMTP Password
labelZh: SMTP 密码
label:
en: SMTP Password
es-es: Contraseña SMTP
fa: 'رمز عبور SMTP'
ja: SMTP パスワード
ms: Kata Laluan SMTP
pt-br: Senha SMTP
ru: Пароль SMTP
ko: SMTP 비밀번호
zh-Hant: SMTP 密碼
zh: SMTP 密码
tr: SMTP Parolası
required: false
type: password
- default: "false"
edit: true
envKey: SMTP_TLS
labelEn: SMTP Implicit TLS
labelZh: SMTP 隐式 TLS
label:
en: SMTP Implicit TLS
es-es: TLS implícito SMTP
fa: 'TLS ضمنی SMTP'
ja: SMTP 暗黙的 TLS
ms: TLS Tersirat SMTP
pt-br: TLS implícito SMTP
ru: Неявный TLS для SMTP
ko: SMTP 암시적 TLS
zh-Hant: SMTP 隱式 TLS
zh: SMTP 隐式 TLS
tr: SMTP Örtük TLS
required: false
type: select
values:
- label: "false"
value: "false"
- label: "true"
value: "true"
Empty file added apps/fizzy/latest/data/.gitkeep
Empty file.
28 changes: 28 additions & 0 deletions apps/fizzy/latest/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
services:
fizzy:
image: ghcr.io/basecamp/fizzy:latest
container_name: ${CONTAINER_NAME}
restart: unless-stopped
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_HTTP}:80
entrypoint: ["/usr/local/bin/fizzy-entrypoint", "./bin/thrust", "./bin/rails", "server"]
environment:
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- DISABLE_SSL=${DISABLE_SSL}
- BASE_URL=${BASE_URL}
- MAILER_FROM_ADDRESS=${MAILER_FROM_ADDRESS}
- SMTP_ADDRESS=${SMTP_ADDRESS}
- SMTP_PORT=${SMTP_PORT}
- SMTP_USERNAME=${SMTP_USERNAME}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- SMTP_TLS=${SMTP_TLS}
volumes:
- ./data:/rails/storage
- ./scripts/entrypoint.sh:/usr/local/bin/fizzy-entrypoint:ro
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true
11 changes: 11 additions & 0 deletions apps/fizzy/latest/scripts/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/sh

if [ "${SMTP_USERNAME-}" = "" ]; then
unset SMTP_USERNAME
fi

if [ "${SMTP_PASSWORD-}" = "" ]; then
unset SMTP_PASSWORD
fi

exec /rails/bin/docker-entrypoint "$@"
Loading