forked fromdflow-sh/dflow
- Notifications
You must be signed in to change notification settings - Fork0
License
NotificationsYou must be signed in to change notification settings
saashqdev/dflow
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Dflow is a self-hosted platform for deploying and managing applications, similarto Vercel, Railway, or Heroku. dFlow provides automated deployment workflows,container orchestration, and infrastructure management capabilities while givingyou full control over your infrastructure and data.
This guide walks you through setting up and running your own self-hostedinstance of dFlow, a powerful workflow management platform, using Docker Composeand Tailscale.
- Docker
- Docker Compose
- A Tailscale account
git clone https://github.com/akhil-naidu/dflow/cd dflow- Login totailscale and go to the Admin Console.
- Update Access controls
{ "tagOwners": { "tag:customer-machine": ["autogroup:admin"], "tag:dflow-proxy": ["autogroup:admin"], "tag:dflow-support": ["autogroup:admin"], }, "grants": [ { "src": ["autogroup:admin"], "dst": ["tag:customer-machine"], "ip": ["*"], }, { "src": ["tag:dflow-proxy"], "dst": ["tag:customer-machine"], "ip": ["*"], }, { "src": ["tag:dflow-support"], "dst": ["tag:customer-machine"], "ip": ["*"], }, ], "ssh": [ { "action": "accept", "src": ["autogroup:admin", "tag:dflow-support"], "dst": ["tag:customer-machine"], "users": ["autogroup:admin", "root"], }, ],} - Create Keys
- Go to settings.
- Navigate to Personal Settings > Keys
- Generate auth key
- Navigate to Tailnet Settings > OAuth clients
- Generate OAuth client with all read permissions and write permissionfor auth keys.
Setup DNS records with your provider:
Type: A, Name: *.subdomain Value: <your-server-ip> Proxy: OFFCreate .env file & add the requried variables.
# mongodbMONGO_INITDB_ROOT_USERNAME=adminMONGO_INITDB_ROOT_PASSWORD=passwordMONGO_DB_NAME=dFlow# config-generatorWILD_CARD_DOMAIN=up.example.comJWT_TOKEN=your-jwt-tokenPROXY_PORT=9999# dFlow appNEXT_PUBLIC_WEBSITE_URL=dflow.up.example.comDATABASE_URI=mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@mongodb:27017/${MONGO_DB_NAME}?authSource=adminPAYLOAD_SECRET=your-secretNEXT_PUBLIC_PROXY_DOMAIN_URL=https://dflow-traefik.up.example.comNEXT_PUBLIC_PROXY_CNAME=cname.up.example.com# tailscaleTAILSCALE_AUTH_KEY=tskey-auth-xxxxTAILSCALE_OAUTH_CLIENT_SECRET=tskey-client-xxxxTAILSCALE_TAILNET=your-tailnet-name# Better stack - For telemetryNEXT_PUBLIC_BETTER_STACK_SOURCE_TOKEN=bstk-xxxNEXT_PUBLIC_BETTER_STACK_INGESTING_URL=https://logs.betterstack.com# resend - For email configurationsRESEND_API_KEY=re_12345RESEND_SENDER_EMAIL=no-reply@up.example.comRESEND_SENDER_NAME=dFlow System
source .envdocker build \ --build-arg NEXT_PUBLIC_WEBSITE_URL=$NEXT_PUBLIC_WEBSITE_URL \ --build-arg DATABASE_URI=$DATABASE_URI \ --build-arg REDIS_URI=$REDIS_URI \ --build-arg PAYLOAD_SECRET=$PAYLOAD_SECRET \ --build-arg TAILSCALE_AUTH_KEY=$TAILSCALE_AUTH_KEY \ --build-arg TAILSCALE_OAUTH_CLIENT_SECRET=$TAILSCALE_OAUTH_CLIENT_SECRET \ --build-arg TAILSCALE_TAILNET=$TAILSCALE_TAILNET \ --build-arg NEXT_PUBLIC_PROXY_DOMAIN_URL=$NEXT_PUBLIC_PROXY_DOMAIN_URL \ --build-arg NEXT_PUBLIC_PROXY_CNAME=$NEXT_PUBLIC_PROXY_CNAME \ --build-arg NEXT_PUBLIC_BETTER_STACK_SOURCE_TOKEN=$NEXT_PUBLIC_BETTER_STACK_SOURCE_TOKEN \ --build-arg NEXT_PUBLIC_BETTER_STACK_INGESTING_URL=$NEXT_PUBLIC_BETTER_STACK_INGESTING_URL \ --build-arg RESEND_API_KEY=$RESEND_API_KEY \ --build-arg RESEND_SENDER_EMAIL=$RESEND_SENDER_EMAIL \ --build-arg RESEND_SENDER_NAME=$RESEND_SENDER_NAME \ -t dflow .Create
traefik.yamlfile at the root directory.Change the email
entryPoints: web: address: ":80" websecure: address: ":443"providers: file: directory: /etc/traefik/dynamic watch: truecertificatesResolvers: letsencrypt: acme: email: johndoe@example.com storage: /etc/traefik/acme.json httpChallenge: entryPoint: web # Used for app-specific domainsapi: dashboard: false insecure: false # ⚠️ Secure this in productionlog: level: INFOCreate and secure
acme.json:touch acme.jsonchmod 600 acme.json
docker compose --env-file .env up -dMake aPOST request to complete initial setup:
http://<YOUR_SERVER_IP>:9999/configurationAbout
Resources
License
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published
Languages
- TypeScript99.4%
- Other0.6%