I2P website
To run locally (for testing purposes):
-
Install proxychains, configure it for Tor
-
Pull in the dependencies:
$ proxychains ./setup_venv.sh
(you can also pull them non-anon by leaving out proxychains)
-
Compile translations (if you want to see them):
$ ./compile-messages.sh
-
Start the webserver:
$ ./runserver.py
-
Open the site at http://localhost:5000/
Running a mirror
If you want to mirror the I2P website, thanks! Here is a checklist:
- Do not edit any of the files in
i2p2www/
- In particular, do not change the
CANONICAL_DOMAIN
variable ini2p2www/__init__.py
, it needs to point to the official site for SEO.
- In particular, do not change the
- If you need to edit variables in
etc/update.vars
, copy the file toetc/update.vars.custom
and edit appropriately. The only variable you may need to edit isMTNURL
inetc/update.vars
(if your Monotone client tunnel is listening on a different port). - If you want to enable caching, copy
i2p2www/settings.py.sample
toi2p2www/settings.py
and edit appropriately. - Add
./site-updater.sh
to your crontab. This will keep the site updated, recompile the translations when necessary, and touch a file in/tmp/
(look inetc/update.vars
for the filename, your webserver should restart WSGI when the timestamp of this file changes).
Running a mirror with Docker
It's possible to set up a mirror using apache2 inside of a Docker container. It is intended to provide a HTTP server, to use HTTPS, using a reverse proxy is the easiest way. You should not need to make any modifications to the service running inside the container, but you may make the same modifications to the containerized mirror that you would to a normal mirror by changing your local copy of the site according to the recommendations in the previous settings.
-
To automatically start an HTTP mirror on port 8090, run:
site-updater-docker.sh
-
When you have your mirror configured, add
site-updater-docker.sh
to your crontab to keep the site up-to-date.
Configuration
Configuration files for the various scripts are in etc/
. Environment variables
in etc/translation.vars
can be overridden by creating the file
etc/translation.vars.custom
and re-defining the environment variables there.
Pulling updated translations from Transifex:
-
Pull new and updated translations from Transifex:
$ tx pull -a
-
Correctly format the translations: Do NOT forget this step!
$ ./update-existing-po.sh
-
Look for errors in po files:
$ ./checkpo.sh
-
Find which po files have new strings:
$ ./findpochanges.sh
-
Check in the updated translations:
# git instructions $ git commit -am "Updated translations"
# older mtn instructions $ mtn ci `cat newtranslations.txt` -m "Updated translations"
-
Check in any new translations: First, look to see which translations are supported in i2pwww/init.py. For any new translations that are NOT in init.py, either delete the po directory i2p2www/translations/xx (if it's not translated enough to add it to the website), or add the language to the table in init.py (if it's translated enough to add it to the website).
# git instructions $ git add i2p2www/translations/* && git commit -am "New translations"
# older mtn instructions $ mtn add -R i2p2www/translations/ && mtn ci i2p2www/translations/ -m "New translations"
Pushing updated translation source (.pot) files to Transifex:
-
Update the .pot files with any changes to the website text:
$ ./extract-messages.sh
-
Check in any changes to the .pot files (optional):
# git instructions $ git commit -am "Updated translation strings"
# older mtn instructions $ mtn ci pots/ -m "Updated translation strings"
-
Push pots file changes to Transifex:
$ tx push -s
Updating spec tags:
ctags is used to generate references to the specifications. The tags file is i2p2www/spec/spectags. When the specifications are changed, the file should be regenerated and checked in.
Command to generate the file:
```
$ cd i2p2www/spec && ctags -f spectags --langdef=rst --langmap=rst:.rst --regex-rst=/_type-\([a-zA-Z0-9]+\)/\\1/t,type/ --regex-rst=/_struct-\([a-zA-Z0-9]+\)/\\1/s,struct/ --regex-rst=/_msg-\([a-zA-Z]+\)/\\1/m,msg/ -R -n *.rst
```