D

documentation

Documentation on how to install, modify and use websites from the Tor Project.

This wiki holds the documentation to contribute to the different webpages we have in the Tor Project.

To update this wiki you can submit a merge request for the repository: git@gitlab.torproject.org:tpo/web/wiki.wiki.git or https://gitlab.torproject.org/tpo/web/wiki.wiki.git

Tor Project websites are hosted at several computers for redundancy, and these computers are together called "the www rotation". Please check the ​​static sites help page for more info.

Please use this wiki documentation as a basis for other Lektor sites, as community, support, tb-manual, styleguide, template, etc.

The current git repository for the website can be found on ​GitLab.

The repository is built via the following ​Jenkins build process.

The git repository for the 2019 archive can be found on ​gitweb.tpo/project/web/webwml.git. The archive repository is built via the following ​Jenkins build process.

The website is built via Lektor. Lektor is a static file generator like Jekyll, Pelican, Hugo, Middleman and many more. This means that unlike WordPress or similar solutions it does not run on a server, but your local computer (or a build server), and generates static HTML that can be uploaded to any web server or content distribution platform like S3 with CloudFront.

The following excerpt was taken from Lektor Documentation:

Why go static? Because the vast, vast majority of websites will be read many more times than they will be updated. This is crucial because dynamic content does not come for free. It needs server resources and because program code is running there it needs to be kept up to date for to ensure there are no security problems that are left unpatched. Also when a website gets a sudden spike of traffic a static website will stay up for longer on the same server than a dynamic one that needs to execute code.

Sure, there are some things you cannot do on a static website, but those are not things you would use Lektor for. For small dynamic sections, JavaScript paired up with other services is a good solution.