selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
zusam logo

Self-host zusam

0.6.1

Private self-hosted forums for friends and family

BetaOpen SourceAGPL-3.0
Updated4 months ago
LanguagePHP
Setup difficultyModerate
MobileResponsive
Stars
223
Port
8080 (HTTP web interface)
Requires
Ffmpeg, SQLite
Docker
zusam/zusam
Install with Docker
Zusam web interface showing private group forum with messages and media

What is zusam?

Zusam lets you run your own private social space for friends and family. A PHP/Symfony backend serves a REST API backed by SQLite, while a Preact frontend provides the web interface. Members can post messages, upload photos and videos, and share links that automatically expand into previews for major media sites. Albums organize images, and any message can get a public share link. The UI works well on phones and tablets. You can deploy via Docker, Docker Compose, or manually on Debian with nginx or Apache. Licensed AGPL-3.0; still pre-1.0 so upgrades may break things.

Should you self-host zusam?

zusam scores 44/100 on selfhost.directory (how scoring works) and ranks #58 of 69 in Social Networks & Forums. It has 223 GitHub stars.

It shipped 2 stable releases in the past year. The latest, 0.6.1, came out on 2 March 2026. New versions land roughly every 6 weeks.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in PHP.

Its closest alternative on selfhost.directory is Discourse (83/100, 48 024 stars). It scores higher overall, so compare the two before you pick. See zusam vs Discourse side by side.

Features

  • Link previews and media embeds
  • Low server footprint
  • Photo Albums
  • Private group forums
  • Public link generation
  • REST API
  • Video and image upload

zusam README

How to install zusam

Install zusam with Docker

Docker
Environment variables
INIT_USER, INIT_PASSWORD, INIT_GROUP, DATABASE_NAME, SUBPATH, APP_ENV

mkdir -p ~/zusam && cd ~/zusam sudo docker run -p 80:8080 -v "$(pwd)/data:/zusam/data" --name zusam -e INIT_USER=email@domain.example -e INIT_PASSWORD=initpass -e APP_ENV=prod zusam/zusam:latest

Runs container on port 8080, maps host port 80

How to configure zusam

  • APP_ENVprodThe environment (must be prod unless image was built with dev or test)

    The environment (must be prod unless image was built with dev or test)

    values: prod, dev, test

  • DATABASE_NAMEName of the sqlite3 database file

    Name of the sqlite3 database file

  • INIT_GROUPzusamName of the initial group to be created

    Name of the initial group to be created

  • INIT_PASSWORDzusamPassword of the initial user to be created

    Password of the initial user to be created

  • INIT_USERzusamName of the initial user to be created

    Name of the initial user to be created

  • SUBPATHSpecify if zusam needs to be served in a subpath (e.g. /foo for example.com/foo)

    Specify if zusam needs to be served in a subpath (e.g. /foo for example.com/foo)

zusam releases & version history

More in Social Networks & Forums

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…