69 lines
2.0 KiB
Nix
69 lines
2.0 KiB
Nix
{ config, containerCfg, pkgs, lib, builder, name,... }:
|
|
let
|
|
serverCfg = config.syscfg.server;
|
|
image = pkgs.dockerTools.streamLayeredImage {
|
|
name = "etherpad";
|
|
tag = pkgs.etherpad-lite.version;
|
|
contents = with pkgs;[ etherpad-lite bash coreutils cacert curl ];
|
|
fakeRootCommands = ''
|
|
mkdir -p ./var/lib/etherpad
|
|
chown -R 5001:5001 ./var/lib/etherpad
|
|
'';
|
|
config = {
|
|
Cmd = [ "${pkgs.etherpad-lite}/bin/etherpad-lite" ];
|
|
User = "${toString uid}:${toString gid}";
|
|
WorkingDir = "/var/lib/etherpad";
|
|
ExposedPorts = { "${toString containerCfg.port}/tcp" = {}; };
|
|
Env = [
|
|
"NODE_ENV=production"
|
|
"HOME=/var/lib/etherpad"
|
|
];
|
|
|
|
};
|
|
};
|
|
in {
|
|
paths = [{
|
|
path="${serverCfg.configPath}/etherpad/data";
|
|
owner = "1000:1000";
|
|
mode = "0755";
|
|
}{
|
|
path="${serverCfg.configPath}/etherpad/APIKEY.txt";
|
|
owner = "1000:1000";
|
|
mode = "0755";
|
|
backup = true;
|
|
}];
|
|
|
|
containers = {
|
|
server = builder.mkContainer {
|
|
subdomain = containerCfg.subdomain;
|
|
imageStream = image;
|
|
port = containerCfg.port;
|
|
ip = containerCfg.ip;
|
|
secret = name;
|
|
extraEnv = {
|
|
NODE_ENV = "production";
|
|
TITLE = "Pad";
|
|
PORT = toString containerCfg.port;
|
|
DB_TYPE = "postgres";
|
|
DB_HOST = builder.host;
|
|
DB_NAME = "etherpad_db";
|
|
DB_USER = "etherpad_user";
|
|
DB_PASS = "ETHERPAD_DB_PASSWORD";
|
|
ADMIN_PASSWORD = "ETHERPAD_ADMIN_PASSWORD";
|
|
"TRUST_PROXY" = "true";
|
|
DB_CHARSET = "utf8mb4";
|
|
DEFAULT_PAD_TEXT = "";
|
|
PAD_OPTIONS_SHOW_LINE_NUMBERS = "true";
|
|
PAD_OPTIONS_USE_MONOSPACE_FONT = "true";
|
|
SKIN_VARIANTS = "super-dark-toolbar light-editor dark-background";
|
|
};
|
|
overrides = {
|
|
volumes = [
|
|
"${serverCfg.configPath}/etherpad/data:/opt/etherpad-lite/var"
|
|
"${serverCfg.configPath}/etherpad/APIKEY.txt:/opt/etherpad-lite/APIKEY.txt"
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|