Skip to content

Operations

Set DOCUMENTS_DISK=s3 with Laravel's AWS_* variables. Set CACHE_STORE=redis, SESSION_DRIVER=redis, and QUEUE_CONNECTION=redis with REDIS_*. No code change is required.

Set STRIPE_KEY, STRIPE_SECRET, and STRIPE_WEBHOOK_SECRET before paid plans. Worker hosts require Node.js and production npm dependencies. PDF generation requires LibreOffice; template previews require LibreOffice and Poppler's pdftoppm. Set LIBREOFFICE_BINARY and PDFTOPPM_BINARY to absolute executable paths when queue workers do not inherit the interactive shell's PATH.

Smart parsing requires OPENAI_API_KEY; OPENAI_BASE_URL and OPENAI_TEMPLATE_MODEL may override the endpoint and model. Configure Google and Facebook login with their client ID, client secret, and callback URI variables. Both callbacks must point to /auth/{provider}/callback on the matching application origin.

APP_DOCS_URL controls the /docs redirect. Local development defaults to the VitePress dev server URL in .env.example; production should use https://docs.dokusablon.com.

Set MAINTENANCE_MODE=true in production to replace every web route with the localized coming-soon page. The response uses HTTP 503 with a one-hour Retry-After header; API routes and /up remain available. The installer enables this mode by default, and a later release can expose the application by setting the variable to false and running php artisan optimize.

Run web/PHP, Redis-backed queue workers, the scheduler, and built Vite assets. Publish the VitePress output from npm run docs:build as the document root of docs.dokusablon.com; the application redirects the legacy /docs path to that English documentation site.

Ubuntu deployment

scripts/install.sh provisions PHP 8.4, Nginx, MySQL, Redis, Supervisor, Node.js, LibreOffice, Poppler, the application domains, and the documentation subdomain on a new Ubuntu host. Pass REPO_URL and optionally override APP_DIR, DEPLOY_USER, database variables, or ENABLE_TLS.

scripts/update.sh performs a fast-forward-only update, installs locked dependencies, builds the application and docs, runs migrations, refreshes Laravel caches, restarts the queue workers, and queues missing previews for existing ready templates. The deploy GitHub Actions workflow runs this script over SSH after the tests workflow succeeds on main. Configure the production environment secrets SSH_HOST, SSH_PORT, SSH_USER, SSH_PRIVATE_KEY, and DEPLOY_PATH.

Verification: vendor/bin/pest --compact, vendor/bin/pint --dirty --format agent, composer types:check, npm run types:check, npm run build, and npm run docs:build.