translaite/README.md

133 lines
3.3 KiB
Markdown

# translAIte
Translations app built with Remix, supports authentication. Uses ChatGPT to translate text.
After your first login, you will be prompted to enter your OpenAI API key. You can get one [here](https://platform.openai.com/account/api-keys).
Built for self-hosting: host it anywhere you want, and use it for free.
View on [DockerHub](https://hub.docker.com/r/nzambello/translaite).
## Table of contents
- [Pre-built Docker image](#pre-built-docker-image)
- [Docker compose](#docker-compose)
- [Custom deployments or development](#custom-deployment-or-development)
- [Tech stack](#tech-stack)
- [Running locally](#running-locally)
- [Running with Docker](#running-with-docker)
- [Multi-platform docker image](#multi-platform-docker-image)
- [License](#license)
## Pre-built Docker Image
```bash
docker pull nzambello/translaite
```
If you want to use the pre-built Docker image, you can run it with:
```bash
docker run -d -p 8080:8080 -v /path/to/data:/data/data.db nzambello/translaite
```
If you want to use different defaults, you can build your own image. See [Running with docker](#running-with-docker)
### Docker compose
Basic example:
```yaml
version: "3.8"
services:
translaite:
image: nzambello/translaite
container_name: translaite
restart: always
ports:
- 8080:8080
volumes:
- ./dockerData/translaite:/data # Path to data for DB persistence
```
Example of docker-compose.yml with [Traefik](https://traefik.io/) as reverse proxy:
```yaml
translaite:
depends_on:
- watchtower
image: nzambello/translaite
container_name: translaite
restart: always
volumes:
- /dockerData/translaite:/data # Path to data for DB persistence
labels:
- "com.centurylinklabs.watchtower.enable=true"
- "traefik.enable=true"
- "traefik.http.routers.translaite.rule=Host(`translate.YOURDOMAIN.com`)" # change it to your preferences
- "traefik.http.routers.translaite.entrypoints=websecure"
- "traefik.http.routers.translaite.tls.certresolver=letsencrypt"
- "traefik.http.routers.translaite.service=translaite-service"
- "traefik.http.services.translaite-service.loadbalancer.server.port=8080"
```
## Custom deployment or development
### Tech Stack
- [Remix](https://remix.run)
- [Prisma](https://prisma.io)
- [SQLite](https://sqlite.org)
- [Tailwind](https://tailwindcss.com)
- [Docker](https://docker.com)
### Running Locally
```bash
# Clone the repo
git clone https://github.com/nzambello/translaite.git
cd translaite
# Install dependencies
yarn install
# Setup .env
cp .env.example .env
vim .env
# Start the app
yarn dev
```
### Running with Docker
```bash
# Clone the repo
git clone https://github.com/nzambello/translaite.git
cd translaite
# Setup .env
cp .env.example .env
vim .env
# Build the image
docker built -t translaite .
# Start the app
docker run -p 127.0.0.1:8080:8080 translaite
```
### Multi-platform Docker image
```bash
docker buildx create --name mybuilder --driver docker-container --bootstrap --use # create a new builder and switch to it using a single command.
docker buildx build --platform linux/amd64,linux/arm64 -t nzambello/translaite:latest --push .
```
## License
[Nicola Zambello](https://github.com/nzambello) © 2023
[GNU GPLv3](https://github.com/nzambello/translaite/raw/main/LICENSE)