summaryrefslogtreecommitdiff
path: root/docs/running-gathio/installation.md
diff options
context:
space:
mode:
authorRaphael Kabo <raphaelkabo@hey.com>2024-02-28 22:39:49 +0000
committerRaphael Kabo <raphaelkabo@hey.com>2024-02-28 22:39:49 +0000
commitd2a3d0272ed7725d0bc848267d560c468235507b (patch)
tree2605d9b9be3e22abdefd89075b4a8a2187cb9a4a /docs/running-gathio/installation.md
parent35398241dea769bd7554eaca0a9045801c847340 (diff)
Add docs using MkDocs
Diffstat (limited to 'docs/running-gathio/installation.md')
-rw-r--r--docs/running-gathio/installation.md102
1 files changed, 102 insertions, 0 deletions
diff --git a/docs/running-gathio/installation.md b/docs/running-gathio/installation.md
new file mode 100644
index 0000000..7be73c4
--- /dev/null
+++ b/docs/running-gathio/installation.md
@@ -0,0 +1,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.