# Software Freedom Conservancy website This is a Python/[Django](https://www.djangoproject.com/)-based website that runs [sfconservancy.org](https://sfconservancy.org). ## Contributing The canonical location for this repository is [on Conservancy’s Forgejo instance](https://f.sfconservancy.org/Conservancy/website). ## License The software included herein, such as the Python source files, are generally licensed [AGPLv3](AGPLv3)-or-later. JavaScript source is generally [GPLv3](GPLv3)-or-later. See the notices at the top of each Javascript file for specific licensing details. The content and text (such as the HTML files) is currently [CC-BY-SA-3.0](CC-By-SA-3.0). ## Server configuration Conservancy's webserver runs on a standard Debian installation. For configuration requirements, see `deploy/install.yml`. ## CDN Requests to any URL starting with `/videos/` are forwarded to our CDN server to reduce bandwidth use. These files are uploaded to the CDN manually via the Rackspace API. Note that the Apache rewrite rule requires that the file **not exist** on disk for the redirect to be applied. ## Local development Python dependencies in `requirements.txt` are tied to the versions available in Debian: python3 -m pip install -r requirements.txt To run the tests, install `pytest-django` and run pytest: python3 -m pip install pytest-django python3 -m pytest Then run: python3 manage.py migrate python3 manage.py runserver There is also a Dockerfile available if that's more convenient. See that file for details. ## Deploying To deploy, run `./bin/deploy` on your local machine. Note that the `./bin/deploy` script will requires proper SSH access to the `debian` (default) user SFC's webserver, `hickory.sfconservancy.org`. Your local user on your own local machine will also need push access permission to this repository on the Git server (which was `f.sfconservancy.org` at the time of writing these instructions). ## Link checking To check for broken links in production, run: bin/linkcheck Note that the Apache configuration has a significant number of aliases and redirects for historic URL changes which means that linkchecker may not run cleanly in local development.