Skip to main content

Configuration

TryPost is configured through environment variables in the .env file.

Basic Configuration

APP_NAME="TryPost"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost
VariableDescription
APP_NAMEYour application name
APP_ENVEnvironment: local, staging, production
APP_DEBUGEnable debug mode (set to false in production)
APP_URLYour application URL

Self-Hosted Mode

SELF_HOSTED=true
When SELF_HOSTED=true, TryPost runs without any payment or subscription requirements. This is the default for self-hosted installations. What changes in self-hosted mode:
  • No Stripe configuration required
  • No subscription or payment checks
  • Unlimited workspaces per user
  • All features available without restrictions
If you’re running TryPost as a SaaS with payments, set SELF_HOSTED=false and configure Stripe.

Database

TryPost supports PostgreSQL and MySQL.
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=trypost
DB_USERNAME=postgres
DB_PASSWORD=your_password

MySQL

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=trypost
DB_USERNAME=root
DB_PASSWORD=your_password

Redis

Redis is required for queues and caching.
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

File Storage

TryPost supports local storage and S3-compatible cloud storage.

Local Storage (default)

FILESYSTEM_DISK=local

AWS S3

FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=your_key
AWS_SECRET_ACCESS_KEY=your_secret
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=your_bucket
AWS_URL=https://your-bucket.s3.amazonaws.com

Cloudflare R2

FILESYSTEM_DISK=r2
R2_ACCESS_KEY_ID=your_key
R2_SECRET_ACCESS_KEY=your_secret
R2_ENDPOINT=https://your-account.r2.cloudflarestorage.com
R2_REGION=auto
R2_BUCKET=your_bucket
R2_URL=https://your-custom-domain.com

Other S3-Compatible Storage

Any S3-compatible storage (MinIO, DigitalOcean Spaces, etc.) can be used with the s3 disk configuration.

Mail

TryPost sends transactional emails for post notifications, team invites, account alerts, and authentication (email verification, password reset). A working mail configuration is required.

SendKit (default)

TryPost uses SendKit as the default mailer — no extra configuration needed.
SendKit offers a free plan with 3,000 emails/month, which is more than enough for a self-hosted TryPost instance to handle post notifications, team invites, and account alerts.
MAIL_MAILER=sendkit
SENDKIT_API_KEY=sk_your_sendkit_api_key
MAIL_FROM_ADDRESS="notifications@yourdomain.com"
MAIL_FROM_NAME="${APP_NAME}"

SMTP

If you prefer to use your own SMTP server:
MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="notifications@yourdomain.com"
MAIL_FROM_NAME="${APP_NAME}"

Emails sent by TryPost

EmailWhen it’s sent
Post publishedA scheduled post was successfully published
Post failedA post failed to publish on one or more platforms
Account disconnectedA social account lost its authorization and needs reconnection
Connections checkMultiple accounts in a workspace were found disconnected
Workspace inviteA team member is invited to join a workspace
Email verificationA new user needs to verify their email address
Password resetA user requests a password reset

WebSockets (Reverb)

TryPost uses Laravel Reverb for real-time updates (live post status, notifications).
REVERB_APP_ID=1001
REVERB_APP_KEY=your-reverb-key
REVERB_APP_SECRET=your-reverb-secret
REVERB_HOST="localhost"
REVERB_PORT=8080
REVERB_SCHEME=http

VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
VITE_REVERB_HOST="${REVERB_HOST}"
VITE_REVERB_PORT="${REVERB_PORT}"
VITE_REVERB_SCHEME="${REVERB_SCHEME}"
VariableDescription
REVERB_APP_IDUnique application ID
REVERB_APP_KEYApplication key for client connections
REVERB_APP_SECRETSecret key for server-side authentication
REVERB_HOSTWebSocket server host
REVERB_PORTWebSocket server port
REVERB_SCHEMEProtocol: http or https
In production, set REVERB_SCHEME=https and use a reverse proxy to handle SSL termination for WebSocket connections.

Social Platforms

Each social platform requires API credentials from its developer portal. See each platform’s documentation for step-by-step setup.
Bluesky and Mastodon don’t require API credentials — they work out of the box.

All platform credentials

# LinkedIn (https://developer.linkedin.com)
LINKEDIN_CLIENT_ID=
LINKEDIN_CLIENT_SECRET=
LINKEDIN_CLIENT_REDIRECT="${APP_URL}/accounts/linkedin/callback"
LINKEDIN_PAGE_CLIENT_REDIRECT="${APP_URL}/accounts/linkedin-page/callback"

# X / Twitter (https://developer.twitter.com)
X_CLIENT_ID=
X_CLIENT_SECRET=
X_CLIENT_REDIRECT="${APP_URL}/accounts/x/callback"

# Facebook (https://developers.facebook.com)
FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET=
FACEBOOK_CLIENT_REDIRECT="${APP_URL}/accounts/facebook/callback"

# Instagram (https://developers.facebook.com)
INSTAGRAM_CLIENT_ID=
INSTAGRAM_CLIENT_SECRET=
INSTAGRAM_CLIENT_REDIRECT="${APP_URL}/accounts/instagram/callback"

# Threads (https://developers.facebook.com)
THREADS_CLIENT_ID=
THREADS_CLIENT_SECRET=
THREADS_CLIENT_REDIRECT="${APP_URL}/accounts/threads/callback"

# TikTok (https://developers.tiktok.com)
TIKTOK_CLIENT_ID=
TIKTOK_CLIENT_SECRET=
TIKTOK_CLIENT_REDIRECT="${APP_URL}/accounts/tiktok/callback"

# Google / YouTube (https://console.cloud.google.com)
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_CLIENT_REDIRECT="${APP_URL}/accounts/youtube/callback"

# Pinterest (https://developers.pinterest.com)
PINTEREST_CLIENT_ID=
PINTEREST_CLIENT_SECRET=
PINTEREST_CLIENT_REDIRECT="${APP_URL}/accounts/pinterest/callback"

Enabling/disabling platforms

You can selectively enable or disable platforms without removing their credentials. This is useful when API credentials are pending approval or temporarily revoked.
TRYPOST_LINKEDIN_ENABLED=true
TRYPOST_LINKEDIN_PAGE_ENABLED=true
TRYPOST_X_ENABLED=true
TRYPOST_TIKTOK_ENABLED=true
TRYPOST_YOUTUBE_ENABLED=true
TRYPOST_FACEBOOK_ENABLED=true
TRYPOST_INSTAGRAM_ENABLED=true
TRYPOST_THREADS_ENABLED=true
TRYPOST_PINTEREST_ENABLED=true
TRYPOST_BLUESKY_ENABLED=true
TRYPOST_MASTODON_ENABLED=true
Set any platform to false to hide it from the UI. All platforms are enabled by default.

Google Login

TryPost supports sign in with Google. This uses the same Google OAuth credentials as the YouTube integration, but with a separate callback URL.
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_AUTH_CALLBACK="${APP_URL}/auth/google/callback"
In the Google Cloud Console, add both callback URLs to your OAuth 2.0 client:
  • https://your-domain.com/accounts/youtube/callback (YouTube connection)
  • https://your-domain.com/auth/google/callback (Google login)

Analytics (optional)

PostHog

POSTHOG_API_KEY=phc_your_key
POSTHOG_HOST=https://us.i.posthog.com

VITE_POSTHOG_API_KEY="${POSTHOG_API_KEY}"
VITE_POSTHOG_HOST="${POSTHOG_HOST}"

Google Tag Manager

GTM_ID=GTM-XXXXXXX
Both are optional and only needed if you want to track usage analytics.

Horizon (Queue Dashboard)

Laravel Horizon provides a dashboard to monitor your queues. Access it at /horizon.
HORIZON_ALLOWED_EMAILS=admin@example.com,dev@example.com
VariableDescription
HORIZON_ALLOWED_EMAILSComma-separated list of emails allowed to access Horizon in production
If not set, Horizon dashboard will be inaccessible in non-local environments.

Next Steps