-
Notifications
You must be signed in to change notification settings - Fork 361
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tutorial for setting up AppFlowy on Hetzner Cloud #959
base: master
Are you sure you want to change the base?
Conversation
* using Hetzner Cloud server * using Hetzner Cloud Object Storage
|
||
## Introduction | ||
|
||
In this tutorial we are going to setup our own AppFlowy Cloud server using the official documentation by AppFlowy. We will use a Hetzner Cloud Server and the new Hetzner Object Storage. This tutorial won't cover how you create a new project called "AppFlowy", and how Hetzner Cloud servers are created. We will purely focus on setting up AppFlowy, setting up a bucket and connecting it to our AppFlowy Cloud server. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe add a few links here?
In this tutorial we are going to setup our own AppFlowy Cloud server using the official documentation by AppFlowy. We will use a Hetzner Cloud Server and the new Hetzner Object Storage. This tutorial won't cover how you create a new project called "AppFlowy", and how Hetzner Cloud servers are created. We will purely focus on setting up AppFlowy, setting up a bucket and connecting it to our AppFlowy Cloud server. | |
In this tutorial we are going to setup our own [AppFlowy](https://appflowy.io/) Cloud server using the official documentation by AppFlowy. We will use a [Hetzner Cloud Server](https://hetzner.cloud) and the new [Hetzner Object Storage](https://docs.hetzner.com/storage/object-storage). This tutorial won't cover how you create a new project called "AppFlowy", and how Hetzner Cloud servers are created. We will purely focus on setting up AppFlowy, setting up a bucket and connecting it to our AppFlowy Cloud server. |
|
||
``` | ||
|
||
Remove following lines from the deploy.env, as we won't use those services: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove following lines from the deploy.env, as we won't use those services: | |
Remove following lines from the `deploy.env`file, as we won't use those services: |
|
||
### Step 2.4 - Adjust the deploy.env | ||
|
||
Now we need to adjust the deploy.env file to use our own passwords and point to the Hetzner Object Storage. I recommend to keep the order of values identical, as we are going to commit our changes locally. This makes rebasing easier. At the time of creation of this tutorial you should adjust following values with your own password and SMTP configuration: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now we need to adjust the deploy.env file to use our own passwords and point to the Hetzner Object Storage. I recommend to keep the order of values identical, as we are going to commit our changes locally. This makes rebasing easier. At the time of creation of this tutorial you should adjust following values with your own password and SMTP configuration: | |
Now we need to adjust the `deploy.env` file to use our own passwords and point to the Hetzner Object Storage. I recommend to keep the order of values identical, as we are going to commit our changes locally. This makes rebasing easier. At the time of creation of this tutorial you should adjust following values with your own password and SMTP configuration: |
|
||
### Step 2.5 - Add and commit your changes | ||
|
||
Now we use git to store our changes in the git log and make it easier to pull updates from upstream. By using this method every change of defaults in the deploy.env and docker-compose.yml will result in merge conflicts when pulling an update, which you need to resolve before restarting/updating your server. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now we use git to store our changes in the git log and make it easier to pull updates from upstream. By using this method every change of defaults in the deploy.env and docker-compose.yml will result in merge conflicts when pulling an update, which you need to resolve before restarting/updating your server. | |
Now we use git to store our changes in the git log and make it easier to pull updates from upstream. By using this method every change of defaults in the `deploy.env` and `docker-compose.yml` will result in merge conflicts when pulling an update, which you need to resolve before restarting/updating your server. |
|
||
### Step 2.2 - Setup the nginx proxy of AppFlowy Cloud to use your SSL certificate | ||
|
||
Put your SSL certificate and private key in the folder ./nginx/ssl/ or adjust the location in the docker-compose.yml to point to your own certificates. Alternatively you can create a Let's Encrypt SSL certificate via DNS challenge on the Hetzner DNS service by using lego: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Put your SSL certificate and private key in the folder ./nginx/ssl/ or adjust the location in the docker-compose.yml to point to your own certificates. Alternatively you can create a Let's Encrypt SSL certificate via DNS challenge on the Hetzner DNS service by using lego: | |
Put your SSL certificate and private key in the folder `./nginx/ssl/` or adjust the location in the `docker-compose.yml` to point to your own certificates. Alternatively you can create a Let's Encrypt SSL certificate via DNS challenge on the Hetzner DNS service by using lego: |
~/go/bin/lego --domains="appflowy.example.com" --email="[email protected]" --http run | ||
``` | ||
|
||
And adjust the docker-compose.yml to point to the output folder of lego: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And adjust the docker-compose.yml to point to the output folder of lego: | |
And adjust the `docker-compose.yml` to point to the output folder of lego: |
|
||
### Step 2.3 - Remove the minio service from the docker-compose.yml | ||
|
||
Remove the minio service from the docker-compose.yml by deleting following lines: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove the minio service from the docker-compose.yml by deleting following lines: | |
Remove the minio service from the `docker-compose.yml` by deleting following lines: |
- minio_data:/data | ||
``` | ||
|
||
Don't forget to remove the minio_data volume from the volumes at the end of the docker-compose.yml. Only the postgres_data volume should remain: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't forget to remove the minio_data volume from the volumes at the end of the docker-compose.yml. Only the postgres_data volume should remain: | |
Don't forget to remove the `minio_data` volume from the volumes at the end of the `docker-compose.yml`. Only the `postgres_data `volume should remain: |
|
||
## Step 3 | ||
|
||
Start you AppFlowy Cloud server via docker-compose (or docker compose, depending on your installation method): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Start you AppFlowy Cloud server via docker-compose (or docker compose, depending on your installation method): | |
Start you AppFlowy Cloud server via `docker-compose` (or `docker compose`, depending on your installation method): |
The server and credentials used in the tutorial and shown in the screenshot got deleted and don't need to be censored.