Replace S3 storage with Docker-mounted filesystem

- Add Docker and Compose deployment with persistent HTML and Postgres volumes
- Remove AWS storage configuration and dependency
- Document local Docker setup and filesystem storage
This commit is contained in:
2026-08-22 00:39:53 -04:00 Verified
parent 75719cefc0
commit 8ac7db77fc
9 changed files with 136 additions and 79 deletions
+4 -9
View File
@@ -4,18 +4,13 @@ export const config = {
bootstrapApiKey: process.env.POSTPLAN_BOOTSTRAP_API_KEY,
publicBaseUrl: process.env.POSTPLAN_PUBLIC_BASE_URL,
maxHtmlBytes: Number(process.env.MAX_HTML_BYTES || 512 * 1024),
// Directory for uploaded HTML. In Docker this is /data/html and should be a
// mounted volume so drafts survive container recreation.
htmlDir: process.env.POSTPLAN_HTML_DIR || "./data/html",
// Web sign-in (dashboard). Absent POSTPLAN_SESSION_SECRET, all web-auth
// routes respond 503 and the API/serving paths are unaffected.
sessionSecret: process.env.POSTPLAN_SESSION_SECRET,
shooBaseUrl: (process.env.SHOO_BASE_URL || "https://shoo.dev").replace(/\/+$/, ""),
s3: {
endpoint: process.env.AWS_ENDPOINT_URL || process.env.S3_ENDPOINT,
accessKeyId: process.env.AWS_ACCESS_KEY_ID || process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || process.env.S3_SECRET_ACCESS_KEY,
bucketName: process.env.AWS_S3_BUCKET_NAME || process.env.S3_BUCKET_NAME,
region: process.env.AWS_DEFAULT_REGION || process.env.AWS_REGION || "auto",
forcePathStyle: (process.env.AWS_S3_FORCE_PATH_STYLE || "true") !== "false"
}
shooBaseUrl: (process.env.SHOO_BASE_URL || "https://shoo.dev").replace(/\/+$/, "")
};
export function requireEnv(name, value) {