← Back to apps

Post Chat

A self-hosted collaboration app for small teams, with project channels, direct messages, tasks and file sharing. Your own computer hosts it and stores the data.

Screenshots

Post Chat channel view with messages and tasks panel Post Chat dashboard with open, in progress and completed tasks Post Chat task detail with status, assignee and comments Post Chat create task dialog Post Chat admin panel, channels tab Post Chat admin panel, organizations tab

Downloads

I built this to use with my own team, and I use it daily. I'm sharing it as it is — you're free to use it however works for you.

The ZIP contains the PostChat folder, source code and installation scripts. No personal accounts, database contents, email credentials or Cloudflare tokens are included — the installer creates local configuration on your own computer.

What Post Chat does

Self-hosted team communication and project management for creative teams. Post Chat is a private collaboration platform designed for post-production studios, production companies and small creative teams — real-time communication, project organization, task management and file sharing in one interface.

It runs on your own Windows or macOS computer, giving you control over your conversations, projects, uploaded files and database. Team members connect from Mac, Windows, phones or tablets through a browser, without installing the server application on every device.

How it works

One computer acts as the Post Chat server and stores the application, PostgreSQL database and uploaded files. Other users connect through a web browser on Mac or Windows, a phone or tablet, an installed Progressive Web App, a private local-network address, or an optional public HTTPS address configured through Cloudflare Tunnel. Only the server computer needs Docker and PostgreSQL — client devices just need a modern browser.

Privacy and control

Post Chat is self-hosted. Your conversations, projects, tasks and uploaded files remain on infrastructure controlled by you. No Post Chat account or external subscription is required — external services are only needed if you choose features like Cloudflare Tunnel for public internet access.

The server administrator is responsible for keeping the server and Docker installation updated, protecting the private configuration file, creating regular database and upload backups, managing user access, protecting the Cloudflare Tunnel token, and configuring HTTPS and the public domain.

Technology

Next.js, React, Socket.IO, PostgreSQL, Prisma, Tailwind CSS, Docker Compose, and an optional Cloudflare Tunnel.

Requirements

Installation

  1. Download and extract the ZIP. It contains a PostChat folder with the source code and installation scripts.
  2. Install Docker Desktop, open it, and wait until its engine is running. Node.js and PostgreSQL are not needed separately.
  3. Move the extracted PostChat folder to a permanent location: ~/PostChat on Mac, or C:\PostChat on Windows. Make sure compose.yaml sits directly inside that folder, and avoid network shares or cloud-synced folders.
  4. Run the installer.

    Mac — open Terminal and run:

    cd "$HOME/PostChat"
    bash Install-Mac.command

    Windows — open C:\PostChat and double-click Install-Windows.bat, or from Command Prompt:

    cd /d C:\PostChat
    Install-Windows.bat

The installer creates .env with a unique database password, installs dependencies inside Docker, builds the app, sets up PostgreSQL and starts PostChat in the background. The first run can take a few minutes — wait for it to finish, and don't copy .env.example over the generated .env.

First sign-in

Open http://localhost:3001 on the computer running PostChat.

FieldDefault value
Email / usernameadmin@postchat.local
Passwordadmin123

Open Profile, change the default password immediately, then sign out and back in to confirm it works. These defaults only apply to an installation with no existing administrator — re-running the installer won't reset a password you've already changed.

Testing it locally

  1. Create a project in Admin → Projects and choose its color.
  2. Create a channel and send a test message.
  3. Create a task and move it between Open, In Progress and Completed.
  4. Register a second test account in a private/incognito window, approve it in Admin, and add it to a project or channel.
  5. Exchange channel and direct messages between the two accounts, check unread badges, and upload/download a small test file (limit: 25 MB per file).
  6. Restart with docker compose restart app and confirm your data is still there.

At this stage PostChat is only accessible on the host computer. Outgoing email and push notifications, and external access, are optional and covered below.

Keeping it running

Once installed, you can close the terminal — the app and database keep running in the background. A few things worth setting up:

After a reboot, you'll need to sign back into the computer for Docker Desktop to start again — there's no unattended recovery before login. For an always-on setup, a dedicated Linux host or VM running Docker Engine as a system service is the more reliable option.

Optional: external access via Cloudflare

This uses your own Cloudflare account and a domain you already control there.

  1. In the Cloudflare dashboard, open Networking → Tunnels (or Cloudflare One → Networks / Connectors) and create a Cloudflared tunnel, e.g. named postchat.
  2. Select the Docker connector, and copy only the token shown after --token. This package runs its own connector service — don't separately run Cloudflare's example Docker command.
  3. Add a Published application route (or "Public Hostname") with: Subdomain chat (or your choice), your domain, empty path, service type HTTP, service URL app:3001. If there's only one URL field, use http://app:3001 — the tunnel runs in its own container, so it's app:3001, not localhost:3001.
  4. First confirm you've changed the default admin123 password. Then open .env in a plain-text editor and set:
    NEXT_PUBLIC_APP_URL=https://chat.yourdomain.com
    CLOUDFLARE_TUNNEL_TOKEN=YOUR_OWN_TUNNEL_TOKEN
    Leave POSTGRES_PASSWORD unchanged.
  5. Run the enable script — Mac:
    cd "$HOME/PostChat"
    bash Enable-Cloudflare-Mac.command
    Windows: double-click Enable-Cloudflare-Windows.bat.

This rebuilds the app for HTTPS and starts the tunnel — no router port forwarding needed. Test from your phone on mobile data (Wi-Fi off) before relying on it. For a private team, Cloudflare Access can restrict the address to approved identities.

Daily operation & backups

ActionCommand
Start local servicesdocker compose up -d
Check statusdocker compose ps
View app logsdocker compose logs --tail=100 app
Restart the appdocker compose restart app
Start with Cloudflaredocker compose -f compose.yaml -f compose.cloudflare.yaml up -d
Stop public access onlydocker compose -f compose.yaml -f compose.cloudflare.yaml stop tunnel
Stop everything (keeps data)docker compose down

Back up the database, uploaded files and .env regularly — Docker volumes are persistent storage, not backups. Keep copies on separate storage and test that a restore actually works. When updating, keep .env and the data volumes, and never regenerate the database password for an existing database.

Troubleshooting

Contact and responsibility

PostChat's source code is shared by João Faria at joaofariapost.com. Each user is responsible for their own installation, security, backups, data and use of the software — it's provided as is, without guarantees of availability or support.

Questions or feedback? hello@joaofariapost.com