Настройка 3 & Done: локальная система задач с голосовым вводом и PostgreSQL

Пошаговая инструкция по развёртыванию локальной системы задач 3 & Done с поддержкой голосового ввода, хранением аудио в PostgreSQL и защитой данных с помощью Git и шифрования.

Средний
Алексей Кузнецов
Алексей Кузнецов
Системный администратор21 октября 2026 г.3 мин чтения

Требования

  • Установленный Docker и Docker Compose
  • Доступ к серверу или локальной машине с Linux
  • Настроенный доступ к микрофону (для голосового ввода)
  • Базовые знания работы с PostgreSQL и Git

Создание директории проекта и конфигурационных файлов

Создаём структуру проекта, включая директории для конфигураций, данных и логов. Это позволяет чётко разделить компоненты системы и упростить управление.

mkdir -p ~/3anddone/{config,data,logs}
cd ~/3anddone

Настройка Docker Compose для сервисов

Создаём файл docker-compose.yml, в котором описываем сервисы: PostgreSQL для хранения задач и метаданных, приложение 3 & Done и сервис для обработки голоса. Используем сеть Docker для изоляции сервисов.

version: '3.8'
services:
  db:
    image: postgres:15
    container_name: 3anddone-db
    restart: unless-stopped
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
      - ./config/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
      POSTGRES_DB: tasks
      POSTGRES_USER: taskuser
      POSTGRES_PASSWORD: securepassword
    networks:
      - internal

  app:
    image: ghcr.io/3anddone/app:latest
    container_name: 3anddone-app
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "3000:3000"
    volumes:
      - ./data/audio:/app/audio
      - ./config/app.env:/app/.env
    networks:
      - internal

  voice:
    image: ghcr.io/3anddone/voice-service:latest
    container_name: 3anddone-voice
    restart: unless-stopped
    depends_on:
      - db
    volumes:
      - ./data/audio:/app/audio
    devices:
      - /dev/snd:/dev/snd
    networks:
      - internal

networks:
  internal:
    driver: bridge

Инициализация базы данных PostgreSQL

Создаём SQL-скрипт для инициализации базы данных: таблицы для задач, пользователей и метаданных аудио. Это обеспечивает структурированное хранение данных и поддерживает быстрый поиск.

-- config/postgres/init.sql
CREATE TABLE IF NOT EXISTS tasks (
    id SERIAL PRIMARY KEY,
    title TEXT NOT NULL,
    description TEXT,
    completed BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS audio_records (
    id SERIAL PRIMARY KEY,
    task_id INTEGER REFERENCES tasks(id),
    file_path TEXT NOT NULL,
    duration INTEGER,
    created_at TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_tasks_completed ON tasks(completed);
CREATE INDEX idx_audio_task_id ON audio_records(task_id);

Настройка конфигурации приложения

Создаём файл конфигурации приложения с параметрами подключения к базе данных, путями для хранения аудио и настройками приватности. Все чувствительные данные шифруются с помощью Git-совместимого менеджера секретов.

# config/app.env
DATABASE_URL=postgresql://taskuser:securepassword@db:5432/tasks
AUDIO_STORAGE_PATH=/app/audio
ENABLE_VOICE_INPUT=true
PRIVACY_MODE=strict
ENCRYPTION_KEY=your-encryption-key-here

Запуск системы и проверка статуса

Запускаем все сервисы с помощью Docker Compose и проверяем их статус. Убеждаемся, что контейнеры работают корректно и доступны по нужным портам.

docker-compose up -d
docker-compose ps

Настройка резервного копирования с использованием Git

Создаём скрипт для автоматического резервного копирования базы данных и конфигураций с использованием Git. Это обеспечивает защиту данных и возможность отката к предыдущим версиям.

#!/bin/bash
# backup.sh
cd ~/3anddone
pg_dump -h localhost -U taskuser tasks > backup_$(date +%F).sql
git add .
git commit -m "Backup $(date)"
git push origin main

Автоматизация резервного копирования с помощью cron

Добавляем задачу в планировщик cron для автоматического выполнения резервного копирования каждую ночь. Это гарантирует, что данные будут защищены даже при сбое системы.

crontab -e
# Добавьте строку:
0 2 * * * /home/user/3anddone/backup.sh >> /home/user/3anddone/logs/backup.log 2>&1

Проверка доступа к веб-интерфейду и голосовому вводу

Открываем веб-интерфейс в браузере и проверяем возможность создания задач, а также работу голосового ввода. Убеждаемся, что аудио сохраняется корректно и доступно для воспроизведения.

# Проверьте доступность веб-интерфейса:
curl http://localhost:3000

# Проверьте логи приложения:
docker-compose logs app

Настройка 3 & Done: локальная система задач с голосовым вводом и PostgreSQL

Пошаговая инструкция по развёртыванию локальной системы задач 3 & Done с поддержкой голосового ввода, хранением аудио в PostgreSQL и защитой данных с помощью Git и шифрования.

Предварительные требования

  • Установленный Docker и Docker Compose
  • Доступ к серверу или локальной машине с Linux
  • Настроенный доступ к микрофону (для голосового ввода)
  • Базовые знания работы с PostgreSQL и Git

Шаг 1: Создание директории проекта и конфигурационных файлов

Создаём структуру проекта, включая директории для конфигураций, данных и логов. Это позволяет чётко разделить компоненты системы и упростить управление.

mkdir -p ~/3anddone/{config,data,logs}
cd ~/3anddone

Шаг 2: Настройка Docker Compose для сервисов

Создаём файл docker-compose.yml, в котором описываем сервисы: PostgreSQL для хранения задач и метаданных, приложение 3 & Done и сервис для обработки голоса. Используем сеть Docker для изоляции сервисов.

version: '3.8'
services:
  db:
    image: postgres:15
    container_name: 3anddone-db
    restart: unless-stopped
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
      - ./config/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
      POSTGRES_DB: tasks
      POSTGRES_USER: taskuser
      POSTGRES_PASSWORD: securepassword
    networks:
      - internal

  app:
    image: ghcr.io/3anddone/app:latest
    container_name: 3anddone-app
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "3000:3000"
    volumes:
      - ./data/audio:/app/audio
      - ./config/app.env:/app/.env
    networks:
      - internal

  voice:
    image: ghcr.io/3anddone/voice-service:latest
    container_name: 3anddone-voice
    restart: unless-stopped
    depends_on:
      - db
    volumes:
      - ./data/audio:/app/audio
    devices:
      - /dev/snd:/dev/snd
    networks:
      - internal

networks:
  internal:
    driver: bridge

Шаг 3: Инициализация базы данных PostgreSQL

Создаём SQL-скрипт для инициализации базы данных: таблицы для задач, пользователей и метаданных аудио. Это обеспечивает структурированное хранение данных и поддерживает быстрый поиск.

-- config/postgres/init.sql
CREATE TABLE IF NOT EXISTS tasks (
    id SERIAL PRIMARY KEY,
    title TEXT NOT NULL,
    description TEXT,
    completed BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS audio_records (
    id SERIAL PRIMARY KEY,
    task_id INTEGER REFERENCES tasks(id),
    file_path TEXT NOT NULL,
    duration INTEGER,
    created_at TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_tasks_completed ON tasks(completed);
CREATE INDEX idx_audio_task_id ON audio_records(task_id);

Шаг 4: Настройка конфигурации приложения

Создаём файл конфигурации приложения с параметрами подключения к базе данных, путями для хранения аудио и настройками приватности. Все чувствительные данные шифруются с помощью Git-совместимого менеджера секретов.

# config/app.env
DATABASE_URL=postgresql://taskuser:securepassword@db:5432/tasks
AUDIO_STORAGE_PATH=/app/audio
ENABLE_VOICE_INPUT=true
PRIVACY_MODE=strict
ENCRYPTION_KEY=your-encryption-key-here

Шаг 5: Запуск системы и проверка статуса

Запускаем все сервисы с помощью Docker Compose и проверяем их статус. Убеждаемся, что контейнеры работают корректно и доступны по нужным портам.

docker-compose up -d
docker-compose ps

Шаг 6: Настройка резервного копирования с использованием Git

Создаём скрипт для автоматического резервного копирования базы данных и конфигураций с использованием Git. Это обеспечивает защиту данных и возможность отката к предыдущим версиям.

#!/bin/bash
# backup.sh
cd ~/3anddone
pg_dump -h localhost -U taskuser tasks > backup_$(date +%F).sql
git add .
git commit -m "Backup $(date)"
git push origin main

Шаг 7: Автоматизация резервного копирования с помощью cron

Добавляем задачу в планировщик cron для автоматического выполнения резервного копирования каждую ночь. Это гарантирует, что данные будут защищены даже при сбое системы.

crontab -e
# Добавьте строку:
0 2 * * * /home/user/3anddone/backup.sh >> /home/user/3anddone/logs/backup.log 2>&1

Шаг 8: Проверка доступа к веб-интерфейду и голосовому вводу

Открываем веб-интерфейс в браузере и проверяем возможность создания задач, а также работу голосового ввода. Убеждаемся, что аудио сохраняется корректно и доступно для воспроизведения.

# Проверьте доступность веб-интерфейса:
curl http://localhost:3000

# Проверьте логи приложения:
docker-compose logs app
Поделиться:TelegramX / TwitterVK