Try describing what you need:

shoutrrr logo

shoutrrr

★ 458

A self-hosted alternative to Buffer

Apache License 2.0Open Source — No PaywallSingle Container — single container — minimal hosting footprintDocker · Compose · SourceNo external DB10+ active committers (12mo)

About

Shoutrrr is a self-hosted social media scheduling platform aimed at individuals, teams, agencies, and brands that want to manage publishing without relying on a third-party SaaS. It lets users...

Community Ratings

No ratings yet
Shoutrrr

Features

  • multi-platform publishing
  • post scheduling
  • recurring queue slots
  • month calendar
  • analytics
  • multi-account publishing
  • connected accounts
  • workspaces and roles
  • email invites
  • two-factor authentication

Details

Last Updated
Oct 25, 2026
Created
Jun 12, 2026
Install Methods
dockerdocker-composesource
Requirements
SQLitePostgresRedisS3-compatible object storagereverse proxy
Authentication
oauthlocal2fa
Backup & Export
file-backup
Privacy & Independence
No Cloud Required
User Model
Multi-UserMulti-Tenant
Deployment

Deployment: Docker Compose ✓Single Container — minimal hosting footprintsingle container

Run shoutrrr with Docker Compose

Compose file from the shoutrrr project repository.

1 service

no resource limits declared

needs persistent storage (2 volumes)

docker-compose.production.yaml · @ 83895b3 · scanned Oct 25, 2026

# Production deployment: pulls the prebuilt image from GHCR (no local build).
# `pull_policy: always` makes `up` re-pull the latest published image. One
# container whose supervisord runs the Octane web server plus the queue worker,
# scheduler, and (when toggled) SSR.
#
#   docker compose -f docker-compose.production.yaml up -d
#
#   INERTIA_SSR_ENABLED=true ... up   -> also runs the in-container SSR process.
#   QUEUE_WORKER_ENABLED=false /      -> disable the in-container worker/scheduler
#   SCHEDULER_ENABLED=false           (e.g. when running them elsewhere in the cloud).
#   Uncomment the postgres/redis services below to use them instead of SQLite.
#
# For Postgres set in your .env: DB_CONNECTION=pgsql, DB_HOST=postgres,
# DB_DATABASE=laravel, DB_USERNAME=laravel, DB_PASSWORD=<your-password>.
# For Redis set: CACHE_STORE=redis, QUEUE_CONNECTION=redis, REDIS_HOST=redis.
name: shoutrrr

x-environment: &app-env
    APP_ENV: "${APP_ENV:-production}"
    APP_KEY: "${APP_KEY}"
    APP_DEBUG: "${APP_DEBUG:-false}"
    APP_URL: "${APP_URL:-http://localhost:8080}"
    OCTANE_SERVER: "frankenphp"
    # Force https on generated URLs (redirects, route()) when behind a
    # TLS-terminating proxy/tunnel. Set OCTANE_HTTPS=true in that case.
    OCTANE_HTTPS: "${OCTANE_HTTPS:-false}"
    # Trust reverse-proxy forwarding headers (X-Forwarded-Proto/-Host/-Port) so
    # redirects and OAuth callback URLs use the public https scheme and rate
    # limits see the real client IP. Set `*` when only reachable via the proxy,
    # or a comma-separated IP/CIDR list. Unset trusts no proxies.
    TRUSTED_PROXIES: "${TRUSTED_PROXIES:-}"
    # Optional CDN/base URL for built assets. Leave unset to serve from APP_URL.
    ASSET_URL: "${ASSET_URL:-}"
    DB_CONNECTION: "${DB_CONNECTION:-sqlite}"
    # NOTE: for Postgres set DB_CONNECTION=pgsql AND override DB_DATABASE=laravel (the
    # sqlite-path default below is invalid for pgsql).
    DB_DATABASE: "${DB_DATABASE:-/var/www/html/database/sqlite/database.sqlite}"
    DB_HOST: "${DB_HOST:-postgres}"
    DB_PORT: "${DB_PORT:-5432}"
    DB_USERNAME: "${DB_USERNAME:-laravel}"
    DB_PASSWORD: "${DB_PASSWORD}"
    CACHE_STORE: "${CACHE_STORE:-database}"
    QUEUE_CONNECTION: "${QUEUE_CONNECTION:-database}"
    SESSION_DRIVER: "${SESSION_DRIVER:-database}"
    REDIS_HOST: "${REDIS_HOST:-redis}"
    REDIS_PORT: "${REDIS_PORT:-6379}"
    # In-container supervised processes — set to false to run them separately.
    QUEUE_WORKER_ENABLED: "${QUEUE_WORKER_ENABLED:-true}"
    QUEUE_WORKER_COUNT: "${QUEUE_WORKER_COUNT:-1}"
    SCHEDULER_ENABLED: "${SCHEDULER_ENABLED:-true}"
    # In-container SSR uses localhost; off by default.
    INERTIA_SSR_ENABLED: "${INERTIA_SSR_ENABLED:-false}"
    INERTIA_SSR_URL: "${INERTIA_SSR_URL:-http://127.0.0.1:13714}"

services:
    app:
        image: "ghcr.io/coollabsio/shoutrrr:latest"
        pull_policy: always
        restart: unless-stopped
        # Put any extra config in your .env (X_*, LINKEDIN_*, AWS_*,
        # OCTANE_HTTPS, ...) and it's passed straight through to the app.
        env_file:
            - path: .env
              required: false
        environment:
            <<: *app-env
        ports:
            - "${APP_PORT:-8080}:8080"
        volumes:
            - storage:/var/www/html/storage
            - sqlite:/var/www/html/database/sqlite
        stop_grace_period: 60s
        healthcheck:
            test: ["CMD", "healthcheck-octane"]
            start_period: 15s
            interval: 30s
            timeout: 10s
            retries: 3

    # Optional Postgres + Redis. The stack defaults to SQLite + the `database`
    # cache/queue/session driver, so these stay commented out. To use them,
    # uncomment the services (and their volumes) below and set in your .env:
    #   DB_CONNECTION=pgsql, DB_HOST=postgres, DB_DATABASE=laravel,
    #   DB_USERNAME=laravel, DB_PASSWORD=<your-password>,
    #   CACHE_STORE=redis, QUEUE_CONNECTION=redis, REDIS_HOST=redis
    #
    # postgres:
    #     image: "postgres:18-alpine"
    #     restart: unless-stopped
    #     environment:
    #         POSTGRES_DB: "${POSTGRES_DB:-laravel}"
    #         POSTGRES_USER: "${DB_USERNAME:-laravel}"
    #         POSTGRES_PASSWORD: "${DB_PASSWORD}"
    #     volumes:
    #         - pgdata:/var/lib/postgresql/data
    #     healthcheck:
    #         test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME:-laravel} -d ${POSTGRES_DB:-laravel}"]
    #         interval: 10s
    #         timeout: 5s
    #         retries: 5
    #
    # redis:
    #     image: "redis:alpine"
    #     restart: unless-stopped
    #     volumes:
    #         - redisdata:/data
    #     healthcheck:
    #         test: ["CMD", "redis-cli", "ping"]
    #         interval: 10s
    #         timeout: 5s
    #         retries: 5

volumes:
    storage:
    sqlite:
    # pgdata:    # uncomment with the postgres service above
    # redisdata: # uncomment with the redis service above

This file may be out of date. Check the shoutrrr website for current setup steps.

Track your self-hosted stack

Bookmark software to try, rate tools you've used, and keep your collection in one place.

Metadata extracted from README on Oct 25, 2026

Related Software

Mixpost logo

Mixpost

133
Mixpost is a social media management platform for scheduling content, managing accounts, and collaborating with teams.
Analytics ToolsAutomation ToolsSocial Media+4
Open Core
Details
Postiz logo

Postiz

37.7k
Postiz is a social media management platform for scheduling, automating, and analyzing content.
Analytics ToolsAutomation ToolsSocial Media+3
9 Containers
Details
Socioboard logo

Socioboard

1.5k
Socioboard is a social media management and content marketing platform for planning, scheduling, managing, and reporting on social media activity.
Analytics ToolsSocial MediaAutomation Tools+3
Open Core
Details
Upvote RSS logo

Upvote RSS

502
Generates rich RSS feeds from popular posts on social aggregation sites like Reddit, Hacker News, Lemmy, Lobsters, PieFed, Mbin, and GitHub.
RSS Feed ReadersSelf Hosting SolutionsAutomation Tools+3
Details
FeedCord logo

FeedCord

321
FeedCord is a self-hosted RSS and YouTube feed reader that posts updates to Discord channels via webhooks.
RSS Feed ReadersPermissive LicenseAutomation Tools+2
Details
MintHCM logo

MintHCM

439
MintHCM is an open-source, AI-native HCM platform for building and deploying customizable HR systems powered by AI agents.
HR ManagementTime TrackingSelf Hosting Solutions+3
3 Containers
Details
Youtarr logo

Youtarr

1.8k
A self-hosted YouTube downloader that auto-downloads videos from subscribed channels and playlists, then organizes and syncs them with media servers like Plex, Jellyfin, and Emby.
Media ManagementMedia ServersAutomation Tools+2
2 Containers
Details
Cronicle logo

Cronicle

5.9k
A multi-server task scheduler and runner with a web-based UI for scheduled, repeating, and on-demand jobs.
Automation ToolsTask RunnersScheduling and Bookings+2
Details
Donetick logo

Donetick

2.7k
Donetick is an open-source app for organizing and sharing tasks and chores with collaboration, scheduling, reminders, and automation features.
Task ManagementAutomation ToolsScheduling and Bookings+3
Details
flowctl logo

flowctl

342
An open-source self-service workflow execution platform for running and managing complex workflows.
Task RunnersScheduling and BookingsAuthentication Services+3
4 Containers
Details
Cronmaster logo

Cronmaster

1.4k
A web-based cron manager for viewing, creating, cloning, and deleting cron jobs and scripts, with system information, logging, and authentication.
Automation ToolsTask RunnersScheduling and Bookings+3
Details
gocron logo

gocron

619
A Go and Vue.js task scheduler for defining recurring jobs in a YAML configuration file and running commands on cron schedules.
Automation ToolsPermissive LicenseTask Runners+2
Details