Move git to self-hosted hardware
This commit is contained in:
@@ -10,12 +10,20 @@
|
|||||||
./postgres.nix
|
./postgres.nix
|
||||||
./synapse.nix
|
./synapse.nix
|
||||||
];
|
];
|
||||||
greg.home = false;
|
greg = {
|
||||||
greg.linode.enable = true;
|
home = false;
|
||||||
greg.tailscale.enable = true;
|
linode.enable = true;
|
||||||
networking.hostName = "linode";
|
tailscale.enable = true;
|
||||||
networking.domain = "thehellings.com";
|
};
|
||||||
|
networking = {
|
||||||
|
hostName = "linode";
|
||||||
|
domain = "thehellings.com";
|
||||||
|
nameservers = [
|
||||||
|
"100.88.91.27"
|
||||||
|
];
|
||||||
|
};
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
bind
|
||||||
forgejo
|
forgejo
|
||||||
gitea-actions-runner
|
gitea-actions-runner
|
||||||
graphviz
|
graphviz
|
||||||
|
|||||||
+5
-121
@@ -2,132 +2,16 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
srcDomain = "src.thehellings.com";
|
srcDomain = "src.thehellings.com";
|
||||||
ciDomain = "ci.thehellings.com";
|
|
||||||
ciPort = "17080";
|
|
||||||
droneDir = "/var/lib/drone";
|
|
||||||
execWorkDir = "/var/lib/drone-exec";
|
|
||||||
droneWorkerEnvironment = {
|
|
||||||
DRONE_RPC_PROTO = "https";
|
|
||||||
DRONE_RPC_HOST = ciDomain;
|
|
||||||
DRONE_RUNNER_CAPACITY = "2";
|
|
||||||
DRONE_RUNNER_NAME = "docker";
|
|
||||||
};
|
|
||||||
in {
|
in {
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.drone-runner-exec ];
|
|
||||||
##########################################################################################
|
|
||||||
###########
|
|
||||||
# GIT SERVICES
|
|
||||||
##########
|
|
||||||
##########################################################################################
|
|
||||||
services = {
|
|
||||||
forgejo = rec {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.unstable.forgejo;
|
|
||||||
database = {
|
|
||||||
type = "postgres";
|
|
||||||
user = "forgejo";
|
|
||||||
};
|
|
||||||
dump = {
|
|
||||||
enable = true;
|
|
||||||
type = "tar.xz";
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
actions.ENABLED = true;
|
|
||||||
DEFAULT = {
|
|
||||||
APP_NAME = "Greg's Sources";
|
|
||||||
};
|
|
||||||
server = rec {
|
|
||||||
ROOT_URL = "https://${DOMAIN}/";
|
|
||||||
DOMAIN = srcDomain;
|
|
||||||
HTTP_PORT = 3001;
|
|
||||||
};
|
|
||||||
service.DISABLE_REGISTRATION = pkgs.lib.mkForce true;
|
|
||||||
session.COOKIE_SECURE = pkgs.lib.mkForce true;
|
|
||||||
log.level = "Info";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# For now, at least, this is the same as Forgejo's action runner
|
|
||||||
gitea-actions-runner.instances = {
|
|
||||||
exec = {
|
|
||||||
enable = true;
|
|
||||||
hostPackages = with pkgs; [
|
|
||||||
bashInteractive
|
|
||||||
podman
|
|
||||||
git
|
|
||||||
nodejs
|
|
||||||
];
|
|
||||||
name = "Linode";
|
|
||||||
labels = [
|
|
||||||
"native:host"
|
|
||||||
];
|
|
||||||
tokenFile = config.age.secrets.forgejo-runner.path;
|
|
||||||
url = "https://src.thehellings.com";
|
|
||||||
settings = {
|
|
||||||
log.level = "info";
|
|
||||||
runner = {
|
|
||||||
file = ".runner";
|
|
||||||
capacity = 3;
|
|
||||||
envs = {}; # Environment variables
|
|
||||||
env_file = ".env";
|
|
||||||
timeout = "3h"; # This is the default on Gitea/Forgejo as well
|
|
||||||
insecure = false; # TLS verification
|
|
||||||
fetch_timeout = "5s";
|
|
||||||
fetch_interval = "2s";
|
|
||||||
#labels = []; # See above
|
|
||||||
};
|
|
||||||
cache = {
|
|
||||||
enabled = true;
|
|
||||||
dir = ""; # Default is $HOME/.cache/actcache
|
|
||||||
host = ""; # How to access cache from the runner, autodetect
|
|
||||||
port = 0;
|
|
||||||
external_server = ""; #We are not going externally
|
|
||||||
};
|
|
||||||
container = {
|
|
||||||
network = ""; # Auto-create
|
|
||||||
privileged = false;
|
|
||||||
options = null;
|
|
||||||
workdir_parent = "/workspace";
|
|
||||||
valid_volumes = [];
|
|
||||||
#docker_host = "";
|
|
||||||
force_pull = false;
|
|
||||||
};
|
|
||||||
host = {
|
|
||||||
workdir_parent = null; # Default $HOME/.cache/act
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
logrotate = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
forgejo = {
|
|
||||||
enable = true;
|
|
||||||
files = "${config.services.forgejo.dump.backupDir}/*";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
age.secrets.forgejo-runner = {
|
|
||||||
file = ../../secrets/linode-forgejo-runner.age;
|
|
||||||
owner = config.systemd.services.gitea-runner-exec.serviceConfig.User;
|
|
||||||
};
|
|
||||||
|
|
||||||
greg.proxies."${srcDomain}" = {
|
greg.proxies."${srcDomain}" = {
|
||||||
target = "${config.services.forgejo.settings.server.PROTOCOL}://${config.services.forgejo.settings.server.DOMAIN}:${toString config.services.forgejo.settings.server.HTTP_PORT}";
|
target = "http://git.thehellings.lan";
|
||||||
ssl = true;
|
ssl = true;
|
||||||
genAliases = false;
|
genAliases = false;
|
||||||
|
extraConfig = ''
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_set_header X-Forwarded-Ssl on;
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
greg.backup.jobs.forgejo = {
|
|
||||||
src = config.services.forgejo.dump.backupDir;
|
|
||||||
dest = "forgejo";
|
|
||||||
user = "forgejo";
|
|
||||||
};
|
|
||||||
|
|
||||||
##########################################################################################
|
##########################################################################################
|
||||||
###########
|
###########
|
||||||
# CI SERVICES
|
# CI SERVICES
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ let
|
|||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection $connection_upgrade;
|
proxy_set_header Connection $connection_upgrade;
|
||||||
'';
|
'' + dest.extraConfig;
|
||||||
};
|
};
|
||||||
serverAliases = lib.mkIf dest.genAliases [ "${alias name}" ];
|
serverAliases = lib.mkIf dest.genAliases [ "${alias name}" ];
|
||||||
};
|
};
|
||||||
@@ -63,6 +63,12 @@ in with lib; {
|
|||||||
description = "The path prefix for this proxy";
|
description = "The path prefix for this proxy";
|
||||||
default = "/";
|
default = "/";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = "Extra nginx config options";
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user