NiceDB / NeoDB - Getting Start ============================== This is a very basic guide with limited detail, contributions welcomed Install ------- Install PostgreSQL, Redis and Python (3.10 or above) if not yet Setup database ``` CREATE DATABASE neodb ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE template0; \c neodb; CREATE ROLE neodb with LOGIN ENCRYPTED PASSWORD 'abadface'; GRANT ALL ON DATABASE neodb TO neodb; ``` Create and edit your own configuration file (optional but very much recommended) ``` mkdir mysite && cp boofilsic/settings.py mysite/ export DJANGO_SETTINGS_MODULE=mysite.settings ``` Alternatively you can have a configuration file import `boofilsic/settings.py` then override it: ``` from boofilsic.settings import * SECRET_KEY = "my_key" ``` More details on `settings.py` in [configuration.md](configuration.md) Create and use `venv` as you normally would, then install packages ``` python3 -m pip install -r requirements.txt ``` Quick check ``` python3 manage.py check ``` Initialize database ``` python3 manage.py migrate ``` Build static assets ``` python3 manage.py sass common/static/sass/boofilsic.sass common/static/css/boofilsic.min.css -t compressed python3 manage.py sass common/static/sass/boofilsic.sass common/static/css/boofilsic.css python3 manage.py collectstatic ``` Start services -------------- Make sure PostgreSQL and Redis are running Start job queue server ``` export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES # required and only for macOS, otherwise it may crash python3 manage.py rqworker --with-scheduler import export mastodon fetch crawl ``` Run web server in dev mode ``` python3 manage.py runserver ``` It should be ready to serve from here, to run web server for production, consider `gunicorn -w 8 boofilsic.wsgi` in systemd or sth similar Migrate from an earlier version ------------------------------- Update database ``` python3 manage.py migrate ``` Rebuild static assets ``` python3 manage.py sass common/static/sass/boofilsic.sass common/static/css/boofilsic.min.css -t compressed python3 manage.py sass common/static/sass/boofilsic.sass common/static/css/boofilsic.css python3 manage.py collectstatic ``` Add Cron Jobs ------------- add `python manage.py refresh_mastodon` to crontab to run hourly, it will refresh cached users' follow/mute/block from mastodon Index and Search ---------------- Install TypeSense or Meilisearch, change `SEARCH_BACKEND` and coniguration for search server in `settings.py` Build initial index, it may take a few minutes or hours ``` python3 manage.py index --init python3 manage.py index --reindex ``` Other maintenance tasks ----------------------- Requeue failed import jobs ``` rq requeue --all --queue import ``` Run in Docker ``` docker-compose build docker-compose up ``` Run Tests ``` coverage run --source='.' manage.py test coverage report ```