Merge branch 'canary' into canary

This commit is contained in:
Mauricio Siu 2024-11-26 22:30:17 -06:00 committed by GitHub
commit 58e6462ff1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 192 additions and 78 deletions

View File

@ -37,7 +37,7 @@ const appearanceFormSchema = z.object({
theme: z.enum(["light", "dark", "system"], {
required_error: "Please select a theme.",
}),
language: z.enum(["en", "pl", "ru", "de", "zh-Hans"], {
language: z.enum(["en", "pl", "ru", "de", "zh-Hant", "zh-Hans"], {
required_error: "Please select a language.",
}),
});
@ -177,7 +177,8 @@ export function AppearanceForm() {
{ label: "Polski", value: "pl" },
{ label: "Русский", value: "ru" },
{ label: "Deutsch", value: "de" },
{ label: "简体中文", value: "zh-Hans" },
{ label: "繁體中文", value: "zh-Hant" },
{ label: "简体中文", value: "zh-Hans" }
].map((preset) => (
<SelectItem key={preset.label} value={preset.value}>
{preset.label}

View File

@ -2,7 +2,7 @@
module.exports = {
i18n: {
defaultLocale: "en",
locales: ["en", "pl", "ru", "de", "zh-Hans"],
locales: ["en", "pl", "ru", "de", "zh-Hant", "zh-Hans"],
localeDetection: false,
},
fallbackLng: "en",

View File

@ -71,7 +71,7 @@ export default api.withTRPC(
{
i18n: {
defaultLocale: "en",
locales: ["en", "pl", "ru", "de", "zh-Hans"],
locales: ["en", "pl", "ru", "de", "zh-Hant", "zh-Hans"],
localeDetection: false,
},
fallbackLng: "en",

View File

@ -0,0 +1,40 @@
{
"settings.common.save": "儲存",
"settings.server.domain.title": "伺服器網域",
"settings.server.domain.description": "將一個網域加入到您的伺服器。",
"settings.server.domain.form.domain": "網域",
"settings.server.domain.form.letsEncryptEmail": "Let's Encrypt 郵箱",
"settings.server.domain.form.certificate.label": "憑證",
"settings.server.domain.form.certificate.placeholder": "選擇一個憑證",
"settings.server.domain.form.certificateOptions.none": "無",
"settings.server.domain.form.certificateOptions.letsencrypt": "Let's Encrypt (預設)",
"settings.server.webServer.title": "Web 伺服器",
"settings.server.webServer.description": "管理 Web 伺服器。",
"settings.server.webServer.actions": "操作",
"settings.server.webServer.reload": "重新載入",
"settings.server.webServer.watchLogs": "查看日誌",
"settings.server.webServer.server.label": "伺服器",
"settings.server.webServer.traefik.label": "Traefik",
"settings.server.webServer.traefik.modifyEnv": "修改環境變數",
"settings.server.webServer.storage.label": "磁碟空間",
"settings.server.webServer.storage.cleanUnusedImages": "清理未使用的映像檔",
"settings.server.webServer.storage.cleanUnusedVolumes": "清理未使用的磁碟區",
"settings.server.webServer.storage.cleanStoppedContainers": "清理已停止的容器",
"settings.server.webServer.storage.cleanDockerBuilder": "清理 Docker Builder 和系統快取",
"settings.server.webServer.storage.cleanMonitoring": "清理監控",
"settings.server.webServer.storage.cleanAll": "清理所有",
"settings.profile.title": "帳戶偏好",
"settings.profile.description": "更改您的個人資料詳情。",
"settings.profile.email": "電子郵件",
"settings.profile.password": "密碼",
"settings.profile.avatar": "頭像",
"settings.appearance.title": "外觀",
"settings.appearance.description": "自訂儀表板主題。",
"settings.appearance.theme": "主題",
"settings.appearance.themeDescription": "選擇儀表板主題",
"settings.appearance.themes.light": "亮",
"settings.appearance.themes.dark": "暗",
"settings.appearance.themes.system": "系統",
"settings.appearance.language": "語言",
"settings.appearance.languageDescription": "選擇儀表板語言"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -79,6 +79,8 @@ export const composeRouter = createTRPCRouter({
if (ctx.user.rol === "user") {
await addNewService(ctx.user.authId, newService.composeId);
}
return newService;
} catch (error) {
throw error;
}

View File

@ -1,14 +1,13 @@
version: "3.8"
services:
mysql:
tickets-postgres:
image: mysql:8
restart: unless-stopped
hostname: mysql
networks:
- dokploy-network
volumes:
- tickets-mysql:/var/lib/mysql
- tickets-mysql-data:/var/lib/mysql
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
@ -20,23 +19,22 @@ services:
timeout: 5s
retries: 5
bot:
tickets-app:
image: eartharoid/discord-tickets:4.0.21
depends_on:
mysql:
tickets-postgres:
condition: service_healthy
restart: unless-stopped
hostname: bot
networks:
- dokploy-network
volumes:
- tickets-bot:/home/container/user
- tickets-app-data:/home/container/user
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
tty: true
stdin_open: true
environment:
DB_CONNECTION_URL: mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@mysql/${MYSQL_DATABASE}
DB_CONNECTION_URL: mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@tickets-postgres/${MYSQL_DATABASE}
DISCORD_SECRET: ${DISCORD_SECRET}
DISCORD_TOKEN: ${DISCORD_TOKEN}
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
@ -49,6 +47,10 @@ services:
PUBLISH_COMMANDS: "true"
SUPER: ${SUPER_USERS}
networks:
dokploy-network:
external: true
volumes:
tickets-mysql:
tickets-bot:
tickets-mysql-data:
tickets-app-data:

View File

@ -13,7 +13,6 @@ export function generate(schema: Schema): Template {
const mysqlUser = "tickets";
const mysqlDatabase = "tickets";
// Generate encryption key in the format they use
const encryptionKey = Array.from({ length: 48 }, () =>
Math.floor(Math.random() * 16).toString(16),
).join("");
@ -22,7 +21,7 @@ export function generate(schema: Schema): Template {
{
host: mainDomain,
port: 8169,
serviceName: "bot",
serviceName: "tickets-app",
},
];
@ -33,7 +32,6 @@ export function generate(schema: Schema): Template {
`MYSQL_ROOT_PASSWORD=${mysqlRootPassword}`,
`MYSQL_USER=${mysqlUser}`,
`ENCRYPTION_KEY=${encryptionKey}`,
// These need to be set by the user through the UI
"# Follow the guide at: https://discordtickets.app/self-hosting/installation/docker/#creating-the-discord-application",
"DISCORD_SECRET=",
"DISCORD_TOKEN=",

View File

@ -1,12 +1,12 @@
version: "3.8"
services:
invoiceshelf_db:
invoiceshelf-postgres:
image: postgres:15
networks:
- dokploy-network
volumes:
- postgres_data:/var/lib/postgresql/data
- invoiceshelf-postgres-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_USER=${DB_USERNAME}
@ -17,13 +17,13 @@ services:
timeout: 5s
retries: 5
invoiceshelf:
invoiceshelf-app:
image: invoiceshelf/invoiceshelf:latest
networks:
- dokploy-network
volumes:
- app_data:/data
- app_conf:/conf
- invoiceshelf-app-data:/data
- invoiceshelf-app-conf:/conf
environment:
- PHP_TZ=UTC
- TIMEZONE=UTC
@ -32,7 +32,7 @@ services:
- APP_DEBUG=false
- APP_URL=http://${INVOICESHELF_HOST}
- DB_CONNECTION=pgsql
- DB_HOST=invoiceshelf_db
- DB_HOST=invoiceshelf-postgres
- DB_PORT=5432
- DB_DATABASE=${DB_DATABASE}
- DB_USERNAME=${DB_USERNAME}
@ -46,10 +46,14 @@ services:
- SANCTUM_STATEFUL_DOMAINS=${INVOICESHELF_HOST}
- STARTUP_DELAY=10
depends_on:
invoiceshelf_db:
invoiceshelf-postgres:
condition: service_healthy
networks:
dokploy-network:
external: true
volumes:
postgres_data:
app_data:
app_conf:
invoiceshelf-postgres-data:
invoiceshelf-app-data:
invoiceshelf-app-conf:

View File

@ -16,7 +16,7 @@ export function generate(schema: Schema): Template {
{
host: mainDomain,
port: 80,
serviceName: "invoiceshelf",
serviceName: "invoiceshelf-app",
},
];

View File

@ -0,0 +1,14 @@
services:
ontime:
image: getontime/ontime:v3.8.0
ports:
- 4001
- 8888
- 9999
volumes:
- ontime-data:/data/
environment:
- TZ
restart: unless-stopped
volumes:
ontime-data:

View File

@ -0,0 +1,25 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 4001,
serviceName: "ontime",
},
];
const envs = ["TZ=UTC"];
return {
domains,
envs,
};
}

View File

@ -1,13 +1,13 @@
version: "3.8"
services:
peppermint_postgres:
peppermint-postgres:
image: postgres:latest
restart: always
networks:
- dokploy-network
volumes:
- pgdata:/var/lib/postgresql/data
- peppermint-postgres-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: peppermint
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
@ -18,19 +18,23 @@ services:
timeout: 5s
retries: 5
peppermint:
peppermint-app:
image: pepperlabs/peppermint:latest
restart: always
networks:
- dokploy-network
depends_on:
peppermint_postgres:
peppermint-postgres:
condition: service_healthy
environment:
DB_USERNAME: "peppermint"
DB_PASSWORD: ${POSTGRES_PASSWORD}
DB_HOST: "peppermint_postgres"
DB_HOST: "peppermint-postgres"
SECRET: ${SECRET}
networks:
dokploy-network:
external: true
volumes:
pgdata:
peppermint-postgres-data:

View File

@ -8,27 +8,24 @@ import {
} from "../utils";
export function generate(schema: Schema): Template {
// Generate domains and secrets
const mainDomain = generateRandomDomain(schema);
const apiDomain = generateRandomDomain(schema);
const postgresPassword = generatePassword();
const secret = generateBase64(32);
// Configure domain routing
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "peppermint",
serviceName: "peppermint-app",
},
{
host: apiDomain,
port: 5003,
serviceName: "peppermint",
serviceName: "peppermint-app",
},
];
// Set environment variables
const envs = [
`MAIN_DOMAIN=${mainDomain}`,
`API_DOMAIN=${apiDomain}`,

View File

@ -1,7 +1,7 @@
version: "3.8"
services:
postiz:
postiz-app:
image: ghcr.io/gitroomhq/postiz-app:latest
restart: always
networks:
@ -37,7 +37,7 @@ services:
POSTGRES_USER: ${DB_USER}
POSTGRES_DB: ${DB_NAME}
volumes:
- postgres-volume:/var/lib/postgresql/data
- postiz-postgres-data:/var/lib/postgresql/data
healthcheck:
test: pg_isready -U ${DB_USER} -d ${DB_NAME}
interval: 10s
@ -57,8 +57,12 @@ services:
volumes:
- postiz-redis-data:/data
networks:
dokploy-network:
external: true
volumes:
postgres-volume:
postiz-postgres-data:
postiz-redis-data:
postiz-config:
postiz-uploads:

View File

@ -18,7 +18,7 @@ export function generate(schema: Schema): Template {
{
host: mainDomain,
port: 5000,
serviceName: "postiz",
serviceName: "postiz-app",
},
];

View File

@ -1,26 +1,26 @@
version: "3.8"
services:
slash:
slash-app:
image: yourselfhosted/slash:latest
networks:
- dokploy-network
volumes:
- slash_data:/var/opt/slash
- slash-app-data:/var/opt/slash
environment:
- SLASH_DRIVER=postgres
- SLASH_DSN=postgresql://${DB_USER}:${DB_PASSWORD}@db:5432/${DB_NAME}?sslmode=disable
- SLASH_DSN=postgresql://${DB_USER}:${DB_PASSWORD}@slash-postgres:5432/${DB_NAME}?sslmode=disable
depends_on:
db:
slash-postgres:
condition: service_healthy
restart: unless-stopped
db:
slash-postgres:
image: postgres:16-alpine
networks:
- dokploy-network
volumes:
- postgres_data:/var/lib/postgresql/data
- slash-postgres-data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
@ -32,6 +32,10 @@ services:
retries: 5
restart: unless-stopped
networks:
dokploy-network:
external: true
volumes:
slash_data:
postgres_data:
slash-app-data:
slash-postgres-data:

View File

@ -16,7 +16,7 @@ export function generate(schema: Schema): Template {
{
host: mainDomain,
port: 5231,
serviceName: "slash",
serviceName: "slash-app",
},
];

View File

@ -957,4 +957,19 @@ export const templates: TemplateData[] = [
tags: ["media", "photos", "self-hosted"],
load: () => import("./photoprism/index").then((m) => m.generate),
},
{
id: "ontime",
name: "Ontime",
version: "v3.8.0",
description:
"Ontime is browser-based application that manages event rundowns, scheduliing and cuing",
logo: "ontime.png",
links: {
github: "https://github.com/cpvalente/ontime/",
website: "https://getontime.no",
docs: "https://docs.getontime.no",
},
tags: ["event"],
load: () => import("./ontime/index").then((m) => m.generate),
},
];

View File

@ -1,12 +1,12 @@
version: "3.8"
services:
db:
windmill-postgres:
image: postgres:16
shm_size: 1g
restart: unless-stopped
volumes:
- db_data:/var/lib/postgresql/data
- windmill-postgres-data:/var/lib/postgresql/data
networks:
- dokploy-network
environment:
@ -18,7 +18,7 @@ services:
timeout: 5s
retries: 5
windmill_server:
windmill-server:
image: ghcr.io/windmill-labs/windmill:main
networks:
- dokploy-network
@ -28,12 +28,12 @@ services:
- MODE=server
- BASE_URL=http://${WINDMILL_HOST}
depends_on:
db:
windmill-postgres:
condition: service_healthy
volumes:
- worker_logs:/tmp/windmill/logs
- windmill-worker-logs:/tmp/windmill/logs
windmill_worker:
windmill-worker:
image: ghcr.io/windmill-labs/windmill:main
deploy:
replicas: 3
@ -49,14 +49,14 @@ services:
- MODE=worker
- WORKER_GROUP=default
depends_on:
db:
windmill-postgres:
condition: service_healthy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- worker_dependency_cache:/tmp/windmill/cache
- worker_logs:/tmp/windmill/logs
- windmill-worker-cache:/tmp/windmill/cache
- windmill-worker-logs:/tmp/windmill/logs
windmill_worker_native:
windmill-worker-native:
image: ghcr.io/windmill-labs/windmill:main
deploy:
replicas: 1
@ -74,20 +74,20 @@ services:
- NUM_WORKERS=8
- SLEEP_QUEUE=200
depends_on:
db:
windmill-postgres:
condition: service_healthy
volumes:
- worker_logs:/tmp/windmill/logs
- windmill-worker-logs:/tmp/windmill/logs
lsp:
windmill-lsp:
image: ghcr.io/windmill-labs/windmill-lsp:latest
restart: unless-stopped
networks:
- dokploy-network
volumes:
- lsp_cache:/root/.cache
- windmill-lsp-cache:/root/.cache
caddy:
windmill-caddy:
image: ghcr.io/windmill-labs/caddy-l4:latest
restart: unless-stopped
networks:
@ -97,11 +97,15 @@ services:
environment:
- BASE_URL=":80"
depends_on:
- windmill_server
- lsp
- windmill-server
- windmill-lsp
networks:
dokploy-network:
external: true
volumes:
db_data:
worker_dependency_cache:
worker_logs:
lsp_cache:
windmill-postgres-data:
windmill-worker-cache:
windmill-worker-logs:
windmill-lsp-cache:

View File

@ -14,14 +14,14 @@ export function generate(schema: Schema): Template {
{
host: mainDomain,
port: 80,
serviceName: "caddy",
serviceName: "windmill-caddy",
},
];
const envs = [
`WINDMILL_HOST=${mainDomain}`,
`POSTGRES_PASSWORD=${postgresPassword}`,
`DATABASE_URL=postgres://postgres:${postgresPassword}@db/windmill?sslmode=disable`,
`DATABASE_URL=postgres://postgres:${postgresPassword}@windmill-postgres/windmill?sslmode=disable`,
];
const mounts: Template["mounts"] = [
@ -29,8 +29,8 @@ export function generate(schema: Schema): Template {
filePath: "Caddyfile",
content: `:80 {
bind 0.0.0.0
reverse_proxy /ws/* http://lsp:3001
reverse_proxy /* http://windmill_server:8000
reverse_proxy /ws/* http://windmill-lsp:3001
reverse_proxy /* http://windmill-server:8000
}`,
},
];

View File

@ -1,6 +1,6 @@
import Cookies from "js-cookie";
const SUPPORTED_LOCALES = ["en", "pl", "ru", "de", "zh-Hans"] as const;
const SUPPORTED_LOCALES = ["en", "pl", "ru", "de", "zh-Hant", "zh-Hans"] as const;
type Locale = (typeof SUPPORTED_LOCALES)[number];