Meetable latest 配置参数详解

Meetable latest(main@7d2d22ab,Laravel 12.69.1)配置参数全量详解:.env 154 行逐项分类(必配/默认即可/条件)、compose 强制覆盖五项、Docker 下容器缺 .env 导致 DB 站点设置整体失效的重大陷阱与修复、auth_hide_login 双层配置实测闭环(2026-11-02 实测)

MeetableMeetable自托管DockerLaravelMariaDBRedis2026/11/02

Meetable latest 配置参数详解

版本标识:Meetable 无 semver 发布(GitHub tags/releases 为空,ghcr 仅 main/latest),本文的 "latest" 指实测镜像 ghcr.io/aaronpk/meetable:latest(created 2026-10-16T22:21:49Z,即 main@7d2d22ab7f85),应用栈 Laravel 12.69.1 / PHP 8.2.34 / MariaDB 11.8 / Redis 8。全部参数语义以容器内源码实查为准,实测日期 2026-11-02。

一、配置体系总览:三层结构

层载体生效方式典型项
① 部署层宿主机 .env(compose env_file 注入为容器环境变量)改后 docker compose up -d(compose 检测 env_file 变化自动重建容器)APP_KEY、DB_PASSWORD、AUTH_METHOD
② compose 强制层x-app-config.environment 五项覆盖 .env 同名值,改 .env 无效DB_HOST、REDIS_HOST、CACHE/QUEUE/SESSION_DRIVER
③ 站点设置层MariaDB settings 表(管理员 /settings 页或 App\Setting::set)写入即生效(进程内静态缓存需重启容器刷新,实测)enable_rsvps、auth_hide_login、enable_proposed_events

⚠️ ③ 层在 Docker 部署有一个官方 compose 不踩不知道的大坑(容器内缺 .env 文件导致全部站点设置短路),见 §五——这是本文最重要的一条实测结论。

二、.env 必配项(4 个,README 明示 + 实测)

参数取值要求实测说明
APP_KEY随机 32 字符,如 openssl rand -hex 16 输出加密会话/签名 URL(passkey-link 等)的根密钥;丢失则全部会话与签名链接失效。php artisan key:generate --show 可生成不落盘
APP_URL站点基址,无结尾斜杠直接决定事件 permalink、iCal 内 URL: 字段、OAuth 回调拼接;本实测 http://127.0.0.1:8158
DB_PASSWORD强密码compose 里无默认值,不设 mariadb 起不来
DB_ROOT_PASSWORD强密码仅 compose 变量插值给 mariadb 用(默认 root,生产必改)

三、.env 全量分类表(按 .env.example 154 行实查逐段)

3.1 SITE CUSTOMIZATION

参数默认分类说明
APP_NAMEMeetable默认即可站名,进 <title> 与 manifest。实测闭环:改 Quzuo Events 重建后首页 <title>Quzuo Events | Quzuo Events</title>,改回即恢复
APP_LOCALE(注释=en)默认即可界面语言,翻译在 resources/lang/{locale};另有 /language/{locale} 路由切换

3.2 SERVER SETTINGS

参数默认分类说明
APP_ENVexample 注释 local必配 production实测 about 显示 production;local 会开调试页
APP_DEBUG注释 false条件仅排障临时开,公网必关
DB_CONNECTIONmysql默认即可仅支持 MySQL/MariaDB(compose 钉死 mariadb:11.8)
DB_HOST127.0.0.1compose 覆盖compose 强制 db,.env 改动无效(§四)
DB_PORT3306默认即可
DB_DATABASE/DB_USERNAMElaravel/meetable建议改同时驱动 mariadb 建库建用户(compose 变量插值)
ALLOW_PRIVATE_NETWORK_REQUESTSfalse条件允许向私网抓 webmention/头像/事件导入 URL;本机联调才开。生产若事件源在内网必须开,否则抓取静默失败
CACHE_DRIVER/QUEUE_CONNECTION/SESSION_DRIVER(compose 强制 redis)compose 覆盖手动部署可选 database/file/cookie 等;compose 栈内改 .env 无效
SESSION_LIFETIME(Laravel 默认 120 分钟)条件注释示例 86400(天级登录态)
REDIS_HOST/REDIS_PASSWORD/REDIS_PORT127.0.0.1/null/6379compose 覆盖 HOST手动部署 Redis 带密码时必配
FILESYSTEM_DRIVERlocal默认即可图片存储驱动;Laravel 12 已改名 FILESYSTEM_DISK,此项为旧键名(example 未更新,源码实查按旧键读取,勿改成新键名)
AWS_ACCESS_KEY_ID 等 5 项空条件仅 FILESYSTEM_DRIVER=s3 时需要
SQL_LOGGER_ALL_QUERIES_ENABLEDfalse条件全 SQL 日志含密钥,仅排障开
LOG_CHANNELstack默认即可Heroku 用 stderr

3.3 AUTHENTICATION(AUTH_METHOD 五选一,实测路由/源码实查)

参数分类说明
AUTH_METHOD必配(选路线)session(内置 passkey,单人站首选)/ github / oidc / vouch / heroku / discord
AUTH_SHOW_LOGIN / AUTH_SHOW_LOGOUT遗留无效项实测:设 false 重建后首页仍显示 Log In。2020 迁移 show_login_link_flip 已翻转为 DB 设置 auth_hide_login/auth_hide_logout,.env 值不再被导航栏读取(layouts/main.blade.php:119 实查)
GITHUB_CLIENT_ID/SECRET条件(github)OAuth 应用回调 URL 注册 /auth/github
GITHUB_ALLOWED_USERS/GITHUB_ADMIN_USERS条件空格分隔白名单;不设则任何 GitHub 用户可登录
OIDC_AUTHORIZATION_ENDPOINT/TOKEN_ENDPOINT/CLIENT_ID/CLIENT_SECRET条件(oidc)回调 /auth/oidc,IdP 发起登录 /auth/oidc/initiate
OIDC_ALLOWED_USERS/OIDC_ADMIN_USERS条件按 sub 白名单
VOUCH_HOSTNAME条件(vouch)网关置 REMOTE_USER(HTTP 头 Remote-User 被忽略,防伪造,README 明示)
HEROKU_CLIENT_ID/SECRET条件(heroku)首个登录者即管理员,之后只能改库加人
DISCORD_CLIENT_ID/DISCORD_CLIENT_SECRET/DISCORD_SERVER_ID/DISCORD_ROLE_ID/DISCORD_BOT_TOKEN条件登录限制(server/role)与机器人预告;bot 可配合任意登录方式
ALLOW_MANAGE_EVENTS默认即可(example=users)users 任何登录者可管事件 / admins 仅管理员;注意粒度粗:开 users 同时允许所有人删改他人事件与应答(example 注释实查)
ALLOW_MANAGE_SITE默认即可(example=admins)站点文案/设置页权限

四、compose 强制覆盖层(实测)

x-app-config.environment 五行注释原文即说明意图("force the app to use the docker compose services"):DB_HOST=db、REDIS_HOST=redis、CACHE_DRIVER=redis、QUEUE_CONNECTION=redis、SESSION_DRIVER=redis。实测 .env 写 CACHE_DRIVER=file 不会生效;要改只能改 compose 文件本身。

五、Docker 重大陷阱:容器内缺 .env → 站点设置层整体失效(实测定位+修复)

现象:管理员在 /settings(或 tinker Setting::set)写入的站点开关"不生效"——如 enable_rsvps=1 已入库,事件页却不出现 RSVP 区。

根因(源码实查 app/Setting.php):

public static function value($id) {
    if(!isset($_ENV['DYNO']) && !file_exists(__DIR__.'/../.env')) {
        return null;   // ← 容器内没有 .env 文件,全部站点设置恒 null
    }
    ...

官方 compose 用 env_file: 只把变量注入容器环境变量,宿主机 .env 文件本身并不在容器 /var/www/html/.env(实测 ls 不存在、tinker file_exists=false)。该守卫本意是 Heroku 场景判断($_ENV['DYNO'] 为 Heroku dyno 标记),在 Docker 形态下误伤:settings 表所有键读出来都是 null,RSVP、Proposed Events、登录链接隐藏、webmention 应答等站点功能全部被短路。

修复(实测两种,推荐后者持久):

# 方案 A(临时验证):docker cp .env meetable-app-1:/var/www/html/.env
# 方案 B(推荐):compose 的 app 与 worker 服务 volumes 各追加一行
    volumes:
      - meetable_storage:/var/www/html/storage/app
      - ./.env:/var/www/html/.env:ro

挂载后实测:Setting::value('enable_rsvps') 由 NULL 变 string(1) "1";Setting::set('auth_hide_login','1') + 重启容器后首页 Log In 计数从 1 变 0,改 '0' 复原——DB 设置层完整闭环打通。注意 Setting::$cached 为进程内静态缓存,直接改库需重启容器(或经 Web /settings 页保存,同进程写入即时生效)。

六、站点设置层(settings 表)参数清单(SettingsController 白名单实查)

类别键作用
开关(checkbox)enable_rsvpsRSVP 总开关(事件页另受事件自身 rsvps_enabled 约束)
enable_proposed_events提案事件投票定档(关时 /proposed 404,实测)
enable_unlisted_events / enable_registration不公开事件 / 报名链接功能
enable_webmention_responses / enable_ticket_urlwebmention 应答 / 购票链接
show_rsvps_in_ics / show_meeting_url_in_ics / clone_meeting_urliCal 内容策略
auth_hide_login / auth_hide_logout导航登录/登出链接隐藏(取代 .env 旧项,语义相反)
文本/资源add_an_event(添加事件页文案)、photo_license、default_coc_url、logo_url/width/height、favicon_url、analytics、home_meta_description、home_social_image_url、event_page_embed、custom_global_css、manifest_logo_url站点品牌与嵌入
集成zoom_email/account_id/client_id、notification_endpoint/channel_primary/meta、mail_from_address、mailgun_domainZoom/推送/邮件
密钥googlemaps_api_key、zoom_client_secret、zoom_webhook_secret、notification_token、mailgun_secret回显 ******** 防误覆盖

七、参数变更生效方式速查

改动对象生效操作实测证据
.env 任意项docker compose up -d(compose 检测 env_file 哈希变化自动重建)APP_NAME 改验闭环 §3.1
compose environmentdocker compose up -d—
settings 表(Web 页保存)即时(同进程写入)—
settings 表(绕过应用直接改库)docker restart meetable-app-1(清进程内静态缓存)auth_hide_login 闭环 §五
认证方式 AUTH_METHOD 切换改 .env + 重建;GitHub/OIDC 需先在 IdP 注册回调 URL路由实查 /auth/{method}

八、推荐配置组合

  • 单人社区站(最省事):AUTH_METHOD=session + passkey 首登建管理员 + ALLOW_MANAGE_EVENTS=admins;compose 加 .env 挂载(§五)+ scheduler 容器(B2 §八)。
  • GitHub 圈子站:AUTH_METHOD=github + GITHUB_ALLOWED_USERS 收紧 + ALLOW_MANAGE_EVENTS=users(圈内互建)。
  • 企业内网:AUTH_METHOD=oidc(配 Keycloak/Authelia 等,站内已有专栏)+ ALLOW_MANAGE_EVENTS=admins + ALLOW_PRIVATE_NETWORK_REQUESTS=true(若事件源在内网)。

九、关联文档

Meetable latest 配置参数详解 - Quzuo