Merge branch 'canary' into feat/migration-templates

This commit is contained in:
Mauricio Siu
2025-03-09 12:36:14 -06:00
452 changed files with 78354 additions and 6009 deletions

View File

@@ -7,7 +7,7 @@ import {
} from "../utils";
export function generate(schema: Schema): Template {
const mainServiceHash = generateHash(schema.projectName);
const _mainServiceHash = generateHash(schema.projectName);
const domains: DomainSchema[] = [
{

View File

@@ -7,7 +7,7 @@ import {
} from "../utils";
export function generate(schema: Schema): Template {
const mainServiceHash = generateHash(schema.projectName);
const _mainServiceHash = generateHash(schema.projectName);
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [

View File

@@ -1,6 +1,6 @@
import type { Schema, Template } from "../utils";
export function generate(schema: Schema): Template {
export function generate(_schema: Schema): Template {
const envs = [`CLOUDFLARE_TUNNEL_TOKEN="<INSERT TOKEN>"`];
return {

View File

@@ -0,0 +1,96 @@
services:
pg-compeng:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_PASSWORD: "postgres"
POSTGRES_DB: postgres
POSTGRES_USER: postgres
control-api:
image: ghcr.io/datalens-tech/datalens-control-api:0.2192.0
restart: always
environment:
BI_API_UWSGI_WORKERS_COUNT: 4
CONNECTOR_AVAILABILITY_VISIBLE: "clickhouse,postgres,chyt,ydb,mysql,greenplum,mssql,appmetrica_api,metrika_api"
RQE_FORCE_OFF: 1
DL_CRY_ACTUAL_KEY_ID: key_1
DL_CRY_KEY_VAL_ID_key_1: "h1ZpilcYLYRdWp7Nk8X1M1kBPiUi8rdjz9oBfHyUKIk="
RQE_SECRET_KEY: ""
US_HOST: "http://us:8083"
US_MASTER_TOKEN: "fake-us-master-token"
depends_on:
- us
data-api:
container_name: datalens-data-api
image: ghcr.io/datalens-tech/datalens-data-api:0.2192.0
restart: always
environment:
GUNICORN_WORKERS_COUNT: 5
RQE_FORCE_OFF: 1
CACHES_ON: 0
MUTATIONS_CACHES_ON: 0
RQE_SECRET_KEY: ""
DL_CRY_ACTUAL_KEY_ID: key_1
DL_CRY_KEY_VAL_ID_key_1: "h1ZpilcYLYRdWp7Nk8X1M1kBPiUi8rdjz9oBfHyUKIk="
BI_COMPENG_PG_ON: 1
BI_COMPENG_PG_URL: "postgresql://postgres:postgres@pg-compeng:5432/postgres"
US_HOST: "http://us:8083"
US_MASTER_TOKEN: "fake-us-master-token"
depends_on:
- us
- pg-compeng
pg-us:
container_name: datalens-pg-us
image: postgres:16-alpine
restart: always
environment:
POSTGRES_DB: us-db-ci_purgeable
POSTGRES_USER: us
POSTGRES_PASSWORD: us
volumes:
- ${VOLUME_US:-./metadata}:/var/lib/postgresql/data
us:
image: ghcr.io/datalens-tech/datalens-us:0.310.0
restart: always
depends_on:
- pg-us
environment:
APP_INSTALLATION: "opensource"
APP_ENV: "prod"
MASTER_TOKEN: "fake-us-master-token"
POSTGRES_DSN_LIST: ${METADATA_POSTGRES_DSN_LIST:-postgres://us:us@pg-us:5432/us-db-ci_purgeable}
SKIP_INSTALL_DB_EXTENSIONS: ${METADATA_SKIP_INSTALL_DB_EXTENSIONS:-0}
USE_DEMO_DATA: ${USE_DEMO_DATA:-0}
HC: ${HC:-0}
NODE_EXTRA_CA_CERTS: /certs/root.crt
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./certs:/certs
datalens:
image: ghcr.io/datalens-tech/datalens-ui:0.2601.0
restart: always
ports:
- ${UI_PORT:-8080}:8080
depends_on:
- us
- control-api
- data-api
environment:
APP_MODE: "full"
APP_ENV: "production"
APP_INSTALLATION: "opensource"
AUTH_POLICY: "disabled"
US_ENDPOINT: "http://us:8083"
BI_API_ENDPOINT: "http://control-api:8080"
BI_DATA_ENDPOINT: "http://data-api:8080"
US_MASTER_TOKEN: "fake-us-master-token"
NODE_EXTRA_CA_CERTS: "/usr/local/share/ca-certificates/cert.pem"
HC: ${HC:-0}
YANDEX_MAP_ENABLED: ${YANDEX_MAP_ENABLED:-0}
YANDEX_MAP_TOKEN: ${YANDEX_MAP_TOKEN:-0}

View File

@@ -0,0 +1,23 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 8080,
serviceName: "datalens",
},
];
const envs = ["HC=1"];
return {
envs,
domains,
};
}

View File

@@ -8,7 +8,7 @@ import {
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const secretKeyBase = generateBase64(64);
const _secretKeyBase = generateBase64(64);
const domains: DomainSchema[] = [
{

View File

@@ -2,7 +2,6 @@ import {
type DomainSchema,
type Schema,
type Template,
generateHash,
generateRandomDomain,
} from "../utils";

View File

@@ -2,7 +2,6 @@ import {
type DomainSchema,
type Schema,
type Template,
generateHash,
generateRandomDomain,
} from "../utils";

View File

@@ -0,0 +1,45 @@
services:
web:
image: ghcr.io/hoarder-app/hoarder:0.22.0
restart: unless-stopped
volumes:
- hoarder-data:/data
ports:
- 3000
environment:
- DISABLE_SIGNUPS
- NEXTAUTH_URL
- NEXTAUTH_SECRET
- MEILI_ADDR=http://meilisearch:7700
- BROWSER_WEB_URL=http://chrome:9222
- DATA_DIR=/data
chrome:
image: gcr.io/zenika-hub/alpine-chrome:124
restart: unless-stopped
command:
- --no-sandbox
- --disable-gpu
- --disable-dev-shm-usage
- --remote-debugging-address=0.0.0.0
- --remote-debugging-port=9222
- --hide-scrollbars
meilisearch:
image: getmeili/meilisearch:v1.6
restart: unless-stopped
environment:
- MEILI_MASTER_KEY
- MEILI_NO_ANALYTICS="true"
volumes:
- meilisearch-data:/meili_data
healthcheck:
test:
- CMD
- curl
- '-f'
- 'http://127.0.0.1:7700/health'
interval: 2s
timeout: 10s
retries: 15
volumes:
meilisearch-data:
hoarder-data:

View File

@@ -0,0 +1,34 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const postgresPassword = generatePassword();
const nextSecret = generateBase64(32);
const meiliMasterKey = generateBase64(32);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "web",
},
];
const envs = [
`NEXTAUTH_SECRET=${nextSecret}`,
`MEILI_MASTER_KEY=${meiliMasterKey}`,
`NEXTAUTH_URL=http://${mainDomain}`,
];
return {
domains,
envs,
};
}

View File

@@ -11,7 +11,7 @@ export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const dbPassword = generatePassword();
const dbUser = "immich";
const appSecret = generateBase64(32);
const _appSecret = generateBase64(32);
const domains: DomainSchema[] = [
{

View File

@@ -41,7 +41,9 @@ services:
- setup
volumes:
- ../files/config.toml:/listmonk/config.toml
- listmonk-uploads:/listmonk/uploads
volumes:
listmonk-uploads:
listmonk-data:
driver: local

View File

@@ -2,8 +2,6 @@ import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generatePassword,
generateRandomDomain,
} from "../utils";

View File

@@ -2,7 +2,6 @@ import {
type DomainSchema,
type Schema,
type Template,
generateHash,
generatePassword,
generateRandomDomain,
} from "../utils";

View File

@@ -1,7 +1,7 @@
# This is an UNOFFICIAL production docker image build for Superset:
# - https://github.com/amancevice/docker-superset
# ## SETUP INSTRUCTIONS
#
# After deploying this image, you will need to run one of the two
@@ -10,7 +10,7 @@
# $ superset-init # Initialise database only
#
# You will be prompted to enter the credentials for the admin user.
# ## NETWORK INSTRUCTIONS
#
@@ -66,7 +66,7 @@ services:
timeout: 10s
retries: 3
superset_redis:
superset_redis:
image: redis
restart: always
volumes:

View File

@@ -93,6 +93,20 @@ export const templates: TemplateData[] = [
tags: ["monitoring"],
load: () => import("./grafana/index").then((m) => m.generate),
},
{
id: "datalens",
name: "DataLens",
version: "1.23.0",
description: "A modern, scalable business intelligence and data visualization system.",
logo: "datalens.svg",
links: {
github: "https://github.com/datalens-tech/datalens",
website: "https://datalens.tech/",
docs: "https://datalens.tech/docs/",
},
tags: ["analytics", "self-hosted", "bi", "monitoring"],
load: () => import("./datalens/index").then((m) => m.generate),
},
{
id: "directus",
name: "Directus",
@@ -692,6 +706,21 @@ export const templates: TemplateData[] = [
tags: ["self-hosted", "open-source", "manager"],
load: () => import("./hi-events/index").then((m) => m.generate),
},
{
id: "hoarder",
name: "Hoarder",
version: "0.22.0",
description:
'Hoarder is an open source "Bookmark Everything" app that uses AI for automatically tagging the content you throw at it.',
logo: "hoarder.svg",
links: {
github: "https://github.com/hoarder/hoarder",
website: "https://hoarder.app/",
docs: "https://docs.hoarder.app/",
},
tags: ["self-hosted", "bookmarks", "link-sharing"],
load: () => import("./hoarder/index").then((m) => m.generate),
},
{
id: "windows",
name: "Windows (dockerized)",

View File

@@ -1,4 +1,3 @@
import { Secrets } from "@/components/ui/secrets";
import {
type DomainSchema,
type Schema,

View File

@@ -1,6 +1,6 @@
import type { Schema, Template } from "../utils";
export function generate(schema: Schema): Template {
export function generate(_schema: Schema): Template {
const mounts: Template["mounts"] = [
{
filePath: "init-mongo.sh",

View File

@@ -3,7 +3,6 @@ import {
type Schema,
type Template,
generateBase64,
generateHash,
generateRandomDomain,
} from "../utils";

View File

@@ -17,15 +17,17 @@ services:
retries: 5
zipline:
image: ghcr.io/diced/zipline:3.7.9
image: ghcr.io/diced/zipline:4
restart: unless-stopped
environment:
- CORE_RETURN_HTTPS=${ZIPLINE_RETURN_HTTPS}
- CORE_SECRET=${ZIPLINE_SECRET}
- CORE_HOST=0.0.0.0
- CORE_HOSTNAME=0.0.0.0
- CORE_PORT=${ZIPLINE_PORT}
- CORE_DATABASE_URL=postgres://postgres:postgres@postgres/postgres
- DATABASE_URL=postgres://postgres:postgres@postgres/postgres
- CORE_LOGGER=${ZIPLINE_LOGGER}
- DATASOURCE_TYPE=local
- DATASOURCE_LOCAL_DIRECTORY=./uploads
volumes:
- "../files/uploads:/zipline/uploads"
- "../files/public:/zipline/public"