114 lines
2.9 KiB
Markdown
114 lines
2.9 KiB
Markdown
# aBot engine
|
|
|
|
- Make voting questions in simple text files
|
|
- single choice, multiple choice and open text questions supported
|
|
- read more from example questions sets
|
|
- Preview form online
|
|
- Get tokens for voting in command line
|
|
- Send unique URLs to your voters (mailing example script included)
|
|
- Summarize results in the command line
|
|
|
|
- Online part runs with python3 + flask + gunicorn
|
|
- Command line tools python3
|
|
|
|
|
|
## Basic usage instructions
|
|
|
|
- Install requirements `./install.me`
|
|
- Start server `./start.me`
|
|
- Create questions in `questions/my_poll.txt`
|
|
- Have `draft: true` in the questions, and view the poll at
|
|
[preview](http://localhost:8041/preview/my_poll)
|
|
- Change to `draft: false` to enable voting
|
|
- Add tokens for the vote:
|
|
`./manager my_poll token --prefix http://localhost:8041`
|
|
- Open the link to vote
|
|
- Get summary of votes: `./manager my_poll summary`
|
|
|
|
## Additional usage
|
|
|
|
During the poll, you can observe the vote counts:
|
|
- Add an observer token:
|
|
`./manager my_poll token --prefix http://localhost:8041 --role observer`
|
|
- Open the link to see vote counts
|
|
- If the question se allows voters to see results after casting their vote
|
|
`show_results: true`, then observer can also see the results.
|
|
|
|
|
|
# Example installation on debian
|
|
|
|
## Install web server as root
|
|
|
|
```
|
|
apt install nginx virtualenv python3 git
|
|
# edit the config of /etc/nginx/sites-enabled/default to have your host name
|
|
systemctl enable nginx
|
|
systemctl start nginx
|
|
virtualenv -p python3 certbot
|
|
. cerbot/bin/activate
|
|
pip install certbot-nginx
|
|
certbot --nginx
|
|
```
|
|
|
|
- In /etc/nginx/sites-enabled/defaut: replace the "location /" with a proxy:
|
|
|
|
```
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8041/;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Scheme $scheme;
|
|
}
|
|
```
|
|
|
|
- Restart server, `systemctl restart nginx`
|
|
- At this point your browser should error with a bad gateway
|
|
|
|
## Install aBot as a normal user
|
|
|
|
```
|
|
git clone https://bitbucket.org/MoonQ/abot
|
|
cd abot
|
|
./install.me
|
|
```
|
|
- You can run the `./start.me` to test your installation
|
|
- It's recommended to run service as a daemon for more robustness, to survive
|
|
reboots etc.. You can do it for example with runit.
|
|
|
|
## Installing runit
|
|
|
|
- Run these commands as root:
|
|
|
|
```
|
|
apt install runit runit-systemd
|
|
systemctl enable runit
|
|
systemctl start runit
|
|
mkdir -p /etc/sv/abot/log
|
|
```
|
|
- Edit file /etc/sv/abot/run, with correct values
|
|
|
|
```
|
|
#!/bin/sh
|
|
|
|
exec 2>&1
|
|
cd /[PATH-TO-ABOT-INSTALLATION]
|
|
exec chpst -u [NORMAL-USER-NAME] ./start.me
|
|
```
|
|
|
|
- Edit file /etc/sv/abot/log/run, with correct values
|
|
|
|
```
|
|
#!/bin/sh
|
|
exec chpst -u [NORMAL-USER-NAME] svlogd -tt /[PATH-TO-ABOT-INSTALLATION]/log
|
|
```
|
|
|
|
- Enable service:
|
|
|
|
```
|
|
ln -s /etc/sv/abot /etc/service/abot
|
|
```
|
|
|
|
- Finally, as the normal user, create the log folder, `mkdir [PATH-TO-ABOT-INSTALLATION]/log`
|
|
- The log folder should be populated with file `current` which has the log of the process.
|
|
|