Skip to content

Commit

Permalink
Merge pull request #275 from DefangLabs/linda-huginn
Browse files Browse the repository at this point in the history
huginn changes
  • Loading branch information
jordanstephens authored Dec 16, 2024
2 parents 4ac57ac + dc902ad commit 0dc408f
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 21 deletions.
71 changes: 61 additions & 10 deletions samples/huginn/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,77 @@

[![1-click-deploy](https://defang.io/deploy-with-defang.png)](https://portal.defang.dev/redirect?url=https%3A%2F%2Fgithub.com%2Fnew%3Ftemplate_name%3Dsample-huginn-template%26template_owner%3DDefangSamples)

This sample shows how to deploy Huginn with Defang.

Huginn is a system for building agents that perform automated tasks for you online. Huginn's Agents can monitor the web, respond to events, and act on your behalf. They propagate events along a directed graph. It's like a customizable IFTTT or Zapier on your own server, ensuring data privacy.

## Prerequisites

1. Download [Defang CLI](https://github.com/DefangLabs/defang)
2. Have a managed database service configured and have the connection details ready. Neon postgres is a good free option.
3. (optional) If you are using [Defang BYOC](https://docs.defang.io/docs/concepts/defang-byoc), make sure you have properly [authenticated your AWS account](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
2. Have a managed database service configured and ready, such as [Neon PostgreSQL](https://neon.tech/)
3. (Optional) If you are using [Defang BYOC](https://docs.defang.io/docs/concepts/defang-byoc) authenticate with your cloud provider account
4. (Optional for local development) [Docker CLI](https://docs.docker.com/engine/install/)

## Development

To run the application locally, you can use the following command:

```bash
docker compose -f ./compose.yaml -f ./compose.dev.yaml up
```
This will start the Postgres container and the Huginn container. Huginn will be available at `http://localhost:3000` with the username `admin` and password `password`.

## Configuration

For this sample, you will need to provide the following [configuration](https://docs.defang.io/docs/concepts/configuration):

> Note that if you are using the 1-click deploy option, you can set these values as secrets in your GitHub repository and the action will automatically deploy them for you.
### `DATABASE_NAME`
The name of the database.
```bash
defang config set DATABASE_NAME
```

### `DATABASE_USERNAME`
The username used with the database.
```bash
defang config set DATABASE_USERNAME
```

### `DATABASE_PASSWORD`
The password used with the database.
```bash
defang config set DATABASE_PASSWORD
```

### `DATABASE_HOST`
The host of the database.
```bash
defang config set DATABASE_HOST
```

## Deployment

> [!NOTE]
> Download [Defang CLI](https://github.com/DefangLabs/defang)
## Local
### Defang Playground

For development, we use a Postgres container. The Postgres container is defined in the `compose.dev.yaml` file. The Huginn container is defined in the `compose.yaml` file, with some overrides in the `compose.dev.yaml` file so it can correctly connect to the local database container.
Deploy your application to the Defang Playground by opening up your terminal and typing:
```bash
defang compose up
```

To start the local environment, run `docker compose -f ./compose.yaml -f ./compose.dev.yaml up`. This will start the Postgres container and the Huginn container. Huginn will be available at `http://localhost:3000` with the username `admin` and password `password`.
### BYOC (AWS)

## Deploying
If you want to deploy to your own cloud account, you can use Defang BYOC:

1. Open the terminal and type `defang login`
2. Add your database connection details using `defang config` by typing `defang config set <CONFIG_VAL>` where `<CONFIG_VAL>` is the each of the following `DATABASE_NAME`, `DATABASE_USERNAME`, `DATABASE_PASSWORD`, `DATABASE_HOST`. For example `defang config set DATABASE_NAME` and pasting your database name.
3. Type `defang compose up` in the CLI.
4. Your app will be running within a few minutes.
1. [Authenticate your AWS account](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html), and check that you have properly set your environment variables like `AWS_PROFILE`, `AWS_REGION`, `AWS_ACCESS_KEY_ID`, and `AWS_SECRET_ACCESS_KEY`.
2. Run in a terminal that has access to your AWS environment variables:
```bash
defang --provider=aws compose up
```

---

Expand Down
15 changes: 9 additions & 6 deletions samples/huginn/compose.dev.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
services:
huginn:
extends:
file: compose.yaml
service: huginn-app
environment:
- DATABASE_ADAPTER=postgresql
- DATABASE_NAME=huginn
- DATABASE_USERNAME=huginn
- DATABASE_PASSWORD=huginn
- DATABASE_HOST=postgres
depends_on:
- postgres
postgres:
image: postgres:16
- DATABASE_HOST=db
db:
extends:
file: compose.yaml
service: db
environment:
POSTGRES_USER: huginn
POSTGRES_PASSWORD: huginn
Expand All @@ -18,4 +21,4 @@ services:
- postgres:/var/lib/postgresql/data

volumes:
postgres:
postgres:
22 changes: 17 additions & 5 deletions samples/huginn/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,27 @@ services:
resources:
reservations:
cpus: '1.0'
memory: '2G'
memory: 1G
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
interval: 1m30s
timeout: 30s
retries: 10
environment:
- DATABASE_ADAPTER=postgresql
- DATABASE_NAME
- DATABASE_USERNAME
- DATABASE_PASSWORD
- DATABASE_HOST
- DATABASE_NAME=huginn
- DATABASE_USERNAME=huginn
- DATABASE_HOST=db
- DATABASE_PASSWORD="${POSTGRES_PASSWORD}"
depends_on:
- db
db:
image: postgres:16
environment:
- POSTGRES_USER=huginn
- POSTGRES_DB=huginn
- POSTGRES_PASSWORD
ports:
- mode: host
target: 5432
published: 5432

0 comments on commit 0dc408f

Please sign in to comment.