diff --git a/README.md b/README.md index 78f3f05..29ddc48 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,12 @@
Japanese + + + Chinese +
Chinese +
+ @@ -176,5 +182,3 @@ Here are some ways you can help improve CheckCle: CheckCle is released under the MIT License. --- - - diff --git a/application/src/components/dashboard/Header.tsx b/application/src/components/dashboard/Header.tsx index 9c8888e..ed5b542 100644 --- a/application/src/components/dashboard/Header.tsx +++ b/application/src/components/dashboard/Header.tsx @@ -119,6 +119,9 @@ export const Header = ({ setLanguage("ja")} className={language === "ja" ? "bg-accent" : ""}> {t("japanese")} + setLanguage("zhcn")} className={language === "zhcn" ? "bg-accent" : ""}> + {t("simplifiedChinese")} + @@ -212,4 +215,4 @@ export const Header = ({ ); -}; \ No newline at end of file +}; diff --git a/application/src/translations/de/common.ts b/application/src/translations/de/common.ts index 0e69d07..070ace3 100644 --- a/application/src/translations/de/common.ts +++ b/application/src/translations/de/common.ts @@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = { english: "Englisch", khmer: "Khmer", german: "Deutsch", + simplifiedChinese: "Simplified Chinese", goodMorning: "Guten Morgen", goodAfternoon: "Guten Nachmittag", goodEvening: "Guten Abend", diff --git a/application/src/translations/en/common.ts b/application/src/translations/en/common.ts index 3bdbb1a..4c02002 100644 --- a/application/src/translations/en/common.ts +++ b/application/src/translations/en/common.ts @@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = { english: "English", khmer: "Khmer", german: "Deutsch", + simplifiedChinese: "Simplified Chinese", goodMorning: "Good morning", goodAfternoon: "Good afternoon", goodEvening: "Good evening", diff --git a/application/src/translations/index.ts b/application/src/translations/index.ts index 8ae73b8..fdd550e 100644 --- a/application/src/translations/index.ts +++ b/application/src/translations/index.ts @@ -2,14 +2,16 @@ import enTranslations from './en'; import kmTranslations from './km'; import deTranslations from './de'; import jaTranslations from './ja'; +import zhcnTranslations from './zhcn'; -export type Language = "en" | "km" | "de" | "ja"; +export type Language = "en" | "km" | "de" | "ja" | "zhcn"; export const translations = { en: enTranslations, km: kmTranslations, de: deTranslations, ja: jaTranslations, + zhcn: zhcnTranslations, }; // Type for accessing translations by module and key diff --git a/application/src/translations/ja/common.ts b/application/src/translations/ja/common.ts index dedc536..c8f0ce7 100644 --- a/application/src/translations/ja/common.ts +++ b/application/src/translations/ja/common.ts @@ -7,6 +7,7 @@ export const commonTranslations: CommonTranslations = { english: "English", khmer: "Khmer", german: "Deutsch", + simplifiedChinese: "简体中文", japanese: "日本語", goodMorning: "おはようございます", goodAfternoon: "こんにちは", @@ -26,4 +27,4 @@ export const commonTranslations: CommonTranslations = { description: "説明", success: "成功", error: "エラー", -}; \ No newline at end of file +}; diff --git a/application/src/translations/km/common.ts b/application/src/translations/km/common.ts index 84ed44c..47219ce 100644 --- a/application/src/translations/km/common.ts +++ b/application/src/translations/km/common.ts @@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = { english: "អង់គ្លេស", khmer: "ខ្មែរ", german: "Deutsch", + simplifiedChinese: "简体中文", goodMorning: "អរុណសួស្តី", goodAfternoon: "ទិវាសួស្តី", goodEvening: "សាយណ្ហសួស្តី", diff --git a/application/src/translations/types/common.ts b/application/src/translations/types/common.ts index fc16c53..275651b 100644 --- a/application/src/translations/types/common.ts +++ b/application/src/translations/types/common.ts @@ -5,6 +5,9 @@ export interface CommonTranslations { language: string; english: string; khmer: string; + german: string; + japanese: string; + simplifiedChinese: string; goodMorning: string; goodAfternoon: string; goodEvening: string; diff --git a/application/src/translations/zhcn/about.ts b/application/src/translations/zhcn/about.ts new file mode 100644 index 0000000..3914510 --- /dev/null +++ b/application/src/translations/zhcn/about.ts @@ -0,0 +1,18 @@ + +import { AboutTranslations } from '../types/about'; + +export const aboutTranslations: AboutTranslations = { + aboutCheckcle: "关于 Checkcle", + systemDescription: "Checkcle 是一个开源监控平台,可提供有关服务器和服务健康状况的实时洞察、事件管理以及透明化运营。以 MIT 许可证发布。", + systemVersion: "系统版本", + license: "许可证", + mitLicense: "MIT 许可证", + links: "链接", + viewOnGithub: "在 GitHub 上查看", + viewDocumentation: "查看文档", + followOnX: "在 X 上关注", + joinDiscord: "加入 Discord", + quickActions: "快速操作", + quickActionsDescription: "快速访问常用的监控操作和功能。选择下面的操作开始。", + quickTips: "快速提示", +}; diff --git a/application/src/translations/zhcn/common.ts b/application/src/translations/zhcn/common.ts new file mode 100644 index 0000000..0f5b71e --- /dev/null +++ b/application/src/translations/zhcn/common.ts @@ -0,0 +1,30 @@ + +import { CommonTranslations } from '../types/common'; + +export const commonTranslations: CommonTranslations = { + welcome: "欢迎", + logout: "注销", + language: "语言", + english: "English", + khmer: "Khmer", + german: "Deutsch", + simplifiedChinese: "简体中文", + goodMorning: "早上好", + goodAfternoon: "下午好", + goodEvening: "晚上好", + profile: "个人资料", + settings: "设置", + documentation: "文档", + notifications: "通知", + close: "关闭", + cancel: "取消", + view: "查看", + edit: "编辑", + delete: "删除", + status: "状态", + time: "时间", + title: "标题", + description: "描述", + success: "成功", + error: "错误", +}; diff --git a/application/src/translations/zhcn/incident.ts b/application/src/translations/zhcn/incident.ts new file mode 100644 index 0000000..8903f2d --- /dev/null +++ b/application/src/translations/zhcn/incident.ts @@ -0,0 +1,55 @@ + +import { IncidentTranslations } from '../types/incident'; + +export const incidentTranslations: IncidentTranslations = { + incidentManagement: '事件管理', + incidentsManagementDesc: '跟踪和管理服务事件及其解决方案', + unresolvedIncidents: '未解决', + resolvedIncidents: '已解决', + activeIncidents: '活动事件', + criticalIssues: '关键问题', + avgResolutionTime: '平均解决时间', + noIncidents: '没有活动事件', + createIncident: '创建事件', + investigating: '调查中', + identified: '已识别', + monitoring: '监控', + resolved: '已解决', + scheduleIncidentManagement: '计划与事件管理', + incidentName: '事件名称', + incidentStatus: '事件状态', + highPriority: '高优先级', + configurationSettings: '配置设置', + incidentCreatedSuccess: '事件创建成功', + basicInfo: '基本信息', + serviceId: '服务 ID', + assignedTo: '分配给', + unassigned: '未分配', + timeline: '时间线', + incidentTime: '事件时间', + resolutionTime: '解决时间', + systems: '系统', + noSystems: '没有受影响的系统', + impactAnalysis: '影响分析', + rootCause: '根本原因', + resolutionSteps: '解决步骤', + lessonsLearned: '经验', + resolutionDetails: '解决详情', + assignment: '分配', + download: '下载', + downloadPdf: '下载 PDF', + print: '打印', + confidentialNote: '此文档为机密文件,仅供内部使用。', + generatedOn: '生成时间', + enterResolutionSteps: '输入解决此事件的步骤', + enterLessonsLearned: '输入从此事件中学到的经验', + editIncident: '编辑事件', + editIncidentDesc: '更新此事件的详细信息', + updating: '更新中...', + update: '更新', + create: '创建', + creating: '创建中...', + configuration: '配置', + failedToUpdateStatus: '更新状态失败', + inProgress: '进行中', +}; diff --git a/application/src/translations/zhcn/index.ts b/application/src/translations/zhcn/index.ts new file mode 100644 index 0000000..93397fc --- /dev/null +++ b/application/src/translations/zhcn/index.ts @@ -0,0 +1,25 @@ + +import { Translations } from '../types'; +import { commonTranslations } from './common'; +import { menuTranslations } from './menu'; +import { loginTranslations } from './login'; +import { aboutTranslations } from './about'; +import { servicesTranslations } from './services'; +import { maintenanceTranslations } from './maintenance'; +import { incidentTranslations } from './incident'; +import { sslTranslations } from './ssl'; +import { settingsTranslations } from './settings'; + +const zhcnTranslations: Translations = { + common: commonTranslations, + menu: menuTranslations, + login: loginTranslations, + about: aboutTranslations, + services: servicesTranslations, + maintenance: maintenanceTranslations, + incident: incidentTranslations, + ssl: sslTranslations, + settings: settingsTranslations +}; + +export default zhcnTranslations; diff --git a/application/src/translations/zhcn/login.ts b/application/src/translations/zhcn/login.ts new file mode 100644 index 0000000..5c34f65 --- /dev/null +++ b/application/src/translations/zhcn/login.ts @@ -0,0 +1,23 @@ + +import { LoginTranslations } from '../types/login'; + +export const loginTranslations: LoginTranslations = { + signInToYourAccount: "登录您的账号", + dontHaveAccount: "没有账号?", + createOne: "创建一个", + signInWithGoogle: "使用 Google 登录", + orContinueWith: "或", + email: "邮箱", + password: "密码", + forgot: "忘记密码?", + signIn: "登录", + signingIn: "登录中...", + loginSuccessful: "登录成功", + loginSuccessMessage: "您已成功登录。", + loginFailed: "登录失败", + authenticationFailed: "身份验证失败", + bySigningIn: "通过登录,您同意我们的", + termsAndConditions: "条款与条件", + and: "和", + privacyPolicy: "隐私政策", +}; diff --git a/application/src/translations/zhcn/maintenance.ts b/application/src/translations/zhcn/maintenance.ts new file mode 100644 index 0000000..7dd51bd --- /dev/null +++ b/application/src/translations/zhcn/maintenance.ts @@ -0,0 +1,68 @@ + +import { MaintenanceTranslations } from '../types/maintenance'; + +export const maintenanceTranslations: MaintenanceTranslations = { + scheduledMaintenance: '计划维护', + scheduledMaintenanceDesc: '查看和管理您系统和服务的计划维护窗口', + upcomingMaintenance: '即将', + ongoingMaintenance: '进行中', + completedMaintenance: '已完成', + createMaintenanceWindow: '创建维护', + totalScheduledHours: '总计划小时', + maintenanceName: '维护名称', + maintenanceStatus: '状态', + scheduledStart: '计划开始时间', + scheduledEnd: '计划结束时间', + affectedServices: '受影响的服务', + impact: '影响', + minor: '次要', + major: '主要', + critical: '关键', + none: '无', + actions: '操作', + scheduled: '计划', + inprogress: '进行中', + completed: '已完成', + cancelled: '已取消', + markAsInProgress: '标记为进行中', + markAsCompleted: '标记为已完成', + markAsCancelled: '标记为已取消', + confirmDelete: '确认删除', + deleteMaintenanceConfirmation: '您确定要删除此维护窗口吗?', + thisActionCannotBeUndone: '此操作无法撤销。', + maintenanceDeleted: '维护已删除', + maintenanceDeletedDesc: '维护窗口已成功删除。', + errorDeletingMaintenance: '删除维护窗口时出错。', + statusUpdated: '状态更新', + maintenanceStatusUpdated: '维护状态已成功更新。', + errorUpdatingMaintenanceStatus: '更新维护状态时出错。', + createMaintenance: '创建维护', + createMaintenanceDesc: '为您的服务计划新的维护窗口', + enterTitle: '输入维护标题', + enterDescription: '输入详细的维护描述', + startTime: '开始时间', + endTime: '结束时间', + selectDate: '选择日期', + enterAffectedServices: '输入受影响的服务', + separateServicesWithComma: '用逗号分隔多个服务', + priority: '优先级', + selectPriority: '选择优先级', + selectStatus: '选择状态', + selectImpact: '选择影响', + notifySubscribers: '通知订阅者', + notifySubscribersDesc: '当此维护开始时,向所有订阅者发送通知', + maintenanceCreated: '创建维护', + maintenanceCreatedDesc: '维护窗口已成功计划。', + errorCreatingMaintenance: '创建维护窗口时出错。', + errorFetchingMaintenanceData: '获取维护数据时出错。', + low: '低', + medium: '中', + high: '高', + created: '创建', + lastUpdated: '最后更新', + subscribersWillBeNotified: '订阅者将在维护开始时收到通知', + noNotifications: '不会发送通知', + noScheduledMaintenance: '没有计划的维护', + noMaintenanceWindows: '没有此时间段的维护窗口。通过点击“创建维护”按钮创建一个。', + maintenanceCreatedSuccess: '维护窗口创建成功', +}; diff --git a/application/src/translations/zhcn/menu.ts b/application/src/translations/zhcn/menu.ts new file mode 100644 index 0000000..30c7ab0 --- /dev/null +++ b/application/src/translations/zhcn/menu.ts @@ -0,0 +1,21 @@ + +import { MenuTranslations } from '../types/menu'; + +export const menuTranslations: MenuTranslations = { + uptimeMonitoring: "Uptime 监控", + instanceMonitoring: "实例监控", + sslDomain: "SSL & 域名", + scheduleIncident: "计划与事件", + operationalPage: "运营页面", + reports: "报告", + regionalMonitoring: "区域监控", + settingPanel: "设置面板", + generalSettings: "一般设置", + userManagement: "用户管理", + notificationSettings: "通知设置", + alertsTemplates: "警报模板", + rolesManagement: "角色管理", + dataRetention: "数据保留", + backupSettings: "备份设置", + aboutSystem: "关于系统", +}; diff --git a/application/src/translations/zhcn/services.ts b/application/src/translations/zhcn/services.ts new file mode 100644 index 0000000..7cf86c7 --- /dev/null +++ b/application/src/translations/zhcn/services.ts @@ -0,0 +1,12 @@ + +import { ServicesTranslations } from '../types/services'; + +export const servicesTranslations: ServicesTranslations = { + serviceName: "服务名称", + serviceType: "服务类型", + serviceStatus: "服务状态", + responseTime: "响应时间", + uptime: "Uptime", + lastChecked: "最后检查时间", + noServices: "没有符合您筛选条件的服务。", +}; diff --git a/application/src/translations/zhcn/settings.ts b/application/src/translations/zhcn/settings.ts new file mode 100644 index 0000000..8f86b1b --- /dev/null +++ b/application/src/translations/zhcn/settings.ts @@ -0,0 +1,52 @@ + +import { SettingsTranslations } from '../types/settings'; + +export const settingsTranslations: SettingsTranslations = { + // Tabs + systemSettings: "系统设置", + mailSettings: "邮件设置", + + // System Settings + appName: "应用名称", + appURL: "应用 URL", + senderName: "发送者名称", + senderEmail: "发送者邮箱地址", + hideControls: "隐藏控件", + + // Mail Settings + smtpSettings: "SMTP 配置", + smtpEnabled: "启用 SMTP", + smtpHost: "SMTP 主机", + smtpPort: "SMTP 端口", + smtpUsername: "SMTP 用户名", + smtpPassword: "SMTP 密码", + smtpAuthMethod: "认证方法", + enableTLS: "启用 TLS", + localName: "本地名称", + + // Test Email + testEmail: "测试邮箱", + sendTestEmail: "发送测试邮箱", + emailTemplate: "邮箱模板", + verification: "验证", + passwordReset: "密码重置", + confirmEmailChange: "确认邮箱变更", + otp: "OTP", + loginAlert: "登录警报", + authCollection: "认证集合", + selectCollection: "选择集合", + toEmailAddress: "收件人邮箱地址", + enterEmailAddress: "输入收件人邮箱地址", + sending: "发送中...", + + // Actions and status + save: "保存变更", + saving: "保存中...", + settingsUpdated: "设置已成功更新", + errorSavingSettings: "保存设置时出错", + errorFetchingSettings: "加载设置时出错", + testConnection: "测试连接", + testingConnection: "测试连接中...", + connectionSuccess: "连接成功", + connectionFailed: "连接失败" +}; diff --git a/application/src/translations/zhcn/ssl.ts b/application/src/translations/zhcn/ssl.ts new file mode 100644 index 0000000..a01249e --- /dev/null +++ b/application/src/translations/zhcn/ssl.ts @@ -0,0 +1,116 @@ + +import { SSLTranslations } from '../types/ssl'; + +export const sslTranslations: SSLTranslations = { + // Page and section titles + sslDomainManagement: "SSL & 域名管理", + monitorSSLCertificates: "监控和管理您的域名的 SSL 证书", + addSSLCertificate: "添加 SSL 证书", + editSSLCertificate: "编辑 SSL 证书", + deleteSSLCertificate: "删除 SSL 证书", + sslCertificateDetails: "SSL 证书详情", + detailedInfo: "关于", + viewDetailedInformation: "查看详细信息", + + // Status related + valid: "有效", + expiringSoon: "即将过期", + expired: "已过期", + pending: "待处理", + + // Statistics and cards + validCertificates: "有效证书", + expiringSoonCertificates: "即将过期", + expiredCertificates: "已过期", + + // Form fields + domain: "域", + domainName: "域名", + domainCannotChange: "域名创建后不能更改", + warningThreshold: "警告阈值", + warningThresholdDays: "警告阈值(天)", + expiryThreshold: "过期阈值", + expiryThresholdDays: "过期阈值(天)", + notificationChannel: "通知渠道", + chooseChannel: "选择通知渠道", + whereToSend: "通知渠道", + daysBeforeExpiration: "过期前警告天数", + daysBeforeCritical: "过期前关键警告天数", + getNotifiedExpiration: "获取证书即将过期的通知", + getNotifiedCritical: "获取证书即将过期的关键通知", + + // Table headers and fields + issuer: "发行机构", + expirationDate: "过期日期", + daysLeft: "剩余天数", + status: "状态", + lastNotified: "最后通知时间", + actions: "操作", + validFrom: "有效从", + validUntil: "有效至", + validityDays: "有效期天数", + validityPeriod: "有效期", + organization: "组织", + commonName: "通用名称", + serialNumber: "序列号", + algorithm: "算法", + subjectAltNames: "主题备用名称", + subjectAlternativeNames: "主题备用名称", + resolvedIP: "解析 IP", + issuedTo: "颁发给", + days: "天", + + // Buttons and actions + addDomain: "添加域名", + refreshAll: "刷新所有", + cancel: "取消", + addCertificate: "添加证书", + check: "检查", + view: "查看", + edit: "编辑", + delete: "删除", + close: "关闭", + saveChanges: "保存更改", + updating: "更新中", + + // Sections in detail view + basicInformation: "基本信息", + validity: "有效期", + issuerInfo: "发行机构信息", + technicalDetails: "技术详情", + technicalInformation: "技术信息", + monitoringConfig: "监控配置", + monitoringConfiguration: "监控配置", + recordInfo: "记录信息", + certificateDetails: "证书详情", + + // Notifications and messages + sslCertificateAdded: "SSL 证书添加成功", + sslCertificateUpdated: "SSL 证书更新成功", + sslCertificateDeleted: "SSL 证书删除成功", + sslCertificateRefreshed: "SSL 证书为 {domain} 刷新成功", + allCertificatesRefreshed: "所有 {count} 证书刷新成功", + someCertificatesFailed: "{success} 证书刷新成功,{failed} 失败", + failedToAddCertificate: "添加 SSL 证书失败", + failedToLoadCertificates: "加载 SSL 证书失败", + failedToUpdateCertificate: "更新 SSL 证书失败", + failedToDeleteCertificate: "删除 SSL 证书失败", + failedToCheckCertificate: "检查 SSL 证书失败", + noCertificatesToRefresh: "没有证书可刷新", + startingRefreshAll: "开始刷新 {count} 证书", + checkingSSLCertificate: "检查 SSL 证书...", + deleteConfirmation: "确定要删除 {domain} 的证书吗?", + deleteWarning: "此操作无法撤销。这将永久删除证书。", + + // Misc + unknown: "未知", + never: "从不", + none: "无", + loadingChannels: "加载通知渠道...", + noChannelsFound: "未找到通知渠道", + noSSLCertificates: "未找到 SSL 证书", + created: "创建时间", + lastUpdated: "最后更新时间", + lastNotification: "最后通知时间", + collectionId: "集合 ID" +}; diff --git a/docs/README_ja.md b/docs/README_ja.md index 7613903..356ffad 100644 --- a/docs/README_ja.md +++ b/docs/README_ja.md @@ -20,6 +20,12 @@
日本語 + + + Chinese +
Chinese +
+ @@ -208,4 +214,4 @@ CheckCleはMITライセンスの下でリリースされています。 [![Star History Chart](https://api.star-history.com/svg?repos=operacle/checkcle&type=Date)](https://www.star-history.com/#operacle/checkcle&Date) -CheckCleで情報を把握し、オンラインを維持しましょう! 🌐 \ No newline at end of file +CheckCleで情報を把握し、オンラインを維持しましょう! 🌐 diff --git a/docs/README_km.md b/docs/README_km.md index 43e10c2..4a057df 100644 --- a/docs/README_km.md +++ b/docs/README_km.md @@ -20,6 +20,12 @@
Japanese + + + Chinese +
Chinese +
+ diff --git a/docs/README_zhcn.md b/docs/README_zhcn.md new file mode 100644 index 0000000..e72b236 --- /dev/null +++ b/docs/README_zhcn.md @@ -0,0 +1,185 @@ +## 🌐 选择语言 + + + + + + + + +
+ + English +
English +
+
+ + Khmer +
ខ្មែរ +
+
+ + Japanese +
Japanese +
+
+ + Chinese +
Chinese +
+
+ +

+ 感谢所有的贡献者、用户和支持者,是你们让这个项目蓬勃发展。 +

+ +

+ 🚀 敬请关注更多更新、功能和改进。 +

+ +![CheckCle Platform](https://pub-4a4062303020445f8f289a2fee84f9e8.r2.dev/images/server-detail-page.png) + +# 🚀 CheckCle是什么?? + +CheckCle 是一款开源解决方案,用于对全栈系统、应用程序和基础设施进行无缝实时监控。它为开发人员、系统管理员和 DevOps 团队提供其环境各层(无论是服务器、应用程序还是服务)的深入洞察和可操作数据。借助 CheckCle,你可以在整个技术堆栈中获得可见性、控制权以及确保最佳性能的能力。 + +## 🎯 在线演示 +👉 **马上试试看:** [CheckCle Live Demo](https://demo.checkcle.io) + 用户名: admin@example.com | 密码: Admin123456 + +## 🌟 核心功能 +### 📝 开发路线图 : [DEVELOPMENT_ROADMAP](docs/DEVELOPMENT_ROADMAP.md) + +### 服务可用性与基础设施/服务器监控 +- 监控 HTTP、DNS 和 Ping 协议 +- 监控基于 TCP 的服务与 API(如 FTP、SMTP、HTTP) +- 跟踪详细的可用性(正常运行时间)、响应时间与性能问题 +- 分布式区域监控 +- 事件历史(UP / DOWN / WARNING / PAUSE:上线 / 下线 / 警告 / 暂停) +- SSL 与域名监控(域名、签发者、到期日期、剩余天数、状态、上次通知) +- 基础设施与服务器监控:支持 Linux(🐧Debian、Ubuntu、CentOS、Red Hat 等)与 Windows(Beta);提供 CPU、内存、磁盘使用、网络活动等服务器指标;一行命令安装的 Agent 脚本 +- 维护计划与事件管理 +- 运行状态 / 公共状态页 +- 通过电子邮件、Telegram、Discord 和 Slack 通知 +- 报告与分析 +- 设置面板(用户管理、数据保留、多语言、主题〔深色/浅色模式〕、通知渠道与告警模板) + +## #️⃣ 入门指南 + +### 当前架构支持 +* ✅ x86_64 PC、笔记本电脑、服务器 (amd64) +* ✅ 现代树莓派3/4/5(搭载64位操作系统)、Apple Silicon Macs (arm64) + +### 使用以下方法之一安装 CheckCle : + +1. 使用Docker Compose配置进行安装(推荐) +```bash + +version: '3.9' + +services: + checkcle: + image: operacle/checkcle:latest + container_name: checkcle + restart: unless-stopped + ports: + - "8090:8090" # Web 应用端口 + volumes: + - /opt/pb_data:/mnt/pb_data # 将主机目录映射到容器路径 + ulimits: + nofile: + soft: 4096 + hard: 8192 + +``` +2. 使用 docker run 进行安装。只需复制下面的 docker run 命令 +```bash +docker run -d \ + --name checkcle \ + --restart unless-stopped \ + -p 8090:8090 \ + -v /opt/pb_data:/mnt/pb_data \ + --ulimit nofile=4096:8192 \ + operacle/checkcle:latest + +``` + +3. 网页管理 + + 默认网址: http://0.0.0.0:8090 + 用户名: admin@example.com + 密码: Admin123456 + +4. 遵循以下快速入门指南 https://docs.checkcle.io + +### +![checkcle-collapse-black](https://pub-4a4062303020445f8f289a2fee84f9e8.r2.dev/images/uptime-1.4.png) +![Service Detail Page](https://cdn.checkcle.io/images/uptime/uptime-regional-detail.png) +![checkcle-server-instance](https://cdn.checkcle.io/images/server/server-list.png) +![SSL Monitoring](https://cdn.checkcle.io/images/ssl-domain/ssl-list.png) +![Schedule Maintenance](https://pub-4a4062303020445f8f289a2fee84f9e8.r2.dev/images/checkcle-schedule-maintenance.png) + + +## 🌟 面向社区的 CheckCle + +- 以热忱打造:由一位开源爱好者为社区创建 +- 免费且开源:完全免费,无任何隐藏费用 +- 协作与连接:结识同样热爱开源的志同道合者 + +--- + +## 赞助商 +🙏 我们非常感谢我们的赞助商。你们的贡献使我们能够维护基础设施(托管、域名)、运行测试,并继续开发有价值的功能。 + +### 🥈 白银在线保障合作伙伴 + + + + + +### 🧡 支持者 + + + + + +### 🤝 生态系统与社区合作伙伴 + + + + +--- + + +## 👥 贡献者 +感谢你为让CheckCle变得更好所做出的贡献与持续努力,你太棒了 🫶 + +[![](https://contrib.rocks/image?repo=operacle/checkcle)](https://github.com/operacle/checkcle/graphs/contributors) + +--- + +## 🤝 贡献方式 + +以下是你可以帮助改进 CheckCle 的一些方式: + +- 🐞 **报告问题** – 发现故障/异常?请在提交 [GitHub Issue](https://github.com/operacle/checkcle/issues) 告诉我们。 +- 🌟 **建议功能** – 有个点子?发起 [Discussion](https://github.com/operacle/checkcle/discussions) 讨论,或提交一个功能请求 [Feature Request Issue](https://github.com/operacle/checkcle/issues)。 +- 🛠 **提交 Pull Request** – 改进代码、修复缺陷、添加功能,或完善文档。 +- 📝 **改善文档** – 就算是修正一个错别字也很有帮助! +- 🌍 **传播项目** – 给 [CheckCle](https://github.com/operacle/checkcle.git) 仓库点个 Star ⭐,在社交平台分享,并邀请更多人参与贡献! + +--- + +## 🌍 联系我们 +- 网站: [checkcle.io](https://checkcle.io) +- 文档: [docs.checkcle.io](https://docs.checkcle.io) | 非常感谢 [GitBook](https://github.com/gitbookio) 赞助 CheckCle 的开源站点计划(OSS Site Plan)! +- 在 Discord 上聊天: 加入我们的 [@discord](https://discord.gg/xs9gbubGwX) 频道 +- 在 X 上关注我们: [@checkcle_oss](https://x.com/checkcle_oss) + +## 📜 许可证 + +CheckCle 遵循 MIT 许可证发布。 + +---