go-advanced-yandex-practicum
go-advanced-yandex-practicum
Репозиторий содержит финальный проект для курса Yandex Practicum "Go-developer Advanced". Проект gopasskeeper - это сервер-клиентское приложение для хранения секретов, таких как логин-пароль учетных данных, банковские карты, заметки, файлы. Он включает GRPC-сервер и TUI-клиент, написанный на Go. Приложение использует PostgreSQL и MinIO, оно шифрует входные данные с использованием Fernet и AES для содержимого базы данных и файлов соответственно.
Установка зависимостей
Вы можете использовать bitnami/postgresql для запуска сервера PostgreSQL и bitnami/minio для запуска сервера MinIO.
Или просто используйте файл docker-compose.yaml для настройки зависимостей с помощью утилиты docker-compose, как показано ниже:
docker compose -f docker-compose.yaml up -d
Установка MinIO
Используйте команду ниже для запуска MinIO.
docker run --name gopasskeeper-minio -d -e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=password -e MINIO_USE_SSL=0 -e MINIO_DEFAULT_BUCKETS=storage-dev -p 9000:9000 -p 9001:9001 bitnami/minio:latest
Для запуска сервера приложения необходимо создать сервисную учетную запись. Для создания сервисной учетной записи войдите в веб-интерфейс MinIO (localhost:9090) и создайте ключ доступа. Этот ключ доступа должен быть указан в файле конфигурации по адресу
и
.
Конфигурация
Для запуска сервера, клиента и выполнения правильных миграций вам необходимо поместить файл
в корневой каталог. Пример его содержимого приведен ниже:
app: env: local logLevel: debug outputFile: logs/stdout.log healthHost: 127.0.0.1 healthPost: 8080s3: host: 127.0.0.1 port: 9000 accessKey: pwb1OknjOtg3HxhIxwOI bucket: storage-dev secretAccess: 2HjWjtpoPaYs0jrXhvYgJlVzhN0F3WyuTI6WXRsSpostgresql: host: 127.0.0.1 port: 5442 user: postgres password: thepass123 database: postgres maxOpenConn: 10 maxIdleConn: 10 duration: 5s migrationFolder: ./migrationssecurity: tokenTTL: 1h signKey: 87ccd01b-0b99-4f3a-8422-dd088f22cde0 certPath: ./certs/cert.pem certKeyPath: ./certs/keyserver: host: 127.0.0.1 port: 9090 timeout: 30s
Пожалуйста, изучите его внимательно, чтобы правильно настроить секреты, обратите внимание на настройку разделов s3, postgresql и безопасности.
Компиляция
Вы можете использовать команды
для сборки бинарных файлов, например:
make go-build
для компиляции клиента, сервера, миграций и генератора сертификатов.
Миграции
Для правильной настройки PostgreSQL необходимо выполнить миграцию. Поэтому просто введите правильные настройки для PostgreSQL в файле server-config.yaml и используйте эту команду:
make go-migrate
Запуск сервера
Если вы правильно настроили все конфигурации, проблем с запуском GRPC-сервера не возникнет:
make go-server
Запуск клиента
То же самое относится и к клиенту, просто используйте эту команду для запуска TUI-клиента:
make go-client
Вы должны увидеть что-то вроде этого.
Замечания
TUI-клиент может использоваться на разных устройствах, все изменения будут автоматически синхронизированы между устройствами.
Описание
gopasskeeper - это проект по выпускной работе на курсе Go-Advanced от Yandex Practicum.
Языки
Go
- Makefile