Настройка 3 & Done: локальная система задач с голосовым вводом и PostgreSQL
Пошаговая инструкция по развёртыванию локальной системы задач 3 & Done с поддержкой голосового ввода, хранением аудио в PostgreSQL и защитой данных с помощью Git и шифрования.
Требования
- Установленный 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