From 89e9e3441dbc5af49afdd14570192c8f657ae3dc Mon Sep 17 00:00:00 2001 From: hermes Date: Sat, 12 Sep 2026 16:17:53 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20Radicale=20(CalDAV)=20=D0=B8=20Vikunja?= =?UTF-8?q?=20(=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B8)=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20=D0=B2=20=D0=BA?= =?UTF-8?q?=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=20=D0=BF=D1=80=D0=BE=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - radicale/: compose, config, .env (данные в radicale/data/ — gitignored) - vikunja/: compose (postgres + vikunja :3456), .env (gitignored) - .gitignore: radicale/data/ (пароли/коллекции не в репо) - Блокер: docker на bigbox не может создавать контейнеры (systemd1 D-Bus timeout) — нужен внешний рестарт --- .gitignore | 4 ++++ radicale/config/config | 16 +++++++++++++ radicale/docker-compose.yml | 13 ++++++++++ vikunja/docker-compose.yml | 47 +++++++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 radicale/config/config create mode 100644 radicale/docker-compose.yml create mode 100644 vikunja/docker-compose.yml diff --git a/.gitignore b/.gitignore index 5acf28f..f564968 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,7 @@ Thumbs.db # Git *.orig + +# Radicale — данные (коллекции, users с паролями) +radicale/data/ +# Vikunja — секреты в .env уже выше; данные в volumes docker (не в каталоге) diff --git a/radicale/config/config b/radicale/config/config new file mode 100644 index 0000000..500ccdb --- /dev/null +++ b/radicale/config/config @@ -0,0 +1,16 @@ +[server] +hosts = 0.0.0.0:5232 + +[auth] +type = htpasswd +htpasswd_filename = /data/users +htpasswd_encryption = md5 + +[rights] +type = owner_only + +[storage] +filesystem_folder = /data/collections + +[logging] +level = info \ No newline at end of file diff --git a/radicale/docker-compose.yml b/radicale/docker-compose.yml new file mode 100644 index 0000000..98947a8 --- /dev/null +++ b/radicale/docker-compose.yml @@ -0,0 +1,13 @@ +# Radicale — CalDAV/CardDAV-сервер (календарь + задачи VTODO) +# Порт: 5232 (127.0.0.1), TLS — через Caddy (cal.nixg.ru) +services: + radicale: + image: kozea/radicale:latest + container_name: radicale + command: ["-C", "/config/config"] + ports: + - "5232:5232" + volumes: + - ./data:/data + - ./config:/config:ro + restart: unless-stopped \ No newline at end of file diff --git a/vikunja/docker-compose.yml b/vikunja/docker-compose.yml new file mode 100644 index 0000000..5e61f77 --- /dev/null +++ b/vikunja/docker-compose.yml @@ -0,0 +1,47 @@ +# Vikunja — трекер задач (WebUI + REST API) +# Порт: 3456 (локально), наружу — Caddy: tasks.nixg.ru → 10.8.0.2:3456 +# Данные: volumes vikunja-db (postgres) + vikunja-files (загрузки) +# Секреты: .env (VIKUNJA_DATABASE_PASSWORD, VIKUNJA_SERVICE_JWTSECRET) + +services: + db: + image: postgres:16-alpine + container_name: vikunja-db + restart: unless-stopped + environment: + POSTGRES_PASSWORD: ${VIKUNJA_DATABASE_PASSWORD} + POSTGRES_DB: vikunja + POSTGRES_USER: vikunja + volumes: + - vikunja-db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U vikunja -d vikunja"] + interval: 10s + timeout: 5s + retries: 5 + + vikunja: + image: vikunja/vikunja:latest + container_name: vikunja + restart: unless-stopped + depends_on: + db: + condition: service_healthy + environment: + VIKUNJA_DATABASE_TYPE: postgres + VIKUNJA_DATABASE_HOST: db + VIKUNJA_DATABASE_PORT: 5432 + VIKUNJA_DATABASE_DATABASE: vikunja + VIKUNJA_DATABASE_USERNAME: vikunja + VIKUNJA_DATABASE_PASSWORD: ${VIKUNJA_DATABASE_PASSWORD} + VIKUNJA_SERVICE_JWTSECRET: ${VIKUNJA_SERVICE_JWTSECRET} + VIKUNJA_SERVICE_FRONTENDURL: https://tasks.nixg.ru + VIKUNJA_SERVICE_PUBLICURL: https://tasks.nixg.ru + ports: + - "3456:80" + volumes: + - vikunja-files:/app/files + +volumes: + vikunja-db: + vikunja-files: \ No newline at end of file