feat: add Roundcube app (#4365)

This commit is contained in:
okxlin
2026-06-28 15:05:17 +08:00
committed by GitHub
parent 5174525e29
commit 0ec0fa2cfd
10 changed files with 336 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
# Roundcube
## 产品介绍
Roundcube 是一个开源 Webmail 客户端,可通过浏览器连接已有的 IMAP/SMTP 邮件服务器收发邮件。
## 主要功能
- 通过浏览器访问 IMAP 邮箱
- 使用外部 SMTP 服务器发送邮件
- 支持内置插件、主题和自定义配置
- 使用本地 SQLite 保存 Webmail 元数据
## 访问说明
安装后通过 `http://<服务器 IP>:18090` 访问,实际端口以安装表单中的 `PANEL_APP_PORT_HTTP` 为准。
## Introduction
Roundcube is an open source Webmail client for accessing an existing IMAP and SMTP mail server from a browser.
## Features
- Browser-based IMAP mail access
- Send mail through an external SMTP server
- Built-in plugins, themes and custom configuration support
- Local SQLite metadata storage
## 部署说明
- 本应用使用官方 Docker 镜像 `roundcube/roundcubemail:1.7.1-apache-nonroot`
- 应用分类:邮件服务。
- 支持架构:amd64、arm64。
- Roundcube 只是 Webmail 客户端,不包含邮件服务器。请先准备可用的 IMAP/SMTP 服务,例如已有邮箱服务或应用商店中的 Maddy Mail Server。
## 端口
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| PANEL_APP_PORT_HTTP | Web 访问端口 | 18090 | 是 |
## 数据持久化
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| APP_DATA_DIR | SQLite 数据库、自定义配置和 Enigma 插件数据目录 | ./data | 是 |
升级或迁移前,请先在 1Panel 中备份上述数据目录。
## 参数说明
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| ROUNDCUBEMAIL_DEFAULT_HOST | IMAP 主机,可使用 `tls://``ssl://` 前缀 | ssl://mail.example.com | 是 |
| ROUNDCUBEMAIL_DEFAULT_PORT | IMAP 端口 | 993 | 是 |
| ROUNDCUBEMAIL_SMTP_SERVER | SMTP 主机,可使用 `tls://``ssl://` 前缀 | tls://mail.example.com | 是 |
| ROUNDCUBEMAIL_SMTP_PORT | SMTP 端口 | 587 | 是 |
| ROUNDCUBEMAIL_USERNAME_DOMAIN | 登录用户名自动补全域名,留空表示不补全 | 空 | 否 |
| ROUNDCUBEMAIL_REQUEST_PATH | 反向代理子路径 | / | 是 |
| ROUNDCUBEMAIL_PLUGINS | 启用的内置插件列表 | archive,zipdownload | 是 |
| ROUNDCUBEMAIL_DES_KEY | Roundcube 加密密钥,安装后不要随意修改 | 随机生成 | 是 |
## 使用说明
- 如果 IMAP/SMTP 使用隐式 TLS,主机通常写成 `ssl://mail.example.com`,端口使用 `993``465`
- 如果 IMAP/SMTP 使用 STARTTLS,主机通常写成 `tls://mail.example.com`,端口使用 `143``587`
- `ROUNDCUBEMAIL_DES_KEY` 会影响 Roundcube 保存的加密数据,迁移或重建容器时应保持不变。
- 自定义 Roundcube 配置可放入数据目录的 `config` 子目录,文件名需以 `.php` 结尾。
## 参考资料
- 官网: <https://roundcube.net/>
- 项目仓库: <https://github.com/roundcube/roundcubemail>
- 官方 Docker 镜像文档: <https://github.com/roundcube/roundcubemail-docker>
- 官方镜像: <https://hub.docker.com/r/roundcube/roundcubemail>
+31
View File
@@ -0,0 +1,31 @@
name: Roundcube
tags:
- 邮件服务
title: 现代 Webmail 客户端
description: 现代 Webmail 客户端
additionalProperties:
key: roundcube
name: Roundcube
tags:
- Email
shortDescZh: 现代 Webmail 客户端
shortDescEn: Modern Webmail client
description:
en: A browser-based IMAP Webmail client for existing mail servers.
zh: 面向已有邮件服务器的浏览器 IMAP Webmail 客户端。
zh-Hant: 面向既有郵件伺服器的瀏覽器 IMAP Webmail 用戶端。
ja: 既存のメールサーバー向けのブラウザベース IMAP Webmail クライアントです。
ko: 기존 메일 서버용 브라우저 기반 IMAP Webmail 클라이언트입니다.
ru: Браузерный IMAP Webmail-клиент для существующих почтовых серверов.
ms: Klien Webmail IMAP berasaskan pelayar untuk pelayan mel sedia ada.
pt-br: Cliente Webmail IMAP baseado em navegador para servidores de e-mail existentes.
type: website
crossVersionUpdate: false
limit: 0
recommend: 0
website: https://roundcube.net/
github: https://github.com/roundcube/roundcubemail
document: https://github.com/roundcube/roundcubemail-docker
architectures:
- amd64
- arm64
+11
View File
@@ -0,0 +1,11 @@
PANEL_APP_PORT_HTTP=18090
APP_DATA_DIR=./data
ROUNDCUBEMAIL_DEFAULT_HOST=ssl://mail.example.com
ROUNDCUBEMAIL_DEFAULT_PORT=993
ROUNDCUBEMAIL_SMTP_SERVER=tls://mail.example.com
ROUNDCUBEMAIL_SMTP_PORT=587
ROUNDCUBEMAIL_USERNAME_DOMAIN=
ROUNDCUBEMAIL_REQUEST_PATH=/
ROUNDCUBEMAIL_PLUGINS=archive,zipdownload
ROUNDCUBEMAIL_DES_KEY=roundcube_des_key_change
CONTAINER_NAME=roundcube
+167
View File
@@ -0,0 +1,167 @@
additionalProperties:
formFields:
- default: 18090
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Web Port
labelZh: Web 端口
label:
en: Web Port
zh: Web 端口
zh-Hant: Web 埠
ja: Web ポート
ko: Web 포트
ru: Web-порт
ms: Port Web
pt-br: Porta Web
required: true
rule: paramPort
type: number
- default: ./data
edit: true
envKey: APP_DATA_DIR
labelEn: Data Directory
labelZh: 数据目录
label:
en: Data Directory
zh: 数据目录
zh-Hant: 資料目錄
ja: データディレクトリ
ko: 데이터 디렉터리
ru: Каталог данных
ms: Direktori data
pt-br: Diretorio de dados
required: true
type: text
- default: ssl://mail.example.com
edit: true
envKey: ROUNDCUBEMAIL_DEFAULT_HOST
labelEn: IMAP Host
labelZh: IMAP 主机
label:
en: IMAP Host
zh: IMAP 主机
zh-Hant: IMAP 主機
ja: IMAP ホスト
ko: IMAP 호스트
ru: IMAP-хост
ms: Hos IMAP
pt-br: Host IMAP
required: true
type: text
- default: 993
edit: true
envKey: ROUNDCUBEMAIL_DEFAULT_PORT
labelEn: IMAP Port
labelZh: IMAP 端口
label:
en: IMAP Port
zh: IMAP 端口
zh-Hant: IMAP 埠
ja: IMAP ポート
ko: IMAP 포트
ru: IMAP-порт
ms: Port IMAP
pt-br: Porta IMAP
required: true
rule: paramPort
type: number
- default: tls://mail.example.com
edit: true
envKey: ROUNDCUBEMAIL_SMTP_SERVER
labelEn: SMTP Host
labelZh: SMTP 主机
label:
en: SMTP Host
zh: SMTP 主机
zh-Hant: SMTP 主機
ja: SMTP ホスト
ko: SMTP 호스트
ru: SMTP-хост
ms: Hos SMTP
pt-br: Host SMTP
required: true
type: text
- default: 587
edit: true
envKey: ROUNDCUBEMAIL_SMTP_PORT
labelEn: SMTP Port
labelZh: SMTP 端口
label:
en: SMTP Port
zh: SMTP 端口
zh-Hant: SMTP 埠
ja: SMTP ポート
ko: SMTP 포트
ru: SMTP-порт
ms: Port SMTP
pt-br: Porta SMTP
required: true
rule: paramPort
type: number
- default: ""
edit: true
envKey: ROUNDCUBEMAIL_USERNAME_DOMAIN
labelEn: Login Domain
labelZh: 登录域名
label:
en: Login Domain
zh: 登录域名
zh-Hant: 登入網域
ja: ログインドメイン
ko: 로그인 도메인
ru: Домен входа
ms: Domain log masuk
pt-br: Dominio de login
required: false
type: text
- default: /
edit: true
envKey: ROUNDCUBEMAIL_REQUEST_PATH
labelEn: Request Path
labelZh: 请求路径
label:
en: Request Path
zh: 请求路径
zh-Hant: 請求路徑
ja: リクエストパス
ko: 요청 경로
ru: Путь запроса
ms: Laluan permintaan
pt-br: Caminho de requisicao
required: true
type: text
- default: archive,zipdownload
edit: true
envKey: ROUNDCUBEMAIL_PLUGINS
labelEn: Built-in Plugins
labelZh: 内置插件
label:
en: Built-in Plugins
zh: 内置插件
zh-Hant: 內建外掛
ja: 組み込みプラグイン
ko: 기본 제공 플러그인
ru: Встроенные плагины
ms: Pemalam terbina dalam
pt-br: Plugins integrados
required: true
type: text
- default: roundcube_des_key_change
edit: true
envKey: ROUNDCUBEMAIL_DES_KEY
labelEn: Encryption Key
labelZh: 加密密钥
label:
en: Encryption Key
zh: 加密密钥
zh-Hant: 加密金鑰
ja: 暗号化キー
ko: 암호화 키
ru: Ключ шифрования
ms: Kunci penyulitan
pt-br: Chave de criptografia
random: true
required: true
rule: paramComplexity
type: password
+37
View File
@@ -0,0 +1,37 @@
services:
roundcube:
image: "roundcube/roundcubemail:1.7.1-apache-nonroot"
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:8000"
environment:
- ROUNDCUBEMAIL_DB_TYPE=sqlite
- ROUNDCUBEMAIL_DB_DIR=/var/roundcube/db
- ROUNDCUBEMAIL_DB_NAME=roundcube
- ROUNDCUBEMAIL_DEFAULT_HOST=${ROUNDCUBEMAIL_DEFAULT_HOST}
- ROUNDCUBEMAIL_DEFAULT_PORT=${ROUNDCUBEMAIL_DEFAULT_PORT}
- ROUNDCUBEMAIL_SMTP_SERVER=${ROUNDCUBEMAIL_SMTP_SERVER}
- ROUNDCUBEMAIL_SMTP_PORT=${ROUNDCUBEMAIL_SMTP_PORT}
- ROUNDCUBEMAIL_USERNAME_DOMAIN=${ROUNDCUBEMAIL_USERNAME_DOMAIN}
- ROUNDCUBEMAIL_REQUEST_PATH=${ROUNDCUBEMAIL_REQUEST_PATH}
- ROUNDCUBEMAIL_PLUGINS=${ROUNDCUBEMAIL_PLUGINS}
- ROUNDCUBEMAIL_SKIN=elastic
- ROUNDCUBEMAIL_DES_KEY=${ROUNDCUBEMAIL_DES_KEY}
volumes:
- "${APP_DATA_DIR}/db:/var/roundcube/db"
- "${APP_DATA_DIR}/config:/var/roundcube/config:ro"
- "${APP_DATA_DIR}/enigma:/var/roundcube/enigma"
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:8000/ >/dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 10
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail
DATA_DIR="${APP_DATA_DIR:-./data}"
mkdir -p "${DATA_DIR}/db" "${DATA_DIR}/config" "${DATA_DIR}/enigma"
chown -R 33:33 "${DATA_DIR}/db" "${DATA_DIR}/enigma" 2>/dev/null || true
chmod 755 "${DATA_DIR}/config" 2>/dev/null || true
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
docker-compose down --volumes
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

+14
View File
@@ -0,0 +1,14 @@
{
"repository": "https://github.com/roundcube/roundcubemail",
"dockerRepository": "https://github.com/roundcube/roundcubemail-docker",
"dockerDocs": "https://github.com/roundcube/roundcubemail-docker/blob/master/README.md",
"composeFile": "https://github.com/roundcube/roundcubemail-docker/blob/master/examples/docker-compose-simple.yaml",
"imageRegistry": "https://hub.docker.com/r/roundcube/roundcubemail",
"release": "https://github.com/roundcube/roundcubemail/releases/tag/1.7.1",
"notes": [
"Issue request: https://github.com/okxlin/appstore/issues/439",
"Official Docker README documents the roundcube/roundcubemail image, IMAP/SMTP environment variables, SQLite persistence at /var/roundcube/db, custom config files at /var/roundcube/config, and nonroot image behavior.",
"The app uses the official 1.7.1-apache-nonroot image, maps the nonroot HTTP port 8000, and persists the SQLite database plus optional config/enigma directories under APP_DATA_DIR.",
"Roundcube is a Webmail client only; it does not include a mail server and must connect to an existing IMAP/SMTP service."
]
}