REDbot
REDbot is lint for HTTP resources.
It checks HTTP resources for feature support and common protocol problems. You can use the public instance on https://redbot.org/, or you can install it locally and use it on the command line, or even self-host your own Web checker.
Contributing to REDbot
Your ideas, questions and other contributions are most welcome. See CONTRIBUTING.md for details.
Setting Up Your Own REDbot
Requirements
REDbot needs:
- Python 3.7 or greater
- thor
- markdown
- netaddr
- Jinja2
Once you have Python, you can install the required libraries with:
pip install -r requirements.txt
Installation
Unpack the REDbot tarball. The relevant files are:
bin/redbot_cgi.py
- the Web CGI script for running REDbotbin/redbot_cli
- the command-line interfaceredbot/
- REDbot's Python library filesredbot/assets/
- REDbot's CSS stylesheet and JavaScript library
To install from source (e.g., if you clone from github):
pip install .
installs REDbot's libraries as well as the command-line version as redbot_cli
.
Setting up your Web Server
To run REDbot as a CGI script, place redbot_cgi.py
where you wish it to be served from by the Web
server, and place config.txt in the same directory.
For example, with Apache you can put it in a directory and add these configuration directives (e.g., in `.htaccess, if enabled):
AddHandler cgi-script .py
DirectoryIndex redbot_cgi.py
If the directory is the root directory for your server "example.com", this will configure REDbot to be at the URI "http://example.com/".
You can also locate config.txt somewhere else, and indicate its path in an environment variable:
SetEnv REDBOT_CONFIG /path/to/config.txt
The contents of the assets directory also need to be made available on the server; by default, they're in the 'static' subdirectory of the script's URI. This can be changed using the 'static_root' configuration variable in config.txt.
You should also create the directory referenced by the 'save_dir' configuration variable, and make sure that it's writable to the Web server process. This is where RED stores state files, and you should configure a cron job to regularly clean it. For example:
0 * * * * find /var/state/redbot/ -mmin +360 -exec rm {} ;
Running REDbot as a systemd Service
REDbot can run as a standalone service, managed by systemd. This offers a degree of sandboxing and resource management, as well as process monitoring (including a watchdog function).
To do this, clone the repo to your system and copy extra/redbot.service
into the appropriate directory (on most systems, /etc/systemd/system/
.)
Modify the file appropriately; this is only a sample. In particular, you will need to adjust the first part of BindReadOnlyPaths
to suit the location of the REDbot directory for you.
Then, as root:
systemctl reload-daemon
systemctl enable redbot
systemctl start redbot
By default, REDbot will listen on localhost port 8000. This can be adjusted in config.txt
. Running REDbot behind a reverse proxy is recommended, if it is to be exposed to the Internet.
Running REDbot with Docker
If you wish to run REDbot using Docker, get a local copy of the repository, then:
docker build -t redbot .
Start the webserver:
docker run -p 8000:8000 redbot
Or, just:
make docker
to run REDbot on port 8000.
Credits
Icons by Font Awesome. REDbot includes code from tippy.js and prettify.js.