Compare commits

..

243 commits
search ... main

Author SHA1 Message Date
pat-s 2d9da16b4b
trigger pipeline on pull_request_closed event 2024-06-15 12:35:31 +02:00
pat-s 958ae25b8b
prettier: ignore pnpm lock 2024-06-15 10:39:12 +02:00
Mark Pitblado 193b4cf639 Define acronyms on first use, add reference to codeberg-ci/examples, and remove reference to knut org (#435)
- All acronyms should be defined in first use. This adds this for Continuous Integration (CI) and Role Based Access Control (RBAC).
- Changes language around acceptance to soften tone, and shift from guaranteed to conditional acceptance.
- Specifies that login to woodpecker-ci is via codeberg account, and that repositories are automatically available to link.
- Adds reference to codeberg-ci/examples repository.
- Removes reference to knut organization.

Co-authored-by: Patrick Schratz <pat-s@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/435
Reviewed-by: Patrick Schratz <pat-s@noreply.codeberg.org>
Co-authored-by: Mark Pitblado <mark@pitblado.me>
Co-committed-by: Mark Pitblado <mark@pitblado.me>
2024-06-12 20:02:39 +00:00
pat-s 74e8925bec add spellchecker (#439)
fix #148

Adds a spell checker via `cspell` and fixes some spelling issues in the docs.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/439
Co-authored-by: pat-s <patrick.schratz@gmail.com>
Co-committed-by: pat-s <patrick.schratz@gmail.com>
2024-06-12 10:20:37 +00:00
pat-s 72c195924b
use pnpm in deploy preview 2024-06-12 11:43:56 +02:00
pat-s 52dd22ef8e
remove package-lock.json after switch to pnpm 2024-06-12 11:20:04 +02:00
niko4u 1b84cd41a4 Minor rewording (#428)
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/428
Reviewed-by: Patrick Schratz <pat-s@noreply.codeberg.org>
Co-authored-by: niko4u <niko4u@noreply.codeberg.org>
Co-committed-by: niko4u <niko4u@noreply.codeberg.org>
2024-06-12 08:57:35 +00:00
Patrick Schratz 65e44a8cfa Add deploy preview via surge (#434)
fix #345

- [x] Use a dummy user instead of my personal one (to avoid getting notifications from surge)

- [x] README doc

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/434
2024-06-12 08:52:08 +00:00
pat-s d7197f935a
lychee: ignore openclipart.org due to timeouts 2024-06-12 10:50:26 +02:00
pat-s c12e26e446 Switch to pnpm (#432)
As `pnpm` is xx times faster than `npm`.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/432
Co-authored-by: pat-s <patrick.schratz@gmail.com>
Co-committed-by: pat-s <patrick.schratz@gmail.com>
2024-06-12 08:44:42 +00:00
pat-s c7a2a29c7f
increase lychee timeout from 20 to 40 2024-06-12 10:35:42 +02:00
pat-s 3cab99a27f
fix liberapay lint issues and broken link 2024-06-12 10:25:04 +02:00
fnetX c6c7b418e7 Fix typo
Build was failing. This was overlooked, because CI was only added after the PR was last updated.
2024-06-11 11:51:51 +00:00
Igor 0d872ea674 Integrating LiberaPay with Codeberg (#406)
This should resolve issue #327 opened by @n0toose

I have written a little bit of example, how do I see it

Co-authored-by: I <igor@its.rel.pl>
Co-authored-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/406
Co-authored-by: Igor <309631@noreply.codeberg.org>
Co-committed-by: Igor <309631@noreply.codeberg.org>
2024-06-11 11:47:25 +00:00
crapStone da1b77aa6a Add woodpecker ci & many linters (and their required fixes) (#377)
closes #238

Co-authored-by: pat-s <patrick.schratz@gmail.com>
Co-authored-by: Patrick Schratz <pat-s@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/377
Co-authored-by: crapStone <crapstone01@gmail.com>
Co-committed-by: crapStone <crapstone01@gmail.com>
2024-06-11 07:51:22 +00:00
Dependency bot 8f5231283e chore: Configure Renovate (#433)
Welcome to [Renovate](https://github.com/renovatebot/renovate)! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.

---
### Detected Package Files

 * `Dockerfile` (dockerfile)
 * `package.json` (npm)

### Configuration Summary

Based on the default config's presets, Renovate will:

  - Start dependency updates only once this onboarding PR is merged
  - Enable Renovate Dependency Dashboard creation.
  - Use semantic commit type `fix` for dependencies and `chore` for all others if semantic commits are in use.
  - Ignore `node_modules`, `bower_components`, `vendor` and various test/tests directories.
  - Group known monorepo packages together.
  - Use curated list of recommended non-monorepo package groupings.
  - Apply crowd-sourced package replacement rules.
  - Apply crowd-sourced workarounds for known problems with packages.
  - Run lock file maintenance (updates) early Monday mornings.
  - Schedule automerge daily.
  - Schedule for weekends.
  - Enable Renovate Dependency Dashboard creation.
  - Use semantic commit type `fix` for dependencies and `chore` for all others if semantic commits are in use.
  - Ignore `node_modules`, `bower_components`, `vendor` and various test/tests directories.
  - Group known monorepo packages together.
  - Use curated list of recommended non-monorepo package groupings.
  - Apply crowd-sourced package replacement rules.
  - Apply crowd-sourced workarounds for known problems with packages.
  - Run lock file maintenance (updates) early Monday mornings.
  - Schedule automerge daily.
  - Schedule for weekends.
  - Run Renovate on following schedule: every weekend

🔡 Do you want to change how Renovate upgrades your dependencies? Add your custom config to `renovate.json` in this branch. Renovate will update the Pull Request description the next time it runs.

---

### What to Expect

With your current configuration, Renovate will create 5 Pull Requests:

<details>
<summary>chore(deps): update dependency pagefind to v1.1.0</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/pagefind-1.x-lockfile`
  - Merge into: `main`
  - Upgrade [pagefind](https://github.com/CloudCannon/pagefind) to `1.1.0`

</details>

<details>
<summary>chore(deps): update font awesome to v6.5.2</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/font-awesome`
  - Merge into: `main`
  - Upgrade [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) to `6.5.2`
  - Upgrade [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) to `6.5.2`

</details>

<details>
<summary>chore(deps): update dependency markdown-it-anchor to v9</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/markdown-it-anchor-9.x`
  - Merge into: `main`
  - Upgrade [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor) to `^9.0.0`

</details>

<details>
<summary>chore(deps): update node.js to v16</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/node-16.x`
  - Merge into: `main`
  - Upgrade [node](https://github.com/nodejs/node) to `16.15.1-stretch-slim`

</details>

<details>
<summary>chore(deps): lock file maintenance</summary>

  - Schedule: ["before 4am on Monday"]
  - Branch name: `renovate/lock-file-maintenance`
  - Merge into: `main`
  - Regenerate lock files to use latest dependency versions

</details>

<br />

🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for `prhourlylimit` for details.

---

 Got questions? Check out Renovate's [Docs](https://docs.renovatebot.com/), particularly the Getting Started section.
If you need any further assistance then you can also [request help here](https://github.com/renovatebot/renovate/discussions).

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).

<!--renovate-config-hash:67259f1d62398ce599523778399b8abd7a312190509ac1958cd9cc122e7196ad-->

Co-authored-by: woodpecker-bot <woodpecker-bot@obermui.de>
Co-authored-by: pat-s <pat-s@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/433
Co-authored-by: Dependency bot <renovate-bot@noreply.codeberg.org>
Co-committed-by: Dependency bot <renovate-bot@noreply.codeberg.org>
2024-06-11 07:47:06 +00:00
Sammy Hori 8bd521c7f6 Codeberg Pages: Add warning for setting up records on some registrars (#431)
Many users setting up Codeberg Pages that use the records have limited experience with DNS.

Therefore, adding this warning to make it clear what they may need to be entering into
their records will likely save them time and effort in troubleshooting why their page may
not be loading correctly.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/431
Co-authored-by: Sammy Hori <sammyhori@noreply.codeberg.org>
Co-committed-by: Sammy Hori <sammyhori@noreply.codeberg.org>
2024-06-09 14:23:36 +00:00
adbagio 79d2ac2682 Getting Started: Add detail to use of git push --mirror (#422)
Based on discussion in the Forgejo repository (#2834)

See: https://codeberg.org/forgejo/forgejo/pulls/2834

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/422
Co-authored-by: adbagio <h759bkyo4@mozmail.com>
Co-committed-by: adbagio <h759bkyo4@mozmail.com>
2024-06-07 11:05:44 +00:00
adagio ca0475ad93 Updates styleguide wording and terminology (#429)
Based on https://codeberg.org/forgejo/forgejo/issues/3844

Equivalent PR in the Forgejo documentation: https://codeberg.org/forgejo/docs/pulls/681

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/429
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: adagio <h759bkyo4@mozmail.com>
Co-committed-by: adagio <h759bkyo4@mozmail.com>
2024-06-05 08:09:38 +00:00
Abdur-Rahman Mansoor 8e0118c9c5
refactor: use american spelling convention and fix grammar 2024-05-24 20:51:47 -04:00
Skye 51da37c7d4 Pedantic capitalization changes to brand names (#425)
Some instances of Github and Gitlab have been changed to GitHub and GitLab
respectively.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/425
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: Skye <skyeforeverblue@outlook.com>
Co-committed-by: Skye <skyeforeverblue@outlook.com>
2024-05-19 21:24:00 +00:00
Sergey Volkov d475852dc2 Add SSH commit signing content (#420)
Add the SSH commit signing section to the SSH key management page. Git has had this feature for a while now and SSH keys are easier to manage since they can be used for both authentication and signing, so I think it makes sense to document this.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/420
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: Sergey Volkov <ser121512@yandex.ru>
Co-committed-by: Sergey Volkov <ser121512@yandex.ru>
2024-05-16 13:55:48 +00:00
0ko 60d471874b Improve contact/support information 2024-04-10 22:43:53 +05:00
Andrew Kvalheim 0b3c45ce4b Detect slash key by value, not physical position (#415)
The solution is trivial; read the [property](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#instance_properties) for actual meaning instead of physical position.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/415
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Andrew Kvalheim <andrew@kvalhe.im>
Co-committed-by: Andrew Kvalheim <andrew@kvalhe.im>
2024-04-03 12:12:54 +00:00
Igor 91bc7ec69f added notes about obtaining webp (#408)
Resolves #407

Co-authored-by: I <igor@its.rel.pl>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/408
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: Igor <309631@noreply.codeberg.org>
Co-committed-by: Igor <309631@noreply.codeberg.org>
2024-04-03 11:51:57 +00:00
Gusted adf276bea6
pages: Correct statement about CAA record
- Resolves https://codeberg.org/Codeberg/Documentation/issues/413
2024-03-23 22:15:22 +01:00
Panagiotis "Ivory" Vasilopoulos b9a17086c9 Style Guide: Markdown Code Blocks (#403)
Fixes #401.

Refs: https://codeberg.org/Codeberg/Documentation/issues/401
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/403
Reviewed-by: Leo Heitmann Ruiz <eo@noreply.codeberg.org>
2024-03-12 18:38:42 +00:00
Earl Warren 465aaaa107 CI (Actions): Clarify compatibility & link to the latest docs (#405)
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/405
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2024-03-12 17:58:13 +00:00
Andre601 7a9017e760 Fix broken link for Git LFS Migrate Man page (#404)
The URL for the man page of Git LFS migrate was broken. This is fixed in this PR.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/404
Co-authored-by: Andre601 <github@andre601.ch>
Co-committed-by: Andre601 <github@andre601.ch>
2024-03-11 12:19:54 +00:00
Panagiotis "Ivory" Vasilopoulos 2ce0c26e3d Pages: Repositories currently have to be public (#395)
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/395
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2024-03-10 16:13:45 +00:00
And4po d852c5ac0d Getting Started: Fix small typo (#402)
It fixes a small typo on the "First repository" document.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/402
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: And4po <anderromeroaldana@proton.me>
Co-committed-by: And4po <anderromeroaldana@proton.me>
2024-03-06 12:27:05 +00:00
Leo Heitmann Ruiz 364a316007 Remove unnecessary mention of Git Bash (#400)
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/400
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: Leo Heitmann Ruiz <eo@noreply.codeberg.org>
Co-committed-by: Leo Heitmann Ruiz <eo@noreply.codeberg.org>
2024-03-06 10:19:01 +00:00
kouett 85d333f48b Fix typo in sphinx quickstart cmd (#397)
I believe the "pip" in front is extraneous. This is a small change.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/397
Co-authored-by: kouett <lou@ynh.kouett.net.eu.org>
Co-committed-by: kouett <lou@ynh.kouett.net.eu.org>
2024-02-22 12:48:37 +00:00
Otto Richter d5f6f22999 Refresh Contact, Getting Started, Contributing Pages (#394)
Update contact page

Prefer references to Forgejo, more relevant to users

Updates to Getting Started Pages / FAQ
- a lot of content was outdated and generally rewritten or rephrased
- implement procedure for size limits as determined by annual assembly
  2023, see Codeberg-e.V./Discussion#92
- people are sometimes confused wheter you need to be a paying member in
  Codeberg e.V. in order to use the platform

Update improving Codeberg guides
- reduce redundancy in code contribution guide and reference the
  Contributing Issue Tracker instead
- separate (and ideally more appealing) donation page (deserves even
  more love IMHO)
- shorten and strip outdated information

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/394
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: Otto Richter <git@otto.splvs.net>
Co-committed-by: Otto Richter <git@otto.splvs.net>
2024-02-17 22:04:10 +00:00
thatonecoder 2b85a21e70 Licensing: Licence -> License (#392)
This should make it comply a bit more with the style guide.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/392
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: thatonecoder <thatonecoder@noreply.codeberg.org>
Co-committed-by: thatonecoder <thatonecoder@noreply.codeberg.org>
2024-02-12 13:14:41 +00:00
Mark Pitblado 8a32b7cec9 Pages: General typo and grammatical fixes (#391)
Main changes include switching language from ISP to domain registrar, and standardization around the phrase "Codeberg Pages".

Signed-off-by: Mark Pitblado <mark@pitblado.me>

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/391
Reviewed-by: crapStone <codeberg@crapstone.dev>
Co-authored-by: Mark Pitblado <mark-pitblado@noreply.codeberg.org>
Co-committed-by: Mark Pitblado <mark-pitblado@noreply.codeberg.org>
2024-02-09 08:18:50 +00:00
ToaKraka 6c2ced0ab3 Remove references to a specific version of CommonMark (#390)
The current text refers to CommonMark 0.30, but the latest version of CommonMark is 0.31.2, and the latest version of GoldMark is compatible with that version of CommonMark.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/390
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: ToaKraka <toakraka@noreply.codeberg.org>
Co-committed-by: ToaKraka <toakraka@noreply.codeberg.org>
2024-02-06 22:15:06 +00:00
kita d13287b3a8
fix configuring git link 2024-02-03 13:10:00 +08:00
Panagiotis "Ivory" Vasilopoulos 1de25174bc Codeberg CI: Fix small URL typo
Caused by myself on 4a11765382.
2024-02-01 03:44:41 +01:00
quecomet 4a11765382 Codeberg CI: Improve usage and request instructions (#381)
Closes https://codeberg.org/Codeberg-CI/feedback/issues/153

Co-authored-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: pat-s <patrick.schratz@gmail.com>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/381
Co-authored-by: quecomet <quecomet@proton.me>
Co-committed-by: quecomet <quecomet@proton.me>
2024-01-31 21:39:10 +00:00
jmarsal bf5fe32d6a
refactor: move the command needed to a 'note' ('info') admonition box 2024-01-24 19:29:36 +01:00
jmarsal b7f25f1431
feat: add shell command to add your GPG key to .bashrc, otherwise the signing process will not work 2024-01-23 19:32:22 +01:00
Ralf Stubner 79d5804969 Remove warning about _redirect file on Codeberg Pages (#382)
According to https://codeberg.org/Codeberg/pages-server/issues/234 the `_redirect` file feature has been activated on Codeberg Pages.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/382
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Ralf Stubner <rstub@noreply.codeberg.org>
Co-committed-by: Ralf Stubner <rstub@noreply.codeberg.org>
2024-01-01 22:36:39 +00:00
A Frederick Christensen 6c05b15edb Minor correction of a missed word (#380)
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/380
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Co-authored-by: A Frederick Christensen <fauxmight@noreply.codeberg.org>
Co-committed-by: A Frederick Christensen <fauxmight@noreply.codeberg.org>
2023-12-26 13:02:29 +00:00
Mohamed Wageh ca4290e697 Automatically generate Table of Contents for each page (#376)
Closes #24.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/376
Co-authored-by: Mohamed Wageh <oatbiscuits@proton.me>
Co-committed-by: Mohamed Wageh <oatbiscuits@proton.me>
2023-12-11 17:32:09 +00:00
oatbiscuits f0408b2c6a Add documentation for Forgejo CI Actions runner (#369)
This should solve #318.

Helped-by: Linus Groh <mail@linusgroh.de>
Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Reviewed-by: Linus Groh <mail@linusgroh.de>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/369
Co-authored-by: oatbiscuits <oatbiscuits@noreply.codeberg.org>
Co-committed-by: oatbiscuits <oatbiscuits@noreply.codeberg.org>
2023-12-07 16:58:07 +00:00
Gusted 1925a19f11 Better placeholder contrast for search input (#375)
Increase the contrast of the placeholder text in the search input, so it's actually readable.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/375
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2023-12-01 22:26:53 +00:00
Panagiotis "Ivory" Vasilopoulos f499322a61 Pages: More background information (#374)
- Link to repository
- More organized "See also" section
- Link to FEATURES.md of Pages repository

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/374
2023-11-30 22:04:10 +00:00
oatbiscuits 55a504e33a Add search functionality (#370)
This should solve #23.

This is a fully static search implementation powered by [Pagefind](https://pagefind.app/).

In terms of UI, I found and implemented a section in the sidebar for searching the documentation. It was hidden presumably waiting for implementation. It mentioned using the slash (/) key for searching, so I implemented the hotkey as well.

I made the indexing command required by Pagefind run after Eleventy finishes building using the `.after` hook.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/370
Co-authored-by: oatbiscuits <oatbiscuits@noreply.codeberg.org>
Co-committed-by: oatbiscuits <oatbiscuits@noreply.codeberg.org>
2023-11-30 21:33:22 +00:00
Gusted 57b888bd6c Fix incorrect link (#373)
- Use non-md link.
- Resolves https://codeberg.org/Codeberg/Documentation/issues/372

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/373
Co-authored-by: Gusted <gusted@noreply.codeberg.org>
Co-committed-by: Gusted <gusted@noreply.codeberg.org>
2023-11-29 22:43:48 +00:00
Alex 966404aa5c Using Security keys on Codeberg (#367)
This PR adds docs on WebAuthn usage on Codeberg. It attempts to cover:
- using WebAuthn as a 2FA option on web logins
- using FIDO2 over SSH using the OpenSSH client

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/367
Co-authored-by: Alex <alex@blueselene.com>
Co-committed-by: Alex <alex@blueselene.com>
2023-11-28 20:57:37 +00:00
Panagiotis "Ivory" Vasilopoulos 8386857b1c Use admonition boxes more consistently
- Formatting fixes, relevant text adjustments
- Some more complicated cases (e.g. attribution), as well as outdated
  information that should be removed in a later commit were
  deliberately left unchanged.
- Some minor mistakes (speling, trailing whitespaces, punctuation)
  in the admonition boxes were also fixed.
2023-11-27 07:16:04 +01:00
Panagiotis "Ivory" Vasilopoulos 9a19c900e3 Style Guide: Add image-specific rules 2023-11-27 05:37:38 +01:00
Otto a6a0a1c9ba Update weblinks from CI page 2023-11-26 18:33:40 +00:00
Otto e4ea4343ab Update contact information 2023-11-13 15:44:08 +00:00
Andre601 df95d70243 Add entry about Cloudflare in content/codeberg-pages/troubleshooting.md (#351)
Added an entry to the troubleshooting page for Codeberg pages that addresses the situation with Cloudflare, where you should turn DNS entries pointing to Codeberg pages to **DNS only** for it to work reliably.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/351
Co-authored-by: Andre601 <andre601@noreply.codeberg.org>
Co-committed-by: Andre601 <andre601@noreply.codeberg.org>
2023-11-10 11:24:40 +00:00
narF e9748990e2 For local commits, mention "Configuring Git" in Email Settings guide (#355)
Co-authored-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/355
Co-authored-by: narF <narf@noreply.codeberg.org>
Co-committed-by: narF <narf@noreply.codeberg.org>
2023-10-14 14:17:16 +00:00
crystal 7bb8fa5ca5 Add note to not expect responses to abuse reports (#357)
Also clarifies language about custom domains and codeberg.page

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/357
Co-authored-by: crystal <crystal@noreply.codeberg.org>
Co-committed-by: crystal <crystal@noreply.codeberg.org>
2023-09-22 15:44:12 +00:00
Andre601 b234b71bb7 Create new admonition boxes (#337)
Related issue: https://codeberg.org/Codeberg/Documentation/issues/330

This is my attempt at adding admonition-like boxes to the documentation. The goal is to make important stuff stand out more (especially warnings and alike).

The system uses a custom `<admonition>` box which allows classes for further customization. I.e. `<admonition class="warning">` to display a warning box.

I first wanted to make individual boxes (`<warning>`, `<note>`, ...) but decided against it, as it would've created a lot of duplicate CSS.

The CSS is designed in such a way that the first paragraph of the box is made bold (font-weight 700) while any subsequent ones are not.

The following forms of admonitions are included:
- Info (default)
- Note
- Tip
- Warning

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/337
Co-authored-by: Andre601 <github@andre601.ch>
Co-committed-by: Andre601 <github@andre601.ch>
2023-09-18 15:17:17 +00:00
Panagiotis "Ivory" Vasilopoulos 536884cd59 Simpify and update instructions for reports
The language was simplified, some explanations as to which methods are
preferred for which situations were provided, and I also added an
explanation for the new "tag @moderation to report spam" feature.

I tried to make the content less ambiguous and easier to read.

This change was made because of the following issue in the Community
repository: https://codeberg.org/Codeberg/Community/issues/1293
2023-09-18 10:02:53 +02:00
Panagiotis "Ivory" Vasilopoulos 3261f41b63 Add note about retaliatory abuse in Contact section (#334)
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/334
2023-09-18 07:47:41 +00:00
Panagiotis "Ivory" Vasilopoulos 7c15ec5243 Improve FAQ section (#347)
- Create two sections, "Codeberg's Structures" and "Before I move..."
- Explain that Codeberg is not necessarily *just* a Forgejo instance
  by mentioning / crediting more open-source projects in a
  non-exhaustive manner.
- Improve wording and phrasing of some questions
- Update Forgejo version instructions
- Private repositories: Split into two questions that are separately
  meant for collaborative projects and ordinary users respectively.
- Use words as "most likely" and "probably" in order to *not* make the
  reader immediately worry about potentially breaking the rules,
  especially as the ToS itself mentions that the platform reserves
  the right to take strict action without a warning. If the user
  choose Codeberg to begin with, it is very likely that "our" values
  align.
- Explain what "fair use" is as far as the repository size is concerned
  better.
- Break text into new lines depending on columns and the ideas that
  each part of a sentence gets across.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/347
2023-09-11 20:49:18 +00:00
nezbednik b17bda7c61 Fix minor spelling mistake in CI index page (#352)
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/352
Co-authored-by: nezbednik <nezbednik@atlas.cz>
Co-committed-by: nezbednik <nezbednik@atlas.cz>
2023-09-09 19:29:41 +00:00
Panagiotis "Ivory" Vasilopoulos 1403a81d75 Improve 'Contributing Code' guide (#326)
* Improve references to Forgejo and Gitea
* Point reader to potentially good first issues
* Be more specific as to what kinds of patches can be submitted to the
  `Codeberg/forgejo` repository
* Explain how easy Go can be for beginners better
* Include some advice as to what a prospective contributor can work on
  based on personal experiences

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/326
2023-08-22 13:17:52 +00:00
Panagiotis "Ivory" Vasilopoulos 51c394cd3b 'Projects' has been renamed to 'Contributing' 2023-08-03 20:05:12 +00:00
Panagiotis "Ivory" Vasilopoulos 092ae8e74c Mention Codeberg-e.V./requests in FAQ (#336)
This was added because a user was not sure where they could request an
increase to the repository limit of an organization that they intended
to use for a hackathon.

We may want to consider creating a more detailed page about this later.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/336
2023-08-03 19:59:56 +00:00
rtn 3e3dbf8dd3 Update 'content/codeberg-translate/introduction-to-weblate.md' (#338)
Some language tweaks.

* remove capital letters from some words
* fix typos

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/338
Co-authored-by: rtn <rtn@noreply.codeberg.org>
Co-committed-by: rtn <rtn@noreply.codeberg.org>
2023-07-25 10:49:50 +00:00
Lucas Hinderberger 68d5b2a9a0 Merge branch 'eleventy2' 2023-07-21 21:25:02 +02:00
Lucas Hinderberger a27a71bf0f Workaround: Markdown parser does not ignore backtick fence inside tilde fence 2023-07-21 21:17:17 +02:00
Lucas Hinderberger d55c1397f7 Replacing indented code blocks with fenced code blocks 2023-07-21 21:17:17 +02:00
Lucas Hinderberger 91fbf7a9a0 Replacing tabs with spaces 2023-07-21 21:17:17 +02:00
Lucas Hinderberger 51ea0f2bf1 Updating dependencies 2023-07-21 21:17:17 +02:00
Panagiotis "Ivory" Vasilopoulos 836ce8e83b Remove subreddit from Contact information (#333)
The community has been marked as private.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/333
2023-07-21 15:45:55 +00:00
Panagiotis "Ivory" Vasilopoulos 37b507b6f7 Fix styling and factual errors in 'Repository Permissions' (#328)
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/328
2023-07-20 21:46:54 +00:00
Andre601 a21dbdd678 Add note about _redirects status (#329)
As mentioned in https://codeberg.org/Codeberg/pages-server/issues/234

The `_redirects` file feature seems to not yet be implemented in the production version of Codeberg Pages. That combined with the fact that the docs give the impression that it is available can and will cause confusion for people.

I've added a simple note at the top of the page, informing about the status of this feature not yet being available.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/329
Co-authored-by: Andre601 <andre601@noreply.codeberg.org>
Co-committed-by: Andre601 <andre601@noreply.codeberg.org>
2023-07-20 21:06:05 +00:00
Panagiotis "Ivory" Vasilopoulos 5d457efc06 Clean up 'Clone & Commit via CLI' guide (#325)
* Fix typos
* Simplify language
* Increase clarity as to whether the CLI tools are official
* Make language slightly more formal
* Gaps between headers and content

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/325
2023-07-18 14:29:05 +00:00
Panagiotis "Ivory" Vasilopoulos dd6d870c69 Link to Gitea docs on index page (#323)
Based on social media feedback regarding Forgejo's documentation
not always covering everything. Although it is probably best to use
the Forgejo documentation wherever possible, it is probably in the
interest of our users to link back to both sites.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/323
2023-07-18 09:46:27 +00:00
f0sh 77bfb6cc15 Change all Gitea references to Forgejo, fix #315 (#322)
Where possible, changed all references from Gitea to Forgejo.
Wherever documentation mentions specifically Gitea, it is preserved.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/322
Co-authored-by: f0sh <f0sh@mailbox.org>
Co-committed-by: f0sh <f0sh@mailbox.org>
2023-07-18 00:43:47 +00:00
Oscar Carballal Prego a25f81e9a2 Improve authentication wording for Matrix integration (#321)
The current documentation fails to specify that the authentication token required a "Bearer" prefix. If a user follows the docs to the letter, it will fail. This patch explains that the user has to add "Bearer" to the token to be able to work.

Co-authored-by: Oscar Carballal Prego <oscar@lareira.digital>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/321
Co-authored-by: Oscar Carballal Prego <oscarcp@noreply.codeberg.org>
Co-committed-by: Oscar Carballal Prego <oscarcp@noreply.codeberg.org>
2023-07-17 09:00:30 +00:00
Panagiotis "Ivory" Vasilopoulos a9d53ca7cb Add documentation for Keycloak (#316)
Simple guide for using Keycloak with Codeberg based on the instructions
provided by Shane Engelman in Codeberg's Matrix chat.

Co-authored-by: shane <contact@shane.gg>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/316
2023-07-15 20:49:21 +00:00
Panagiotis "Ivory" Vasilopoulos 89538796b4 Improve index site (#317)
* Introduce links to other documentation sources
* Improve wording
* Explain the purpose of Codeberg's Documentation

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/317
2023-07-14 21:21:16 +00:00
f0sh 1984032bdd Add improvements to the Documentation according to open issues (#314)
Tried to close some open issues in the issue tracker by submitting the following changes as my first contribution to Codeberg:

 - added list on every section index page, should fix #63
 - added webhooks documentation, should fix #282
 - described behaviour of a limited user profile, should fix #279
 - added further explanation to 2fa section, according to Codeberg/Documentation#268, should fix #268
 - added codeberg badge generator to first-repository description, should fix #39
 - added dns record description to custom-domains, should fix #302
 - added description how to use 2fa with git, should fix #278
 - added and updated repo migration service description, should fix #312

Feedback highly appreciated.

Co-authored-by: f0sh <f0sh@mailbox.org>
Co-authored-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/314
Co-authored-by: f0sh <f0sh@noreply.codeberg.org>
Co-committed-by: f0sh <f0sh@noreply.codeberg.org>
2023-07-08 16:27:44 +00:00
JakobDev ff8910c5ee Add Documentation for Codeberg Translate (#300)
This is a simple documentation for Codeberg Translate. I think it can be improved in some points (especially the wording), but it should be a good start.

Closes: https://codeberg.org/Codeberg/Documentation/issues/273
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/300
Co-authored-by: JakobDev <jakobdev@gmx.de>
Co-committed-by: JakobDev <jakobdev@gmx.de>
2023-07-04 21:02:20 +00:00
Otto 065c065e09 Revisit CI section 2023-06-29 23:12:29 +00:00
Panagiotis "Ivory" Vasilopoulos 8fe5dd27d6 Improve clarity of wiki documentation (#305)
Fixes https://codeberg.org/Codeberg/Community/issues/1001#issuecomment-890160

Co-authored-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/305
Co-authored-by: Panagiotis "Ivory" Vasilopoulos <n0toose@noreply.codeberg.org>
Co-committed-by: Panagiotis "Ivory" Vasilopoulos <n0toose@noreply.codeberg.org>
2023-06-23 01:06:16 +00:00
NeatNit 2887826c38 Update SSH connection test text to match actual result (#307)
I just went through these steps and noticed that the message is wrong, so here's the update. Note that the message normally shows the username and key name, which I've replaced with "____".

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/307
Co-authored-by: NeatNit <neatnit@noreply.codeberg.org>
Co-committed-by: NeatNit <neatnit@noreply.codeberg.org>
2023-05-30 09:07:14 +00:00
d7415 e91d2ea42e A list of subscriptions is now available (#306)
This feature was added in this Gitea PR: https://github.com/go-gitea/gitea/issues/16111

Co-authored-by: Martin Stone <martin@d7415.co.uk>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/306
Co-authored-by: d7415 <martin@d7415.co.uk>
Co-committed-by: d7415 <martin@d7415.co.uk>
2023-05-24 14:25:23 +00:00
video-prize-ranch 95574213ea Redirects documentation (#294)
Documentation for redirects on Codeberg Pages:
https://codeberg.org/Codeberg/pages-server/pulls/148

Co-authored-by: video-prize-ranch <cb.8a3w5@simplelogin.co>
Co-authored-by: 6543 <6543@obermui.de>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/294
Co-authored-by: video-prize-ranch <video-prize-ranch@noreply.codeberg.org>
Co-committed-by: video-prize-ranch <video-prize-ranch@noreply.codeberg.org>
2023-03-31 07:05:47 +00:00
Otto ebdccd0c67 Update 'content/getting-started/faq.md' 2023-03-26 13:48:23 +00:00
RobWalt 9c4533497b update codeberg-cli section with new binary name (#299)
We noticed that there is an application with the name `cod` already in available as a package in many distros and decided to rename the binary to `berg`. This PR just updates the section about `codeberg-cli` to use the new binary name.

Co-authored-by: RobWalt <robwalter96@gmail.com>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/299
Co-authored-by: RobWalt <robwalt@noreply.codeberg.org>
Co-committed-by: RobWalt <robwalt@noreply.codeberg.org>
2023-03-20 08:33:15 +00:00
n0toose 447946f70b Clarify that Codeberg API can create new releases (#297)
This PR was created in a hurry -- it was created after a person in the Codeberg Matrix room asked for an explicit clarification.

Co-authored-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/297
Co-authored-by: n0toose <git@n0toose.net>
Co-committed-by: n0toose <git@n0toose.net>
2023-03-18 14:42:36 +00:00
Otto 38f5587a17 s/Gitea/Forgejo 2023-03-05 14:27:37 +00:00
Loïc Dachary bb020e98e8 explain why the tag may look strange at times 2023-03-04 09:26:43 +00:00
Loïc Dachary 109622e1ea s/1.12/1.18/ 2023-03-04 09:26:43 +00:00
Loïc Dachary 67236e8b2d s/gitea/forgejo/ 2023-03-04 09:26:43 +00:00
Isaac Beverly 08986833f7 Provide additional clarification for custom domains with Codeberg Pages (#293)
This provides more detail when using ALIAS+TXT DNS records.

More context:  https://matrix.to/#/!wkyjxWeAOBpKMvHbno:matrix.org/$Z0mdXrDKTNptIBpENaeZKd9WuuMWhCrawgIWsNjJjXo?via=freeyourgadget.org&via=matrix.org&via=tchncs.de

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/293
Co-authored-by: Isaac Beverly <imbev@noreply.codeberg.org>
Co-committed-by: Isaac Beverly <imbev@noreply.codeberg.org>
2023-03-03 22:17:35 +00:00
RobWalt 4c425e13a4 Mentioning codeberg-cli tool (#285)
Co-authored-by: RobWalt <robwalter96@gmail.com>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/285
Co-authored-by: RobWalt <robwalt@noreply.codeberg.org>
Co-committed-by: RobWalt <robwalt@noreply.codeberg.org>
2023-02-24 20:14:28 +00:00
Lucas Hinderberger 08d985108d Replacing project list with link to Codeberg/Projects repo (#292)
This replaces the project table in the "Improving Codeberg" section with a link to the new Codeberg/Projects repository.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/292
Co-authored-by: Lucas Hinderberger <mail@lucas-hinderberger.de>
Co-committed-by: Lucas Hinderberger <mail@lucas-hinderberger.de>
2023-02-24 19:39:18 +00:00
JakobDev 448fd740df Add Documentation for integrating with Read the Docs (#289)
This adds a Documentation for connecting Codeberg to [Read the Docs](https://readthedocs.org/). English is not my native Language, so there may be a few things that could be written better.

Co-authored-by: René Wagner <rwa@clttr.info>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/289
Co-authored-by: JakobDev <jakobdev@gmx.de>
Co-committed-by: JakobDev <jakobdev@gmx.de>
2023-02-24 19:37:22 +00:00
Jan Klippel e52d13f76b
replace mentions of Gitea with Forgejo
Replace the mentions of Gitea in the Codeberg projects list
with Forgejo as Codeberg is now based on the Forgejo soft fork of Gitea.

Fixes: #286
2023-02-19 12:03:12 +01:00
René Wagner 669f227ca9 remove contributors, use commit log for reference instead
closes #275
2023-02-14 16:53:14 +00:00
René Wagner d182737311 add contributors reference to README
closes #275
2023-02-14 16:52:04 +00:00
Jeremy d42e22f64c Fixed English mistakes 2022-12-24 09:48:23 +00:00
CameronNemo 9b8b8889ca ci: point to VCS integration docs
Signed-off-by: CameronNemo <cameronnemo@noreply.codeberg.org>
2022-12-20 23:14:19 +00:00
fpare 51570538fd add the ssh url scheme 2022-11-29 17:18:29 +00:00
fpare 1e341a0845 clarify the title 2022-11-29 17:18:29 +00:00
fpare d34e73a2b6 add suggestion to use SSH to avoir entering password every time 2022-11-29 17:18:29 +00:00
fpare 7a9528cfff Revert "add suggestion to use SSH to avoir entering password every time"
This reverts commit a4e17f1ad15d74a1cadceca4debd2c1a08a8dd23.
2022-11-29 17:18:29 +00:00
narF 9b31a3da09 Mise à jour de 'content/security/ssh-key.md' 2022-11-29 17:18:29 +00:00
narF 3cac95303e add suggestion to use SSH to avoir entering password every time 2022-11-29 17:18:29 +00:00
narF ceec82002b add missing number in first-repository.md 2022-11-29 17:18:29 +00:00
narF 7fba31ab1d add instructions to switch from https to ssh in ssh-key.md 2022-11-29 17:18:29 +00:00
fnetx b0b19675f2
Alternatives to Codeberg 2022-11-02 13:34:11 +01:00
eo 45473fb409 Correct SSH key misunderstanding 2022-10-21 17:10:35 +02:00
Lukas N 225f1265c1 Updated Mastodon URL
Updated Mastodon URL, because the account has moved to https://social.anoxinon.de/
2022-10-21 12:04:17 +02:00
fnetx b4fd4812aa
Style guide is for docs only 2022-10-06 00:49:42 +02:00
Felipe Leopoldo Sologuren Gutiérrez 98c40b8a07 Fixing broken links (#267)
Changes:
 * Fallback images links are all lowercase now.
 * Fix html redirect (meta tag http-equiv redirect) from ```/git/clone-commit-via-http ```to ```/git/clone-commit-via-web```.
 * Added protocol to an email link.
 * Fix some pages links.

To detect broken links I used wget:

```
wget --spider --recursive --level=0 --debug -e robots=off --base=http://localhost:8080 http://localhost:8080 2>&1 | grep ^Found\ [0-9]*\ broken\ link
```

However, wget detects html redirects (meta tag http-equiv refresh) as false positive.

If broken links have found, then the referer header will be searched for find out where they are:
```
wget --spider --recursive --level=0 --save-headers --debug -e robots=off --base=http://localhost:8080 http://localhost:8080 2>&1 | less
```

Co-authored-by: fsologureng <sologuren@estudiohum.cl>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/267
Co-authored-by: Felipe Leopoldo Sologuren Gutiérrez <fsologureng@noreply.codeberg.org>
Co-committed-by: Felipe Leopoldo Sologuren Gutiérrez <fsologureng@noreply.codeberg.org>
2022-10-03 21:35:01 +02:00
CSDUMMI f2e24e5aff Update 'content/codeberg-pages/troubleshooting.md' 2022-09-25 12:26:15 +02:00
n 7a4a4e0e11 Edit and merge PR #264 2022-09-11 17:16:52 +09:00
redwerkz 9ab38dd3f9 bump packages to latest version 2022-09-08 15:27:07 +02:00
n 0df8736a85 Add info about fonts and icons used in the website 2022-08-23 16:21:29 +02:00
Pi-Cla 727dd73f77 Make "AGPL-3.0-or-later" hyperlink go to corresponding licence page instead of list of all licences 2022-08-20 02:34:35 +02:00
magicfelix 9787d990ea
Fix typo 2022-08-11 16:30:05 +02:00
Jeremy 71e01038c5 Revise 2022-08-06 15:44:16 +02:00
Jeremy d5ef600ae9 Fix gpg-key.md 2022-08-06 15:44:16 +02:00
Jeremy fecb990686 Fix ssh-fingerprint.md 2022-08-06 15:44:16 +02:00
Jeremy 196fea69f3 Fix ssh-key.md 2022-08-06 15:44:16 +02:00
Jeremy 7115b4976e Fix 2fa.md 2022-08-06 15:44:16 +02:00
jklippel f7e3e24d3a added line to explain that a git push is necessary (#257)
add line to explain that a git push is necessary

Fixes #242

Co-authored-by: Jan Klippel <c0d3b3rg@kl1pp3l.de>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/257
Co-authored-by: jklippel <jklippel@noreply.codeberg.org>
Co-committed-by: jklippel <jklippel@noreply.codeberg.org>
2022-08-06 15:39:35 +02:00
René W f586d658f0 Merge pull request 'Fix mistakes in the Codeberg Pages section of the documentation' (#256) from jtbx/codeberg-documentation:pagesfix into main
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/256
2022-08-06 15:06:19 +02:00
Jeremy 9148212898 Fix codeberg-pages/pushing-output.md 2022-08-06 15:06:19 +02:00
Jeremy 74e7f20346 Fix codeberg-pages/examples/docs-as-code.md 2022-08-06 15:06:19 +02:00
Jeremy df6195e156 Fix codeberg-pages/troubleshooting.md 2022-08-06 15:06:19 +02:00
Jeremy ffc5878fb4 Fix codeberg-pages/index.md 2022-08-06 15:06:19 +02:00
Loïc Dachary 7b5313609b improve the wording in the contribute page (#253)
* `build-deploy-gitea` is not legacy in the sense that it still is in
  use
* replace "it" with `build-deploy-gitea` for clarity.

Signed-off-by: Loïc Dachary <loic@dachary.org>

Co-authored-by: Loïc Dachary <loic@dachary.org>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/253
Co-authored-by: Loïc Dachary <dachary@noreply.codeberg.org>
Co-committed-by: Loïc Dachary <dachary@noreply.codeberg.org>
2022-08-05 22:20:27 +02:00
Loïc Dachary cff34e1a03 fix broken link to the default branch (#254)
Co-authored-by: Loïc Dachary <loic@dachary.org>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/254
Co-authored-by: Loïc Dachary <dachary@noreply.codeberg.org>
Co-committed-by: Loïc Dachary <dachary@noreply.codeberg.org>
2022-08-03 12:24:47 +02:00
René W 3b3aa2f5b3 Merge pull request 'Fix mistakes in documentation (sections up to Markdown)' (#249) from jtbx/Documentation:main into main
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/249
2022-07-26 21:46:39 +02:00
Jeremy f85f9e601a Fix markdown/* 2022-07-26 21:46:39 +02:00
Jeremy 6841251d1a Fix git/* 2022-07-26 21:46:39 +02:00
Jeremy 0483a1ff6d Fix contribution_invitation.njk 2022-07-26 21:46:39 +02:00
Jeremy 8b7b5ffcf8 Fix collaborating/resolve-conflicts.md 2022-07-26 21:46:39 +02:00
Jeremy 3fb270ad28 Fix collaborating/repo-permissions.md 2022-07-26 21:46:39 +02:00
Jeremy bc300e5caa Fix collaborating/create-organization.md 2022-07-26 21:46:39 +02:00
Jeremy fbd05b0037 Fix collaborating/invite-collaborators.md 2022-07-26 21:46:39 +02:00
Jeremy db5724f0b9 Fix collaborating/pull-requests-and-git-flow.md 2022-07-26 21:46:39 +02:00
Jeremy 274558d54f Fix collaborating/citable-code.md 2022-07-26 21:46:39 +02:00
Jeremy 1ffa52cdb3 Fix contact.md 2022-07-26 21:46:39 +02:00
Jeremy 8b4e0f9317 Fix home.md 2022-07-26 21:46:39 +02:00
Jeremy d1e4479d76 Fix collaborating/index.md 2022-07-26 21:46:39 +02:00
Jeremy 47cac91c20 Fix getting-started/faq.md 2022-07-26 21:46:39 +02:00
Jeremy 74cf963ee5 Fix getting-started/licensing.md 2022-07-26 21:46:39 +02:00
Jeremy fd4f7d0567 Fix getting-started/email-settings.md 2022-07-26 21:46:39 +02:00
Jeremy d6e691468e Fix getting-started/wiki.md 2022-07-26 21:46:39 +02:00
Jeremy 641b525087 Fix getting-started/issue-tracking-basics.md 2022-07-26 21:46:39 +02:00
Jeremy adb83d680d Fix getting-started/first-repository.md 2022-07-26 21:46:39 +02:00
Jeremy b13f0c6c81 Fix getting-started/install-git.md 2022-07-26 21:46:39 +02:00
Jeremy 830a8b8680 Fix getting-started/first-steps.md 2022-07-26 21:46:39 +02:00
Jeremy ba0725129c Fix getting-started/what-is-codeberg.md 2022-07-26 21:46:39 +02:00
vanous 9bb3136a20 Improving Codeberg: add section about reporting bugs 2022-07-23 13:58:05 +02:00
René W b276cfcca9 Update 'README.md' 2022-07-21 16:47:59 +02:00
6543 69eeb5ba54 Add CI section (#237)
close https://codeberg.org/Codeberg-CI/feedback/issues/44

Co-authored-by: 6543 <6543@obermui.de>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/237
Co-authored-by: 6543 <6543@noreply.codeberg.org>
Co-committed-by: 6543 <6543@noreply.codeberg.org>
2022-07-17 23:48:10 +02:00
Flavio Poletti c7bded99df Add examples for Custom Domains
With inclusion of changes after feedback from Gusted
2022-07-17 06:03:38 +02:00
n 1ace475965 Switch Font Awesome to use SVG icons and update to v6 (#243)
This PR switches the Font Awesome icons to use SVG instead of a font, and updates it to v6.

~~Depends on Codeberg-Infrastructure/codeberg-fonts#13 getting deployed.~~ Now deployed.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/243
Co-authored-by: n <n@noreply.codeberg.org>
Co-committed-by: n <n@noreply.codeberg.org>
2022-07-09 12:52:21 +02:00
Mark E. Fuller 967b0cd7bd fix broken link to FAQ (#246)
Current link implementation (on https://docs.codeberg.org/improving-codeberg/#donate-to-codeberg) leads to https://docs.codeberg.org/improving-codeberg/content/improving-documentation/docs-contributor-faq.md, not the correct https://docs.codeberg.org/improving-documentation/docs-contributor-faq/

Co-authored-by: Mark E. Fuller <fuller@fedoraproject.org>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/246
Co-authored-by: Mark E. Fuller <fuller@noreply.codeberg.org>
Co-committed-by: Mark E. Fuller <fuller@noreply.codeberg.org>
2022-07-09 12:51:10 +02:00
Gary Wang fb110be468 Add description for branch name replacing rule
Related to https://codeberg.org/Codeberg/pages-server/pulls/102
2022-07-09 10:38:02 +08:00
Jan Klippel 6503ebfd33 changes after review 2022-06-16 21:20:38 +02:00
Jan Klippel a99d6f424e Format notes and caveats
Format notes and caveats according to style guide
2022-06-16 21:20:38 +02:00
Jan Klippel 2460e87199 Changes after review. 2022-06-16 21:20:38 +02:00
Jan Klippel 1726ed1620 LFS-documentation
Initial version of an article on LFS

Fixes: #133
2022-06-16 21:20:38 +02:00
puppe 9ed1af425c Fix minor factual error: Codeberg *is* a corporation
There is a minor factual error in “What is Codeberg?”. The third paragraph states that Codeberg is not a corporation. Well actually …, Codeberg as a “eingetragener Verein” (German for “registered association” or “incorporated association”) very much *is* a corporation. And so, that part of the sentence has either to be removed or at least has to be qualified in some way. This commit does the latter.
2022-06-15 10:25:52 +02:00
Jan Klippel 5a1fdc201e
Article on conflict resolution
Initial version of an article on conflict resolution

Fixes: #14
2022-05-28 16:30:19 +02:00
Jan Klippel 8b5ab8067e Actually show Markdown syntax
Actually display the Markdown syntax to use when writing a note or a warning
2022-05-22 11:30:03 +02:00
Jan Klippel 9aeb95c4e7 Add bullet point on names
Fixes: #232
2022-05-21 22:23:59 +02:00
Jan Klippel 2e087e8c0c
Fix: typo in docker run command 2022-05-21 12:34:47 +02:00
fnetX 3f80cb2d48 Update contact page 2022-05-18 18:49:52 +02:00
fnetX 3f6c3779ad pages compatibility for deployment 2022-05-18 18:42:20 +02:00
ka2in a829d17b10 Style Guide (#223)
Co-authored-by: Faycal Alami-Hassani <ka2in@protonmail.com>
Co-authored-by: ka2in <ka2in@protonmail.com>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/223
Co-authored-by: ka2in <ka2in@noreply.codeberg.org>
Co-committed-by: ka2in <ka2in@noreply.codeberg.org>
2022-05-17 19:03:19 +02:00
Fauzi Ramadaniza 5d3450e98d Reordering certain Text and Correcting its URL
Combining [Clone & Commit via HTTP] & [Clone & Commit via SSH] to [Clone & Commit via CLI] because it goes to the same URL.

Signed-off-by: Fauzi Ramadaniza <faustzero1@noreply.codeberg.org>
2022-05-15 16:14:35 +02:00
mutluyuz 9e3acf9f44 Tags need to be pushed to the remote target (#228)
Add a note that tags need to be pushed to the remote target.

Please let me know, if you have any suggestions to improve the wording and this paragraph.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/228
Co-authored-by: mutluyuz <mutluyuz@noreply.codeberg.org>
Co-committed-by: mutluyuz <mutluyuz@noreply.codeberg.org>
2022-05-10 08:09:38 +02:00
jklippel 5f022adfc6 Initial version of a Markdown documentation (#221)
Add initial version of a Markdown documentation to explain Markdown to new contributors. Also provides a styleguide to guide to a consistent use of the Markdown markup within Codeberg.

Fixes #59

Co-authored-by: Jan Klippel <c0d3b3rg@kl1pp3l.de>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/221
Co-authored-by: jklippel <jklippel@noreply.codeberg.org>
Co-committed-by: jklippel <jklippel@noreply.codeberg.org>
2022-04-23 21:18:08 +02:00
n 3b3309a90e Minor fixes 2022-04-17 14:28:59 +09:00
ka2in aef207d02a Improve email settings article (#215)
Edit and review of the article about email settings

Co-authored-by: Faycal Alami-Hassani <ka2in@protonmail.com>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/215
Co-authored-by: ka2in <ka2in@noreply.codeberg.org>
Co-committed-by: ka2in <ka2in@noreply.codeberg.org>
2022-04-17 06:03:43 +02:00
fnetx f7af41421b
Update deployment script for new location 2022-04-15 16:53:08 +02:00
Jan Klippel 5bdac45ee5 Create a new section documentation
Extract important articles from the now lengthy FAQ.
This helps to find the documented basics.
Move the Docs-Contributor-FAQ to the new documentation section.
2022-04-14 12:34:58 +02:00
Jan Klippel 29cae330d0 Add Dockerfile to serve documentation
Use a container to preview the documentation for those of us who cannot or do not want to install npm/nodejs on their machines.

- Add a Dockefile to create a docker image containing nodejs and the software needed to serve the documentation
- Extend README.md with the option to use the Dockerfile to preview the documentation
2022-04-14 12:34:21 +02:00
Jan Klippel ca68a77a76
add documentation of .gitignore
Add documentation of .gitignore to reduce clutter in Codeberg.

Fixes #117
2022-04-14 12:32:37 +02:00
n b46c8321dd Improve CI article 2022-04-10 21:02:40 +09:00
jklippel fa47455b9e document eMail notifications from codeberg (#213)
- Document how to change the eMail settings
- Document which situations automatically lead to being subscribed and
receiving mails

Improves on #153

Co-authored-by: Jan Klippel <c0d3b3rg@kl1pp3l.de>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/213
Co-authored-by: jklippel <jklippel@noreply.codeberg.org>
Co-committed-by: jklippel <jklippel@noreply.codeberg.org>
2022-04-09 13:01:28 +02:00
jklippel 7679e34b9e Start documentation on Continuous Integration / Woodpecker (#214)
- Initial section introducing CI
- Section on woodpecker on codeberg with a link to the request-access repository which already has good documentation on the current status of the Codeberg-CI

Related to #168

Co-authored-by: Jan Klippel <c0d3b3rg@kl1pp3l.de>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/214
Co-authored-by: jklippel <jklippel@noreply.codeberg.org>
Co-committed-by: jklippel <jklippel@noreply.codeberg.org>
2022-04-09 12:23:22 +02:00
jklippel 429c0ee52e Improvements on the FAQ (#211)
as proposed by infinitelight in https://codeberg.org/Codeberg/Documentation/issues/185

I put the proposed changes into a PR to continue handling #185

Co-authored-by: Jan Klippel <c0d3b3rg@kl1pp3l.de>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/211
Co-authored-by: jklippel <jklippel@noreply.codeberg.org>
Co-committed-by: jklippel <jklippel@noreply.codeberg.org>
2022-04-09 00:00:33 +02:00
Jan Klippel 84927fd532 add link to bylaws
Link to the bylaws from the documentation.

Improves on #191
2022-04-08 23:52:47 +02:00
René Schaar eec4dd6085 Resolve conversations from #181 (#208)
Only did some minor changes (most of them are formatting) and resolving all conversations from #181

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/208
Co-authored-by: René Schaar <rene@schaar.priv.at>
Co-committed-by: René Schaar <rene@schaar.priv.at>
2022-03-13 20:05:39 +01:00
Arnout Engelen db9f81fb39 Update FAQ to quote new Terms of Service (#207)
Co-authored-by: Arnout Engelen <arnout@bzzt.net>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/207
Co-authored-by: Arnout Engelen <raboof@noreply.codeberg.org>
Co-committed-by: Arnout Engelen <raboof@noreply.codeberg.org>
2022-03-13 11:46:08 +01:00
tok 5e8f81b174 #174: more extensive article on licensing. (#181)
Text is according to the discussion on the issue #174.

Co-authored-by: Thomas Kramer <code@tkramer.ch>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/181
Co-authored-by: tok <tok@noreply.codeberg.org>
Co-committed-by: tok <tok@noreply.codeberg.org>
2022-03-07 16:22:01 +01:00
n 70f94b2ee0 Gender-neutral language 2022-03-07 02:53:13 +09:00
n cd12cbf78c Fix broken link 2022-03-06 00:33:49 +09:00
Gusted 6b53d9cf23 Revisit GPG & SSH documentation (#206)
- Update the wording of gpg-key.md(ssh-key.md's wording is already nicely done). To be more fluent and have a better explanation.
- Add a section to verify the GPG & SSH key.
- Add step for git to sign new commits by-default.
- Resolves #177

Co-authored-by: Gusted <williamzijl7@hotmail.com>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/206
Co-authored-by: Gusted <gusted@noreply.codeberg.org>
Co-committed-by: Gusted <gusted@noreply.codeberg.org>
2022-03-04 22:17:26 +01:00
Gusted de72273544
Apply code suggestions 2022-03-04 00:20:58 +01:00
Gusted a53a187ee3
Rework the permissions article
- Rework the permission article, by splitting it into 2 new category's.
The current information would be within the Collaborators section, as
that hasn't changed. The new section is mostly concerned for the new
permissions system that is used for teams. It covers all the permissions
and values that can be selected.
- Resolves #204
2022-03-04 00:04:59 +01:00
René Schaar fd44b5335f Add project overview table to the contributing code site (#203)
Fixes: #201
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/203
Co-authored-by: René Schaar <rene@schaar.priv.at>
Co-committed-by: René Schaar <rene@schaar.priv.at>
2022-02-26 10:46:22 +01:00
ka2in 93975e5d93 Docs-as-Code with Sphinx and Codeberg Pages (#198)
How to implement [Docs-as-Code](https://docs-as-co.de/) with the help of Sphinx and Codeberg Pages.

Co-authored-by: Faycal Alami-Hassani <ka2in@protonmail.com>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/198
Co-authored-by: ka2in <ka2in@noreply.codeberg.org>
Co-committed-by: ka2in <ka2in@noreply.codeberg.org>
2022-02-14 22:15:05 +01:00
Otto Richter 0e30fb4fe8 Fix internal link 2022-02-13 21:02:00 +01:00
Lucas Hinderberger dd2d720c41 Upgrading to Eleventy v1.0.0, Updating Dependencies 2022-01-30 21:30:50 +01:00
fnetx 619aa91f52
Alignment in footer 2022-01-27 15:30:23 +01:00
lukaskluge 155db25dd0 reduce line width of content (#184)
Reduces line width in main text area to increase readability

fixes #183

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/184
Co-authored-by: lukaskluge <lukaskluge@noreply.codeberg.org>
Co-committed-by: lukaskluge <lukaskluge@noreply.codeberg.org>
2022-01-27 14:55:58 +01:00
Otto Richter 2bda61e74d Diverse changes (#189)
a bunch of (typo) fixes, additions, rewordings

Update references

- remove mentions of the master branch, as it's removed for many repos
and might change in the future for others (fixes some dead links)
- remove mentions of moved repos with our official examples
- some on-the-fly additions or rewordings

Close #186 foobar->examples

Co-authored-by: fnetx <git@fralix.ovh>
Co-authored-by: fnetX <git@fralix.ovh>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/189
Co-authored-by: Otto Richter <fnetx@noreply.codeberg.org>
Co-committed-by: Otto Richter <fnetx@noreply.codeberg.org>
2022-01-21 11:36:38 +01:00
René W f1552640e8 add info about failed migrations (#187)
This is a question that is raised repeatedly in the community tracker or matrix.

Co-authored-by: René W <rwa@clttr.info>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/187
Co-authored-by: René W. <rwa@clttr.info>
Co-committed-by: René W. <rwa@clttr.info>
2021-12-28 21:19:25 +01:00
n 17cc1bfc96 Close open quote 2021-12-24 23:18:35 +09:00
n ec5228bbf5 Some HTML template fixes 2021-12-23 18:18:20 +09:00
fnetx 707619f2a6
Apply suggestions as per momar 2021-12-02 17:02:54 +01:00
fnetx 9a355bb8c9
Modify Codeberg Pages article for Pages v2 2021-12-01 23:18:11 +01:00
René W b585d2f989 Merge pull request 'add faq about automatic mirrors' (#180) from faq-mirror into main
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/180
2021-11-26 18:54:27 +01:00
René Wagner c06926aa0a
rephrase first sentence 2021-11-25 18:35:38 +01:00
René Wagner 94c068a557
uppercase I in heading 2021-11-23 21:02:05 +01:00
René Wagner 3260bc265d
add faq about automatic mirrors 2021-11-22 17:15:14 +01:00
n 982842a9a9 Update packages and dependencies 2021-11-21 20:57:27 +09:00
n f77fc97525 Add margin-top to lists 2021-11-21 20:49:52 +09:00
n f4a400d555 Minor tweaks and updates to the Matrix integration article 2021-11-21 20:34:27 +09:00
n 3e9d9b87a8 Reorder articles in the security section 2021-11-21 20:13:59 +09:00
reynir 70db4885ed Add "(ssh fingerprints)" to title (#179)
Makes it easier to find the ssh fingerprints from the title alone.

Co-authored-by: Reynir Björnsson <reynir@reynir.dk>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/179
Co-authored-by: reynir <reynir@noreply.codeberg.org>
Co-committed-by: reynir <reynir@noreply.codeberg.org>
2021-11-20 14:01:24 +01:00
fnetx 5dfe62bb8b
deployment script defaults to prod 2021-11-17 00:01:14 +01:00
Johannes Stefan cdb301cc29 * Extending “Can I host private (non-licensed) repositories?”-question
* Adding link to netcup GmbH
* Adding link to liberapay donation page
2021-11-04 22:42:55 +01:00
René W 74e4a182b3 Merge pull request 'Adds a separate page on licensing on Codeberg' (#173) from michielappelman/Documentation:licensing into main
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/173
2021-10-19 19:41:23 +02:00
Michiel Appelman 724fb04ad7 Move license handling back to FAQ 2021-10-19 09:43:57 +02:00
Michiel Appelman 7359aa4c2b Sort CC licenses in the same order as code licenses 2021-10-15 10:53:07 +02:00
Michiel Appelman 02d12744c6 Add specific implications of unrestricted licenses 2021-10-15 09:41:48 +02:00
Michiel Appelman 81fda8059c Changes Unlicense to 0BSD and removes some PD wording 2021-10-14 15:42:48 +02:00
mike 608da3f36d Merge branch 'main' into licensing 2021-10-14 12:01:26 +02:00
Michiel Appelman e9544af6df Adds a separate page on licensing on Codeberg
Looking of course for feedback on this, as I am not an expert on this at
all. This does capture some of the questions I had when starting to look
into licensing.
2021-10-14 11:58:42 +02:00
n 33c06996fe Merge pull request 'added Matrix space' (#172) from Patryk/Documentation:main into main
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/172
2021-10-14 11:43:48 +02:00
Patryk db0fea45a2 added Matrix space 2021-10-14 11:18:25 +02:00
mike da549f6a23 Fixes a single internal link to the Tag article (#169)
Co-authored-by: Michiel Appelman <michiel@appelman.se>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/169
Co-authored-by: mike <michielappelman@noreply.codeberg.org>
Co-committed-by: mike <michielappelman@noreply.codeberg.org>
2021-09-24 15:57:18 +02:00
n 5692bc9bce Fix redirect and change parent for FAQ 2021-08-29 16:34:08 +09:00
Otto Richter 779f959db8 Update FAQ (#166)
Co-authored-by: fnetX <git@fralix.ovh>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/166
Co-authored-by: Otto Richter <fnetx@noreply.codeberg.org>
Co-committed-by: Otto Richter <fnetx@noreply.codeberg.org>
2021-08-29 09:27:33 +02:00
n 04ccf15750 Remove branch from Git repo URLs
This makes the URLs redirect to the default branch of the repo
2021-08-26 22:53:10 +09:00
MohammadSaleh Kamyab ff261b380c fix the commit history and docs source adress 2021-08-24 08:59:51 +02:00
fnetX 11310c0476 Add mission to WhatIsCodeberg page
copied "Mission" section from https://blog.codeberg.org/codebergorg-launched.html
2021-08-24 02:56:31 +02:00
fnetX 53549c7b55 Add dedicated abuse section 2021-08-24 02:56:31 +02:00
n 288d5834af Another minor wording change 2021-08-20 17:27:58 +09:00
n b1a71be11a Minor wording change. 2021-08-20 17:10:24 +09:00
Gerhard Beck aaf58c97c4 Move Instructions on Creating a Release (#163)
Moving "releases in Codeberg" as discussed in https://codeberg.org/Codeberg/Documentation/issues/151

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/163
Co-authored-by: Gerhard Beck <gerhard.beck@elkb.de>
Co-committed-by: Gerhard Beck <gerhard.beck@elkb.de>
2021-08-20 10:09:04 +02:00
n 9a211dc2d2 Add metadata for CC license 2021-08-20 00:40:47 +09:00
n 6839d4119c Improve SSH key article (#161)
This PR improves the SSH key article, removes the part where email is used as a label (newcomers might think this is mandatory and leak their email) and changes the public key type to a more secure ed25519.

Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/161
Co-authored-by: n <n@noreply.codeberg.org>
Co-committed-by: n <n@noreply.codeberg.org>
2021-08-16 01:12:47 +02:00
174 changed files with 8731 additions and 8592 deletions

142
.cspell.json Normal file
View file

@ -0,0 +1,142 @@
{
"version": "0.2",
"language": "en",
"dictionaries": [
// language
"en_us",
// code
"go",
"node",
// package names
"npm"
],
"words": [
"codeberg",
"editview",
"forgejo",
"gitea",
"keycloak",
"knut",
"nord",
"orga",
"pageview",
"styleguide",
"tydata",
"webauthn",
"weblate",
"webp",
"xclip",
"endfor",
"pagefind",
"mray",
"keypair",
"gpgsign",
"signinkey",
"srcset",
"endadmonition",
"TOTP",
"Setext",
"Marlroy",
"preformatting",
"endfor",
"Goldmark",
"Homeserver",
"subpage",
"PKCE",
"block",
"keyid",
"pubring",
"signingkey",
"Browsersync",
"endraw",
"callouts",
"libwebp",
"cwebp",
"Kesi",
"IBAN",
"SEPA",
"fileorpathname",
"oneline",
"eins",
"zwei",
"Commitvia",
"knuts",
"Hostable",
"disroot",
"hostable",
"LICENCE",
"browsable",
"homebrewed",
"libera",
"jumpstart",
"Figshare",
"Zenodo",
"gettext",
"colormix",
"frida",
"reponame",
"yourdomain",
"myproject",
"branchname",
"venv",
"mydocs",
"Hassani",
"Alami",
"Fayçal",
"toctree",
"Malroy",
"Wrzx",
"pacman",
"xbps",
"GENODEF",
"netcup",
"YOURCODEBERGUSERNAME",
"respository",
"mynewfile",
"docstrings",
"autodoc",
"quickstart",
"virtualenv",
"dind",
"Packagist",
"Feishu",
"Gogs",
"noreferrer",
"tabindex",
"CERTDIR",
"nbsp",
"lycheeverse",
"mstruebing",
"davidanson",
"pipelinecomponents",
"corepack"
],
"ignorePaths": [
"**/node_modules/**/*",
"*.webp",
"*.png",
".git/**/*",
".gitignore",
"pnpm-lock.yaml",
"package.json",
"*.svg",
"*.css",
"*.js",
"*.njk",
".cspell.json"
],
// Exclude imports, because they are also strings.
"ignoreRegExpList": [
// ignore mulltiline imports
"import\\s*\\((.|[\r\n])*?\\)",
// ignore single line imports
"import\\s*.*\".*?\"",
// ignore go generate directive
"//\\s*go:generate.*",
// ignore nolint directive
"//\\s*nolint:.*",
// ignore docker image names
"\\s*docker\\.io/.*"
],
"enableFiletypes": ["dockercompose"]
}

3
.ecrc Normal file
View file

@ -0,0 +1,3 @@
{
"Exclude": ["LICENSE", ".git*"]
}

17
.editorconfig Normal file
View file

@ -0,0 +1,17 @@
root = true
[*]
indent_style = space
indent_size = 2
tab_width = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
indent_size = 1
[Makefile]
indent_style = tab

View file

@ -1,43 +1,85 @@
const navigationPlugin = require("@11ty/eleventy-navigation")
const syntaxHighlightingPlugin = require("@11ty/eleventy-plugin-syntaxhighlight")
const navigationPlugin = require('@11ty/eleventy-navigation');
const syntaxHighlightingPlugin = require('@11ty/eleventy-plugin-syntaxhighlight');
const markdownIt = require('markdown-it');
const tableOfContentsPlugin = require('@uncenter/eleventy-plugin-toc');
const markdownItClass = require('@toycode/markdown-it-class');
const markdownItAnchor = require('markdown-it-anchor')
const searchFilter = require("./content/filters/searchFilter");
const markdownItAnchor = require('markdown-it-anchor');
const library = require('@fortawesome/fontawesome-svg-core').library;
const icon = require('@fortawesome/fontawesome-svg-core').icon;
const fas = require('@fortawesome/free-solid-svg-icons').fas;
const { execSync } = require('child_process');
module.exports = function(eleventyConfig) {
eleventyConfig.addPlugin(navigationPlugin)
eleventyConfig.addPlugin(syntaxHighlightingPlugin)
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(navigationPlugin);
eleventyConfig.addPlugin(syntaxHighlightingPlugin);
eleventyConfig.addPassthroughCopy("assets")
eleventyConfig.addPassthroughCopy("fonts")
eleventyConfig.addPassthroughCopy('assets');
eleventyConfig.addPassthroughCopy('fonts');
eleventyConfig.addFilter("search", searchFilter);
eleventyConfig.addShortcode("fas_icon", function(name) { return `<span class="fas fa-${name}"></span>` })
// Font Awesome Icons
library.add(fas);
eleventyConfig.addShortcode('fas_icon', function (args) {
var fas_svg = icon({ prefix: 'fas', iconName: args });
return `${fas_svg.html}`;
});
const mapping = {
h2: 'content-title',h3: 'content-title',h4: 'content-title',h5: 'content-title',h6: 'content-title',
h2: 'content-title',
h3: 'content-title',
h4: 'content-title',
h5: 'content-title',
h6: 'content-title',
table: 'table',
blockquote: 'alert'
blockquote: 'alert',
};
const mdOptions = { linkify: false, html: true };
const mdAnchorOpts = {
const mdAnchorOpts = {
permalink: markdownItAnchor.permalink.headerLink(),
permalinkClass: 'ml-5', permalinkSymbol: '#', level: [1, 2, 3, 4]
}
permalinkClass: 'ml-5',
permalinkSymbol: '#',
level: [1, 2, 3, 4],
};
eleventyConfig.setLibrary(
'md',
markdownIt(mdOptions)
.use(markdownItClass, mapping)
.use(markdownItAnchor, mdAnchorOpts)
)
markdownIt(mdOptions).use(markdownItClass, mapping).use(markdownItAnchor, mdAnchorOpts),
);
eleventyConfig.addPairedShortcode('admonition', function (content, type, title) {
let titleStr = '';
if (title) {
titleStr = title;
} else if (type) {
titleStr = type.substring(0, 1).toUpperCase() + type.substring(1).toLowerCase();
} else {
titleStr = 'Info';
}
return `<div class="admonition${type ? ` ${type.toLowerCase()}` : ''}">
<div class="admonition-title">
<span class="admonition-icon${type ? ` ${type.toLowerCase()}` : ''}"></span>
${titleStr}
</div>
<div class="admonition-content">${content}</div>
</div>`;
});
eleventyConfig.addPlugin(tableOfContentsPlugin, {
tags: ['h2', 'h3'],
wrapper: function (toc) {
toc = toc.replaceAll('<a', "<a class='sidebar-link'");
return `${toc}`;
},
});
eleventyConfig.on('eleventy.after', () => {
execSync(`npx pagefind`, { encoding: 'utf-8' });
});
return {
dir: {
input: "content"
}
}
}
input: 'content',
},
};
};

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
node_modules/
_site/
pages.git/
.idea/

8
.lycheeignore Normal file
View file

@ -0,0 +1,8 @@
http://127.0.0.1:**
https://pages.codeberg.org/user.name/
https://user.name.codeberg.page/
https://repo.sitory.username.codeberg.page/
file://** */
https://codeberg.org/username/repo.git
https://username.codeberg.page/**
https://openclipart.org/**

141
.markdownlint.yaml Normal file
View file

@ -0,0 +1,141 @@
# markdownlint YAML configuration
# https://github.com/DavidAnson/markdownlint/blob/main/schema/.markdownlint.yaml
# Default state for all rules
default: true
# Path to configuration file to extend
extends: null
# MD003/heading-style/header-style - Heading style
MD003:
# Heading style
style: 'atx'
# MD004/ul-style - Unordered list style
MD004:
style: 'dash'
# MD007/ul-indent - Unordered list indentation
MD007:
# Spaces for indent
indent: 2
# Whether to indent the first level of the list
start_indented: false
# MD009/no-trailing-spaces - Trailing spaces
MD009:
# Spaces for line break
br_spaces: 2
# Allow spaces for empty lines in list items
list_item_empty_lines: false
# Include unnecessary breaks
strict: false
# MD010/no-hard-tabs - Hard tabs
MD010:
# Include code blocks
code_blocks: true
# MD012/no-multiple-blanks - Multiple consecutive blank lines
MD012:
# Consecutive blank lines
maximum: 1
# MD013/line-length - Line length
MD013:
# Number of characters
line_length: 500
# Number of characters for headings
heading_line_length: 100
# Number of characters for code blocks
code_block_line_length: 80
# Include code blocks
code_blocks: false
# Include tables
tables: false
# Include headings
headings: true
# Include headings
headers: true
# Strict length checking
strict: false
# Stern length checking
stern: false
# MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines
MD022:
# Blank lines above heading
lines_above: 1
# Blank lines below heading
lines_below: 1
# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
MD024:
# Only check sibling headings
allow_different_nesting: true
# MD025/single-title/single-h1 - Multiple top-level headings in the same document
MD025:
# Heading level
level: 1
# RegExp for matching title in front matter
front_matter_title: "^\\s*title\\s*[:=]"
# MD026/no-trailing-punctuation - Trailing punctuation in heading
MD026:
# Punctuation characters
punctuation: '.,;:!。,;:!'
# MD029/ol-prefix - Ordered list item prefix
MD029:
# List style
style: 'one_or_ordered'
# MD030/list-marker-space - Spaces after list markers
MD030:
# Spaces for single-line unordered list items
ul_single: 1
# Spaces for single-line ordered list items
ol_single: 1
# Spaces for multi-line unordered list items
ul_multi: 1
# Spaces for multi-line ordered list items
ol_multi: 1
# MD033/no-inline-html - Inline HTML
MD033: false
# MD035/hr-style - Horizontal rule style
MD035:
# Horizontal rule style
style: '---'
# MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading
MD036:
# Punctuation characters
punctuation: '.,;:!?。,;:!?'
# MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading
MD041:
# Heading level
level: 1
# RegExp for matching title in front matter
front_matter_title: "^\\s*title\\s*[:=]"
# MD044/proper-names - Proper names should have the correct capitalization
MD044:
# List of proper names
# names:
# Include code blocks
code_blocks: false
# MD046/code-block-style - Code block style
MD046:
# Block style
style: 'fenced'
# MD048/code-fence-style - Code fence style
MD048:
# Code fence style
style: 'backtick'

1
.prettierignore Normal file
View file

@ -0,0 +1 @@
pnpm-lock.yaml

8
.prettierrc.json Normal file
View file

@ -0,0 +1,8 @@
{
"semi": true,
"trailingComma": "all",
"singleQuote": true,
"printWidth": 120,
"tabWidth": 2,
"endOfLine": "lf"
}

14
.woodpecker/build.yaml Normal file
View file

@ -0,0 +1,14 @@
when:
- event: [pull_request]
- event: push
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
build:
image: codeberg.org/woodpecker-plugins/node-pm:1.3.0
settings:
run: build
with: pnpm
frozen_lockfile: true
ignore_node_modules: true

View file

@ -0,0 +1,29 @@
when:
- event: [pull_request, pull_request_closed]
steps:
build:
image: codeberg.org/woodpecker-plugins/node-pm
settings:
run: build
with: pnpm
frozen_lockfile: true
ignore_node_modules: true
deploy-preview:
image: docker.io/woodpeckerci/plugin-surge-preview:1.3.1
settings:
path: '_site/'
forge_type: gitea
forge_url: https://codeberg.org
surge_token:
from_secret: surge_token
forge_repo_token:
from_secret: surge_forge_token
failure: ignore
when:
event: [pull_request, pull_request_closed]
path:
- content/**
- assets/**
- .eleventy.js

44
.woodpecker/lint.yaml Normal file
View file

@ -0,0 +1,44 @@
when:
- event: [pull_request]
- event: push
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
lint-markdown:
image: davidanson/markdownlint-cli2:v0.13.0
commands:
- 'markdownlint-cli2 *.{md,markdown}'
when:
path: '*.{md,markdown}'
editor-config:
image: mstruebing/editorconfig-checker:v3.0.1
depends_on: []
prettier:
image: docker.io/woodpeckerci/plugin-prettier:0.1.0
depends_on: []
settings:
version: 3.2.5
links:
image: lycheeverse/lychee:0.14.3
depends_on: []
commands:
- lychee -v -t 40 .
lint-yaml:
image: pipelinecomponents/yamllint:0.31.2
depends_on: []
commands:
- yamllint --strict .
when:
path: '*.{yml,yaml}'
spellcheck:
image: docker.io/node:22-alpine
depends_on: []
commands:
- corepack enable
- pnpx cspell lint --no-progress --gitignore '{**,.*}/{*,.*}'

21
.yamllint.yaml Normal file
View file

@ -0,0 +1,21 @@
ignore: |
pnpm-lock.yaml
node_modules/
rules:
comments:
require-starting-space: false
ignore-shebangs: true
min-spaces-from-content: 1
braces:
min-spaces-inside: 1
max-spaces-inside: 1
document-start:
present: false
indentation:
spaces: 2
indent-sequences: true
line-length:
max: 256
new-lines:
type: unix

View file

@ -1,15 +0,0 @@
# The Codeberg Documentation Contributors
In alphabetic order (by last name / username):
- Martijn de Boer (@sexybiggetje)
- Christian Buhtz (@buhtz)
- Ivan Calandra (@ivan-paleo)
- Ben Cotterell (@benc)
- Lucas Hinderberger (@lhinderberger)
- Henning Jacobs (@hjacobs)
- @mray (for the Codeberg Logo)
- @n
- Alex (@n0542344)
- Holger Waechtler (@hw)
- William Davis (@unbeatable-101)

16
Dockerfile Normal file
View file

@ -0,0 +1,16 @@
FROM node:12.22.12-stretch-slim
RUN apt-get update && apt-get -y upgrade
RUN apt-get install -y git curl
RUN curl -fsSL https://get.pnpm.io/install.sh | sh -
RUN mkdir /opt/documentation && chown node: /opt/documentation
USER node
WORKDIR /opt/documentation
RUN pnpm install
CMD [ "pnpm", "run", "serve"]

View file

@ -1,13 +1,19 @@
This website by [The Codeberg Documentation Contributors](CONTRIBUTORS.md)
is licensed under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.en).
<!-- markdownlint-disable MD041 -->
This website is licensed under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.en).
Due to the wiki-like nature of this website, pages usually have multiple authors and are changed
frequently. Changes to the original versions of the works as well as their individual authors can be
looked up in [the website's commit history](https://codeberg.org/Codeberg/Documentation/commits/branch/master).
looked up in [the website's commit history](https://codeberg.org/Codeberg/Documentation/commits/branch/main).
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 https://openclipart.org/detail/193243/polar-bear-remix, under CC0 1.0
"Knut the Polar Bear" has been derived from [https://openclipart.org/detail/193243/polar-bear-remix](https://openclipart.org/detail/193243/polar-bear-remix), under CC0 1.0

View file

@ -1,28 +1,30 @@
# Codeberg Documentation
This repository contains the documentation for Codeberg, with some code to build it into
This repository contains the [documentation for Codeberg](https://docs.codeberg.org/), with some code to build it into
a static website.
Please have a look into it and consider to help writing the Documentation. This is still very much work-in-progress, the more useful material we collect, the better we can later present it! All contributions are very welcome!
For an introduction on contributing to Codeberg Documentation, please have a look
at [the Contributor FAQ](https://docs.codeberg.org/improving-codeberg/docs-contributor-faq)
at [the section on improving the documentation](https://docs.codeberg.org/improving-documentation/).
## Usage
### Local Development
If you want to work on the documentation, for example by writing your own articles,
the easiest way to do so is to fork the documentation repository and develop locally.
First, run
```npm install```
`pnpm install`
to install all dependencies (they will be installed only for this project, not globally).
You only have to do this once.
Then run
```npm run serve```
`pnpm run serve`
to start a development web server that by default is listening at `http://localhost:8080`.
@ -32,30 +34,72 @@ should automatically reload all changed pages using the amazing Browsersync.
When you're done, commit your changes to your fork and write a pull request for
Codeberg/Documentation. We're happy about every contribution!
### Local development using the Dockerfile
If you do not have nodejs installed or do not want to run the development web server directly on your host,
you can also use a docker container.
You must have a container-engine installed (docker, podman, etc.)
First build the container image:
```shell
docker build -t Codeberg/Documentation-server .
```
You do not have to rebuild the image every time. Once you build the image you can always start the development
webserver using the container engine:
```shell
docker run --rm -v $PWD:/opt/documentation Codeberg/Documentation-server:latest
```
Use the "External" URL the container outputs on startup to access your documentation.
Changes to files in the documentation are reflected in the browser as the server regularly updates the generated files.
Use `Ctrl-C` to exit / end the container.
The parameters are:
`--rm` removes the container after it's use
`-v` mounts the current (documentation repository root) folder to `/opt/documentation` in the container.
`Codeberg/Documentation-server:latest` refers to the container image built in the first step (using `docker build`).
### Build & Deployment
Like for local development, before building and deploying you first have to install
the dependencies (once):
```npm install```
`pnpm install`
To build the entire website to the `_site` directory run
```npm run build```
`pnpm run build`
Instead, to directly publish the page to Codeberg pages, you can also run
```npm run deploy```
`pnpm run deploy`
which includes a call to `npm run build`.
which includes a call to `pnpm run build`.
### Technical Information
This website uses [Eleventy](https://www.11ty.dev/), a static site generator.
It's supplied as a dev-dependency in `package.json` and its dependencies are locked
with `package-lock.json` to try to ensure reproducible builds.
It also uses [PageFind](https://pagefind.app/), a static search library.
Deployment previews are generated for every PR using [Surge.sh](https://surge.sh/) through the corresponding [Woodpecker plugin](https://woodpecker-ci.org/plugins/Surge%20preview%20plugin).
A spellchecker is used to check for spelling errors in the documentation.
To add exceptions to the spellchecker, add them to the `.cspell.json` file.
## License and Contributors
This website (excluding bundled fonts) is licensed under CC BY-SA 4.0. See the [LICENSE](LICENSE.md) file for details.
The contributors are listed in `CONTRIBUTORS.md`.
Please refer to the [commit log](https://codeberg.org/Codeberg/Documentation/commits/branch/main) for an exhaustive list of contributors to Codeberg Documentation.

View file

@ -1,47 +1,269 @@
.content img { border: 5px solid rgba(0, 0, 0, 0.2); max-width: 100%; }
.content blockquote { margin: 0; }
.content-title { margin-top: 20px !important; }
:root {
--admonition-background-color--info: rgba(68, 138, 255, 0.2);
--admonition-background-color--note: rgba(0, 184, 212, 0.2);
--admonition-background-color--warning: rgba(255, 145, 0, 0.2);
--admonition-background-color--tip: rgba(0, 191, 165, 0.2);
--admonition-background-color--question: rgba(100, 221, 23, 0.2);
.content pre { border-left: 5px solid #2185d0; }
.dark-mode .content pre { border-left: 5px solid #355379; }
--admonition-border-color--info: rgb(68, 138, 255);
--admonition-border-color--note: rgb(0, 184, 212);
--admonition-border-color--warning: rgb(255, 145, 0);
--admonition-border-color--tip: rgb(0, 191, 165);
--admonition-border-color--question: rgb(100, 221, 23);
.content ol { list-style: decimal outside; padding-left: 2em; }
.content ul { list-style: outside; padding-left: 2em; }
--admonition-icon--info: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M13 7.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm-3 3.75a.75.75 0 0 1 .75-.75h1.5a.75.75 0 0 1 .75.75v4.25h.75a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5h.75V12h-.75a.75.75 0 0 1-.75-.75Z"></path><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Z"></path></svg>');
--admonition-icon--note: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17.263 2.177a1.75 1.75 0 0 1 2.474 0l2.586 2.586a1.75 1.75 0 0 1 0 2.474L19.53 10.03l-.012.013L8.69 20.378a1.753 1.753 0 0 1-.699.409l-5.523 1.68a.748.748 0 0 1-.747-.188.748.748 0 0 1-.188-.747l1.673-5.5a1.75 1.75 0 0 1 .466-.756L14.476 4.963ZM4.708 16.361a.26.26 0 0 0-.067.108l-1.264 4.154 4.177-1.271a.253.253 0 0 0 .1-.059l10.273-9.806-2.94-2.939-10.279 9.813ZM19 8.44l2.263-2.262a.25.25 0 0 0 0-.354l-2.586-2.586a.25.25 0 0 0-.354 0L16.061 5.5Z"></path></svg>');
--admonition-icon--warning: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M13 17.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm-.25-8.25a.75.75 0 0 0-1.5 0v4.5a.75.75 0 0 0 1.5 0v-4.5Z"></path><path d="M9.836 3.244c.963-1.665 3.365-1.665 4.328 0l8.967 15.504c.963 1.667-.24 3.752-2.165 3.752H3.034c-1.926 0-3.128-2.085-2.165-3.752Zm3.03.751a1.002 1.002 0 0 0-1.732 0L2.168 19.499A1.002 1.002 0 0 0 3.034 21h17.932a1.002 1.002 0 0 0 .866-1.5L12.866 3.994Z"></path></svg>');
--admonition-icon--tip: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M12.596 2.043c1.075.076 2.059.281 2.743.956.698.688.92 1.696.92 2.941 0 .432-.057.955-.117 1.438-.026.2-.051.392-.076.572l-.056.429h2.05c.752 0 1.446.108 2.036.404.612.306 1.062.787 1.355 1.431.551 1.214.542 3.008.223 5.394l-.051.39c-.134 1.01-.248 1.872-.396 2.58-.166.795-.394 1.496-.816 2.05-.89 1.168-2.395 1.372-4.583 1.372-2.331 0-4.08-.418-5.544-.824l-.602-.17c-1.023-.29-1.852-.526-2.69-.586A1.75 1.75 0 0 1 5.25 22h-1.5A1.75 1.75 0 0 1 2 20.25V9.75C2 8.784 2.784 8 3.75 8h1.5a1.75 1.75 0 0 1 1.746 1.633 1.85 1.85 0 0 0 .523-.131c.961-.415 2.774-1.534 2.774-4.2V4.249c0-1.22 1.002-2.298 2.303-2.206ZM7 18.918c1.059.064 2.079.355 3.118.652l.568.16c1.406.39 3.006.77 5.142.77 2.277 0 3.004-.274 3.39-.781.216-.283.388-.718.54-1.448.136-.65.242-1.45.379-2.477l.05-.384c.32-2.4.253-3.795-.102-4.575-.16-.352-.375-.568-.66-.711-.305-.153-.74-.245-1.365-.245h-2.37c-.681 0-1.293-.57-1.211-1.328.026-.243.065-.537.105-.834l.07-.527c.06-.482.105-.921.105-1.25 0-1.125-.213-1.617-.473-1.873-.275-.27-.774-.455-1.795-.528-.351-.024-.698.274-.698.71v1.053c0 3.55-2.488 5.063-3.68 5.577-.372.16-.754.232-1.113.26ZM3.75 20.5h1.5a.25.25 0 0 0 .25-.25V9.75a.25.25 0 0 0-.25-.25h-1.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25Z"></path></svg>');
--admonition-icon--question: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M10.97 8.265a1.45 1.45 0 0 0-.487.57.75.75 0 0 1-1.341-.67c.2-.402.513-.826.997-1.148C10.627 6.69 11.244 6.5 12 6.5c.658 0 1.369.195 1.934.619a2.45 2.45 0 0 1 1.004 2.006c0 1.033-.513 1.72-1.027 2.215-.19.183-.399.358-.579.508l-.147.123a4.329 4.329 0 0 0-.435.409v1.37a.75.75 0 1 1-1.5 0v-1.473c0-.237.067-.504.247-.736.22-.28.486-.517.718-.714l.183-.153.001-.001c.172-.143.324-.27.47-.412.368-.355.569-.676.569-1.136a.953.953 0 0 0-.404-.806C12.766 8.118 12.384 8 12 8c-.494 0-.814.121-1.03.265ZM13 17a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Z"></path></svg>');
a.header-anchor, a.header-anchor:visited { color: var(--lm-base-text-color) !important; text-decoration: none; }
.dark-mode a.header-anchor, .dark-mode a.header-anchor:visited { color: var(--dm-base-text-color) !important; text-decoration: none; }
a.header-anchor:hover { text-decoration: underline; }
--admonition-icon-dimension: 20px;
}
code span .content { margin: 0 !important; }
.content :not(img, pre) {
max-width: 80ch;
}
.content img {
border: 5px solid rgba(0, 0, 0, 0.2);
max-width: 100%;
}
.content blockquote {
margin: 0;
}
.content-title {
margin-top: 20px !important;
}
.content pre {
border-left: 5px solid #2185d0;
}
.dark-mode .content pre {
border-left: 5px solid #355379;
}
.content ol {
list-style: decimal outside;
}
.content ul {
list-style: outside;
}
.content ol,
.content ul {
margin-top: 10px;
padding-left: 2em;
}
.codeberg-design .card,
.codeberg-design hr {
margin-left: 0;
}
a.header-anchor,
a.header-anchor:visited {
color: var(--lm-base-text-color) !important;
text-decoration: none;
}
.dark-mode a.header-anchor,
.dark-mode a.header-anchor:visited {
color: var(--dm-base-text-color) !important;
text-decoration: none;
}
a.header-anchor:hover {
text-decoration: underline;
}
code span .content {
margin: 0 !important;
}
/* Apply code style to generic code */
pre:not([class*="language-"]) {
background: #2E3440;
color: #f8f8f2;
padding: 1em;
margin: .5em 0;
overflow: auto;
border-radius: 0.3em;
pre:not([class*='language-']) {
background: #2e3440;
color: #f8f8f2;
padding: 1em;
margin: 0.5em 0;
overflow: auto;
border-radius: 0.3em;
}
/* Override sidebar link style */
.codeberg-design .sidebar-title a { color: var(--sidebar-title-text-color); }
.codeberg-design .sidebar-title .dark-mode a { color: var(--dm-sidebar-title-text-color); }
.codeberg-design .sidebar-title a {
color: var(--sidebar-title-text-color);
}
.codeberg-design .sidebar-title .dark-mode a {
color: var(--dm-sidebar-title-text-color);
}
/* Apply halfmoon style to inline code */
code:not(pre > code) {
font-size: var(--code-font-size);
line-height: var(--code-line-height);
padding: var(--code-padding);
margin: var(--code-margin);
color: var(--lm-code-text-color);
background-color: var(--lm-code-bg-color);
border: var(--code-border-width) var(--lm-code-border-color);
border-radius: var(--code-border-radius);
code:not(pre > code) {
font-size: var(--code-font-size);
line-height: var(--code-line-height);
padding: var(--code-padding);
margin: var(--code-margin);
color: var(--lm-code-text-color);
background-color: var(--lm-code-bg-color);
border: var(--code-border-width) var(--lm-code-border-color);
border-radius: var(--code-border-radius);
}
.dark-mode code:not(pre > code) {
color: var(--dm-code-text-color);
background-color: var(--dm-code-bg-color);
border-color: var(--dm-code-border-color);
color: var(--dm-code-text-color);
background-color: var(--dm-code-bg-color);
border-color: var(--dm-code-border-color);
}
/* Custom Admonition boxes */
.admonition {
background-color: var(--admonition-background-color--info);
border: 0.2rem solid var(--admonition-border-color--info);
border-radius: 0.3rem;
border-left-width: 0.5rem;
padding: 1em 1.5em;
}
.admonition-title {
font-weight: bold;
font-size: 1.2em;
}
.admonition-icon::before {
content: '';
background-color: var(--admonition-border-color--info);
mask-position: center;
mask-repeat: no-repeat;
mask-size: contain;
mask-image: var(--admonition-icon--info);
-webkit-mask-position: center;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: contain;
-webkit-mask-image: var(--admonition-icon--info);
display: inline-block;
margin-right: 0.4em;
vertical-align: bottom;
height: 1.5em;
width: 1.5em;
}
.admonition.note {
background-color: var(--admonition-background-color--note);
border-color: var(--admonition-border-color--note);
}
.admonition-icon.note::before {
background-color: var(--admonition-border-color--note);
mask-image: var(--admonition-icon--note);
-webkit-mask-image: var(--admonition-icon--note);
}
.admonition.warning {
background-color: var(--admonition-background-color--warning);
border-color: var(--admonition-border-color--warning);
}
.admonition-icon.warning::before {
background-color: var(--admonition-border-color--warning);
mask-image: var(--admonition-icon--warning);
-webkit-mask-image: var(--admonition-icon--warning);
}
.admonition.tip {
background-color: var(--admonition-background-color--tip);
border-color: var(--admonition-border-color--tip);
}
.admonition-icon.tip::before {
background-color: var(--admonition-border-color--tip);
mask-image: var(--admonition-icon--tip);
-webkit-mask-image: var(--admonition-icon--tip);
}
.admonition.question {
background-color: var(--admonition-background-color--question);
border-color: var(--admonition-border-color--question);
}
.admonition-icon.question::before {
background-color: var(--admonition-border-color--question);
mask-image: var(--admonition-icon--question);
-webkit-mask-image: var(--admonition-icon--question);
}
.admonition-content > *:last-child {
margin-bottom: 0;
}
#search-results {
overflow: hidden;
word-wrap: anywhere;
white-space: break-spaces;
--pagefind-ui-background: var(--dm-sidebar-bg-color);
--pagefind-ui-primary: var(--dm-sidebar-link-text-color);
--pagefind-ui-border: var(--dm-sidebar-divider-bg-color);
}
#search-results li {
margin-bottom: 0;
gap: 0;
padding: 10px 0px;
}
.pagefind-modular-list-thumb {
display: none;
}
#search-input::placeholder {
--lm-input-placeholder-text-color: rgba(0, 0, 0, 0.8);
--dm-input-placeholder-text-color: rgba(255, 255, 255, 0.8);
}
#toc {
padding: 5px;
}
#toc ol {
padding: 5px;
margin: 0;
}
#toc li {
list-style-type: none;
margin-bottom: 0;
}
#toc a {
display: block;
height: auto;
}
#toc-side {
margin-top: 50px;
}
#toc-side span {
font-weight: 500;
font-size: 1.5rem;
margin-bottom: 1rem;
}
#toc-side ol:first-child {
border-left: 1px solid rgba(0, 0, 0, 0.15);
}
.dark-mode #toc-side ol:first-child {
border-left: 1px solid rgba(255, 255, 255, 0.15);
}
#toc-side a {
padding-left: 10px;
}

View file

@ -1,24 +1,24 @@
/**
* Copied from https://github.com/PrismJS/prism-themes
*
*
*
*
*
*
* prism-themes License:
*
*
* The MIT License (MIT)
*
*
* Copyright (c) 2015 PrismJS
*
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@ -26,27 +26,27 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*
*
*
*
*
*
*
* Nord Color Theme license:
*
*
* MIT License (MIT)
*
* Copyright (c) 2016-present Arctic Ice Studio <development@arcticicestudio.com> (https://www.arcticicestudio.com)
*
* Copyright (c) 2016-present Arctic Ice Studio <development@arcticicestudio.com> (https://www.arcticicestudio.com)
* Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de)
*
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@ -56,7 +56,6 @@
* SOFTWARE.
*/
/**
* Nord Theme Originally by Arctic Ice Studio
* https://nordtheme.com
@ -64,59 +63,59 @@
* Ported for PrismJS by Zane Hitchcoxc (@zwhitchcox) and Gabriel Ramos (@gabrieluizramos)
*/
code[class*="language-"],
pre[class*="language-"] {
color: #f8f8f2;
background: none;
font-family: "Fira Code", Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
code[class*='language-'],
pre[class*='language-'] {
color: #f8f8f2;
background: none;
font-family: 'Fira Code', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
border-radius: 0.3em;
pre[class*='language-'] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
border-radius: 0.3em;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #2E3440;
:not(pre) > code[class*='language-'],
pre[class*='language-'] {
background: #2e3440;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
:not(pre) > code[class*='language-'] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #636f88;
color: #636f88;
}
.token.punctuation {
color: #81A1C1;
color: #81a1c1;
}
.namespace {
opacity: .7;
opacity: 0.7;
}
.token.property,
@ -124,15 +123,15 @@ pre[class*="language-"] {
.token.constant,
.token.symbol,
.token.deleted {
color: #81A1C1;
color: #81a1c1;
}
.token.number {
color: #B48EAD;
color: #b48ead;
}
.token.boolean {
color: #81A1C1;
color: #81a1c1;
}
.token.selector,
@ -141,7 +140,7 @@ pre[class*="language-"] {
.token.char,
.token.builtin,
.token.inserted {
color: #A3BE8C;
color: #a3be8c;
}
.token.operator,
@ -150,34 +149,34 @@ pre[class*="language-"] {
.language-css .token.string,
.style .token.string,
.token.variable {
color: #81A1C1;
color: #81a1c1;
}
.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
color: #88C0D0;
color: #88c0d0;
}
.token.keyword {
color: #81A1C1;
color: #81a1c1;
}
.token.regex,
.token.important {
color: #EBCB8B;
color: #ebcb8b;
}
.token.important,
.token.bold {
font-weight: bold;
font-weight: bold;
}
.token.italic {
font-style: italic;
font-style: italic;
}
.token.entity {
cursor: help;
cursor: help;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,020 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View file

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View file

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View file

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View file

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View file

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View file

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
module.exports = {
environment: process.env.ELEVENTY_ENV
};
environment: process.env.ELEVENTY_ENV,
};

View file

@ -1,4 +1,4 @@
{
"commitHistoryMaster": "https://codeberg.org/Codeberg/Documentation/commits/branch/master",
"docsSourcesMaster": "https://codeberg.org/codeberg/documentation/src/branch/master"
"commitHistoryMaster": "https://codeberg.org/Codeberg/Documentation/commits",
"docsSourcesMaster": "https://codeberg.org/Codeberg/Documentation/src"
}

View file

@ -1,12 +1,12 @@
<div class="card">
<div class="card" data-pagefind-ignore="all">
<p>Hey there! 👋 Thank you for reading this article!</p>
<p>
Is there something missing or do you have an idea on how to improve the documentation?
Is there something missing, or do you have an idea on how to improve the documentation?
Do you want to write your own article?
</p>
<p>
You're invited to contribute to the Codeberg Documentation at <a href="https://codeberg.org/Codeberg/Documentation">its source code repository</a>,
for example by <a href="/collaborating/pull-requests-and-git-flow">Adding a pull request</a>
for example, by <a href="/collaborating/pull-requests-and-git-flow">adding a pull request</a>
or joining in on the discussion in <a href="https://codeberg.org/Codeberg/Documentation/issues">the issue tracker</a>.
</p>
<p>

View file

@ -1,159 +1,210 @@
<!DOCTYPE html>
<html lang="en" class="codeberg-design">
<head>
<title>{% if eleventyNavigation.title %}{{ eleventyNavigation.title }} | {% endif %}Codeberg Documentation</title>
<head>
<title>{% if eleventyNavigation.title %}{{ eleventyNavigation.title }} | {% endif %}Codeberg Documentation</title>
<meta charset="UTF-8">
{% if description %}<meta name="description" content="{{ description }}">{% endif %}
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
{% if env.environment == "testing" %}<meta name="robots" content="noindex">{% endif %}
<meta charset="UTF-8" />
{% if description %}
<meta name="description" content="{{ description }}" />
{% endif %}
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
{% if env.environment == "testing" %}
<meta name="robots" content="noindex" />
{% endif %}
<link rel="icon" href="https://design.codeberg.org/logo-kit/favicon.ico" type="image/x-icon"/>
<link rel="icon" href="https://design.codeberg.org/logo-kit/favicon.svg" type="image/svg+xml"/>
<link rel="apple-touch-icon" href="https://design.codeberg.org/logo-kit/apple-touch-icon.png"/>
<link rel="icon" href="https://design.codeberg.org/logo-kit/favicon.ico" type="image/x-icon" />
<link rel="icon" href="https://design.codeberg.org/logo-kit/favicon.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="https://design.codeberg.org/logo-kit/apple-touch-icon.png" />
<link rel="preload" type="text/css" href="/assets/css/codeberg-docs.css" as="style">
<link rel="preload" type="text/css" href="https://design.codeberg.org/design-kit/codeberg.css" as="style">
<link rel="preload" href="https://fonts.codeberg.org/dist/inter/Inter Web/inter.css" as="style">
<link rel="preload" href="https://fonts.codeberg.org/dist/fontawesome5/css/solid.min.css" as="style">
<link rel="preload" href="https://fonts.codeberg.org/dist/fontawesome5/css/fontawesome.min.css" as="style">
<link rel="preload" type="text/css" href="/assets/css/codeberg-docs.css" as="style" />
<link rel="preload" type="text/css" href="https://design.codeberg.org/design-kit/codeberg.css" as="style" />
<link rel="preload" href="https://fonts.codeberg.org/dist/inter/Inter%20Web/inter.css" as="style" />
<link rel="preload" href="https://fonts.codeberg.org/dist/fontawesome6/css/svg-with-js.css" as="style" />
<!-- Details and License: https://codeberg.org/Codeberg/Design/src/branch/master/design-kit -->
<link rel="stylesheet" href="https://design.codeberg.org/design-kit/codeberg.css"/>
<script defer src="https://design.codeberg.org/design-kit/codeberg.js"></script>
<!-- Details and License: https://codeberg.org/Codeberg/Design/src/design-kit -->
<link rel="stylesheet" href="https://design.codeberg.org/design-kit/codeberg.css" />
<script defer src="https://design.codeberg.org/design-kit/codeberg.js"></script>
<link rel="stylesheet" type="text/css" href="/assets/css/codeberg-docs.css" async>
<!-- Syntax highlighting -->
<link rel="stylesheet" type="text/css" href="/assets/css/prism-nord.css" async>
<link rel="stylesheet" type="text/css" href="/assets/css/codeberg-docs.css" />
<!-- Syntax highlighting -->
<link rel="stylesheet" type="text/css" href="/assets/css/prism-nord.css" />
<!-- Details and License: https://fonts.codeberg.org/fonts/inter -->
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/inter/Inter Web/inter.css" async>
<!-- Details and License: https://fonts.codeberg.org/fonts/inter -->
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/inter/Inter%20Web/inter.css" />
<!-- Details and License: https://fonts.codeberg.org/fonts/fontawesome5 -->
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/fontawesome5/css/solid.min.css" async>
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/fontawesome5/css/fontawesome.min.css" async>
<!-- Details and License: https://fonts.codeberg.org/fonts/fontawesome5 -->
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/fontawesome6/css/svg-with-js.css" />
{% if page.url != '/' %}
<script>
// @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt CC0
document.addEventListener("DOMContentLoaded", function() {
document.getElementsByClassName("active")[0].scrollIntoView({block: "center"})
});
// @license-end
</script>
{% endif %}
</head>
<link href="/pagefind/pagefind-modular-ui.css" rel="stylesheet" />
<script src="/pagefind/pagefind-modular-ui.js"></script>
<script>
window.addEventListener('DOMContentLoaded', (event) => {
const instance = new PagefindModularUI.Instance();
instance.add(
new PagefindModularUI.Input({
containerElement: '#search-input',
}),
);
instance.add(
new PagefindModularUI.ResultList({
containerElement: '#search-results',
}),
);
document.addEventListener(
'keydown',
(event) => {
if (event.key == '/') {
event.preventDefault();
document.getElementById('search-input').focus();
}
},
false,
);
});
</script>
<body data-set-preferred-mode-onload="true">
{% include 'license.njk' %}
<div class="page-wrapper with-sidebar with-navbar with-transitions" data-sidebar-type="overlayed-sm-and-down">
<div class="sidebar-overlay" onclick="halfmoon.toggleSidebar()"></div>
<nav class="navbar">
<div class="navbar-content">
<button class="btn btn-primary" type="button" onclick="halfmoon.toggleSidebar()">
<i class="fa fa-bars" aria-hidden="true"></i>
<span class="sr-only">Toggle sidebar</span>
</button>
</div>
<!-- Navbar brand -->
<a href="/" class="navbar-brand" title="Codeberg Docs">
<img src="https://design.codeberg.org/logo-kit/icon_inverted.svg" height="22px" width="22px" alt="Codeberg"> Docs
</a>
<!-- Navbar nav -->
<ul class="navbar-nav ml-auto d-none d-md-flex">
<li class="nav-item">
<a href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}" class="nav-link" target="_blank" rel="noreferrer">
{% fas_icon "history" %} &nbsp; View History
</a>
</li>
<li class="nav-item">
<a href="{{ urls.docsSourcesMaster }}/{{ page.inputPath }}" class="nav-link" target="_blank" rel="noreferrer">
{% fas_icon "code" %} &nbsp; View Source
</a>
</li>
{# <li class="nav-item">
<a href="javascript:;" onclick="document.body.classList.toggle('dark-mode')" class="nav-link">
{% fas_icon "moon" %} &nbsp; Toggle Dark Mode
</a>
</li> #}
</ul>
<!-- Navbar content (dropdown menu) -->
<div class="navbar-content d-md-none ml-auto">
<div class="dropdown with-arrow">
<button class="btn" data-toggle="dropdown" type="button" id="navbar-dropdown-toggle-btn-1">
Menu <i class="fa fa-angle-down" aria-hidden="true"></i>
</button>
<div class="dropdown-menu dropdown-menu-right w-200" aria-labelledby="navbar-dropdown-toggle-btn-1">
<a href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}" class="dropdown-item" target="_blank" rel="noreferrer">
{% fas_icon "history" %} &nbsp; View History
</a>
<a href="{{ urls.docsSourcesMaster }}/{{ page.inputPath }}" class="dropdown-item" target="_blank" rel="noreferrer">
{% fas_icon "code" %} &nbsp; View Source
</a>
{# <a href="javascript:;" onclick="document.body.classList.toggle('dark-mode')" class="dropdown-item">
{% fas_icon "moon" %} &nbsp; Toggle Dark Mode
</a> #}
<div class="dropdown-divider mt-5"></div>
</div>
</div>
</div>
</nav>
{% if page.url != '/' %}
<script>
// @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt CC0
document.addEventListener('DOMContentLoaded', function () {
document.getElementsByClassName('active')[0].scrollIntoView({ block: 'center' });
});
// @license-end
</script>
{% endif %}
</head>
<div class="sidebar">
<div class="sidebar-menu">
{# <!-- Sidebar content with the search box -->
<div class="sidebar-content">
<input type="text" class="form-control" placeholder="Filter Docs" id="search-input">
<div class="mt-10 font-size-12">
Press <kbd>/</kbd> to focus
</div>
</div> #}
{% for entry in collections.all | eleventyNavigation %}
{% set active = entry.url == page.url or entry.key == eleventyNavigation.parent %}
{% if (not entry.draft) or active %}
<h5 class="sidebar-title {% if active %} active{% endif %}">
<a href="{{ entry.url }}" id="{{ entry.key }}">{% fas_icon entry.icon | default("caret-right") %} {{ entry.title }}</a>
</h5>
<div class="sidebar-divider"></div>
{% if entry.children.length > 0 %}
{% for child in entry.children %}
{% set child_active = child.url == page.url %}
{% if child_active or not child.draft %}
<a href="{{ child.url }}" class="sidebar-link{% if child_active %} active{% endif %}" id="{{ child.key }}">
<span class="name">{{ child.title }}</span>
</a>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
<br>
{%- endfor %}
</div>
</div>
<div class="content-wrapper">
<div class="container-lg">
<div class="content">
{% if eleventyNavigation.title %}
<h1 class="content-title font-size-24">{{ eleventyNavigation.title }}</h1>
{% endif %}
{% if eleventyNavigation.draft %}
<strong>Please note that this article is still a draft and might not have any contents yet.</strong>
{% endif %}
{{ content | safe }}
<hr class="mb-20">
{% if page.url != '/' %}
{% include 'contribution_invitation.njk' %}
{% endif %}
<div class="font-size-16 text-right">
<p>&copy; Codeberg Docs Contributors. See <a href="#modal-1" role="button">LICENSE</a></p>
</div>
</div>
</div>
</div>
<body data-set-preferred-mode-onload="true">
{% include 'license.njk' %}
<div class="with-navbar with-sidebar with-transitions page-wrapper" data-sidebar-type="overlayed-sm-and-down">
<div class="sidebar-overlay" onclick="halfmoon.toggleSidebar()"></div>
<nav class="navbar">
<div class="navbar-content">
<button class="btn btn-primary" type="button" onclick="halfmoon.toggleSidebar()">
{% fas_icon "bars" %}
<span class="sr-only">Toggle sidebar</span>
</button>
</div>
</body>
<!-- Navbar brand -->
<a href="/" class="navbar-brand" title="Codeberg Docs">
<img src="https://design.codeberg.org/logo-kit/icon_inverted.svg" height="22" width="22" alt="Codeberg" />
Docs
</a>
<!-- Navbar nav -->
<ul class="d-md-flex ml-auto d-none navbar-nav">
<li class="nav-item">
<a
href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}"
class="nav-link"
target="_blank"
rel="noreferrer"
>
{% fas_icon "history" %} &nbsp; View History
</a>
</li>
<li class="nav-item">
<a
href="{{ urls.docsSourcesMaster }}/{{ page.inputPath }}"
class="nav-link"
target="_blank"
rel="noreferrer"
>
{% fas_icon "code" %} &nbsp; View Source
</a>
</li>
{#
<li class="nav-item">
<a href="javascript:;" onclick="document.body.classList.toggle('dark-mode')" class="nav-link">
{% fas_icon "moon" %} &nbsp; Toggle Dark Mode
</a>
</li>
#}
</ul>
<!-- Navbar content (dropdown menu) -->
<div class="ml-auto d-md-none navbar-content">
<div class="with-arrow dropdown">
<button class="btn" data-toggle="dropdown" type="button" id="navbar-dropdown-toggle-btn-1">
Menu {% fas_icon "angle-down" %}
</button>
<div class="dropdown-menu-right w-200 dropdown-menu" aria-labelledby="navbar-dropdown-toggle-btn-1">
<a
href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}"
class="dropdown-item"
target="_blank"
rel="noreferrer"
>
{% fas_icon "history" %} &nbsp; View History
</a>
<a
href="{{ urls.docsSourcesMaster }}/{{ page.inputPath }}"
class="dropdown-item"
target="_blank"
rel="noreferrer"
>
{% fas_icon "code" %} &nbsp; View Source
</a>
{#
<a href="javascript:;" onclick="document.body.classList.toggle('dark-mode')" class="dropdown-item">
{% fas_icon "moon" %} &nbsp; Toggle Dark Mode
</a>
#}
<div class="mt-5 dropdown-divider"></div>
</div>
</div>
</div>
</nav>
<div class="sidebar">
<div class="sidebar-menu">
<!-- Sidebar content with the search box -->
<div class="sidebar-content">
<input type="text" class="form-control" placeholder="Filter Docs" id="search-input" />
<div class="mt-10 font-size-12">Press <kbd>/</kbd> to focus</div>
<div id="search-results"></div>
</div>
{% for entry in collections.all | eleventyNavigation %} {% set active = entry.url == page.url or entry.key ==
eleventyNavigation.parent %} {% if (not entry.draft) or active %}
<h5 class="sidebar-title {% if active %} active{% endif %}">
<a href="{{ entry.url }}" id="{{ entry.key }}"
>{% fas_icon entry.icon | default("caret-right") %} {{ entry.title }}</a
>
</h5>
<div class="sidebar-divider"></div>
{% if entry.children.length > 0 %} {% for child in entry.children %} {% set child_active = child.url ==
page.url %} {% if child_active or not child.draft %}
<a href="{{ child.url }}" class="sidebar-link{% if child_active %} active{% endif %}" id="{{ child.key }}">
<span class="name">{{ child.title }}</span>
</a>
{% endif %} {% endfor %} {% endif %} {% endif %}
<br />
{%- endfor %}
</div>
</div>
<div class="content-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-xl-8 content" data-pagefind-body>
{% if eleventyNavigation.title %}
<h1 class="content-title font-size-24">{{ eleventyNavigation.title }}</h1>
{% endif %} {% if eleventyNavigation.draft %}
<strong data-pagefind-ignore="all"
>Please note that this article is still a draft and might not have any contents yet.</strong
>
{% endif %} {% include 'toc-collapse.njk' %}
{{ content | safe }}
<hr class="mb-20" />
{% if page.url != '/' %} {% include 'contribution_invitation.njk' %} {% endif %}
<div class="text-right font-size-16" data-pagefind-ignore="all">
<p>&copy; Codeberg Docs Contributors. See <a href="#modal-1" role="button">LICENSE</a></p>
</div>
</div>
{% include 'toc-side.njk' %}
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -1,25 +1,36 @@
<div class="modal" id="modal-1" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<h5 class="modal-title">LICENSE</h5>
<p>
This Website by <a href="{{ urls.docsSourcesMaster }}/CONTRIBUTORS.md">The Codeberg Documentation Contributors</a>
is licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC-BY-SA 4.0</a>.
</p>
<p>
It bundles third-party font software licensed under a different license.
Please look at <a href="{{ urls.docsSourcesMaster }}/LICENSE.md">the LICENSE file</a> for details.
</p>
<p>
Changes to the original versions of the article as well as its individual authors can be looked up in
<a href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}" target="_blank" rel="noreferrer">this article's commit history</a>
</p>
<p>
Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.
</p>
<div class="text-right mt-20">
<a href="#" class="btn mr-5" role="button">Close</a>
</div>
</div>
<div class="modal-dialog" role="document">
<div class="modal-content">
<h5 class="modal-title">LICENSE</h5>
<p>
The
<span
xmlns:dct="http://purl.org/dc/terms/"
href="http://purl.org/dc/dcmitype/Text"
property="dct:title"
rel="dct:type"
>
Codeberg Documentation website</span
>
is licensed under a
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"
>Creative Commons Attribution-ShareAlike 4.0 International License</a
>.
</p>
<p>
It bundles third-party font software licensed under a different license. Please look at
<a href="{{ urls.docsSourcesMaster }}/LICENSE.md">the LICENSE file</a> for details.
</p>
<p>
Changes to the original versions of the article as well as its individual authors can be looked up in
<a href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}" target="_blank" rel="noreferrer"
>this article's commit history</a
>
</p>
<p>Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.</p>
<div class="text-right mt-20">
<a href="#" class="mr-5 btn" role="button">Close</a>
</div>
</div>
</div>
</div>
</div>

View file

@ -1,10 +1,10 @@
<!doctype html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url='{{ redirect.to }}'" />
</head>
<body>
Redirecting to <a href="{{ redirect.to }}">{{ redirect.to }}</a>
</body>
<head>
<meta charset="utf-8" />
<meta http-equiv="refresh" content="0; url='{{ redirect.to }}'" />
</head>
<body>
Redirecting to <a href="{{ redirect.to }}">{{ redirect.to }}</a>
</body>
</html>

View file

@ -0,0 +1,12 @@
{% if content | toc %}
<nav class="mb-3 d-xl-none" data-pagefind-ignore="all">
<details class="collapse-panel">
<summary class="d-block d-flex justify-content-between align-items-center py-2 w-full collapse-header">
<span class="antialiased">On this page</span>
</summary>
<div id="toc" class="collapse-content">
{{ content | toc | safe }}
</div>
</details>
</nav>
{% endif %}

View file

@ -0,0 +1,10 @@
{% if content | toc %}
<nav class="col-xl-3 position-relative d-none d-xl-block" id="toc-side" data-pagefind-ignore="all">
<div class="position-fixed mr-20">
<span>On this page</span>
<div id="toc" class="overflow-y-auto" style="max-height: 43.75rem;">
{{ content | toc | safe }}
</div>
</div>
</nav>
{% endif %}

View file

@ -5,11 +5,16 @@ eleventyNavigation:
parent: AdvancedUsage
---
Access Tokens are special tokens that are used to authenticate to Codeberg through the [API](https://codeberg.org/api/swagger). They can be used to give applications access to your Codeberg account without sharing your password.
Access Tokens are special tokens that are used to authenticate to Codeberg through the [API](https://codeberg.org/api/swagger). They can be used to give applications access to your Codeberg account without sharing your password.
> This guide explains how to generate an access token from the website. However, you can also generate access tokens from the API. Read more at [Gitea's documentation](https://docs.gitea.io/en-us/api-usage/#generating-and-listing-api-tokens).
{% admonition "info" %}
This guide explains how to generate an access token from the website. However, you can also generate access tokens from the API. Read more at [Forgejo's documentation](https://forgejo.org/docs/v1.19/user/api-usage/#generating-and-listing-api-tokens).
{% endadmonition %}
## Generating an Access Token
Access tokens grant full access to your account. You must handle them securely.
<picture>
@ -20,7 +25,7 @@ Access tokens grant full access to your account. You must handle them securely.
1. In a web browser, go to Codeberg and click on the `Profiles and Settings` button on the top right. The button will be your profile picture.
2. Click on [`Settings`](https://codeberg.org/user/settings) in the dropdown.
3. Navigate to the [`Applications`](https://codeberg.org/user/settings/applications) settings tab.
4. Under `Manage Access Tokens | Generate New Token`, enter a name to identify your token in the `Token Name` field.
4. Under `Manage Access Tokens | Generate New Token`, enter a name to identify your token in the `Token Name` field.
5. Click the generate token button.
<picture>
@ -30,9 +35,14 @@ Access tokens grant full access to your account. You must handle them securely.
Your access token has now been generated! Copy your token and store it securely.
> Be sure to generate new access tokens for each app you use, and delete them once they are not in use.
{% admonition "tip" %}
Be sure to generate new access tokens for each app you use, and delete them once they are not in use.
{% endadmonition %}
## Deleting an Access Token
Once you are done using an access token, you should delete it. Deleting an access token revokes access to your account for apps using the token.
To delete an access token, click the red `Delete` button next to the access token you want to delete, then click `Yes` in the popup. Your access token is now deleted.
To delete an access token, click the red `Delete` button next to the access token you want to delete, then click `Yes` in the popup. Your access token is now deleted.

View file

@ -2,12 +2,33 @@
eleventyNavigation:
key: AdvancedUsage
title: Advanced Usage
icon: terminal
icon: terminal
order: 65
---
These documentation pages contain tips and tricks for diving more deeply into
the more advanced features of Codeberg.
See also the [documentation of Gitea](https://docs.gitea.io), the software which
See also the [documentation of Forgejo](https://forgejo.org/docs/), the software which
Codeberg is based on.
{% assign navPages = collections.all | eleventyNavigation %}
{%- for entry in navPages %}
{% if entry.url == page.url %}
{%- if entry.children.length -%}
<table class="table">
<thead>
<th> Find out more in this section: </th>
</thead>
<tbody>
{%- for child in entry.children %}
<tr><td>
<a href="{{ child.url }}">{{ child.title }}</a>
</tr></td>
{%- endfor %}
</tbody>
</table>
{% endif %}
{% endif %}
{%- endfor %}

View file

@ -15,27 +15,39 @@ This works well for moving files, but when you want to migrate metadata like iss
<img src="/assets/images/advanced/migrating-repos/new-migration.png">
</picture>
On Codeberg, you can click on the plus symbol on the top right, and then select [`New Migration`](https://codeberg.org/repo/migrate) on the dropdown to access the migration tool.
On Codeberg, you can click on the plus symbol on the top right, and then select [**New Migration**](https://codeberg.org/repo/migrate) on the dropdown to access the migration tool.
## Selecting your host
Once you're at the [`New Migration`](https://codeberg.org/repo/migrate) page, you can select the Git host you are migrating from. If it's not on the list, you will have to select the Git option. This will not migrate metadata.
Here we document instructions for migrating specific to each service. Once you've followed through, move on to [`Starting Migration`](#starting-migration).
Once you're at the [**New Migration**](https://codeberg.org/repo/migrate) page, you can select the Git host you are migrating from. For the following services, the migration tool can not only migrate your repository data, but also metadata like issues, labels, wiki, releases, milestones, etc.
- [GitHub](#migrating-from-services)
- [GitLab](#migrating-from-services)
- [Gitea / Forgejo](#migrating-from-services)
- [Gogs](#migrating-from-services)
- [OneDev](#migrating-from-services)
- [GitBucket](#migrating-from-services)
- [Codebase](#migrating-from-services)
If you cannot find your service, you can select the [Git option](#migrating-from-git). This will not migrate mentioned metadata.
Here we document instructions for migrating specific to each service. Once you've followed through, move on to [Starting Migration](#starting-migration).
### Migrating from Git
<picture>
<source srcset="/assets/images/advanced/migrating-repos/git-migration.webp" type="image/webp">
<img src="/assets/images/advanced/migrating-repos/git-migration.png">
</picture>
Here's an explanation of some fields on the [Git migration page](https://codeberg.org/repo/migrate?service_type=1):
- **Migrate / Clone From URL**: This is the URL to your repository. For example: `https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git`.
- **Username and Password**: Optionally, if authentication is required to access the repo, you can enter a username and password here.
### Migrating from Gitea
To migrate a repo with its metadata from a Gitea instance, you will first need to [create an access token](/advanced/access-token/) on the Gitea instance with your repository. Don't forget to delete the access token when you are finished.
### Migrating from Services
> You can also use this method to migrate your repos away from Codeberg to another Gitea instance.
To migrate a repo with its metadata from a different service, you will first need to [create an access token](/advanced/access-token/) on the service with your repository. _Please check your services documentation, on how to get the access token._ Examples can be found for [GitLab](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html) and [GitHub](https://github.com/settings/tokens). Don't forget to delete the access token once you are finished.
<picture>
<source srcset="/assets/images/advanced/migrating-repos/gitea-migration.webp" type="image/webp">
@ -43,9 +55,20 @@ To migrate a repo with its metadata from a Gitea instance, you will first need t
</picture>
Here's an explanation of some fields on the [Gitea migration page](https://codeberg.org/repo/migrate?service_type=3):
- **Migrate / Clone From URL**: This is the URL to your repository. For example: `https://gitea.com/gitea/tea`.
- **Access Token**: You will paste the access token generated here. An access token is required to migrate metadata.
- **Migrate / Clone From URL**: This is the URL to your repository. For example: `https://code.forgejo.org/forgejo/end-to-end`.
- **Access Token**: You will paste the access token generated here. An access token is required to migrate metadata or non-public repositories.
- **Migration Items**: Here you can select the metadata you want migrated.
- **Owner**: The new owner of the migrated repository.
- **Repository Name**: The name of the migrated repository.
- **Visibility**: Select if the migrated repository should be private or public.
- **Description**: Give your migrated repository a description.
{% admonition "tip" %}
You can also use this method to migrate your repos away from Codeberg to another Gitea or Forgejo instance.
{% endadmonition %}
## Starting Migration
@ -54,4 +77,12 @@ Migration might take a while, depending on how large the repo is.
When the repo code appears, migration is complete!
> **Troubleshooting**: The migration process may time out after a while. If this happens, or if you have any other issues with migration, feel free to open an issue in the [Community Issue Tracker](https://codeberg.org/Codeberg/Community/issues).
## Inaccessible repo after failed migration
Sometimes a migration might fail for no obvious reasons like timeouts or invalid data in the source repo, leaving you with an inaccessible repo on Codeberg.
When you try to navigate to your repo on Codeberg, e.g. `https://codeberg.org/knut/example/`, you are welcomed with a `500 Internal Server Error`.
In this case it might be worthwhile to retry the migration.
First you need to remove the inaccessible repo. To do so, go to the settings page of your repo by appending `/settings` to the URI, e.g. `https://codeberg.org/knut/example/settings`. You can delete the repo from here and start over with a new migration.
If this doesn't work out, feel free to open an issue in the [Community Issue Tracker](https://codeberg.org/Codeberg/Community/issues).

View file

@ -0,0 +1,87 @@
---
eleventyNavigation:
key: UsingWebhooks
title: Using Webhooks
parent: AdvancedUsage
---
Webhooks can help you to automate working with your repository. For example it can trigger an defined action if someone pushes to your repository or opens a new issue by using a target web URL.
Detailed documentation on how to use webhooks can be found in the [forgejo Documentation](https://forgejo.org/docs/latest/user/webhooks/).
The following paragraphs will give concrete examples on how to use webhooks with some services.
Currently, Codeberg offers implementation templates for the following services:
- Forgejo
- Slack
- Discord
- DingTalk
- Telegram
- Microsoft Teams
- Feishu
- Matrix
- WeCom
- Packagist
Every service that offers webhook functionality can be added using the **Forgejo** template using the **webhook URL** provided by the service.
## Using Read the Docs
To better illustrate how webhooks can be used, we prepared a tutorial for you that works with \*[Read the Docs](https://readthedocs.io). In this example, we will show you how to build your documentation every time that a new commit is pushed to your Codeberg repository.
<picture>
<source srcset="/assets/images/advanced/using-webhooks/using-webhooks-readthedocs-2.webp" type="image/webp">
<img src="/assets/images/advanced/using-webhooks/using-webhooks-readthedocs-2.jpg" alt="Open the admin settings on ReadTheDocs">
</picture>
1. Login into your _Read the Docs_ account and **select the project** you want to add a webhook to.
2. Click on the **Admin** button.
3. In the left side menu, click on **Integrations**.
<picture>
<source srcset="/assets/images/advanced/using-webhooks/using-webhooks-readthedocs-3.webp" type="image/webp">
<img src="/assets/images/advanced/using-webhooks/using-webhooks-readthedocs-3.jpg" alt="Open the admin settings on ReadTheDocs">
</picture>
4. Click on the button **Add Integration**.
5. Select **GitHub incoming webhook**. (GitHub, GitLab or BitBucket incoming webhooks, all work equally well and generate the needed webhook URL)
<picture>
<source srcset="/assets/images/advanced/using-webhooks/using-webhooks-readthedocs-4.webp" type="image/webp">
<img src="/assets/images/advanced/using-webhooks/using-webhooks-readthedocs-4.jpg" alt="Open the admin settings on ReadTheDocs">
</picture>
6. A **webhook address** will be displayed to you. Write it down and keep it safe!
Now go to your Codeberg repository.
1. Go to your repository and click on **Settings**.
2. In the top menu, click on **Webhooks**.
<picture>
<source srcset="/assets/images/advanced/using-webhooks/using-webhooks-codeberg-1.webp" type="image/webp">
<img src="/assets/images/advanced/using-webhooks/using-webhooks-codeberg-1.jpg" alt="Open the admin settings on ReadTheDocs">
</picture>
3. Click on **Add Webhook** and choose **Forgejo**.
4. Paste the **webhook address** provided by _Read the Docs_ into the **Target URL** field.
5. You can select when the webhook should be triggered using the **Trigger On** setting. For illustrative purposes, we will select **Push Events**; this will trigger the webhook every time that someone pushes to your repository.
<picture>
<source srcset="/assets/images/advanced/using-webhooks/using-webhooks-codeberg.webp" type="image/webp">
<img src="/assets/images/advanced/using-webhooks/using-webhooks-codeberg.jpg" alt="Open the admin settings on ReadTheDocs">
</picture>
In this example, we do not need to use any other fields to make the webhook work. For your personal reference, here are some explanations as to what these other fields do:
- **HTTP Method**: Should be "POST" by default, so that the data is sent within the HTTP header
- **POST Content Type**: specifies how the data should be sent in the header. "application/json" and "application/x-www-form-urlencoded" both work with _Read the Docs_
- **Secret**: For authentication reasons, you can send a secret. For ReadTheDocs leave it empty.
- **Branch filter**: You can define, that the webhook is only triggered on certain branches in your repository
- **Authorization Header**: Some services need an authorization to call the webhook
Once you're done, you can click on **Add Webhook** to add the webhook to your repository.
Now, whenever something is pushed to your repository, the webhook will trigger and your _Read the Docs_ documentation will be rebuilt.
You can confirm that everything is working as it should by selecting the webhook that you just created and clicking on the button **Test Delivery**, which will manually trigger your webhook.

310
content/ci/actions.md Normal file
View file

@ -0,0 +1,310 @@
---
eleventyNavigation:
key: UsingForgejoActions
title: Using Forgejo Actions (Self-hosted)
parent: CI
---
Actions is a continuous integration and continuous delivery (CI/CD) feature that allows you to automate your build, test and deployment pipelines in Forgejo, the software Codeberg uses. For more information, please read [Forgejo's Documentation](https://forgejo.org/docs/latest/user/actions/).
Due to outstanding security issues and bus factor (we need more maintainers for our CI service to get it running),
we are currently not yet providing hosted Actions.
If you need Codeberg to host your CI, please use Woodpecker CI instead.
But you can already connect your own Runner to Codeberg.
CI jobs will run on your machine, and the result will be displayed in Codeberg.
This guide will walk you through setting up your own [Forgejo Actions](https://forgejo.org/2023-02-27-forgejo-actions/) Runner to use for CI jobs.
## Obtaining a registration token
{% admonition "info" "Make sure to enable actions" %}
Repository Actions are disabled by default and will require you to enable them in the "Advanced Settings" section of the settings page.
{% endadmonition %}
Before deploying the Runner, you need to obtain a registration token from Codeberg. Registration tokens are used by the Runner and Codeberg to share secrets and configurations.
You can add Runners to your account, organization, or repository. Choosing where you obtain the registration token will determine where your Runner will accept workflows from.
1. Go to the account/organization/repository settings page.
2. Click on Actions.
3. Click on Runners.
4. Click on Create new Runner.
5. Copy the registration token.
<picture>
<source srcset="/assets/images/ci/actions/create-new-runner.webp" type="image/webp">
<img src="/assets/images/ci/actions/create-new-runner.png" alt="Create new Runner">
</picture>
## Installing Forgejo Runner
Forgejo Runner is released in both binary and container image (OCI) forms:
- Download the binary to run on your machine:
```bash
$ wget -O forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-3.3.0-linux-amd64
$ chmod +x forgejo-runner
```
Make sure to replace `amd64` with `arm64` if your host machine is on ARM.
- Or download the container image and run it using Docker:
```bash
$ docker run --rm code.forgejo.org/forgejo/runner:3.3.0 forgejo-runner --version
forgejo-runner version v3.3.0
```
## Preparing configuration files
Before you deploy the Runner, you need to generate its configuration files and modify as suited.
You can generate them to your current directory by either running the binary on host or in a Docker container.
Make sure to replace `{TOKEN}` with the registration token you copied, and `{NAME}` with any identifier to monitor it on Codeberg.
### Binary
```bash
$ ./forgejo-runner register --no-interactive --token {TOKEN} --name {NAME} --instance https://codeberg.org
INFO Registering runner, arch=amd64, os=linux, version=3.3.0.
DEBUG Successfully pinged the Forgejo instance server
INFO Runner registered successfully.
$ ./forgejo-runner generate-config > config.yml
```
### Docker
```bash
$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v $PWD:/data --rm code.forgejo.org/forgejo/runner:3.3.0 forgejo-runner register --no-interactive --token {TOKEN} --name {NAME} --instance https://codeberg.org
Status: Downloaded newer image for code.forgejo.org/forgejo/runner:3.3.0
level=info msg="Registering runner, arch=arm64, os=linux, version=v3.3.0."
level=warning msg="Runner in user-mode."
level=debug msg="Successfully pinged the Forgejo instance server"
level=info msg="Runner registered successfully."
$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v $PWD:/data --rm code.forgejo.org/forgejo/runner:3.3.0 forgejo-runner generate-config > config.yml
```
---
These commands will generate two files in your current directory:
- `.runner` which is the configuration file produced when registering the runner.
- `config.yml` which is the main configuration file with defaults in place you can modify to suit your needs and environment.
## Deployment Methods
Depending on your setup and your security needs, there is a wide variety of options for deploying the Runner.
### Running on Docker
This method uses the host Docker server by mounting the socket.
{% admonition "info" "Podman compatibility" %}
Podman can work by executing:
```bash
$ podman system service -t 0 &
$ DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/podman/podman.sock ./forgejo-runner daemon
```
{% endadmonition %}
Since this method requires access to the Docker socket, you will need to get the GID of the Docker group (usually `docker`) in your host machine by running:
```bash
$ id | grep -Po '\d+\(docker\)'
$ 996(docker)
```
Make sure to replace `996` with the Docker group GID of the host in the following command:
```bash
$ docker run -d -v /var/run/docker.sock:/var/run/docker.sock --user 1000:996 -v $PWD:/data --rm code.forgejo.org/forgejo/runner:3.3.0 forgejo-runner --config config.yml daemon
22eae46a021294a213e7f733203f7551250b67367c7507b53b5fd427f0f82d2e
```
Now your CI Runner should be running in a new container.
#### Running on Docker in Docker
Using Docker Compose, we can configure the Runner container to execute workflows inside another layer of containers (Docker-in-Docker).
Here is an example snippet of how it can be configured:
```yaml
version: '3'
services:
docker:
image: docker:dind
privileged: true
volumes:
- certs:/certs
runner:
image: code.forgejo.org/forgejo/runner:3.3.0
environment:
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: /certs/client
volumes:
- /opt/forgejo-runner:/data
- certs:/certs
command: 'forgejo-runner --config config.yml daemon'
volumes:
certs:
```
Make sure to replace `/opt/forgejo-runner` with the directory path of your configuration files.
### Running on Kubernetes
{% admonition "warning" "Warning" %}
Docker in Docker (dind) requires elevated privileges on Kubernetes.
The current way to achieve this is to set the pod `SecurityContext` to `privileged`.
Keep in mind that this is a potential security issue that can allow a malicious application to break out of the container context.
{% endadmonition %}
Here is an example snippet of how it can be configured:
```yaml
apiVersion: v1
stringData:
token: your_registration_token
kind: Secret
metadata:
name: runner-secret
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: forgejo-runner
name: forgejo-runner
spec:
replicas: 2
selector:
matchLabels:
app: forgejo-runner
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: forgejo-runner
spec:
restartPolicy: Always
volumes:
- name: docker-certs
emptyDir: {}
- name: runner-data
emptyDir: {}
initContainers:
- name: runner-config-generation
image: code.forgejo.org/forgejo/runner:3.3.0
command:
['forgejo-runner create-runner-file --instance $FORGEJO_INSTANCE_URL --secret $RUNNER_SECRET --connect']
env:
- name: RUNNER_SECRET
valueFrom:
secretKeyRef:
name: runner-secret
key: token
- name: FORGEJO_INSTANCE_URL
value: https://codeberg.org
volumeMounts:
- name: runner-data
mountPath: /data
containers:
- name: runner
image: code.forgejo.org/forgejo/runner:3.3.0
command:
[
'sh',
'-c',
"while ! nc -z localhost 2376 </dev/null; do echo 'waiting for docker daemon...'; sleep 5; done; forgejo-runner daemon",
]
env:
- name: DOCKER_HOST
value: tcp://localhost:2376
- name: DOCKER_CERT_PATH
value: /certs/client
- name: DOCKER_TLS_VERIFY
value: '1'
volumeMounts:
- name: docker-certs
mountPath: /certs
- name: runner-data
mountPath: /data
- name: daemon
image: docker:dind
env:
- name: DOCKER_TLS_CERTDIR
value: /certs
securityContext:
privileged: true
volumeMounts:
- name: docker-certs
mountPath: /certs
```
Make sure to replace the value of `token` with your registration token.
### Running on host machine
{% admonition "warning" "Warning" %}
There is no isolation at all and a single job can permanently destroy the host.
{% endadmonition %}
```bash
$ ./forgejo-runner --config config.yml daemon
INFO[0000-00-00T00:00:00Z] Starting runner daemon
```
Now your CI Runner should running on your host machine.
## Testing workflows
To test your CI runner setup, you can use the following demo workflow:
```yaml
on: [push]
jobs:
test:
runs-on: docker
steps:
- run: echo All Good
```
The runner seeks action recipes from `.forgejo/workflows`, so make sure your file is in the required path.
<picture>
<source srcset="/assets/images/ci/actions/demo-workflow.webp" type="image/webp">
<img src="/assets/images/ci/actions/demo-workflow.png" alt="Demo workflow running successfully">
</picture>
## References
- [Initial announcement blog post by Forgejo](https://forgejo.org/2023-02-27-forgejo-actions/)
- [Admin docs for Forgejo](https://forgejo.org/docs/latest/admin/actions/)
- [User docs for Forgejo](https://forgejo.org/docs/latest/user/actions/)
- [Codeberg Issue tracking the Actions Progress](https://codeberg.org/Codeberg/Community/issues/843)
- [Setting up a Self-Hosted Forgejo Actions Runner with Docker Compose](https://linus.dev/posts/setting-up-a-self-hosted-forgejo-actions-runner-with-docker-compose/)

55
content/ci/index.md Normal file
View file

@ -0,0 +1,55 @@
---
eleventyNavigation:
key: CI
title: Working with Codeberg's CI
icon: arrows-spin
order: 65
---
Every piece of code should be tested regularly. Ideally developers already implement unit-tests to test the functionality of code sections.
Some projects even implement a suite of integration tests, testing whether the code in different parts of the software works as a whole and (still) provides the functionality the software promises to deliver.
Running these tests regularly (or continuously) is the job of a Continuous Integration (CI) solution.
The results of the tests are displayed to the project members and maintainers, enabling them to identify problems and react if errors occur.
## Using Codeberg's instance of Woodpecker CI
Codeberg provides a [Woodpecker CI](https://woodpecker-ci.org) instance at [ci.codeberg.org](https://ci.codeberg.org/).
Onboarding requires a few manual steps, as to prevent the abuse of Codeberg's limited resources.
You will need to request access [by filling out this form](https://codeberg.org/Codeberg-e.V./requests/issues/new?template=ISSUE_TEMPLATE%2fWoodpecker-CI.yaml).
After submitting, a Codeberg volunteer will review your request and grant you access if your use case is appropriate.
In order to ensure a fast approval,
please take a minute to read about [the criteria that your project has to adhere to](https://codeberg.org/Codeberg-e.V./requests#woodpecker-ci).
If your request gets approved, you will be able to login to [ci.codeberg.org](https://ci.codeberg.org) via your Codeberg account.
To start builds for your repository, you must enable them in Woodpecker specifically using https://ci.codeberg.org/repos/add. Repositories owned by your codeberg account should automatically be available as options to select.
### Caveats
For the usage of our Woodpecker instance, keep the following in mind:
- **CI access is provided as-is and might break at any time** and for an undefined period of time, due to server issues, for testing and maintenance purpose or human error.
- **Resource usage must be reasonable** for the intended use-case. CI requires substantial computing resources (cloning the repo and pulling the image, installing required tools, building and throwing everything away). Please try to ensure a good balance between code quality/automation and resource usage. Therefore, please consider twice how to create a good balance between ensuring code quality for your project and resource usage therefore.
- The CI service requires manual onboarding and Woodpecker has limited Role-Based Access Control (RBAC) capabilities, which will be a problem for projects with a team-based permission structure or many individual collaborators.
Issues and general feedback should be reported in our
[dedicated Codeberg CI feedback repository](https://codeberg.org/Codeberg-CI/feedback).
### Usage
If you are curious about Woodpecker or are already using a third-party Woodpecker instance,
please consult [Woodpecker's documentation](https://woodpecker-ci.org/docs/intro). If you wish to see examples of integrating Woodpecker-CI with codeberg, please consult the [Codeberg-CI examples repository.](https://codeberg.org/Codeberg-CI/examples)
### Custom Woodpecker Instances
You can alternatively host your own Woodpecker instance and link it to Codeberg.
This will give you a lot more freedom and capabilities with the downside of having to utilize your own hardware.
Please consult Woodpecker's
[Forgejo integration documentation](https://woodpecker-ci.org/docs/administration/forges/gitea)
for more information.
## Using Forgejo Actions
Forgejo, the software Codeberg is built on, offers a CI/CD feature called Actions.
Further information such as how to run it is available in [Using Forgejo Actions (Self-hosted) page](./actions).

View file

@ -0,0 +1,222 @@
---
eleventyNavigation:
key: DocsAsCode
title: 'Example: Docs as Code with Sphinx'
parent: CodebergPages
order: 100
---
Docs-as-code (also known as "Documentation as Code") refers to the concept of treating documentation as a codebase, i.e. integrating the documentation process in the toolchains and workflows used by software development teams.
Docs-as-code involves using version control systems such as Git for your documentation projects and authoring your content with plain text markup languages such as Markdown or reStructuredText, among other things.
To find out more about docs-as-code, head over to [its website](https://docs-as-co.de/).
Whether you are a single technical communicator or a member of a larger documentation team, you can perfectly apply the docs-as-code approach to your documentation projects.
This guide will show you how to implement docs-as-code on a Linux machine using [Sphinx](https://www.sphinx-doc.org/en/master/) as a documentation generator, [Git](https://ka2in.codeberg.page/gitinminutes.html) as a version control system and [Codeberg Pages](https://docs.codeberg.org/codeberg-pages/) as static site hosting.
{% admonition "info" "Note" %}
Despite the fact that we are using Sphinx in this particular case, you can easily apply these instructions to any static site generator (SSG) such as [Eleventy](https://www.11ty.dev/) or [Hugo](https://gohugo.io/).
{% endadmonition %}
## Building documentation with Sphinx
Initially developed to generate Python documentation, Sphinx is now widely used by technical communicators and software developers to create technical and software documentation.
Sphinx uses [reStructuredText](https://docutils.sourceforge.io/docs/user/rst/quickref.html) as a markup language to generate documentation content. Among further advantages, Sphinx allows you to produce your documentation in different formats, including HTML, LaTeX and ePub. You can also use one of the multiple extensions developed by the community to extend its functionality.
### Setting up the project
To begin setting up your project, you will first need an account on Codeberg. If you don't already have one, follow the instructions provided under [Your First Steps on Codeberg](https://docs.codeberg.org/getting-started/first-steps/).
This guide assumes that you already have Git installed on your machine. If you don't, you can install git as described in the article [Install Git](https://docs.codeberg.org/getting-started/install-git/).
For the purpose of this guide, we will start a documentation project from scratch using an empty repository. To create a new empty repository and clone it to your local workspace, follow the steps described in the article [Your First Repository](https://docs.codeberg.org/getting-started/first-repository/) as well as the instructions provided under "Option A: Clone the newly created, empty repository" within the same article.
### Creating a Python virtual environment
A "virtual" isolated environment comes in very handy to eliminate the risk of any broken dependencies while working on your projects. In other words, setting up a virtual environment for your project allows you to run an instance of the Python interpreter with a particular package set and a specific configuration while ensuring compatibility between all these components inside that environment.
Before starting, you should make sure that you have pip and Python 3 installed on your machine. To check, type the following commands in your terminal:
```bash
$ pip --version
$ python3 --version
```
If pip and Python are not installed on your Linux machine, please follow the steps described in the articles [pip Installation](https://pip.pypa.io/en/latest/installation/) and [Installing Python 3 on Linux](https://docs.python-guide.org/starting/install3/linux/) respectively.
Depending on your Python version, you will need to install a compatible virtual environment manager, i.e. either "venv" for Python >= 3.3, or "virtualenv" for older Python versions.
{% admonition "warning" %}
Please note that Python2 has reached its EOL (End of Life) on January 1st 2020, which means that it is no longer receiving any security updates.
If you are using Python 3.3 or higher, you do not need to install the "venv" module, since it is already available in your Python standard library.
{% endadmonition %}
The next step is to create a virtual environment. To do so, navigate to the folder where you have cloned the repository described under the section [Setting up the project](#setting-up-the-project):
```bash
$ cd ~/repositories/foobar
$ python3 -m venv env
```
You can replace the second argument "env" with any other name your like. This will be the folder hosting your virtual environment.
{% admonition "warning" %}
Use a **`.gitignore`** file to exclude your virtual environment directory from your version control system. To ignore the entire "env" folder, include the corresponding path and append a **`/`** at its end, e.g. **`env/`**.
{% endadmonition %}
### Activating the virtual environment
Before you begin performing any tasks on your project, you must activate your virtual environment by running the following command:
```bash
$ . env/bin/activate
```
To make sure that you are working inside of your virtual environment, run the command:
```bash
$ which python
```
The output of the command above should be the **`env`** folder, e.g.:
```bash
./env/bin/python
```
When you are done working on your project, run the following command to leave the virtual environment:
```bash
$ deactivate
```
### Installing Sphinx in your virtual environment
If you have followed the steps described up to this point, your local repository should now contain your virtual environment's folder **`env`** in addition to the hidden **`.git`** directory and the **`.gitignore`** file that we have already described at the end of the section [Creating a Python virtual environment](#creating-a-python-virtual-environment), e.g.:
```
├── myproject
│ ├── env
│ ├── .git
│ └── .gitignore
```
<a name="mydocs"></a>
You will now create an empty directory then navigate to it. For the purpose of this guide, we will call our directory `mydocs`. You can choose any name you'd like:
```bash
$ mkdir mydocs
$ cd mydocs
```
Running the command `tree -a` should now output the following:
```bash
.
├── mydocs
├── env
├── .git
└── .gitignore
```
With your virtual environment activated as shown above, it is now time to install Sphinx with `pip`. To do so, run the following:
```bash
(.venv) $ pip install -U sphinx
```
{% admonition "tip" %}
If you wish to learn about the different options of **`pip install`** are, run the command **`pip install -h`**.
{% endadmonition %}
Once Sphinx is installed on your virtual environment, type the following command in your terminal:
```bash
(.venv) $ sphinx-quickstart
```
You will then be asked to answer a series of questions regarding the configuration of your project.
Confirm that you want to **`Separate source and build directories`**. For the rest of the questions, keep pressing **Enter** to accept the default values and fill out the requested fields until you reach the question **`autodoc: automatically insert docstrings from modules`**, then choose **"y" (yes)**. Keep pressing **Enter** again until you reach the question **`Create Makefile?`** and select **"y" (yes)**.
If you now run the `tree` command from your `mydocs` folder, you should get the following output:
```bash
.
├── build
├── make.bat
├── Makefile
└── source
├── conf.py
├── index.rst
├── _static
└── _templates
```
Congratulations! 🎉 You have just finished installing Sphinx on your Linux machine.
### Running a local HTTP server using Python
To set up a local testing server for your documentation project, you can use the Python module **`http.server`**. To do so, you will first have to build the HTML resources for the initial test by running the command:
<a name="build"></a>
```bash
(.venv) $ sphinx-build -b html docs/source/ docs/build/html
```
Then navigate to the directory hosting the HTML resources:
```bash
(.venv) $ cd docs/build/html
```
Once there, run the local python server with the command:
```bash
(.venv) $ python3 -m http.server 8080
```
{% admonition "info" %}
"8080" is the TCP port on which the host server is listening for requests.
{% endadmonition %}
To access the default **`index.html`** file, type **`http://localhost:8080`** in your favorite browser. You should then see the default welcome page.
### Creating files with reStructuredText and checking the output
You can start creating your own content by making a new reStructuredText file (.rst) in the source directory:
```bash
(.venv) $ cd mydocs/source
(.venv) $ touch mynewfile.rst
```
You have just created an empty ".rst" file with the **`touch`** command. An ".rst" file is simply a plain text file that is written with reStructuredText as a markup language. To learn about how to use reStructuredText, follow the instructions provided in the article [reStructuredText Primer](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html).
You will be more productive in your writing if you use a text editor that supports syntax highlighting such as [Emacs](https://www.gnu.org/software/emacs/download.html) or [Atom](https://atom.io/). Linux offers plenty of powerful text editors that support syntax highlighting and other advanced features for coding and authoring tasks.
{% admonition "info" %}
Whenever you create a new .rst file, you must add it manually to the `toctree` of your root document, i.e. "index.rst".
{% endadmonition %}
The toctree directive (toc stands for Table of Contents) inserts a tree that connects the different ".rst" files located in your source directory with each other. Read the article [Directives](https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#toctree-directive) to learn more about the toctree directive.
Once you have added an .rst file to the `toctree`, you can check the output at any time by running the [sphinx-build](#running-a-local-http-server-using-python) command illustrated above, then refreshing your local testing server.
If you are satisfied with the result on your local development environment, you can publish the content on Codeberg Pages. To find out how to do this, read the article [Pushing output from SSGs into Codeberg Pages](https://docs.codeberg.org/codeberg-pages/pushing-output/).

View file

@ -6,12 +6,64 @@ eleventyNavigation:
order: 60
---
Codeberg allows you to publish static web content (HTML, images, etc) with a human-friendly address ({user-name}.codeberg.page).
Codeberg Pages allows you to easily publish static websites with a human-friendly address (`{username}.codeberg.page`) via Git on Codeberg.
Follow these simple steps below to get started, or check out the advanced usage below.
1. Create a repository named 'pages' in your user account or organization.
2. Create static content, HTML, style, fonts or images. Name the homepage file 'index.html'
3. Push your content to the main branch of the new repository.
4. You should now be able to access your content using the domain '{user-name}.codeberg.page'.
1. Create a **public** repository named 'pages' in your user account or organization.
2. Create static content, HTML, stylesheets, fonts or images. Name the homepage file `index.html`.
3. Push your content to the default branch of the new repository.
4. You should now be able to access your content by visiting `{username}.codeberg.page`.
See also [https://codeberg.page/](https://codeberg.page)
---
This project is developed "in-house" by Codeberg. You can find the source code [here](https://codeberg.org/Codeberg/pages-server/).
See also:
- [codeberg.page](https://codeberg.page)
- [Troubleshooting (Codeberg Documentation)](troubleshooting)
- [Features (Codeberg Pages Repository)](https://codeberg.org/Codeberg/pages-server/src/branch/main/FEATURES.md)
{% assign navPages = collections.all | eleventyNavigation %}
{%- for entry in navPages %}
{% if entry.url == page.url %}
{%- if entry.children.length -%}
<table class="table">
<thead>
<th> Find out more in this section: </th>
</thead>
<tbody>
{%- for child in entry.children %}
<tr><td>
<a href="{{ child.url }}">{{ child.title }}</a>
</tr></td>
{%- endfor %}
</tbody>
</table>
{% endif %}
{% endif %}
{%- endfor %}
## Advanced Usage: Canonical URLs
The Codeberg Pages server responds to four different URLs:
- `https://raw.codeberg.page/username/reponame/`: raw content, uses correct MIME types (HTML is forbidden though) and is accessible with CORS.
- `https://username.codeberg.page`: user page, points the default branch of a user's or organization's `pages` repository
- `https://username.codeberg.page/reponame/`: repo page, points to the `pages` branch of the repository
- `https://example.org`: custom domain, points to a repo of choice as outlined below
In all cases, you can append a branch using an `@` (e.g. `https://username.codeberg.page/@develop/README.md`). If the branch name contains a slash (`/`), they need to be replaced with a tilde (`~`) (e.g. the branch `docs/develop` can be accessed via `https://username.codeberg.page/@docs~develop/README.md`).
## Do you have questions, feedback or have you found a bug?
The source code for Codeberg Pages is maintained over at the [Pages Server repository](https://codeberg.org/Codeberg/pages-server); feel free to head there to provide some feedback, suggestions, bug reports or even patches.
If you need general community support or have questions, [Codeberg/Community](https://codeberg.org/Codeberg/Community) is a better place to ask, as more people will be watching there to help you out!
We really appreciate your contribution.
## Installing Pages for your own Forgejo instance
Codeberg Pages works with any Forgejo host out there. So if you are running your own Forgejo, you can absolutely run it yourself and help with the development.
Check out the [Pages Server repository](https://codeberg.org/Codeberg/pages-server) for more information.

View file

@ -0,0 +1,81 @@
---
eleventyNavigation:
key: PushingOutput
title: Pushing output from SSGs into Codeberg Pages
parent: CodebergPages
author: Fayçal Alami Hassani - https://codeberg.org/ka2in
date: January 2022
order: 101
---
If you are using a static site generator (SSG) and are satisfied with the result of your project on your local development environment, you can push the files to your Codeberg Pages repository.
To begin with, we will have two separate repositories, both locally and on Codeberg:
- A main repository for the source files, i.e. where the source files related to your main project will be located. We will refer to this repository as the `source` repository. This repository is the one associated with your [mydocs](/codeberg-pages/examples/docs-as-code/#mydocs) folder.
- A second repository for Codeberg pages that we will call the `pages` repository. This repository will only contain the files available in the `html` folder located under docs/build/html.
{% admonition "warning" %}
The `pages` repository **must** be public, as Codeberg Pages will directly fetch the files from the repository, just like an ordinary user would.
{% endadmonition %}
{% admonition "info" %}
For the purpose of this guide, we have chosen to use two separate folders/repositories. However, you may want to have a different setup that involves creating a [submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules) instead of having folders and repositories in separate locations. With a submodule, your configuration may look like so:
```
├── sources --> This is a git repo
│ ├── build
│ │ └── html
│ │ └── pages --> This is a separate git repo
│ └── content
```
{% endadmonition %}
To copy the content of the `html` folder to your new `pages` folder, run the command:
```bash
(.venv) $ cp -R docs/build/html/ pages
```
We will now initialize an empty repository inside the pages folder. To do this, type the command:
```bash
$ git init
```
To check the status of your projects files, type the command:
```bash
$ git status
```
To add all the files that are available in your directory to Git, run the command:
```bash
$ git add -A
```
Now we will commit:
```bash
$ git commit -m "Example commit message"
```
Repeat these steps in your `source` folder, then push your local commits to the remote repository with the command:
```bash
$ git push origin HEAD:your-remote-branch-name
```
{% admonition "info" "Note" %}
Replace `your-remote-branch-name` with the name of your remote branch. It is recommended to initially push your commits to a branch other than the default branch. Once you have made sure everything went smoothly, you can then make a pull request to merge it into the default branch. To learn more about pull requests, read the article [Pull requests and Git flow](https://docs.codeberg.org/collaborating/pull-requests-and-git-flow/).
{% endadmonition %}
You should now be able to access your content by visiting https://{username}.codeberg.page. You can find more information in the [Codeberg Pages](/codeberg-pages/) section.

View file

@ -0,0 +1,54 @@
---
eleventyNavigation:
key: Redirects
title: Redirects
parent: CodebergPages
order: 102
---
Redirects can be created with a `_redirects` file with the following format:
```
# Comment
from to [status]
```
- Lines starting with `#` are ignored
- `from` - the path to redirect from (Note: repository and branch names are removed from request URLs)
- `to` - the path or URL to redirect to
- `status` - status code to use when redirecting (default 301)
## Status codes
- `200` - returns content from specified path (no external URLs) without changing the URL (rewrite)
- `301` - Moved Permanently (Permanent redirect)
- `302` - Found (Temporary redirect)
## Examples
### Simple redirect
Redirects a specific path.
```
/example https://example.com/ 301
/path /other-path 301
```
### SPA (single-page application) rewrite
Redirects all paths to `/index.html` for single-page apps.
```
/* /index.html 200
```
### Splats
Redirects every path under `/articles` to `/posts` while keeping the path.
```
/articles/* /posts/:splat 302
```
Example: `/articles/2022/10/12/post-1/` -> `/posts/2022/10/12/post-1/`

View file

@ -1,10 +1,21 @@
---
eleventyNavigation:
key: CodebergPagesTroubleshooting
key: Troubleshooting
title: Troubleshooting
parent: CodebergPages
order: 99
---
## My web browser displays a security warning when I try to access my Codeberg Pages.
If your user name contains a dot (e.g. `user.name`) your Codeberg Pages URL (https://user.name.codeberg.page) contains a sub-sub-domain which does not work with Let's Encrypt wildcard certificates. Use the alternative URL https://pages.codeberg.org/user.name/ as a workaround.
If your user name or repository name contains a dot, your Codeberg Pages URL (https://user.name.codeberg.page or https://repo.sitory.username.codeberg.page) contains a sub-sub-domain which does not work with Let's Encrypt wildcard certificates. Use the alternative URL https://pages.codeberg.org/user.name/ as a workaround or rename you repository (e.g. replace `.` by `_`).
## My content is not updated
The Codeberg Pages server caches files under a certain size (currently 1 MiB).
Please wait a few minutes until the cache has been invalidated.
This is done to improve performance, reduce cost and server load, and save energy.
## Cloudflare and Codeberg Pages
It is important that when you use [Cloudflare](https://cloudflare.com) to manage your Domain's DNS records, that every DNS record used for Codeberg Pages needs to be set to **DNS only** (Have a gray cloud). This ensures that Codeberg pages can properly handle everything necessary for your site such as SSL-Certificate and redirects from other (sub-)domains.

View file

@ -0,0 +1,281 @@
---
eleventyNavigation:
key: UsingCustomDomains
title: Using Custom Domains
parent: CodebergPages
order: 10
---
Instead of using the `codeberg.page` domain, you can also purchase your own domain from a domain registrar of your choice and configure it to serve content from Codeberg Pages.
{% admonition "warning" "Known pitfalls for failed certificate errors" %}
- If you have a [CAA record](https://en.wikipedia.org/wiki/DNS_Certification_Authority_Authorization#Record) configured, you must [explicitly allow Let's Encrypt in your CAA record](https://letsencrypt.org/docs/caa/).
{% endadmonition %}
For custom domains, two things are required:
- a `.domains` file in the repository and branch where your files reside which you want to publish via Codeberg Pages. The file should contain a list of _all_ domains that shall be usable to access that repository, according to the following rules:
- One domain per line, you can leave lines empty and comment out lines with `#`.
- The first domain is the main domain, all other domains in the file will be redirected to the first one.
- The rest of the list includes all relevant `*.codeberg.page` domains for the specific repository.
- a [DNS record](https://en.wikipedia.org/wiki/Domain_Name_System#Address_resolution_mechanism) pointing to one of the following targets, depending on where your static files reside:
<br />
{% admonition "question" "Why do I need all of these DNS records?" %}
To understand how the Pages server serves content, you need to know that a user browsing your custom domain just sends "Hey, I want to see `yourdomain.com`" to the server. But the server might not know that it is responsible for `yourdomain.com` and it cannot just serve all domains in the world. So to find out if the server is responsible for `yourdomain.com` it will check the DNS entries of `yourdomain.com`. If it returns something with `codeberg.page` (according to the domain schemes mentioned below) then it knows which respository to check for the `.domains` file and your content.
{% endadmonition %}
## Setting the DNS record
There are several ways DNS records for your website can be setup in order to tell the Pages server your repository location. For all of the options it is important that the Pages server knows where to look for the `.domains` file and your content. Depending on from where you want to serve your files, there is a naming scheme for the domain:
<table class="table">
<thead>
<th>Domain Scheme</th>
<th>Pages URL</th>
</thead>
<tbody>
<tr>
<td><code>username.codeberg.page</code></td>
<td>https://username.codeberg.page <br /> which will serve <code>codeberg.org/username/pages</code></td>
</tr>
<tr>
<td><code>reponame.username.codeberg.page</code></td>
<td>https://username.codeberg.page/reponame <br /> which will serve <code>codeberg.org/username/reponame</code></td>
</tr>
<tr>
<td><code>branchname.reponame.username.codeberg.page</code></td>
<td>https://username.codeberg.page/reponame/@branchname/<br /> which will serve <code>codeberg.org/username/reponame/src/branch/branchname</code></td>
</tr>
</tbody>
<table>
_We assume for the following description, that you want to serve your website with and without www in front. If you are on a subdomain already (like myproject.yourdomain.com), you can skip the `www.yourdomain.com` CNAME entry._
{% admonition "Warning" %}
When setting up DNS records with many registrars, any domain added to the `Domain` or `Host` option is automatically appended onto the domain the records are being made for.
For example, if your domain is `example.com`, entering `www` will mean the record refers to `www.example.com`.
Therefore, in this guide, you may need to replace references to just your domain name (e.g. `example.com`) with `@` and `anything.example.com` (i.e. any subdomain) with just `anything`.
{% endadmonition %}
**Option 1: CNAME record**
The easiest and recommended way is to just setup a CNAME record for your domain, pointing to the mentioned above locations. In the end, it should look like this:
<table class="table">
<thead>
<th>Domain</th>
<th>Type</th>
<th>Data</th>
</thead>
<tbody>
<tr>
<td>yourdomain.com</td><td>CNAME</td><td>reponame.username.codeberg.page</td>
</tr>
<tr>
<td>www.yourdomain.com</td><td>CNAME</td><td>reponame.username.codeberg.page</td>
</tr>
</table>
<br />
{% admonition "Warning" %}
With a CNAME record everything on this domain is delegated to `codeberg.page`, which means you cannot setup your own email address with this method.
If you need email or others services, you have to use one of the remaining options.
{% endadmonition %}
**Option 2: ALIAS record**
If you cannot use a CNAME record to configure the target you can use this method, which needs two entries instead of one.
- First you need to specify which server should be serving your website. Similar to CNAME you can use an `ALIAS record`. The [difference](https://www.ecosia.org/search?q=cname%20vs%20alias%20record) between an CNAME record is, that the DNS server directly responds with the ip address and not the `codeberg.page` domain. Therefore you need to add a second entry, so that the pages server knows what to serve under this domain.
- Second, you need to setup a `TXT record` which contains the information from the `CNAME entry` which is your repository location as mentioned above. For example `[[branch.]repo.]user.codeberg.page`.
In the end it should look like this:
<table class="table">
<thead>
<th>Domain</th>
<th>Type</th>
<th>Data</th>
</thead>
<tbody>
<tr>
<td>yourdomain.com</td><td>ALIAS</td><td>codeberg.page</td>
</tr>
<tr>
<td>yourdomain.com</td><td>TXT</td><td>reponame.username.codeberg.page</td>
</tr>
<tr>
<td>www.yourdomain.com</td><td>CNAME</td><td>yourdomain.com</td>
</tr>
</table>
**Option 3: A/AAAA record**
If your service provider does not support `ALIAS records` you can also use `A records` and `AAAA records` instead.
- First you need to specify which server should be serving your website. You can do this by setting an `A record` for IPv4 and an `AAAA record` for IPv6 which contains the ip address of the Codeberg Pages server. The servers' ip addresses are:
- `A record` which contains the IPv4 value `217.197.91.145`
- `AAAA record` which contains the IPv6 value `2001:67c:1401:20f0::1`
- Second, you need to setup a `TXT record` which contains the information from the `CNAME entry` which is your repository location as mentioned above. For example `[[branch.]repo.]user.codeberg.page`.
In the end, it should look like this:
<table class="table">
<thead>
<th>Domain</th>
<th>Type</th>
<th>Data</th>
</thead>
<tbody>
<tr>
<td>yourdomain.com</td><td>A</td><td>217.197.91.145</td>
</tr>
<tr>
<td>yourdomain.com</td><td>AAAA</td><td>2001:67c:1401:20f0::1</td>
</tr>
<tr>
<td>yourdomain.com</td><td>TXT</td><td>reponame.username.codeberg.page</td>
</tr>
<tr>
<td>www.yourdomain.com</td><td>CNAME</td><td>yourdomain.com</td>
</tr>
</table>
## Examples
The following sub-sections include a few examples of the different alternatives, assuming the following:
- we can add/modify DNS records in domain `example.com`.
- Our Codeberg username is `frida`, and we want to publish pages for:
- `frida/pages`, with a _Personal_ static site inside branch `pages`;
- `frida/colormix`, with a _Project_ site (again, inside branch `pages`).
All considerations regarding a _Personal_ site also apply to an _Organization_ site, so these two cases will be addressed together.
### Personal (or Organization) site, third level domain
In this case, we want our _Personal_ pages available at the URL `https://myself.example.com`.
The `.domains` file contains the following:
```
myself.example.com
frida.codeberg.page
pages.frida.codeberg.page
pages.pages.frida.codeberg.page
```
For the DNS configuration:
- if CNAME can be used, one single DNS record will suffice:
- name `myself.example.com`, type `CNAME`, data `frida.codeberg.page`
- otherwise, if ALIAS can be used, two DNS records will be needed:
- name `myself.example.com`, type `ALIAS`, data `codeberg.page`
- name `myself.example.com`, type `TXT`, data `frida.codeberg.page`
- otherwise, A/AAAA records must be used, together with one TXT record:
- name `myself.example.com`, type `A`, data `217.197.91.145`
- name `myself.example.com`, type `AAAA`, data `2001:67c:1401:20f0::1`
- name `myself.example.com`, type `TXT`, data `frida.codeberg.page`
### Personal/Organization site, apex domain
In this case, we want our _Personal_/_Organization_ pages available at the URL `https://example.com`.
The `.domains` file contains the following:
```
example.com
frida.codeberg.page
pages.frida.codeberg.page
pages.pages.frida.codeberg.page
```
For the DNS configuration, the CNAME SHOULD NOT be used, so:
- if ALIAS can be used, two DNS records will be needed:
- name `example.com`, type `ALIAS`, data `codeberg.page`
- name `example.com`, type `TXT`, data `frida.codeberg.page`
- otherwise, A/AAAA records must be used, together with one TXT record:
- name `example.com`, type `A`, data `217.197.91.145`
- name `example.com`, type `AAAA`, data `2001:67c:1401:20f0::1`
- name `example.com`, type `TXT`, data `frida.codeberg.page`
### Project site, third-level domain
In this case, we want our _Project_ pages available at the URL `https://colormix-app.example.com`.
The `.domains` file contains the following:
```
colormix-app.example.com
colormix.frida.codeberg.page
pages.colormix.frida.codeberg.page
```
For the DNS configuration:
- if CNAME can be used, one single DNS record will suffice:
- name `colormix-app.example.com`, type `CNAME`, data `colormix.frida.codeberg.page`
- otherwise, if ALIAS can be used, two DNS records will be needed:
- name `colormix-app.example.com`, type `ALIAS`, data `codeberg.page`
- name `colormix-app.example.com`, type `TXT`, data `colormix.frida.codeberg.page`
- otherwise, A/AAAA records must be used, together with one TXT record:
- name `colormix-app.example.com`, type `A`, data `217.197.91.145`
- name `colormix-app.example.com`, type `AAAA`, data `2001:67c:1401:20f0::1`
- name `colormix-app.example.com`, type `TXT`, data `colormix.frida.codeberg.page`
### Project site, apex domain
In this case, we want our _Project_ pages available at the URL `https://example.com`.
{% admonition "info" "Note" %}
This would be incompatible with using the apex `example.com` for other purposes, e.g. for the _Personal_/_Organization_ example discussed before.
{% endadmonition %}
The `.domains` file contains the following:
```
example.com
colormix.frida.codeberg.page
pages.colormix.frida.codeberg.page
```
For the DNS configuration, CNAME SHOULD NOT be used:
- if ALIAS can be used, two DNS records will be needed:
- name `example.com`, type `ALIAS`, data `codeberg.page`
- name `example.com`, type `TXT`, data `colormix.frida.codeberg.page`
- otherwise, A/AAAA records must be used, together with one TXT record:
- name `example.com`, type `A`, data `217.197.91.145`
- name `example.com`, type `AAAA`, data `2001:67c:1401:20f0::1`
- name `example.com`, type `TXT`, data `colormix.frida.codeberg.page`

Some files were not shown because too many files have changed in this diff Show more