Dastyare SocialDastyare Social — Docs

Installation

Every way to install DS-CS — Docker one-command, manual compose, from source, VPS — plus all environment variables.

All installation methods for DS-CS. Pick one: A (recommended), B (manual Docker), or C (from source). Vercel has its own page: Deploy on Vercel.

Prerequisites

  • Docker + Docker Compose (methods A and B): docker --version / docker compose versionhttps://docs.docker.com/get-docker/
  • curl
  • Bun (method C + local DB tooling): curl -fsSL https://bun.sh/install | bash
  • openssl for secrets (preinstalled on macOS/Linux)
  • Node.js 20+ only for npx web-push generate-vapid-keys and the Vercel CLI
  • Production: a domain with HTTPS (required for push) and open ports 8729 (app), 9000/9001 (S3 console)

Generate secrets with:

openssl rand -base64 32   # BETTER_AUTH_SECRET
openssl rand -hex 32      # API_KEY
npx web-push generate-vapid-keys   # VAPID push keys
curl -fsSL https://raw.githubusercontent.com/dastyare-social/DS-CS/main/scripts/install.sh | bash

The script prompts for admin Email/Password, creates .env with defaults and generated secrets, then runs docker compose pull + docker compose up -d under the pinned project name ds-cs (resources prefixed ds-cs-*). Open http://localhost:8729.

Review the generated .env before production use.

Option B — manual Docker Compose

1. Download the compose file:

curl -fsSL https://raw.githubusercontent.com/dastyare-social/DS-CS/main/docker-compose.yml -o docker-compose.yml

2. Create env:

curl -fsSL https://raw.githubusercontent.com/dastyare-social/DS-CS/main/.env.example -o .env.example
cp .env.example .env

Edit .env — at minimum ADMIN_EMAIL, ADMIN_PASSWORD, BETTER_AUTH_SECRET, API_KEY, BETTER_AUTH_URL, NEXT_PUBLIC_APP_URL (see Environment variables).

3. Start:

docker compose up -d
docker compose ps
docker compose logs -f app

The app container runs migrations, bootstraps the admin, seeds the avatar, uploads emojis, generates icons and starts Next.js automatically. Open http://localhost:8729.

Option C — from source with Bun

Needs Bun, Node 20+ and PostgreSQL (local or managed).

git clone https://github.com/dastyare-social/DS-CS.git
cd DS-CS
cp .env.example .env   # fill in DATABASE_URL + the rest below
bun install
bun run db:migrate
bun run bootstrap:admin
bun run dev

Open http://localhost:8729.

CommandWhat it does
bun run devConfig + icons, dev server on :8729
bun run buildConfig → icons → emojis → migrate → bootstrap → next build (needs DATABASE_URL, ADMIN_*)
bun run startProduction server on :8729
bun run db:generate / db:migrate / db:studioCreate / apply migrations / DB GUI
bun run generate:configRegenerate app config from config/app.config.yml
bun run bootstrap:adminCreate/update admin from env
bun run openapi:generateRegenerate public/openapi.json

Environment variables

Copy .env.example to .env. Never commit .env. Every variable — what it does, whether it is Essential or Optional, and how to get its value — is documented on the Environment variables page. At minimum set ADMIN_EMAIL, ADMIN_PASSWORD, BETTER_AUTH_SECRET, API_KEY, BETTER_AUTH_URL and NEXT_PUBLIC_APP_URL.

Brand files (no rebuild)

config/app.config.yml (channel name/description), config/about.config.yml (enabled first key controls /about), public/profile-image.png (avatar) — bind-mounted, edits apply on reload.

VPS + reverse proxy

Point DNS at your server, forward HTTPS to 8729. Caddy:

your-domain.com {
  reverse_proxy localhost:8729
}

Nginx:

server {
  listen 443 ssl;
  server_name your-domain.com;
  location / {
    proxy_pass http://localhost:8729;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Set BETTER_AUTH_URL and NEXT_PUBLIC_APP_URL to https://your-domain.com. Keep 9000/9001 private.

Verify

  • / loads, header avatar shows
  • /os login with admin credentials works
  • Text post + image post publish (media uploads to S3)
  • Story publishes and plays
  • /docs and /openapi.json render
  • /sitemap.xml, /robots.txt, /llms.txt reachable

Troubleshooting

SymptomFix
Ports taken / Docker downStart Docker, free 8729/9000
Bootstrap failsSet ADMIN_EMAIL / ADMIN_PASSWORD
403 on writesDEMO_MODE=true or wrong Authorization: Bearer <API_KEY>
Upload 400Exceeds MEDIA_MAX_* or MIME not allowed
Upload fails silentlyS3 CORS — origin must match NEXT_PUBLIC_APP_URL
Push “Setup required”VAPID keys missing or not a matching pair
SEO not indexedNEXT_PUBLIC_ALLOW_INDEXING is not true

Support: hey@dastyare.social.

Loading repository…

On this page