heather: enable teable stack (teable.iscg.dev)

app + postgres:15 + redis. Данные перенесены с iscg-dev (2026-07-12):
- postgres восстановлен из pg_dump (18M) с новым паролем
- .assets (3.2G, 4392 файлов) в named volume heather_teable-assets
- teable-data, redis пустые (наполнятся при старте)

Секреты (POSTGRES_PASSWORD, SECRET_KEY, PRISMA_DATABASE_URL) новые,
в pass iscg.dev/teable/. env-файл /var/lib/teable-secrets/teable.env
на heather (вне git, root:docker 0640).
This commit is contained in:
mikl 2026-07-12 20:09:15 +03:00
parent 260a6c64bf
commit 3e3241683f

View file

@ -33,6 +33,7 @@
teable-data = {};
teable-db = {};
teable-redis = {};
teable-assets = {};
# jitsi-стек (когда добавим):
# jitsi-prosody-config = {};
# jitsi-jvb-config = {};
@ -91,30 +92,48 @@
# или секцией после forgejo.
# === Teable (teable.iscg.dev) ===
# Тяжёлый стек: app + postgres + redis. Добавить после forgejo.
#
# teable = {
# service.image = "teableio/teable:latest";
# service.container_name = "teable";
# service.restart = "unless-stopped";
# service.ports = [ "127.0.0.1:2345:3000" ];
# service.volumes = [ "teable-data:/app/data" ];
# service.depends_on = [ "teable-db" "teable-redis" ];
# # TODO: env (DATABASE_URL, REDIS_URL, SECRET_KEY, PUBLIC_ORIGIN, ...)
# };
# teable-db = {
# service.image = "postgres:15-alpine";
# service.container_name = "teable-db";
# service.restart = "unless-stopped";
# service.volumes = [ "teable-db:/var/lib/postgresql/data" ];
# # TODO: POSTGRES_PASSWORD (sops)
# };
# teable-redis = {
# service.image = "redis:alpine";
# service.container_name = "teable-redis";
# service.restart = "unless-stopped";
# service.volumes = [ "teable-redis:/data" ];
# };
# Стек: app + postgres + redis. Данные перенесены с iscg-dev (2026-07-12):
# - postgres восстановлен из pg_dump (18M, consistent, без остановки источника)
# - .assets (3.2G, 4392 файлов) в named volume heather_teable-assets
# - teable-data (local-storage) пустой — наполняется при работе
# - redis пустой — кэш, перестраивается
# Секреты (POSTGRES_PASSWORD, SECRET_KEY) новые, в pass iscg.dev/teable/.
# НЕ пушить env-файл в forgejo — secrets.
teable = {
service.image = "teableio/teable:latest";
service.container_name = "teable";
service.restart = "unless-stopped";
service.ports = [ "127.0.0.1:2345:3000" ];
service.volumes = [
"teable-data:/app/.local-storage"
"teable-assets:/app/.assets"
];
service.depends_on = [ "teable-db" "teable-redis" ];
service.env_file = [ "/var/lib/teable-secrets/teable.env" ];
service.environment = {
POSTGRES_HOST = "teable-db";
POSTGRES_PORT = "5432";
POSTGRES_DB = "teable";
POSTGRES_USER = "teable";
REDIS_URL = "redis://teable-redis:6379";
PUBLIC_DOMAIN = "teable.iscg.dev";
PUBLIC_ORIGIN = "https://teable.iscg.dev";
};
};
teable-db = {
service.image = "postgres:15-alpine";
service.container_name = "teable-db";
service.restart = "unless-stopped";
service.volumes = [ "teable-db:/var/lib/postgresql/data" ];
service.env_file = [ "/var/lib/teable-secrets/teable.env" ];
};
teable-redis = {
service.image = "redis:alpine";
service.container_name = "teable-redis";
service.restart = "unless-stopped";
service.command = "redis-server --appendonly yes";
service.volumes = [ "teable-redis:/data" ];
};
# === Silverbullet (note.iscg.dev) — ИСКЛЮЧЕНИЕ: bind mount ===
# Space = /srv/syncthing/herbarium (sync'ается syncthing на устройства).