hannah-eee/forjero-docs huggingface dataset:
File: .lychee.toml

no_progress = true
format = "markdown"
output = "report.md"
accept = ["200", "429"]
scheme = ["https", "http"]
skip_missing = false
include_verbatim = false
exclude = [
    '^https://code\.forgejo\.org/api/v1',
    '^https://codeberg\.org/forgejo/forgejo/vX\.Y/forgejo',
    '^https://dash\.cloudflare\.com/\?to\=/\:account/turnstile',
    '^https://img\.shields\.io/badge/%7B%7B.label%7D%7D-%7B%7B.text%7D%7D-%7B%7B.color%7D%7D',
    # Exclude some known redirects
    '^https://(code|data)\.forgejo\.org/?$',
    '^https://invisible\.forgejo\.org',
    '^https://code.\forgejo\.org/[^/]+(/[^/]+)?/settings',
    '^https://codeberg\.org/[^/]+(/[^/]+)?/settings',
    '^https://(dev|try)\.next\.forgejo\.org/?$',
    '^https://(docs\.)?weblate\.org/?$',
    '^https://nodejs\.org/?$',
]
exclude_path = [
    'v(.*)/contributor/',
]
exclude_all_private = true
verbose = "info"
File: .typos.toml

# https://github.com/crate-ci/typos/blob/master/docs/reference.md

# mask some false positives
[default.extend-words]
# ./docs/admin/recommendations.md
Redict = "Redict"
# ./docs/admin/command-line.md
HELO = "HELO"
TABL = "TABL" # weird false-positive
# ./docs/admin/config-cheat-sheet.md
odf = "odf"
# ./docs/contributor/adr/adr-activity-for-like.md
edn = "edn"
# ./docs/admin/runner-installation.md https://passt.top/passt/about/
passt = "passt"

# genuine typos:

# ./docs/admin/setup/reverse-proxy.md
haprox = "haproxy"

[default]
extend-ignore-identifiers-re = [
	# ./docs/admin/config-cheat-sheet.md
	"\\b(ecdhe_)?rsa_with_.*\\b",
]

[files]
extend-exclude = [
	# docs repo isn't the source of truth for this generated file; typo detection shouldn't flag issues with it because
	# they can't be fixed here.
	"docs/admin/command-line.md"
]
File: package.json

{
  "name": "docs",
  "version": "0.0.0",
  "description": "Forgejo Documentation",
  "author": "Forgejo Contributors",
  "license": "CC-BY-SA-4.0",
  "private": true,
  "scripts": {
    "preview": "./scripts/preview.sh",
    "test": "echo \"Error: no test specified\" && exit 1",
    "lint": "pnpm run lint:remark && pnpm run lint:prettier",
    "lint:remark": "remark . --quiet --frail",
    "lint:prettier": "prettier --check .",
    "format:remark": "remark . --quiet --frail --output",
    "format:prettier": "prettier -w --cache .",
    "prepare": "husky install",
    "mermaid": "./scripts/mermaid_image_generate.sh",
    "update-schedule": "./scripts/release-schedule.sh && prettier -w --cache docs/admin/release-schedule.md"
  },
  "lint-staged": {
    "*.md": "remark --quiet --frail",
    "*": "prettier -w --cache --ignore-unknown"
  },
  "remarkConfig": {
    "plugins": [
      "remark-frontmatter",
      "remark-preset-lint-consistent",
      "remark-preset-lint-recommended",
      [
        "remark-lint-list-item-indent",
        "one"
      ],
      [
        "remark-lint-heading-style",
        "atx"
      ],
      [
        "remark-lint-no-undefined-references",
        false
      ]
    ]
  },
  "devDependencies": {
    "@mermaid-js/mermaid-cli": "11.15.0",
    "husky": "9.1.7",
    "lint-staged": "16.4.0",
    "prettier": "3.8.3",
    "remark-cli": "12.0.1",
    "remark-frontmatter": "5.0.0",
    "remark-lint-heading-style": "4.0.1",
    "remark-lint-list-item-indent": "4.0.1",
    "remark-lint-no-undefined-references": "5.0.2",
    "remark-preset-lint-consistent": "6.0.1",
    "remark-preset-lint-recommended": "7.0.1"
  },
  "packageManager": "pnpm@10.33.4+sha512.1c67b3b359b2d408119ba1ed289f34b8fc3c6873412bec6fd264fbdc82489e510fcbecb9ce9d22dae7f3b76269d8441046014bdca53b9979cd7a561ad631b800"
}
File: release-schedule.json

major: 7
minor: 0
cut: 2024-04-01
release: 2024-04-23
eol: 2025-07-17
lts: yes
major: 8
minor: 0
cut: 2024-07-01
release: 2024-07-30
eol: 2024-10-16
lts: no
major: 9
minor: 0
cut: 2024-09-25
release: 2024-10-16
eol: 2025-01-16
lts: no
major: 10
minor: 0
cut: 2024-12-25
release: 2025-01-16
eol: 2025-04-16
lts: no
major: 11
minor: 0
cut: 2025-03-26
release: 2025-04-16
eol: 2026-07-16
lts: yes
major: 12
minor: 0
cut: 2025-06-25
release: 2025-07-17
eol: 2025-10-16
lts: no
major: 13
minor: 0
cut: 2025-09-25
release: 2025-10-16
eol: 2026-01-29
lts: no
major: 14
minor: 0
cut: 2025-12-18
release: 2026-01-15
eol: 2026-04-30
lts: no
major: 15
minor: 0
cut: 2026-03-26
release: 2026-04-16
eol: 2027-07-15
lts: yes
major: 16
minor: 0
cut: 2026-06-25
release: 2026-07-16
eol: 2026-10-29
lts: no
major: 17
minor: 0
cut: 2026-09-24
release: 2026-10-15
eol: 2027-01-28
lts: no
major: 18
minor: 0
cut: 2026-12-17
release: 2027-01-14
eol: 2027-04-29
lts: no
major: 19
minor: 0
cut: 2027-03-25
release: 2027-04-15
eol: 2028-07-13
lts: yes
major: 20
minor: 0
cut: 2027-06-24
release: 2027-07-15
eol: 2027-10-28
lts: no
File: .forgejo\renovate.json

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["local>forgejo/renovate-config"],
  "packageRules": [
    {
      "matchUpdateTypes": ["minor", "patch"],
      "matchCurrentVersion": "!/^0/",
      "automerge": true
    },
    {
      "matchDepTypes": ["devDependencies"],
      "matchPackageNames": ["/lint/", "/prettier/"],
      "automerge": true
    }
  ],
  "lockFileMaintenance": {
    "enabled": true,
    "automerge": true
  }
}
File: docs\license.md

---
title: 'License'
---

This documentation is licensed under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.en).

The copyright holders are listed in the git history.

---

Some content is copied from https://github.com/go-gitea/gitea, published under the [Apache 2.0](https://github.com/go-gitea/gitea/blob/ffce336f1802b2f2298fc8fd27e815086702c812/docs/LICENSE) license.

Some content is copied from https://codeberg.org/Codeberg/Documentation/

The Codeberg logos in this website are by @mray,
licensed under [CC0 1.0](http://creativecommons.org/publicdomain/zero/1.0/).

The fonts in this website are documented on the [Codeberg Design repo](https://codeberg.org/Codeberg/Design#font-inter).

The icons in this website are by [Font Awesome](https://github.com/FortAwesome/Font-Awesome),
licensed under [multiple licenses](https://fontawesome.com/license/free).

Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.

"Knut the Polar Bear" has been derived from [Polar bear remix](https://web.archive.org/web/20240318012628if_/https://openclipart.org/detail/193243/polar-bear-remix), under CC0 1.0
File: scripts\mermaid_image_generate.sh

#!/usr/bin/env sh

mermaid_path=docs/_mermaid
mermaid_img_path=docs/_mermaid/_images

# Clean generated svg files
find $mermaid_img_path -type f -name "*.svg" -delete

# Generate svg files
for file in $(find $mermaid_path -type f -name "*.md")
do
  echo "Markdown input $file:"
  dir_md=$(dirname "$file")
  dir_relative=${dir_md#*docs/_mermaid/}
  dir_output="$mermaid_img_path/$dir_relative"
  mkdir -p $dir_output
  name=$(basename "$file" .md)
  node_modules/.bin/mmdc -i $file -o "$dir_output/$name.svg"
done
File: scripts\preview.sh

#!/usr/bin/env sh

if hash xdg-open 2>/dev/null; then
	open_cmd=xdg-open
else
	open_cmd=open
fi

current_branch=$(git branch --show-current)
repo_path=$(pwd)

# Generate mermaid images
./scripts/mermaid_image_generate.sh

# Clone the website repo, or make sure the current clone is up to date
if [ ! -e "./.preview" ];then
	git clone https://codeberg.org/forgejo/website.git .preview
	cd .preview
else
	cd .preview
	git checkout main
	git pull
fi

# make sure the docs content of the website is up to date
git submodule update --remote

# install the website dependencies
pnpm install

# symlink the current docs branch from the website content repo
rm -rf ./src/content/docs/$current_branch
mkdir -p $(dirname ./src/content/docs/$current_branch)  # in case of branch names with slashes
ln -s "$repo_path/docs/" ./src/content/docs/$current_branch

rm -rf ./public/images/$current_branch
mkdir -p $(dirname ./src/content/images/$current_branch)  # in case of branch names with slashes
ln -s "$repo_path/images/" ./public/images/$current_branch

rm -rf ./forgejo-docs/next/release-schedule.json
ln -s "$repo_path/release-schedule.json" ./forgejo-docs/next/release-schedule.json

# once the dev server is running, open the current docs branch in the browser
sleep 3 && $open_cmd http://localhost:4321/docs/$current_branch/ &

# start the dev server
pnpm run dev
File: scripts\release-schedule.sh

#!/bin/bash

set -e

if ! which jq >/dev/null; then
	apt-get install -qq -y jq
fi

dir=docs/admin

tag="<!-- lines below are replaced -->"
schedule="$(sed -e "/$tag/,20000d" <$dir/release-schedule.md)"

(
	cat <<EOF
$schedule
$tag

| **Version** | **Cut branch** | **Release date** | **End Of Life** |
| ----------- | -------------- | ---------------- | --------------- |
EOF
	jq --raw-output '
def date: .|strptime("%Y-%m-%d")|strftime("%e %B %Y");
def bold: "**\(.)**";

.[] | "| "
+ "\(.major).\(.minor)\(if .lts then " (LTS)" else "" end) |"
+ "\(.cut|date) |"
+ "\(.release|date) |"
+ "\(if .lts then .eol|date|bold else .eol|date end) |"
' release-schedule.json
) >$dir/release-schedule.md
File: .forgejo\workflows\backport.yml

name: backport

on:
  pull_request_target:
    types:
      - closed
      - labeled

jobs:
  backporting:
    if: >
      github.event.pull_request.merged
      &&
      contains(toJSON(github.event.pull_request.labels), 'backport/v')
    runs-on: docker
    container:
      image: 'data.forgejo.org/oci/node:24-trixie'
    steps:
      - name: event info
        run: |
          cat <<'EOF'
          ${{ toJSON(github) }}
          EOF
      - uses: https://data.forgejo.org/actions/git-backporting@v4.9.1
        if: secrets.WEBSITETOKEN != ''
        with:
          target-branch-pattern: '^backport/(?<target>(v.*))$'
          strategy: ort
          strategy-option: find-renames
          cherry-pick-options: -x
          auth: ${{ secrets.WEBSITETOKEN }}
          pull-request: ${{ github.event.pull_request.url }}
          auto-no-squash: true
          enable-err-notification: true
          git-user: forgejo-backport-action
          git-email: forgejo-backport-action@noreply.codeberg.org
File: .forgejo\workflows\cli.yml

name: CLI

on:
  schedule:
    - cron: '0 7 * * *'
  workflow_dispatch:

jobs:
  cli:
    runs-on: docker
    steps:
      - uses: https://data.forgejo.org/actions/checkout@v6

      - run: ./scripts/cli-docs.sh > docs/admin/command-line.md

      - uses: https://data.forgejo.org/peter-evans/create-pull-request@v5
        with:
          commit-message: 'admin: update CLI docs'
          committer: forgejo-website <forgejo-website@noreply.codeberg.org>
          author: forgejo-website <forgejo-website@noreply.codeberg.org>
          branch: cli
          delete-branch: true
          title: 'admin: update CLI docs'
          body: ''
File: .forgejo\workflows\links.yml

name: Links

on:
  schedule:
    - cron: '30 5 * * *'
  workflow_dispatch:

jobs:
  linkChecker:
    runs-on: docker
    steps:
      - name: Checkout next
        uses: actions/checkout@v6
        with:
          ref: next
          path: next

      - name: Checkout LTS (v15.0)
        uses: actions/checkout@v6
        with:
          ref: v15.0
          path: v15.0

      - name: Install lychee
        run: |
          curl -sL -o lychee.tar.gz "https://github.com/lycheeverse/lychee/releases/download/lychee-v0.23.0/lychee-x86_64-unknown-linux-gnu.tar.gz"
          echo 1fcb6ccf10d04c22b8c5873c5b9cb7be32ee7423e12169d6f1a79a6f1962ef81 lychee.tar.gz | sha256sum -c && tar -xzf lychee.tar.gz lychee

      - name: Check links
        id: lychee
        run: ./lychee --config next/.lychee.toml next/docs v15.0/docs
        continue-on-error: true

      - name: Postprocess
        run: sed -E "s+(### (Errors|Redirects) in )(.*)+\1[\3](https://codeberg.org/forgejo/docs/src/branch/\3)+" -i ./report.md

      - name: Update issue
        uses: https://data.forgejo.org/peter-evans/create-issue-from-file@v6.0.0
        with:
          title: Dead links report
          issue-number: 583
          content-filepath: ./report.md
File: .forgejo\workflows\pr.yml

name: pr

on:
  pull_request_target:

jobs:
  preview:
    runs-on: docker
    container:
      image: data.forgejo.org/oci/ci:1
    steps:
      - uses: https://data.forgejo.org/actions/checkout@v6
        with:
          ref: ${{ github.event.pull_request.head.sha }}
      - name: lint
        env:
          GITHUB_TOKEN: override
          FORGEJO_TOKEN: override
        run: |
          npm install -g corepack@latest
          corepack enable
          pnpm install --frozen-lockfile
          pnpm run lint:remark
          pnpm run format:prettier
          git diff --exit-code
      - name: run typos
        uses: https://data.forgejo.org/crate-ci/typos@v1.46.2
        with:
          write_changes: true
      - name: check typos result
        env:
          GITHUB_TOKEN: override
          FORGEJO_TOKEN: override
        run: 'git diff --exit-code --word-diff || ( echo "Hint: Fix misspelled words or add false positives in .typos.toml" && false )'
      - name: scripts/cli-docs.sh
        env:
          GITHUB_TOKEN: override
          FORGEJO_TOKEN: override
        run: |
          scripts/cli-docs.sh run ${{ env.GITHUB_BASE_REF }} > docs/admin/command-line.md
          git diff --exit-code
      - name: release-schedule
        env:
          GITHUB_TOKEN: override
          FORGEJO_TOKEN: override
        run: |
          pnpm run update-schedule
          git diff --exit-code || (echo "Error: Run 'pnpm run update-schedule' to generate the markdown release schedule and commit it" && false)
      - name: get forgejo.org and move the docs
        env:
          GITHUB_TOKEN: override
          FORGEJO_TOKEN: override
        run: |
          git clone --recursive --depth 1 https://codeberg.org/forgejo/website/ /tmp/website
          apt-get update -qq && apt-get install -qq -y rsync
          rsync -av --delete ./ /tmp/website/forgejo-docs/${{ env.GITHUB_BASE_REF }}/
      - name: install
        env:
          GITHUB_TOKEN: override
          FORGEJO_TOKEN: override
        run: |
          cd /tmp/website
          corepack enable
          pnpm install --frozen-lockfile
      - name: build
        env:
          GITHUB_TOKEN: override
          FORGEJO_TOKEN: override
        run: |
          cd /tmp/website
          colon=':'
          branch=docs_pull_${{ github.event.pull_request.number }}
          sed -i.orig -e "s|origin$colon '.*|origin$colon 'https$colon//forgejo.codeberg.page',|" -e "s|basePathname$colon '/'|basePathname$colon '/@$branch//'|" src/config.ts
          cat src/config.ts
          corepack enable
          pnpm run build
          mv dist /tmp
      - name: preview
        if: ${{ secrets.WEBSITETOKEN != '' }}
        uses: https://data.forgejo.org/forgejo/action-website-preview@v1.0.0
        with:
          directory: /tmp/dist
          name: 'docs_pull_${{ github.event.pull_request.number }}'
          pages-token: ${{ secrets.WEBSITETOKEN }}
          repository: forgejo/docs
          repository-host: codeberg.org
          repository-token: ${{ secrets.WEBSITETOKEN }}
          pr-number: ${{ github.event.pull_request.number }}
File: .forgejo\workflows\push.yml

name: push

on:
  push:
    branches:
      - 'next'
      - 'v*'

jobs:
  publish:
    runs-on: docker
    steps:
      - name: update the website submodules
        if: ${{ secrets.WEBSITETOKEN != '' }}
        run: |
          git clone --recursive https://forgejo-website:${{ secrets.WEBSITETOKEN }}@codeberg.org/forgejo/website
          cd website
          git submodule update --remote
          git config user.email "ci@forgejo.org" ; git config user.name "forgejo-website"
          git add .
          if git diff-index --quiet HEAD ; then
            echo Nothing changed, not pushing
          else
            git commit -m 'publish' -a
            git push
          fi
File: docs\admin\index.md

---
title: 'Forgejo Administrator Guide'
---

These documents are targeted to people who run Forgejo on their machines.

- Installation
  - [Introduction](./installation/)
  - [With Docker](./installation/docker/)
  - [From binary](./installation/binary/)
  - [Database Preparation](./installation/database-preparation/)
- Important setup steps
  - [Email sending](./setup/email/)
  - [Reverse Proxy](./setup/reverse-proxy/)
  - [Storage](./setup/storage/)
  - [Recommended Settings and Tips](./setup/recommendations/)
- Advanced configuration
  - [Adopt existing git directories](./advanced/adopt/)
  - [Interface customization](./advanced/customization/)
  - [Moderation tools](./advanced/moderation/)
  - [Soft-Quota](./advanced/quota/)
  - [Incoming Email](./advanced/incoming-email/)
  - [Search Engines and robots.txt](./advanced/search-engines/)
  - [OAuth2 provider](./advanced/oauth2-provider/)
  - [Instance Commit Signing](./advanced/signing/)
- Troubleshooting and debugging
  - [Seek Assistance](./troubleshooting/seek-assistance/)
  - [Logging Configuration](./troubleshooting/logging/)
  - [Profiling](./troubleshooting/profiling/)
- Forgejo Actions
  - [Overview](./actions/)
  - [Forgejo Runner installation](./actions/runner-installation/)
  - [Securing Forgejo Actions Deployments](./actions/security/)
  - [Docker Access](./actions/docker-access/)
- Upgrade and migration
  - [Upgrade guide](./upgrade/)
  - [Migrating from Gitea](./upgrade/from-gitea/)
- Resources and reference
  - [Configuration Cheat Sheet](./config-cheat-sheet/)
  - [CLI reference](./command-line/)
  - [Release schedule](./release-schedule/)
File: docs\admin\release-schedule.md

---
title: 'Release schedule'
license: 'CC-BY-SA-4.0'
---

Forgejo stable releases are published on a fixed schedule, every quarter. The most up-to-date version is available [as a JSON file](https://codeberg.org/forgejo/docs/raw/branch/next/release-schedule.json).

<!-- lines below are replaced -->

| **Version** | **Cut branch**    | **Release date** | **End Of Life**  |
| ----------- | ----------------- | ---------------- | ---------------- |
| 7.0 (LTS)   | 1 April 2024      | 23 April 2024    | **17 July 2025** |
| 8.0         | 1 July 2024       | 30 July 2024     | 16 October 2024  |
| 9.0         | 25 September 2024 | 16 October 2024  | 16 January 2025  |
| 10.0        | 25 December 2024  | 16 January 2025  | 16 April 2025    |
| 11.0 (LTS)  | 26 March 2025     | 16 April 2025    | **16 July 2026** |
| 12.0        | 25 June 2025      | 17 July 2025     | 16 October 2025  |
| 13.0        | 25 September 2025 | 16 October 2025  | 29 January 2026  |
| 14.0        | 18 December 2025  | 15 January 2026  | 30 April 2026    |
| 15.0 (LTS)  | 26 March 2026     | 16 April 2026    | **15 July 2027** |
| 16.0        | 25 June 2026      | 16 July 2026     | 29 October 2026  |
| 17.0        | 24 September 2026 | 15 October 2026  | 28 January 2027  |
| 18.0        | 17 December 2026  | 14 January 2027  | 29 April 2027    |
| 19.0 (LTS)  | 25 March 2027     | 15 April 2027    | **13 July 2028** |
| 20.0        | 24 June 2027      | 15 July 2027     | 28 October 2027  |
File: docs\contributor\browser-support.md

---
title: Web browser support
license: 'CC-BY-SA-4.0'
---

## Feature recency

New and existing Forgejo web UI features that affect usability of Forgejo should rely on browser features and APIs available in **both**:

- Latest version of Firefox ESR
- Previous major version of Chromium

For example, [forgejo/forgejo#8859](https://codeberg.org/forgejo/forgejo/pulls/8859#issuecomment-6808852) couldn't rely on the new [`closedBy`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy) property of `HTMLDialogElement` because it was re-implementing an existing significant feature (modal dialogs) and `closedBy` was not yet supported by Firefox ESR. So not implementing a [compatible JS function](https://codeberg.org/forgejo/forgejo/src/commit/aa345c9e0cb8809844112ad929ac1acbd59817d6/web_src/js/modules/modal.ts#L22-L33) would break the ability of users to close the dialog by clicking outside of it on a supported browser, which would have been considered a newly introduced bug in Forgejo v13.0.0.

The latest Firefox ESR version can be calculated differently:

- If pull request is proposed to be backported to stable branch of Forgejo, the latest Firefox ESR as of present day should be considered
- If pull request targets the next major Forgejo release, the latest Firefox ESR as of the day of that Forgejo release should be considered. Refer to [Forgejo release schedule](https://forgejo.org/docs/next/admin/release-schedule/) and [Firefox release calendar](https://whattrainisitnow.com/calendar/) to find the matching ESR version

New features that do not affect usability can rely on browser features up to [Baseline of last year](https://web.dev/baseline) is acceptable.

## Feature oldness and non-standard features

It's up to the contributor to work on additional support beyond the minimally required platforms as long as such compatibility doesn't introduce:

- Significant increase in complexity
- Additional dependencies (e.g. compatibility libraries)

However we do not welcome additional code that only exists to maintain compatibility with browser engines that have been completely officially discontinued, such as:

- MSHTML (Microsoft Internet Explorer)
- EdgeHTML (Microsoft Edge)
- Presto (Opera)
- KHTML

[Vendor prefixes](https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix) should be used strictly when necessarily. When a property is supported without vendor prefixes on the minimally required platforms, vendor-prefixed properties should not be used.
File: docs\contributor\COC.md

---
title: Code of Conduct and moderation team
license: 'CC-BY-SA-4.0'
---

Forgejo is [committed](https://codeberg.org/forgejo/code-of-conduct#our-pledge) to creating an inclusive community where everyone feels welcome and safe.
The well-being of our members is important to us and if anyone feels unsafe or uncomfortable for any reason, we encourage you to reach out to the [Moderation Team](https://codeberg.org/forgejo/governance/src/branch/main/TEAMS.md#moderation).

You can contact the Moderation Team via email at `moderation@forgejo.org` or via matrix at `@forgejo-moderation:matrix.org`.
Your conversations will remain confidential and are only disclosed in accordance with our [moderation process](https://codeberg.org/forgejo/governance/src/branch/main/MODERATION-PROCESS.md).

The Moderation Team is there to listen to your concerns and will do its best to find the best solutions, ensuring that everyone feels safe and respected in our community.
Actions taken are [documented](https://codeberg.org/forgejo/governance/issues?labels=106732&state=all) in an anonymized way within the governance repository, ensuring transparency and accountability.
The team is committed to addressing any behavior that goes against the [Code of Conduct](https://codeberg.org/forgejo/code-of-conduct) or the law.

Together, we can foster a positive and inclusive environment for all Forgejo community members.
File: docs\contributor\code-forgejo-org.md

---
title: code.forgejo.org
license: 'CC-BY-SA-4.0'
---

https://code.forgejo.org is a Forgejo instance running the latest
stable version, starting with the release candidates. It is dedicated
to hosting repositories dedicated to Forgejo development, among which:

- setup-forgejo a Forgejo Action to spawn a Forgejo instance and a runner for testing purposes https://code.forgejo.org/actions/setup-forgejo
- Forgejo Runner https://code.forgejo.org/forgejo/runner