summaryrefslogtreecommitdiff
path: root/docs/running-gathio/installation.md
blob: 7be73c45079d153cb6aee3dd072f3af20ae57605 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Installation

Gathio can be set up to run on your own server in two ways - as a self-hosted service, or via Docker.

## Self-hosting on Linux or macOS

### Prerequisites

-   [Node.js](https://nodejs.org/en/) v18 or greater
-   [MongoDB](https://www.mongodb.com/docs/manual/administration/install-on-linux/#std-label-install-mdb-community-edition-linux)

### Ubuntu

Let's suppose we're installing on a fresh Ubuntu system.

First, let's get the code:

```
$ cd /srv/
$ sudo git clone https://github.com/lowercasename/gathio/
```

We'll need to install [pnpm](https://pnpm.io/) for this:

```
$ curl -fsSL https://get.pnpm.io/install.sh | sh -
```

pnpm installation instructions for [other systems](https://pnpm.io/installation) are available.

Now, we'll install the dependencies:

```
$ cd gathio
$ pnpm install
$ pnpm build
```

Let's copy the config file in place:

```
$ cp config/config.example.toml config/config.toml
```

We can edit this file if needed, as it contains settings which will need to be adjusted to your local setup to successfully format emails.

```
$ $EDITOR config/config.toml
```

Either way, we'll need to have MongoDB running. Follow the [MongoDB Community Edition Ubuntu instructions](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu), which are probably what you want.

Next, let's create a dedicated user:

```
$ sudo adduser --home /srv/gathio --disabled-login gathio
$ sudo chown -R gathio:gathio /srv/gathio
```

Next, we'll copy the systemd service and reload systemd

```
$ sudo cp gathio.service /etc/systemd/system/
$ sudo systemctl daemon-reload
```

Finally, we can start gathio:

```
$ sudo systemctl start gathio
```

It should now be listening on port 3000:

```
$ sudo netstat -tunap | grep LISTEN
[...]
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      952/sshd
tcp6       0      0 :::3000                 :::*                    LISTEN      5655/node
[...]
```

(this doesn't mean it's only listening on IPv6, because sockets under Linux are
dual-stack by default...)

It is now available on port 3000, and we can continue by setting up a reverse
proxy, which allows us to make it available on another port, or from another
server; and to enable TLS on the connection (see for example [Linode's guide on
the subject](https://www.linode.com/docs/web-servers/nginx/use-nginx-reverse-proxy/#configure-nginx))

## Docker

The easiest way to run Gathio using Docker is by using the provided `docker-compose` configuration.
Ensure that the `node_modules` folder does not exist in the `gathio` directory before starting up the
Docker container.

```
cd gathio
docker-compose up -d --build
```

Gathio should now be running on `http://localhost:3000`, and storing data in a Docker volume.