Compare commits
17 Commits
add-change
...
master
Author | SHA1 | Date | |
---|---|---|---|
9d549d0db0 | |||
1e56afc8c4 | |||
59be37d9a4 | |||
80845b4429 | |||
fef16a1680 | |||
cbeeffb6fb | |||
b944572399 | |||
ca367e8aab | |||
ea25fbcd10 | |||
e30b59d6a5 | |||
2210f82833 | |||
ea1d1f8123 | |||
3551631642 | |||
b98146fd34 | |||
e85b7a7611 | |||
fc393a3d5f | |||
|
1d044b5dbc |
@ -26,8 +26,7 @@ Deployed on:
|
||||
* Bootstrap the application via [xppl/app.py](xppl/app.py).
|
||||
* Added [Makefile](Makefile) targets for installing [RQLite](https://github.com/rqlite/rqlite).
|
||||
* Run [isort](https://isort.readthedocs.io/en/latest/) and [pylava](https://github.com/pylava/pylava)
|
||||
code audit tools over the source to use PEP 8 style, catch any erroneous
|
||||
imports, unused variables etc. with some basic static analysis.
|
||||
code audit tools over the source.
|
||||
* Use a new [Hypothesis](https://web.hypothes.is/) API key.
|
||||
|
||||
### Fixed
|
||||
|
16
README.md
16
README.md
@ -7,7 +7,7 @@ The [XPUB] library living at [Varia].
|
||||
[XPUB]: http://xpub.nl/
|
||||
[Varia]: https://varia.zone/
|
||||
|
||||
# Change It
|
||||
# Run It Locally
|
||||
|
||||
Please note, the following instructions have only been tested on the Debian Stretch OS.
|
||||
|
||||
@ -26,6 +26,8 @@ $ 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
|
||||
@ -56,10 +58,11 @@ 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.
|
||||
* The [Nginx reverse proxy].
|
||||
* The [Let's Encrypt web certificates].
|
||||
|
||||
If you know [Ansible] (it's just YAML), you can just [read the entire configuration].
|
||||
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:
|
||||
|
||||
@ -85,6 +88,7 @@ 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/main.yml
|
||||
[Ansible]: https://www.ansible.com/overview/how-ansible-works
|
||||
[read the entire configuration]: ansible/plays/setup.yml
|
||||
|
@ -1,14 +1,27 @@
|
||||
# XPPL Ansible Automation
|
||||
|
||||
An automated deployment for the XPPL.
|
||||
An automated deployment for the XPPL. If you're running these scripts, you'll
|
||||
need SSH access and Sudo permissions on the machines. It is already running
|
||||
deployments for:
|
||||
|
||||
## Run It
|
||||
* [books.vvvvvvaria.org](https://books.vvvvvvaria.org/)
|
||||
|
||||
You'll need to have SSH and Sudo access to [varia.zone] first.
|
||||
## Prerequisites
|
||||
|
||||
You'll need to install [Ansible](https://docs.ansible.com).
|
||||
|
||||
```bash
|
||||
$ sudo apt install -y ansible
|
||||
$ ansible-playbook --ask-become-pass plays/main.yml
|
||||
```
|
||||
|
||||
[varia.zone]: https://varia.zone/
|
||||
## Setup a New XPPL
|
||||
|
||||
```bash
|
||||
$ ansible-playbook --limit varia.zone --ask-become-pass plays/setup.yml
|
||||
```
|
||||
|
||||
## Deploy a New XPPL Version
|
||||
|
||||
```bash
|
||||
$ ansible-playbook --limit varia.zone --ask-become-pass plays/deploy.yml
|
||||
```
|
||||
|
@ -1,2 +1,2 @@
|
||||
[varia-zone]
|
||||
[all]
|
||||
varia.zone ansible_ssh_port=12345
|
||||
|
23
ansible/plays/deploy.yml
Normal file
23
ansible/plays/deploy.yml
Normal file
@ -0,0 +1,23 @@
|
||||
---
|
||||
|
||||
# Just deploy a new version of the the XPPL.
|
||||
# Depends on setup.yml being ran first to set things up.
|
||||
|
||||
- hosts: all
|
||||
pre_tasks:
|
||||
- name: Shutdown the running XPPL for the deployment.
|
||||
become: true
|
||||
supervisorctl:
|
||||
name: 'xppl:'
|
||||
state: stopped
|
||||
roles:
|
||||
- role: git # Clone the project source
|
||||
- role: pipenv # Install Python dependencies
|
||||
- role: env # Configure the application environment
|
||||
- role: nginx # Setup the Nginx configuration
|
||||
post_tasks:
|
||||
- name: Start back up the XPPL after the deployment.
|
||||
become: true
|
||||
supervisorctl:
|
||||
name: 'xppl:'
|
||||
state: started
|
@ -1,11 +1,14 @@
|
||||
---
|
||||
|
||||
- hosts: varia-zone
|
||||
# Setup all necessary infrastructure for the project.
|
||||
# Install the project and get it running under supervisor.
|
||||
|
||||
- hosts: all
|
||||
roles:
|
||||
- role: perms # Setup users and groups
|
||||
- role: git # Clone the project source
|
||||
- role: pipenv # Install Python dependencies
|
||||
- role: env # Configure application environment
|
||||
- role: env # Configure the application environment
|
||||
- role: rqlite # Install RQLite
|
||||
- role: supervisor # Setup managed processes
|
||||
- role: nginx # Setup Nginx configuration
|
||||
- role: nginx # Setup the Nginx configuration
|
@ -6,7 +6,7 @@ from flask import request
|
||||
|
||||
def get_annotations():
|
||||
# TODO(decentral1se): remove this from the source
|
||||
KEY = "6879-H5GbA2KyFIeEUM1BubjVTLP8yM3GMyHgOAjjNe_GBxY"
|
||||
KEY = "6879-n8AksBoSB7kYoQ3eEwzpEr3nFQEmSp3XN-0PcKL_Sik"
|
||||
|
||||
# a dictionary containing necessary http headers
|
||||
headers = {
|
||||
@ -15,7 +15,7 @@ def get_annotations():
|
||||
"Authorization": "Bearer %s" % KEY
|
||||
}
|
||||
|
||||
base_url = "https://hypothes.is/api/search?user=varia_annotator@hypothes.is"
|
||||
base_url = "https://hypothes.is/api/search?user=xpub@hypothes.is"
|
||||
|
||||
search_url = "".join([base_url])
|
||||
|
||||
@ -45,7 +45,7 @@ def get_annot_results(annot, name):
|
||||
data = {
|
||||
'text': item['text'],
|
||||
'extract': item['target'][0]['selector'][2]['exact'],
|
||||
'title': item['document']['title'], 'url': item['uri']
|
||||
'title': item['uri'][37:], 'url': item['uri']
|
||||
}
|
||||
res.append(data)
|
||||
else:
|
||||
@ -54,7 +54,7 @@ def get_annot_results(annot, name):
|
||||
data = {
|
||||
'text': item['text'],
|
||||
'extract': item['target'][0]['selector'][1]['exact'],
|
||||
'title': item['document']['title'], 'url': item['uri']
|
||||
'title': item['uri'][37:], 'url': item['uri']
|
||||
}
|
||||
res.append(data)
|
||||
return res
|
||||
@ -71,7 +71,7 @@ def get_annot_book(annot, name):
|
||||
data = {
|
||||
'text': item['text'],
|
||||
'extract': item['target'][0]['selector'][2]['exact'],
|
||||
'title': item['document']['title'], 'url': item['uri']
|
||||
'title': item['uri'][37:], 'url': item['uri']
|
||||
}
|
||||
res.append(data)
|
||||
else:
|
||||
@ -80,7 +80,7 @@ def get_annot_book(annot, name):
|
||||
data = {
|
||||
'text': item['text'],
|
||||
'extract': item['target'][0]['selector'][1]['exact'],
|
||||
'title': item['document']['title'], 'url': item['uri']
|
||||
'title': item['uri'][37:], 'url': item['uri']
|
||||
}
|
||||
res.append(data)
|
||||
return res
|
||||
|
@ -11,7 +11,7 @@
|
||||
{%for book in books%}
|
||||
{%if book.file == row.uri%}
|
||||
<p align="right" style="font-family:archivo narrow;font-size:10px;">Book</p>
|
||||
<a href="books/{{book.id}}"><p align="right" style="font-family:archivo narrow;font-size:18px;">{{book.title}}</p></a><br>
|
||||
<a href="books/{{book.id}}"><p align="right" style="font-family:archivo narrow;font-size:18px;">{{book.file}}</p></a><br>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
{% for book in stack.books %}
|
||||
{% if loop.length >= 5 %}
|
||||
{% if loop.index == 6 %}
|
||||
<p style='color:red;'>Your stack is getting a little too big. Are these next books really relevant?</p>
|
||||
<p style='color:red;'>Your stack is getting a little big. Proceed.</p>
|
||||
<br>
|
||||
<br>
|
||||
{% endif %}
|
||||
|
Loading…
Reference in New Issue
Block a user