{"id":29434454,"url":"https://github.com/opennebula/website","last_synced_at":"2025-07-13T02:16:19.154Z","repository":{"id":302597755,"uuid":"830919242","full_name":"OpenNebula/website","owner":"OpenNebula","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-10T10:32:39.000Z","size":91987,"stargazers_count":1,"open_issues_count":12,"forks_count":8,"subscribers_count":13,"default_branch":"one-7.0","last_synced_at":"2025-07-10T12:36:10.546Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenNebula.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-19T09:21:34.000Z","updated_at":"2025-07-09T15:33:03.000Z","dependencies_parsed_at":"2025-07-03T08:48:39.700Z","dependency_job_id":null,"html_url":"https://github.com/OpenNebula/website","commit_stats":null,"previous_names":["opennebula/website"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/OpenNebula/website","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Fwebsite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Fwebsite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Fwebsite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Fwebsite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenNebula","download_url":"https://codeload.github.com/OpenNebula/website/tar.gz/refs/heads/one-7.0","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Fwebsite/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265080256,"owners_count":23708121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-13T02:16:15.496Z","updated_at":"2025-07-13T02:16:19.138Z","avatar_url":"https://github.com/OpenNebula.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenNebula 7.0 Documentation\n\nThis is the official repository of OpenNebula's technical documentation. This documentation is live at:\n[http://docs.opennebula.io/7.0](http://docs.opennebula.io/7.0).\n\nYou are encouraged to fork this repo and send us pull requests!\n\nTo create issues to report changes and requests, please use the [OpenNebula main repository](https://github.com/OpenNebula/one), with label `Documentation`.\n\nFor details on contributing to the documentation, including full instructions for building the environment, formatting and spell checking, please see [Contributing to the Documentation](#contributing-to-the-documentation) below.\n\n## Quick Intro\n\nTo build the documentation, you will need:\n\n- The [Hugo](https://gohugo.io/) static site generator and web server: **extended version** between `0.128.0` and `0.145.0`. Version `0.145.0` is **highly** recommended since the documentation was built with this version\n- [Go](https://go.dev/doc/install)\n- [Node.js LTS](https://github.com/nodesource/distributions/blob/master/README.md#using-debian-as-root-nodejs-current)\n- [npm](https://www.npmjs.com/)\n- PostCSS\n\nThe environment can be automatically bootstrapped by running the `./setup.sh` script. This will download and install hugo `0.145.0` along with all other build requirements.\nThereafter you can use `npm run start` to download the different modules and start the server.\n\nThe documentation uses the [Docsy](https://www.docsy.dev/) theme. It is installed automatically as a Hugo module when Hugo first runs from the documentation root folder.\n\nTo build the documentation:\n\n- Clone the repository\n- From the repository root folder, run `hugo server`\n\nHugo should build the site and expose it on `localhost:1313/7.0/`.\n\nThe sections below provide a complete guide for contributing to the documentation.\n\n## Contributing to the Documentation\n\nTo work on the documentation, you will need to install the Hugo web server on your machine and deploy the site locally, to preview your changes. The basic steps are:\n\n1. Install the Hugo web server on your machine and all the pre-requisites.  \n2. Fork the GH repo of the docs, and clone your fork locally.\n3. Create a new branch in your local copy.\n4. Deploy the docs site on your local machine.  \n5. Make the desired modifications, live-previewing on your local site.  \n6. Commit signed and using the usual format as defined in the GitHub Issue Resolution Process.  \n7. Create the PR as per the GH Issue Resolution Process.\n\n**Contents for quick reference:**\n\n- [Quick Links](#quick-links)\n- [Prepare your Environment](#prepare-your-environment)\n- [Preview the Docs in Hugo](#preview-the-docs-in-hugo)\n- [Basic Hugo Site Structure](#basic-hugo-site-structure)\n- [Editing the Docs](#editing-the-docs)\n  - [Links](#links)\n  - [Images](#images)\n  - [Alerts](#alerts)\n  - [Tables](#tables)\n  - [OpenAPI](#openapi)\n  - [Version Variables](#using-documentation-and-software-version-variables)\n  - [Checking Spelling](#checking-spelling)\n\n## Quick Links\n\n### Hugo\n\nHugo homepage: [https://gohugo.io/](https://gohugo.io/).\n\nTo download the recommended version, 0.145.0: [0.145.0 release page](https://github.com/gohugoio/hugo/releases/tag/v0.145.0).\n\n\u003e [!WARNING]\n\u003e It is recommended to download Hugo version 0.145.0, since this is the version used by the GitHub Action. Do not install a version higher than 0.145.0, since version 0.146.0 (released April 10 2025\\) introduced changes in the template system, and the site won't build on this version.\n\n(For reference, see: [https://gohugo.io/installation/](https://gohugo.io/installation/).)\n\n## Prepare your Environment\n\nWhen modifying the docs, it is highly recommended to preview your changes before creating the PR, to ensure there are no errors. Some errors in docs pages (such as unresolvable intra-site links) will cause the GitHub build to fail and changes not to be deployed.\n\nTo download and install the Hugo web server and site dependencies, you can follow the below steps manually or use the provided `setup.sh` script (see [above](#quick-intro)).\n\n### Pre-requisites\n\n1. **Install Go**, you can use your distribution packages, for reference, see the [Go Installation Guide](https://go.dev/doc/install)\n2. **Install Node.js LTS \u0026 NPM**, You will need to install Node v22 and NPM. To avoid possible errors, the recommended installation method is to use NVM (Node Version Manager, check the [installation instructions](https://github.com/nvm-sh/nvm?tab=readme-ov-file#install--update-script))\n3. **Clone** this Github repository\n4. **Install node dependencies**, trun ``npm install`` in the root directory of the repository.\n5. **Download and Install Hugo**, It is recommended to install Hugo 0.145.0 (note that 0.146.0 will not work because of changes in template system). For reference, see: [https://gohugo.io/installation/](https://gohugo.io/installation/).)\n\nThe docs site uses Hugo \\+ the [Docsy theme](https://www.docsy.dev/), which is a Hugo module. When you deploy the site locally for the first time, Hugo should automatically download the theme.\n\n## Preview the Docs in Hugo\n\nIn your terminal, cd to the root directory of your local repo of the docs, and run `hugo server`. Hugo should download the site’s modules and dependencies and deploy the site locally via its embedded web server, by default on port 1313\\.\n\n```\nhugo server\nhugo: downloading modules …\nhugo: collected modules in 31780 msWatching for changes in /home/adm/opennebula/website-version_5/{assets,content,layouts,package.json}\nWatching for config changes in /home/adm/opennebula/website-version_5/hugo.toml, /home/adm/opennebula/website-version_5/go.mod\nStart building sites … \nhugo v0.145.0-666444f0a52132f9fec9f71cf25b441cc6a4f355+extended linux/amd64 BuildDate=2025-02-26T15:41:25Z VendorInfo=gohugoio\n\n                   | EN   \n-------------------+------\n  Pages            | 508  \n  Paginator pages  |   0  \n  Non-page files   |   2  \n  Static files     |  30  \n  Processed images |   2  \n  Aliases          |   0  \n  Cleaned          |   0  \n\nBuilt in 6508 ms\nEnvironment: \"development\"\nServing pages from disk\nRunning in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender\nWeb Server is available at //localhost:1313/ (bind address 127.0.0.1)\n```\n\nHugo will build the HTML files in the site’s `public` directory and serve the site on localhost port 1313, or another port if 1313 isn’t available.\n\nTo view the site, fire up a browser and go to `localhost:1313/7.0/`. You should see the home page of the OpenNebula docs site, with the table of  contents on the left.\n\nIf you change the contents of a doc page in the docs repo, the page shown in the browser will be automatically updated.\n\n\u003e [!TIP]\n\u003e Useful options for running Hugo in server mode:  \n\u003e `--disableFastRender` \\- Enables full renders on changes  \n\u003e `--noHTTPCache` \\- Prevent HTTP caching\n\n## Basic Hugo Site Structure\n\n### Directory Structure\n\nThe docs repo contents are similar to this:\n\n```\nassets/  content/  go.sum     layouts/  node_modules/  package-lock.json  README.md   static/\nCNAME    go.mod    hugo.toml  LICENSE   package.json   public/            resources/\n```\n\nThe docs Markdown files are in `content/`. When you run Hugo, it builds the complete HTML site into `public/`. The `public/` folder is not pushed to the online repo; you can delete its contents when not running Hugo.\n\n`assets/images/` contains all images for the site. New images should be placed here.\n\nThe directory structure of the local site in Markdown is the same as the finished site in HTML. You can find a specific page in the Markdown files by simply following the URL in the online, e.g. `product/cloud_system_administration/multitenancy/auth_overview/` corresponds to `content/product/cloud_system_administration/multitenancy/auth_overview.md`\n\nFor instance, the directories for the \"Cloud Architecture and Design\" section:\n\n```\n├── cloud_architecture_and_design\n│   ├── cloud_architecture_design.md\n│   ├── edge_cloud_reference_architecture.md\n│   ├── _index.md\n│   └── open_cloud_reference_architecture.md\n├── _index.md\n└── opennebula_concepts\n    ├── cloud_access_model_and_roles.md\n    ├── _index.md\n    ├── key_features.md\n    ├── knowledge_base.md\n    ├── opennebula_overview.md\n    └── use_cases.md\n```\n\n### Index Files\n\nIn Hugo, all sections and subsections must have an `_index.md` file, or they will not be shown in the auto-generated content tables.\n\nThe Markdown `_index.md` files are empty except for the mandatory \"front matter\" (more on that below). When building the site, Hugo autogenerates a table of contents (ToC) for the section, and fills the resulting index.html file with it. This is the default behavior unless `no_page_list = true` is present in the `_index.md` front matter.\n\n```\nunderstand_opennebula$ cat _index.md \n---\ntitle: \"Understand OpenNebula\"\ndate: \"2025-02-17\"\ndescription: \"Overview of OpenNebula, its key concepts and features\"\ncategories:\npageintoc: \"2\"\ntags:\nweight: \"1\"\n---\n\n\u003ca id=\"understand-opennebula\"\u003e\u003c/a\u003e\n\n\u003c!--# Understand OpenNebula --\u003e\n```\n\nThe \"front matter\" is the YAML content between the `---`. (The HTML ID and the commented-out title were produced during the docs migration, and can be ignored.)\n\nWhen creating a new section or subsection, you will need to create an `_index.md` file with the front matter, but no other content is needed in the file.\n\n### Markdown and Hugo \"Shortcodes\"\n\nHugo is written in the Go language. It exposes an API through which you can call Go templates from within a page’s markup. These templates define formatting for elements within a page.\n\nInvoking a shortcode from Markup takes the form `{{\u003c...\u003e}}` or `{{%...%}}`. The first tells Hugo that the inner content is HTML/plain text and needs no further processing. The second tells Hugo that the contents are Markdown.\n\nIn the site, the most-often used shortcode by far is `relref` (although it may be removed, see note below). Others include the `image` shortcode for setting image size, and the `card` and `cardpane` shortcodes used in the index files.\n\nFor more information on shortcodes, see the [Hugo documentation](https://gohugo.io/content-management/shortcodes/).\n\n### Page Front Matter\n\nEach docs page must have a section at the beginning called the \"front matter\", or it will not be shown in the finished site.\n\nCurrently most pages contain front matter like the following:\n\n```\nunderstand_opennebula$ head opennebula_concepts/opennebula_overview.md\n---\ntitle: \"OpenNebula Overview\"\ndate: \"2025-02-17\"\ndescription:\ncategories: [Introduction, Overview]\npageintoc: \"4\"\ntags:\nweight: \"1\"\n---\n```\n\n- `title` will be automatically shown in the ToCs and at the top of the docs page. So when creating a new page, do not include the title as a Markdown header.\n- `date` can be safely ignored. There is no need to include it when creating a new page.\n- `description` is currently used for \"Chapters\" (top-level, H1), sections and subsections. It's shown in the auto-generated index files. When creating a new page, there is no need to include it.\n- `categories` are used to populate the tag cloud; for the moment their use is limited to the Quick Start.\n- `pageintoc` is a residue from the migration and can be ignored.\n- `weight` determines the order that the section or page will appear in the ToC. If `weight` = `1` the section or page appears at the beginning of the ToC for the section that it resides in. If two pages in a section have the same weight number, or if they do not have a weight number, their order in the ToC is determined alphabetically by their titles.\n\n## Editing the Docs\n\nWriting in a Hugo site is very similar to writing GitHub wiki pages.\n\nFor a syntax reference, see [Basic writing and formatting syntax](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) in GH.\n\n### Links\n\nLinks format:\n\n```\n[Link Name](https://www.example.com)\n```\n\n### Intra-site Links\n\nWhen linking to a page within the documentation site, we can either:\n\n\u003e1. **Use relative links as usual in Markdown**, which requires entering the relative path of the page we are linking to; or\n\u003e2. **if linking to a page with a unique filename, we can use the Hugo `relref` shortcode**, which allows to omit the path and link only by filename.\n\n#### Option 1: Use Relative Links\n\nUse relative links as usual in Markdown, in the form:\n\n```\n[Link Name](path/to/file)\n```\n\nFor example:\n\n```\n[Self Provision](../../virtual_machines_operation/virtual_machines_networking/self_provision)\n```\n\nUse _relative_ paths. On Bash, to quickly find out the relative path of a file, from the directory of the referrer file you can use `ls` with the autocomplete feature (`TAB`).\n\nNote that:\n- You can link to sections within a page with `#\u003csection name\u003e`\n- The `.md` suffix is not necessary\n\n#### Option 2: Use the `relref` Shortcode\n\nThe `relref` shortcode allows you to create intra-site links by referencing only the page filename (and page section if desired). Using `relref` requires that the referenced page has a unique filename on the site.\n\n`relref` is handy for writing quickly and for preventing broken links in case of changes in the ToC structure.\n\nFormat:\n\n```\n[Link name]({{% relref \"linked_page\" %}})\n```\n\nFor example:\n\n```\nFor further configuration, check the specific [guide]({{% relref \"kvm_driver#kvmg\" %}}).\n```\n\nAs with relative links, note that:\n- You can link to sections within a page with `#\u003csection name\u003e`\n- The `.md` suffix is not necessary\n\n\u003e[!WARNING]\n\u003eHugo shortcodes, including `relref`, are not rendered in GitHub, so links created with `relref` will not work when viewing a docs page on GitHub.\n\n### Images\n\nTo insert an image:\n\n```\n![image tag](/images/image.png)\n```\n\nFor example:\n\n```\n![image1](/images/sunstone_user_info_quotas.png)\n```\n\n#### Setting Image Size\n\nTo set the image size, we use the `image` \"shortcode\". (A shortcode passes HTML to Hugo to inject in the page, or invokes the Hugo Go API to format something based on a template.)\n\nTo link to an image and set its size:\n\n```\n{{\u003c image path=/images/image width=XXX height=XXX \u003e}}\n```\n\nwhere `width` and `height` are in pixels. For example:\n\n```\n{{\u003c image path=/images/one_deploy_basic_arch.png width=720 height=446 \u003e}}\n```\n\n(As you can see in this case, the `image` shortcode simply passes the width and height to Hugo in HTML.)\n\n#### Aligning Images\n\nWe are currently placing most images without alignment (by default they are aligned left); however, in some cases it may be necessary to align an image, for example to center an image that is narrower than usual.\n\nFor the time being, to manually align an image we are using the `alt` attribute for the image:\n\n- `alt=\"\u003c\"` aligns left\n- `alt=\"\u003e\"` aligns right\n- `alt=\"\u003e\u003c\"` aligns center\n\n**Examples**:\n\nCenter image, using regular Markdown:\n\n```\n![\u003e\u003c](/images/fs_ssh.png)\n```\n\nCenter image, using the `image` shortcode:\n\n```\n{{\u003c image alt=\"\u003e\u003c\" path=/images/local_ds_cache.png width=837 height=557 \u003e}}\n```\n\n### Alerts\n\nTo place an alert, use the `alert` shortcode:\n\n```\n{{\u003c alert title = \"Title\" color = \"color\" \u003e}}Text of the alert.{{\u003c /alert \u003e}}\n```\n\nFor example:\n\n```\n{{\u003c alert title=\"Warning\" color=\"warning\" \u003e}}\nMake sure that every OpenNebula process is stopped. The output of `systemctl list-units | grep opennebula` should be empty.\n{{\u003c /alert \u003e}}\n```\n\n#### Supported Alert Types\n\nIn the docs we are currently using:\n\n| Alert title | Color |\n|--------|--------------|\n| `Note` | `success` |\n| `Important` | `success` |\n| `Warning` | `warning` |\n| `Tip` | `info` |\n\nThe `alerts` shortcode automatically inserts the appropriate icon into the alert HTML, based on the alert title. If the alert title is other than those listed in the table above, a generic \"info\" icon (the same as for title \"Note\") is inserted, and if there is no title, no icon is inserted.\n\n### Tables\n\nExample:\n\n```\n| Parameter                   | Description                                                           |\n|-----------------------------|-----------------------------------------------------------------------|\n| `--name name`               | Name of the new Image                                                 |\n| `--datastore name \\| ID`    | Name/ID of the Datastore to store the new Image                       |\n| `--description description` | Description for the new Image (Optional)                              |\n```\n\nFormatted output:\n\n| Parameter                   | Description                                                           |\n|-----------------------------|-----------------------------------------------------------------------|\n| `--name name`               | Name of the new Image                                                 |\n| `--datastore name \\| ID`    | Name/ID of the Datastore to store the new Image                       |\n| `--description description` | Description for the new Image (Optional)                              |\n\n\n#### Table Formatting\n\nIn tables, the \"pipe\" character ( `|` ) must be escaped, or it will be interpreted as a column delimiter.\n\nUnlike in ReStructured Text, it is not mandatory for columns in the Markdown file to have the same width (although it's recommended for readability).\n\nFor long paragraphs, if possible do *not* insert line breaks in tables, since that would force a line break in the HTML even if it's not necessary in the rendered page. If you need to insert a line break, you can use the HTML `\u003cbr\u003e`, as below:\n\n```\n| `--datastore name \\| ID`    | Name/ID of the Datastore\u003cbr\u003eto store the new Image                       |\n```\n\nThe row above produces:\n\n| Parameter                   | Description                                                           |\n|-----------------------------|-----------------------------------------------------------------------|\n| `--name name`               | Name of the new Image                                                 |\n| `--datastore name \\| ID`    | Name/ID of the Datastore\u003cbr\u003e to store the new Image                   |\n| `--description description` | Description for the new Image (Optional)                              |\n\nMarkdown tables do not support merged columns or rows.\n\n### OpenAPI\n\nYou can reference API documentation from a YAML or JSON file in one of two ways:\n\n1. With the `redoc` shortcode:\n\n\u003e```\n\u003e{{\u003c redoc \"path/to/file/api.json\" \u003e}}\n\u003e```\n\n2. With the `swaggerui` shortcode:\n\n\u003e```\n\u003e{{\u003c swaggerui src=\"/path/to/file/api.yaml\" \u003e}}\n\u003e```\n\nNote that for the `swaggerui` shortcode to work, the page must be of type `swagger`, i.e. the page front matter must declare:\n\n```\ntype = \"swagger\"\n```\n\nFor reference, see the [Docsy documentation](https://www.docsy.dev/docs/adding-content/shortcodes/#swaggerui).\n\n### Using Documentation and Software Version Variables\n\nYou can insert the following variables:\n\n- `version`: The short version of OpenNebula, e.g. `7.0`.\n- `release`: The full release version of OpenNebula, e.g. `6.99.85`.\n- `context_release`: Version of the context packages, e.g. `7.0.0`.\n- `docs_version`: Version of the documentation, e.g. `7.0`.\n\nNote that `docs_version` may be used by some shortcodes to reference part of the site's URL.\n\nTo insert a version with a variable, use a shortcode with the variable name. Examples:\n\n```\nThe upgrade to OpenNebula EE {{\u003c version \u003e}}...\n```\n\n```\nhttps://\u003ctoken\u003e@enterprise.opennebula.io/repo/{{\u003c release \u003e}}/Debian/11 stable\n```\n\nTo consult the current values of the variables, see the `hugo.toml` configuration file (look for `### Version variables`).\n\n\n### Checking Spelling\n\nAfter editing a document or creating a new document, spell check for typos using PysPelling with Aspell, with the OpenNebula wordlist provided in the repository.\n\nSpell checking tools:\n\n#### Requisites:\n\n- Python \u003e=3.8 (for PysPelling)\n- `aspell`\n- `aspell-en`\n- `pyspelling`\n- `pymdownx-blocks` (for parsing Markdown)\n\n#### Installation\n\n##### Aspell\n\nIf you're on Linux, most probably Aspell and the dictionary used (`en_US`) is already installed. Otherwise, on most Linux distributions Aspell and its dictionaries will be available in the distribution's package manager.\n\nTo install Aspell and the US English dictionary on Debian/Ubuntu:\n\n```\nsudo apt-get install aspell aspell-en\n```\n\nInstallation example on macOS:\n\n```\nbrew install aspell\n```\n\nOn macOS, you will have to download a dictionary and place it in `/Library/Spelling`. You can obtain Aspell dictionaries from `https://ftp.gnu.org/gnu/aspell/dict/en/`.\n\n##### Installing PysPelling\n\n```\npip install pyspelling\npip install pymdownx-blocks\n```\n\nAfter installation, ensure that the directory to which the scripts are installed is included in your `PATH` environment variable. In Linux, by default they are installed in `~/.local/bin`. To add this directory to your environment, edit the configuration file for your command interpreter (for example `~/.bashrc`) and add the following:\n\n```\nexport PATH=\"$PATH:~/local/.bin\"\n```\n\nThen, log out and log back in or reload your environment with `source ~/.bashrc`.\n\n##### Running the Spell Checker\n\nRun the spell checker indicating the config file, `.spellcheck.yml`.\n\n```\npyspelling -c .spellcheck.yml\n```\n\nAlternatively you can use the provided `spellcheck.sh`:\n\n```\n./spellecheck.sh\n```\n\nThis runs the spell checker for the whole repo, excluding the words provided in the OpenNebula wordlist (in `dicts/OpenNebula.dic`).\n\n\nIf you wish to only check the files that you wrote or modified:\n\n```\n--name Markdown -c .spellcheck.yml --source \u003cfile\u003e\n```\n\nOr using the script:\n\n```\n./spellcheck.sh --source \u003cfile\u003e\n```\n\nFor example:\n\n```\npyspelling --name Markdown -c .spellcheck.yml --source content/product/my_new_section/*.md\n```\n\n```\n./spellcheck.sh --source content/product/my_new_section/*.md\n```\n\nBoth of the above commands check every Markdown file (\\*md) in the specified section. Note that if not using `spellcheck.sh`, in order to check only specific file(s) you have to pass the `--name Markdown` parameter.\n\nTo specify the number of parallel processes that `pyspelling` should run, you can use the `--jobs` flag, e.g. `--jobs 8`. This can be useful when spellchecking the whole site.\n\nFor help, `pyspelling -h`.\n\n##### Failed Spell Checks/Adding Words to the Dictionary\n\nThe spell checker displays its results on standard output, including any errors and the names of the files where they occur. If you get any errors you will need to correct them or, if an error is a false positive, update the dictionary at `dicts/OpenNebula.dic` and include the update in your PR.\n\nIf you get unexpected behavior, please check the default options for your Aspell installation (to quickly check your Aspell config, you can run `aspell dump config`).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopennebula%2Fwebsite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopennebula%2Fwebsite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopennebula%2Fwebsite/lists"}