A reddit-like content aggregator and micro-blogging platform for the fediverse.
This is a very early beta version, and a lot of features are currently broken or in active development, such as federation.
![]() |
![]() |
![]() |
- https://kbin.pub - project website
- https://dev.karab.in - instance for testing purposes only
- https://karab.in - polish-lang instance
- kbin-mobile (Flutter / Dart)
- kbin-js-client (TypeScript)
- kbin-dart-client (Dart)
https://symfony.com/doc/6.1/reference/requirements.html
- PHP version: 8.1 or higher
- GD or Imagemagick php extension
- NGINX / Apache / Caddy
- PostgreSQL
- Redis (optional)
- Mercure (optional)
- RabbitMQ (optional)
- Elasticsearch (optional)
- Cardano Node, Cardano Wallet (optional)
$ yarn install
$ yarn build
Based on https://github.com/dunglas/symfony-docker
- If not already done, install Docker Compose
- Run
docker compose build --pull --no-cache
to build fresh images - Run
docker compose up
(the logs will be displayed in the current shell) - Open
https://app.localhost
in your favorite web browser and accept the auto-generated TLS certificate - Run
docker compose down --remove-orphans
to stop the Docker containers.
$ docker compose exec php bin/console doctrine:fixtures:load
$ docker compose exec php bin/phpunit
# Using Xdebug
# Linux / Mac
$ XDEBUG_MODE=debug docker compose up -d
# Windows
$ set XDEBUG_MODE=debug&& docker compose up -d&set XDEBUG_MODE=
$ APP_ENV=dev SERVER_NAME=dev.karab.in \
APP_SECRET=acme \
CADDY_MERCURE_JWT_SECRET='!ChangeThisMercureHubJWTSecretKey!' \
POSTGRES_USER=kbin \
POSTGRES_PASSWORD=acme \
POSTGRES_DB=kbin \
CADDY_MERCURE_URL="https://example.com/.well-known/mercure" \
KBIN_DEFAULT_LANG=pl \
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
If you want to deploy your app on a cluster of machines, you can use Docker Swarm, which is compatible with the provided Compose files.
# Create new user (without email verification)
$ docker compose exec php bin/console kbin:user:create username email@exmple.com password
# Grant administrator privileges
$ docker compose exec php bin/console kbin:user:admin username
$ mkdir public/media
$ chmod 755 public/media
$ chown 82:82 public/media
$ docker compose exec php bin/console fos:elastica:create
$ docker compose exec php bin/console fos:elastica:populate
// @todo
Next, set up your instance https://localhost/admin
# Backup
$ docker exec -it database pg_dump -U symfony app > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
# Restore
$ docker compose exec -T database psql -U symfony app < dump.sql
// @todo rsync
If you work on linux and cannot edit some of the project files right after the first installation, you can run docker compose run --rm php chown -R $(id -u):$(id -g) .
to set yourself as owner of the project files that were created by the docker container.
$ docker compose logs -f
$ docker compose exec php tail var/log/prod.log
$ docker compose exec php bin/console cache:clear
- A highly opinionated guide to learning about ActivityPub
- ActivityPub as it has been understood
- Schema Generator 3: A Step Towards Redecentralizing the Web!
- API Platform ActivityPub
- Kbin REST API Reference
- Kbin ActivityPub Reference
- Kbin GraphQL Reference