Home Features Screenshots Downloads Docs FAQ GitHub

Frequently Asked Questions

Can't find what you're looking for? Open an issue on GitHub.

General

Bastion is an open-source, self-hostable chat platform. It features real-time messaging, servers with channels, role-based permissions, bot support, file sharing, and native apps for all major platforms — all under your control.
Yes. Bastion is completely free and open source under the AGPL-3.0 license. There are no premium tiers, no paywalls, no artificial limitations, and no user limits. You can use it, modify it, and distribute it freely.
  • Self-hosted — Your data stays on your server, not someone else's
  • Open source — Full transparency, audit the code yourself
  • No tracking — Zero telemetry, analytics, or data harvesting
  • No limits — No file size limits (you set them), no paid tier needed
  • Extensible — Fork it, modify it, build what you need

Backend: Go (chi router, pgx for PostgreSQL, gorilla/websocket for real-time)

Frontend: React + TypeScript (Vite, Zustand, Tailwind CSS)

Desktop & Mobile: Tauri (Rust-based, shared web frontend)

Database: PostgreSQL + Redis

Storage: Local filesystem or S3-compatible (MinIO)

Self-Hosting

The quickest way is Docker Compose. Clone the repo, copy .env.example to .env, set your JWT_SECRET, and run docker compose up -d. See the installation guide for full details.
Bastion runs on modest hardware. Minimum: 1 CPU core, 512 MB RAM, 1 GB disk. Recommended: 2+ cores, 1+ GB RAM, 10+ GB disk (for file uploads). A $5/month VPS from providers like Linode or DigitalOcean works great for small communities.
Yes! You can build from source with Go 1.22+ and Node.js 20+. You'll need to set up PostgreSQL and Redis manually. See the repo's Makefile for build commands. Docker is recommended for simplicity.
With Docker: docker compose pull && docker compose up -d. Database migrations run automatically on startup. Always check the release notes for breaking changes before upgrading.

Features

All network traffic is encrypted via TLS (HTTPS/WSS). End-to-end encryption for messages is on the roadmap as a high-priority feature. Since you self-host, you already have full control over data at rest — you can encrypt your server's disk for additional security.
Absolutely. Bastion has a full Bot API with:
  • Bot user accounts with dedicated tokens
  • Slash commands with auto-complete
  • Webhooks for external integrations
  • Interaction callbacks (buttons, selects, modals)
  • Message components

Build bots in any language. See the bot development guide.

  • Web — Any modern browser
  • Linux — AppImage, .deb, .rpm
  • Windows — .exe installer
  • macOS — .dmg (Apple Silicon)
  • Android — .apk
  • iOS — Planned

All desktop and mobile apps are built with Tauri, sharing the same web frontend for consistency.

Yes. Users can upload files, images, and other attachments to channels. The size limit is configurable via the UPLOAD_MAX_SIZE environment variable (default 25 MB). Files can be stored locally or on S3-compatible storage (MinIO, AWS S3, etc.).
Voice and video are on the roadmap and are actively being developed. The current focus is on text communication, but real-time voice and video channels are a priority for upcoming releases.

Troubleshooting

This usually indicates a reverse proxy issue. Make sure your proxy (Nginx, Caddy, etc.) is configured to pass WebSocket upgrade headers. See the reverse proxy guide. If using Cloudflare, ensure WebSockets are enabled in your zone settings.
Since you control the database, you can reset any password by connecting to PostgreSQL directly and updating the user record. A CLI tool for password reset is planned. For now, check the repo's README for the manual reset procedure.
Back up the PostgreSQL database with pg_dump and your file upload directory. If using Docker, you can also back up the named volumes. A recommended approach: set up a cron job that runs pg_dump daily and rsyncs uploads to a backup location.