mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
Merge branch 'canary' into canary
This commit is contained in:
@@ -35,45 +35,34 @@ export function TerminalLine({ log, noTimestamp, searchTerm }: LogLineProps) {
|
|||||||
})
|
})
|
||||||
: "--- No time found ---";
|
: "--- No time found ---";
|
||||||
|
|
||||||
const highlightMessage = (text: string, term: string) => {
|
const highlightMessage = (text: string, term: string) => {
|
||||||
if (!term) {
|
if (!term) {
|
||||||
|
return (
|
||||||
|
<span
|
||||||
|
className="transition-colors"
|
||||||
|
dangerouslySetInnerHTML={{
|
||||||
|
__html: fancyAnsi.toHtml(text),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const htmlContent = fancyAnsi.toHtml(text);
|
||||||
|
const searchRegex = new RegExp(`(${escapeRegExp(term)})`, "gi");
|
||||||
|
|
||||||
|
const modifiedContent = htmlContent.replace(
|
||||||
|
searchRegex,
|
||||||
|
(match) =>
|
||||||
|
`<span class="bg-orange-200/80 dark:bg-orange-900/80 font-bold">${match}</span>`,
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<span
|
<span
|
||||||
className="transition-colors"
|
className="transition-colors"
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{ __html: modifiedContent }}
|
||||||
__html: fancyAnsi.toHtml(text),
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
const htmlContent = fancyAnsi.toHtml(text);
|
|
||||||
const modifiedContent = htmlContent.replace(
|
|
||||||
/<span([^>]*)>([^<]*)<\/span>/g,
|
|
||||||
(match, attrs, content) => {
|
|
||||||
const searchRegex = new RegExp(`(${escapeRegExp(term)})`, "gi");
|
|
||||||
if (!content.match(searchRegex)) return match;
|
|
||||||
|
|
||||||
const segments = content.split(searchRegex);
|
|
||||||
const wrappedSegments = segments
|
|
||||||
.map((segment: string) =>
|
|
||||||
segment.toLowerCase() === term.toLowerCase()
|
|
||||||
? `<span${attrs} class="bg-yellow-200/50 dark:bg-yellow-900/50">${segment}</span>`
|
|
||||||
: segment,
|
|
||||||
)
|
|
||||||
.join("");
|
|
||||||
|
|
||||||
return `<span${attrs}>${wrappedSegments}</span>`;
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<span
|
|
||||||
className="transition-colors"
|
|
||||||
dangerouslySetInnerHTML={{ __html: modifiedContent }}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const tooltip = (color: string, timestamp: string | null) => {
|
const tooltip = (color: string, timestamp: string | null) => {
|
||||||
const square = (
|
const square = (
|
||||||
|
|||||||
6
apps/dokploy/public/templates/mailpit.svg
Normal file
6
apps/dokploy/public/templates/mailpit.svg
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg width="500" height="460" viewBox="0 0 132.292 121.708" version="1.1" id="svg6" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs id="defs10"/>
|
||||||
|
<path d="M12.321 0l53.861 53.918L120.365 0zM5.155 9.025l60.842 59.673 61.211-59.489-.185 36.835L66.921 70.54l15.164 12.616-8.137 5.986-41.609.184c-4.838-.022-25.877-18.34-27.185-41.255z" fill-opacity=".941" fill="#2d4a5f" id="path2" style="fill:#ffffff;fill-opacity:1"/>
|
||||||
|
<path d="M78.385 72.049l53.907-21.679-8.031 57.318-11.845-9.132c-21.727 23.171-45.255 26.289-67.997 20.837S12.281 98.39 5.155 83.8-.67 53.116 2.843 38.769c1.13 10.511-1.313 16.316 6.38 33.612 6.31 11.399 14.413 20.417 25.89 24.956 13.9 6.195 32.247 3.357 41.701-3.039l14.24-12.156z" fill="#00b786" id="path4"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 828 B |
25
apps/dokploy/templates/mailpit/docker-compose.yml
Normal file
25
apps/dokploy/templates/mailpit/docker-compose.yml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
services:
|
||||||
|
mailpit:
|
||||||
|
image: axllent/mailpit:v1.22.3
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- '1025:1025'
|
||||||
|
volumes:
|
||||||
|
- 'mailpit-data:/data'
|
||||||
|
environment:
|
||||||
|
- MP_SMTP_AUTH_ALLOW_INSECURE=true
|
||||||
|
- MP_MAX_MESSAGES=5000
|
||||||
|
- MP_DATABASE=/data/mailpit.db
|
||||||
|
- MP_UI_AUTH=${MP_UI_AUTH}
|
||||||
|
- MP_SMTP_AUTH=${MP_SMTP_AUTH}
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
- CMD
|
||||||
|
- /mailpit
|
||||||
|
- readyz
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mailpit-data:
|
||||||
31
apps/dokploy/templates/mailpit/index.ts
Normal file
31
apps/dokploy/templates/mailpit/index.ts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import {
|
||||||
|
type DomainSchema,
|
||||||
|
type Schema,
|
||||||
|
type Template,
|
||||||
|
generateBase64,
|
||||||
|
generatePassword,
|
||||||
|
generateRandomDomain,
|
||||||
|
} from "../utils";
|
||||||
|
|
||||||
|
export function generate(schema: Schema): Template {
|
||||||
|
const domains: DomainSchema[] = [
|
||||||
|
{
|
||||||
|
host: generateRandomDomain(schema),
|
||||||
|
port: 8025,
|
||||||
|
serviceName: "mailpit",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const defaultPassword = generatePassword();
|
||||||
|
|
||||||
|
const envs = [
|
||||||
|
"# Uncomment below if you want basic auth on UI and SMTP",
|
||||||
|
`#MP_UI_AUTH=mailpit:${defaultPassword}`,
|
||||||
|
`#MP_SMTP_AUTH=mailpit:${defaultPassword}`,
|
||||||
|
];
|
||||||
|
|
||||||
|
return {
|
||||||
|
domains,
|
||||||
|
envs,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -25,8 +25,8 @@ export const templates: TemplateData[] = [
|
|||||||
"Outline is a self-hosted knowledge base and documentation platform that allows you to build and manage your own knowledge base applications.",
|
"Outline is a self-hosted knowledge base and documentation platform that allows you to build and manage your own knowledge base applications.",
|
||||||
links: {
|
links: {
|
||||||
github: "https://github.com/outline/outline",
|
github: "https://github.com/outline/outline",
|
||||||
website: "https://outline.com/",
|
website: "https://getoutline.com/",
|
||||||
docs: "https://docs.outline.com/",
|
docs: "https://docs.getoutline.com/s/guide",
|
||||||
},
|
},
|
||||||
logo: "outline.png",
|
logo: "outline.png",
|
||||||
load: () => import("./outline/index").then((m) => m.generate),
|
load: () => import("./outline/index").then((m) => m.generate),
|
||||||
@@ -393,6 +393,21 @@ export const templates: TemplateData[] = [
|
|||||||
tags: ["chat"],
|
tags: ["chat"],
|
||||||
load: () => import("./open-webui/index").then((m) => m.generate),
|
load: () => import("./open-webui/index").then((m) => m.generate),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "mailpit",
|
||||||
|
name: "Mailpit",
|
||||||
|
version: "v1.22.3",
|
||||||
|
description:
|
||||||
|
"Mailpit is a tiny, self-contained, and secure email & SMTP testing tool with API for developers.",
|
||||||
|
logo: "mailpit.svg",
|
||||||
|
links: {
|
||||||
|
github: "https://github.com/axllent/mailpit",
|
||||||
|
website: "https://mailpit.axllent.org/",
|
||||||
|
docs: "https://mailpit.axllent.org/docs/",
|
||||||
|
},
|
||||||
|
tags: ["email", "smtp"],
|
||||||
|
load: () => import("./mailpit/index").then((m) => m.generate),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "listmonk",
|
id: "listmonk",
|
||||||
name: "Listmonk",
|
name: "Listmonk",
|
||||||
@@ -426,7 +441,7 @@ export const templates: TemplateData[] = [
|
|||||||
{
|
{
|
||||||
id: "umami",
|
id: "umami",
|
||||||
name: "Umami",
|
name: "Umami",
|
||||||
version: "v2.14.0",
|
version: "v2.16.1",
|
||||||
description:
|
description:
|
||||||
"Umami is a simple, fast, privacy-focused alternative to Google Analytics.",
|
"Umami is a simple, fast, privacy-focused alternative to Google Analytics.",
|
||||||
logo: "umami.png",
|
logo: "umami.png",
|
||||||
@@ -1574,3 +1589,4 @@ export const templates: TemplateData[] = [
|
|||||||
load: () => import("./wikijs/index").then((m) => m.generate),
|
load: () => import("./wikijs/index").then((m) => m.generate),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
umami:
|
umami:
|
||||||
image: ghcr.io/umami-software/umami:postgresql-v2.14.0
|
image: ghcr.io/umami-software/umami:postgresql-v2.16.1
|
||||||
restart: always
|
restart: always
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
|
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
|
||||||
|
|||||||
Reference in New Issue
Block a user