assets: fix promise type error during compilation
chore: split cache/non-cache tagged static path
chore: fix build & build badge
Board engine behind Fanboi Channel written in Python.
For production environment, Fanboi2 has the following runtime requirements:
Additionally, the following packages are build-time requirements for compiling assets:
If you're looking to develop or test Fanboi2, simply install Vagrant and run:
$ vagrant up
Then vagrant ssh
and follow the Setting up applications section below.
On FreeBSD systems, these packages can be installed with:
$ sudo pkg install ca_root_nss python38 py38-pip py38-sqlite3 postgresql11-server postgresql11-client redis node14 npm-node14
$ pip3 install --user poetry
Setup PostgreSQL:
$ sudo sysrc postgresql_enable=YES
$ sudo service postgresql initdb
$ sudo service postgresql start
$ sudo -u postgres createuser $USER
$ sudo -u postgres createdb -O $USER fanboi2
$ sudo -u postgres createdb -O $USER fanboi2_dev
$ sudo -u postgres createdb -O $USER fanboi2_test
Setup Redis:
$ sudo sysrc redis_enable=YES
$ sudo service redis start
For convenient during development, configure these environment variables in .profile
:
$ cat <<EOF >> ~/.profile
PATH=\$PATH:\$HOME/.local/bin; export PATH
CELERY_BROKER_URL=redis://127.0.0.1:6379/1; export CELERY_BROKER_URL
DATABASE_URL=postgresql://127.0.0.1:5432/fanboi2_dev; export DATABASE_URL
POSTGRESQL_TEST_DATABASE=postgresql://127.0.0.1:5432/fanboi2_test; export POSTGRESQL_TEST_DATABASE
REDIS_URL=redis://127.0.0.1:6379/0; export REDIS_URL
SERVER_DEV=true; export SERVER_DEV
SERVER_HOST=0.0.0.0; export SERVER_HOST
SERVER_PORT=6543; export SERVER_PORT
SESSION_SECRET=\$(openssl rand -hex 32); export SESSION_SECRET
AUTH_SECRET=\$(openssl rand -hex 32); export AUTH_SECRET
EOF
After all packages are installed, setup the application with:
$ git clone https://git.sr.ht/~sirn/fanboi2 fanboi2
$ cd fanboi2/
$ poetry install --no-dev
$ npm install && npm run gulp
Then configure environment variables and run:
$ poetry run alembic upgrade head
$ poetry run fbctl serve
You also need to run the worker (each in its own terminal window) with:
$ poetry run fbcelery worker
$ poetry run fbcelery beat
And you're done! Please visit http://localhost:6543/admin/ to perform initial configuration.
Fanboi2 uses environment variable to configure the application. You may want to use something like Direnv to manage these environment variables.
AUTH_SECRET
-- Required. Secret for authentication/authorization cookie.CELERY_BROKER_URL
-- Required. Redis URL for Celery broker, e.g. redis://127.0.0.1/1DATABASE_URL
-- Required. Database URL, e.g. postgres://127.0.0.1/fanboi2REDIS_URL
-- Required. Redis URL, e.g. redis://127.0.0.1/0SESSION_SECRET
-- Required. Secret for session cookie. Must not reuse AUTH_SECRET
.GEOIP_PATH
-- Path to GeoIP database, e.g. /usr/share/geoip/GeoLite2-Country.mmdbSERVER_DEV
-- Boolean flag whether to enable dev console, default FalseSERVER_SECURE
-- Boolean flag whether to only authenticate via HTTPS, default False.To setup Fanboi2 in development mode, run the following commands after performing production setup steps:
$ poetry install
And run the server with:
$ poetry run honcho start
To submit patches to mailing list:
git clone https://git.sr.ht/~sirn/fanboi2
git config sendemail.to ~sirn/fanboi2-dev@lists.sr.ht
git format-patch -1 HEAD
(refer to git-format-patch(1)
for more info)git send-email -1
(refer to git-send-email(1)
for more info)