# homebrewserver.club > https://homebrewserver.club/ ## Build the site locally ### Get a local copy ```bash $ git clone --recurse-submodules https://git.vvvvvvaria.org/varia/homebrewserver.club ``` ### System requirements Install the system requirements: ```bash $ apt install -y python3 python3-dev python3-venv ``` ### Python requirements Then create a virtual environment and activate it: ```bash $ python3 -m venv .venv $ source .venv/bin/activate ``` Then install the requirements: ```bash $ pip install -r requirements.txt ``` ### Generating the site Generate the content and run the server: ```bash $ pelican content $ pelican --listen --relative-urls ``` Then the site is available at the following URL: > http://localhost:8000 ## Working with the site - Website articles and content are in [content](./content) - The website theme is in [themes/homebrewtheme](./themes/homebrewtheme) - Images are stored in [content/images](./content/images) - Configs are stored in [content/downloads](./content/downloads) While working on the site, you can run the following: ```bash $ pelican --autoreload --listen --relative-urls ``` ### Writing drafts Use `Status: draft` in the article metadata. When the site is generated, the `output/drafts` folder will be created with your new draft article. This allows us to work on new articles and still store the pages here in the repository. ## Deploying the site We have a Git hook setup, so just push as you would as normal: ``` $ git push origin master ``` Details for maintaining the hook on the Varia server are: - We have cloned the site in `/srv/gitea/clones/homebrewserver.club` - We have create a hook deployment script in `/srv/gitea/gitea-repositories/varia/homebrewserver.club.git/hooks/post-update` How it works: when someone runs a `git push origin master`, the script in the `post-update` will run after the updating is finished. In this script, we run all the steps to publish the site as per usual. Such as running `pip install -r requirements.txt` and `pelican` to generate the new output.