Total Pageviews

Thursday, 20 August 2026

Yacd-meta, Mihomo的Web Dashboard


Yacd-meta 是 MetaCubeX 维护的 Mihomo Web Dashboard,从 YACD fork。功能:节点切换 / 延迟测试 / 监控 / 流量 / 日志。部署:Nginx 托管静态文件或用 yacd.metacubex.one 实例。对比:Razord-meta 老经典;Zashboard 最现代

部署
方式 1:用社区实例(最简)

直接访问 yacd.metacubex.one → 输入你的 Mihomo API 地址。
方式 2:Nginx / Caddy 托管

# 下载 release
wget https://github.com/MetaCubeX/Yacd-meta/releases/latest/download/yacd-meta-*.zip
unzip yacd-meta-*.zip -d /var/www/yacd

# Nginx
server {
    listen 80;
    server_name yacd.example.com;
    root /var/www/yacd;
    index index.html;
}

方式 3:内嵌客户端(无需单独部署)

Clash Verge Rev / Mihomo Party / OpenClash 都内置 Yacd-meta。无需自部署。
连接 Mihomo

Mihomo 配置 config.yaml:

external-controller: '0.0.0.0:9090'
secret: 'your-strong-secret'

Yacd-meta 登录:

    API Base URL:http://your-server:9090
    Secret:your-strong-secret

与同类对比
对比项    Yacd-meta    Razord-meta    Zashboard
起源    YACD fork    Razord fork    全新
Stars    1K    0.4K    3K
UI 现代度    ★★★    ★★    ★★★★★
功能完整    ★★★★    ★★★★    ★★★★
维护活跃    ★★★★    ★★★    ★★★★★
推荐场景    经典稳定    老用户    新部署
配套订阅

Yacd-meta 是工具不是订阅。需要 Mihomo 客户端 + 节点订阅:

    客户端:Clash Verge Rev 等内嵌 Yacd-meta
    订阅:多格式测试订阅源

部署注意事项

改配置前备份原文件。路由器、NAS、手机和桌面端的权限模型不同,别把同一套命令直接搬过去。安装包只从维护者仓库、Release 或应用商店获取,生产设备保留可追溯来源。
Yacd-meta的版本条件

改配置前备份原文件,保留客户端版本、内核版本和错误日志。路由器、NAS、手机和桌面端的权限模型不同,不能把同一条命令直接搬过去。

协议兼容、规则集和订阅格式会随着客户端更新变化;正文没有覆盖的系统版本,应以维护者文档和当前 Release 说明为准。

Yacd-meta这类工具页要把版本差异、配置文件和验证方法写清楚。安装包只从维护者仓库、Release、应用商店或系统包源获取,生产设备只保留可追溯来源。

常见问题

Yacd-meta 是什么?
    Mihomo(Clash.Meta)的 Web Dashboard,从原 YACD(haishanh/yacd)fork 并适配 Mihomo 内核。功能:节点切换 / 延迟测试 / 连接监控 / 流量统计 / 日志 / 配置编辑。运行在浏览器,配合 Mihomo / 自建 Clash 服务使用。
Yacd-meta 怎么部署?
    三种方式:(1)静态文件部署:下载 release / 用 Nginx 或 Caddy 托管;(2)内嵌客户端(Clash Verge Rev / Mihomo Party 自带 Yacd-meta,无需单独部署);(3)GitHub Pages(社区维护的实例:[yacd.metacubex.one](https://yacd.metacubex.one))。
Yacd-meta 和 Razord-meta 怎么选?
    [Yacd-meta](/clients/yacd-meta/):基于 YACD,UI 经典 + 功能成熟;[Razord-meta](/clients/razord-meta/):基于 Razord,老但仍维护。新部署优选 [Zashboard](/clients/zashboard/)(更现代)或 Yacd-meta(稳定)。
Yacd-meta 怎么连接到 Mihomo?
    (1)Mihomo external-controller 配置开启(`external-controller: 0.0.0.0:9090` + `secret: yoursecret`);(2)打开 Yacd-meta URL;(3)输入 Mihomo API 地址 + secret;(4)登录后看到面板。所有 Mihomo 操作(切节点 / 看流量等)通过 Web UI。
Yacd-meta 安全吗?
    本身是开源 Web UI,无后门。但有几点注意:(1)Mihomo external-controller 默认开放对所有 IP(如果在公网部署 = 风险),生产建议限制为内网 IP;(2)必设 secret 防止未授权访问;(3)Yacd-meta 静态文件可信任来源(GitHub Releases / 官方实例)。
OpenWrt 路由器要用 Yacd-meta 吗?
    可以但 OpenClash 已自带 Yacd-meta(Web UI 内嵌)。单独部署仅当你用 [ShellCrash](/clients/shellcrash/) 等无 LuCI 的工具时才需要。

 https://github.com/MetaCubeX/Yacd-meta/

----------------------

 Razord-meta, Mihomo 的经典 Web Dashboard 完整指南、

Razord-meta 是 MetaCubeX 维护的经典列表式 Mihomo Dashboard,适配自原 Clash 官方面板,适合喜欢老 Clash UI 风格的用户。

Razord-meta 是 MetaCubeX 维护的经典列表式 Mihomo Web Dashboard,适配自原 Clash 官方面板 Razord。风格与 Yacd-meta 的卡片式不同,更接近 2019 年 ClashX Pro 内置的旧版面板。
项目历史

Clash 官方 Dreamacro 在 2019 年做了 Razord 面板。Clash 上游归档后,MetaCubeX fork 出 Razord-meta 适配 Mihomo。
与 Yacd-meta / Zashboard 对比
维度    Razord-meta    Yacd-meta    Zashboard
UI 风格    列表式、密集    卡片式、视觉化    最新现代设计
Stars    0.4K+    2K+    1K+
社区规模    最小    中等    增长中
适合人群    老用户怀旧    主流选择    追新用户

没有功能差距,纯看 UI 偏好。新用户建议 Yacd-meta 或 Zashboard。
部署
公共实例

访问 razord.metacubex.one(如果域名仍有效)。
Nginx 自托管

wget https://github.com/MetaCubeX/Razord-meta/releases/latest/download/razord-meta.zip
unzip razord-meta.zip -d /var/www/razord
# Nginx 配置同 yacd-meta

客户端内嵌

Clash Verge Rev 等客户端支持切换 Dashboard。设置 → Dashboard → 选 Razord 替代 Yacd。
连接 Mihomo

Mihomo 需开启 external-controller 和 secret,在 Razord-meta 页面填入后端地址和密钥。
配套订阅

多格式测试订阅源 兼容 Mihomo。
Razord-meta的验证方法

协议兼容、规则集和订阅格式会随着客户端更新变化;正文没有覆盖的系统版本,应以维护者文档和当前 Release 说明为准。

Razord-meta这类工具页要把日志位置、客户端内核和订阅格式写清楚。安装包只从维护者仓库、Release、应用商店或系统包源获取,生产设备只保留可追溯来源。

改配置前备份原文件,保留客户端版本、内核版本和错误日志。路由器、NAS、手机和桌面端的权限模型不同,不能把同一条命令直接搬过去。
项目    看什么    不宜继续的信号
日志位置    当前后台、日志或设置页里能直接看到的字段    页面提示和手头资料对不上
客户端内核    费用、权限、地区或设备造成的实际影响    已经影响付款、审核、生产环境或家庭使用
订阅格式    回退入口、旧配置、官方支持材料    找不到回滚方式,或责任人无法确认。

链接:
https://github.com/MetaCubeX/Razord-meta
https://github.com/MetaCubeX/mihomo

常见问题

Razord-meta 是什么?
    原 Razord (Dreamacro/clash-dashboard) 的 Mihomo 适配 fork。功能与 [Yacd-meta](/clients/yacd-meta/) 类似但 UI 风格不同(Razord 是早期 Clash 官方 Dashboard 风格)。MetaCubeX 维护。


Razord-meta 和 Yacd-meta 怎么选?
    UI 偏好。Razord 风格:列表式、密集信息显示;Yacd 风格:卡片式、视觉化更强。功能基本等价。Yacd 用户基数更大 + UI 现代些,Razord 老用户保留。


Razord-meta 还活跃吗?
    MetaCubeX 仍维护但更新较慢(Razord 自身的设计基本定型)。重大功能更新会同步给 Yacd-meta 和 Razord-meta 两个。


Razord-meta 部署方式?
    与 Yacd-meta 完全相同:(1)Nginx 托管静态;(2)公共实例 [yacd.metacubex.one/?backend=...](https://yacd.metacubex.one);(3)客户端内嵌(部分客户端可在设置里换 dashboard 路径)。


Razord-meta 看起来像 Clash 官方 Dashboard 吗?
    是。原 Razord 设计本来就是 Clash 项目早期的官方 Dashboard。当 Clash 上游 archived 后,MetaCubeX fork 出 Razord-meta 适配 Mihomo。看起来与几年前 ClashX Pro 内嵌的 Dashboard 一样。


Razord-meta 适合什么人?
    Clash 老用户、习惯 Razord 风格、不喜欢卡片式 UI 的人。新用户推荐 [Zashboard](/clients/zashboard/)(最现代)或 [Yacd-meta](/clients/yacd-meta/)(最广用)。

-----------------------------------

 Zashboard 现代化 Mihomo / sing-box Web Dashboard

Zashboard 是新生的 Mihomo / sing-box 的Web Dashboard,3K+ stars。特点:Material Design + 响应式 + 暗色模式 + 活跃维护。对比:Yacd-meta 经典;Razord-meta 列表式;Zashboard 最现代。更适合:新部署 + UI 党。
UI 对比

Yacd-meta:                  Razord-meta:               Zashboard:
卡片式                       列表式                      Material 现代
2020 设计感                  2019 设计感                 2024 设计感

实际看是否对眼缘。
部署
公共实例

zash.run(如果可用)或 GitHub Pages。
Nginx 自托管

wget https://github.com/Zephyruso/zashboard/releases/latest/download/dist.zip
unzip dist.zip -d /var/www/zashboard
# Nginx 配置同 Yacd-meta

替换客户端内嵌 Dashboard

Clash Verge Rev → 设置 → 外部控制 → Dashboard URL → 填 Zashboard 实例地址。

OpenClash → 仪表盘 → 替换 ui 目录为 Zashboard 静态文件。
连接 Mihomo / sing-box

# Mihomo
external-controller: '0.0.0.0:9090'
secret: 'your-strong-secret'

Zashboard 登录页面填:

    Host:http://your-server:9090
    Secret:your-strong-secret

功能

    节点切换(同步 Mihomo 当前选择)
    节点测速(并行延迟测试)
    连接监控(实时上下行 / 连接数)
    流量统计(按 inbound / 节点 / 规则)
    日志查看
    配置编辑(增量修改 Mihomo 配置)

配套订阅

多格式测试订阅源 兼容 Mihomo / sing-box。
部署注意事项

改配置前备份原文件。路由器、NAS、手机和桌面端的权限模型不同,别把同一套命令直接搬过去。安装包只从维护者仓库、Release 或应用商店获取,生产设备保留可追溯来源。
Zashboard的验证方法

协议兼容、规则集和订阅格式会随着客户端更新变化;正文没有覆盖的系统版本,应以维护者文档和当前 Release 说明为准。

Zashboard这类工具页要把日志位置、客户端内核和订阅格式写清楚。安装包只从维护者仓库、Release、应用商店或系统包源获取,生产设备只保留可追溯来源。

改配置前备份原文件,保留客户端版本、内核版本和错误日志。路由器、NAS、手机和桌面端的权限模型不同,不能把同一条命令直接搬过去。
项目    看什么    不宜继续的信号
日志位置    当前后台、日志或设置页里能直接看到的字段    页面提示和手头资料对不上
客户端内核    费用、权限、地区或设备造成的实际影响    已经影响付款、审核、生产环境或家庭使用
订阅格式    回退入口、旧配置、官方支持材料    找不到回滚方式,或责任人无法确认.

项目地址:https://github.com/Zephyruso/zashboard

------------

相关帖子:https://briteming.blogspot.com/2026/07/15.html

3x-ui

 

Xray panel supporting multi-protocol multi-user expire day & traffic & IP limit (Vmess, Vless, Trojan, ShadowSocks, Wireguard, Hysteria, Tunnel, Mixed, HTTP, Tun, MTProto)

 
 

3X-UI is an advanced, open-source web control panel for managing Xray-core servers. It provides a clean, multi-language interface for deploying, configuring, and monitoring a wide range of proxy and VPN protocols — from a single VPS to multi-node deployments.

Built as an enhanced fork of the original X-UI project, 3X-UI adds broader protocol support, improved stability, per-client traffic accounting, and many quality-of-life features.

Important

This project is intended for personal use only. Please do not use it for illegal purposes or in a production environment.

Features

  • Multi-protocol inbounds — VLESS, VMess, Trojan, Shadowsocks, WireGuard, Hysteria2, HTTP, SOCKS (Mixed), Dokodemo-door / Tunnel, and TUN.
  • Modern transports & security — TCP (Raw), mKCP, WebSocket, gRPC, HTTPUpgrade, and XHTTP, secured with TLS, XTLS, and REALITY.
  • Fallbacks — serve multiple protocols on a single port (e.g. VLESS and Trojan on 443) using Xray's fallback support.
  • Per-client management — traffic quotas, expiry dates, IP limits, live online status, and one-click share links, QR codes, and subscriptions.
  • Traffic statistics — per inbound, per client, and per outbound, with reset controls.
  • Multi-node support — manage and scale across multiple servers from a single panel.
  • Outbound & routing — WARP, NordVPN, custom routing rules, load balancers, and outbound proxy chaining.
  • Built-in subscription server with multiple output formats and custom page templates.
  • Telegram bot for remote monitoring and management.
  • RESTful API with in-panel Swagger documentation.
  • Flexible storage — SQLite (default) or PostgreSQL.
  • 13 UI languages with dark and light themes.
  • Fail2ban integration for enforcing per-client IP limits.

Screenshots

Click to expandOverviewInboundsAdd clientConfigs

Quick Start

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

To install a specific version, append its tag (e.g. v3.4.0):

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v3.4.0

To install the rolling dev build (latest per-commit pre-release from main, not a stable release), pass dev-latest:

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) dev-latest

During installation a random username, password, and access path are generated. After installation, run x-ui to open the management menu, where you can start/stop the service, view or reset your login credentials, manage SSL certificates, and more.

For full documentation, please visit the project Wiki.

Unattended install

The installer also runs non-interactively for cloud-init. Set XUI_NONINTERACTIVE=1 (or pipe with no TTY) and it installs end-to-end with zero prompts, generating random credentials and writing them to /etc/x-ui/install-result.env. See deploy/ for:

Supported Platforms

Operating systems: Ubuntu, Debian, Armbian, Fedora, CentOS, RHEL, AlmaLinux, Rocky Linux, Oracle Linux, Amazon Linux, Virtuozzo, Arch, Manjaro, Parch, openSUSE (Tumbleweed / Leap), Alpine, and Windows.

Architectures: amd64 · 386 · arm64 (aarch64) · armv7 · armv6 · armv5 · s390x.

Database Options

3X-UI supports two backends, chosen during the install:

  • SQLite (default) — a single file at /etc/x-ui/x-ui.db. Zero setup, ideal for small and medium deployments.
  • PostgreSQL — recommended for high client counts or multi-node setups. The installer can install PostgreSQL locally for you, or accept a DSN to an existing server.

At runtime the backend is selected via environment variables (the installer writes these to /etc/default/x-ui for you):

XUI_DB_TYPE=postgres
XUI_DB_DSN=postgres://xui:password@127.0.0.1:5432/xui?sslmode=disable

Migrating an existing SQLite install to PostgreSQL

x-ui migrate-db --dsn "postgres://xui:password@127.0.0.1:5432/xui?sslmode=disable"
# then set XUI_DB_TYPE and XUI_DB_DSN in /etc/default/x-ui and restart:
systemctl restart x-ui

The source SQLite file is left untouched; remove it manually once you have verified the new backend.

Docker

The default docker compose up -d keeps using SQLite. To run with the bundled PostgreSQL service, uncomment the two XUI_DB_* env lines in docker-compose.yml and start with the profile:

docker compose --profile postgres up -d

The image bundles Fail2ban (enabled by default) to enforce per-client IP limits. Fail2ban bans offenders with iptables, which requires the NET_ADMIN capability. docker-compose.yml already grants it via cap_add; if you start the container with docker run instead, add the capabilities yourself, otherwise bans are logged but never applied:

docker run -d --cap-add=NET_ADMIN --cap-add=NET_RAW ... ghcr.io/mhsanaei/3x-ui

Environment Variables

Variable Description Default
XUI_DB_TYPE Database backend: sqlite or postgres sqlite
XUI_DB_DSN PostgreSQL connection string (when XUI_DB_TYPE=postgres)
XUI_DB_FOLDER Directory for the SQLite database file /etc/x-ui
XUI_DB_MAX_OPEN_CONNS Maximum open connections (PostgreSQL pool)
XUI_DB_MAX_IDLE_CONNS Maximum idle connections (PostgreSQL pool)
XUI_INIT_WEB_BASE_PATH The initial URI path for the web panel /
XUI_ENABLE_FAIL2BAN Enable Fail2ban-based IP-limit enforcement true
XUI_LOG_LEVEL Log verbosity (debug, info, warning, error) info
XUI_DEBUG Enable debug mode false
XUI_TUNNEL_HEALTH_MONITOR Enable the tunnel health monitor (probes a URL and restarts xray after repeated failures; a restart drops all clients) false
XUI_TUNNEL_HEALTH_PROXY Proxy the probe is sent through; point it at a local xray inbound so the probe tests the tunnel (e.g. socks5://127.0.0.1:1080). Empty means the probe only checks host connectivity
XUI_TUNNEL_HEALTH_URL URL probed for tunnel health https://www.cloudflare.com/cdn-cgi/trace
XUI_TUNNEL_HEALTH_INTERVAL Interval between probes 30s
XUI_TUNNEL_HEALTH_TIMEOUT Per-probe timeout 10s
XUI_TUNNEL_HEALTH_FAILURES Consecutive failures before a restart is triggered 3
XUI_TUNNEL_HEALTH_COOLDOWN Minimum delay between consecutive restarts 5m

 

from  https://github.com/MHSanaei/3x-ui

------

相关帖子: https://briteming.blogspot.com/2022/08/x-ui.html

Cal.diy

 https://www.cal.diy/installation

 

Cal.diy is the community-driven, fully open-source scheduling platform — a fork of Cal.com with all enterprise/commercial code removed.

Cal.diy is 100% MIT-licensed with no proprietary "Enterprise Edition" features. It's designed for individuals and self-hosters who want full control over their scheduling infrastructure without any commercial dependencies.

What's different from Cal.com?

  • No enterprise features — Teams, Organizations, Insights, Workflows, SSO/SAML, and other EE-only features have been removed
  • No license key required — Everything works out of the box, no Cal.com account or license needed
  • 100% open source — The entire codebase is licensed under MIT, no "Open Core" split
  • Community-maintained — Contributions are welcome and go directly into this project (see CONTRIBUTING.md)

Note: Cal.diy is a self-hosted project. There is no managed version. You run it on your own infrastructure.

Built With

Getting Started

To get a local copy up and running, please follow these simple steps.

Prerequisites

Here’s what you need to run Cal.diy.

  • Node.js (Version: >=18.x)
  • PostgreSQL (Version: >=13.x)
  • Yarn (recommended)

If you want to enable any of the available integrations, you may want to obtain additional credentials for each one. More details on this can be found below under the integrations section.

Development

Setup

  1. Clone the repo (or fork https://github.com/calcom/cal.diy/fork)

    git clone https://github.com/calcom/cal.diy.git

    If you are on Windows, run the following command in Git Bash with admin privileges: git clone -c core.symlinks=true https://github.com/calcom/cal.diy.git

  2. Go to the project folder

    cd cal.diy
  3. Install packages with yarn

    yarn
  4. Set up your .env file

    • Duplicate .env.example to .env
    • Use openssl rand -base64 32 to generate a key and add it under NEXTAUTH_SECRET in the .env file.
    • Use openssl rand -base64 24 to generate a key and add it under CALENDSO_ENCRYPTION_KEY in the .env file.

Windows users: Replace the packages/prisma/.env symlink with a real copy to avoid a Prisma error (unexpected character / in variable name):

# Git Bash / WSL
rm packages/prisma/.env && cp .env packages/prisma/.env
  1. Set up Node If your Node version does not meet the project's requirements as instructed by the docs, "nvm" (Node Version Manager) allows using Node at the version required by the project:

    nvm use

    You first might need to install the specific version and then use it:

    nvm install && nvm use

    You can install nvm from here.

Quick start with yarn dx

  • Requires Docker and Docker Compose to be installed
  • Will start a local Postgres instance with a few test users - the credentials will be logged in the console
yarn dx

Default credentials created:

Email Password Role
free@example.com free Free user
pro@example.com pro Pro user
trial@example.com trial Trial user
admin@example.com ADMINadmin2022! Admin user
onboarding@example.com onboarding Onboarding incomplete

You can use any of these credentials to sign in at http://localhost:3000

Tip: To view the full list of seeded users and their details, run yarn db-studio and visit http://localhost:5555

Development tip

  1. Add export NODE_OPTIONS="--max-old-space-size=16384" to your shell script to increase the memory limit for the node process. Alternatively, you can run this in your terminal before running the app. Replace 16384 with the amount of RAM you want to allocate to the node process.

  2. Add NEXT_PUBLIC_LOGGER_LEVEL={level} to your .env file to control the logging verbosity for all tRPC queries and mutations.
    Where {level} can be one of the following:

    0 for silly
    1 for trace
    2 for debug
    3 for info
    4 for warn
    5 for error
    6 for fatal

    When you set NEXT_PUBLIC_LOGGER_LEVEL={level} in your .env file, it enables logging at that level and higher. Here's how it works:

    The logger will include all logs that are at the specified level or higher. For example: \

    • If you set NEXT_PUBLIC_LOGGER_LEVEL=2, it will log from level 2 (debug) upwards, meaning levels 2 (debug), 3 (info), 4 (warn), 5 (error), and 6 (fatal) will be logged. \
    • If you set NEXT_PUBLIC_LOGGER_LEVEL=3, it will log from level 3 (info) upwards, meaning levels 3 (info), 4 (warn), 5 (error), and 6 (fatal) will be logged, but level 2 (debug) and level 1 (trace) will be ignored. \
echo 'NEXT_PUBLIC_LOGGER_LEVEL=3' >> .env

for Logger level to be set at info, for example.

Gitpod Setup

  1. Click the button below to open this project in Gitpod.

  2. This will open a fully configured workspace in your browser with all the necessary dependencies already installed.

Open in Gitpod

Manual setup

  1. Configure environment variables in the .env file. Replace <user>, <pass>, <db-host>, and <db-port> with their applicable values

    DATABASE_URL='postgresql://<user>:<pass>@<db-host>:<db-port>'
    
    If you don't know how to configure the DATABASE_URL, then follow the steps here to create a quick local DB



    1. image


    If you don't want to create a local DB. Then you can also consider using services like railway.app, Northflank or render.

  2. Copy and paste your DATABASE_URL from .env to .env.appStore.

  3. Set up the database using the Prisma schema (found in packages/prisma/schema.prisma)

    In a development environment, run:

    yarn workspace @calcom/prisma db-migrate

    In a production environment, run:

    yarn workspace @calcom/prisma db-deploy

Note for Windows/PowerShell users: If running the database deployment scripts fails with an error stating Environment variable not found: DATABASE_DIRECT_URL, Turbo might be failing to inject the root .env variables. You can bypass this by executing the commands directly from the prisma package directory in PowerShell:

cd packages/prisma
$env:DATABASE_URL="postgresql://postgres:YOUR_PASSWORD@localhost:5432/postgres"; $env:DATABASE_DIRECT_URL="postgresql://postgres:YOUR_PASSWORD@localhost:5432/postgres"
npx prisma db push
cd ../..
  1. Run mailhog to view emails sent during development

    NOTE: Required when E2E_TEST_MAILHOG_ENABLED is "1"

    docker pull mailhog/mailhog
    docker run -d -p 8025:8025 -p 1025:1025 mailhog/mailhog
  2. Run (in development mode)

    yarn dev

Setting up your first user

Approach 1
  1. Open Prisma Studio to look at or modify the database content:

    yarn db-studio
  2. Click on the User model to add a new user record.

  3. Fill out the fields email, username, password, and set metadata to empty {} (remembering to encrypt your password with BCrypt) and click Save 1 Record to create your first user.

    New users are set on a TRIAL plan by default. You might want to adjust this behavior to your needs in the packages/prisma/schema.prisma file.

  4. Open a browser to http://localhost:3000 and login with your just created, first user.

Approach 2

Seed the local db by running

cd packages/prisma
yarn db-seed

The above command will populate the local db with dummy users.

E2E-Testing

Be sure to set the environment variable NEXTAUTH_URL to the correct value. If you are running locally, as the documentation within .env.example mentions, the value should be http://localhost:3000.

# In a terminal just run:
yarn test-e2e

# To open the last HTML report run:
yarn playwright show-report test-results/reports/playwright-html-report

Resolving issues

E2E test browsers not installed

Run npx playwright install to download test browsers and resolve the error below when running yarn test-e2e:

Executable doesn't exist at /Users/alice/Library/Caches/ms-playwright/chromium-1048/chrome-mac/Chromium.app/Contents/MacOS/Chromium

Upgrading from earlier versions

  1. Pull the current version:

    git pull
  2. Check if dependencies got added/updated/removed

    yarn
  3. Apply database migrations by running one of the following commands:

    In a development environment, run:

    yarn workspace @calcom/prisma db-migrate

    (This can clear your development database in some cases)

    In a production environment, run:

    yarn workspace @calcom/prisma db-deploy
  4. Check for .env variables changes

    yarn predev
  5. Start the server. In a development environment, just do:

    yarn dev

    For a production build, run for example:

    yarn build
    yarn start
  6. Enjoy the new version.

Deployment

Docker

The Docker image can be found on DockerHub at https://hub.docker.com/r/calcom/cal.diy.

Note for ARM Users: Use the {version}-arm suffix for pulling images. Example: docker pull calcom/cal.diy:v5.6.19-arm.

Requirements

Make sure you have docker & docker compose installed on the server / system. Both are installed by most docker utilities, including Docker Desktop and Rancher Desktop.

Note: docker compose without the hyphen is now the primary method of using docker-compose, per the Docker documentation.

Running Cal.diy with Docker Compose

  1. Clone the repository

    git clone --recursive https://github.com/calcom/cal.diy.git
  2. Change into the directory

    cd cal.diy
  3. Prepare your configuration: Rename .env.example to .env and then update .env

    cp .env.example .env

    Most configurations can be left as-is, but for configuration options see Important Run-time variables below.

    Required Secret Keys

    Before starting, you must generate secure values for NEXTAUTH_SECRET and CALENDSO_ENCRYPTION_KEY. Using the default secret placeholder in production is a security risk.

    Generate NEXTAUTH_SECRET (cookie encryption key):

    openssl rand -base64 32

    Generate CALENDSO_ENCRYPTION_KEY (must be 32 bytes for AES256):

    openssl rand -base64 24

    Update your .env file with these values:

    NEXTAUTH_SECRET=<your_generated_secret>
    CALENDSO_ENCRYPTION_KEY=<your_generated_key>

    Push Notifications (VAPID Keys) If you see an error like:

    Error: No key set vapidDetails.publicKey
    

    This means your environment variables for Web Push are missing. You must generate and set NEXT_PUBLIC_VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY.

    Generate them with:

    npx web-push generate-vapid-keys

    Then update your .env file:

    NEXT_PUBLIC_VAPID_PUBLIC_KEY=your_public_key_here
    VAPID_PRIVATE_KEY=your_private_key_here

    Do not commit real keys to .env.example — only placeholders.

    Update the appropriate values in your .env file, then proceed.

  4. (optional) Pre-Pull the images by running the following command:

    docker compose pull
  5. Start Cal.diy via docker compose

    To run the complete stack, which includes a local Postgres database, Cal.diy web app, and Prisma Studio:

    docker compose up -d

    To run Cal.diy web app and Prisma Studio against a remote database, ensure that DATABASE_URL is configured for an available database and run:

    docker compose up -d calcom studio

    To run only the Cal.diy web app, ensure that DATABASE_URL is configured for an available database and run:

    docker compose up -d calcom

    Note: to run in attached mode for debugging, remove -d from your desired run command.

  6. Open a browser to http://localhost:3000, or your defined NEXT_PUBLIC_WEBAPP_URL. The first time you run Cal.diy, a setup wizard will initialize. Define your first user, and you're ready to go!

    Note for first-time setup (Calendar integration): During the setup wizard, you may encounter a "Connect your Calendar" step that appears to be required. If you do not wish to connect a calendar at this time, you can skip this step by navigating directly to the dashboard at <NEXT_PUBLIC_WEBAPP_URL>/event-types. Calendar integrations can be added later from the Settings > Integrations page.

Updating Cal.diy

  1. Stop the Cal.diy stack

    docker compose down
  2. Pull the latest changes

    docker compose pull
  3. Update env vars as necessary.

  4. Re-start the Cal.diy stack

    docker compose up -d

Building from source with Docker

  1. Clone the repository

    git clone https://github.com/calcom/cal.diy.git
  2. Change into the directory

    cd cal.diy
  3. Rename .env.example to .env and then update .env

    For configuration options see Build-time variables below. Update the appropriate values in your .env file, then proceed.

  4. Build the Cal.diy docker image:

    Note: Due to application configuration requirements, an available database is currently required during the build process.

    a) If hosting elsewhere, configure the DATABASE_URL in the .env file, and skip the next step

    b) If a local or temporary database is required, start a local database via docker compose.

    docker compose up -d database
  5. Build Cal.diy via docker compose (DOCKER_BUILDKIT=0 must be provided to allow a network bridge to be used at build time. This requirement will be removed in the future)

    DOCKER_BUILDKIT=0 docker compose build calcom
  6. Start Cal.diy via docker compose

    To run the complete stack, which includes a local Postgres database, Cal.diy web app, and Prisma Studio:

    docker compose up -d

    To run Cal.diy web app and Prisma Studio against a remote database, ensure that DATABASE_URL is configured for an available database and run:

    docker compose up -d calcom studio

    To run only the Cal.diy web app, ensure that DATABASE_URL is configured for an available database and run:

    docker compose up -d calcom

    Note: to run in attached mode for debugging, remove -d from your desired run command.

  7. Open a browser to http://localhost:3000, or your defined NEXT_PUBLIC_WEBAPP_URL. The first time you run Cal.diy, a setup wizard will initialize. Define your first user, and you're ready to go!

Configuration

Important Run-time variables

These variables must also be provided at runtime

Variable Description Required Default
DATABASE_URL database url with credentials - if using a connection pooler, this setting should point there required postgresql://unicorn_user:magical_password@database:5432/calendso
NEXT_PUBLIC_WEBAPP_URL Base URL of the site. NOTE: if this value differs from the value used at build-time, there will be a slight delay during container start (to update the statically built files). optional http://localhost:3000
NEXTAUTH_URL Location of the auth server. By default, this is the Cal.diy docker instance itself. optional {NEXT_PUBLIC_WEBAPP_URL}/api/auth
NEXTAUTH_SECRET Cookie encryption key. Must match build variable. Generate with: openssl rand -base64 32 required secret
CALENDSO_ENCRYPTION_KEY Authentication encryption key (32 bytes for AES256). Must match build variable. Generate with: openssl rand -base64 24 required secret
Build-time variables

If building the image yourself, these variables must be provided at the time of the docker build, and can be provided by updating the .env file. Currently, if you require changes to these variables, you must follow the instructions to build and publish your own image.

Variable Description Required Default
DATABASE_URL database url with credentials - if using a connection pooler, this setting should point there required postgresql://unicorn_user:magical_password@database:5432/calendso
MAX_OLD_SPACE_SIZE Needed for Nodejs/NPM build options required 4096
NEXTAUTH_SECRET Cookie encryption key required secret
CALENDSO_ENCRYPTION_KEY Authentication encryption key required secret
NEXT_PUBLIC_WEBAPP_URL Base URL injected into static files optional http://localhost:3000
NEXT_PUBLIC_WEBSITE_TERMS_URL custom URL for terms and conditions website optional
NEXT_PUBLIC_WEBSITE_PRIVACY_POLICY_URL custom URL for privacy policy website optional
CALCOM_TELEMETRY_DISABLED Allow Cal.diy to collect anonymous usage data (set to 1 to disable) optional

Troubleshooting

SSL edge termination

If running behind a load balancer which handles SSL certificates, you will need to add the environmental variable NODE_TLS_REJECT_UNAUTHORIZED=0 to prevent requests from being rejected. Only do this if you know what you are doing and trust the services/load-balancers directing traffic to your service.

Failed to commit changes: Invalid 'prisma.user.create()'

Certain versions may have trouble creating a user if the field metadata is empty. Using an empty json object {} as the field value should resolve this issue. Also, the id field will autoincrement, so you may also try leaving the value of id as empty.

CLIENT_FETCH_ERROR

If you experience this error, it may be the way the default Auth callback in the server is using the WEBAPP_URL as a base url. The container does not necessarily have access to the same DNS as your local machine, and therefore needs to be configured to resolve to itself. You may be able to correct this by configuring NEXTAUTH_URL=http://localhost:3000/api/auth, to help the backend loop back to itself.

docker-calcom-1  | @calcom/web:start: [next-auth][error][CLIENT_FETCH_ERROR]
docker-calcom-1  | @calcom/web:start: https://next-auth.js.org/errors#client_fetch_error request to http://testing.localhost:3000/api/auth/session failed, reason: getaddrinfo ENOTFOUND testing.localhost {
docker-calcom-1  | @calcom/web:start:   error: {
docker-calcom-1  | @calcom/web:start:     message: 'request to http://testing.localhost:3000/api/auth/session failed, reason: getaddrinfo ENOTFOUND testing.localhost',
docker-calcom-1  | @calcom/web:start:     stack: 'FetchError: request to http://testing.localhost:3000/api/auth/session failed, reason: getaddrinfo ENOTFOUND testing.localhost\n' +
docker-calcom-1  | @calcom/web:start:       '    at ClientRequest.<anonymous> (/calcom/node_modules/next/dist/compiled/node-fetch/index.js:1:65756)\n' +
docker-calcom-1  | @calcom/web:start:       '    at ClientRequest.emit (node:events:513:28)\n' +
docker-calcom-1  | @calcom/web:start:       '    at ClientRequest.emit (node:domain:489:12)\n' +
docker-calcom-1  | @calcom/web:start:       '    at Socket.socketErrorListener (node:_http_client:494:9)\n' +
docker-calcom-1  | @calcom/web:start:       '    at Socket.emit (node:events:513:28)\n' +
docker-calcom-1  | @calcom/web:start:       '    at Socket.emit (node:domain:489:12)\n' +
docker-calcom-1  | @calcom/web:start:       '    at emitErrorNT (node:internal/streams/destroy:157:8)\n' +
docker-calcom-1  | @calcom/web:start:       '    at emitErrorCloseNT (node:internal/streams/destroy:122:3)\n' +
docker-calcom-1  | @calcom/web:start:       '    at processTicksAndRejections (node:internal/process/task_queues:83:21)',
docker-calcom-1  | @calcom/web:start:     name: 'FetchError'
docker-calcom-1  | @calcom/web:start:   },
docker-calcom-1  | @calcom/web:start:   url: 'http://testing.localhost:3000/api/auth/session',
docker-calcom-1  | @calcom/web:start:   message: 'request to http://testing.localhost:3000/api/auth/session failed, reason: getaddrinfo ENOTFOUND testing.localhost'
docker-calcom-1  | @calcom/web:start: }

Railway:

Deploy on Railway

You can deploy Cal.diy on Railway. The team at Railway also have a detailed blog post on deploying on their platform.

Vercel:

Currently Vercel Pro Plan is required to be able to Deploy this application with Vercel, due to limitations on the number of serverless functions on the free plan.

Deploy with Vercel

Render:

Deploy to Render

from  https://github.com/calcom/cal.diy

oxre

 Blazingly fast React project scaffold written in Rust

oxre scaffolds React projects with no network requests. All templates embedded.

🚀 Quick Start

# Install
cargo install oxre

# Create React app
oxre my-app

# Create TypeScript app  
oxre my-ts-app --typescript

# Start coding
cd my-app && npm install && npm run dev

⚡ Why oxre?

  • Works offline - No network requests needed
  • Embedded templates - Everything built-in
  • Simple - Just one command
  • Modern stack - React 18 + Vite 5

🛠️ What You Get

  • React 18 + Vite 5
  • TypeScript support (--typescript)
  • ESLint configured
  • Modern project structure
  • Ready to run

🤔 Why I Built oxre

Wanted a React scaffolder that:

  • Works offline
  • Has no network dependencies
  • Uses modern tools
  • Just works
from https://github.com/ddoemonn/oxre

Wednesday, 19 August 2026

Bun

 

Incredibly fast JavaScript runtime, bundler, test runner, and nodejs package manager – all in one


stars Bun speed

Documentation   •   Discord   •   Issues   •   Roadmap

What is Bun?

Bun is an all-in-one toolkit for JavaScript and TypeScript apps. It ships as a single executable called bun.

At its core is the Bun runtime, a fast JavaScript runtime designed as a drop-in replacement for Node.js. It's written in Rust and powered by JavaScriptCore under the hood, dramatically reducing startup times and memory usage.

bun run index.tsx             # TS and JSX supported out-of-the-box

The bun command-line tool also implements a test runner, script runner, and Node.js-compatible package manager. Instead of 1,000 node_modules for development, you only need bun. Bun's built-in tools are significantly faster than existing options and usable in existing Node.js projects with little to no changes.

bun test                      # run tests
bun run start                 # run the `start` script in `package.json`
bun install <pkg>             # install a package
bunx cowsay 'Hello, world!'   # execute a package

Install

Bun supports Linux (x64 & arm64), macOS (x64 & Apple Silicon), and Windows (x64 & arm64).

Linux users — Kernel version 5.6 or higher is strongly recommended, but the minimum is 5.1.

x64 users — if you see "illegal instruction" or similar errors, check our CPU requirements

# with install script (recommended)
curl -fsSL https://bun.com/install | bash

# on windows
powershell -c "irm bun.sh/install.ps1 | iex"

# with npm
npm install -g bun

# with Homebrew
brew tap oven-sh/bun
brew install bun

# with Docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun

Upgrade

To upgrade to the latest version of Bun, run:

bun upgrade

Bun automatically releases a canary build on every commit to main. To upgrade to the latest canary build, run:

bun upgrade --canary

View canary build

Quick links

Guides