Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/smoke-test-services.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ on:
- 'on-prem/docker-compose.*.yml'
- 'on-prem/templates/**'
- 'on-prem/scripts/**'
- '.env.example'
- 'on-prem/.env.example'
pull_request:
paths:
- 'on-prem/docker-compose.*.yml'
- 'on-prem/templates/**'
- 'on-prem/scripts/**'
- '.env.example'
- 'on-prem/.env.example'
workflow_dispatch:

jobs:
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ cd on-prem
docker compose up -d
```

> For Kubernetes deployments and scaled production environments, we recommend using the [Currents Helm Chart](https://currents-dev.github.io/helm-charts/docs/) instead.

## Development

- [On-Prem Development Guide](on-prem/README.md) — Architecture, scripts, and contribution guidelines
Expand Down
2 changes: 2 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Currents on-premise installation using Docker Compose provides a containerized d

The Docker Compose configuration is modular, allowing you to choose which data services to run locally versus connecting to external managed services.

> For Kubernetes deployments and scaled production environments, see the [Currents Helm Chart](https://currents-dev.github.io/helm-charts/docs/) documentation.

## Resources

- [🚀 Quickstart Guide](./quickstart.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/backup-restore.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ docker compose start

Before restoring, ensure you have:
- Your backed up `.env` file (or recreate with the same credentials)
- Your `docker-compose.yml` file (or clone the repository and run setup)
- Your `docker-compose.yml` file (or [clone the repository](https://github.com/currents-dev/docker) and run setup)

### Full Restore

Expand Down
4 changes: 4 additions & 0 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ These have defaults but you'll likely want to customize them.
| `SMTP_PORT` | int | `587` | SMTP server port |
| `SMTP_SECURE` | bool | `false` | Whether SMTP uses TLS |
| `AUTOMATED_REPORTS_EMAIL_FROM` | string | `Currents Report <report@example.com>` | From address for automated report emails |
| `INVITE_EMAIL_FROM` | string | `Currents App <no-reply@example.com>` | From address for invitation emails |
| `FILE_STORAGE_ENDPOINT` | string | `http://localhost:9000` | Object storage endpoint (external access) |
| `FILE_STORAGE_BUCKET` | string | `currents` | Object storage bucket name |
| `FILE_STORAGE_ACCESS_KEY_ID` | string | `${RUSTFS_ACCESS_KEY}` | Object storage access key ID |
Expand Down Expand Up @@ -64,6 +65,9 @@ Less commonly changed settings with sensible defaults.
| `FILE_STORAGE_INTERNAL_ENDPOINT` | string | `http://host.docker.internal:9000` | Object storage internal endpoint |
| `FILE_STORAGE_FORCE_PATH_STYLE` | bool | _(commented)_ | Use path-style S3 URLs (auto-set to `true` when using RustFS profile) |
| `AUTOMATED_REPORTS_EMAIL_BCC` | string | _(empty)_ | BCC address for automated reports |
| `INVITE_EMAIL_BCC` | string | _(empty)_ | BCC address for invitation emails |
| `INVITE_EXPIRATION_DAYS` | int | `14` | Number of days before invitations expire |
| `EMAIL_LINKS_BASE_URL` | string | `${APP_BASE_URL}` | Base URL for links in emails (derived from APP_BASE_URL) |

### Docker Compose Configuration

Expand Down
12 changes: 9 additions & 3 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ title: Currents On-Prem Documentation

Docker Compose configuration for self-hosted Currents deployment.

> For Kubernetes deployments and scaled production environments, see the [Currents Helm Chart](https://currents-dev.github.io/helm-charts/docs/) documentation.

## Getting Started

- [Quickstart Guide](quickstart.md) — Get up and running with Docker Compose
Expand All @@ -17,20 +19,24 @@ Docker Compose configuration for self-hosted Currents deployment.

## Quick Setup

Clone the [currents-dev/docker repository](https://github.com/currents-dev/docker) and run setup:

```bash
git clone https://github.com/currents-dev/docker.git currents-docker
cd currents-docker/on-prem
./scripts/setup.sh
docker compose up -d
```

You can also [browse the repository on GitHub](https://github.com/currents-dev/docker/tree/main/on-prem) to explore configuration files.

## Configuration Profiles

| Profile | Services Included | Use Case |
|---------|-------------------|----------|
| `full` | Redis, MongoDB, ClickHouse, RustFS | Running everything locally |
| `database` | Redis, MongoDB, ClickHouse | Using external S3-compatible storage |
| `cache` | Redis | Using external MongoDB, ClickHouse, and S3 |
| [`full`](https://github.com/currents-dev/docker/blob/main/on-prem/docker-compose.full.yml) | Redis, MongoDB, ClickHouse, RustFS | Running everything locally |
| [`database`](https://github.com/currents-dev/docker/blob/main/on-prem/docker-compose.database.yml) | Redis, MongoDB, ClickHouse | Using external S3-compatible storage |
| [`cache`](https://github.com/currents-dev/docker/blob/main/on-prem/docker-compose.cache.yml) | Redis | Using external MongoDB, ClickHouse, and S3 |

## Additional Resources

Expand Down
31 changes: 24 additions & 7 deletions docs/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,15 @@ This guide walks you through setting up Currents on-premises using Docker Compos

## Step 1: Clone the Repository

Clone the [currents-dev/docker repository](https://github.com/currents-dev/docker):

```bash
git clone https://github.com/currents-dev/docker.git currents-docker
cd currents-docker/on-prem
```

> **Tip:** You can [browse the repository on GitHub](https://github.com/currents-dev/docker/tree/main/on-prem) to explore the configuration files before cloning.

## Step 2: Create Environment File

A `.env` file is required to run the services. You have two options:
Expand All @@ -41,15 +45,15 @@ If you prefer to configure manually:
cp .env.example .env
```

Then edit `.env` to fill in the required secrets. See [Configuration Reference](./configuration.md) for generation commands.
Then edit `.env` to fill in the required secrets. See the [`.env.example` file](https://github.com/currents-dev/docker/blob/main/on-prem/.env.example) for all available variables and [Configuration Reference](./configuration.md) for generation commands.

### Configuration Profiles

| Profile | File | Services Included | Use Case |
|---------|------|-------------------|----------|
| `full` | `docker-compose.full.yml` | Redis, MongoDB, ClickHouse, RustFS | Running everything locally |
| `database` | `docker-compose.database.yml` | Redis, MongoDB, ClickHouse | Using external S3-compatible storage |
| `cache` | `docker-compose.cache.yml` | Redis | Using external MongoDB, ClickHouse, and S3 |
| `full` | [`docker-compose.full.yml`](https://github.com/currents-dev/docker/blob/main/on-prem/docker-compose.full.yml) | Redis, MongoDB, ClickHouse, RustFS | Running everything locally |
| `database` | [`docker-compose.database.yml`](https://github.com/currents-dev/docker/blob/main/on-prem/docker-compose.database.yml) | Redis, MongoDB, ClickHouse | Using external S3-compatible storage |
| `cache` | [`docker-compose.cache.yml`](https://github.com/currents-dev/docker/blob/main/on-prem/docker-compose.cache.yml) | Redis | Using external MongoDB, ClickHouse, and S3 |

## Step 3: Configure Environment

Expand Down Expand Up @@ -122,10 +126,22 @@ SMTP_SECURE=false
SMTP_USER=your-smtp-username
SMTP_PASS=your-smtp-password

# From address for automated emails
AUTOMATED_REPORTS_EMAIL_FROM=Currents Report <reports@example.com>
# From addresses for outgoing emails
AUTOMATED_REPORTS_EMAIL_FROM="Currents Report <reports@yourdomain.com>"
INVITE_EMAIL_FROM="Currents App <no-reply@yourdomain.com>"
```

> ⚠️ **Important: FROM Address Configuration**
>
> You **must** change the FROM addresses to use a domain your SMTP provider is authorized to send from. The format is `"Display Name <email@domain.com>"`.
>
> If you leave the default `example.com` addresses, emails will be rejected with DMARC errors:
> ```
> 5.7.26 Unauthenticated email from example.com is not accepted due to domain's DMARC policy
> ```
>
> **For testing:** If using a sandbox (e.g., Mailgun sandbox), use your sandbox domain like `no-reply@sandboxXXXXX.mailgun.org`. Emails may land in spam, but they will be delivered.

> **Note:** `SMTP_SECURE=false` uses STARTTLS (explicit TLS) which starts unencrypted then upgrades to TLS—this is the standard for port 587 and recommended for most providers. Set `SMTP_SECURE=true` for implicit TLS connections (port 465), which establish TLS immediately without upgrading.

Common SMTP configurations:
Expand Down Expand Up @@ -505,6 +521,7 @@ DC_CLICKHOUSE_VOLUME=clickhouse-data
## Next Steps

- Review the [Configuration Reference](./configuration.md) for all available options
- Set up [Backup & Restore](./backup-restore.md) procedures for production use
- Read the [Upgrading Guide](./upgrading.md) to learn how to update to new versions
- Configure [Logging for Production](./logging.md) to ensure proper log management
- Read the [Support Policy](./support.md) to understand support boundaries
- Set up monitoring and backups for production use
1 change: 1 addition & 0 deletions docs/upgrading.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ If services fail with missing configuration errors:
./scripts/check-env.sh

# Compare your .env with .env.example for new required variables
# See: https://github.com/currents-dev/docker/blob/main/on-prem/.env.example
diff <(grep -v '^#' .env | grep '=' | cut -d'=' -f1 | sort) \
<(grep -v '^#' .env.example | grep '=' | cut -d'=' -f1 | sort)
```
5 changes: 5 additions & 0 deletions on-prem/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ CURRENTS_RECORD_API_URL=http://localhost:1234
SMTP_PORT=587
SMTP_SECURE=false
AUTOMATED_REPORTS_EMAIL_FROM="Currents Report <report@example.com>"
INVITE_EMAIL_FROM="Currents App <no-reply@example.com>"


## RustFS (optional)
RUSTFS_ACCESS_KEY=rustfs-access-key
Expand Down Expand Up @@ -102,6 +104,7 @@ DASHBOARD_URL=${APP_BASE_URL}
BETTER_AUTH_URL=${APP_BASE_URL}
AUTOMATED_REPORTS_CURRENTS_DASHBOARD_HOSTNAME=${APP_BASE_URL}
GITLAB_REDIRECT_URL=${APP_BASE_URL}/integrations/gitlab/callback
EMAIL_LINKS_BASE_URL=${APP_BASE_URL}


# Redis (default points to redis service in compose network)
Expand All @@ -114,6 +117,8 @@ FILE_STORAGE_INTERNAL_ENDPOINT="http://host.docker.internal:9000"

# Email (additional settings)
AUTOMATED_REPORTS_EMAIL_BCC=
INVITE_EMAIL_BCC=
INVITE_EXPIRATION_DAYS=

# Observability (Coralogix)
# CORALOGIX_API_ENDPOINT=
Expand Down