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