mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
Merge pull request #459 from seppulcro/feat/add-roundcube-template
feat: add roundcube template
This commit is contained in:
commit
5867a27901
@ -31,8 +31,7 @@ The following templates are available:
|
|||||||
- **Wordpress**: Open Source Content Management System
|
- **Wordpress**: Open Source Content Management System
|
||||||
- **Open WebUI**: Free and Open Source ChatGPT Alternative
|
- **Open WebUI**: Free and Open Source ChatGPT Alternative
|
||||||
- **Teable**: Open Source Airtable Alternative, Developer Friendly, No-code Database Built on Postgres
|
- **Teable**: Open Source Airtable Alternative, Developer Friendly, No-code Database Built on Postgres
|
||||||
|
- **Roundcube**: Free and open source webmail software for the masses, written in PHP, uses SMTP[^1].
|
||||||
|
|
||||||
|
|
||||||
## Create your own template
|
## Create your own template
|
||||||
|
|
||||||
@ -41,3 +40,5 @@ We accept contributions to upload new templates to the dokploy repository.
|
|||||||
Make sure to follow the guidelines for creating a template:
|
Make sure to follow the guidelines for creating a template:
|
||||||
|
|
||||||
[Steps to create your own template](https://github.com/Dokploy/dokploy/blob/canary/CONTRIBUTING.md#templates)
|
[Steps to create your own template](https://github.com/Dokploy/dokploy/blob/canary/CONTRIBUTING.md#templates)
|
||||||
|
|
||||||
|
[^1]: Please note that if you're self-hosting a mail server you need port 25 to be open for SMTP (Mail Transmission Protocol that allows you to send and receive) to work properly. Some VPS providers like [Hetzner](https://docs.hetzner.com/cloud/servers/faq/#why-can-i-not-send-any-mails-from-my-server) block this port by default for new clients.
|
||||||
|
@ -10,8 +10,10 @@ export function useMDXComponents(components: MDXComponents): MDXComponents {
|
|||||||
p: ({ children }) => (
|
p: ({ children }) => (
|
||||||
<p className="text-[#3E4342] dark:text-muted-foreground">{children}</p>
|
<p className="text-[#3E4342] dark:text-muted-foreground">{children}</p>
|
||||||
),
|
),
|
||||||
li: ({ children }) => (
|
li: ({ children, id }) => (
|
||||||
<li className="text-[#3E4342] dark:text-muted-foreground">{children}</li>
|
<li {...{ id }} className="text-[#3E4342] dark:text-muted-foreground">
|
||||||
|
{children}
|
||||||
|
</li>
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
15
apps/dokploy/public/templates/roundcube.svg
Normal file
15
apps/dokploy/public/templates/roundcube.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="9.14 141.8 573.65 573.65">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#404F54;}
|
||||||
|
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#E5E5E5;}
|
||||||
|
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#CCCCCC;}
|
||||||
|
.st3{fill-rule:evenodd;clip-rule:evenodd;fill:#37BEFF;}
|
||||||
|
</style>
|
||||||
|
<polygon class="st3" points="582.79,549.77 295.96,384.1 295.96,207.27 582.79,372.95 "/>
|
||||||
|
<polygon class="st0" points="9.14,549.77 295.96,384.1 295.96,207.27 9.14,372.95 "/>
|
||||||
|
<path class="st2" d="M295.96,141.8c109.56,0,198.41,88.85,198.41,198.41c0,109.56-88.85,198.41-198.41,198.41 c-109.56,0-198.41-88.85-198.41-198.41C97.55,230.65,186.4,141.8,295.96,141.8"/>
|
||||||
|
<path class="st1" d="M295.96,141.8c109.6,0,198.48,88.85,198.48,198.41c0,109.56-88.88,198.41-198.48,198.41 c-62.91-42.34-88.94-127.64-88.94-198.3S233.05,184.22,295.96,141.8"/>
|
||||||
|
<polygon class="st3" points="582.79,372.95 295.96,538.62 295.96,715.45 582.79,549.77 "/>
|
||||||
|
<polygon class="st0" points="9.14,372.95 295.96,538.62 295.96,715.45 9.14,549.77 "/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
17
apps/dokploy/templates/roundcube/docker-compose.yml
Normal file
17
apps/dokploy/templates/roundcube/docker-compose.yml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
services:
|
||||||
|
roundcubemail:
|
||||||
|
image: roundcube/roundcubemail:1.6.9-apache
|
||||||
|
volumes:
|
||||||
|
- ./www:/var/www/html
|
||||||
|
- ./db/sqlite:/var/roundcube/db
|
||||||
|
environment:
|
||||||
|
- ROUNDCUBEMAIL_DB_TYPE=sqlite
|
||||||
|
- ROUNDCUBEMAIL_SKIN=elastic
|
||||||
|
- ROUNDCUBEMAIL_DEFAULT_HOST=${DEFAULT_HOST}
|
||||||
|
- ROUNDCUBEMAIL_SMTP_SERVER=${SMTP_SERVER}
|
||||||
|
networks:
|
||||||
|
- dokploy-network
|
||||||
|
|
||||||
|
networks:
|
||||||
|
dokploy-network:
|
||||||
|
external: true
|
24
apps/dokploy/templates/roundcube/index.ts
Normal file
24
apps/dokploy/templates/roundcube/index.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import {
|
||||||
|
type DomainSchema,
|
||||||
|
type Schema,
|
||||||
|
type Template,
|
||||||
|
generateRandomDomain,
|
||||||
|
} from "../utils";
|
||||||
|
|
||||||
|
export function generate(schema: Schema): Template {
|
||||||
|
const randomDomain = generateRandomDomain(schema);
|
||||||
|
const envs = [
|
||||||
|
"DEFAULT_HOST=tls://mail.example.com",
|
||||||
|
"SMTP_SERVER=tls://mail.example.com",
|
||||||
|
];
|
||||||
|
|
||||||
|
const domains: DomainSchema[] = [
|
||||||
|
{
|
||||||
|
host: randomDomain,
|
||||||
|
port: 80,
|
||||||
|
serviceName: "roundcubemail",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
return { envs, domains };
|
||||||
|
}
|
@ -497,4 +497,19 @@ export const templates: TemplateData[] = [
|
|||||||
tags: ["self-hosted", "storage"],
|
tags: ["self-hosted", "storage"],
|
||||||
load: () => import("./gitea/index").then((m) => m.generate),
|
load: () => import("./gitea/index").then((m) => m.generate),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "roundcube",
|
||||||
|
name: "Roundcube",
|
||||||
|
version: "1.6.9",
|
||||||
|
description:
|
||||||
|
"Free and open source webmail software for the masses, written in PHP.",
|
||||||
|
logo: "roundcube.svg",
|
||||||
|
links: {
|
||||||
|
github: "https://github.com/roundcube/roundcubemail",
|
||||||
|
website: "https://roundcube.net/",
|
||||||
|
docs: "https://roundcube.net/about/",
|
||||||
|
},
|
||||||
|
tags: ["self-hosted", "email", "webmail"],
|
||||||
|
load: () => import("./roundcube/index").then((m) => m.generate),
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
Loading…
Reference in New Issue
Block a user