Compare commits
2 Commits
0ffa44c59d
...
a0e210880c
Author | SHA1 | Date | |
---|---|---|---|
|
a0e210880c | ||
|
700476d9a0 |
36
flake.lock
generated
36
flake.lock
generated
@ -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": {
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
146
systems/avalon/server/docker/cloud.nix
Normal file
146
systems/avalon/server/docker/cloud.nix
Normal 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"; };
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
33
systems/avalon/server/docker/sample.nix
Normal file
33
systems/avalon/server/docker/sample.nix
Normal 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"; };
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user