Files
lfnovo--open-notebook/examples/easypanel/index.ts
T
2026-07-13 12:10:23 +08:00

81 lines
1.9 KiB
TypeScript

import {
Output,
randomPassword,
randomString,
Services,
} from "~templates-utils";
import { Input } from "./meta";
export function generate(input: Input): Output {
const services: Services = [];
const appPassword = input.appPassword || randomPassword();
const databasePassword = randomPassword();
const encryptionKey = randomString(64);
services.push({
type: "app",
data: {
serviceName: input.databaseServiceName,
env: [`SURREAL_EXPERIMENTAL_GRAPHQL=true`].join("\n"),
source: {
type: "image",
image: input.databaseServiceImage,
},
deploy: {
command: [
"start",
"--log info",
"--user root",
`--pass ${databasePassword}`,
"--bind 0.0.0.0:8000",
"rocksdb:/mydata/mydatabase.db",
].join(" "),
},
mounts: [
{
type: "volume",
name: "surreal-data",
mountPath: "/mydata",
},
],
},
});
services.push({
type: "app",
data: {
serviceName: input.appServiceName,
env: [
`API_URL=https://$(PRIMARY_DOMAIN)`,
`INTERNAL_API_URL=http://localhost:5055`,
`OPEN_NOTEBOOK_ENCRYPTION_KEY=${encryptionKey}`,
`OPEN_NOTEBOOK_PASSWORD=${appPassword}`,
`SURREAL_URL=ws://$(PROJECT_NAME)_${input.databaseServiceName}:8000/rpc`,
`SURREAL_USER=root`,
`SURREAL_PASSWORD=${databasePassword}`,
`SURREAL_NAMESPACE=open_notebook`,
`SURREAL_DATABASE=open_notebook`,
].join("\n"),
source: {
type: "image",
image: input.appServiceImage,
},
domains: [
{
host: "$(EASYPANEL_DOMAIN)",
port: 8502,
},
],
mounts: [
{
type: "volume",
name: "notebook-data",
mountPath: "/app/data",
},
],
},
});
return { services };
}