From 84554c0e4039e973a8bfb8ea478fb0b92dc4fdb4 Mon Sep 17 00:00:00 2001 From: syui Date: Wed, 3 Dec 2025 21:43:06 +0900 Subject: [PATCH] fix ozone --- envs/ozone | 2 + install.zsh | 8 +- patching/121-ozone-constants-fix.patch | 99 +++++++++++++++++++ .../130-atproto-ozone-enable-daemon-v2.patch | 28 ++++++ 4 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 patching/121-ozone-constants-fix.patch create mode 100644 patching/130-atproto-ozone-enable-daemon-v2.patch diff --git a/envs/ozone b/envs/ozone index 514fea6..72e89eb 100644 --- a/envs/ozone +++ b/envs/ozone @@ -25,3 +25,5 @@ OZONE_VERIFIER_DID OZONE_VERIFIER_PASSWORD OZONE_VERIFIER_ISSUERS_TO_INDEX OZONE_VERIFIER_JETSTREAM_URL + +OZONE_APPVIEW_PUSH_EVENTS=true diff --git a/install.zsh b/install.zsh index a71a699..758b81d 100755 --- a/install.zsh +++ b/install.zsh @@ -216,7 +216,7 @@ function at-repos-social-app-disable-external-services-patch() { function at-repos-atproto-service-ozone-api-patch() { f=$d/repos/atproto/services/ozone/api.js d_=$d/repos/atproto - p_=$d/patching/130-atproto-ozone-enable-daemon.patch + p_=$d/patching/130-atproto-ozone-enable-daemon-v2.patch echo "applying patch: under ${f} for ${p_}" pushd ${d_} patch -p1 < ${p_} @@ -241,6 +241,12 @@ function at-repos-ozone-patch() { pushd ${d_} patch -p1 < ${p_} popd + + p_=$d/patching/121-ozone-constants-fix.patch + echo "applying patch: under ${d_} for ${p_}" + pushd ${d_} + patch -p1 < ${p_} || true + popd #cp -rf $d/repos/atproto/service/ozone/* $d/ozone/service/ } diff --git a/patching/121-ozone-constants-fix.patch b/patching/121-ozone-constants-fix.patch new file mode 100644 index 0000000..9bfb576 --- /dev/null +++ b/patching/121-ozone-constants-fix.patch @@ -0,0 +1,99 @@ +--- lib/constants.ts.orig 2025-12-03 21:40:30.492849577 +0900 ++++ lib/constants.ts 2025-12-03 21:40:44.472862556 +0900 +@@ -1,29 +1,32 @@ ++import { env } from 'next-runtime-env'; ++ + export const OAUTH_SCOPE = 'atproto transition:generic transition:chat.bsky' + + export const OZONE_SERVICE_DID = +- process.env.NEXT_PUBLIC_OZONE_SERVICE_DID || undefined ++ env('NEXT_PUBLIC_OZONE_SERVICE_DID') || undefined + + export const OZONE_PUBLIC_URL = +- process.env.NEXT_PUBLIC_OZONE_PUBLIC_URL || undefined ++ env('NEXT_PUBLIC_OZONE_PUBLIC_URL') || undefined + + export const PLC_DIRECTORY_URL = +- process.env.NEXT_PUBLIC_PLC_DIRECTORY_URL || ++ env('NEXT_PUBLIC_PLC_DIRECTORY_URL') || + (process.env.NODE_ENV === 'development' + ? 'http://localhost:2582' + : 'https://plc.directory') + +-export const QUEUE_CONFIG = process.env.NEXT_PUBLIC_QUEUE_CONFIG || '{}' ++export const QUEUE_CONFIG = env('NEXT_PUBLIC_QUEUE_CONFIG') || '{}' + +-export const QUEUE_SEED = process.env.NEXT_PUBLIC_QUEUE_SEED || '' ++export const QUEUE_SEED = env('NEXT_PUBLIC_QUEUE_SEED') || '' + ++export const SOCIAL_APP_DOMAIN = env('NEXT_PUBLIC_SOCIAL_APP_DOMAIN') || 'bsky.app' + export const SOCIAL_APP_URL = +- process.env.NEXT_PUBLIC_SOCIAL_APP_URL || ++ env('NEXT_PUBLIC_SOCIAL_APP_URL') || + (process.env.NODE_ENV === 'development' + ? 'http://localhost:2584' +- : 'https://bsky.app') ++ : `https://${SOCIAL_APP_DOMAIN}`) + + export const HANDLE_RESOLVER_URL = +- process.env.NEXT_PUBLIC_HANDLE_RESOLVER_URL || ++ env('NEXT_PUBLIC_HANDLE_RESOLVER_URL') || + (process.env.NODE_ENV === 'development' + ? 'http://localhost:2584' + : 'https://api.bsky.app') +@@ -36,25 +39,25 @@ + + export const NEW_ACCOUNT_MARKER_THRESHOLD_IN_DAYS = process.env + .NEXT_PUBLIC_NEW_ACCOUNT_MARKER_THRESHOLD_IN_DAYS +- ? parseInt(process.env.NEXT_PUBLIC_NEW_ACCOUNT_MARKER_THRESHOLD_IN_DAYS) ++ ? parseInt(env('NEXT_PUBLIC_NEW_ACCOUNT_MARKER_THRESHOLD_IN_DAYS')) + : 7 + + export const YOUNG_ACCOUNT_MARKER_THRESHOLD_IN_DAYS = process.env + .NEXT_PUBLIC_YOUNG_ACCOUNT_MARKER_THRESHOLD_IN_DAYS +- ? parseInt(process.env.NEXT_PUBLIC_YOUNG_ACCOUNT_MARKER_THRESHOLD_IN_DAYS) ++ ? parseInt(env('NEXT_PUBLIC_YOUNG_ACCOUNT_MARKER_THRESHOLD_IN_DAYS')) + : 30 + + export const DOMAINS_ALLOWING_EMAIL_COMMUNICATION = ( +- process.env.NEXT_PUBLIC_DOMAINS_ALLOWING_EMAIL_COMMUNICATION || '' ++ env('NEXT_PUBLIC_DOMAINS_ALLOWING_EMAIL_COMMUNICATION') || '' + ).split(',') + + export const HIGH_PROFILE_FOLLOWER_THRESHOLD = process.env + .NEXT_PUBLIC_HIGH_PROFILE_FOLLOWER_THRESHOLD +- ? parseInt(process.env.NEXT_PUBLIC_HIGH_PROFILE_FOLLOWER_THRESHOLD) ++ ? parseInt(env('NEXT_PUBLIC_HIGH_PROFILE_FOLLOWER_THRESHOLD')) + : Infinity + + export const FALLBACK_VIDEO_URL = ( +- process.env.NEXT_PUBLIC_FALLBACK_VIDEO_URL || '' ++ env('NEXT_PUBLIC_FALLBACK_VIDEO_URL') || '' + ).split(':') + + // strike to account suspension duration mapping (in hours) +@@ -87,18 +90,18 @@ + + export const STRIKE_TO_SUSPENSION_DURATION_IN_HOURS = + parseStrikeSuspensionConfig( +- process.env.NEXT_PUBLIC_STRIKE_SUSPENSION_CONFIG || '', ++ env('NEXT_PUBLIC_STRIKE_SUSPENSION_CONFIG') || '', + ) + + export const AUTOMATED_ACTION_EMAIL_IDS = { + warningWithTakedown: +- process.env.NEXT_PUBLIC_WARNING_WITH_TAKEDOWN_EMAIL_TEMPLATE_ID, ++ env('NEXT_PUBLIC_WARNING_WITH_TAKEDOWN_EMAIL_TEMPLATE_ID'), + suspensionWithTakedown: +- process.env.NEXT_PUBLIC_SUSPENSION_WITH_TAKEDOWN_EMAIL_TEMPLATE_ID, ++ env('NEXT_PUBLIC_SUSPENSION_WITH_TAKEDOWN_EMAIL_TEMPLATE_ID'), + suspensionWithoutTakedown: +- process.env.NEXT_PUBLIC_SUSPENSION_WITHOUT_TAKEDOWN_EMAIL_TEMPLATE_ID, ++ env('NEXT_PUBLIC_SUSPENSION_WITHOUT_TAKEDOWN_EMAIL_TEMPLATE_ID'), + permanentTakedown: +- process.env.NEXT_PUBLIC_PERMANENT_TAKEDOWN_EMAIL_TEMPLATE_ID, ++ env('NEXT_PUBLIC_PERMANENT_TAKEDOWN_EMAIL_TEMPLATE_ID'), + takedownWithoutStrike: +- process.env.NEXT_PUBLIC_TAKEDOWN_WITHOUT_STRIKE_EMAIL_TEMPLATE_ID, ++ env('NEXT_PUBLIC_TAKEDOWN_WITHOUT_STRIKE_EMAIL_TEMPLATE_ID'), + } diff --git a/patching/130-atproto-ozone-enable-daemon-v2.patch b/patching/130-atproto-ozone-enable-daemon-v2.patch new file mode 100644 index 0000000..b0af644 --- /dev/null +++ b/patching/130-atproto-ozone-enable-daemon-v2.patch @@ -0,0 +1,28 @@ +--- services/ozone/api.js.bak 2025-09-13 11:20:42.318186422 +0900 ++++ services/ozone/api.js 2025-12-03 21:39:22.825832316 +0900 +@@ -23,6 +23,7 @@ + Database, + OzoneService, + envToCfg, ++ OzoneDaemon, + envToSecrets, + httpLogger, + readEnv, +@@ -79,10 +80,17 @@ + + httpLogger.info('ozone is running') + ++ // Start OzoneDaemon for label events ++ httpLogger.info('starting ozone daemon') ++ const daemon = await OzoneDaemon.create(cfg, secrets) ++ await daemon.start() ++ httpLogger.info('ozone daemon is running') ++ + // Graceful shutdown (see also https://aws.amazon.com/blogs/containers/graceful-shutdowns-with-ecs/) + process.on('SIGTERM', async () => { + httpLogger.info('ozone is stopping') + ++ await daemon.destroy() + await ozone.destroy() + + httpLogger.info('ozone is stopped')