This repository has no description
1.5 kB
40 lines
1import { Container } from "@cloudflare/containers";
2import type { DurableObject } from "cloudflare:workers";
3
4interface ContainerEnv {
5 CARRY_GITHUB_TOKEN: string;
6 OBSIDIAN_AUTH_TOKEN: string;
7 OBSIDIAN_ENCRYPTION_KEY: string;
8 OBSIDIAN_ENCRYPTION_SALT: string;
9}
10
11export class StrataContainer extends Container<ContainerEnv> {
12 defaultPort = 8080;
13 sleepAfter = "5m";
14
15 constructor(ctx: DurableObject["ctx"], env: ContainerEnv) {
16 super(ctx, env);
17 // Set env vars before container starts — inject secrets from worker bindings
18 this.envVars = {
19 VAULT_PATH: "/data/vault",
20 CARRY_PATH: "/data/carry",
21 CARRY_BRANCH: "main",
22 ...(env.CARRY_GITHUB_TOKEN ? { CARRY_GITHUB_TOKEN: env.CARRY_GITHUB_TOKEN } : {}),
23 ...(env.OBSIDIAN_AUTH_TOKEN ? { OBSIDIAN_AUTH_TOKEN: env.OBSIDIAN_AUTH_TOKEN } : {}),
24 OBSIDIAN_VAULT_ID: "6472c50492efb918c2878e61048218f2",
25 OBSIDIAN_VAULT_NAME: "notes",
26 OBSIDIAN_SYNC_HOST: "sync-53.obsidian.md",
27 ...(env.OBSIDIAN_ENCRYPTION_KEY ? { OBSIDIAN_ENCRYPTION_KEY: env.OBSIDIAN_ENCRYPTION_KEY } : {}),
28 ...(env.OBSIDIAN_ENCRYPTION_SALT ? { OBSIDIAN_ENCRYPTION_SALT: env.OBSIDIAN_ENCRYPTION_SALT } : {}),
29 };
30 }
31
32 async onStart() {
33 const has = (k: string) => !!this.envVars?.[k];
34 console.log("[strata-container] started, carry:", has("CARRY_GITHUB_TOKEN") ? "set" : "missing", "obsidian:", has("OBSIDIAN_AUTH_TOKEN") ? "set" : "missing");
35 }
36
37 async onStop() {
38 console.log("[strata-container] stopped");
39 }
40}