From 490a77b67e11f9d9858794b43d7e9847abdf629b Mon Sep 17 00:00:00 2001 From: prescientmoon Date: Sat, 11 May 2024 01:09:43 +0200 Subject: [PATCH] Add basic forgejo config --- README.md | 1 + common/icons/forgejo.svg | Bin 0 -> 24218 bytes docs/ports.md | 1 + .../nixos/common/optional/services/gitea.nix | 28 ----- hosts/nixos/lapetus/default.nix | 1 + hosts/nixos/lapetus/secrets.example.yaml | 1 + hosts/nixos/lapetus/secrets.yaml | 5 +- hosts/nixos/lapetus/services/forgejo.nix | 52 +++++++++ hosts/nixos/lapetus/services/homer.nix | 106 +++++++++--------- hosts/nixos/lapetus/services/microbin.nix | 4 +- hosts/nixos/tethys/default.nix | 1 + modules/nixos/cloudflared.nix | 33 ++++-- scripts/dns/dns.txt | 3 +- 13 files changed, 143 insertions(+), 93 deletions(-) create mode 100644 common/icons/forgejo.svg delete mode 100644 hosts/nixos/common/optional/services/gitea.nix create mode 100644 hosts/nixos/lapetus/services/forgejo.nix diff --git a/README.md b/README.md index c3c279e..3ddaebc 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,7 @@ Most services are served over [tailscale](https://tailscale.com/), using certifi - [Actual](https://actualbudget.org/) — budgeting tool. - [Commafeed](https://github.com/Athou/commafeed) — rss reader +- [Forgejo](https://forgejo.org/) — git forge - [Grafana](https://github.com/grafana/grafana) — pretty dashboards - [Homer](https://github.com/bastienwirtz/homer) — server homepage - [Intray](https://github.com/NorfairKing/intray) — GTD capture tool. diff --git a/common/icons/forgejo.svg b/common/icons/forgejo.svg new file mode 100644 index 0000000000000000000000000000000000000000..c2a74ee271d336e60c56e52e6b42e8c2e5c4ae4f GIT binary patch literal 24218 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 literal 0 HcmV?d00001 diff --git a/docs/ports.md b/docs/ports.md index 47c72ef..193d432 100644 --- a/docs/ports.md +++ b/docs/ports.md @@ -22,3 +22,4 @@ The idea is to always use consecutive ports, but never go back and try to recycl | 8416 | [redlib](../hosts/nixos/lapetus/services/redlib.nix) | | 8417 | [qbittorrent](../hosts/nixos/lapetus/services/qbittorrent.nix) | | 8418 | [microbin](../hosts/nixos/lapetus/services/microbin.nix) | +| 8419 | [forgejo](../hosts/nixos/lapetus/services/forgejo.nix) | diff --git a/hosts/nixos/common/optional/services/gitea.nix b/hosts/nixos/common/optional/services/gitea.nix deleted file mode 100644 index 43827b7..0000000 --- a/hosts/nixos/common/optional/services/gitea.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ lib, ... }: { - services.gitea = { - enable = true; - appName = "pinktea"; - stateDir = "/persist/state/pinktea"; - lfs.enable = true; - - dump = { - enable = true; - type = "tar.gz"; - }; - - # See [the cheatsheet](https://docs.gitea.com/next/administration/config-cheat-sheet) - settings = { - session.COOKIE_SECURE = false; # TODO: set to true when serving over https - repository = { - DISABLED_REPO_UNITS = ""; - DEFAULT_REPO_UNITS = lib.strings.concatStringsSep "," [ - "repo.code" - "repo.releases" - "repo.issues" - "repo.pulls" - ]; - DISABLE_STARS = true; - }; - }; - }; -} diff --git a/hosts/nixos/lapetus/default.nix b/hosts/nixos/lapetus/default.nix index 561a158..3198d12 100644 --- a/hosts/nixos/lapetus/default.nix +++ b/hosts/nixos/lapetus/default.nix @@ -23,6 +23,7 @@ ./services/jellyfin.nix ./services/qbittorrent.nix ./services/microbin.nix + ./services/forgejo.nix # ./services/ddclient.nix ./filesystems ./hardware diff --git a/hosts/nixos/lapetus/secrets.example.yaml b/hosts/nixos/lapetus/secrets.example.yaml index de61ef7..9f2aadb 100644 --- a/hosts/nixos/lapetus/secrets.example.yaml +++ b/hosts/nixos/lapetus/secrets.example.yaml @@ -11,3 +11,4 @@ cloudflare_tunnel_credentials: | microbin_env: | MICROBIN_ADMIN_PASSWORD=... MICROBIN_UPLOAD_PASSWORD=... +forgejo_mail_password: ... diff --git a/hosts/nixos/lapetus/secrets.yaml b/hosts/nixos/lapetus/secrets.yaml index 05915ea..3783cfd 100644 --- a/hosts/nixos/lapetus/secrets.yaml +++ b/hosts/nixos/lapetus/secrets.yaml @@ -5,6 +5,7 @@ grafana_discord_webhook: ENC[AES256_GCM,data:y17UjlnfNmtvim9REkop4abcU6BX0P5JnJY invidious_hmac_key: ENC[AES256_GCM,data:eN3NNPYUSfPNnVz3aZK7IrnzoBA=,iv:eHEiB/TKL0W6TdWpXADCxEdhhGwUPwOLph2RjwTECh0=,tag:P5m6Uw8JkKVegQ840talPQ==,type:str] cloudflare_tunnel_credentials: ENC[AES256_GCM,data:XuXXzhGdxYsF1ik2g7yS2wbaI08/AF60P8CnIhjJlMd+jRk36QovuBRRjkfV8BjOg0K+2b4yNHT/nS/ZSV6eorj4sbczw6D+p7LxrQfeVqqhXWyCjbJwQTTDFU9XB2xUohmmC1PJ1/nwShfn1LocPxgwWQiNpqwhTJroojzqxTHUBzCuAMmcZ7jwvd0SlDpZIszhbTQoLRzedRZpCdoNnWTc,iv:2oBLU3SvNUwJ2OYfCmyKiocUw9zU+yixO+tY/AE9sxc=,tag:T3v+MII+kDzomiAQJ0zUdg==,type:str] microbin_env: ENC[AES256_GCM,data:nxiE9GIvEb0xgqomDdMyy2UtG25pt7h+6JUZkAgIejZbJfsKfpIJcG02WJoj07I2VeTtN10Wd8IbrW9QEt64mLzlG7hqJN0Uwq8bjL1j5IaK,iv:pCWmF52MhMfZtdtMsL7wwt+KB33E/UPNtXzkiJ7NOWE=,tag:79e0u2yyRYckivY85hLqpg==,type:str] +forgejo_mail_password: ENC[AES256_GCM,data:linrpmA8b+8e1+tWNl0=,iv:Mk7suPq0Jt960Zl9s2jj3SSAKt4t8Lv4eKdIo0o8JbE=,tag:TZ0qGJIVSFSUt/0cqamvdw==,type:str] sops: kms: [] gcp_kms: [] @@ -29,8 +30,8 @@ sops: RHZ6alYrUU5BZ2xlMkdGR1dWRG5aeGMKJdsdtVZ6Mk9Vo3a+tS+rzAgaF2wpH+8U lWhA+c0Kbe8EJT8hm7Vr8PqBmElz4V9AnXSCTp7D+Cu4pfWsHopLUQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-05-10T18:21:41Z" - mac: ENC[AES256_GCM,data:JbRf7sVZLNiIR2vy0+Et7PqpZIvxYa8ZbqLUNNUzjilfIxaRcwRTjbV+IryGOXBve1rJoK9I6Y4dnaQOM/YpddNO2Nxb4PKGcgnQc6v4wrHfHBFZJVo7Teyy6jFfxBYCu0DOqIzBeQg7YLs29PpVoOjxjXDLLFfCK1WAlng+Af8=,iv:2yIV0h3jp/JTPhWjfRLI+Nd8kkIheePIKOf6u59wWiw=,tag:eHswLPB7oDJ98jqnJv2V6g==,type:str] + lastmodified: "2024-05-10T22:27:23Z" + mac: ENC[AES256_GCM,data:pH8KM1JvO6OK1yGNT90kPfd7+zoUnyoTNfWhCXHBERzLmxHuI8VopCGfgxqYtjyBE4yYAIsRpzJBMPKSnazoL9EBWB+uoSE3UNXMgwTBK/Oq+aW1Bj7akOfCiR9U8yzgfqI7ReAtbioOVO3K/RlgCzpNFdfvToKwm7tUFrektB8=,iv:ltMnlbzIQumavl96q76sv9iYf4IgKrLS2yRZQ1xb83o=,tag:1PILpbzUR7LXaiuukrH3bw==,type:str] pgp: [] unencrypted_suffix: _unencrypted version: 3.8.1 diff --git a/hosts/nixos/lapetus/services/forgejo.nix b/hosts/nixos/lapetus/services/forgejo.nix new file mode 100644 index 0000000..9e6399f --- /dev/null +++ b/hosts/nixos/lapetus/services/forgejo.nix @@ -0,0 +1,52 @@ +{ lib, config, ... }: +let + port = 8419; + host = "git.moonythm.dev"; +in +{ + sops.secrets.forgejo_mail_password.sopsFile = ../secrets.yaml; + satellite.cloudflared.targets.${host}.port = port; + + services.forgejo = { + enable = true; + appName = "moonforge"; + stateDir = "/persist/state/var/lib/forgejo"; + mailerPasswordFile = config.sops.secrets.forgejo_mail_password.path; + + dump = { + enable = true; + type = "tar.gz"; + }; + + lfs.enable = true; + + # See [the cheatsheet](https://docs.gitea.com/next/administration/config-cheat-sheet) + settings = { + session.COOKIE_SECURE = true; + server = { + DOMAIN = host; + HTTP_PORT = port; + ROOT_URL = "https://${host}"; + LANDING_PAGE = "prescientmoon"; # Make my profile the landing page + }; + + cron.ENABLED = true; + # service.DISABLE_REGISTRATION = true; + + mailer = { + ENABLED = true; + SMTP_PORT = 465; + SMTP_ADDR = "smtp.migadu.com"; + USER = "git"; + }; + + repository = { + DISABLE_STARS = true; + DISABLED_REPO_UNITS = ""; + DEFAULT_REPO_UNITS = lib.strings.concatStringsSep "," [ + "repo.code" + ]; + }; + }; + }; +} diff --git a/hosts/nixos/lapetus/services/homer.nix b/hosts/nixos/lapetus/services/homer.nix index da40258..e71f87e 100644 --- a/hosts/nixos/lapetus/services/homer.nix +++ b/hosts/nixos/lapetus/services/homer.nix @@ -63,6 +63,58 @@ in ]; } # }}} + # {{{ External + { + name = "External"; + icon = fa "arrow-up-right-from-square"; + items = [ + { + name = "Tailscale"; + subtitle = "Access this homelab from anywhere"; + logo = icon "tailscale.png"; + url = "https://tailscale.com/"; + } + { + name = "Dotfiles"; + subtitle = "Configuration for all my machines"; + logo = icon "github.png"; + url = "https://github.com/mateiadrielrafael/everything-nix"; + } + { + name = "Cloudflare"; + subtitle = "Domain management"; + logo = icon "cloudflare.png"; + url = "https://dash.cloudflare.com/761d3e81b3e42551e33c4b73274ecc82/moonythm.dev/"; + } + ]; + } + # }}} + # {{{ Productivity + { + name = "Productivity"; + icon = fa "rocket"; + items = [ + { + name = "Intray"; + subtitle = "GTD capture tool"; + icon = fa "inbox"; + url = "https://intray.moonythm.dev"; + } + { + name = "Smos"; + subtitle = "A comprehensive self-management system."; + icon = fa "cubes-stacked"; + url = "https://smos.moonythm.dev"; + } + { + name = "Actual"; + subtitle = "Budgeting tool"; + logo = icon "actual.png"; + url = "https://actual.moonythm.dev"; + } + ]; + } + # }}} # {{{ Pillars { name = "Tooling"; @@ -92,31 +144,11 @@ in logo = icon "microbin.png"; url = "https://cal.moonythm.dev"; } - ]; - } - # }}} - # {{{ Productivity - { - name = "Productivity"; - icon = fa "rocket"; - items = [ { - name = "Intray"; - subtitle = "GTD capture tool"; - icon = fa "inbox"; - url = "https://intray.moonythm.dev"; - } - { - name = "Smos"; - subtitle = "A comprehensive self-management system."; - icon = fa "cubes-stacked"; - url = "https://smos.moonythm.dev"; - } - { - name = "Actual"; - subtitle = "Budgeting tool"; - logo = icon "actual.png"; - url = "https://actual.moonythm.dev"; + name = "Forgejo"; + subtitle = "Git forge"; + logo = icon "forgejo.svg"; + url = "https://git.moonythm.dev"; } ]; } @@ -165,32 +197,6 @@ in ]; } # }}} - # {{{ External - { - name = "External"; - icon = fa "arrow-up-right-from-square"; - items = [ - { - name = "Tailscale"; - subtitle = "Access this homelab from anywhere"; - logo = icon "tailscale.png"; - url = "https://tailscale.com/"; - } - { - name = "Dotfiles"; - subtitle = "Configuration for all my machines"; - logo = icon "github.png"; - url = "https://github.com/mateiadrielrafael/everything-nix"; - } - { - name = "Cloudflare"; - subtitle = "Domain management"; - logo = icon "cloudflare.png"; - url = "https://dash.cloudflare.com/761d3e81b3e42551e33c4b73274ecc82/moonythm.dev/"; - } - ]; - } - # }}} ]; }; }); diff --git a/hosts/nixos/lapetus/services/microbin.nix b/hosts/nixos/lapetus/services/microbin.nix index d966be6..0b857eb 100644 --- a/hosts/nixos/lapetus/services/microbin.nix +++ b/hosts/nixos/lapetus/services/microbin.nix @@ -7,9 +7,7 @@ in imports = [ ./cloudflared.nix ]; sops.secrets.microbin_env.sopsFile = ../secrets.yaml; - - services.cloudflared.tunnels = - config.satellite.cloudflared.proxy host; + satellite.cloudflared.targets.${host}.port = port; services.microbin = { enable = true; diff --git a/hosts/nixos/tethys/default.nix b/hosts/nixos/tethys/default.nix index b19a034..294692d 100644 --- a/hosts/nixos/tethys/default.nix +++ b/hosts/nixos/tethys/default.nix @@ -16,6 +16,7 @@ ./hardware ./boot.nix ./services/syncthing.nix + ./services/forgejo.nix ]; # }}} diff --git a/modules/nixos/cloudflared.nix b/modules/nixos/cloudflared.nix index ae71611..5ef4f08 100644 --- a/modules/nixos/cloudflared.nix +++ b/modules/nixos/cloudflared.nix @@ -5,18 +5,33 @@ in options.satellite.cloudflared = { tunnel = lib.mkOption { type = lib.types.string; - description = "Cloudflare tunnel id to use for the `satellite.cloudflared.proxy` helper"; + description = "Cloudflare tunnel id to use for the `satellite.cloudflared.targets` helper"; }; - proxy = lib.mkOption { - type = lib.types.functionTo lib.types.anything; - description = "Helper function for generating a quick proxy config"; + targets = lib.mkOption { + description = "List of hosts to set up ingress rules for"; + default = { }; + type = lib.types.attrsOf (lib.types.submodule ({ name, ... }: { + options = { + port = lib.mkOption { + type = lib.types.port; + description = "Localhost port to point the tunnel at"; + }; + + host = lib.mkOption { + default = name; + type = lib.types.string; + description = "Host to direct traffic from"; + }; + }; + })); }; }; - config.satellite.cloudflared.proxy = from: { - ${cfg.tunnel} = { - ingress.${from} = "http://localhost:8418"; - }; - }; + config.services.cloudflared.tunnels.${cfg.tunnel}.ingress = lib.attrsets.mapAttrs' + (_: { port, host }: { + name = host; + value = "http://localhost:${toString port}"; + }) + cfg.targets; } diff --git a/scripts/dns/dns.txt b/scripts/dns/dns.txt index d80247d..9078523 100644 --- a/scripts/dns/dns.txt +++ b/scripts/dns/dns.txt @@ -13,7 +13,9 @@ actual IN CNAME lapetus api.intray IN CNAME lapetus api.smos IN CNAME lapetus cal IN CNAME lapetus +diptime IN CNAME lapetus docs.smos IN CNAME lapetus +git IN CNAME lapetus grafana IN CNAME lapetus intray IN CNAME lapetus irc IN CNAME lapetus @@ -28,7 +30,6 @@ search IN CNAME lapetus smos IN CNAME lapetus warden IN CNAME lapetus yt IN CNAME lapetus -diptime IN CNAME lapetus *.irc IN CNAME irc ; Tunnel used by lapetus