103 lines
2.6 KiB
Nix
103 lines
2.6 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
...
|
|
}: let
|
|
sshPort = 2222;
|
|
dbHost = "192.168.1.211";
|
|
dbLogin = "forgejo";
|
|
in {
|
|
sops.secrets.smtp2go-pwd = {owner = "forgejo";};
|
|
networking.firewall.allowedTCPPorts = [2222];
|
|
services.forgejo = {
|
|
enable = true;
|
|
package = pkgs.forgejo;
|
|
stateDir = "/var/lib/forgejo";
|
|
lfs.enable = true;
|
|
secrets = {
|
|
mailer.PASSWD = config.sops.secrets.smtp2go-pwd.path;
|
|
};
|
|
settings = {
|
|
service.DISABLE_REGISTRATION = true;
|
|
DEFAULT.APP_NAME = "forgejo";
|
|
log.LEVEL = "Debug";
|
|
packages.ENABLED = true;
|
|
federation.ENABLED = true;
|
|
ui = {
|
|
DEFAULT_THEME = "forgejo-dark";
|
|
SHOW_USER_EMAIL = true;
|
|
};
|
|
actions = {
|
|
ENABLED = false;
|
|
DEFAULT_ACTIONS_URL = "https://code.forgejo.org";
|
|
};
|
|
server = {
|
|
HTTP_PORT = 3200;
|
|
DOMAIN = "git.flake.sh";
|
|
ROOT_URL = "https://git.flake.sh";
|
|
LANDING_PAGE = "/explore/repos";
|
|
START_SSH_SERVER = true;
|
|
SSH_DOMAIN = "git.flake.sh";
|
|
SSH_PORT = sshPort;
|
|
SSH_LISTEN_PORT = sshPort;
|
|
SSH_LISTEN_HOST = "100.121.201.47";
|
|
};
|
|
"git.timeout" = {
|
|
DEFAULT = 3600;
|
|
MIGRATE = 3600;
|
|
MIRROR = 3600;
|
|
CLONE = 3600;
|
|
};
|
|
session = {
|
|
PROVIDER = "redis";
|
|
PROVIDER_CONFIG = "redis://:forgejo@${dbHost}:6379";
|
|
};
|
|
security = {
|
|
LOGIN_REMEMBER_DAYS = 14;
|
|
};
|
|
database = {
|
|
DB_TYPE = lib.mkForce "postgres";
|
|
HOST = "${dbHost}:5432";
|
|
NAME = dbLogin;
|
|
USER = dbLogin;
|
|
PASSWD = dbLogin;
|
|
};
|
|
cache = {
|
|
ENABLED = true;
|
|
ADAPTER = lib.mkForce "redis";
|
|
HOST = "redis://:forgejo@${dbHost}:6379";
|
|
};
|
|
metrics = {
|
|
ENABLED = true;
|
|
ENABLED_ISSUE_BY_REPOSITORY = true;
|
|
ENABLED_ISSUE_BY_LABEL = true;
|
|
};
|
|
mailer = {
|
|
ENABLED = true;
|
|
FROM = "forgejo@flake.sh";
|
|
PROTOCOL = "smtp+starttls";
|
|
SMTP_ADDR = "mail.smtp2go.com";
|
|
SMTP_PORT = 587;
|
|
USER = "forgejo-mailer";
|
|
};
|
|
};
|
|
};
|
|
services.fail2ban.jails.forgejo = {
|
|
settings = {
|
|
filter = "forgejo";
|
|
action = ''iptables-allports'';
|
|
mode = "aggressive";
|
|
maxretry = 3;
|
|
findtime = 3600;
|
|
bantime = 900;
|
|
};
|
|
};
|
|
environment.etc = {
|
|
"fail2ban/filter.d/forgejo.conf".text = ''
|
|
[Definition]
|
|
failregex = ^.*(Failed authentication attempt|invalid credentials|Attempted access of unknown user).* from <HOST>$
|
|
journalmatch = _SYSTEMD_UNIT=forgejo.service
|
|
'';
|
|
};
|
|
}
|