Forgejo: Difference between revisions

Kaya (talk | contribs)
Add infobox for forgejo
Kaya (talk | contribs)
Add section on setting up openssh integratiojn
 
(2 intermediate revisions by the same user not shown)
Line 17: Line 17:


== Usage ==
== Usage ==
NixOs provides a module for easily setting-up a Forgejo server, here is an example of typical usage with some optional features:
NixOS provides a module for easily setting-up a Forgejo server, here is an example of typical usage with some optional features:


* Use Nginx to enable easy https configuration
* Use Nginx to enable easy https configuration
Line 86: Line 86:
</syntaxhighlight>
</syntaxhighlight>


== Runner ==
== Setting up OpenSSH integration ==
If you plan to use SSH keys for authenticating your git usage, there's a little extra configuration to be done to set that up:
{{File|3={ config, lib, ... }: {
  ...
  services = {
    forgejo.settings.server.SSH_PORT = lib.head config.services.openssh.ports;
    openssh.settings.AcceptEnv = "GIT_PROTOCOL";
  };
  ...
}|name=/etc/nixos/configuration.nix|lang=nix}}
 
== Actions Runner ==
According to the [https://forgejo.org/docs/latest/admin/actions/#forgejo-runner documentation] the <code>Forgejo runner</code> is:<blockquote>A daemon that fetches workflows to run from a Forgejo instance, executes them, sends back with the logs and ultimately reports its success or failure.</blockquote>In order to use Actions, you will need to setup at least one Runner. You can use your server, another machine or both as runners.
According to the [https://forgejo.org/docs/latest/admin/actions/#forgejo-runner documentation] the <code>Forgejo runner</code> is:<blockquote>A daemon that fetches workflows to run from a Forgejo instance, executes them, sends back with the logs and ultimately reports its success or failure.</blockquote>In order to use Actions, you will need to setup at least one Runner. You can use your server, another machine or both as runners.
To register a runners you will need to generate a token. https://forgejo.org/docs/latest/user/actions/#forgejo-runner
To register a runners you will need to generate a token. https://forgejo.org/docs/latest/user/actions/#forgejo-runner


You can create a server-wide Runner by going to ''Profile Picture > Site Administration > Actions > Runners > Create new Runner.''
You can create a server-wide Runner by going to ''Profile Picture > Site Administration > Actions > Runners > Create new Runner.''
Store your token in your [[Comparison of secret managing schemes|secrets management system]] of choice, then add the following to the configuration of the machine to be used as a runner:<syntaxhighlight lang="nixos">
Store your token in your [[Comparison of secret managing schemes|secrets management system]] of choice, then add the following to the configuration of the machine to be used as a runner:<syntaxhighlight lang="nixos">
{ pkgs, config, ... }: {
{ pkgs, config, ... }: {
Line 120: Line 127:


== Ensure users ==
== Ensure users ==
Using the following snippet, you can ensure users:
Using the following snippet, you can declaratively ensure these users will always exist:
<syntaxhighlight lang="nixos">
<syntaxhighlight lang="nixos">
sops.secrets.forgejo-admin-password.owner = "forgejo";
sops.secrets.forgejo-admin-password.owner = "forgejo";
Line 138: Line 145:
Naturally, instead of sops, you may use any file or secret manager, as explained above.
Naturally, instead of sops, you may use any file or secret manager, as explained above.


== Adding a custom theme to Forgejo ==
Its possible to [https://forgejo.org/docs/latest/contributor/customization/ customize the CSS styles and HTML templates of Forgejo] declaratively using Nix. In this simple example i will show you how to: Create a basic theme, set it as the default theme and modify the home template.
{{File|3={ config, pkgs, lib, ... }: {
  ...
  systemd.tmpfiles.rules = [
    "d '${config.services.forgejo.customDir}/templates' - forgejo forgejo - -"
    "d '${config.services.forgejo.customDir}/public' - forgejo forgejo - -"
    "d '${config.services.forgejo.customDir}/public/assets' - forgejo forgejo - -"
    "d '${config.services.forgejo.customDir}/public/assets/css' - forgejo forgejo - -"
    "C+ '${config.services.forgejo.customDir}/public/assets/css/theme-custom.css' - forgejo forgejo - ${
      ./theme-custom.css
    }"
    "C+ '${config.services.forgejo.customDir}/templates/home.tmpl' - forgejo forgejo - ${
      ./home.tmpl
    }"
  ];
  forgejo.settings.ui = {
    DEFAULT_THEME = "custom";
    THEMES = "forgejo-auto,forgejo-light,forgejo-dark,custom";
  };
  ...
}|name=/etc/nixos/forgejo/default.nix|lang=nix}}{{File|3=@import url('https://fonts.googleapis.com/css2?family=Space+Mono&display=swap');
@import "./theme-forgejo-auto.css";
:root {
    --fonts-override: "Space Mono";
}|name=/etc/nixos/forgejo/theme-custom.css|lang=css}}{{File|3={{template "base/head" .}}
<div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="page-content home">
<div class="tw-mb-8 tw-px-8">
<div class="center">
<div class="hero">
<h1 class="ui icon header title">
Forgejo hosted on NixOS!
</h1>
</div>
</div>
</div>
</div>
{{template "base/footer" .}}|name=/etc/nixos/forgejo/home.tmpl|lang=gotmpl}}
[[Category:Web Applications]]
[[Category:Web Applications]]
[[Category:Server]]
[[Category:Server]]
[[Category:NixOS Manual]]
[[Category:NixOS Manual]]