You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.6 KiB
Markdown

---
3 years ago
title: "Deploying Quartz to the Web"
3 years ago
tags:
- setup
weight: -1
aliases:
- hosting
---
## Hosting on GitHub Pages
3 years ago
Quartz is designed to be effortless to deploy. If you forked and cloned Quartz directly from the repository, everything should already be good to go! Follow the steps below.
3 years ago
### Enable GitHub Actions Permissions
By default, GitHub disables workflows from modifying your files (for good reason!). However, Quartz needs this to write the actual site files back to GitHub.
3 years ago
Head to `Settings > Action > General > Workflow Permissions` and choose `Read and Write Permissions`
![[notes/images/github-actions.png]]
*Enable GitHub Actions*
3 years ago
### Enable GitHub Pages
Head to the 'Settings' tab of your forked repository and go to the 'Pages' tab.
3 years ago
1. (IMPORTANT) Set the source to deploy from `master` (and not `hugo`) using `/ (root)`
3 years ago
2. Set a custom domain here if you have one!
3 years ago
![Enable GitHub Pages](/notes/images/github-pages.png)*Enable GitHub Pages*
### Pushing Changes
3 years ago
To see your changes on the internet, we need to push it them to GitHub. Quartz is a `git` repository so updating it is the same workflow as you would follow as if it were just a regular software project.
```shell
# Navigate to Quartz folder
cd <path-to-quartz>
# Commit all changes
git add .
git commit -m "message describing changes"
# Push to GitHub to update site
git push origin hugo
```
3 years ago
Note: we specifically push to the `hugo` branch here. Our GitHub action automatically runs everytime a push to is detected to that branch and then updates the `master` branch for redeployment.
3 years ago
### Setting up the Site
Now let's get this site up and running. Never hosted a site before? No problem. Have a fancy custom domain you already own or want to subdomain your Quartz? That's easy too.
Here, we take advantage of GitHub's free page hosting to deploy our site. Change `baseURL` in `/config.toml`.
3 years ago
3 years ago
Make sure that your `baseURL` has a trailing `/`!
[Reference `config.toml` here](https://github.com/jackyzha0/quartz/blob/hugo/config.toml)
```toml
3 years ago
baseURL = "https://<YOUR-DOMAIN>/"
```
If you are using this under a subdomain (e.g. `<YOUR-GITHUB-USERNAME>.github.io/quartz`), include the trailing `/`. **You need to do this especially if you are using GitHub!**
```toml
baseURL = "https://<YOUR-GITHUB-USERNAME>.github.io/quartz/"
```
3 years ago
Change `cname` in `/.github/workflows/deploy.yaml`. Again, if you don't have a custom domain to use, you can use `<YOUR-USERNAME>.github.io`.
3 years ago
Please note that the `cname` field should *not* have any path `e.g. end with /quartz` or have a trailing `/`.
[Reference `deploy.yaml` here](https://github.com/jackyzha0/quartz/blob/hugo/.github/workflows/deploy.yaml)
3 years ago
```yaml {title=".github/workflows/deploy.yaml"}
3 years ago
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
3 years ago
github_token: ${{ secrets.GITHUB_TOKEN }} # this can stay as is, GitHub fills this in for us!
3 years ago
publish_dir: ./public
publish_branch: master
cname: <YOUR-DOMAIN>
```
3 years ago
Have a custom domain? [Learn how to set it up with Quartz ](notes/custom%20Domain.md).
3 years ago
### Ignoring Files
Only want to publish a subset of all of your notes? Don't worry, Quartz makes this a simple two-step process.
❌ [Excluding pages from being published](notes/ignore%20notes.md)
## Docker Support
If you don't want to use a hosting service, you can host using [Docker](notes/docker.md) instead!
I would *not use this method* unless you know what you are doing.
3 years ago
---
3 years ago
Now that your Quartz is live, let's figure out how to make Quartz really *yours*!
> Step 6: 🎨 [Customizing Quartz](notes/config.md)
3 years ago
Having problems? Checkout our [FAQ and Troubleshooting guide](notes/troubleshooting.md).