From 0af2f42c1f28232396bb11e05880fe238897c8ad Mon Sep 17 00:00:00 2001 From: emptyynes Date: Mon, 29 Sep 2025 02:13:41 +0700 Subject: [PATCH] affine config changed --- affine/containers/affine-server.nix | 43 +++++++++++++++++++++++++++++ affine/containers/migration.nix | 40 +++++++++++++++++++++++++++ affine/containers/postgres.nix | 36 ++++++++++++++++++++++++ affine/containers/redis.nix | 27 ++++++++++++++++++ 4 files changed, 146 insertions(+) create mode 100644 affine/containers/affine-server.nix create mode 100644 affine/containers/migration.nix create mode 100644 affine/containers/postgres.nix create mode 100644 affine/containers/redis.nix diff --git a/affine/containers/affine-server.nix b/affine/containers/affine-server.nix new file mode 100644 index 0000000..3dc270e --- /dev/null +++ b/affine/containers/affine-server.nix @@ -0,0 +1,43 @@ +{ pkgs, lib, config, ... }: + +let + affine-static = "/var/lib/affine"; + affine-config = config.services.affine; +in { + config = lib.mkIf affine-config.enable { + virtualisation.oci-containers.containers."affine_server" = { + image = "ghcr.io/toeverything/affine:stable"; + environment = with affine-config.env; { + "AFFINE_INDEXER_ENABLED" = "false"; + "AFFINE_REVISION" = config.services.affine.revision; + "CONFIG_LOCATION" = "${affine-static}/config"; + "DATABASE_URL" = "postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/${DB_DATABASE}"; + "DB_DATABASE" = DB_DATABASE; + "DB_DATA_LOCATION" = "${affine-static}/db"; + "DB_PASSWORD" = DB_PASSWORD; + "DB_USERNAME" = DB_USERNAME; + "PORT" = toString PORT; + "REDIS_SERVER_HOST" = "redis"; + "UPLOAD_LOCATION" = "${affine-static}/storage"; + }; + volumes = [ + "${affine-static}/config:/root/.affine/config:rw" + "${affine-static}/storage:/root/.affine/storage:rw" + ]; + ports = [ "${ toString config.services.affine.env.PORT}:3010/tcp" ]; + dependsOn = [ "affine_migration_job" "affine_postgres" "affine_redis" ]; + log-driver = "journald"; + extraOptions = [ + "--network-alias=affine" + "--network=affine_default" + ]; + }; + systemd.services."docker-affine_server" = { + serviceConfig.Restart = lib.mkOverride 90 "always"; + after = [ "docker-network-affine_default.service" ]; + requires = [ "docker-network-affine_default.service" ]; + partOf = [ "docker-compose-affine-root.target" ]; + wantedBy = [ "docker-compose-affine-root.target" ]; + }; + }; +} \ No newline at end of file diff --git a/affine/containers/migration.nix b/affine/containers/migration.nix new file mode 100644 index 0000000..9abea36 --- /dev/null +++ b/affine/containers/migration.nix @@ -0,0 +1,40 @@ +{ pkgs, lib, config, ... }: + +let + affine-static = "/var/lib/affine"; + affine-config = config.services.affine; +in { + config = lib.mkIf affine-config.enable { + virtualisation.oci-containers.containers."affine_migration_job" = { + image = "ghcr.io/toeverything/affine:stable"; + environment = with affine-config.env; { + "AFFINE_INDEXER_ENABLED" = "false"; + "AFFINE_REVISION" = config.services.affine.revision; + "CONFIG_LOCATION" = "${affine-static}/config"; + "DATABASE_URL" = "postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/${DB_DATABASE}"; + "DB_DATABASE" = DB_DATABASE; + "DB_DATA_LOCATION" = "${affine-static}/db"; + "DB_PASSWORD" = DB_PASSWORD; + "DB_USERNAME" = DB_USERNAME; + "PORT" = toString PORT; + "REDIS_SERVER_HOST" = "redis"; + "UPLOAD_LOCATION" = "${affine-static}/storage"; + }; + volumes = [ + "${affine-static}/config:/root/.affine/config:rw" + "${affine-static}/storage:/root/.affine/storage:rw" + ]; + cmd = [ "sh" "-c" "node ./scripts/self-host-predeploy.js" ]; + dependsOn = [ "affine_postgres" "affine_redis" ]; + log-driver = "journald"; + extraOptions = [ "--network-alias=affine_migration" "--network=affine_default" ]; + }; + systemd.services."docker-affine_migration_job" = { + serviceConfig.Restart = lib.mkOverride 90 "no"; + after = [ "docker-network-affine_default.service" ]; + requires = [ "docker-network-affine_default.service" ]; + partOf = [ "docker-compose-affine-root.target" ]; + wantedBy = [ "docker-compose-affine-root.target" ]; + }; + }; +} \ No newline at end of file diff --git a/affine/containers/postgres.nix b/affine/containers/postgres.nix new file mode 100644 index 0000000..a70f482 --- /dev/null +++ b/affine/containers/postgres.nix @@ -0,0 +1,36 @@ +{ pkgs, lib, config, ... }: + +let + affine-static = "/var/lib/affine"; + affine-config = config.services.affine; +in { + config = lib.mkIf affine-config.enable { + virtualisation.oci-containers.containers."affine_postgres" = { + image = "pgvector/pgvector:pg16"; + environment = with affine-config.env; { + "POSTGRES_DB" = DB_DATABASE; + "POSTGRES_HOST_AUTH_METHOD" = "trust"; + "POSTGRES_INITDB_ARGS" = "--data-checksums"; + "POSTGRES_PASSWORD" = DB_PASSWORD; + "POSTGRES_USER" = DB_USERNAME; + }; + volumes = [ "${affine-static}/db:/var/lib/postgresql/data:rw" ]; + log-driver = "journald"; + extraOptions = with affine-config.env; [ + "--health-cmd=[\"pg_isready\", \"-U\", \"${DB_USERNAME}\", \"-d\", \"${DB_DATABASE}\"]" + "--health-interval=10s" + "--health-retries=5" + "--health-timeout=5s" + "--network-alias=postgres" + "--network=affine_default" + ]; + }; + systemd.services."docker-affine_postgres" = { + serviceConfig.Restart = lib.mkOverride 90 "always"; + after = [ "docker-network-affine_default.service" ]; + requires = [ "docker-network-affine_default.service" ]; + partOf = [ "docker-compose-affine-root.target" ]; + wantedBy = [ "docker-compose-affine-root.target" ]; + }; + }; +} \ No newline at end of file diff --git a/affine/containers/redis.nix b/affine/containers/redis.nix new file mode 100644 index 0000000..56e1d3c --- /dev/null +++ b/affine/containers/redis.nix @@ -0,0 +1,27 @@ +{ pkgs, lib, config, ... }: + +let + affine-config = config.services.affine; +in { + config = lib.mkIf affine-config.enable { + virtualisation.oci-containers.containers."affine_redis" = { + image = "redis"; + log-driver = "journald"; + extraOptions = [ + "--health-cmd=[\"redis-cli\", \"--raw\", \"incr\", \"ping\"]" + "--health-interval=10s" + "--health-retries=5" + "--health-timeout=5s" + "--network-alias=redis" + "--network=affine_default" + ]; + }; + systemd.services."docker-affine_redis" = { + serviceConfig.Restart = lib.mkOverride 90 "always"; + after = [ "docker-network-affine_default.service" ]; + requires = [ "docker-network-affine_default.service" ]; + partOf = [ "docker-compose-affine-root.target" ]; + wantedBy = [ "docker-compose-affine-root.target" ]; + }; + }; +} \ No newline at end of file