Hi there! Tired of big platforms playing monopoly? Providing Git hosting for your project, friends, company or community? Forgejo has you covered with its intuitive interface, light and easy hosting and a lot of builtin functionality. https://forgejo.org
Find a file
Gusted b55c72828e feat(sec): Add SSH signing support for instances (#6897)
- Add support to set `gpg.format` in the Git config, via the new `[repository.signing].FORMAT` option. This is to tell Git that the instance would like to use SSH instead of OpenPGP to sign its commits. This is guarded behind a Git version check for v2.34.0 and a check that a `ssh-keygen` binary is present.
- Add support to recognize the public SSH key that is given to `[repository.signing].SIGNING_KEY` as the signing key by the instance.
- Thus this allows the instance to use SSH commit signing for commits that the instance creates (e.g. initial and squash commits) instead of using PGP.
- Technically (although I have no clue how as this is not documented) you can have a different PGP signing key for different repositories; this is not implemented for SSH signing.
- Add unit and integration testing.
  - `TestInstanceSigning` was reworked from `TestGPGGit`, now also includes testing for SHA256 repositories. Is the main integration test that actually signs commits and checks that they are marked as verified by Forgejo.
  - `TestParseCommitWithSSHSignature` is a unit test that makes sure that if a SSH instnace signing key is set, that it is used to possibly verify instance SSH signed commits.
  - `TestSyncConfigGPGFormat` is a unit test that makes sure the correct git config is set according to the signing format setting. Also checks that the guarded git version check and ssh-keygen binary presence check is done correctly.
  - `TestSSHInstanceKey` is a unit test that makes sure the parsing of a SSH signing key is done correctly.
  - `TestAPISSHSigningKey` is a integration test that makes sure the newly added API route `/api/v1/signing-key.ssh` responds correctly.

Documentation PR: forgejo/docs#1122

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6897
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2025-04-11 13:25:35 +00:00
.devcontainer Update mcr.microsoft.com/devcontainers/go Docker tag to v1.24 (forgejo) (#7281) 2025-03-21 09:56:19 +00:00
.forgejo Update renovate to v39.233.5 (forgejo) (#7484) 2025-04-07 06:28:32 +00:00
assets Update module github.com/blevesearch/bleve/v2 to v2.5.0 (forgejo) (#7468) 2025-04-06 08:41:38 +00:00
build feat(build): uniform ini parsing (#7429) 2025-04-03 08:27:02 +00:00
cmd fix acme renewal (#7409) 2025-04-06 15:26:47 +00:00
contrib chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
custom/conf feat(sec): Add SSH signing support for instances (#6897) 2025-04-11 13:25:35 +00:00
docker Update code.forgejo.org/oci/alpine Docker tag to v3.21 (followup) 2024-12-30 15:22:42 +00:00
models feat(sec): Add SSH signing support for instances (#6897) 2025-04-11 13:25:35 +00:00
modules feat(sec): Add SSH signing support for instances (#6897) 2025-04-11 13:25:35 +00:00
options chore(i18n): update contributing documentation with JSON format (#7499) 2025-04-10 10:30:22 +00:00
public chore(security): update security.txt with new expiration date (#6655) 2025-01-23 16:20:04 +00:00
release-notes fix: discard v25 secrets migrations errors instead of failing (#7251) 2025-03-17 16:25:37 +00:00
release-notes-published chore(release-notes): Forgejo v10.0.3 (#7311) 2025-03-23 08:50:48 +00:00
releases/images [DOCS] RELEASE-NOTES.md 2024-02-05 14:44:32 +01:00
routers feat(sec): Add SSH signing support for instances (#6897) 2025-04-11 13:25:35 +00:00
services feat(sec): Add SSH signing support for instances (#6897) 2025-04-11 13:25:35 +00:00
templates feat(sec): Add SSH signing support for instances (#6897) 2025-04-11 13:25:35 +00:00
tests feat(sec): Add SSH signing support for instances (#6897) 2025-04-11 13:25:35 +00:00
tools Initial support for localization and pluralization with go-i18n-JSON-v2 format 2025-01-17 11:21:28 +01:00
web_src fix(ui): ensure consistent switch position in markdown editor (#7492) 2025-04-09 17:37:46 +00:00
.air.toml Reduce air verbosity (#31417) 2024-06-23 12:30:09 +02:00
.deadcode-out feat(build): teach lint-locale-usage about trPluralString (#7425) 2025-04-02 14:57:45 +00:00
.dockerignore chore: update ignores 2025-01-03 14:41:34 +01:00
.editorconfig Cover go.mod and go.sum in .editorconfig (#33960) 2025-04-01 02:28:02 +02:00
.envrc.example Make direnv optional to let developers use their own direnv configuration 2024-11-06 20:34:49 +01:00
.gitattributes Add interface{} to any replacement to make fmt, exclude *.pb.go (#30461) 2024-04-15 20:01:36 +02:00
.gitignore chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
.gitmodules cleanup(tests): remove manual testing submodule 2024-04-21 10:13:51 +02:00
.gitpod.yml Remove sqlite-viewer and using database client (#31223) 2024-06-09 11:13:39 +02:00
.golangci.yml Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
.ignore Add /options/license and /options/gitignore to .ignore (#30219) 2024-04-07 15:40:31 +02:00
.mailmap Add .mailmap with aliases for Unknwon (github.com/Unknwon) 2024-08-14 08:26:16 -04:00
.markdownlint.yaml Update JS dependencies (#28537) 2023-12-30 05:29:03 +00:00
.npmrc Upgrade to npm lockfile v3 and explicitely set it (#23561) 2023-03-18 19:38:10 +01:00
.release-notes-assistant.yaml chore(release-notes): no need to specify they are draft 2024-10-22 06:54:27 +02:00
.spectral.yaml Add spectral linter for Swagger (#20321) 2022-07-11 18:07:16 -05:00
.yamllint.yaml fully replace drone with actions (#27556) 2023-10-11 06:39:32 +00:00
BSDmakefile Fix build errors on BSD (in BSDMakefile) (#27594) 2023-10-13 15:38:27 +00:00
build.go chore: remove unused dependency from build.go 2024-12-23 16:23:28 +01:00
CODEOWNERS [skip ci] chore: adjust i18n entries in CODEOWNERS (#6667) 2025-01-26 07:37:50 +00:00
CONTRIBUTING.md docs: replace Developer Guide link with the new Contributor Guide one. 2024-08-26 13:22:39 +03:00
DCO Remove address from DCO (#22595) 2023-01-24 18:52:38 +00:00
Dockerfile chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
Dockerfile.rootless chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
eslint.config.mjs chore: enable no-jquery/no-map-collection 2025-04-01 04:44:44 +02:00
flake.lock Update nixpkgs version in flake 2024-12-08 13:03:16 +01:00
flake.nix install go and gopls in nix flake devShell 2024-12-08 13:04:22 +01:00
go.mod Update module golang.org/x/net to v0.39.0 (forgejo) (#7504) 2025-04-10 01:41:48 +00:00
go.sum Update module golang.org/x/net to v0.39.0 (forgejo) (#7504) 2025-04-10 01:41:48 +00:00
LICENSE Forgejo v9.0 is GPLv3+ 2024-08-22 09:09:29 +02:00
main.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
Makefile Update module golang.org/x/tools/cmd/deadcode to v0.32.0 (forgejo) (#7505) 2025-04-10 02:36:29 +00:00
package-lock.json Update dependency katex to v0.16.22 (forgejo) (#7503) 2025-04-10 05:58:44 +00:00
package.json Update dependency katex to v0.16.22 (forgejo) (#7503) 2025-04-10 05:58:44 +00:00
playwright.config.ts tests(e2e): Prepare for visual regression testing 2024-12-10 18:12:36 +01:00
poetry.lock Lock file maintenance (forgejo) (#7392) 2025-03-30 14:49:48 +00:00
poetry.toml Clean up pyproject.toml and package.json, fix poetry options (#25327) 2023-06-18 18:13:08 +00:00
pyproject.toml Update dependency yamllint to v1.37.0 (forgejo) (#7383) 2025-03-29 23:02:53 +00:00
README.md chore(cleanup): remove comment from README 2025-03-26 09:58:55 +00:00
release-notes-assistant.sh chore(release-notes-assistant): security fix / features come first 2024-11-17 20:03:11 +01:00
RELEASE-NOTES.md chore: fix typos, decap a few i18n strings (#6666) 2025-01-24 05:41:59 +00:00
renovate.json chore(renovate): update settings for latest version (#7329) 2025-03-25 08:39:26 +00:00
stylelint.config.js Merge pull request 'Port "Enable declaration-block-no-redundant-longhand-properties (#30950)' (#3769) from beowulf/gitea-port-pull-30950 into forgejo 2024-05-14 22:23:54 +00:00
tailwind.config.js fix: Do not scan all Go files for tailwind classes 2024-08-24 15:45:50 +02:00
tsconfig.json Add typescript 2024-10-29 18:15:09 +01:00
vitest.config.ts Add typescript 2024-10-29 18:15:09 +01:00
webpack.config.js chore: always enable webpack progress (#7463) 2025-04-05 12:49:14 +00:00

Welcome to Forgejo

Hi there! Tired of big platforms playing monopoly? Providing Git hosting for your project, friends, company or community? Forgejo (/for'd͡ʒe.jo/ inspired by forĝejo the Esperanto word for forge) has you covered with its intuitive interface, light and easy hosting and a lot of builtin functionality.

Forgejo was created in 2022 because we think that the project should be owned by an independent community. If you second that, then Forgejo is for you! Our promise: Independent Free/Libre Software forever!

What does Forgejo offer?

If you like any of the following, Forgejo is literally meant for you:

  • Lightweight: Forgejo can easily be hosted on nearly every machine. Running on a Raspberry? Small cloud instance? No problem!
  • Project management: Besides Git hosting, Forgejo offers issues, pull requests, wikis, kanban boards and much more to coordinate with your team.
  • Publishing: Have something to share? Use releases to host your software for download, or use the package registry to publish it for docker, npm and many other package managers.
  • Customizable: Want to change your look? Change some settings? There are many config switches to make Forgejo work exactly like you want.
  • Powerful: Organizations & team permissions, CI integration, Code Search, LDAP, OAuth and much more. If you have advanced needs, Forgejo has you covered.
  • Privacy: From update checker to default settings: Forgejo is built to be privacy first for you and your crew.
  • Federation: (WIP) We are actively working to connect software forges with each other through ActivityPub, and create a collaborative network of personal instances.

Learn more

Dive into the documentation, subscribe to releases and blog post on our website, find us on the Fediverse or hop into our Matrix room if you have any questions or want to get involved.

License

Forgejo is distributed under the terms of the GPL version 3.0 or any later version.

The agreement for this license was documented in June 2023 and implemented during the development of Forgejo v9.0. All Forgejo versions before v9.0 are distributed under the MIT license.

Get involved

If you are interested in making Forgejo better, either by reporting a bug or by changing the governance, please take a look at the contribution guide.