# Varia's XPPL The [XPUB] library living at [Varia]. > https://books.vvvvvvaria.org/ [XPUB]: http://xpub.nl/ [Varia]: https://varia.zone/ # Run It Locally Please note, the following instructions have only been tested on the Debian Stretch OS. You'll need to run an [RQLite] database first: ``` $ apt update && apt install -y make $ make install-rqlite $ make rqlited ``` Then get [Pipenv] and run the development server with: ```bash $ pipenv install --dev --three $ pipenv run devserver ``` The local development web server will now be available. If you need to check the database contents, run: ```bash $ make rqlite ``` And then run `.help` for which commands are available. [Pipenv]: https://pipenv.readthedocs.io/en/latest/install/#pragmatic-installation-of-pipenv [RQLite]: https://github.com/rqlite/rqlite # Test It ```bash $ pipenv run tox ``` Refer to the [tox.ini](tox.ini) for configuration options. # Deploy It See [ansible/README.md](ansible/README.md) for this. # Maintain It The XPPL is made up of a few parts: * The [Flask] application and it's dependencies. * The [RQLite] database. * The [Syncthing] integration for uploads. * The [Nginx reverse proxy]. * The [Let's Encrypt web certificates]. If you know [Ansible](https://www.ansible.com/overview/how-ansible-works) (it's just YAML), you can just [read the entire configuration]. On the varia.zone machine, you can check the running services with: ```bash $ sudo supervisorctl status all # check all services $ sudo supervisorctl stop xppl:* # stop all XPPL services $ sudo supervisorctl start xppl:* # start all XPPL services ``` You can also view the error logs with: ```bash $ sudo supervisorctl tail xppl:xppl-flask stderr $ sudo supervisorctl tail xppl:xppl-rqlite stderr ``` The `/var/xppl/xppl/uploads` folder is managed by the Varia [Syncthing UI]. The RQLite database is located at `/var/xppl/rqlite/node.1`. No cluster is configured. No backups are configured right now. [Flask]: http://flask.pocoo.org/ [RQLite]: https://github.com/rqlite/rqlite [Syncthing]: https://docs.syncthing.net/ [Nginx reverse proxy]: https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/ [Let's Encrypt web certificates]: https://certbot.eff.org/ [Syncthing UI]: https://vvvvvvaria.org/st/ [read the entire configuration]: ansible/plays/setup.yml