Closes storytold/artcraft#1301 Adds `build/selfhost/`, a Docker Compose setup that runs `storyteller-web` with MySQL 8.4, Redis, Elasticsearch and SeaweedFS (S3-compatible storage). - A `migrate` service applies `_database/sql/migrations` in order and records them in `__diesel_schema_migrations`, so reruns only apply new migrations. - `storage-init` creates the three buckets the server expects. - The server image is built from `build/service_cpu.Dockerfile`. - `.env.example` lists every variable the server requires at startup, with placeholders for third-party providers. SeaweedFS is used because MinIO no longer publishes Docker images. **Tested locally (Docker Desktop on Windows):** image build, all 285 migrations (plus a rerun), `GET /_status` healthy, model listing, account creation and login, and an image upload stored in the bucket. **Not included:** background workers, Elasticsearch index setup.
60 lines
1.8 KiB
Bash
60 lines
1.8 KiB
Bash
# Copy this file to `.env` and change the values.
|
|
# `.env` is ignored by git; never commit real keys.
|
|
|
|
# ----- Local infrastructure (used by docker-compose.yml) -----
|
|
|
|
MYSQL_ROOT_PASSWORD=change-me-root
|
|
MYSQL_PASSWORD=change-me
|
|
|
|
# Credentials for the local S3-compatible storage (SeaweedFS).
|
|
S3_ACCESS_KEY=artcraft
|
|
S3_SECRET_KEY=change-me-please
|
|
|
|
# ----- storyteller-web settings -----
|
|
|
|
# Cookies are served over plain HTTP locally.
|
|
COOKIE_SECURE=false
|
|
COOKIE_DOMAIN=localhost
|
|
COOKIE_SECRET=change-me
|
|
SORT_KEY_SECRET=change-me
|
|
WEBSITE_HOMEPAGE_REDIRECT=http://localhost:4201
|
|
|
|
ENABLE_PAGING=false
|
|
NUM_WORKERS=4
|
|
|
|
# ----- Third-party providers -----
|
|
# storyteller-web requires these to be set at startup. Placeholders let the server
|
|
# start; features backed by a provider only work once you add a real key.
|
|
|
|
FAL_API_KEY=unset
|
|
FAL_WEBHOOK_URL=http://localhost:12345/v1/webhooks/fal
|
|
GMICLOUD_API_KEY=unset
|
|
GROK_API_KEY=unset
|
|
OPENAI_API_KEY=unset
|
|
WORLDLABS_API_KEY=unset
|
|
BEEBLE_API_KEY=unset
|
|
BEEBLE_WEBHOOK_URL=http://localhost:12345/v1/webhooks/beeble
|
|
SEEDANCE2PRO_COOKIES=unset
|
|
SEEDANCE2PRO_WHITELIST_COOKIES=unset
|
|
SEEDANCE2PRO_BYTEPLUS_ULTRA_COOKIES=unset
|
|
|
|
# Email (Resend)
|
|
RESEND_API_KEY=unset
|
|
|
|
# ----- Stripe (billing) -----
|
|
|
|
STRIPE_SECRET_KEY=unset
|
|
STRIPE_SECRET_WEBHOOK_SIGNING_KEY=unset
|
|
STRIPE_FAKEYOU_ACCOUNT_ID=unset
|
|
STRIPE_PORTAL_DEFAULT_CONFIG_ID=unset
|
|
STRIPE_CHECKOUT_SUCCESS_URL_PATH=/checkout_success
|
|
STRIPE_CHECKOUT_CANCEL_URL_PATH=/checkout_cancel
|
|
STRIPE_PORTAL_RETURN_URL_PATH=/portal_success
|
|
|
|
STRIPE_ARTCRAFT_ACCOUNT_ID=unset
|
|
STRIPE_ARTCRAFT_SECRET_KEY=unset
|
|
STRIPE_ARTCRAFT_SECRET_WEBHOOK_KEY=unset
|
|
STRIPE_ARTCRAFT_CHECKOUT_SUCCESS_URL=http://localhost:4201/checkout_success
|
|
STRIPE_ARTCRAFT_CHECKOUT_CANCEL_URL=http://localhost:4201/checkout_cancel
|
|
STRIPE_ARTCRAFT_PORTAL_RETURN_URL=http://localhost:4201/portal_closed
|