Compare commits

..

2 Commits

Author SHA1 Message Date
Renovate Bot
a0e210880c Lock file maintenance 2023-12-07 01:01:52 +00:00
soraefir
700476d9a0 [m] Added more docker services 2023-12-07 01:07:42 +01:00
5 changed files with 211 additions and 33 deletions

36
flake.lock generated
View File

@ -39,11 +39,11 @@
}, },
"hardware": { "hardware": {
"locked": { "locked": {
"lastModified": 1701598471, "lastModified": 1701656485,
"narHash": "sha256-kHdJ2qc4qKeMTzUIHEcP41ah/dBIhCgvWgrjllt2G78=", "narHash": "sha256-xDFormrGCKKGqngHa2Bz1GTeKlFMMjLnHhTDRdMJ1hs=",
"owner": "nixos", "owner": "nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "a89745edd5f657e2e5be5ed1bea86725ca78d92e", "rev": "fa194fc484fd7270ab324bb985593f71102e84d1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -59,11 +59,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1701609479, "lastModified": 1701728041,
"narHash": "sha256-mcEnMz7XB3K57ZX16VXoEkswljSNGXdMuUu5+g8a8R8=", "narHash": "sha256-x0pyrI1vC8evVDxCxyO6olOyr4wlFg9+VS3C3p4xFYQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e504e8d01f950776c3a3160ba38c5957a1b89e66", "rev": "ac7216918cd65f3824ba7817dea8f22e61221eaf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -83,11 +83,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1701641047, "lastModified": 1701907765,
"narHash": "sha256-z/AElzl79XHH8w9v9EI1ZmAmRd99ZMHKF2l7p+rf4rA=", "narHash": "sha256-VHdZeeYTUkzFLipnQnm/SrURbMHXTXlxv9goVoj5yFM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "e496b0f250139b572307d048f3189aa6dde72f18", "rev": "62a8d0be5c1959ade8410f8f964e362288f22175",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -142,11 +142,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1701253981, "lastModified": 1701718080,
"narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", "narHash": "sha256-6ovz0pG76dE0P170pmmZex1wWcQoeiomUZGggfH9XPs=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", "rev": "2c7f3c0fb7c08a0814627611d9d7d45ab6d75335",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -173,11 +173,11 @@
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1701645127, "lastModified": 1701906331,
"narHash": "sha256-MhsntrTDlOnlGW3HRTxs1H+BUCHbA0uYb0i3pwxugi8=", "narHash": "sha256-4dzaExoiung1HWn0nTp9xBHtB5rQMTsfOC2FtJuUoH4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nur", "repo": "nur",
"rev": "e7d5551b1d558382e503c8b827c6ff48cd50baa7", "rev": "b8ad2b1feccf3b75e2d7fabad6d97769318febf4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -208,11 +208,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1701572436, "lastModified": 1701728052,
"narHash": "sha256-0anfOQqDend6kSuF8CmOSAZsiAS1nwOsin5VQukh6Q4=", "narHash": "sha256-7lOMc3PtW5a55vFReBJLLLOnopsoi1W7MkjJ93jPV4E=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "8bca48cb9a12bbd8766f359ad00336924e91b7f7", "rev": "e91ece6d2cf5a0ae729796b8f0dedceab5107c3d",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -45,10 +45,10 @@
truncation_symbol = "/"; truncation_symbol = "/";
}; };
directory.substitutions = { directory.substitutions = {
"documents" = " "; "documents" = "󰮜 ";
"downloads" = " "; "downloads" = "󱃩 ";
"music" = " "; "files" = "󱧷 ";
"pictures" = " "; "media" = "󱍚 ";
}; };
env_var = { env_var = {
variable = "SHELLENVTYPE"; variable = "SHELLENVTYPE";

View File

@ -3,6 +3,7 @@ let
HOST_DOMAIN = "helcel.net"; HOST_DOMAIN = "helcel.net";
MAIL_HOST_DOMAIN = "norereply.${HOST_DOMAIN}"; MAIL_HOST_DOMAIN = "norereply.${HOST_DOMAIN}";
MAIL_SERVER_DOMAIN = "mail.infomaniak.com"; MAIL_SERVER_DOMAIN = "mail.infomaniak.com";
DATA_PATH = "/media/data/";
in { in {
project.name = "Authentik"; project.name = "Authentik";
@ -45,21 +46,20 @@ in {
restart = "unless-stopped"; restart = "unless-stopped";
networks = [ "internal" "external" ]; networks = [ "internal" "external" ];
volumes = [ volumes = [
"/media/data/authentik/media:/media" "${DATA_PATH}/authentik/media:/media"
"/media/data/authentik/templates:/templates" "${DATA_PATH}/authentik/templates:/templates"
]; ];
environment = { environment = {
"AUTHENTIK_REDIS__HOST" = "auth_redis"; "AUTHENTIK_REDIS__HOST" = "auth_redis";
"AUTHENTIK_POSTGRESQL__HOST" = "auth_postgresql"; "AUTHENTIK_POSTGRESQL__HOST" = "auth_postgresql";
"AUTHENTIK_POSTGRESQL__USER" = "authentik"; "AUTHENTIK_POSTGRESQL__USER" = "authentik";
"AUTHENTIK_POSTGRESQL__NAME" = "authentik"; "AUTHENTIK_POSTGRESQL__NAME" = "authentik";
"AUTHENTIK_POSTGRESQL__PASSWORD" = "AUTHENTIK_POSTGRESQL__PASSWORD" ="AUTHENTIK_DB_PASSWORD";
"/run/secrets/AUTHENTIK_POSTGRESQL__PASSWORD"; "AUTHENTIK_SECRET_KEY" = "AUTHENTIK_SECRET_KEY";
"AUTHENTIK_SECRET_KEY" = "/run/secrets/AUTHENTIK_SECRET_KEY";
"AUTHENTIK_EMAIL__HOST" = "${MAIL_SERVER_DOMAIN}"; "AUTHENTIK_EMAIL__HOST" = "${MAIL_SERVER_DOMAIN}";
"AUTHENTIK_EMAIL__PORT" = "587"; "AUTHENTIK_EMAIL__PORT" = "587";
"AUTHENTIK_EMAIL__USERNAME" = "noreply@${MAIL_HOST_DOMAIN}"; "AUTHENTIK_EMAIL__USERNAME" = "noreply@${MAIL_HOST_DOMAIN}";
"AUTHENTIK_EMAIL__PASSWORD" = "/run/secrets/AUTHENTIK_EMAIL__PASSWORD"; "AUTHENTIK_EMAIL__PASSWORD" = "AUTHENTIK_EMAIL_PASSWORD";
"AUTHENTIK_EMAIL__USE_TLS" = "true"; "AUTHENTIK_EMAIL__USE_TLS" = "true";
"AUTHENTIK_EMAIL__USE_SSL" = "false"; "AUTHENTIK_EMAIL__USE_SSL" = "false";
"AUTHENTIK_EMAIL__TIMEOUT" = "10"; "AUTHENTIK_EMAIL__TIMEOUT" = "10";
@ -85,8 +85,8 @@ in {
restart = "unless-stopped"; restart = "unless-stopped";
networks = [ "internal" ]; networks = [ "internal" ];
volumes = [ volumes = [
"/media/data/authentik/media:/media" "${DATA_PATH}/authentik/media:/media"
"/media/data/authentik/templates:/templates" "${DATA_PATH}/authentik/templates:/templates"
"/var/run/docker.sock:/var/run/docker.sock" "/var/run/docker.sock:/var/run/docker.sock"
]; ];
environment = { environment = {
@ -94,9 +94,8 @@ in {
"AUTHENTIK_POSTGRESQL__HOST" = "auth_postgresql"; "AUTHENTIK_POSTGRESQL__HOST" = "auth_postgresql";
"AUTHENTIK_POSTGRESQL__USER" = "authentik"; "AUTHENTIK_POSTGRESQL__USER" = "authentik";
"AUTHENTIK_POSTGRESQL__NAME" = "authentik"; "AUTHENTIK_POSTGRESQL__NAME" = "authentik";
"AUTHENTIK_POSTGRESQL__PASSWORD" = "AUTHENTIK_POSTGRESQL__PASSWORD" ="AUTHENTIK_DB_PASSWORD";
"/run/secrets/AUTHENTIK_POSTGRESQL__PASSWORD"; "AUTHENTIK_SECRET_KEY" = "AUTHENTIK_SECRET_KEY";
"AUTHENTIK_SECRET_KEY" = "/run/secrets/AUTHENTIK_SECRET_KEY";
}; };
labels = { "traefik.enable" = "false"; }; labels = { "traefik.enable" = "false"; };
command = "worker"; command = "worker";

View File

@ -0,0 +1,146 @@
{ pkgs, ... }:
let
HOST_DOMAIN = "helcel.net";
DB_HOST = "10.10.1.2";
DB_PORT = "3306";
MAIL_HOST_DOMAIN = "norereply.${HOST_DOMAIN}";
MAIL_SERVER_DOMAIN = "mail.infomaniak.com";
DATA_PATH = "/media/data/";
in {
project.name = "Cloud";
networks = {
internal = {
internal = true;
external = false;
};
external = { external = true; };
};
services = {
cloud_nextcloud.service = {
image = "nextcloud:27";
container_name = "cloud";
restart = "unless-stopped";
networks = [ "external" ];
volumes = [
"${DATA_PATH}/data/nextcloud:/var/www/html"
"${DATA_PATH}/data/music:/media/music"
"${DATA_PATH}/data/video:/media/video"
"${DATA_PATH}/data/photo:/media/photo"
];
tmpfs = [ "/tmp" ];
labels = {
"traefik.enable" = "true";
"traefik.http.routers.nextcloud.entrypoints" = "web-secure";
"traefik.http.routers.nextcloud.rule" = "Host(`cloud.${HOST_DOMAIN}`)";
"traefik.http.routers.nextcloud.tls" = "true";
"traefik.http.routers.nextcloud.middlewares" = "sts_headers,nextcloud-caldav";
"traefik.http.middlewares.nextcloud-caldav.redirectregex.permanent" = "true";
"traefik.http.middlewares.nextcloud-caldav.redirectregex.regex" = "^https://(.*)/.well-known/(card|cal)dav";
"traefik.http.middlewares.nextcloud-caldav.redirectregex.replacement" = "https://$\${1}/remote.php/dav/";
"traefik.http.middlewares.sts_headers.headers.stsSeconds" = "15552000";
"traefik.http.middlewares.sts_headers.headers.stsIncludeSubdomains" = "true";
};
};
cloud_office.service = {
image = "collabora/code:latest";
container_name = "cloud_office";
restart = "unless-stopped";
networks = [ "external" ];
volumes = [ ];
environment = {
username = "COLLABORA_USER";
password = "COLLABORA_PASSWORD";
aliasgroup1 = "https://cloud.${HOST_DOMAIN}";
server_name = "office.${HOST_DOMAIN}";
VIRTUAL_HOST = "office.${HOST_DOMAIN}";
VIRTUAL_PORT = "9980";
VIRTUAL_PROTO = "http";
DONT_GEN_SSL_CERT = "true";
RESOLVE_TO_PROXY_IP = "true";
NETWORK_ACCESS = "internal";
extra_params = "--o:ssl.enable=false --o:ssl.termination=true";
dictionaries = "en fr de jp no";
};
labels = {
"traefik.enable" = "true";
"traefik.http.routers.collabora.entrypoints" = "web-secure";
"traefik.http.routers.collabora.rule" = "Host(`office.${HOST_DOMAIN}`)";
"traefik.http.routers.collabora.tls" = "true";
};
};
cloud_etherpad.service = {
image = "etherpad/etherpad:latest";
container_name = "etherpad";
restart = "unless-stopped";
networks = [ "external" ];
volumes = [
"${DATA_PATH}/ether/etherpad/data:/opt/etherpad-lite/var"
"/${DATA_PATH}/ether/etherpad/APIKEY.txt:/opt/etherpad-lite/APIKEY.txt"
];
environment = {
NODE_ENV = "production";
TITLE = "Helcel-Pad";
DB_TYPE = "mysql";
DB_HOST = DB_HOST;
DB_PORT = DB_PORT;
DB_NAME = "etherpad";
DB_USER = "ETHERPAD_DB_USER";
DB_PASS = "ETHERPAD_DB_PASSWORD";
DB_CHARSET = "utf8mb4";
DEFAULT_PAD_TEXT = "P A D";
PAD_OPTIONS_SHOW_LINE_NUMBERS = "true";
PAD_OPTIONS_USE_MONOSPACE_FONT = "true";
ADMIN_PASSWORD = "ETHERPAD_ADMIN_PASSWORD";
SKIN_VARIANTS = "super-dark-toolbar light-editor dark-background";
};
labels = {
"traefik.enable" = "true";
"traefik.http.routers.etherpad.entrypoints" = "web-secure";
"traefik.http.routers.etherpad.rule" = "Host(`pad.${HOST_DOMAIN}`)";
"traefik.http.routers.etherpad.tls" = "true";
};
};
cloud_ethercalc.service = {
image = "audreyt/ethercalc:latest";
container_name = "ethercalc";
restart = "unless-stopped";
networks = [ "external" "internal" ];
volumes = [
"${DATA_PATH}/ether/etherpad/data:/opt/etherpad-lite/var"
"/${DATA_PATH}/ether/etherpad/APIKEY.txt:/opt/etherpad-lite/APIKEY.txt"
];
environment = {
NODE_ENV = "production";
TITLE = "Helcel-Calc";
REDIS_PORT_6379_TCP_ADDR = "redis";
REDIS_PORT_6379_TCP_PORT = "6379";
ADMIN_PASSWORD = "ETHERPAD_ADMIN_PASSWORD";
SKIN_VARIANTS = "super-dark-toolbar light-editor dark-background";
};
labels = {
"traefik.enable" = "true";
"traefik.http.routers.ethercalc.entrypoints" = "web-secure";
"traefik.http.routers.ethercalc.rule" = "Host(`calc.${HOST_DOMAIN}`)";
"traefik.http.routers.ethercalc.tls" = "true";
};
};
cloud_redis.service = {
image = "redis:latest";
container_name = "ethercalc-redis";
restart = "unless-stopped";
networks = [ "internal" ];
volumes = [ "${DATA_PATH}/ether/ethercalc/redis:/data" ];
environment = { };
labels = { "traefik.enable" = "false"; };
};
};
}

View File

@ -0,0 +1,33 @@
{ pkgs, ... }:
let
HOST_DOMAIN = "helcel.net";
DB_HOST = "10.10.1.2";
DB_PORT = "3306";
MAIL_HOST_DOMAIN = "norereply.${HOST_DOMAIN}";
MAIL_SERVER_DOMAIN = "mail.infomaniak.com";
DATA_PATH = "/media/data/";
in {
project.name = "NEW";
networks = {
internal = {
internal = true;
external = false;
};
external = { external = true; };
};
services = {
NAME.service = {
image = "NAME:latest";
container_name = "NAME";
restart = "unless-stopped";
networks = [ "internal" ];
volumes = [ ];
environment = { };
labels = { "traefik.enable" = "false"; };
};
};
}