It's possible to run Demozoo a number of different ways, but work has been done to facilitate running it rather smoothly in either Vagrant or Docker.
First, clone this very repository to a folder on your hard drive:
git clone https://github.com/demozoo/demozoo.git
cd demozooAfter installing Vagrant and VirtualBox, bring up Demozoo as follows:
vagrant upThis will download an Ubuntu Jammy64 image, install dependencies, and fetch the latest public export of the Demozoo database. To start up the site:
vagrant ssh
# then within the Vagrant VM:
./manage.py runserver 0.0.0.0:8000Alternatively you may need to run :
python ./manage.py runserver 0.0.0.0:8000The site will now be available at http://localhost:8000/.
Warning
Installation under Docker is experimental and work in progress. Currently front-end assets (CSS and SVG icons) are not built automatically - these must be built manually after installation.
After installing Docker Desktop, you can bring up Demozoo by typing the following:
cp .docker/.env.example .docker/.env
docker-compose upThis will download the postgres:14-bullseye and python:3.10 images and bootstrap the database with data from the latest Demozoo export.
Booting up the first time will take quite a while, as the database import is large, so be patient. The error messages logged from demozoo-web during the import can be ignored. When the import is done, Running the server on http://localhost:8000 should be printed to the console. You should then be able to visit http://localhost:8000 in a web browser of your choice.
The data files from Postgres are by default stored in the .docker/db/pgdata directory. If you want to wipe the database clean, simply delete that folder.
If you want to work with the search feature, you have to rebuild your database indices first:
./manage.py reindexThis will take a long time, but you only need to do it once.
All account passwords in the public database export are blanked, so you'll need to create a new account to log in. To create a superuser account:
./manage.py createsuperuserand enter the account details when prompted.
Rebuild front-end assets (CSS, SVG icons):
npm run buildSet up a watcher to auto-rebuild front-end assets when source files change:
npm run watchRun the test suite:
make testGenerate a test coverage report:
make coverageRun the linter to check for code style / formatting issues:
make lintRun the code formatter:
make formatInstall pre-commit hooks to apply formatting and linting automatically before commits:
pre-commit installThe procedure above gives you a basic working Demozoo installation, but several features are unavailable due to needing additional configuration:
- file uploads (Amazon S3)
- screenshot processing
- background tasks (scene.org spidering, fetching screenshots from graphics releases...)
Instructions for these will be forthcoming, at least when someone asks for them :-)