Kbin is a decentralized content aggregator and microblogging platform running on the Fediverse network. https://kbin.pub
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Ernest Wiśniewski 97c4c8c1e1 Post, entry edit, comment create alert 23 hours ago
assets Infinite scroll fix 1 day ago
bin Initial commit 2 years ago
config Some query optimalizations 6 days ago
docker Caddy headers 4 weeks ago
docs/images Readme update 2 weeks ago
migrations Search init 5 days ago
public Some theme improvements 1 week ago
src Insrtance AP Content type 1 day ago
templates Post, entry edit, comment create alert 23 hours ago
tests Symfony upgrade 1 month ago
translations Post, entry edit, comment create alert 23 hours ago
.dockerignore Docker update 10 months ago
.env.example Add hCaptcha 7 days ago
.env.test Tests, translations Entries, Posts 4 months ago
.gitignore Reformat 3 months ago
.php-cs-fixer.cache Fix tests 2 months ago
Dockerfile Rabbit mq for messenger 1 month ago
LICENSE Create LICENSE 1 year ago
README.md Sidebar intro, posts front limit 1 week ago
clover.xml Some profile tests 2 years ago
composer.json Add hCaptcha 7 days ago
composer.lock Add hCaptcha 7 days ago
docker-compose.override.yml Docker update 10 months ago
docker-compose.prod.yml Docker update 10 months ago
docker-compose.yml Rabbitmq hostname, cached user avatar fix 3 weeks ago
package-lock.json Markdown toolbar 2 months ago
package.json Update dependencies, federation admin section, textarea grow component 2 weeks ago
phpcs.xml Code sniffer, fix php standard violations 2 years ago
phpunit.xml.dist Some profile tests 2 years ago
symfony.lock Add hCaptcha 7 days ago
webpack.config.js Remove old views and components, init entry views 4 months ago
yarn.lock Update dependencies, federation admin section, textarea grow component 2 weeks ago

README.md

Kbin

Maintainability Test Coverage

Kbin is a decentralized content aggregator and microblogging platform running on the Fediverse network. It can communicate with many other ActivityPub services, including Mastodon, Lemmy, Pleroma, Peertube. The initiative aims to promote a free and open internet.

This is a very early beta version, and a lot of features are currently broken or in active development, such as federation.

Currently, a new frontend is being implemented on develop branch. In the next stage, a similar refactor will go through the backend and the project will be prepared for contribution.


Apps

Libraries

Getting Started

Requirements

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) (deprecated)
  • Cardano Node, Cardano Wallet (optional) (deprecated)

Frontend

https://github.com/symfony/ux

$ yarn install
$ yarn build

Install with Docker

Based on https://github.com/dunglas/symfony-docker

Develop

  1. If not already done, install Docker Compose
  2. Run docker compose build --pull --no-cache to build fresh images
  3. Run docker compose up (the logs will be displayed in the current shell)
  4. Open https://app.localhost in your favorite web browser and accept the auto-generated TLS certificate
  5. 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=

Production

$ 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

Deploying on Multiple Nodes

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.

Configuration

Admin user

# 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

Media

$ mkdir public/media
$ chmod 755 public/media
$ chown 82:82 public/media

Elasticsearch

$ docker compose exec php bin/console fos:elastica:create
$ docker compose exec php bin/console fos:elastica:populate

JWT keys

// @todo 

Next, set up your instance https://localhost/admin

Backup and restore

Database

# Backup
$ docker exec -it database pg_dump -U kbin kbin > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
# Restore
$ docker compose exec -T database psql -U kbin kbin < dump.sql

Images

// @todo rsync

Troubleshooting

Editing Permissions on Linux

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.

Logs

$ docker compose logs -f
$ docker compose exec php tail var/log/prod.log

Cache

$ docker compose exec php bin/console cache:clear

Federation

Official Documents

Unofficial Sources

Documentation

Languages

Credits

Support us

NGI Zero Entrust

BrowserStack

blackfire.io

JetBrains

Contributing

License

AGPL-3.0 license